summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-06-07 07:37:27 -0700
committerGitHub <noreply@github.com>2025-06-07 17:37:27 +0300
commit372d7822823643eb290fe5e0ba9a733d29776b81 (patch)
tree231a5533fa7c14cbf061bf78e7dc82bd7cae0f63 /src
parent09fdb3ece2125ab15b6dd5c400a75fbd38aae39f (diff)
d_a_b_gg equivalent (#2478)
* b_gg equivalent * clean up b_gg * cleanup float literal
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_b_gg.cpp6261
1 files changed, 4138 insertions, 2123 deletions
diff --git a/src/d/actor/d_a_b_gg.cpp b/src/d/actor/d_a_b_gg.cpp
index 66fa91f2ca..ecc8083895 100644
--- a/src/d/actor/d_a_b_gg.cpp
+++ b/src/d/actor/d_a_b_gg.cpp
@@ -4,2457 +4,4472 @@
*/
#include "d/actor/d_a_b_gg.h"
-#include "d/d_cc_d.h"
-#include "dol2asm.h"
-#include "d/d_camera.h"
+#include "d/d_com_inf_game.h"
+#include "c/c_damagereaction.h"
+#include "m_Do/m_Do_graphic.h"
+#include "Z2AudioLib/Z2Instances.h"
+
UNK_REL_DATA;
#include "f_op/f_op_actor_enemy.h"
+enum daE_GG_TYPE {
+ TYPE_L7_MBOSS = 0,
+ TYPE_L7_W = 1,
+ TYPE_L7_M = 2,
+ TYPE_HYRULE_CASTLE = 3,
+ TYPE_CAVE = 4,
-//
-// Forward References:
-//
-
-extern "C" void __ct__12daB_GG_HIO_cFv();
-extern "C" void CreateHeap__8daB_GG_cFv();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" void initCc__8daB_GG_cFv();
-extern "C" void setCcCylinder__8daB_GG_cFv();
-extern "C" void G_setCcCylinder__8daB_GG_cFv();
-extern "C" void MoveCo__8daB_GG_cFv();
-extern "C" void ctrlJoint__8daB_GG_cFP8J3DJointP8J3DModel();
-extern "C" static void JointCallBack__FP8J3DJointi();
-extern "C" void HeadctrlJoint__8daB_GG_cFP8J3DJointP8J3DModel();
-extern "C" static void HeadJointCallBack__FP8J3DJointi();
-extern "C" void SetAnm__8daB_GG_cFiiff();
-extern "C" static void way_bg_check2__FP8daB_GG_c4cXyz4cXyz();
-extern "C" static void roofchk__FP8daB_GG_c();
-extern "C" static void other_bg_check__FP8daB_GG_cP10fopAc_ac_c();
-extern "C" static void Hanekaeri__FP8daB_GG_c4cXyz4cXyzf();
-extern "C" void Yazirushi__8daB_GG_cFv();
-extern "C" void SpeedClear__8daB_GG_cFv();
-extern "C" void SetAction__8daB_GG_cFUcUcUc();
-extern "C" void GetAction__8daB_GG_cFUcUcUc();
-extern "C" void DemoSkip__8daB_GG_cFi();
-extern "C" void DemoSkipCallBack__8daB_GG_cFPvi();
-extern "C" void CameraSet__8daB_GG_cFv();
-extern "C" void SetStopingCam__8daB_GG_cFv();
-extern "C" void SetStopCam__8daB_GG_cF4cXyzffs();
-extern "C" void SetMoveCam__8daB_GG_cF4cXyzffsff();
-extern "C" void SetMoveCam1__8daB_GG_cFff();
-extern "C" void SetReleaseCam__8daB_GG_cFv();
-extern "C" void St_CamAction__8daB_GG_cFv();
-extern "C" void St_DemoAction__8daB_GG_cFv();
-extern "C" void Md_CamAction__8daB_GG_cFv();
-extern "C" void Md_DemoAction__8daB_GG_cFv();
-extern "C" void Gn_CamAction__8daB_GG_cFv();
-extern "C" void Gn_DemoAction__8daB_GG_cFv();
-extern "C" void DemoAction__8daB_GG_cFv();
-extern "C" void F_WaitAction__8daB_GG_cFv();
-extern "C" void F_FookChk__8daB_GG_cFv();
-extern "C" void F_MoveAction__8daB_GG_cFv();
-extern "C" void F_LV7_W_MoveAction__8daB_GG_cFv();
-extern "C" void F_AttackAction__8daB_GG_cFv();
-extern "C" void F_DamageAction__8daB_GG_cFv();
-extern "C" void AttentionChk__8daB_GG_cFv();
-extern "C" void FlyAction__8daB_GG_cFv();
-extern "C" void F_A_TargetMove__8daB_GG_cF4cXyzUc();
-extern "C" void F_A_TargetMove__8daB_GG_cF4cXyz();
-extern "C" void F_A_MoveAction__8daB_GG_cFv();
-extern "C" void F_A_WaitAction__8daB_GG_cFv();
-extern "C" void F_A_Action__8daB_GG_cFv();
-extern "C" void FookChk__8daB_GG_cFv();
-extern "C" void CutChk__8daB_GG_cFv();
-extern "C" void G_MoveAction__8daB_GG_cFv();
-extern "C" void FallChk__8daB_GG_cFv();
-extern "C" void G_AttackAction__8daB_GG_cFv();
-extern "C" void G_DamageAction__8daB_GG_cFv();
-extern "C" void G_DeathAction__8daB_GG_cFv();
-extern "C" void G_DeathAction1__8daB_GG_cFv();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void DeathCam__8daB_GG_cFv();
-extern "C" void GroundAction__8daB_GG_cFv();
-extern "C" void StopAction__8daB_GG_cFv();
-extern "C" void HitChk__8daB_GG_cFv();
-extern "C" void Action__8daB_GG_cFv();
-extern "C" void HeadAction__8daB_GG_cFv();
-extern "C" void SetHeadAngle__8daB_GG_cFv();
-extern "C" void SoundChk__8daB_GG_cFv();
-extern "C" void Execute__8daB_GG_cFv();
-extern "C" void ObjHit__8daB_GG_cFv();
-extern "C" void At_Check__8daB_GG_cFv();
-extern "C" void MoveAt__8daB_GG_cFv();
-extern "C" void F_AtHit__8daB_GG_cFv();
-extern "C" void ChanceTime__8daB_GG_cFv();
-extern "C" void ArmAngleSet__8daB_GG_cFv();
-extern "C" void Guard__8daB_GG_cFv();
-extern "C" void Draw__8daB_GG_cFv();
-extern "C" void Delete__8daB_GG_cFv();
-extern "C" void setBaseMtx__8daB_GG_cFv();
-extern "C" void setShieldMtx__8daB_GG_cFv();
-extern "C" void setSwordMtx__8daB_GG_cFv();
-extern "C" void setSwordMtx1__8daB_GG_cFv();
-extern "C" void setHeadMtx__8daB_GG_cFv();
-extern "C" void setHeadMtx1__8daB_GG_cFv();
-extern "C" static void daB_GG_Draw__FP8daB_GG_c();
-extern "C" static void daB_GG_Execute__FP8daB_GG_c();
-extern "C" static bool daB_GG_IsDelete__FP8daB_GG_c();
-extern "C" static void daB_GG_Delete__FP8daB_GG_c();
-extern "C" void Create__8daB_GG_cFv();
-extern "C" void __ct__8daB_GG_cFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8dCcD_SphFv();
-extern "C" void __ct__8dCcD_SphFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" static void daB_GG_Create__FP10fopAc_ac_c();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void __dt__12daB_GG_HIO_cFv();
-extern "C" void __sinit_d_a_b_gg_cpp();
-extern "C" static void func_805ECBEC();
-extern "C" static void func_805ECBF4();
-extern "C" void __dt__4cXyzFv();
-extern "C" extern char const* const d_a_b_gg__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void onBlure__13mDoGph_gInf_cFv();
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void mDoMtx_MtxToRot__FPA4_CfP5csXyz();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void scaleM__14mDoMtx_stack_cFfff();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-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 mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-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_posMoveF__FP10fopAc_ac_cPC4cXyz();
-extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs();
-extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc();
-extern "C" void dStage_changeScene__FifUlScsi();
-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 dComIfGs_onZoneSwitch__Fii();
-extern "C" void
-dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
-extern "C" void onDungeonItem__12dSv_memBit_cFi();
-extern "C" void isDungeonItem__12dSv_memBit_cCFi();
-extern "C" void onSwitch__10dSv_info_cFii();
-extern "C" void offSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void reset__14dEvt_control_cFv();
-extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii();
-extern "C" void onSkipFade__14dEvt_control_cFv();
-extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl();
-extern "C" void
-set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void addReal__21dDlst_shadowControl_cFUlP8J3DModel();
-extern "C" void StartQuake__12dVibration_cFii4cXyz();
-extern "C" void StopQuake__12dVibration_cFi();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-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 __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-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 ChkAtHit__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
-extern "C" void getHitSeID__12dCcD_GObjInfFUci();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void at_power_check__FP11dCcU_AtInfo();
-extern "C" void checkMasterSwordEquip__9daPy_py_cFv();
-extern "C" void cancelBoomerangLockActor__9daPy_py_cFP10fopAc_ac_c();
-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 dKy_darkworld_check__Fv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void __apl__5csXyzFR5csXyz();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void SetR__8cM3dGSphFf();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalcPos__FP4cXyzRC4cXyzfff();
-extern "C" void cLib_addCalcAngleS__FPsssss();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void cLib_chaseF__FPfff();
-extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf();
-extern "C" void cLib_chaseAngleS__FPsss();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz();
-extern "C" void MtxPosition__FP4cXyzP4cXyz();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void subBgmStart__8Z2SeqMgrFUl();
-extern "C" void subBgmStop__8Z2SeqMgrFv();
-extern "C" void __ct__15Z2CreatureEnemyFv();
-extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc();
-extern "C" void setLinkSearch__15Z2CreatureEnemyFb();
-extern "C" void setEnemyName__15Z2CreatureEnemyFPCc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void checkPass__12J3DFrameCtrlFf();
-extern "C" void __construct_array();
-extern "C" void _savegpr_19();
-extern "C" void _savegpr_22();
-extern "C" void _savegpr_23();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_19();
-extern "C" void _restgpr_22();
-extern "C" void _restgpr_23();
-extern "C" void _restgpr_24();
-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__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__12cCcD_CylAttr[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 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" extern u8 mBlureFlag__13mDoGph_gInf_c[4];
-extern "C" extern u8 struct_80450C98[4];
-extern "C" u8 m_midnaActor__9daPy_py_c[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 805ED08C-805ED090 00002C 0004+00 0/4 0/0 0/0 .rodata @3932 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3932 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED08C, &lit_3932);
-#pragma pop
-
-/* 805ED090-805ED094 000030 0004+00 0/4 0/0 0/0 .rodata @3933 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3933 = 3.0f;
-COMPILER_STRIP_GATE(0x805ED090, &lit_3933);
-#pragma pop
-
-/* 805ED094-805ED098 000034 0004+00 1/8 0/0 0/0 .rodata @3934 */
-SECTION_RODATA static f32 const lit_3934 = 0.5f;
-COMPILER_STRIP_GATE(0x805ED094, &lit_3934);
-
-/* 805ED428-805ED47C -00001 0054+00 1/1 0/0 0/0 .data @5037 */
-SECTION_DATA static void* lit_5037[21] = {
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x88),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x264),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x2B8),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x3DC),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x46C),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x668),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x868),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x8C4),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x924),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xA70),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0x160),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xC40),
- (void*)(((char*)St_CamAction__8daB_GG_cFv) + 0xA80),
-};
-
-/* 805ED47C-805ED498 -00001 001C+00 1/1 0/0 0/0 .data @5652 */
-SECTION_DATA static void* lit_5652[7] = {
- (void*)(((char*)Gn_CamAction__8daB_GG_cFv) + 0x50),
- (void*)(((char*)Gn_CamAction__8daB_GG_cFv) + 0xB4),
- (void*)(((char*)Gn_CamAction__8daB_GG_cFv) + 0x164),
- (void*)(((char*)Gn_CamAction__8daB_GG_cFv) + 0x2A4),
- (void*)(((char*)Gn_CamAction__8daB_GG_cFv) + 0x394),
- (void*)(((char*)Gn_CamAction__8daB_GG_cFv) + 0x3BC),
- (void*)(((char*)Gn_CamAction__8daB_GG_cFv) + 0x4EC),
-};
-
-/* 805ED498-805ED4D0 -00001 0038+00 1/1 0/0 0/0 .data @6629 */
-SECTION_DATA static void* lit_6629[14] = {
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x58),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x94),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0xD8),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x864),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x864),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x864),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x864),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x864),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x864),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x864),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x140),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x364),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x584),
- (void*)(((char*)F_DamageAction__8daB_GG_cFv) + 0x768),
-};
-
-/* 805ED4D0-805ED4FC -00001 002C+00 1/1 0/0 0/0 .data @7820 */
-SECTION_DATA static void* lit_7820[11] = {
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x84),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x474),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x524),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x738),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x86C),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x988),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x988),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x988),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x988),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x988),
- (void*)(((char*)G_DamageAction__8daB_GG_cFv) + 0x938),
-};
-
-/* 805ED4FC-805ED56C -00001 0070+00 1/1 0/0 0/0 .data @8743 */
-SECTION_DATA static void* lit_8743[28] = {
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x48),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x100),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x1A8),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x1F0),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x238),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x298),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x2DC),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x324),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x3B0),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x43C),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x4C8),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x510),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x5E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x628),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x7E4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x670),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x6B4),
- (void*)(((char*)SoundChk__8daB_GG_cFv) + 0x714),
-};
-
-/* 805ED56C-805ED5E0 -00001 0074+00 1/1 0/0 0/0 .data @9091 */
-SECTION_DATA static void* lit_9091[29] = {
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x34),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x48),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x54),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x48),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x54),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x54),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x34),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x48),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x64),
- (void*)(((char*)ArmAngleSet__8daB_GG_cFv) + 0x34),
-};
-
-/* 805ED5E0-805ED600 -00001 0020+00 1/0 0/0 0/0 .data l_daB_GG_Method */
-static actor_method_class l_daB_GG_Method = {
- (process_method_func)daB_GG_Create__FP10fopAc_ac_c,
- (process_method_func)daB_GG_Delete__FP8daB_GG_c,
- (process_method_func)daB_GG_Execute__FP8daB_GG_c,
- (process_method_func)daB_GG_IsDelete__FP8daB_GG_c,
- (process_method_func)daB_GG_Draw__FP8daB_GG_c,
-};
-
-/* 805ED600-805ED630 -00001 0030+00 0/0 0/0 1/0 .data g_profile_B_GG */
-extern actor_process_profile_definition g_profile_B_GG = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_B_GG, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daB_GG_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 230, // mPriority
- &l_daB_GG_Method, // sub_method
- 0x000C0100, // mStatus
- fopAc_ENEMY_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 805ED630-805ED63C 000240 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */
-SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_AcchCirFv,
-};
-
-/* 805ED63C-805ED648 00024C 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
-
-/* 805ED648-805ED654 000258 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
-
-/* 805ED654-805ED678 000264 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_805ECBF4,
- (void*)NULL,
- (void*)NULL,
- (void*)func_805ECBEC,
-};
-
-/* 805ED678-805ED684 000288 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
-
-/* 805ED684-805ED690 000294 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 805ED690-805ED69C 0002A0 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
+ TYPE_DEFAULT = 0xFF,
};
-/* 805ED69C-805ED6A8 0002AC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
+enum daE_GG_ACTION {
+ ACTION_FLY,
+ ACTION_GROUND,
+ ACTION_F_A,
+ ACTION_DEMO,
+ ACTION_STOP,
};
-/* 805ED6A8-805ED6B4 0002B8 000C+00 2/2 0/0 0/0 .data __vt__12daB_GG_HIO_c */
-SECTION_DATA extern void* __vt__12daB_GG_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12daB_GG_HIO_cFv,
+enum {
+ SUBACT_WAIT = 0,
+ SUBACT_MOVE = 1,
+ SUBACT_ATTACK = 2,
+ SUBACT_DAMAGE = 3,
+ SUBACT_DEATH = 4,
+
+ // DEMO
+ SUBACT_DEMO_ST = 0,
+ SUBACT_DEMO_MD = 1,
+ SUBACT_DEMO_GN = 2,
};
/* 805DE40C-805DE464 0000EC 0058+00 1/1 0/0 0/0 .text __ct__12daB_GG_HIO_cFv */
daB_GG_HIO_c::daB_GG_HIO_c() {
- // NONMATCHING
+ id = -1;
+ base_size = 0.8f;
+ takeoff_time = 400;
+ fly_attack_speed = 3.0f;
+ fly_attack_wait_time = 80;
+ takeoff2_time = 250;
+ max_hp = 700;
+ field_0x18 = 0.5f;
}
-/* ############################################################################################## */
-/* 805ED3D4-805ED3D4 000374 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_805ED3D4 = "B_gg";
-#pragma pop
-
/* 805DE464-805DE630 000144 01CC+00 1/1 0/0 0/0 .text CreateHeap__8daB_GG_cFv */
-void daB_GG_c::CreateHeap() {
- // NONMATCHING
+int daB_GG_c::CreateHeap() {
+ J3DModelData* modelData;
+ modelData = (J3DModelData*)dComIfG_getObjectRes("B_gg", 0x23);
+ JUT_ASSERT(207, modelData != 0);
+
+ mpModelMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("B_gg", 0xE), 2, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084);
+ if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) {
+ return 0;
+ }
+
+ modelData = (J3DModelData*)dComIfG_getObjectRes("B_gg", 0x25);
+ mpShieldModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mpShieldModel == NULL) {
+ return 0;
+ }
+
+ modelData = (J3DModelData*)dComIfG_getObjectRes("B_gg", 0x26);
+ mpSwordModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mpSwordModel == NULL) {
+ return 0;
+ }
+
+ if (mType == TYPE_L7_MBOSS || mType == TYPE_DEFAULT) {
+ modelData = (J3DModelData*)dComIfG_getObjectRes("B_gg", 0x24);
+ mpHelmetModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mpHelmetModel == NULL) {
+ return 0;
+ }
+ }
+
+ return 1;
}
/* 805DE630-805DE650 000310 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED098-805ED0DC 000038 0044+00 0/1 0/0 0/0 .rodata ccCylSrc$3979 */
-#pragma push
-#pragma force_active on
-const static dCcD_SrcCyl ccCylSrc = {
- {
- {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0x3}, {0xd8fbbdff, 0x43}, 0x75}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x2, 0x0, 0x0, 0x1}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {0.0f, 0.0f, 0.0f}, // mCenter
- 130.0f, // mRadius
- 200.0f // mHeight
- } // mCyl
-};
-#pragma pop
-
-/* 805ED0DC-805ED120 00007C 0044+00 0/1 0/0 0/0 .rodata ccHookSrc$3980 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const ccHookSrc[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x805ED0DC, &ccHookSrc);
-#pragma pop
-
-/* 805ED120-805ED160 0000C0 0040+00 0/1 0/0 0/0 .rodata ccShieldSphSrc$3981 */
-#pragma push
-#pragma force_active on
-const static dCcD_SrcSph ccShieldSphSrc = {
- {
- {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0x0}, {0xd8fbbdff, 0x3}, 0x75}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
- } // mSphAttr
-};
-#pragma pop
-
-/* 805ED160-805ED1A0 000100 0040+00 0/1 0/0 0/0 .rodata ccSphSrc$3982 */
-#pragma push
-#pragma force_active on
-const static dCcD_SrcSph ccSphSrc = {
- {
- {0x0, {{AT_TYPE_CSTATUE_SWING, 0x2, 0xd}, {0x0, 0x0}, 0x0}}, // mObj
- {dCcD_SE_SWORD, 0x0, 0x7, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
- } // mSphAttr
-};
-#pragma pop
+static int useHeapInit(fopAc_ac_c* i_this) {
+ daB_GG_c* a_this = (daB_GG_c*)i_this;
+ return a_this->CreateHeap();
+}
/* 805DE650-805DE7A4 000330 0154+00 1/1 0/0 0/0 .text initCc__8daB_GG_cFv */
void daB_GG_c::initCc() {
- // NONMATCHING
+ const static dCcD_SrcCyl ccCylSrc = {
+ {
+ {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0x3}, {0xd8fbbdff, 0x43}, 0x75}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x2, 0x0, 0x0, 0x1}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 130.0f, // mRadius
+ 200.0f // mHeight
+ } // mCyl
+ };
+
+ const static dCcD_SrcCyl ccHookSrc = {
+ {
+ {0x0, {{0x0, 0x1, 0x0}, {0x4000, 0x3}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x2, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 130.0f, // mRadius
+ 200.0f // mHeight
+ } // mCyl
+ };
+
+ const static dCcD_SrcSph ccShieldSphSrc = {
+ {
+ {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0x0}, {0xd8fbbdff, 0x3}, 0x75}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
+ } // mSphAttr
+ };
+
+ const static dCcD_SrcSph ccSphSrc = {
+ {
+ {0x0, {{AT_TYPE_CSTATUE_SWING, 0x2, 0xd}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_SWORD, 0x0, 0x7, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
+ } // mSphAttr
+ };
+
+ mCcStts.Init(254, 0xFF, this);
+ mCcCyl.Set(ccCylSrc);
+ mCcCyl.SetStts(&mCcStts);
+ mCcCyl.SetC(current.pos);
+ mCcCyl.OffAtSetBit();
+ mCcCyl.OnTgNoHitMark();
+ mCcCyl.OnTgShield();
+
+ mCcHookCyl.Set(ccHookSrc);
+ mCcHookCyl.SetStts(&mCcStts);
+ mCcHookCyl.SetC(current.pos);
+ mCcHookCyl.OffAtSetBit();
+ mCcHookCyl.OnTgNoHitMark();
+
+ mCcShieldSph.Set(ccShieldSphSrc);
+ mCcShieldSph.SetStts(&mCcStts);
+ mCcShieldSph.SetC(current.pos);
+ mCcShieldSph.OnTgNoHitMark();
+ mCcShieldSph.OnTgShield();
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].Set(ccSphSrc);
+ mCcSph[i].SetStts(&mCcStts);
+ mCcSph[i].SetC(current.pos);
+ mCcSph[i].OffTgNoHitMark();
+ mCcSph[i].OffTgSetBit();
+ }
}
-/* ############################################################################################## */
-/* 805ED1A0-805ED1A8 000140 0004+04 0/10 0/0 0/0 .rodata @4064 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4064[1 + 1 /* padding */] = {
- 50.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x805ED1A0, &lit_4064);
-#pragma pop
-
-/* 805ED1A8-805ED1B0 000148 0008+00 3/10 0/0 0/0 .rodata @4066 */
-SECTION_RODATA static u8 const lit_4066[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x805ED1A8, &lit_4066);
-
-/* 805ED6C0-805ED6C4 000008 0001+03 14/14 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 805ED6C4-805ED6C8 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
-
-/* 805ED6C8-805ED6CC 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
-
-/* 805ED6CC-805ED6D0 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
-
-/* 805ED6D0-805ED6D4 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
-
-/* 805ED6D4-805ED6D8 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
-
-/* 805ED6D8-805ED6DC 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
-
-/* 805ED6DC-805ED6E0 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
-
-/* 805ED6E0-805ED6E4 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
-
-/* 805ED6E4-805ED6E8 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
-
-/* 805ED6E8-805ED6EC 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
-
-/* 805ED6EC-805ED6F0 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
-
-/* 805ED6F0-805ED6F4 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
-
-/* 805ED6F4-805ED6F8 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
-
-/* 805ED6F8-805ED6FC 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
+UNK_REL_BSS
/* 805ED6FC-805ED700 -00001 0004+00 1/2 0/0 0/0 .bss None */
-/* 805ED6FC 0001+00 data_805ED6FC @1009 */
-/* 805ED6FD 0003+00 data_805ED6FD None */
-static u8 struct_805ED6FC[4];
-
-/* 805ED700-805ED70C 000048 000C+00 0/1 0/0 0/0 .bss @3927 */
-#pragma push
-#pragma force_active on
-static u8 lit_3927[12];
-#pragma pop
+/* 805ED6FD 0003+00 l_HIOInit None */
+static u8 l_HIOInit;
/* 805ED70C-805ED728 000054 001C+00 4/9 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[28];
+static daB_GG_HIO_c l_HIO;
/* 805DE7A4-805DE9B8 000484 0214+00 1/1 0/0 0/0 .text setCcCylinder__8daB_GG_cFv */
void daB_GG_c::setCcCylinder() {
- // NONMATCHING
-}
+ mCcCyl.SetC(current.pos);
+ mCcCyl.SetR(100.0f * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcCyl);
+
+ mCcHookCyl.SetC(current.pos);
+ mCcHookCyl.SetR(100.0f * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcHookCyl);
+
+ cXyz center_pos;
+ for (int i = 0; i < 3; i++) {
+ center_pos.set(0.0f, (50.0f + (100.0f * i)) * l_HIO.base_size, 0.0f);
+
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0x10));
+ mDoMtx_stack_c::multVec(&center_pos, &center_pos);
+
+ mCcSph[i].SetC(center_pos);
+ mCcSph[i].SetR(100.0f * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcSph[i]);
+ }
-/* ############################################################################################## */
-/* 805ED1B0-805ED1B4 000150 0004+00 1/5 0/0 0/0 .rodata @4089 */
-SECTION_RODATA static f32 const lit_4089 = 150.0f;
-COMPILER_STRIP_GATE(0x805ED1B0, &lit_4089);
+ center_pos.set(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mDoMtx_stack_c::multVec(&center_pos, &center_pos);
+
+ mCcShieldSph.SetC(center_pos);
+ mCcShieldSph.SetR(50.0f * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcShieldSph);
+}
/* 805DE9B8-805DEAD0 000698 0118+00 1/1 0/0 0/0 .text G_setCcCylinder__8daB_GG_cFv */
void daB_GG_c::G_setCcCylinder() {
- // NONMATCHING
-}
+ cXyz center_pos;
-/* ############################################################################################## */
-/* 805ED1B4-805ED1B8 000154 0004+00 2/6 0/0 0/0 .rodata @4100 */
-SECTION_RODATA static f32 const lit_4100 = 10000.0f;
-COMPILER_STRIP_GATE(0x805ED1B4, &lit_4100);
+ mCcCyl.SetC(current.pos);
+ mCcCyl.SetR(100.0f * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcCyl);
-/* 805DEAD0-805DEB44 0007B0 0074+00 1/1 0/0 0/0 .text MoveCo__8daB_GG_cFv */
-void daB_GG_c::MoveCo() {
- // NONMATCHING
+ mCcHookCyl.SetC(current.pos);
+ mCcHookCyl.SetR(100.0f * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcHookCyl);
+
+ center_pos.set(yREG_F(15), yREG_F(16), 50.0f + yREG_F(17));
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mDoMtx_stack_c::multVec(&center_pos, &center_pos);
+
+ mCcShieldSph.SetC(center_pos);
+ mCcShieldSph.SetR((150.0f + yREG_F(18)) * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcShieldSph);
}
-/* ############################################################################################## */
-/* 805ED1B8-805ED1BC 000158 0004+00 1/1 0/0 0/0 .rodata @4147 */
-SECTION_RODATA static f32 const lit_4147 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x805ED1B8, &lit_4147);
+/* 805DEAD0-805DEB44 0007B0 0074+00 1/1 0/0 0/0 .text MoveCo__8daB_GG_cFv */
+void daB_GG_c::MoveCo() {
+ cXyz center_pos;
+ center_pos = current.pos;
+ center_pos.y += 10000.0f;
-/* 805ED1BC-805ED1C0 00015C 0004+00 1/1 0/0 0/0 .rodata @4148 */
-SECTION_RODATA static f32 const lit_4148 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x805ED1BC, &lit_4148);
+ mCcCyl.SetC(center_pos);
+ mCcShieldSph.SetC(center_pos);
+ mCcHookCyl.SetC(center_pos);
+}
/* 805DEB44-805DED0C 000824 01C8+00 1/1 0/0 0/0 .text ctrlJoint__8daB_GG_cFP8J3DJointP8J3DModel */
-void daB_GG_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
- // NONMATCHING
+int daB_GG_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
+ J3DJoint* temp_r28 = i_joint;
+
+ int jnt_no = temp_r28->getJntNo();
+ mDoMtx_stack_c::copy(i_model->getAnmMtx(jnt_no));
+
+ csXyz spC;
+ switch (jnt_no) {
+ case 1:
+ mDoMtx_stack_c::ZrotM(0.3f * field_0x6c4);
+ break;
+ case 5:
+ mDoMtx_stack_c::YrotM(-field_0x6be);
+ mDoMtx_stack_c::ZrotM(0.7f * field_0x6c4);
+ break;
+ case 9:
+ mDoMtx_stack_c::ZrotM((s16)mArmL1Rot.z);
+ mDoMtx_stack_c::XrotM((s16)mArmL1Rot.x);
+ mDoMtx_stack_c::YrotM((s16)mArmL1Rot.y);
+ break;
+ case 10:
+ mDoMtx_stack_c::ZrotM((s16)mArmL2Rot.z);
+ mDoMtx_stack_c::XrotM((s16)mArmL2Rot.x);
+ mDoMtx_stack_c::YrotM((s16)mArmL2Rot.y);
+ break;
+ }
+
+ i_model->setAnmMtx(jnt_no, mDoMtx_stack_c::get());
+ cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+ return 1;
}
/* 805DED0C-805DED58 0009EC 004C+00 1/1 0/0 0/0 .text JointCallBack__FP8J3DJointi */
-static void JointCallBack(J3DJoint* param_0, int param_1) {
- // NONMATCHING
+static int JointCallBack(J3DJoint* i_joint, int param_1) {
+ if (param_1 == 0) {
+ J3DModel* model = j3dSys.getModel();
+ daB_GG_c* a_this = (daB_GG_c*)model->getUserArea();
+
+ if (a_this != NULL) {
+ a_this->ctrlJoint(i_joint, model);
+ }
+ }
+
+ return 1;
}
/* 805DED58-805DEF18 000A38 01C0+00 1/1 0/0 0/0 .text
* HeadctrlJoint__8daB_GG_cFP8J3DJointP8J3DModel */
-void daB_GG_c::HeadctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
- // NONMATCHING
+int daB_GG_c::HeadctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
+ int jnt_no = i_joint->getJntNo();
+ mDoMtx_stack_c::copy(i_model->getAnmMtx(jnt_no));
+
+ switch (jnt_no) {
+ case 1:
+ mDoMtx_stack_c::YrotM(0.5f * field_0x6d4);
+ mDoMtx_stack_c::ZrotM(0.5f * field_0x6d6);
+ break;
+ case 2:
+ mDoMtx_stack_c::YrotM(0.5f * field_0x6d4);
+ mDoMtx_stack_c::ZrotM(0.5f * field_0x6d6);
+ break;
+ }
+
+ i_model->setAnmMtx(jnt_no, mDoMtx_stack_c::get());
+ cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+ return 1;
}
/* 805DEF18-805DEF64 000BF8 004C+00 1/1 0/0 0/0 .text HeadJointCallBack__FP8J3DJointi */
-static void HeadJointCallBack(J3DJoint* param_0, int param_1) {
- // NONMATCHING
-}
+static int HeadJointCallBack(J3DJoint* i_joint, int param_1) {
+ if (param_1 == 0) {
+ J3DModel* model = j3dSys.getModel();
+ daB_GG_c* a_this = (daB_GG_c*)model->getUserArea();
-/* ############################################################################################## */
-/* 805ED1C0-805ED1C4 000160 0004+00 1/5 0/0 0/0 .rodata @4220 */
-SECTION_RODATA static f32 const lit_4220 = -1.0f;
-COMPILER_STRIP_GATE(0x805ED1C0, &lit_4220);
+ if (a_this != NULL) {
+ a_this->HeadctrlJoint(i_joint, model);
+ }
+ }
-/* 805DEF64-805DF010 000C44 00AC+00 15/15 0/0 0/0 .text SetAnm__8daB_GG_cFiiff */
-void daB_GG_c::SetAnm(int param_0, int param_1, f32 param_2, f32 param_3) {
- // NONMATCHING
+ return 1;
}
-/* ############################################################################################## */
-/* 805ED1C4-805ED1C8 000164 0004+00 1/4 0/0 0/0 .rodata @4250 */
-SECTION_RODATA static f32 const lit_4250 = 30.0f;
-COMPILER_STRIP_GATE(0x805ED1C4, &lit_4250);
+/* 805DEF64-805DF010 000C44 00AC+00 15/15 0/0 0/0 .text SetAnm__8daB_GG_cFiiff */
+void daB_GG_c::SetAnm(int i_anm, int i_mode, f32 i_morf, f32 i_speed) {
+ mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("B_gg", i_anm), i_mode, i_morf, i_speed, 0.0f, -1.0f);
+ mAnm = i_anm;
+}
/* 805DF010-805DF0B8 000CF0 00A8+00 1/1 0/0 0/0 .text way_bg_check2__FP8daB_GG_c4cXyz4cXyz */
-static void way_bg_check2(daB_GG_c* param_0, cXyz param_1, cXyz param_2) {
- // NONMATCHING
-}
+static BOOL way_bg_check2(daB_GG_c* a_this, cXyz i_start, cXyz i_end) {
+ dBgS_LinChk line_chk;
+ i_start.y += 30.0f;
+ line_chk.Set(&i_start, &i_end, a_this);
+
+ if (dComIfG_Bgsp().LineCross(&line_chk)) {
+ return TRUE;
+ }
-/* ############################################################################################## */
-/* 805ED1C8-805ED1CC 000168 0004+00 0/7 0/0 0/0 .rodata @4251 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4251 = 300.0f;
-COMPILER_STRIP_GATE(0x805ED1C8, &lit_4251);
-#pragma pop
+ return FALSE;
+}
-/* 805ED1CC-805ED1D0 00016C 0004+00 1/2 0/0 0/0 .rodata @4291 */
-SECTION_RODATA static f32 const lit_4291 = 700.0f;
-COMPILER_STRIP_GATE(0x805ED1CC, &lit_4291);
+static f32 dummyFloat() {
+ return 300.0f;
+}
/* 805DF0B8-805DF178 000D98 00C0+00 1/1 0/0 0/0 .text roofchk__FP8daB_GG_c */
-static void roofchk(daB_GG_c* param_0) {
- // NONMATCHING
+static BOOL roofchk(daB_GG_c* a_this) {
+ dBgS_LinChk line_chk;
+ cXyz sp24;
+ cXyz start;
+ cXyz end;
+
+ start = a_this->current.pos;
+ end = a_this->current.pos;
+ end.y += 700.0f;
+ line_chk.Set(&start, &end, a_this);
+
+ if (dComIfG_Bgsp().LineCross(&line_chk)) {
+ a_this->current.pos.y = a_this->old.pos.y;
+ return TRUE;
+ }
+
+ return FALSE;
}
/* 805DF178-805DF250 000E58 00D8+00 2/2 0/0 0/0 .text other_bg_check__FP8daB_GG_cP10fopAc_ac_c */
-static void other_bg_check(daB_GG_c* param_0, fopAc_ac_c* param_1) {
- // NONMATCHING
-}
+static BOOL other_bg_check(daB_GG_c* a_this, fopAc_ac_c* i_other) {
+ fopAc_ac_c* i_this = (fopAc_ac_c*)a_this;
+ dBgS_LinChk line_chk;
+ cXyz sp28;
+ cXyz start;
+ cXyz end;
-/* ############################################################################################## */
-/* 805ED1D0-805ED1D4 000170 0004+00 0/1 0/0 0/0 .rodata @4320 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4320 = 800.0f;
-COMPILER_STRIP_GATE(0x805ED1D0, &lit_4320);
-#pragma pop
+ end = i_other->current.pos;
+ end.y += 100.0f;
-/* 805ED1D4-805ED1D8 000174 0004+00 0/4 0/0 0/0 .rodata @4530 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4530 = 2.0f;
-COMPILER_STRIP_GATE(0x805ED1D4, &lit_4530);
-#pragma pop
+ start = i_this->current.pos;
+ start.y += 100.0f;
+
+ line_chk.Set(&start, &end, i_this);
+
+ if (dComIfG_Bgsp().LineCross(&line_chk)) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static f32 dummyFloat2() {
+ return 800.0f;
+}
/* 805DF250-805DF9F4 000F30 07A4+00 1/1 0/0 0/0 .text Hanekaeri__FP8daB_GG_c4cXyz4cXyzf
*/
-static void Hanekaeri(daB_GG_c* param_0, cXyz param_1, cXyz param_2, f32 param_3) {
- // NONMATCHING
+static cXyz Hanekaeri(daB_GG_c* a_this, cXyz param_1, cXyz param_2, f32 param_3) {
+ cXyz sp28;
+
+ f32 temp_f1 = param_2.abs();
+ sp28.x = param_2.x / temp_f1;
+ sp28.y = param_2.y / temp_f1;
+ sp28.z = param_2.z / temp_f1;
+
+ cXyz ret;
+ cXyz sp1C;
+ cXyz sp10;
+
+ sp1C -= param_1;
+ sp28 *= 2.0f * sp1C.inprod(param_2);
+ sp28 += param_1;
+
+ f32 temp_f30 = param_3 * param_1.abs();
+
+ ret.x = 0.8f * ((sp28.x / sp28.abs()) * param_1.abs());
+ ret.y = temp_f30 * (sp28.y / sp28.abs());
+ ret.z = 0.8f * ((sp28.z / sp28.abs()) * param_1.abs());
+ return ret;
}
/* 805DF9F4-805DFA48 0016D4 0054+00 1/1 0/0 0/0 .text Yazirushi__8daB_GG_cFv */
void daB_GG_c::Yazirushi() {
- // NONMATCHING
+ eyePos = current.pos;
+ eyePos.y += 150.0f;
+
+ attention_info.position = eyePos;
+ attention_info.position.y += 150.0f;
}
/* 805DFA48-805DFA64 001728 001C+00 8/8 0/0 0/0 .text SpeedClear__8daB_GG_cFv */
void daB_GG_c::SpeedClear() {
- // NONMATCHING
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+ speed.y = 0.0f;
+ field_0x5c0 = 0.0f;
}
/* 805DFA64-805DFA8C 001744 0028+00 13/13 0/0 0/0 .text SetAction__8daB_GG_cFUcUcUc */
-void daB_GG_c::SetAction(u8 param_0, u8 param_1, u8 param_2) {
- // NONMATCHING
+void daB_GG_c::SetAction(u8 i_action, u8 i_subAction, u8 i_mode) {
+ mPrevAction = mAction;
+ mPrevSubAction = mSubAction;
+ mPrevMode = mMode;
+
+ mAction = i_action;
+ mSubAction = i_subAction;
+ mMode = i_mode;
}
/* 805DFA8C-805DFACC 00176C 0040+00 1/1 0/0 0/0 .text GetAction__8daB_GG_cFUcUcUc */
-void daB_GG_c::GetAction(u8 param_0, u8 param_1, u8 param_2) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED1D8-805ED1DC 000178 0004+00 0/6 0/0 0/0 .rodata @4585 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4585 = 200.0f;
-COMPILER_STRIP_GATE(0x805ED1D8, &lit_4585);
-#pragma pop
-
-/* 805ED1DC-805ED1E0 00017C 0004+00 0/2 0/0 0/0 .rodata @4586 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4586 = 5930.0f;
-COMPILER_STRIP_GATE(0x805ED1DC, &lit_4586);
-#pragma pop
-
-/* 805ED1E0-805ED1E4 000180 0004+00 0/2 0/0 0/0 .rodata @4587 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4587 = 3157.0f;
-COMPILER_STRIP_GATE(0x805ED1E0, &lit_4587);
-#pragma pop
-
-/* 805ED1E4-805ED1E8 000184 0004+00 0/2 0/0 0/0 .rodata @4588 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4588 = 6993.0f;
-COMPILER_STRIP_GATE(0x805ED1E4, &lit_4588);
-#pragma pop
+u8 daB_GG_c::GetAction(u8 i_action, u8 i_subAction, u8 i_mode) {
+ if (mPrevAction == i_action && mPrevSubAction == i_subAction && mPrevMode == i_mode) {
+ return true;
+ }
+ return false;
+}
+
+namespace {
/* 805ED728-805ED72C 000070 0004+00 4/7 0/0 0/0 .bss s_dis__22@unnamed@d_a_b_gg_cpp@ */
-static u8 data_805ED728[4];
+static f32 s_dis;
/* 805ED72C-805ED730 000074 0004+00 8/16 0/0 0/0 .bss s_LinkPos__22@unnamed@d_a_b_gg_cpp@ */
-static u8 data_805ED72C[4];
+static cXyz* s_LinkPos;
/* 805ED730-805ED734 000078 0002+02 12/19 0/0 0/0 .bss s_TargetAngle__22@unnamed@d_a_b_gg_cpp@ */
-static u8 data_805ED730[2 + 2 /* padding */];
+static s16 s_TargetAngle;
+
+/* 805ED740-805ED74C 000088 000C+00 0/2 0/0 0/0 .bss s_centerpos__22@unnamed@d_a_b_gg_cpp@ */
+static cXyz s_centerpos(217.0f, 1275.0f, -57.0f);
+
+/* 805ED74C 0002+00 data_805ED74C s_M_Action__22@unnamed@d_a_b_gg_cpp@ */
+static s16 s_M_Action;
+
+/* 805ED74E 0002+00 data_805ED74E s_W_Action__22@unnamed@d_a_b_gg_cpp@ */
+static s16 s_W_Action;
+}
/* 805DFACC-805DFC24 0017AC 0158+00 1/1 0/0 0/0 .text DemoSkip__8daB_GG_cFi */
void daB_GG_c::DemoSkip(int param_0) {
- // NONMATCHING
+ cXyz offset(0.0f, 200.0f, 300.0f);
+ cXyz sp14(0.0f, 0.0f, 0.0f);
+ cXyz sp8(0.0f, 0.0f, 0.0f);
+
+ cDmr_SkipInfo = 1;
+
+ if (param_0 == 0) {
+ dStage_changeScene(1, 0.0f, 0, fopAcM_GetRoomNo(this), 0, -1);
+ Z2GetAudioMgr()->subBgmStop();
+ } else if (param_0 == 1) {
+ cDmr_SkipInfo = 0;
+
+ cLib_offsetPos(&sp8, s_LinkPos, s_TargetAngle, &offset);
+ mCamEye = sp8;
+
+ SetReleaseCam();
+
+ mAction = ACTION_FLY;
+ mSubAction = SUBACT_WAIT;
+ mMode = 0;
+
+ current.pos.set(5930.0f, 3157.0f, 6993.0f);
+ old.pos = current.pos;
+ }
+
+ dComIfGp_getVibration().StopQuake(0x1F);
}
/* 805DFC24-805DFC58 001904 0034+00 2/2 0/0 0/0 .text DemoSkipCallBack__8daB_GG_cFPvi */
-void daB_GG_c::DemoSkipCallBack(void* param_0, int param_1) {
- // NONMATCHING
+int daB_GG_c::DemoSkipCallBack(void* i_process, int param_1) {
+ if (i_process != NULL) {
+ ((daB_GG_c*)i_process)->DemoSkip(param_1);
+ return 1;
+ }
+
+ return 0;
}
/* 805DFC58-805DFD78 001938 0120+00 4/4 0/0 0/0 .text CameraSet__8daB_GG_cFv */
-void daB_GG_c::CameraSet() {
- // NONMATCHING
+bool daB_GG_c::CameraSet() {
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ dCamera_c* cam_body = dCam_getBody();
+
+ if (!eventInfo.checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(this, 2, 0xFFFF, 0);
+ eventInfo.onCondition(dEvtCnd_NONE_e);
+ return false;
+ }
+
+ camera->mCamera.Stop();
+ mCamFovy = cam_body->Fovy();
+ mCamCenter = cam_body->Center();
+ field_0x60c = mCamCenter;
+ mCamEye = cam_body->Eye();
+ field_0x618 = mCamEye;
+ camera->mCamera.SetTrimSize(3);
+ return true;
}
/* 805DFD78-805DFDFC 001A58 0084+00 2/2 0/0 0/0 .text SetStopingCam__8daB_GG_cFv */
void daB_GG_c::SetStopingCam() {
- // NONMATCHING
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0);
}
/* 805DFDFC-805DFF4C 001ADC 0150+00 5/5 0/0 0/0 .text SetStopCam__8daB_GG_cF4cXyzffs */
void daB_GG_c::SetStopCam(cXyz param_0, f32 param_1, f32 param_2, s16 param_3) {
- // NONMATCHING
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+
+ cXyz sp38(0.0f, param_2, param_1);
+ cXyz sp2C(0.0f, 0.0f, 0.0f);
+ mCamCenter.set(param_0.x, param_0.y, param_0.z);
+ field_0x60c = mCamCenter;
+ mCamCenterTarget = mCamCenter;
+
+ cLib_offsetPos(&sp2C, &param_0, param_3, &sp38);
+ mCamEye = sp2C;
+ field_0x618 = sp2C;
+ mCamEyeTarget = sp2C;
+
+ camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0);
}
/* 805DFF4C-805E00D4 001C2C 0188+00 2/2 0/0 0/0 .text SetMoveCam__8daB_GG_cF4cXyzffsff */
void daB_GG_c::SetMoveCam(cXyz param_0, f32 param_1, f32 param_2, s16 param_3, f32 param_4,
- f32 param_5) {
- // NONMATCHING
+ f32 param_5) {
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ cXyz sp38(0.0f, param_2, param_1);
+ cXyz sp2C(0.0f, 0.0f, 0.0f);
+ field_0x60c = param_0;
+
+ cLib_offsetPos(&sp2C, &param_0, param_3, &sp38);
+ field_0x618 = sp2C;
+
+ cLib_addCalcPos(&mCamCenterTarget, field_0x60c, param_4, param_5, 0.0f);
+ cLib_addCalcPos(&mCamEyeTarget, field_0x618, param_4, param_5, 0.0f);
+ cLib_addCalcPos(&mCamCenter, mCamCenterTarget, param_4, param_5, 0.0f);
+ cLib_addCalcPos(&mCamEye, mCamEyeTarget, param_4, param_5, 0.0f);
+
+ camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0);
}
/* 805E00D4-805E01F8 001DB4 0124+00 4/4 0/0 0/0 .text SetMoveCam1__8daB_GG_cFff */
-void daB_GG_c::SetMoveCam1(f32 param_0, f32 param_1) {
- // NONMATCHING
+void daB_GG_c::SetMoveCam1(f32 i_scale, f32 i_step) {
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+
+ cLib_addCalcPos(&mCamCenterTarget, field_0x60c, i_scale, i_step, 0.0f);
+ cLib_addCalcPos(&mCamEyeTarget, field_0x618, i_scale, i_step, 0.0f);
+ cLib_addCalcPos(&mCamCenter, field_0x60c, i_scale, i_step, 0.0f);
+ cLib_addCalcPos(&mCamEye, field_0x618, i_scale, i_step, 0.0f);
+
+ camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0);
}
/* 805E01F8-805E029C 001ED8 00A4+00 6/6 0/0 0/0 .text SetReleaseCam__8daB_GG_cFv */
void daB_GG_c::SetReleaseCam() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED1E8-805ED1EC 000188 0004+00 0/5 0/0 0/0 .rodata @5006 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5006 = -300.0f;
-COMPILER_STRIP_GATE(0x805ED1E8, &lit_5006);
-#pragma pop
-
-/* 805ED1EC-805ED1F0 00018C 0004+00 0/5 0/0 0/0 .rodata @5007 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5007 = 1000.0f;
-COMPILER_STRIP_GATE(0x805ED1EC, &lit_5007);
-#pragma pop
-
-/* 805ED1F0-805ED1F4 000190 0004+00 0/1 0/0 0/0 .rodata @5008 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5008 = 550.0f;
-COMPILER_STRIP_GATE(0x805ED1F0, &lit_5008);
-#pragma pop
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ camera->mCamera.Reset(mCamCenter, mCamEye);
+ camera->mCamera.Start();
+ camera->mCamera.SetTrimSize(0);
+ dComIfGp_event_reset();
+}
+
+/* 805ED774-805ED798 0000BC 0024+00 2/5 0/0 0/0 .bss out_pos */
+static cXyz out_pos[] = {
+ cXyz(5714.0f, 1200.0f, 218.0f),
+ cXyz(20.0f, 950.0f, -4937.0),
+ cXyz(-5560.0f, 1200.0f, 222.0f),
+};
+
+/* 805ED7BC-805ED7E0 000104 0024+00 1/7 0/0 0/0 .bss in_pos */
+static cXyz in_pos[]= {
+ cXyz(1185.0f, 1200.0f, 152.0f),
+ cXyz(-121.0f, 950.0f, -1190.0f),
+ cXyz(-1080.0f, 1200.0f, 7.0f),
+};
/* 805E029C-805E0F2C 001F7C 0C90+00 2/1 0/0 0/0 .text St_CamAction__8daB_GG_cFv */
void daB_GG_c::St_CamAction() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED1F4-805ED1F8 000194 0004+00 0/0 0/0 0/0 .rodata @5009 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5009 = 180.0f;
-COMPILER_STRIP_GATE(0x805ED1F4, &lit_5009);
-#pragma pop
-
-/* 805ED1F8-805ED1FC 000198 0004+00 0/1 0/0 0/0 .rodata @5010 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5010 = 120.0f;
-COMPILER_STRIP_GATE(0x805ED1F8, &lit_5010);
-#pragma pop
-
-/* 805ED1FC-805ED200 00019C 0004+00 0/0 0/0 0/0 .rodata @5011 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5011 = 6.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED1FC, &lit_5011);
-#pragma pop
-
-/* 805ED200-805ED204 0001A0 0004+00 0/3 0/0 0/0 .rodata @5012 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5012 = 60.0f;
-COMPILER_STRIP_GATE(0x805ED200, &lit_5012);
-#pragma pop
-
-/* 805ED204-805ED208 0001A4 0004+00 0/2 0/0 0/0 .rodata @5013 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5013 = 40.0f;
-COMPILER_STRIP_GATE(0x805ED204, &lit_5013);
-#pragma pop
-
-/* 805ED208-805ED20C 0001A8 0004+00 0/0 0/0 0/0 .rodata @5014 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5014 = 3.0f / 20.0f;
-COMPILER_STRIP_GATE(0x805ED208, &lit_5014);
-#pragma pop
-
-/* 805ED20C-805ED210 0001AC 0004+00 0/0 0/0 0/0 .rodata @5015 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5015 = -60.0f;
-COMPILER_STRIP_GATE(0x805ED20C, &lit_5015);
-#pragma pop
-
-/* 805ED210-805ED214 0001B0 0004+00 0/0 0/0 0/0 .rodata @5016 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5016 = -110.0f;
-COMPILER_STRIP_GATE(0x805ED210, &lit_5016);
-#pragma pop
-
-/* 805ED214-805ED218 0001B4 0004+00 0/0 0/0 0/0 .rodata @5017 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5017 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED214, &lit_5017);
-#pragma pop
-
-/* 805ED218-805ED21C 0001B8 0004+00 2/4 0/0 0/0 .rodata @5018 */
-SECTION_RODATA static f32 const lit_5018 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED218, &lit_5018);
-
-/* 805ED21C-805ED220 0001BC 0004+00 0/0 0/0 0/0 .rodata @5019 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5019 = 110.0f;
-COMPILER_STRIP_GATE(0x805ED21C, &lit_5019);
-#pragma pop
-
-/* 805ED220-805ED224 0001C0 0004+00 0/0 0/0 0/0 .rodata @5020 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5020 = -90.0f;
-COMPILER_STRIP_GATE(0x805ED220, &lit_5020);
-#pragma pop
-
-/* 805ED224-805ED228 0001C4 0004+00 0/0 0/0 0/0 .rodata @5021 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5021 = -25.0f;
-COMPILER_STRIP_GATE(0x805ED224, &lit_5021);
-#pragma pop
-
-/* 805ED228-805ED22C 0001C8 0004+00 0/1 0/0 0/0 .rodata @5022 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5022 = -20.0f;
-COMPILER_STRIP_GATE(0x805ED228, &lit_5022);
-#pragma pop
-
-/* 805ED22C-805ED230 0001CC 0004+00 0/1 0/0 0/0 .rodata @5023 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5023 = -30.0f;
-COMPILER_STRIP_GATE(0x805ED22C, &lit_5023);
-#pragma pop
-
-/* 805ED230-805ED234 0001D0 0004+00 0/1 0/0 0/0 .rodata @5024 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5024 = -10.0f;
-COMPILER_STRIP_GATE(0x805ED230, &lit_5024);
-#pragma pop
-
-/* 805ED234-805ED238 0001D4 0004+00 0/0 0/0 0/0 .rodata @5025 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5025 = 25.0f;
-COMPILER_STRIP_GATE(0x805ED234, &lit_5025);
-#pragma pop
-
-/* 805ED238-805ED23C 0001D8 0004+00 0/1 0/0 0/0 .rodata @5026 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5026 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x805ED238, &lit_5026);
-#pragma pop
-
-/* 805ED23C-805ED240 0001DC 0004+00 0/5 0/0 0/0 .rodata @5027 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5027 = 400.0f;
-COMPILER_STRIP_GATE(0x805ED23C, &lit_5027);
-#pragma pop
-
-/* 805ED240-805ED244 0001E0 0004+00 0/2 0/0 0/0 .rodata @5028 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5028 = 80.0f;
-COMPILER_STRIP_GATE(0x805ED240, &lit_5028);
-#pragma pop
-
-/* 805ED244-805ED248 0001E4 0004+00 0/0 0/0 0/0 .rodata @5029 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5029 = -50.0f;
-COMPILER_STRIP_GATE(0x805ED244, &lit_5029);
-#pragma pop
-
-/* 805ED248-805ED24C 0001E8 0004+00 0/1 0/0 0/0 .rodata @5030 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5030 = 250.0f;
-COMPILER_STRIP_GATE(0x805ED248, &lit_5030);
-#pragma pop
-
-/* 805ED24C-805ED250 0001EC 0004+00 0/1 0/0 0/0 .rodata @5031 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5031 = -200.0f;
-COMPILER_STRIP_GATE(0x805ED24C, &lit_5031);
-#pragma pop
-
-/* 805ED250-805ED254 0001F0 0004+00 0/1 0/0 0/0 .rodata @5032 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5032 = 52.0f;
-COMPILER_STRIP_GATE(0x805ED250, &lit_5032);
-#pragma pop
-
-/* 805ED254-805ED258 0001F4 0004+00 0/0 0/0 0/0 .rodata @5033 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5033 = -120.0f;
-COMPILER_STRIP_GATE(0x805ED254, &lit_5033);
-#pragma pop
-
-/* 805ED258-805ED25C 0001F8 0004+00 0/0 0/0 0/0 .rodata @5034 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5034 = 3.5f;
-COMPILER_STRIP_GATE(0x805ED258, &lit_5034);
-#pragma pop
-
-/* 805ED25C-805ED260 0001FC 0004+00 0/0 0/0 0/0 .rodata @5035 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5035 = -80.0f;
-COMPILER_STRIP_GATE(0x805ED25C, &lit_5035);
-#pragma pop
-
-/* 805ED260-805ED264 000200 0004+00 0/0 0/0 0/0 .rodata @5036 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5036 = 340.0f;
-COMPILER_STRIP_GATE(0x805ED260, &lit_5036);
-#pragma pop
-
-/* 805ED264-805ED268 000204 0004+00 0/1 0/0 0/0 .rodata @5245 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5245 = -400.0f;
-COMPILER_STRIP_GATE(0x805ED264, &lit_5245);
-#pragma pop
-
-/* 805ED268-805ED26C 000208 0004+00 0/1 0/0 0/0 .rodata @5246 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5246 = -250.0f;
-COMPILER_STRIP_GATE(0x805ED268, &lit_5246);
-#pragma pop
-
-/* 805ED26C-805ED270 00020C 0004+00 0/18 0/0 0/0 .rodata @5247 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5247 = 5.0f;
-COMPILER_STRIP_GATE(0x805ED26C, &lit_5247);
-#pragma pop
-
-/* 805ED270-805ED274 000210 0004+00 0/3 0/0 0/0 .rodata @5248 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5248 = 600.0f;
-COMPILER_STRIP_GATE(0x805ED270, &lit_5248);
-#pragma pop
-
-/* 805ED274-805ED278 000214 0004+00 0/1 0/0 0/0 .rodata @5249 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5249 = -150.0f;
-COMPILER_STRIP_GATE(0x805ED274, &lit_5249);
-#pragma pop
-
-/* 805ED278-805ED27C 000218 0004+00 0/2 0/0 0/0 .rodata @5250 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5250 = -500.0f;
-COMPILER_STRIP_GATE(0x805ED278, &lit_5250);
-#pragma pop
-
-/* 805ED27C-805ED280 00021C 0004+00 0/5 0/0 0/0 .rodata @5251 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5251 = 500.0f;
-COMPILER_STRIP_GATE(0x805ED27C, &lit_5251);
-#pragma pop
-
-/* 805ED280-805ED284 000220 0004+00 0/3 0/0 0/0 .rodata @5252 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5252 = -5.0f;
-COMPILER_STRIP_GATE(0x805ED280, &lit_5252);
-#pragma pop
-
-/* 805ED284-805ED288 000224 0004+00 0/1 0/0 0/0 .rodata @5253 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5253 = 33.0f;
-COMPILER_STRIP_GATE(0x805ED284, &lit_5253);
-#pragma pop
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ cXyz sp58(*s_LinkPos);
+ cXyz sp4C(0.0f, 0.0f, -300.0f);
+ cXyz sp40;
+
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+
+ switch (mCamMode) {
+ case 0:
+ if (s_LinkPos->y < 1000.0f) {
+ mTimers[0] = 0;
+ if (CameraSet()) {
+ Z2GetAudioMgr()->subBgmStart(Z2BGM_GG_MBOSS_D01);
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_DEMO_OP, -1);
+ mCamMode = 12;
+
+ sp40.set(0.0f, 0.0f, 550.0f + MREG_F(8));
+ player->setPlayerPosAndAngle(&sp40, cLib_targetAngleY(&sp40, &sp4C), 0);
+ player->changeOriginalDemo();
+ player->changeDemoMode(1, 0, 0, 0);
+ }
+ }
+ break;
+ case 12:
+ sp58 = fopAcM_GetPosition(player);
+ sp58.y += 100.0f;
+
+ if (daPy_py_c::checkNowWolf()) {
+ sp58.set(0.0f, 0.0f, 0.0f);
+ MTXCopy(daPy_getLinkPlayerActorClass()->getModelJointMtx(6), *calc_mtx);
+ MtxPosition(&sp58, &sp58);
+ sp58.y += 50.0f + yREG_F(13);
+ }
+
+ SetStopCam(sp58, 300.0f, 0.0f, cLib_targetAngleY(&sp58, &sp4C) + 0x2000);
+ field_0x5ba = cLib_targetAngleY(&sp58, &sp4C) + 0x2000;
+ mTimers[0] = 30;
+ mCamMode = 1;
+ field_0x560 = l_HIO.max_hp;
+ health = l_HIO.max_hp;
+ field_0x648 = 300.0f;
+ break;
+ case 1:
+ if (mTimers[0] == 0) {
+ player->changeDemoMode(0x14, 0, 0, 0);
+ player->changeDemoMoveAngle(cLib_targetAngleY(s_LinkPos, &sp4C));
+ mTimers[0] = 160;
+ mCamMode++;
+ field_0x648 = 300.0f;
+ }
+ break;
+ case 2:
+ sp58.y += 100.0f;
+
+ if (mTimers[0] == 0) {
+ sp58.y += 50.0f;
+ player->changeDemoMode(1, 0, 0, 0);
+ mCamMode++;
+ } else {
+ field_0x5ba -= yREG_S(0) + 0x20;
+
+ f32 var_f31;
+ f32 var_f30;
+ if (!daPy_py_c::checkNowWolf()) {
+ var_f31 = 120.0f;
+ } else {
+ var_f31 = 180.0f + yREG_F(1);
+ }
+
+ cLib_chaseF(&field_0x648, var_f31, 1.2f);
+
+ if (!daPy_py_c::checkNowWolf()) {
+ var_f31 = 60.0f;
+ var_f30 = 0.3f;
+ } else {
+ var_f31 = 40.0f + yREG_F(9);
+ var_f30 = 0.15f;
+ }
+
+ cLib_chaseF(&field_0x64c, var_f31, var_f30);
+ sp58.y += field_0x64c;
+
+ if (!daPy_py_c::checkNowWolf()) {
+ var_f31 = -60.0f;
+ var_f30 = 0.3f;
+ } else {
+ var_f31 = -110.0f + yREG_F(2);
+ var_f30 = 0.6f + yREG_F(7);
+ }
+
+ cLib_chaseF(&field_0x650, var_f31, var_f30);
+ SetMoveCam(sp58, field_0x648, field_0x650, field_0x5ba, 0.2f, 50.0f);
+ }
+ break;
+ case 3:
+ if (mTimers[0] == 0) {
+ mCamMode++;
+ mTimers[0] = 35.0f + HREG_F(0);
+
+ sp58.set(110.0f, XREG_F(2), 0.0f);
+ cLib_offsetPos(&field_0x60c, &field_0x60c, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+
+ sp58.set(-90.0f, -25.0f, 0.0f);
+ cLib_offsetPos(&field_0x618, &field_0x618, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+
+ mMode = 0;
+ }
+ break;
+ case 4:
+ if (mTimers[0] == 0) {
+ mCamMode++;
+
+ if (!daPy_py_c::checkNowWolf()) {
+ sp58.set(-20.0f + MREG_F(0), 120.0f + MREG_F(5), -300.0f + MREG_F(3));
+ } else {
+ sp58.set(-20.0f + MREG_F(0), 120.0f + MREG_F(5), -300.0f + MREG_F(3));
+ }
+
+ cLib_offsetPos(&field_0x60c, &field_0x60c, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+
+ if (!daPy_py_c::checkNowWolf()) {
+ sp58.set(-30.0f + MREG_F(1), MREG_F(6), -10.0f + MREG_F(4));
+ } else {
+ sp58.set(-30.0f + MREG_F(1), MREG_F(6), -10.0f + MREG_F(4));
+ }
+
+ cLib_offsetPos(&field_0x618, &field_0x618, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ mTimers[0] = 50;
+ mMode = 1;
+ player->changeDemoMoveAngle(-0x3000);
+ mTimers[1] = 0;
+ }
+
+ if ((f32)mTimers[0] == 30.0f + HREG_F(0)) {
+ player->changeDemoMode(0x17, 1, 0, 0);
+ player->changeDemoMoveAngle(0x3000);
+ }
+
+ if ((f32)mTimers[0] == 25.0f + HREG_F(0)) {
+ sp58.set(-60.0f + MREG_F(13), 0.0f, 0.0f);
+ cLib_offsetPos(&field_0x60c, &field_0x60c, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ }
+
+ SetMoveCam1(0.1f + yREG_F(9), 40.0f + yREG_F(8));
+ attention_info.position = in_pos[2];
+ attention_info.position.z += 400.0f;
+ eyePos = in_pos[2];
+ break;
+ case 5:
+ SetMoveCam1(0.2f + yREG_F(10), 50.0f + yREG_F(8));
+
+ if (mTimers[0] < 45) {
+ attention_info.position = in_pos[0];
+ attention_info.position.z += 400.0f;
+ eyePos = in_pos[0];
+ } else {
+ attention_info.position = in_pos[2];
+ attention_info.position.z += 400.0f;
+ eyePos = in_pos[2];
+ }
+
+ if (mTimers[0] == 45) {
+ player->changeDemoMode(0x19, 1, 0, 0);
+ player->changeDemoMoveAngle(0x3000);
+ }
+
+ if ((f32)mTimers[0] == (40.0f + MREG_F(12))) {
+ sp58.set(80.0f + MREG_F(10), 0.0f, MREG_F(11));
+ cLib_offsetPos(&field_0x60c, &field_0x60c, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ }
+
+ if ((f32)mTimers[0] == HREG_F(1)) {
+ mCamMode = 20;
+
+ if (!daPy_py_c::checkNowWolf()) {
+ sp58.set(0.0f, -50.0f, 100.0f);
+ } else {
+ sp58.set(0.0f, 0.0f, 100.0f);
+ }
+
+ cLib_offsetPos(&field_0x618, &field_0x618, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ field_0x60c.x = s_LinkPos->x;
+ field_0x60c.y = 50.0f + s_LinkPos->y + MREG_F(14);
+ field_0x60c.z = s_LinkPos->z;
+
+ mTimers[0] = 70;
+ }
+ break;
+ case 6:
+ sp58 = current.pos;
+ sp58.y += 250.0f + BREG_F(16);
+ SetMoveCam(sp58, 250.0f + BREG_F(17), -200.0f, cLib_targetAngleY(&current.pos, s_LinkPos), 0.1f, 1.0f);
+ break;
+ case 7:
+ sp58 = current.pos;
+ sp58.y += 250.0f + BREG_F(16);
+ SetMoveCam(sp58, 400.0f + BREG_F(18), -200.0f, (cLib_targetAngleY(&current.pos, s_LinkPos) - 0x500), 0.1f, 1.0f);
+ break;
+ case 8:
+ if (!daPy_py_c::checkNowWolf()) {
+ sp4C = current.pos;
+ sp4C += *s_LinkPos;
+ field_0x60c.set(100.0f + (0.5f * sp4C.x) + aREG_F(15), 100.0f + (0.5f * sp4C.y) + aREG_F(14), (0.5f * sp4C.z) + aREG_F(16));
+ sp58.set(150.0f, 52.0f, -120.0f);
+ cLib_offsetPos(&field_0x618, s_LinkPos, cLib_targetAngleY(s_LinkPos, &current.pos), &sp58);
+ } else {
+ sp4C = current.pos;
+ sp4C += *s_LinkPos;
+ field_0x60c.set(100.0f + (0.5f * sp4C.x) + aREG_F(15), 80.0f + (0.5f * sp4C.y) + aREG_F(14), (0.5f * sp4C.z) + aREG_F(16));
+ sp58.set(150.0f, 52.0f, -120.0f);
+ cLib_offsetPos(&field_0x618, s_LinkPos, cLib_targetAngleY(s_LinkPos, &current.pos), &sp58);
+ }
+
+ SetMoveCam1(0.2f, 3.5f);
+ break;
+ case 11:
+ SetMoveCam1(0.2f, 1.0f + TREG_F(11));
+ break;
+ case 20:
+ if (mTimers[0] == 0) {
+ sp58.set(0.0f, 150.0f, -80.0f);
+ if (daPy_py_c::checkNowWolf()) {
+ sp58.y -= 100.0f;
+ sp58.z -= 50.0f;
+ }
+
+ cLib_offsetPos(&field_0x618, s_LinkPos, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+
+ sp58.set(0.0f, 340.0f + aREG_F(7), 0.0f);
+ if (daPy_py_c::checkNowWolf()) {
+ sp58.y -= 80.0f;
+ }
+
+ cLib_offsetPos(&field_0x60c, &sp4C, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ mCamEye = field_0x618;
+ mCamCenter = field_0x60c;
+ SetStopingCam();
+ mMode = 2;
+ mCamMode = 11;
+ SpeedClear();
+ }
+
+ SetMoveCam1(0.1f, 3.0f + MREG_F(17));
+
+ if ((f32)mTimers[0] == (30.0f + HREG_F(2))) {
+ player->changeDemoMode(0x17, 1, 0, 0);
+ }
+
+ if (!((f32)mTimers[0] > (30.0f + HREG_F(2)))) {
+ attention_info.position = in_pos[1];
+ eyePos = in_pos[1];
+ }
+ break;
+ }
+
+ if (mCamMode != 0) {
+ dComIfGp_getEvent().onSkipFade();
+ dComIfGp_getEvent().setSkipProc(this, DemoSkipCallBack, 0);
+ }
+}
/* 805E0F2C-805E18E8 002C0C 09BC+00 1/1 0/0 0/0 .text St_DemoAction__8daB_GG_cFv */
void daB_GG_c::St_DemoAction() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED288-805ED28C 000228 0004+00 0/3 0/0 0/0 .rodata @5315 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5315 = 217.0f;
-COMPILER_STRIP_GATE(0x805ED288, &lit_5315);
-#pragma pop
-
-/* 805ED28C-805ED290 00022C 0004+00 0/5 0/0 0/0 .rodata @5316 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5316 = -57.0f;
-COMPILER_STRIP_GATE(0x805ED28C, &lit_5316);
-#pragma pop
-
-/* 805ED290-805ED294 000230 0004+00 0/2 0/0 0/0 .rodata @5317 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5317 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED290, &lit_5317);
-#pragma pop
-
-/* 805ED734-805ED740 00007C 000C+00 0/1 0/0 0/0 .bss @3935 */
-#pragma push
-#pragma force_active on
-static u8 lit_3935[12];
-#pragma pop
-
-/* 805ED740-805ED74C 000088 000C+00 0/2 0/0 0/0 .bss s_centerpos__22@unnamed@d_a_b_gg_cpp@ */
-#pragma push
-#pragma force_active on
-static u8 data_805ED740[12];
-#pragma pop
-
-/* 805ED74C-805ED750 -00001 0004+00 0/3 0/0 0/0 .bss None */
-#pragma push
-#pragma force_active on
-/* 805ED74C 0002+00 data_805ED74C s_M_Action__22@unnamed@d_a_b_gg_cpp@ */
-/* 805ED74E 0002+00 data_805ED74E s_W_Action__22@unnamed@d_a_b_gg_cpp@ */
-static u8 struct_805ED74C[4];
-#pragma pop
-
-/* 805ED750-805ED75C 000098 000C+00 0/1 0/0 0/0 .bss @3936 */
-#pragma push
-#pragma force_active on
-static u8 lit_3936[12];
-#pragma pop
-
-/* 805ED75C-805ED768 0000A4 000C+00 0/1 0/0 0/0 .bss @3937 */
-#pragma push
-#pragma force_active on
-static u8 lit_3937[12];
-#pragma pop
-
-/* 805ED768-805ED774 0000B0 000C+00 0/1 0/0 0/0 .bss @3938 */
-#pragma push
-#pragma force_active on
-static u8 lit_3938[12];
-#pragma pop
-
-/* 805ED774-805ED798 0000BC 0024+00 2/5 0/0 0/0 .bss out_pos */
-static u8 out_pos[36];
-
-/* 805ED798-805ED7A4 0000E0 000C+00 0/1 0/0 0/0 .bss @3939 */
-#pragma push
-#pragma force_active on
-static u8 lit_3939[12];
-#pragma pop
-
-/* 805ED7A4-805ED7B0 0000EC 000C+00 0/1 0/0 0/0 .bss @3940 */
-#pragma push
-#pragma force_active on
-static u8 lit_3940[12];
-#pragma pop
-
-/* 805ED7B0-805ED7BC 0000F8 000C+00 0/1 0/0 0/0 .bss @3941 */
-#pragma push
-#pragma force_active on
-static u8 lit_3941[12];
-#pragma pop
-
-/* 805ED7BC-805ED7E0 000104 0024+00 1/7 0/0 0/0 .bss in_pos */
-static u8 in_pos[36];
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ cXyz sp58(*s_LinkPos);
+ cXyz sp4C(0.0f, 0.0f, -300.0f);
+ cXyz sp40;
+ cXyz sp34;
+
+ s16 sp8 = s_TargetAngle - shape_angle.y;
+
+ switch (mMode) {
+ case 0:
+ sp58.set(-400.0f, 100.0f, -250.0f);
+ cLib_offsetPos(&current.pos, s_LinkPos, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ old.pos = current.pos;
+
+ sp34.set(100.0f, 200.0f, 0.0f);
+ sp58.set(0.0f, 0.0f, 0.0f);
+ cLib_offsetPos(&sp58, s_LinkPos, cLib_targetAngleY(s_LinkPos, &sp4C), &sp34);
+ field_0x5ba = cLib_targetAngleY(&current.pos, &sp58);
+ current.angle.y = field_0x5ba;
+ shape_angle.y = current.angle.y;
+
+ SetAnm(5, 2, 5.0f, 1.0f);
+
+ field_0x5bc = 100.0f + yREG_F(9);
+ speedF = field_0x5bc;
+ field_0x5c0 = (sp58.y - current.pos.y) / (current.pos.absXZ(sp58) / speedF);
+ speed.y = field_0x5c0;
+ mMode = 10;
+ break;
+ case 1:
+ sp58.set(600.0f, 100.0f, -150.0f);
+ cLib_offsetPos(&current.pos, s_LinkPos, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ old.pos = current.pos;
+
+ sp34.set(-300.0f, 200.0f, -500.0f + MREG_F(2));
+ sp58.set(0.0f, 0.0f, 0.0f);
+ cLib_offsetPos(&sp58, s_LinkPos, cLib_targetAngleY(s_LinkPos, &sp4C), &sp34);
+ field_0x5ba = cLib_targetAngleY(&current.pos, &sp58);
+ current.angle.y = field_0x5ba;
+ shape_angle.y = current.angle.y;
+
+ SetAnm(5, 2, 5.0f, 1.0f);
+
+ field_0x5bc = 100.0f + yREG_F(9);
+ speedF = field_0x5bc;
+ field_0x5c0 = (sp58.y - current.pos.y) / (current.pos.absXZ(sp58) / speedF);
+ speed.y = field_0x5c0;
+ mMode = 10;
+ break;
+ case 2:
+ if (mAnm != 0xE) {
+ sp58.set(0.0f, 1000.0f + TREG_F(0), 500.0f);
+ cLib_offsetPos(&current.pos, s_LinkPos, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ old.pos = current.pos;
+
+ SetAnm(14, 2, 5.0f, 1.0f);
+ field_0x5c0 = -5.0f;
+
+ sp58.set(0.0f, 50.0f, -250.0f);
+ cLib_offsetPos(&field_0x618, s_LinkPos, cLib_targetAngleY(s_LinkPos, &sp4C), &sp58);
+ player->changeDemoMode(0x17, 1, 0, 0);
+ } else if (mAnm == 0xE && (current.pos.y - s_LinkPos->y) < 300.0f) {
+ speed.y = 0.0f;
+ field_0x5c0 = 0.0f;
+ mTimers[0] = 0;
+ mMode++;
+ }
+
+ field_0x6be = s_TargetAngle - shape_angle.y;
+ shape_angle.y = s_TargetAngle;
+ break;
+ case 3:
+ if (mTimers[0] == 0) {
+ mMode++;
+ mTimers[0] = 130;
+ }
+
+ shape_angle.y = s_TargetAngle;
+ break;
+ case 4:
+ if (mTimers[0] == 110) {
+ mCamMode = 7;
+ sp58 = current.pos;
+ sp58.y += 300.0f + BREG_F(16);
+ SetStopCam(sp58, 250.0f + BREG_F(17), -200.0f, (cLib_targetAngleY(&current.pos, s_LinkPos) + 0x1000));
+ }
+
+ if (mAnm != 0xD && mTimers[0] == 0) {
+ SetAnm(13, 0, 5.0f, 1.0f);
+ mCamMode = 7;
+ } else if (mAnm == 0xD && mpModelMorf->checkFrame(33.0f)) {
+ dComIfGp_getVibration().StartQuake(6, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
+ } else if (mAnm == 0xD && mpModelMorf->isStop()) {
+ mMode++;
+ SetAnm(14, 2, 5.0f, 1.0f);
+ mTimers[1] = 200;
+ mCamMode = 8;
+ dComIfGp_getVibration().StopQuake(0x1F);
+ player->changeDemoMode(0x17, 1, 2, 0);
+ }
+
+ shape_angle.y = s_TargetAngle;
+ break;
+ case 5:
+ if (mTimers[1] == 0) {
+ if (field_0x5ce != 0xFF && !dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ cDmr_SkipInfo = 1;
+ SetReleaseCam();
+
+ mAction = ACTION_FLY;
+ mSubAction = SUBACT_WAIT;
+ mMode = 1;
+ mCamMode = 0;
+
+ Z2GetAudioMgr()->subBgmStart(Z2BGM_GG_MBOSS);
+ dComIfGs_onSwitch(226, fopAcM_GetRoomNo(this));
+ }
+
+ shape_angle.y = s_TargetAngle;
+ break;
+ }
+
+ if (mMode > 1 && mMode != 10) {
+ sp40 = *s_LinkPos - current.pos;
+ cLib_addCalcAngleS2(&field_0x6c4, -cM_atan2s(sp40.y, JMAFastSqrt((sp40.x * sp40.x) + (sp40.z * sp40.z))), 2, 0x600);
+ cLib_addCalcAngleS2(&field_0x6be, sp8, 2, 0x100);
+ } else {
+ field_0x6be = 0;
+ field_0x6c4 = 0;
+ }
+}
/* 805E18E8-805E1C28 0035C8 0340+00 1/1 0/0 0/0 .text Md_CamAction__8daB_GG_cFv */
void daB_GG_c::Md_CamAction() {
- // NONMATCHING
+ cXyz sp2C;
+ cXyz sp20;
+
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ int sp10 = 0;
+ int spC = 0;
+
+ switch (mCamMode) {
+ case 0:
+ if (CameraSet()) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_DEMO_MID, -1);
+ mInOutPosIdx = 0;
+
+ sp2C.set(217.0f, 0.0f, -57.0f);
+ current.pos = sp2C;
+ old.pos = current.pos;
+ shape_angle.y = cLib_targetAngleY(&current.pos, &in_pos[mInOutPosIdx]);
+ current.angle.y = shape_angle.y;
+
+ sp20 = current.pos;
+ sp20.y += 150.0f + BREG_F(13);
+ SetStopCam(sp20, 300.0f, 0.0f, shape_angle.y);
+ mCamMode++;
+
+ sp20.set(0.0f, mAcch.GetGroundH(), 0.0f);
+ sp2C.set(0.0f, 0.0f, -300.0f);
+ cLib_offsetPos(&sp20, &mCamEye, cLib_targetAngleY(&mCamEye, &current.pos), &sp2C);
+ player->setPlayerPosAndAngle(&sp20, shape_angle.y, 0);
+
+ field_0x658 = shape_angle.y;
+ field_0x648 = 300.0f;
+ if (field_0x5ce != 0xFF && dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ field_0x5b0 = 0;
+ }
+ break;
+ case 1:
+ sp20.set(217.0f, 0.0f, -57.0f);
+ sp20.y += 150.0f + BREG_F(13);
+
+ field_0x60c = current.pos;
+ field_0x60c.y += 150.0f + BREG_F(18);
+ field_0x658 += 80;
+ field_0x648 += 3.0f;
+
+ sp2C.set(0.0f, 0.0f, field_0x648);
+ cLib_offsetPos(&field_0x618, &sp20, field_0x658, &sp2C);
+
+ SetMoveCam1(0.4f, 50.0f);
+
+ sp20 = current.pos;
+ sp20.set(0.0f, s_LinkPos->y, 0.0f);
+ sp2C.set(0.0f, 0.0f, -300.0f);
+ cLib_offsetPos(&sp20, &mCamEye, cLib_targetAngleY(&mCamEye, &current.pos), &sp2C);
+
+ player->setPlayerPosAndAngle(&sp20, shape_angle.y, 0);
+ break;
+ }
}
-/* ############################################################################################## */
-/* 805ED294-805ED298 000234 0004+00 0/3 0/0 0/0 .rodata @5506 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5506 = 18.0f;
-COMPILER_STRIP_GATE(0x805ED294, &lit_5506);
-#pragma pop
-
-/* 805ED298-805ED29C 000238 0004+00 1/2 0/0 0/0 .rodata @5507 */
-SECTION_RODATA static f32 const lit_5507 = 90.0f;
-COMPILER_STRIP_GATE(0x805ED298, &lit_5507);
-
-/* 805ED29C-805ED2A0 00023C 0004+00 0/3 0/0 0/0 .rodata @5508 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5508 = -21.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED29C, &lit_5508);
-#pragma pop
-
/* 805E1C28-805E23E8 003908 07C0+00 2/2 0/0 0/0 .text Md_DemoAction__8daB_GG_cFv */
void daB_GG_c::Md_DemoAction() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED2A0-805ED2A4 000240 0004+00 0/2 0/0 0/0 .rodata @5639 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5639 = -7853.0f;
-COMPILER_STRIP_GATE(0x805ED2A0, &lit_5639);
-#pragma pop
-
-/* 805ED2A4-805ED2A8 000244 0004+00 0/1 0/0 0/0 .rodata @5640 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5640 = 10535.0f;
-COMPILER_STRIP_GATE(0x805ED2A4, &lit_5640);
-#pragma pop
-
-/* 805ED2A8-805ED2AC 000248 0004+00 0/2 0/0 0/0 .rodata @5641 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5641 = 8619.0f;
-COMPILER_STRIP_GATE(0x805ED2A8, &lit_5641);
-#pragma pop
+ s16 sp10 = 0;
+ u8 var_r29 = 0;
+ s16 i;
+ cXyz sp3C;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ switch (mMode) {
+ case 0:
+ mCcShieldSph.OnTgShield();
+ mCcCyl.OnTgShield();
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+ mCcHookCyl.OffTgSetBit();
+
+ if (mAnm != 0x1B && mpModelMorf->isStop() && mAnm != 0x1D) {
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+
+ SetAnm(29, 2, 5.0f, 1.0f);
+
+ if (field_0x5b0 == 0) {
+ mTimers[0] = 50;
+ field_0x5b0 = 1;
+ } else {
+ mTimers[0] = 0;
+ }
+ } else if (mpModelMorf->checkFrame(18.0f) && mAnm == 0x1B) {
+ speed.y = 90.0f;
+ field_0x5c0 = 0.0f;
+ gravity = -4.2f;
+ var_r29 = 1;
+ } else if (mpModelMorf->isStop() && mAnm == 0x1B) {
+ mMode++;
+ gravity = 0.0f;
+ speed.y = 0.0f;
+
+ if (field_0x5ce != 0xFF && !dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ SetAnm(4, 0, 5.0f, 1.0f);
+ var_r29 = 1;
+ } else if (mpModelMorf->getFrame() > 18.0f && mAnm == 0x1B) {
+ var_r29 = 1;
+ } else if (mAnm == 0x1D && mTimers[0] == 0) {
+ fopAcM_OffStatus(this, 0x200000);
+ fopAcM_OnStatus(this, 0x80000);
+ SetAnm(27, 0, 5.0f, 1.0f);
+
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_TAKE_OFF, -1);
+ SpeedClear();
+
+ s16 spE = cLib_targetAngleY(&current.pos, &in_pos[0]) - shape_angle.y;
+ for (i = 1; i < 3; i++) {
+ s16 spC = cLib_targetAngleY(&current.pos, &in_pos[i]) - shape_angle.y;
+ if (abs(spC) < abs(spE)) {
+ sp10 = i;
+ spE = spC;
+ }
+ }
+
+ mInOutPosIdx = sp10;
+ field_0x5ba = cLib_targetAngleY(&current.pos, &in_pos[mInOutPosIdx]);
+ }
+ break;
+ case 1:
+ if (mAnm == 4 && mpModelMorf->isStop()) {
+ SetAnm(5, 2, 5.0f, 1.0f);
+ field_0x5bc = 100.0f;
+ speedF = field_0x5bc;
+ field_0x5c0 = (out_pos[mInOutPosIdx].y - current.pos.y) / (current.pos.absXZ(out_pos[mInOutPosIdx]) / speedF);
+ speed.y = field_0x5c0;
+ } else if (mAnm == 5) {
+ mSound.startCreatureSoundLevel(Z2SE_EN_GG_ATK_MOVE, 0, -1);
+ if (F_A_TargetMove(in_pos[mInOutPosIdx])) {
+ mMode++;
+ mTimers[0] = 20;
+ attention_info.flags = 0;
+ }
+ }
+
+ var_r29 = 1;
+ break;
+ case 2:
+ mSound.startCreatureSoundLevel(Z2SE_EN_GG_ATK_MOVE, 0, -1);
+
+ if (mAnm == 5) {
+ if (F_A_TargetMove(out_pos[mInOutPosIdx], 1) || (!GetAction(2, 0, 0) && mTimers[0] == 0)) {
+ SetAction(ACTION_F_A, SUBACT_MOVE, 0);
+ mTimers[0] = 50;
+
+ if (field_0x5b6 == 0) {
+ fopAcM_SetSpeed(player, 0.0f, 0.0f, 0.0f);
+ attention_info.flags = 0;
+ SetReleaseCam();
+
+ sp3C.set(217.0f, 0.0f, -57.0f);
+ player->setPlayerPosAndAngle(&sp3C, shape_angle.y, 0);
+
+ if (field_0x5ce != 0xFF && dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ field_0x5b6 = 1;
+ current.pos.y += 10000.0f;
+ old.pos.y = current.pos.y;
+ mTimers[0] = 40;
+ field_0x648 = s_LinkPos->y;
+ }
+ }
+ }
+
+ var_r29 = 1;
+ break;
+ }
+
+ if (var_r29 == 1) {
+ cLib_addCalcAngleS(&current.angle.y, field_0x5ba, 5, 0x1000, 0);
+ cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 2, 0x1000, 0);
+ }
+}
/* 805E23E8-805E2974 0040C8 058C+00 2/1 0/0 0/0 .text Gn_CamAction__8daB_GG_cFv */
void daB_GG_c::Gn_CamAction() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED2AC-805ED2B0 00024C 0004+00 0/0 0/0 0/0 .rodata @5642 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5642 = 4000.0f;
-COMPILER_STRIP_GATE(0x805ED2AC, &lit_5642);
-#pragma pop
-
-/* 805ED2B0-805ED2B4 000250 0004+00 0/0 0/0 0/0 .rodata @5643 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5643 = -4000.0f;
-COMPILER_STRIP_GATE(0x805ED2B0, &lit_5643);
-#pragma pop
-
-/* 805ED2B4-805ED2B8 000254 0004+00 0/0 0/0 0/0 .rodata @5644 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5644 = 6469.0f;
-COMPILER_STRIP_GATE(0x805ED2B4, &lit_5644);
-#pragma pop
-
-/* 805ED2B8-805ED2BC 000258 0004+00 0/0 0/0 0/0 .rodata @5645 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5645 = 6465.0f;
-COMPILER_STRIP_GATE(0x805ED2B8, &lit_5645);
-#pragma pop
-
-/* 805ED2BC-805ED2C0 00025C 0004+00 0/0 0/0 0/0 .rodata @5646 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5646 = 6133.0f;
-COMPILER_STRIP_GATE(0x805ED2BC, &lit_5646);
-#pragma pop
-
-/* 805ED2C0-805ED2C4 000260 0004+00 0/1 0/0 0/0 .rodata @5647 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5647 = -100.0f;
-COMPILER_STRIP_GATE(0x805ED2C0, &lit_5647);
-#pragma pop
-
-/* 805ED2C4-805ED2C8 000264 0004+00 0/0 0/0 0/0 .rodata @5648 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5648 = 1146.0f;
-COMPILER_STRIP_GATE(0x805ED2C4, &lit_5648);
-#pragma pop
-
-/* 805ED2C8-805ED2CC 000268 0004+00 0/0 0/0 0/0 .rodata @5649 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5649 = 4907.0f;
-COMPILER_STRIP_GATE(0x805ED2C8, &lit_5649);
-#pragma pop
-
-/* 805ED2CC-805ED2D0 00026C 0004+00 0/0 0/0 0/0 .rodata @5650 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5650 = 7269.0f;
-COMPILER_STRIP_GATE(0x805ED2CC, &lit_5650);
-#pragma pop
-
-/* 805ED2D0-805ED2D4 000270 0004+00 0/9 0/0 0/0 .rodata @5651 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5651 = 10.0f;
-COMPILER_STRIP_GATE(0x805ED2D0, &lit_5651);
-#pragma pop
-
-/* 805ED2D4-805ED2D8 000274 0004+00 0/1 0/0 0/0 .rodata @5779 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5779 = 170.0f;
-COMPILER_STRIP_GATE(0x805ED2D4, &lit_5779);
-#pragma pop
-
-/* 805ED2D8-805ED2DC 000278 0004+00 0/1 0/0 0/0 .rodata @5780 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5780 = 140.0f;
-COMPILER_STRIP_GATE(0x805ED2D8, &lit_5780);
-#pragma pop
-
-/* 805ED2DC-805ED2E0 00027C 0004+00 0/2 0/0 0/0 .rodata @5781 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5781 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x805ED2DC, &lit_5781);
-#pragma pop
-
-/* 805ED2E0-805ED2E4 000280 0004+00 0/1 0/0 0/0 .rodata @5782 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5782 = 1400.0f;
-COMPILER_STRIP_GATE(0x805ED2E0, &lit_5782);
-#pragma pop
-
-/* 805ED2E4-805ED2E8 000284 0004+00 0/1 0/0 0/0 .rodata @5783 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5783 = 900.0f;
-COMPILER_STRIP_GATE(0x805ED2E4, &lit_5783);
-#pragma pop
-
-/* 805ED2E8-805ED2EC 000288 0004+00 1/5 0/0 0/0 .rodata @5784 */
-SECTION_RODATA static f32 const lit_5784 = 15.0f;
-COMPILER_STRIP_GATE(0x805ED2E8, &lit_5784);
-
-/* 805ED2EC-805ED2F0 00028C 0004+00 0/2 0/0 0/0 .rodata @5785 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5785 = -2.0f;
-COMPILER_STRIP_GATE(0x805ED2EC, &lit_5785);
-#pragma pop
+ cXyz sp24;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ switch (mCamMode) {
+ case 0:
+ if (field_0x5d0 != 0xFF && dComIfGs_isSwitch(field_0x5d0, fopAcM_GetRoomNo(this))) {
+ mCamMode++;
+ current.pos.set(-7853.0f + HREG_F(0), 10535.0f + HREG_F(1), 8619.0f + HREG_F(2));
+ old.pos = current.pos;
+ }
+ break;
+ case 1:
+ if (CameraSet()) {
+ sp24 = current.pos;
+ SetStopCam(sp24, 4000.0f + aREG_F(5), -4000.0f, shape_angle.y);
+
+ mCamMode++;
+ mTimers[0] = 90;
+
+ player->changeOriginalDemo();
+ player->changeDemoMode(4, 1, 0, 0);
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_DEMO_OP_LV9, -1);
+ }
+ break;
+ case 2:
+ if (mTimers[0] == 0) {
+ mMode++;
+ mCamMode++;
+
+ if (daPy_py_c::checkNowWolf()) {
+ sp24.set(6469.0f, s_LinkPos->y, 6465.0f + aREG_F(6));
+ } else {
+ sp24.set(6469.0f, s_LinkPos->y, 6133.0f + aREG_F(6));
+ }
+
+ player->setPlayerPosAndAngle(&sp24, s_TargetAngle + 0x8000, 0);
+ player->changeDemoMode(0x17, 1, 0, 0);
+
+ mTimers[0] = 100;
+ mTimers[2] = 125;
+ }
+
+ if (mTimers[0] < 70) {
+ sp24 = current.pos;
+ sp24.y += 100.0f + aREG_F(12);
+
+ SetMoveCam(sp24, 700.0f + aREG_F(1), -100.0f + aREG_F(2), shape_angle.y, 0.2f + aREG_F(10), 200.0f + aREG_F(10));
+ }
+ break;
+ case 3:
+ if (mTimers[2] == 0) {
+ mCamMode++;
+ mCamCenter = current.pos;
+
+ sp24.set(50.0f + TREG_F(4), 30.0f + TREG_F(5), 150.0f + TREG_F(6));
+ cLib_offsetPos(&mCamEye, s_LinkPos, s_TargetAngle, &sp24);
+ field_0x618 = mCamEye;
+
+ mTimers[0] = 150;
+ current.pos.set(1146.0f, 4907.0f, 7269.0f);
+ old.pos = current.pos;
+ }
+
+ if (mTimers[0] != 0) {
+ field_0x60c = current.pos;
+ }
+
+ SetMoveCam1(0.2f, 100.0f);
+ break;
+ case 4:
+ field_0x60c = current.pos;
+ SetMoveCam1(0.2f, 100.0f);
+ break;
+ case 5:
+ sp24.set(0.0f, 0.0f, 0.0f);
+ MTXCopy(daPy_getLinkPlayerActorClass()->getModelJointMtx(6), *calc_mtx);
+ MtxPosition(&sp24, &sp24);
+ field_0x60c = sp24;
+
+ sp24.set(TREG_F(4), 10.0f + TREG_F(5), 200.0f + TREG_F(6));
+ cLib_offsetPos(&field_0x618, s_LinkPos, fopAcM_GetShapeAngle_p(player)->y + 0x8000, &sp24);
+ SetMoveCam1(0.5f + HREG_F(4), 1000.0f + HREG_F(5));
+
+ if (mTimers[0] == 1) {
+ daPy_getPlayerActorClass()->changeDemoMode(0x17, 1, 2, 0);
+ }
+
+ if (mTimers[1] == 0) {
+ daPy_getPlayerActorClass()->changeDemoMode(0x17, 1, 2, 0);
+ mCamMode++;
+ mMode++;
+ mTimers[0] = 150;
+ }
+ break;
+ case 6:
+ if (mTimers[0] == 0) {
+ SetReleaseCam();
+ mAction = ACTION_FLY;
+ mSubAction = SUBACT_WAIT;
+ mMode = 0;
+ mType = TYPE_HYRULE_CASTLE;
+ }
+
+ field_0x60c = current.pos;
+ SetMoveCam1(0.2f, 5.0f);
+ break;
+ }
+
+ if (mCamMode > 1) {
+ dComIfGp_getEvent().onSkipFade();
+ dComIfGp_getEvent().setSkipProc(this, DemoSkipCallBack, 1);
+ }
+}
/* 805E2974-805E2F44 004654 05D0+00 1/1 0/0 0/0 .text Gn_DemoAction__8daB_GG_cFv */
void daB_GG_c::Gn_DemoAction() {
- // NONMATCHING
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz sp34;
+
+ switch (mMode) {
+ case 0:
+ if (mAnm != 0x20) {
+ SetAnm(32, 2, 5.0f, 1.0f);
+ }
+ break;
+ case 1:
+ if (mAnm != 0x1B) {
+ SetAnm(27, 0, 5.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_GG_V_TAKE_OFF, 0, -1);
+ speed.y = 0.0f;
+ gravity = 0.0f;
+ field_0x5c0 = 0.0f;
+ } else if (mpModelMorf->checkFrame(18.0f)) {
+ speed.y = 170.0f + TREG_F(0);
+ field_0x5c0 = TREG_F(1);
+ gravity = -4.2f + TREG_F(2);
+ } else if (mpModelMorf->isStop()) {
+ gravity = 0.0f;
+ SetAnm(14, 2, 5.0f, 1.0f);
+ mMode++;
+ mTimers[1] = 50;
+ speed.y = 0.0f;
+ field_0x5c0 = 0.0f;
+ }
+ break;
+ case 2:
+ if (mTimers[1] == 0 && mAnm != 4) {
+ SetAnm(4, 0, 5.0f, 1.0f);
+ } else if (mpModelMorf->isStop() && mAnm == 4) {
+ SetAnm(5, 0, 5.0f, 1.0f);
+ field_0x5ba = s_TargetAngle;
+ current.angle.y = s_TargetAngle;
+ field_0x5bc = 140.0f + TREG_F(3);
+ speedF = field_0x5bc;
+ field_0x5c0 = (100.0f + (s_LinkPos->y - current.pos.y)) / ((0.9f * fopAcM_searchPlayerDistanceXZ(this)) / speedF);
+ speed.y = field_0x5c0;
+ mMode++;
+ }
+ break;
+ case 3:
+ mSound.startCreatureSoundLevel(Z2SE_EN_GG_ATK_MOVE, 0, -1);
+ field_0x5c0 = (100.0f + (s_LinkPos->y - current.pos.y)) / ((0.9f * fopAcM_searchPlayerDistanceXZ(this)) / speedF);
+ field_0x5ba = s_TargetAngle;
+
+ if (fopAcM_searchPlayerDistance(this) < (1400.0f + HREG_F(7))) {
+ if (daPy_py_c::checkNowWolf()) {
+ daPy_getPlayerActorClass()->changeDemoMode(0x10, 3, 0, 0);
+ } else {
+ daPy_getPlayerActorClass()->changeDemoMode(0x49, 0, 0, 0);
+ }
+ }
+
+ if (fopAcM_searchPlayerDistance(this) < (900.0f + HREG_F(6))) {
+ SetAnm(6, 0, 5.0f, 1.0f);
+ field_0x5bc *= 0.5f;
+ field_0x648 = current.pos.y;
+ mMode++;
+ mCamMode++;
+
+ mTimers[0] = 20;
+ mTimers[1] = 40;
+ }
+ break;
+ case 4:
+ mSound.startCreatureSoundLevel(Z2SE_EN_GG_ATK_MOVE, 0, -1);
+
+ if (mpModelMorf->checkFrame(15.0f)) {
+ field_0x5c0 = 50.0f;
+ }
+
+ if (mAnm == 6 && mpModelMorf->isStop()) {
+ SetAnm(7, 2, 5.0f, 1.0f);
+ } else if ((current.pos.y - field_0x648) > 600.0f || mAcch.ChkRoofHit()) {
+ SetAnm(14, 2, 5.0f, 1.0f);
+ current.pos.y -= 100.0f + HREG_F(9);
+ old.pos.y = current.pos.y;
+
+ mMode++;
+ field_0x5c0 = -2.0f;
+ field_0x5bc = 0.0f;
+ }
+ break;
+ case 5:
+ break;
+ }
+
+ s16 sp8 = s_TargetAngle - shape_angle.y;
+ cXyz sp28;
+ sp28 = *s_LinkPos - current.pos;
+ cLib_addCalcAngleS2(&field_0x6c4, -cM_atan2s(sp28.y, JMAFastSqrt((sp28.x * sp28.x) + (sp28.z * sp28.z))), 2, 0x600);
+ cLib_addCalcAngleS2(&field_0x6be, sp8, 2, 0x100);
+ field_0x5ba = s_TargetAngle;
+ shape_angle.y = current.angle.y;
}
/* 805E2F44-805E3024 004C24 00E0+00 1/1 0/0 0/0 .text DemoAction__8daB_GG_cFv */
void daB_GG_c::DemoAction() {
- // NONMATCHING
+ switch (mSubAction) {
+ case 0:
+ St_CamAction();
+ St_DemoAction();
+ break;
+ case 1:
+ Md_CamAction();
+ Md_DemoAction();
+ break;
+ case 2:
+ Gn_DemoAction();
+ Gn_CamAction();
+ break;
+ }
+
+ if (mSubAction != 1 || mMode != 0) {
+ cLib_addCalc2(&speed.y, field_0x5c0, 0.2f, 100.0f);
+ }
+
+ cLib_addCalc2(&speedF, field_0x5bc, 0.2f, 100.0f);
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5ba, 0x10, 0x1000);
}
/* 805E3024-805E31E4 004D04 01C0+00 1/1 0/0 0/0 .text F_WaitAction__8daB_GG_cFv */
void daB_GG_c::F_WaitAction() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED2F0-805ED2F4 000290 0004+00 0/3 0/0 0/0 .rodata @5883 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5883 = 1500.0f;
-COMPILER_STRIP_GATE(0x805ED2F0, &lit_5883);
-#pragma pop
-
-/* 805ED2F4-805ED2F8 000294 0004+00 1/6 0/0 0/0 .rodata @5884 */
-SECTION_RODATA static f32 const lit_5884 = 20.0f;
-COMPILER_STRIP_GATE(0x805ED2F4, &lit_5884);
-
-/* 805ED2F8-805ED2FC 000298 0004+00 0/2 0/0 0/0 .rodata @5885 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5885 = 9.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED2F8, &lit_5885);
-#pragma pop
-
-/* 805ED2FC-805ED300 00029C 0004+00 0/1 0/0 0/0 .rodata @5886 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5886 = 7.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED2FC, &lit_5886);
-#pragma pop
+ switch (mMode) {
+ case 0:
+ SetAnm(14, 2, 5.0f, 1.0f);
+ field_0x5bc = 0.0f;
+ field_0x5c0 = 0.0f;
+ mTimers[0] = 50.0f + cM_rndF(50.0f);
+ mMode++;
+
+ mCcShieldSph.OnTgShield();
+ mCcCyl.OnTgShield();
+ mCcHookCyl.OffTgSetBit();
+ break;
+ case 1:
+ if (mTimers[0] == 0 && !dComIfGp_event_runCheck()) {
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+ }
+ break;
+ }
+
+ cXyz sp8 = *s_LinkPos - current.pos;
+ cLib_addCalcAngleS2(&field_0x6c4, -cM_atan2s(sp8.y, JMAFastSqrt((sp8.x * sp8.x) + (sp8.z * sp8.z))), 0x10, 0x600);
+ cLib_addCalcAngleS2(&field_0x6be, (cLib_targetAngleY(&current.pos, s_LinkPos) - shape_angle.y), 0x10, 0x100);
+
+ if (field_0x6be > 0x2000) {
+ field_0x6be = 0x2000;
+ } else if (field_0x6be < -0x2000) {
+ field_0x6be = -0x2000;
+ }
+}
/* 805E31E4-805E3448 004EC4 0264+00 2/2 0/0 0/0 .text F_FookChk__8daB_GG_cFv */
void daB_GG_c::F_FookChk() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED300-805ED304 0002A0 0004+00 1/2 0/0 0/0 .rodata @6106 */
-SECTION_RODATA static f32 const lit_6106 = 5000.0f;
-COMPILER_STRIP_GATE(0x805ED300, &lit_6106);
-
-/* 805ED304-805ED308 0002A4 0004+00 0/1 0/0 0/0 .rodata @6107 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6107 = 1550.0f;
-COMPILER_STRIP_GATE(0x805ED304, &lit_6107);
-#pragma pop
-
-/* 805ED308-805ED30C 0002A8 0004+00 0/3 0/0 0/0 .rodata @6108 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6108 = 8.0f;
-COMPILER_STRIP_GATE(0x805ED308, &lit_6108);
-#pragma pop
-
-/* 805ED30C-805ED310 0002AC 0004+00 0/1 0/0 0/0 .rodata @6109 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6109 = -3.0f;
-COMPILER_STRIP_GATE(0x805ED30C, &lit_6109);
-#pragma pop
-
-/* 805ED310-805ED314 0002B0 0004+00 0/4 0/0 0/0 .rodata @6110 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6110 = 1200.0f;
-COMPILER_STRIP_GATE(0x805ED310, &lit_6110);
-#pragma pop
-
-/* 805ED314-805ED318 0002B4 0004+00 0/2 0/0 0/0 .rodata @6111 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6111 = -1200.0f;
-COMPILER_STRIP_GATE(0x805ED314, &lit_6111);
-#pragma pop
-
-/* 805ED3D4-805ED3D4 000374 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_805ED3D9 = "D_MN07";
-#pragma pop
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz* hookshot_top = player->getHookshotTopPos();
+
+ if (hookshot_top != NULL) {
+ s16 temp_r26 = (s_TargetAngle - fopAcM_GetShapeAngle_p(player)->y) + 0x8000;
+ if (current.pos.abs(*hookshot_top) < 1500.0f && daPy_getPlayerActorClass()->checkHookshotShootReturnMode() && !daPy_getPlayerActorClass()->checkHookshotReturnMode() && temp_r26 < 0x500 && temp_r26 > -0x500) {
+ mMode = 2;
+ mTimers[1] = 30;
+ mTimers[2] = 50;
+
+ field_0x5bc = 20.0f;
+ speedF = 30.0f;
+ mModelPlaySpeed = 1.8f;
+ field_0x644 = 1.4f;
+ field_0x5c0 = 2.0f;
+ speed.y = -30.0f;
+
+ if ((int)cM_rndF(100.0f) > 50) {
+ current.angle.y = s_TargetAngle + 0x4000;
+ field_0x5b7 = 1;
+ } else {
+ current.angle.y = s_TargetAngle - 0x4000;
+ field_0x5b7 = 0;
+ }
+
+ field_0x5ba = current.angle.y;
+ }
+ }
+}
/* 805E3448-805E3CAC 005128 0864+00 1/1 0/0 0/0 .text F_MoveAction__8daB_GG_cFv */
void daB_GG_c::F_MoveAction() {
- // NONMATCHING
+ cXyz sp34;
+ cXyz sp28;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ switch (mMode) {
+ case 0:
+ if (mType == TYPE_L7_MBOSS) {
+ mTimers[0] = 200.0f + cM_rndF(100.0f);
+ } else {
+ mTimers[0] = 200.0f + cM_rndF(200.0f);
+
+ if (s_dis > 5000.0f) {
+ mSound.setLinkSearch(false);
+ } else {
+ mSound.setLinkSearch(true);
+ }
+ }
+
+ mMode++;
+ mCcHookCyl.OffTgSetBit();
+ break;
+ case 1:
+ if (mTimers[1] == 0) {
+ field_0x5bc = 5.0f + cM_rndF(5.0f);
+ mTimers[1] = 40.0f + cM_rndF(40.0f);
+
+ sp34 = *s_LinkPos - current.pos;
+
+ if (mType == TYPE_HYRULE_CASTLE) {
+ sp34.x += cM_rndFX(1550.0f);
+ sp34.z += cM_rndFX(1550.0f);
+ } else {
+ sp34.x += 1500.0f + cM_rndFX(1550.0f);
+ sp34.z += 1500.0f + cM_rndFX(1550.0f);
+ }
+
+ field_0x5ba = cM_atan2s(sp34.x, sp34.z);
+ gravity = 0.0f;
+ }
+
+ if (mTimers[2] == 0) {
+ mTimers[2] = 40.0f + cM_rndF(40.0f);
+
+ field_0x5c0 = cM_rndFX(5.0f);
+ if (current.pos.y < 400.0f + BREG_F(10)) {
+ field_0x5c0 = 8.0f + BREG_F(9);
+ }
+
+ if (strcmp("D_MN07", dComIfGp_getStartStageName()) == 0 && dComIfGp_getStartStageRoomNo() == 15 && s_LinkPos->y > 1500.0f) {
+ if (current.pos.y > 1500.0f) {
+ field_0x5c0 = -3.0f;
+ } else if (current.pos.y < 500.0f) {
+ field_0x5c0 = 3.0f;
+ }
+ } else if (current.pos.y - s_LinkPos->y < 500.0f) {
+ field_0x5c0 = 3.0f;
+ } else if (current.pos.y - s_LinkPos->y > 800.0f) {
+ field_0x5c0 = -3.0f;
+ }
+
+ field_0x644 = 1.0f + (field_0x5c0 / 60.0f);
+ }
+
+ if (s_LinkPos->absXZ(current.pos) < 1000.0f + BREG_F(6)) {
+ field_0x5bc = 10.0f;
+
+ if (field_0x5b7 != 0) {
+ field_0x5ba = s_TargetAngle - 0x5000;
+ } else {
+ field_0x5ba = s_TargetAngle + 0x5000;
+ }
+
+ mTimers[1] = 20;
+ } else if (s_LinkPos->absXZ(current.pos) < 500.0f) {
+ field_0x5bc = 10.0f;
+
+ if (field_0x5b7 != 0) {
+ field_0x5ba = s_TargetAngle - 0x7000;
+ } else {
+ field_0x5ba = s_TargetAngle + 0x7000;
+ }
+
+ mTimers[1] = 20;
+
+ if (mAcch.ChkWallHit()) {
+ if (field_0x5b7 != 0) {
+ field_0x5ba = s_TargetAngle - 0x3000;
+ } else {
+ field_0x5ba = s_TargetAngle + 0x3000;
+ }
+ }
+ }
+
+ F_FookChk();
+
+ if ((strcmp("D_MN07", dComIfGp_getStartStageName()) != 0 || dComIfGp_getStartStageRoomNo() != 15 || !(s_LinkPos->y > 1500.0f)) && mTimers[0] == 0 && (mType != TYPE_HYRULE_CASTLE || !other_bg_check(this, player))) {
+ if (mType == TYPE_L7_M && s_W_Action == 2) {
+ mTimers[0] = 100;
+ } else if (!dComIfGp_event_runCheck()) {
+ SetAction(ACTION_FLY, SUBACT_ATTACK, 10);
+ } else {
+ mTimers[0] = 200;
+ }
+ }
+ break;
+ case 2:
+ if (field_0x5b7 != 0) {
+ s_TargetAngle -= 0x1500;
+ } else {
+ s_TargetAngle += 0x1500;
+ }
+
+ if (mTimers[1] == 0) {
+ field_0x644 = 1.0f;
+ }
+
+ if (mTimers[2] == 0) {
+ mMode = 1;
+ }
+
+ cLib_addCalcAngleS2(&field_0x6be, 0, 1, 0x100);
+ break;
+ }
+
+ sp34 = *s_LinkPos - current.pos;
+ cLib_addCalcAngleS2(&field_0x6c4, -cM_atan2s(sp34.y, JMAFastSqrt((sp34.x * sp34.x) + (sp34.z * sp34.z))), 0x10, 0x600);
+ s16 sp8 = cLib_targetAngleY(&current.pos, s_LinkPos) - shape_angle.y;
+ cLib_addCalcAngleS2(&field_0x6be, sp8, 0x10, 0x100);
+
+ if (field_0x6be > 0x2000) {
+ field_0x6be = 0x2000;
+ } else if (field_0x6be < -0x2000) {
+ field_0x6be = -0x2000;
+ }
+
+ if (mType == TYPE_L7_MBOSS) {
+ if (current.pos.x > 1200.0f) {
+ current.pos.x = 1200.0f;
+ } else if (current.pos.x < -1200.0f) {
+ current.pos.x = -1200.0f;
+ } else if (current.pos.z < -1200.0f) {
+ current.pos.z = -1200.0f;
+ } else if (current.pos.z > 1200.0f) {
+ current.pos.z = 1200.0f;
+ }
+ }
}
-/* ############################################################################################## */
-/* 805ED318-805ED31C 0002B8 0004+00 0/1 0/0 0/0 .rodata @6174 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6174 = 2350.0f;
-COMPILER_STRIP_GATE(0x805ED318, &lit_6174);
-#pragma pop
-
/* 805E3CAC-805E3F0C 00598C 0260+00 1/1 0/0 0/0 .text F_LV7_W_MoveAction__8daB_GG_cFv */
void daB_GG_c::F_LV7_W_MoveAction() {
- // NONMATCHING
+ cXyz sp20;
+ cXyz sp14;
+ daPy_getPlayerActorClass();
+
+ switch (mMode) {
+ case 0:
+ mTimers[0] = 200.0f + cM_rndF(200.0f);
+ mMode++;
+ field_0x644 = 1.0f;
+ mCcHookCyl.OffTgSetBit();
+ break;
+ case 1:
+ F_FookChk();
+
+ if ((strcmp("D_MN07", dComIfGp_getStartStageName()) != 0 || dComIfGp_getStartStageRoomNo() != 15 || !(s_LinkPos->y > 2350.0f)) && mTimers[0] == 0) {
+ if (s_M_Action != 2) {
+ if (!dComIfGp_event_runCheck()) {
+ SetAction(ACTION_FLY, SUBACT_ATTACK, 10);
+ } else {
+ mTimers[0] = 200;
+ }
+ } else {
+ mTimers[0] = 100;
+ }
+ }
+ break;
+ case 2:
+ if (field_0x5b7 != 0) {
+ s_TargetAngle -= 0x1500;
+ } else {
+ s_TargetAngle += 0x1500;
+ }
+
+ if (mTimers[1] == 0) {
+ field_0x5bc = 0.0f;
+ mMode = 1;
+ }
+
+ cLib_addCalcAngleS2(&field_0x6be, 0, 1, 0x100);
+ break;
+ }
+
+ sp20 = *s_LinkPos - current.pos;
+ cLib_addCalcAngleS2(&field_0x6c4, -cM_atan2s(sp20.y, JMAFastSqrt((sp20.x * sp20.x) + (sp20.z * sp20.z))), 0x10, 0x600);
+ cLib_addCalcAngleS2(&field_0x6be, (cLib_targetAngleY(&current.pos, s_LinkPos) - shape_angle.y), 0x10, 0x100);
+
+ if (field_0x6be > 0x2000) {
+ field_0x6be = 0x2000;
+ } else if (field_0x6be < -0x2000) {
+ field_0x6be = -0x2000;
+ }
}
-/* ############################################################################################## */
-/* 805ED31C-805ED320 0002BC 0004+00 0/4 0/0 0/0 .rodata @6430 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6430 = 70.0f;
-COMPILER_STRIP_GATE(0x805ED31C, &lit_6430);
-#pragma pop
-
/* 805E3F0C-805E4914 005BEC 0A08+00 1/1 0/0 0/0 .text F_AttackAction__8daB_GG_cFv */
void daB_GG_c::F_AttackAction() {
- // NONMATCHING
+ switch (mMode) {
+ case 0:
+ if (mAnm != 4) {
+ for (s16 i = 0; i < 3; i++) {
+ mCcSph[i].OnAtSetBit();
+ }
+
+ SetAnm(4, 0, 5.0f, 1.0f);
+ field_0x5ba = s_TargetAngle + 0x8000;
+ field_0x5c0 = 10.0f;
+
+ if (field_0x5b6 != 0) {
+ field_0x5ba = s_TargetAngle;
+ }
+ } else if (mAnm == 4 && mpModelMorf->isStop()) {
+ mMode++;
+ SetAnm(5, 2, 5.0f, 1.0f);
+ field_0x5ba = s_TargetAngle;
+ current.angle.y = s_TargetAngle;
+
+ f32 var_f31 = fopAcM_searchPlayerDistanceXZ(this);
+ if (var_f31 < 40.0f) {
+ var_f31 = 40.0f;
+ }
+ field_0x5bc = 60.0f * (var_f31 / 1000.0f);
+
+ speedF = field_0x5bc;
+ field_0x5c0 = (100.0f + (s_LinkPos->y - current.pos.y)) / ((0.9f * var_f31) / speedF);
+ speed.y = field_0x5c0;
+ fopAcM_OffStatus(this, 0x80000);
+ }
+ break;
+ case 1: {
+ mSound.startCreatureSoundLevel(Z2SE_EN_GG_ATK_MOVE, 0, -1);
+
+ f32 var_f31 = fopAcM_searchPlayerDistanceXZ(this);
+ if (var_f31 < 40.0f) {
+ var_f31 = 40.0f;
+ }
+
+ field_0x5c0 = (100.0f + (s_LinkPos->y - current.pos.y)) / ((0.9f * var_f31) / speedF);
+ field_0x5ba = cLib_targetAngleY(&current.pos, s_LinkPos);
+
+ if (fopAcM_searchPlayerDistance(this) < 600.0f || mAcch.ChkGroundHit() || mAcch.ChkWallHit()) {
+ SetAnm(6, 0, 5.0f, 1.0f);
+ mMode++;
+ field_0x5bc *= 0.5f;
+ field_0x648 = current.pos.y;
+ }
+
+ speedF = l_HIO.fly_attack_speed * field_0x5bc;
+ speed.y = l_HIO.fly_attack_speed * field_0x5c0;
+ break;
+ }
+ case 2:
+ mSound.startCreatureSoundLevel(Z2SE_EN_GG_ATK_MOVE, 0, -1);
+
+ if (mpModelMorf->checkFrame(15.0f)) {
+ field_0x5c0 = 60.0f;
+ }
+
+ if (mAnm == 6 && mpModelMorf->isStop()) {
+ SetAnm(7, 2, 5.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OffAtSetBit();
+ }
+ } else if (current.pos.y - field_0x648 > 500.0f || (field_0x650 == current.pos.y - field_0x648 && mAnm == 7)) {
+ mCcHookCyl.OnTgSetBit();
+ fopAcM_OnStatus(this, 0x80000);
+
+ if (field_0x5b6 != 0) {
+ SetAnm(5, 2, 5.0f, 1.0f);
+ SetAction(ACTION_F_A, SUBACT_MOVE, 2);
+ field_0x5bc = 70.0f;
+
+ s16 i;
+ s16 sp8 = 0;
+ for (i = 0; i < 3; i++) {
+ if (in_pos[sp8].absXZ(current.pos) > in_pos[i].absXZ(current.pos)) {
+ sp8 = i;
+ }
+ }
+
+ mInOutPosIdx = sp8;
+ field_0x5ba = cLib_targetAngleY(&current.pos, &in_pos[mInOutPosIdx]);
+
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+ mCcHookCyl.OffTgSetBit();
+ } else {
+ SetAnm(14, 2, 5.0f, 1.0f);
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+
+ field_0x5c0 = 0.0f;
+ field_0x5bc = 0.0f;
+
+ mCcShieldSph.OnTgShield();
+ mCcCyl.OnTgShield();
+ }
+ }
+
+ if (mAnm == 7 || mpModelMorf->getFrame() > 15.0f) {
+ field_0x5ba = current.angle.y;
+ s_TargetAngle = field_0x5ba;
+ }
+
+ field_0x650 = current.pos.y - field_0x648;
+ break;
+ case 10:
+ if (mAnm != 0xB) {
+ mCcHookCyl.OnTgSetBit();
+ SetAnm(11, 2, 5.0f, 1.0f);
+
+ fopAcM_OffStatus(this, 0x200000);
+ fopAcM_OnStatus(this, 0x80000);
+
+ if (field_0x6ba != 0) {
+ mTimers[0] = l_HIO.fly_attack_wait_time * 0.5f;
+ } else {
+ mTimers[0] = l_HIO.fly_attack_wait_time;
+ }
+
+ field_0x5bc = 0.0f;
+ field_0x5c0 = 0.0f;
+
+ for (int i = 0; i < 3; i++) {
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(4);
+ } else {
+ mCcSph[i].SetAtAtp(2);
+ }
+
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 7);
+ }
+ } else if (mAnm == 0xB) {
+ field_0x6ba = 0;
+
+ if (mTimers[0] == 0) {
+ mMode = 0;
+ }
+
+ if (strcmp("D_MN07", dComIfGp_getStartStageName()) == 0 && dComIfGp_getStartStageRoomNo() == 15 && s_LinkPos->y > 1500.0f) {
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+ SetAnm(14, 2, 5.0f, 1.0f);
+ }
+ }
+ break;
+ }
+
+ cLib_addCalc2(&speedF, field_0x5bc, 0.8f, 1000.0f);
+ cLib_addCalc2(&speed.y, field_0x5c0, 0.8f, 1000.0f);
+ cLib_addCalcAngleS2(&field_0x6c4, 0, 0x10, 0x600);
+ cLib_addCalcAngleS2(&field_0x6be, 0, 0x10, 0x1000);
+
+ F_AtHit();
+
+ if (mType == TYPE_L7_MBOSS) {
+ if (current.pos.x > 1200.0f) {
+ current.pos.x = 1200.0f;
+ } else if (current.pos.x < -1200.0f) {
+ current.pos.x = -1200.0f;
+ } else if (current.pos.z < -1200.0f) {
+ current.pos.z = -1200.0f;
+ } else if (current.pos.z > 1200.0f) {
+ current.pos.z = 1200.0f;
+ }
+ }
}
/* 805E4914-805E5190 0065F4 087C+00 2/1 0/0 0/0 .text F_DamageAction__8daB_GG_cFv */
void daB_GG_c::F_DamageAction() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED320-805ED324 0002C0 0004+00 0/0 0/0 0/0 .rodata @6626 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6626 = -40.0f;
-COMPILER_STRIP_GATE(0x805ED320, &lit_6626);
-#pragma pop
-
-/* 805ED324-805ED328 0002C4 0004+00 0/2 0/0 0/0 .rodata @6627 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6627 = -9.0f;
-COMPILER_STRIP_GATE(0x805ED324, &lit_6627);
-#pragma pop
-
-/* 805ED328-805ED32C 0002C8 0004+00 0/1 0/0 0/0 .rodata @6628 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6628 = 13.0f;
-COMPILER_STRIP_GATE(0x805ED328, &lit_6628);
-#pragma pop
-
-/* 805ED32C-805ED330 0002CC 0004+00 1/3 0/0 0/0 .rodata @6653 */
-SECTION_RODATA static f32 const lit_6653 = 3000.0f;
-COMPILER_STRIP_GATE(0x805ED32C, &lit_6653);
+ cXyz sp30;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ switch (mMode) {
+ case 0:
+ mCcHookCyl.OnTgSetBit();
+ SetAnm(10, 0, 1.0f, 1.0f);
+ field_0x5c0 = 0.0f;
+ field_0x5bc = 0.0f;
+ mMode += 2;
+ break;
+ case 1:
+ SetAnm(10, 0, 1.0f, 1.0f);
+ current.angle.y = s_TargetAngle + 0x8000;
+ field_0x5bc = 40.0f;
+ field_0x5c0 = -40.0f;
+ mMode++;
+ break;
+ case 2:
+ if (mpModelMorf->isStop()) {
+ SetAction(ACTION_FLY, SUBACT_ATTACK, 10);
+ mCcShieldSph.OnTgShield();
+ mCcCyl.OnTgShield();
+ field_0x6ba = 1;
+ }
+ break;
+ case 10:
+ if (mAnm == 18 || mAnm == 9) {
+ mAction = ACTION_GROUND;
+ mSubAction = SUBACT_DAMAGE;
+ mMode = 10;
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+
+ if (field_0x5b6 != 0) {
+ mTimers[2] = 0.8f * l_HIO.takeoff2_time;
+ } else {
+ mTimers[2] = 0.8f * l_HIO.takeoff_time;
+ }
+
+ if (field_0x5ce != 0xFF && dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_offSwitch(142, fopAcM_GetRoomNo(this));
+ }
+ } else if (mAnm != 8 && mAnm != 12) {
+ SetAnm(8, 0, 5.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_PULL, -1);
+ gravity = -9.0f;
+ dComIfGs_onZoneSwitch(31, fopAcM_GetRoomNo(this));
+ } else if (mAnm == 8 && mpModelMorf->isStop()) {
+ SetAnm(12, 2, 5.0f, 1.0f);
+ SpeedClear();
+ mTimers[0] = 1;
+ }
+
+ if (mTimers[0] == 1 && mAnm == 0xC) {
+ mMode++;
+ fopAcM_cancelHookCarryNow(this);
+ fopAcM_OffStatus(this, 0x80000);
+ fopAcM_OnStatus(this, 0x200000);
+ mTimers[0] = 5;
+ }
+ break;
+ case 11:
+ if (!daPy_getPlayerActorClass()->checkHookshotReturnMode()) {
+ gravity = -9.0f;
+ SetAnm(9, 0, 5.0f, 1.0f);
+ speed.y = 0.0f;
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+ mMode++;
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0);
+ mCcSph[i].OffAtSetBit();
+ }
+
+ field_0x5cc = 0;
+ field_0x648 = s_LinkPos->y - 50.0f;
+
+ mCcCyl.OffTgShield();
+ mCcShieldSph.OffTgSetBit();
+ mCcShieldSph.OffTgShield();
+
+ s_M_Action = 0;
+ s_W_Action = 0;
+
+ fopAcM_OffStatus(this, 0x80000);
+ fopAcM_OnStatus(this, 0x200000);
+ } else {
+ cXyz* hookshot_top = player->getHookshotTopPos();
+ cXyz sp24(0.0f, 0.0f, 0.0f);
+ cXyz sp18;
+
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mDoMtx_stack_c::multVec(&sp24, &sp24);
+ sp24 = *hookshot_top;
+ sp24.y -= 100.0f + BREG_F(7);
+ cLib_chasePos(&current.pos, sp24, 120.0f);
+
+ if (mAcch.ChkWallHit() && mTimers[0] == 0) {
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+ fopAcM_OffStatus(this, 0x200000);
+ fopAcM_OnStatus(this, 0x80000);
+
+ SetAnm(14, 2, 5.0f + BREG_F(12), 1.0f);
+
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+ mCcShieldSph.OnTgSetBit();
+
+ speed.y = 0.0f;
+ field_0x644 = 1.2f;
+ gravity = 0.0f;
+ }
+ }
+
+ cLib_chaseAngleS(&field_0x6c4, 0, 0x2000);
+ break;
+ case 12:
+ cLib_chaseAngleS(&field_0x6c4, 0, 0x2000);
+
+ if (mpModelMorf->isStop() && mAcch.ChkGroundHit()) {
+ field_0x648 = current.pos.y;
+ gravity = -9.0f;
+ mMode++;
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+
+ if (field_0x5b6 != 0) {
+ mTimers[2] = 0.8f * l_HIO.takeoff2_time;
+ } else {
+ mTimers[2] = 0.8f * l_HIO.takeoff_time;
+ }
+
+ if (field_0x5ce != 0xFF && dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_offSwitch(142, fopAcM_GetRoomNo(this));
+ }
+ } else if (current.pos.y < (field_0x648 - 50.0f)) {
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+ fopAcM_OffStatus(this, 0x200000);
+ fopAcM_OnStatus(this, 0x80000);
+
+ SetAnm(14, 2, 5.0f + BREG_F(12), 1.0f);
+
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+ mCcShieldSph.OnTgSetBit();
+
+ speed.y = 0.0f;
+ field_0x5c0 = 10.0f + BREG_F(11);
+ field_0x644 = 1.2f;
+ gravity = 0.0f;
+ }
+ break;
+ case 13:
+ if (mAnm != 0x12) {
+ SetAnm(18, 0, 5.0f, 1.0f);
+ field_0x5ba = s_TargetAngle + 0x8000;
+ current.angle.y = field_0x5ba;
+ } else if (mAnm == 0x12 && mpModelMorf->checkFrame(5.0f)) {
+ field_0x5bc = 50.0f;
+ speedF = 50.0f;
+ speed.y = 30.0f;
+ } else if (mAnm == 0x12 && mpModelMorf->checkFrame(13.0f)) {
+ speedF = 0.0f;
+ speed.y = 0.0f;
+ field_0x5bc = 0.0f;
+
+ mSound.startCreatureSound(Z2SE_EN_GG_FOOTNOTE, 0, -1);
+
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 0);
+ }
+ break;
+ }
+}
/* 805E5190-805E5220 006E70 0090+00 1/1 0/0 0/0 .text AttentionChk__8daB_GG_cFv */
void daB_GG_c::AttentionChk() {
- // NONMATCHING
+ daPy_getPlayerActorClass();
+
+ if (s_dis < 3000.0f) {
+ attention_info.flags = 4;
+ if (field_0x5b0 != 0 && mSubAction == SUBACT_ATTACK) {
+ s16 temp_r0 = fopAcM_toPlayerShapeAngleY(this) + 0x8000;
+ if (temp_r0 < 0x3000 && temp_r0 > -0x3000) {
+ attention_info.flags = 4;
+ } else {
+ attention_info.flags = 0;
+ }
+ }
+ } else {
+ attention_info.flags = 0;
+ }
}
/* 805E5220-805E53DC 006F00 01BC+00 1/1 0/0 0/0 .text FlyAction__8daB_GG_cFv */
void daB_GG_c::FlyAction() {
- // NONMATCHING
+ s16 var_r29 = 0x1000;
+
+ switch (mSubAction) {
+ case SUBACT_WAIT:
+ F_WaitAction();
+ break;
+ case SUBACT_MOVE:
+ if (mType == TYPE_L7_MBOSS) {
+ F_MoveAction();
+ } else if (mType == TYPE_L7_W) {
+ F_LV7_W_MoveAction();
+ s_W_Action = mSubAction;
+ } else if (mType == TYPE_L7_M) {
+ F_MoveAction();
+ s_M_Action = mSubAction;
+ } else if (mType == TYPE_HYRULE_CASTLE) {
+ F_MoveAction();
+ }
+
+ cLib_addCalc2(&mModelPlaySpeed, field_0x644, 0.2f, 10.0f);
+ mpModelMorf->setPlaySpeed(mModelPlaySpeed);
+ break;
+ case SUBACT_ATTACK:
+ F_AttackAction();
+ if (mType == TYPE_L7_W || mType == TYPE_L7_M) {
+ var_r29 = 0x500;
+ }
+ break;
+ case SUBACT_DAMAGE:
+ F_DamageAction();
+ break;
+ }
+
+ AttentionChk();
+
+ if (daPy_getPlayerActorClass()->checkWolfLock(this)) {
+ daPy_getPlayerActorClass()->cancelWolfLock(this);
+ }
+
+ cLib_addCalc2(&speed.y, field_0x5c0, 0.2f, 100.0f);
+ cLib_addCalc2(&speedF, field_0x5bc, 0.2f, 100.0f);
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5ba, 0x10, var_r29);
+ cLib_addCalcAngleS2(&shape_angle.y, s_TargetAngle, 0x10, 0x1000);
+
+ if (mSubAction != SUBACT_DAMAGE) {
+ roofchk(this);
+ }
}
/* 805E53DC-805E561C 0070BC 0240+00 2/2 0/0 0/0 .text F_A_TargetMove__8daB_GG_cF4cXyzUc
*/
-void daB_GG_c::F_A_TargetMove(cXyz param_0, u8 param_1) {
- // NONMATCHING
+bool daB_GG_c::F_A_TargetMove(cXyz param_0, u8 param_1) {
+ field_0x5ba = cLib_targetAngleY(&current.pos, &param_0);
+ field_0x5c0 = (param_0.y - current.pos.y) / (current.pos.absXZ(param_0) / speedF);
+ speedF = field_0x5bc;
+ speed.y = field_0x5c0;
+
+ if (param_1 != 0) {
+ Mtx inv;
+ mDoMtx_inverse(mpModelMorf->getModel()->getBaseTRMtx(), inv);
+ mDoMtx_stack_c::copy(inv);
+ mDoMtx_stack_c::multVec(&param_0, &param_0);
+
+ if (param_0.z < 0.0f) {
+ return true;
+ }
+ } else {
+ s16 temp_r28 = cLib_targetAngleY(&param_0, &out_pos[mInOutPosIdx]);
+ s16 temp_r3 = cLib_targetAngleY(&param_0, &current.pos);
+ if ((temp_r28 - temp_r3) < 0x4000 && (temp_r28 - temp_r3) > -0x4000) {
+ return true;
+ }
+ }
+
+ return false;
}
/* 805E561C-805E5808 0072FC 01EC+00 2/2 0/0 0/0 .text F_A_TargetMove__8daB_GG_cF4cXyz */
-void daB_GG_c::F_A_TargetMove(cXyz param_0) {
- // NONMATCHING
-}
+bool daB_GG_c::F_A_TargetMove(cXyz param_0) {
+ field_0x5ba = cLib_targetAngleY(&current.pos, &param_0);
+ field_0x5c0 = (param_0.y - current.pos.y) / (current.pos.absXZ(param_0) / speedF);
+ speedF = field_0x5bc;
+ speed.y = field_0x5c0;
-/* ############################################################################################## */
-/* 805ED330-805ED334 0002D0 0004+00 0/1 0/0 0/0 .rodata @6924 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6924 = 29.0f / 10.0f;
-COMPILER_STRIP_GATE(0x805ED330, &lit_6924);
-#pragma pop
+ return way_bg_check2(this, current.pos, out_pos[mInOutPosIdx]) == false;
+}
/* 805E5808-805E5D0C 0074E8 0504+00 1/1 0/0 0/0 .text F_A_MoveAction__8daB_GG_cFv */
void daB_GG_c::F_A_MoveAction() {
- // NONMATCHING
+ gravity = 0.0f;
+ cXyz sp38(0.0f, 1000.0f, 3000.0f);
+ mSound.startCreatureSoundLevel(Z2SE_EN_GG_ATK_MOVE, 0, -1);
+
+ switch (mMode) {
+ case 0:
+ if (mTimers[0] == 0) {
+ s16 new_idx;
+ do {
+ new_idx = cM_rndF(2.9f);
+ } while (mInOutPosIdx == new_idx);
+
+ mInOutPosIdx = new_idx;
+ current.pos = out_pos[mInOutPosIdx];
+ old.pos = current.pos;
+
+ field_0x5bc = 70.0f;
+ speedF = field_0x5bc;
+ field_0x5c0 = (in_pos[mInOutPosIdx].y - current.pos.y) / (current.pos.absXZ(in_pos[mInOutPosIdx]) / speedF);
+ speed.y = field_0x5c0;
+ current.angle.y = cLib_targetAngleY(&out_pos[mInOutPosIdx], &in_pos[mInOutPosIdx]);
+ mMode++;
+ }
+ break;
+ case 1:
+ if (F_A_TargetMove(in_pos[mInOutPosIdx], 1)) {
+ int sp10 = cM_rndF(100.0f);
+
+ s16 new_idx;
+ do {
+ new_idx = cM_rndF(2.9f);
+ } while (mInOutPosIdx == new_idx);
+ mInOutPosIdx = new_idx;
+
+ if (sp10 > 70) {
+ mMode++;
+ field_0x5bc = 100.0f;
+ } else {
+ SpeedClear();
+ SetAction(ACTION_FLY, SUBACT_ATTACK, 10);
+
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ mCcHookCyl.OnTgSetBit();
+ }
+ }
+ break;
+ case 2:
+ sp38 = in_pos[mInOutPosIdx];
+ sp38.y += 400.0f;
+
+ if (F_A_TargetMove(sp38)) {
+ mMode++;
+ }
+ break;
+ case 3:
+ if (F_A_TargetMove(out_pos[mInOutPosIdx], 1)) {
+ current.pos = s_centerpos;
+ current.pos.y += 10000.0f;
+ current.pos.x += 10000.0f;
+ old.pos = current.pos;
+
+ mMode = 0;
+ mTimers[0] = 50;
+ attention_info.flags = 0;
+ }
+ break;
+ }
+
+ if (field_0x5bc != 100.0f) {
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5ba, 2, 0x1000);
+ } else {
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5ba, 9, 0x1000);
+ }
+
+ shape_angle.y = current.angle.y;
+
+ if (current.pos.z > 1200.0f) {
+ current.pos.z = 1200.0f;
+ }
}
/* 805E5D0C-805E5D2C 0079EC 0020+00 1/1 0/0 0/0 .text F_A_WaitAction__8daB_GG_cFv */
void daB_GG_c::F_A_WaitAction() {
- // NONMATCHING
+ Md_DemoAction();
}
/* 805E5D2C-805E5E78 007A0C 014C+00 1/1 0/0 0/0 .text F_A_Action__8daB_GG_cFv */
void daB_GG_c::F_A_Action() {
- // NONMATCHING
+ daPy_py_c::cancelBoomerangLockActor(this);
+
+ switch (mSubAction) {
+ case SUBACT_WAIT:
+ F_A_WaitAction();
+ break;
+ case SUBACT_MOVE:
+ F_A_MoveAction();
+ cLib_addCalc2(&speed.y, field_0x5c0, 0.2f, 100.0f);
+ break;
+ }
+
+ if (daPy_getPlayerActorClass()->checkWolfLock(this)) {
+ daPy_getPlayerActorClass()->cancelWolfLock(this);
+ }
+
+ cLib_addCalc2(&speedF, field_0x5bc, 0.2f, 100.0f);
+
+ cXyz sp8 = *s_LinkPos - current.pos;
+ cLib_addCalcAngleS2(&field_0x6c4, (-cM_atan2s(sp8.y, JMAFastSqrt((sp8.x * sp8.x) + (sp8.z * sp8.z))) - shape_angle.x), 0x10, 0x600);
}
/* 805E5E78-805E608C 007B58 0214+00 2/2 0/0 0/0 .text FookChk__8daB_GG_cFv */
void daB_GG_c::FookChk() {
- // NONMATCHING
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz* hookshot_top = player->getHookshotTopPos();
+
+ if (hookshot_top != NULL) {
+ s16 temp_r27 = (s_TargetAngle - fopAcM_GetShapeAngle_p(player)->y) + 0x8000;
+ if (hookshot_top->absXZ(current.pos) > 100.0f && daPy_getPlayerActorClass()->checkHookshotShootReturnMode() && !daPy_getPlayerActorClass()->checkHookshotReturnMode() && temp_r27 < 0x500 && temp_r27 > -0x500) {
+ SpeedClear();
+ mMode = 5;
+ SetAnm(0x19, 2, 5.0f, 1.0f);
+ }
+ }
}
/* 805E608C-805E6174 007D6C 00E8+00 2/2 0/0 0/0 .text CutChk__8daB_GG_cFv */
void daB_GG_c::CutChk() {
- // NONMATCHING
-}
+ int rnd = cM_rndF(100.0f);
+ u32 cut_type = daPy_getPlayerActorClass()->getCutType();
-/* ############################################################################################## */
-/* 805ED334-805ED338 0002D4 0004+00 0/2 0/0 0/0 .rodata @7247 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_7247 = 4.0f;
-COMPILER_STRIP_GATE(0x805ED334, &lit_7247);
-#pragma pop
+ if (s_dis < 400.0f && mMode != 4 && rnd < (20.0f + XREG_F(0)) && cut_type != 0 && !mCcCyl.ChkTgHit() && !mCcShieldSph.ChkTgHit() && cut_type != daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 0);
+ }
+}
/* 805E6174-805E6AB0 007E54 093C+00 1/1 0/0 0/0 .text G_MoveAction__8daB_GG_cFv */
void daB_GG_c::G_MoveAction() {
- // NONMATCHING
+ CutChk();
+
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz& player_pos = fopAcM_GetPosition(player);
+
+ switch (mMode) {
+ case 0:
+ if (mAnm != 0x12) {
+ SetAnm(18, 0, 5.0f, 1.0f);
+ field_0x5ba = s_TargetAngle + 0x8000;
+ current.angle.y = field_0x5ba;
+
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+ } else if (mAnm == 0x12 && mpModelMorf->checkFrame(5.0f)) {
+ field_0x5bc = 50.0f;
+ speedF = 50.0f;
+ speed.y = 30.0f;
+ } else if (mAnm == 0x12 && mpModelMorf->checkFrame(13.0f)) {
+ speedF = 0.0f;
+ speed.y = 0.0f;
+ field_0x5bc = 0.0f;
+
+ mSound.startCreatureSound(Z2SE_EN_GG_FOOTNOTE, 0, -1);
+ } else if (mAnm == 0x12 && mpModelMorf->isStop()) {
+ SpeedClear();
+ if (current.pos.y < (field_0x648 - 10.0f)) {
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 3);
+ FallChk();
+ } else if (current.pos.y < (field_0x648 - 10.0f) && mAcch.ChkGroundHit() && mType == TYPE_L7_MBOSS) {
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ mMode = 4;
+ } else if (mTimers[2] == 0 && field_0x5b0 != 0) {
+ SetAction(ACTION_F_A, SUBACT_WAIT, 0);
+ } else if (mTimers[2] == 0) {
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ mMode = 4;
+ } else {
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 2);
+ }
+ } else {
+ FallChk();
+ }
+ break;
+ case 1:
+ if (mAnm != 0x1A) {
+ SetAnm(0x1A, 2, 5.0f, 1.0f);
+ int sp1C = cM_rndF(100.0f);
+ field_0x5bc = 5.0f;
+ }
+
+ if (mTimers[0] == 0 && mpModelMorf->checkFrame(0.0f)) {
+ mMode = 3;
+ }
+
+ if (mpModelMorf->getPlaySpeed() > 0.0f) {
+ field_0x5ba = s_TargetAngle + 0x3000;
+ } else {
+ field_0x5ba = s_TargetAngle - 0x3000;
+ }
+
+ if (mpModelMorf->checkFrame(13.0f) || mpModelMorf->checkFrame(1.0f)) {
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+ } else {
+ field_0x5bc = 5.0f;
+ }
+
+ current.angle.y = field_0x5ba;
+ FookChk();
+
+ if (s_dis < 300.0f && (s_TargetAngle - shape_angle.y) < 0x2000 && (s_TargetAngle - shape_angle.y) > -0x2000) {
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 0);
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+ }
+
+ FallChk();
+ break;
+ case 2:
+ if (mAnm != 0x1E) {
+ SetAnm(30, 2, 5.0f, 1.0f);
+ mTimers[0] = 50.0f + cM_rndF(50.0f);
+ int sp1C = cM_rndF(100.0f);
+ field_0x5bc = 10.0f;
+ current.angle.y = s_TargetAngle;
+ }
+
+ field_0x5ba = s_TargetAngle;
+
+ if (mTimers[0] == 0 && mAnm == 0x1E && s_dis < 400.0f) {
+ mMode = 3;
+ }
+
+ FookChk();
+
+ if (s_dis < 300.0f && (s_TargetAngle - shape_angle.y) < 0x2000 && (s_TargetAngle - shape_angle.y) > -0x2000) {
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 0);
+ }
+
+ FallChk();
+ break;
+ case 3:
+ if (mAnm != 0x1D) {
+ SetAnm(29, 2, 5.0f, 1.0f);
+ mTimers[0] = 10.0f + cM_rndF(10.0f);
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+ current.angle.y = 0;
+ }
+
+ if (mTimers[0] == 0) {
+ mMode = 1;
+ if (s_dis < 500.0f) {
+ mTimers[0] = 100.0f + cM_rndF(100.0f);
+
+ int rnd = cM_rndF(100.0f);
+ if (rnd > 50) {
+ SetAnm(0x1A, 2, 5.0f, 1.0f);
+ } else {
+ SetAnm(0x1A, 2, 5.0f, -1.0f);
+ }
+ } else {
+ field_0x5bc = 4.0f;
+ mMode = 2;
+ }
+ }
+
+ FookChk();
+ FallChk();
+ break;
+ case 4:
+ eyePos = current.pos;
+ eyePos.y += 300.0f;
+
+ attention_info.position = eyePos;
+ attention_info.position.y += 50.0f;
+
+ if (mAnm != 0x1B) {
+ SetAnm(27, 0, 5.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_GG_V_TAKE_OFF, 0, -1);
+
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+ mCcHookCyl.OffTgSetBit();
+
+ SpeedClear();
+ gravity = -2.0f;
+
+ if (field_0x5ce != 0xFF && !dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ if (daPy_getPlayerActorClass()->checkWolfLock(this)) {
+ daPy_getPlayerActorClass()->cancelWolfLock(this);
+ }
+ } else {
+ if (mpModelMorf->checkFrame(18.0f)) {
+ speed.y = 70.0f;
+ field_0x5c0 = 0.0f;
+ gravity = -4.2f;
+ } else if (mpModelMorf->isStop()) {
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+ mTimers[0] = 0;
+ mTimers[1] = 0;
+ gravity = 0.0f;
+
+ fopAcM_OffStatus(this, 0x200000);
+ fopAcM_OnStatus(this, 0x80000);
+
+ SetAnm(14, 2, 5.0f, 1.0f);
+
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+ field_0x644 = 1.0f;
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 7);
+ }
+
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ }
+ }
+ break;
+ case 5:
+ if (!daPy_getPlayerActorClass()->checkHookshotShootReturnMode()) {
+ mMode = 3;
+ }
+ break;
+ }
}
-/* ############################################################################################## */
-/* 805ED338-805ED33C 0002D8 0004+00 0/2 0/0 0/0 .rodata @7347 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_7347 = 1.5f;
-COMPILER_STRIP_GATE(0x805ED338, &lit_7347);
-#pragma pop
-
/* 805E6AB0-805E6E30 008790 0380+00 2/2 0/0 0/0 .text FallChk__8daB_GG_cFv */
void daB_GG_c::FallChk() {
- // NONMATCHING
+ if (current.pos.y < (field_0x648 - 10.0f) && field_0x5b6 != 0) {
+ if (!mAcch.ChkGroundHit()) {
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+ fopAcM_OffStatus(this, 0x200000);
+ fopAcM_OnStatus(this, 0x80000);
+
+ SetAnm(14, 2, 5.0f + BREG_F(12), 1.0f);
+
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 7);
+ }
+
+ speed.y = 0.0f;
+ field_0x5c0 = 10.0f + BREG_F(11);
+ field_0x644 = 1.5f;
+ mModelPlaySpeed = 1.8f;
+ mTimers[2] = 50;
+ gravity = 0.0f;
+
+ if (field_0x5ce != 0xFF && !dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+ } else {
+ SetAnm(29, 2, 5.0f, 1.0f);
+ SetAction(ACTION_F_A, SUBACT_WAIT, 0);
+ mTimers[0] = 0;
+ }
+
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ } else if (current.pos.y < (field_0x648 - 10.0f) && mAcch.ChkGroundHit()) {
+ SpeedClear();
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 4);
+
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ } else if (current.pos.y < (field_0x648 - 10.0f)) {
+ SpeedClear();
+ SetAction(ACTION_FLY, SUBACT_MOVE, 0);
+ fopAcM_OffStatus(this, 0x200000);
+ fopAcM_OnStatus(this, 0x80000);
+
+ SetAnm(14, 2, 5.0f + BREG_F(12), 1.0f);
+
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 7);
+ }
+
+ speed.y = 0.0f;
+ field_0x5c0 = 10.0f + BREG_F(11);
+ field_0x644 = 1.5f;
+ mModelPlaySpeed = 1.8f;
+ mTimers[2] = 50;
+ gravity = 0.0f;
+
+ if (field_0x5ce != 0xFF && !dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ mCcCyl.OnTgSetBit();
+ mCcShieldSph.OnTgSetBit();
+ } else if (mTimers[2] == 0 && field_0x5b6 != 0) {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 0);
+
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+ } else if (mTimers[2] == 0) {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 0);
+
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+ }
}
-/* ############################################################################################## */
-/* 805ED33C-805ED340 0002DC 0004+00 0/1 0/0 0/0 .rodata @7534 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_7534 = 37.0f;
-COMPILER_STRIP_GATE(0x805ED33C, &lit_7534);
-#pragma pop
-
-/* 805ED340-805ED344 0002E0 0004+00 0/1 0/0 0/0 .rodata @7535 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_7535 = 11.0f;
-COMPILER_STRIP_GATE(0x805ED340, &lit_7535);
-#pragma pop
-
/* 805E6E30-805E73A8 008B10 0578+00 1/1 0/0 0/0 .text G_AttackAction__8daB_GG_cFv */
void daB_GG_c::G_AttackAction() {
- // NONMATCHING
+ switch (mMode) {
+ case 0:
+ SpeedClear();
+
+ int rnd = cM_rndF(100.0f);
+ if (rnd > 70) {
+ SetAnm(15, 0, 5.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].SetAtAtp(2);
+ }
+ } else if (rnd > 30) {
+ SetAnm(16, 0, 5.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].SetAtAtp(2);
+ }
+ } else {
+ SetAnm(17, 0, 1.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(2);
+ } else {
+ mCcSph[i].SetAtAtp(1);
+ }
+ }
+ }
+
+ mMode++;
+ break;
+ case 1:
+ if (mpModelMorf->checkFrame(2.0f) && mAnm == 0x11) {
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+ }
+ }
+
+ if (mpModelMorf->checkFrame(20.0f) && mAnm != 0x11) {
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0);
+ }
+ }
+
+ if (mpModelMorf->checkFrame(37.0f) && mAnm == 0xF) {
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OffAtSetBit();
+ }
+ } else if (mpModelMorf->checkFrame(37.0f) && mAnm == 0x10) {
+ speedF = 8.0f;
+ field_0x5bc = 0.0f;
+ } else if (mpModelMorf->checkFrame(52.0f) && mAnm == 0x10) {
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OffAtSetBit();
+ }
+ } else if (mpModelMorf->checkFrame(11.0f) && mAnm == 0x11) {
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OffAtSetBit();
+ mCcSph[i].SetAtAtp(2);
+ }
+ }
+
+ if (mpModelMorf->isStop()) {
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ int rnd = cM_rndF(100.0f);
+ if (rnd < 30 || mAnm == 0x11) {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 0);
+ } else if (mAnm != 0x11 && rnd > 50) {
+ SetAnm(17, 0, 1.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(2);
+ } else {
+ mCcSph[i].SetAtAtp(1);
+ }
+
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+ }
+ } else if (rnd > 30) {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 1);
+ mTimers[1] = 50;
+ } else {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 2);
+ mTimers[1] = 50;
+ }
+ }
+
+ if (mpModelMorf->getFrame() > 37.0f && mAnm == 0x10) {
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5ba, 10, 0x1000);
+ cLib_addCalcAngleS2(&shape_angle.y, s_TargetAngle, 10, 0x1000);
+ cLib_addCalcAngleS2(&field_0x6be, (s_TargetAngle - shape_angle.y), 10, 0x100);
+ }
+ break;
+ case 10:
+ SpeedClear();
+ SetAnm(17, 0, 1.0f, 1.0f);
+ field_0x6c4 = 0;
+ mMode = 1;
+
+ for (int i = 0; i < 3; i++) {
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(2);
+ } else {
+ mCcSph[i].SetAtAtp(1);
+ }
+
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+ }
+ break;
+ }
+
+ F_AtHit();
}
/* 805E73A8-805E7D50 009088 09A8+00 2/1 0/0 0/0 .text G_DamageAction__8daB_GG_cFv */
void daB_GG_c::G_DamageAction() {
- // NONMATCHING
+ cXyz sp38;
+ if (mAnm != 0x11 && mAnm != 0x18) {
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].OffAtSetBit();
+ }
+ }
+
+ switch (mMode) {
+ case 0:
+ CutChk();
+ if (mAnm == 0x18 && mpModelMorf->isStop()) {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 1);
+ speedF = 0.0f;
+
+ if (s_dis < 300.0f) {
+ int rnd = cM_rndF(100.0f);
+ if (rnd <= 50) {
+ if (rnd > 20) {
+ mMode = 0;
+ } else {
+ SetAnm(17, 0, 1.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(2);
+ } else {
+ mCcSph[i].SetAtAtp(1);
+ }
+
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+ field_0x65a = 0;
+ }
+
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 1);
+ HitChk();
+ mMode = 1;
+ }
+ }
+
+ u32 cut_type = daPy_getPlayerActorClass()->getCutType();
+ if (cut_type == daPy_py_c::CUT_TYPE_TURN_LEFT || cut_type == daPy_py_c::CUT_TYPE_TURN_RIGHT || cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT || cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) {
+ SetAnm(17, 0, 1.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(2);
+ } else {
+ mCcSph[i].SetAtAtp(1);
+ }
+
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+ field_0x65a = 0;
+ }
+
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 1);
+ HitChk();
+ mMode = 1;
+ }
+ }
+
+ field_0x5f0 = 0;
+ } else {
+ u32 cut_type = daPy_getPlayerActorClass()->getCutType();
+ int rnd = cM_rndF(100.0f);
+
+ if (field_0x5f0 > 1) {
+ SetAnm(17, 0, 1.0f, 1.0f);
+ for (int i = 0; i < 3; i++) {
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(2);
+ } else {
+ mCcSph[i].SetAtAtp(1);
+ }
+
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+ field_0x65a = 0;
+ }
+
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 1);
+ mCcCyl.OffTgShield();
+ mCcShieldSph.OffTgShield();
+
+ mMode = 1;
+ field_0x5f0 = 0;
+ speedF = 0.0f;
+ } else if (cut_type != 0) {
+ if (rnd < (10.0f + nREG_F(0)) && mpModelMorf->getFrame() > (5.0f + nREG_F(6))) {
+ SetAnm(17, 0, 1.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ if (mType == TYPE_L7_MBOSS) {
+ mCcSph[i].SetAtAtp(2);
+ } else {
+ mCcSph[i].SetAtAtp(1);
+ }
+
+ mCcSph[i].OnAtSetBit();
+ mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA);
+ field_0x65a = 0;
+ field_0x5f0 = 0;
+ }
+
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 1);
+ mCcCyl.OffTgShield();
+ mCcShieldSph.OffTgShield();
+
+ mMode = 1;
+ speedF = 0.0f;
+ }
+ }
+ }
+ break;
+ case 1:
+ if (mAnm != 0x18) {
+ SetAnm(24, 0, 1.0f, 1.0f);
+ speedF = 30.0f;
+ field_0x5bc = 0.0f;
+ current.angle.y = s_TargetAngle + 0x8000;
+ } else if (mAnm == 0x18 && mpModelMorf->isStop()) {
+ int sp30 = cM_rndF(100.0f);
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 1);
+ speedF = 0.0f;
+ }
+
+ s_TargetAngle += 0x4000;
+ break;
+ case 2:
+ cXyz* tg_hit_pos = mCcCyl.GetTgHitPosP();
+ s16 spA = cLib_targetAngleY(&current.pos, tg_hit_pos);
+ if ((spA - shape_angle.y) > 0) {
+ if (mAnm != 0x14) {
+ SetAnm(20, 0, 5.0f, 1.0f);
+ } else {
+ SetAnm(19, 0, 5.0f, 1.0f);
+ }
+ } else if (mAnm != 0x13) {
+ SetAnm(19, 0, 5.0f, 1.0f);
+ } else {
+ SetAnm(20, 0, 5.0f, 1.0f);
+ }
+
+ SetAction(ACTION_GROUND, SUBACT_DAMAGE, 3);
+
+ if (health < (s16)(field_0x560 * l_HIO.field_0x18) && field_0x5b0 == 0 && mType == TYPE_L7_MBOSS) {
+ mpModelMorf->setPlaySpeed(1.0f);
+ SetAction(ACTION_DEMO, 1, 0);
+ mCamMode = 0;
+ attention_info.flags = 0;
+ }
+
+ field_0x5bc = 0.0f;
+ speedF = -8.0f + yREG_F(0);
+ current.angle.y = s_TargetAngle;
+ shape_angle.y = current.angle.y;
+ field_0x5ba = current.angle.y;
+
+ if (health <= 0) {
+ Z2GetAudioMgr()->subBgmStop();
+ SetAction(ACTION_GROUND, SUBACT_DEATH, 0);
+ attention_info.flags = 0;
+
+ if (mType == TYPE_L7_MBOSS) {
+ SetAnm(0x15, 0, 5.0f, 1.0f);
+ } else {
+ SetAnm(31, 0, 5.0f, 1.0f);
+
+ mCcCyl.OffTgSetBit();
+ mCcShieldSph.OffTgSetBit();
+ mCcHookCyl.OffTgSetBit();
+ }
+
+ mCamMode = 0;
+ }
+ break;
+ case 3:
+ int cut_count = daPy_getPlayerActorClass()->getCutCount();
+ u32 cut_type = daPy_getPlayerActorClass()->getCutType();
+
+ if ((cut_type == daPy_py_c::CUT_TYPE_TURN_LEFT || cut_type == daPy_py_c::CUT_TYPE_TURN_RIGHT || cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT || cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) && field_0x6bc > 0) {
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+ mCcShieldSph.OnTgSetBit();
+ } else if (field_0x5e0 < 4) {
+ mCcCyl.OffTgShield();
+ mCcShieldSph.OffTgSetBit();
+ } else {
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+ mCcShieldSph.OnTgSetBit();
+ }
+
+ if (mpModelMorf->isStop()) {
+ field_0x6bc = 0;
+ field_0x5e0 = 0;
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 0);
+ mTimers[1] = 60;
+
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+ mCcShieldSph.OnTgSetBit();
+ }
+
+ FallChk();
+ break;
+ case 4:
+ sp38 = eyePos;
+ sp38.y += 180.0f + NREG_F(7);
+ setHeadLockPos(&sp38);
+
+ if (mpModelMorf->isStop()) {
+ field_0x5f0 = 0;
+ mCcShieldSph.OnTgSetBit();
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ if (s_dis < 300.0f) {
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 0);
+ } else {
+ SetAction(ACTION_GROUND, SUBACT_MOVE, 2);
+ }
+ }
+ break;
+ case 10:
+ if (fopAcM_checkHookCarryNow(this) && mAnm != 0x19) {
+ SetAnm(0x19, 2, 1.0f, 1.0f);
+ } else if (!fopAcM_checkHookCarryNow(this)) {
+ SetAction(ACTION_GROUND, SUBACT_ATTACK, 10);
+ }
+ break;
+ }
+
+ FallChk();
}
/* 805E7D50-805E7F50 009A30 0200+00 1/1 0/0 0/0 .text G_DeathAction__8daB_GG_cFv */
void daB_GG_c::G_DeathAction() {
- // NONMATCHING
+ cXyz sp8;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ switch (mMode) {
+ case 0:
+ if (mpModelMorf->isStop()) {
+ if (mType == TYPE_L7_MBOSS) {
+ mTimers[1] = 130;
+ } else {
+ mTimers[1] = 70;
+ }
+
+ mMode++;
+ }
+ break;
+ case 1:
+ if (mTimers[1] == 0) {
+ fopAcM_createDisappear(this, &current.pos, 10, 0, 0x2E);
+ fopAcM_createDisappear(this, &mSwordPos, 5, 0, 0xFF);
+ fopAcM_delete(this);
+
+ if (mType == TYPE_L7_MBOSS) {
+ dComIfGs_onSwitch(field_0x5cf, fopAcM_GetRoomNo(this));
+ SetReleaseCam();
+ } else if (mType == TYPE_HYRULE_CASTLE) {
+ cDmr_SkipInfo = 0;
+ dComIfGs_onSwitch(field_0x5cf, fopAcM_GetRoomNo(this));
+ } else if (field_0x5cf != 0xFF && !dComIfGs_isSwitch(field_0x5cf, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(field_0x5cf, fopAcM_GetRoomNo(this));
+ }
+ }
+
+ if (mTimers[1] == (90.0f + aREG_F(1)) && mType == TYPE_L7_MBOSS) {
+ player->changeOriginalDemo();
+ player->changeDemoMode(0x1E, 0, 0, 0);
+ }
+ break;
+ }
}
-/* ############################################################################################## */
-/* 805ED344-805ED348 0002E4 0004+00 0/0 0/0 0/0 .rodata @7819 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_7819 = -8.0f;
-COMPILER_STRIP_GATE(0x805ED344, &lit_7819);
-#pragma pop
-
-/* 805ED348-805ED34C 0002E8 0004+00 0/1 0/0 0/0 .rodata @7984 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_7984 = 0x3A83126F;
-COMPILER_STRIP_GATE(0x805ED348, &lit_7984);
-#pragma pop
-
/* 805E7F50-805E82A8 009C30 0358+00 1/1 0/0 0/0 .text G_DeathAction1__8daB_GG_cFv */
void daB_GG_c::G_DeathAction1() {
- // NONMATCHING
-}
-
-/* 805E82A8-805E82F0 009F88 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla() {
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED34C-805ED350 0002EC 0004+00 0/1 0/0 0/0 .rodata @8242 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8242 = 176.0f;
-COMPILER_STRIP_GATE(0x805ED34C, &lit_8242);
-#pragma pop
-
-/* 805ED350-805ED354 0002F0 0004+00 0/2 0/0 0/0 .rodata @8243 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8243 = -7.0f;
-COMPILER_STRIP_GATE(0x805ED350, &lit_8243);
-#pragma pop
-
-/* 805ED354-805ED358 0002F4 0004+00 0/2 0/0 0/0 .rodata @8244 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8244 = -3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x805ED354, &lit_8244);
-#pragma pop
-
-/* 805ED358-805ED35C 0002F8 0004+00 0/1 0/0 0/0 .rodata @8245 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8245 = 350.0f;
-COMPILER_STRIP_GATE(0x805ED358, &lit_8245);
-#pragma pop
+ cXyz sp50(0.0f, 0.0f, 0.0f);
+ cXyz sp44(0.0f, 0.0f, 0.0f);
+ cXyz sp38(0.0f, 0.0f, 0.0f);
+ daPy_getPlayerActorClass();
+
+ cXyz sp2C;
+ dBgS_LinChk sp70;
+
+ if (mpModelMorf->checkFrame(2.0f)) {
+ field_0x66d = 1;
+ mDoMtx_stack_c::copy(mpSwordModel->getBaseTRMtx());
+ mDoMtx_stack_c::multVecZero(&mSwordPos);
+ mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &mSwordRot);
+
+ sp50.set(BREG_F(3), BREG_F(4), BREG_F(5));
+ cLib_offsetPos(&mSwordPos, &mSwordPos, shape_angle.y, &sp50);
+
+ if (mType != TYPE_HYRULE_CASTLE) {
+ sp44.set(cM_rndFX(30.0f), 80.0f + aREG_F(8), cM_rndFX(30.0f));
+ } else {
+ sp44.set(0.0f, 5.0f + aREG_F(8), -1.0f);
+ }
+
+ cLib_offsetPos(&sp50, &sp38, shape_angle.y, &sp44);
+ field_0x684 = sp50;
+ } else if (mpModelMorf->getFrame() > 2.0f && 0.0f != field_0x684.z) {
+ sp2C = mSwordPos;
+ field_0x684.y += -9.0f + aREG_F(9);
+ mSwordPos += field_0x684;
+
+ cLib_chaseAngleS(&mSwordRot.z, -0x3500, 0x500);
+ cLib_chaseAngleS(&mSwordRot.x, 0x4FA0, 0x500);
+
+ sp70.Set(&sp2C, &mSwordPos, NULL);
+ if (dComIfG_Bgsp().LineCross(&sp70)) {
+ field_0x5b2++;
+
+ cM3dGPla sp5C;
+ dComIfG_Bgsp().GetTriPla(sp70, &sp5C);
+
+ field_0x684 = Hanekaeri(this, field_0x684, *sp5C.GetNP(), 0.5f);
+ if (field_0x5b2 > 2) {
+ field_0x684.set(0.0f, 0.0f, 0.0f);
+ }
+
+ mSwordRot.y += 0x500;
+ mSwordPos = sp70.GetCross();
+ mSwordPos.y += 15.0f;
+ }
+ }
+
+ field_0x66c = 1;
+
+ if (mpModelMorf->isStop()) {
+ cLib_chaseF(&field_0x668, 0.4f + aREG_F(5), 0.001f + aREG_F(6));
+ }
+}
/* 805E82F0-805E8D48 009FD0 0A58+00 1/1 0/0 0/0 .text DeathCam__8daB_GG_cFv */
void daB_GG_c::DeathCam() {
- // NONMATCHING
+ cXyz sp48(0.0f, 0.0f, 0.0f);
+ cXyz sp3C(0.0f, 0.0f, 0.0f);
+ cXyz sp30(0.0f, 0.0f, 0.0f);
+
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz sp24;
+ dBgS_LinChk sp58;
+
+ if (mpModelMorf->checkFrame(176.0f)) {
+ field_0x66d = 1;
+
+ mDoMtx_stack_c::copy(mpSwordModel->getBaseTRMtx());
+ mDoMtx_stack_c::multVecZero(&mSwordPos);
+ mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &mSwordRot);
+
+ sp48.set(BREG_F(3), BREG_F(4), BREG_F(5));
+ cLib_offsetPos(&mSwordPos, &mSwordPos, shape_angle.y, &sp48);
+
+ sp3C.set(-5.0f, -1.0f, 5.0f);
+ cLib_offsetPos(&sp48, &sp30, shape_angle.y, &sp3C);
+
+ field_0x684 = sp48;
+ } else if ((mpModelMorf->getFrame() > 176.0f || mpModelMorf->isStop()) && 0.0f != field_0x684.z) {
+ sp24 = mSwordPos;
+ field_0x684.y += -7.0f + aREG_F(9);
+ mSwordPos += field_0x684;
+
+ cLib_chaseAngleS(&mSwordRot.z, -0x3500, 0x500);
+ cLib_chaseAngleS(&mSwordRot.x, 0x4FA0, 0x500);
+
+ sp58.Set(&sp24, &mSwordPos, NULL);
+ if (dComIfG_Bgsp().LineCross(&sp58)) {
+ mSwordPos = sp58.GetCross();
+ mSwordPos.y += 10.0f;
+
+ field_0x684.y = field_0x684.y * -(0.6f + BREG_F(7));
+ if (field_0x684.y < (8.0f + BREG_F(6))) {
+ field_0x684.set(0.0f, 0.0f, 0.0f);
+ }
+ }
+ }
+
+ switch (mCamMode) {
+ case 0:
+ if (CameraSet()) {
+ sp48.set(0.0f, 0.0f, -57.0f);
+ current.pos = sp48;
+ old.pos = current.pos;
+ shape_angle.y = cLib_targetAngleY(&current.pos, &in_pos[mInOutPosIdx]);
+ current.angle.y = shape_angle.y;
+
+ mCamMode++;
+ field_0x658 = 0;
+ field_0x650 = 350.0f + BREG_F(3);
+
+ sp30.set(0.0f, 0.0f, 0.0f);
+ sp30 = current.pos;
+ sp30.y += 150.0f + BREG_F(5);
+ SetStopCam(sp30, 350.0f + BREG_F(3), -100.0f - BREG_F(5), shape_angle.y);
+
+ sp30.set(0.0f, mAcch.GetGroundH(), 0.0f);
+ sp48.set(0.0f, 0.0f, -300.0f);
+ cLib_offsetPos(&sp30, &mCamEye, cLib_targetAngleY(&mCamEye, &current.pos), &sp48);
+
+ player->setPlayerPosAndAngle(&sp30, shape_angle.y, 0);
+ player->changeOriginalDemo();
+ }
+ break;
+ case 1:
+ sp30.set(0.0f, 0.0f, -57.0f);
+ field_0x658 -= 0x10;
+ sp48.set(0.0f, 0.0f, 0.0f);
+
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(6));
+ mDoMtx_stack_c::multVec(&sp48, &sp48);
+ field_0x60c = sp48;
+ field_0x60c.y -= 80.0f + BREG_F(1);
+ field_0x650 += 0.5f + aREG_F(11);
+
+ if (field_0x60c.y > (150.0f + BREG_F(4))) {
+ field_0x60c.y = 150.0f + BREG_F(4);
+ } else if (field_0x60c.y < (100.0f + BREG_F(2))) {
+ field_0x60c.y = 100.0f + BREG_F(2);
+ }
+
+ sp48.set(0.0f, field_0x618.y, field_0x650);
+ cLib_offsetPos(&field_0x618, &sp30, (shape_angle.y + field_0x658), &sp48);
+ SetMoveCam1(0.1f + BREG_F(15), 50.0f + BREG_F(16));
+
+ sp30 = current.pos;
+ sp30.set(0.0f, s_LinkPos->y, 0.0f);
+ sp48.set(0.0f, 0.0f, -300.0f);
+ cLib_offsetPos(&sp30, &mCamEye, cLib_targetAngleY(&mCamEye, &current.pos), &sp48);
+ player->setPlayerPosAndAngle(&sp30, shape_angle.y, 0);
+
+ if (mpModelMorf->checkFrame(200.0f)) {
+ field_0x66c = 1;
+ field_0x668 = 0.0f;
+
+ sp3C.set(300.0f, 0.0f, 400.0f);
+ cLib_offsetPos(&sp48, &current.pos, cLib_targetAngleY(&current.pos, &mCamEye), &sp3C);
+ fopAcM_SetSpeed(player, 0.0f, 0.0f, 0.0f);
+
+ player->setPlayerPosAndAngle(&sp48, cLib_targetAngleY(&sp48, &current.pos), 0);
+ daPy_getPlayerActorClass()->changeDemoMode(0x17, 1, 2, 0);
+ mCamMode++;
+ }
+ break;
+ case 2:
+ sp30.set(0.0f, 0.0f, -57.0f);
+ field_0x658 -= 0x10;
+ sp48.set(0.0f, 0.0f, 0.0f);
+
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(6));
+ mDoMtx_stack_c::multVec(&sp48, &sp48);
+ field_0x60c = sp48;
+ field_0x60c.y -= 80.0f + BREG_F(1);
+ field_0x650 += 0.5f + aREG_F(11);
+
+ if (mpModelMorf->getFrame() < 200.0f) {
+ if (field_0x60c.y > (150.0f + BREG_F(4))) {
+ field_0x60c.y = 150.0f + BREG_F(4);
+ } else if (field_0x60c.y < (100.0f + BREG_F(2))) {
+ field_0x60c.y = 100.0f + BREG_F(2);
+ }
+ } else {
+ field_0x60c.x = current.pos.x;
+ field_0x60c.z = current.pos.z;
+ if (field_0x60c.y < (100.0f + BREG_F(2))) {
+ field_0x60c.y = 100.0f + BREG_F(2);
+ }
+ }
+
+ if (mpModelMorf->isStop() && cLib_chaseF(&field_0x668, 0.5f + aREG_F(5), 0.01f + aREG_F(6))) {
+ cDmr_SkipInfo = 0;
+ fopAcM_createDisappear(this, &current.pos, 10, 0, 0xFF);
+ fopAcM_createDisappear(this, &mSwordPos, 5, 0, 0xFF);
+
+ current.pos.y += 10000.0f;
+ old.pos.y = current.pos.y;
+ mSwordPos.y += 10000.0f;
+ mTimers[0] = 30;
+ mCamMode++;
+ }
+
+ sp48.set(0.0f, field_0x618.y, field_0x650);
+ cLib_offsetPos(&field_0x618, &sp30, (shape_angle.y + field_0x658), &sp48);
+ SetMoveCam1(0.1f + BREG_F(15), 50.0f + BREG_F(16));
+ break;
+ case 3:
+ current.pos.y = 10000.0f;
+
+ if (mTimers[0] == 0) {
+ sp48 = *s_LinkPos;
+ sp48.y += 100.0f;
+
+ if (!daPy_py_c::checkNowWolf()) {
+ SetStopCam(sp48, 200.0f, 0.0f, (s_TargetAngle + 0x7000));
+ } else {
+ SetReleaseCam();
+ if (field_0x5cf != 0xFF && !dComIfGs_isSwitch(field_0x5cf, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(field_0x5cf, fopAcM_GetRoomNo(this));
+ dComIfGs_onStageMiddleBoss();
+ }
+ fopAcM_delete(this);
+ }
+
+ player->changeOriginalDemo();
+
+ if (!daPy_py_c::checkNowWolf()) {
+ player->changeDemoMode(0x1E, 0, 0, 0);
+ }
+
+ mTimers[2] = 110;
+ mTimers[0] = 1000;
+ } else if (mTimers[2] == 1) {
+ if (field_0x5cf != 0xFF && !dComIfGs_isSwitch(field_0x5cf, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(field_0x5cf, fopAcM_GetRoomNo(this));
+ dComIfGs_onStageMiddleBoss();
+ }
+
+ fopAcM_delete(this);
+
+ sp48.set(0.0f, 100.0f, 300.0f);
+ mCamCenter.set(s_LinkPos->x, 200.0f + s_LinkPos->y, s_LinkPos->z);
+ cLib_offsetPos(&mCamEye, s_LinkPos, s_TargetAngle, &sp48);
+ SetReleaseCam();
+ }
+
+ SetStopingCam();
+ break;
+ }
}
/* 805E8D48-805E8EE8 00AA28 01A0+00 1/1 0/0 0/0 .text GroundAction__8daB_GG_cFv */
void daB_GG_c::GroundAction() {
- // NONMATCHING
+ s16 var_r30 = 0;
+
+ switch (mSubAction) {
+ case SUBACT_MOVE:
+ G_MoveAction();
+ var_r30 = 10;
+ break;
+ case SUBACT_ATTACK:
+ G_AttackAction();
+ break;
+ case SUBACT_DAMAGE:
+ G_DamageAction();
+ var_r30 = 2;
+ break;
+ case SUBACT_DEATH:
+ if (mType == TYPE_L7_MBOSS) {
+ DeathCam();
+ } else {
+ G_DeathAction1();
+ G_DeathAction();
+ }
+ break;
+ }
+
+ if (mAnm != 0x16) {
+ offHeadLockFlg();
+ }
+
+ cLib_addCalc2(&speedF, field_0x5bc, 0.2f, 100.0f);
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5ba, var_r30, 0x1000);
+ cLib_addCalcAngleS2(&shape_angle.y, s_TargetAngle, var_r30, 0x1000);
+ cLib_addCalcAngleS2(&field_0x6be, (s_TargetAngle - shape_angle.y), var_r30, 0x100);
+ cLib_addCalcAngleS2(&mArmL1Rot.x, 0, 0x10, 0x1000);
+ cLib_addCalcAngleS2(&mArmL1Rot.y, 0, 0x10, 0x1000);
+ cLib_addCalcAngleS2(&mArmL1Rot.z, 0, 0x10, 0x1000);
+ cLib_addCalcAngleS2(&mArmL2Rot.x, 0, 0x10, 0x1000);
+ cLib_addCalcAngleS2(&mArmL2Rot.y, 0, 0x10, 0x1000);
+ cLib_addCalcAngleS2(&mArmL2Rot.z, 0, 0x10, 0x1000);
}
/* 805E8EE8-805E92A0 00ABC8 03B8+00 1/1 0/0 0/0 .text StopAction__8daB_GG_cFv */
void daB_GG_c::StopAction() {
- // NONMATCHING
+ if (!other_bg_check(this, daPy_getPlayerActorClass())) {
+ attention_info.flags = 4;
+ } else {
+ attention_info.flags = 0;
+ }
+
+ cXyz sp20;
+ switch (mMode) {
+ case 0:
+ if (s_LinkPos->y < (500.0f + current.pos.y)) {
+ mAction = ACTION_GROUND;
+ mSubAction = SUBACT_MOVE;
+ mMode = 4;
+ }
+
+ if (mpModelMorf->isStop() && mAnm != 0x1D) {
+ SetAnm(29, 2, 5.0f, 1.0f);
+ }
+
+ FookChk();
+ break;
+ case 5:
+ if (!dComIfGp_checkPlayerStatus0(0, 0x4000)) {
+ mMode = 0;
+ }
+ break;
+ }
+
+ if (field_0x5cc > 0) {
+ mCcCyl.ClrTgHit();
+ mCcShieldSph.ClrTgHit();
+ mCcHookCyl.ClrTgHit();
+ return;
+ }
+
+ if ((mCcCyl.ChkTgShield() && mCcCyl.ChkTgHit()) || mCcHookCyl.ChkTgHit()) {
+ mAtInfo.field_0x18 = 0x2A;
+
+ cCcD_Obj* tg_hit_obj;
+ if (mCcCyl.ChkTgHit()) {
+ mAtInfo.mpCollider = mCcCyl.GetTgHitObj();
+ tg_hit_obj = mCcCyl.GetTgHitObj();
+ mCcCyl.GetTgHitPosP();
+ } else if (mCcHookCyl.ChkTgHit()) {
+ mAtInfo.mpCollider = mCcHookCyl.GetTgHitObj();
+ tg_hit_obj = mCcHookCyl.GetTgHitObj();
+ mCcHookCyl.GetTgHitPosP();
+ }
+
+ At_Check();
+
+ if (tg_hit_obj->ChkAtType(AT_TYPE_HOOKSHOT)) {
+ mAction = ACTION_GROUND;
+ mMode = 10;
+ mSubAction = SUBACT_DAMAGE;
+ mTimers[2] = l_HIO.takeoff2_time;
+ gravity = -9.0f;
+ } else {
+ sp20.set(0.0f, 0.0f, 0.0f);
+
+ cXyz sp14(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mDoMtx_stack_c::multVec(&sp14, &sp20);
+ dComIfGp_setHitMark(2, this, &sp20, NULL, NULL, 0);
+ SetAnm(24, 0, 1.0f, 1.0f);
+ }
+
+ mCcHookCyl.ClrTgHit();
+ mCcCyl.ClrTgHit();
+ mCcShieldSph.ClrTgHit();
+ field_0x5cc = 15;
+ }
+
+ cXyz sp8 = *s_LinkPos - current.pos;
+ cLib_addCalcAngleS2(&field_0x6c4, -cM_atan2s(sp8.y, JMAFastSqrt((sp8.x * sp8.x) + (sp8.z * sp8.z))), 2, 0x600);
+ cLib_addCalcAngleS2(&field_0x6be, (s_TargetAngle - shape_angle.y), 2, 0x100);
+ current.angle.y = s_TargetAngle;
+ shape_angle.y = s_TargetAngle;
}
/* 805E92A0-805E9310 00AF80 0070+00 2/2 0/0 0/0 .text HitChk__8daB_GG_cFv */
void daB_GG_c::HitChk() {
- // NONMATCHING
+ if (mAction == ACTION_GROUND && mSubAction == SUBACT_ATTACK) {
+ if ((s_TargetAngle - shape_angle.y) < 0x3000 && (s_TargetAngle - shape_angle.y) > 0x300) {
+ mCcShieldSph.OnTgShield();
+ mCcCyl.OnTgShield();
+ } else {
+ mCcShieldSph.OffTgShield();
+ mCcCyl.OffTgShield();
+ }
+ }
}
/* 805E9310-805E9418 00AFF0 0108+00 1/1 0/0 0/0 .text Action__8daB_GG_cFv */
void daB_GG_c::Action() {
- // NONMATCHING
+ if (mType != TYPE_L7_MBOSS) {
+ if (s_dis > 5000.0f) {
+ mSound.setLinkSearch(0);
+ } else {
+ mSound.setLinkSearch(1);
+ }
+ }
+
+ HitChk();
+
+ if (mAction != ACTION_F_A && mAction != ACTION_STOP) {
+ ObjHit();
+ }
+
+ switch (mAction) {
+ case ACTION_FLY:
+ FlyAction();
+ break;
+ case ACTION_GROUND:
+ GroundAction();
+ break;
+ case ACTION_F_A:
+ F_A_Action();
+ break;
+ case ACTION_DEMO:
+ DemoAction();
+ break;
+ case ACTION_STOP:
+ StopAction();
+ break;
+ }
+
+ if (field_0x5b1 == 1) {
+ HeadAction();
+ }
}
-/* ############################################################################################## */
-/* 805ED35C-805ED360 0002FC 0004+00 0/1 0/0 0/0 .rodata @8519 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8519 = 2.5f;
-COMPILER_STRIP_GATE(0x805ED35C, &lit_8519);
-#pragma pop
-
-/* 805ED360-805ED364 000300 0004+00 0/1 0/0 0/0 .rodata @8520 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8520 = -0.5f;
-COMPILER_STRIP_GATE(0x805ED360, &lit_8520);
-#pragma pop
-
/* 805E9418-805E9A28 00B0F8 0610+00 1/1 0/0 0/0 .text HeadAction__8daB_GG_cFv */
void daB_GG_c::HeadAction() {
- // NONMATCHING
+ cXyz sp18;
+ cXyz spC;
+ dBgS_LinChk sp28;
+
+ switch (field_0x5c4) {
+ case 0:
+ field_0x6a8.set(5.0f, 50.0f, 5.0f);
+ field_0x6b4.x = 0x500;
+ field_0x6b4.z = 0x500;
+ field_0x5c4++;
+ break;
+ case 1:
+ spC = mHeadPos;
+ field_0x6a8.y += -7.0f;
+ mHeadPos += field_0x6a8;
+ mHeadRot += field_0x6b4;
+
+ sp28.Set(&spC, &mHeadPos, NULL);
+ if (dComIfG_Bgsp().LineCross(&sp28)) {
+ mHeadPos = sp28.GetCross();
+ Z2GetAudioMgr()->seStart(0x705B6, &mHeadPos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+
+ field_0x6a8.y = field_0x6a8.y * -0.6f;
+ if (field_0x6a8.y < (2.5f + BREG_F(6))) {
+ field_0x6a8.set(0.0f, 0.0f, 0.0f);
+ fopAcM_createDisappear(this, &mHeadPos, 3, 0, 0xFF);
+ field_0x5b1 = 2;
+ }
+ }
+
+ cLib_chaseAngleS(&field_0x6b4.x, 0, 5);
+ cLib_chaseAngleS(&field_0x6b4.z, 0, 5);
+ break;
+ case 2:
+ if (mHeadPos.absXZ(current.pos) < 100.0f && mTimers[3] == 0) {
+ sp18.set(0.0f, 20.0f + MREG_F(8), 10.0f + MREG_F(9));
+
+ mDoMtx_stack_c::YrotS(cLib_targetAngleY(&current.pos, &mHeadPos));
+ mDoMtx_stack_c::multVec(&sp18, &sp18);
+ field_0x6a8 = sp18;
+
+ mTimers[3] = 50;
+ field_0x6b4.x = 0x500;
+ field_0x6b4.z = 0x500;
+ } else if (mHeadPos.absXZ(*s_LinkPos) < 100.0f && mTimers[3] == 0) {
+ sp18.set(0.0f, 20.0f + MREG_F(8), 10.0f + MREG_F(9));
+
+ mDoMtx_stack_c::YrotS(cLib_targetAngleY(s_LinkPos, &mHeadPos));
+ mDoMtx_stack_c::multVec(&sp18, &sp18);
+ field_0x6a8 = sp18;
+
+ mTimers[3] = 50;
+ field_0x6b4.x = 0x500;
+ field_0x6b4.z = 0x500;
+ }
+
+ field_0x6a8.y += -5.0f;
+ mHeadPos += field_0x6a8;
+ mHeadRot.x += field_0x6b4.x;
+ mHeadRot.y += field_0x6b4.y;
+ mHeadRot.z += field_0x6b4.z;
+
+ if (mHeadPos.y < 15.0f) {
+ mHeadPos.y = 15.0f;
+ field_0x6a8.y = field_0x6a8.y * -0.5f;
+ if (field_0x6a8.y < 4.0f) {
+ field_0x6a8.set(0.0f, 0.0f, 0.0f);
+ field_0x6b4.x = 0;
+ field_0x6b4.z = 0;
+ mTimers[3] = 0;
+ }
+ }
+
+ cLib_chaseAngleS(&field_0x6b4.x, 0, 5);
+ cLib_chaseAngleS(&field_0x6b4.z, 0, 5);
+ break;
+ }
}
/* 805E9A28-805E9B48 00B708 0120+00 1/1 0/0 0/0 .text SetHeadAngle__8daB_GG_cFv */
void daB_GG_c::SetHeadAngle() {
- // NONMATCHING
+ cXyz sp20;
+ cXyz sp14(0.0f, 0.0f, 0.0f);
+
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(5));
+ mDoMtx_stack_c::multVec(&sp14, &sp14);
+ sp20 = sp14 - field_0x65c;
+
+ s16 temp_r30 = -cM_atan2s(sp20.y, JMAFastSqrt((sp20.x * sp20.x) + (sp20.z * sp20.z)));
+ s16 var_r29 = cM_atan2s(sp20.x, sp20.z);
+ if (mAction != ACTION_GROUND) {
+ var_r29 = 0x3000;
+ }
+
+ cLib_addCalcAngleS2(&field_0x6d4, temp_r30, 2, 0x1000);
+ cLib_addCalcAngleS2(&field_0x6d6, temp_r30, 2, 0x1000);
+ field_0x65c = sp14;
}
-/* ############################################################################################## */
-/* 805ED364-805ED368 000304 0004+00 0/2 0/0 0/0 .rodata @8732 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8732 = 7.0f;
-COMPILER_STRIP_GATE(0x805ED364, &lit_8732);
-#pragma pop
-
/* 805E9B48-805EA344 00B828 07FC+00 2/1 0/0 0/0 .text SoundChk__8daB_GG_cFv */
void daB_GG_c::SoundChk() {
- // NONMATCHING
+ switch (mAnm) {
+ case 4:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_ATTACK, -1);
+ } else if (mpModelMorf->checkFrame(7.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ }
+ break;
+ case 6:
+ if (mpModelMorf->checkFrame(3.0f) || mpModelMorf->checkFrame(16.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ } else if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_ATTACK, 0, -1);
+ }
+ break;
+ case 9:
+ if (mpModelMorf->checkFrame(6.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ }
+ break;
+ case 10:
+ if (mpModelMorf->checkFrame(27.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ }
+ break;
+ case 11:
+ if (mpModelMorf->checkFrame(5.0f) || mpModelMorf->checkFrame(13.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ }
+ break;
+ case 13:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_SHOUT, -1);
+ }
+ break;
+ case 14:
+ if (mpModelMorf->checkFrame(10.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ }
+ break;
+ case 15:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_ATTACK_A, -1);
+ } else if (mpModelMorf->checkFrame(26.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_ATTACK_A, 0, -1);
+ }
+ break;
+ case 16:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_ATTACK_B, -1);
+ } else if (mpModelMorf->checkFrame(29.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_ATTACK_B, 0, -1);
+ }
+ break;
+ case 17:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_ATTACK_C, -1);
+ } else if (mpModelMorf->checkFrame(5.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_ATTACK_C, 0, -1);
+ }
+ break;
+ case 18:
+ if (mpModelMorf->checkFrame(4.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ }
+ break;
+ case 21:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_DIE_BOSS, -1);
+ } else if (mpModelMorf->checkFrame(190.0f)) {
+ mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1);
+ } else if (mpModelMorf->checkFrame(226.0f)) {
+ mSound.startCreatureSound(Z2SE_CM_BODYFALL_M, 0, -1);
+ }
+ break;
+ case 22:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_FAINT, -1);
+ }
+ break;
+ case 27:
+ if (mpModelMorf->checkFrame(23.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_WING, 0, -1);
+ }
+ break;
+ case 29:
+ if (mpModelMorf->checkFrame(5.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_BREATH, -1);
+ }
+ break;
+ case 30:
+ if (mpModelMorf->checkFrame(11.0f) || mpModelMorf->checkFrame(1.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_GG_FOOTNOTE, 0, -1);
+ }
+ break;
+ case 31:
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_DIE, -1);
+ } else if (mpModelMorf->checkFrame(22.0f)) {
+ mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1);
+ } else if (mpModelMorf->checkFrame(42.0f)) {
+ mSound.startCreatureSound(Z2SE_CM_BODYFALL_M, 0, -1);
+ }
+ break;
+ }
}
/* 805EA344-805EA72C 00C024 03E8+00 1/1 0/0 0/0 .text Execute__8daB_GG_cFv */
-void daB_GG_c::Execute() {
- // NONMATCHING
+int daB_GG_c::Execute() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ s_LinkPos = &fopAcM_GetPosition(player);
+ s_TargetAngle = fopAcM_searchPlayerAngleY(this);
+ s_dis = current.pos.abs(*s_LinkPos);
+
+ for (int i = 0; i < 4; i++) {
+ mTimers[i]--;
+ if (mTimers[i] <= 0) {
+ mTimers[i] = 0;
+ }
+ }
+
+ field_0x5cc--;
+ if (field_0x5cc <= 0) {
+ field_0x5cc = 0;
+ }
+
+ Yazirushi();
+ Action();
+ SoundChk();
+
+ if (mType == TYPE_L7_MBOSS && (mAction != ACTION_DEMO || mSubAction != 0)) {
+ daPy_getPlayerActorClass()->onBossRoomWait();
+ }
+
+ cXyz eff_size(1.5f, 1.5f, 1.5f);
+ setMidnaBindEffect(this, &mSound, &current.pos, &eff_size);
+ SetHeadAngle();
+ mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+
+ fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ setBaseMtx();
+ setShieldMtx();
+ setSwordMtx();
+
+ if (mAction == ACTION_GROUND) {
+ G_setCcCylinder();
+ } else {
+ setCcCylinder();
+ }
+
+ if (field_0x65a != 0) {
+ MoveAt();
+ } else {
+ cXyz spC;
+ for (int i = 0; i < 3; i++) {
+ spC.set(0.0f, (10.0f + (100.0f * i)) * l_HIO.base_size, 0.0f);
+
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0x10));
+ mDoMtx_stack_c::multVec(&spC, &spC);
+
+ mCcSph[i].SetC(spC);
+ mCcSph[i].SetR(70.0f * l_HIO.base_size);
+ dComIfG_Ccsp()->Set(&mCcSph[i]);
+ }
+ }
+
+ if (mType == TYPE_L7_MBOSS) {
+ setHeadMtx();
+ }
+
+ return 1;
}
/* 805EA72C-805EA74C 00C40C 0020+00 1/1 0/0 0/0 .text ObjHit__8daB_GG_cFv */
void daB_GG_c::ObjHit() {
- // NONMATCHING
+ Guard();
}
/* 805EA74C-805EA938 00C42C 01EC+00 3/3 0/0 0/0 .text At_Check__8daB_GG_cFv */
void daB_GG_c::At_Check() {
- // NONMATCHING
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+
+ mAtInfo.mpActor = at_power_check(&mAtInfo);
+ if (mAtInfo.mpActor != NULL) {
+ if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) {
+ mAtInfo.mAttackPower = 0;
+ } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOMB)) {
+ mAtInfo.mAttackPower = 30;
+ } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_NORMAL_SWORD) && daPy_py_c::checkMasterSwordEquip()) {
+ mAtInfo.mAttackPower *= 2;
+ }
+
+ if ((s16)mAtInfo.mAttackPower > 0) {
+ if (mAtInfo.mAttackPower > 80) {
+ mAtInfo.mAttackPower = 80;
+ }
+
+ health -= (s16)mAtInfo.mAttackPower;
+ }
+
+ int pause_time;
+ if (mAtInfo.mAttackPower != 0) {
+ mAtInfo.mHitStatus = 2;
+ pause_time = 5;
+ } else {
+ pause_time = 2;
+ }
+
+ if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_MIDNA_LOCK)) {
+ pause_time = 0;
+ }
+
+ u8 at_se = ((dCcD_GObjInf*)mAtInfo.mpCollider)->GetAtSe();
+
+ u32 var_r28 = 0x1E;
+ if (mAtInfo.mHitStatus == 1) {
+ var_r28 = 0x1F;
+ } else if (mAtInfo.mHitStatus == 2) {
+ var_r28 = 0x20;
+ }
+
+ if (mAtInfo.mpSound != NULL) {
+ if (mAtInfo.field_0x18 != 0) {
+ mAtInfo.mpSound->startCollisionSE(dCcD_GObjInf::getHitSeID(at_se, 0), mAtInfo.field_0x18);
+ } else {
+ mAtInfo.mpSound->startCollisionSE(dCcD_GObjInf::getHitSeID(at_se, 0), var_r28);
+ }
+ }
+
+ if ((mAtInfo.mHitType == HIT_TYPE_LINK_NORMAL_ATTACK || mAtInfo.mpCollider->ChkAtType(AT_TYPE_THROW_OBJ)) && !player->checkCutJumpCancelTurn()) {
+ if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_THROW_OBJ)) {
+ pause_time = 4;
+ }
+
+ dScnPly_c::setPauseTimer(pause_time);
+ }
+ }
}
/* 805EA938-805EA9AC 00C618 0074+00 1/1 0/0 0/0 .text MoveAt__8daB_GG_cFv */
void daB_GG_c::MoveAt() {
- // NONMATCHING
+ cXyz pos(0.0f, 10000.0f, 0.0f);
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].SetC(pos);
+ }
}
/* 805EA9AC-805EAAFC 00C68C 0150+00 2/2 0/0 0/0 .text F_AtHit__8daB_GG_cFv */
void daB_GG_c::F_AtHit() {
- // NONMATCHING
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ field_0x65a--;
+ if (field_0x65a <= 0) {
+ field_0x65a = 0;
+ }
+
+ if (field_0x65a > 0) {
+ for (int i = 0; i < 3; i++) {
+ mCcSph[i].ClrAtHit();
+ }
+ return;
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (mCcSph[i].ChkAtHit() && !player->checkPlayerGuard()) {
+ if (mAction != ACTION_FLY && mAction == ACTION_GROUND && mCcSph[i].GetAtSpl() == 0) {
+ player->setThrowDamage(s_TargetAngle, 20.0f + nREG_F(4), 15.0f + nREG_F(5), 0, 0, 0);
+ }
+
+ field_0x65a = 20;
+ break;
+ }
+ }
}
/* 805EAAFC-805EB028 00C7DC 052C+00 1/1 0/0 0/0 .text ChanceTime__8daB_GG_cFv */
void daB_GG_c::ChanceTime() {
- // NONMATCHING
+ if ((mCcCyl.ChkTgHit() && !mCcCyl.ChkTgShield()) || mCcHookCyl.ChkTgHit()) {
+ s16 prev_hp = health;
+ if (mAction == ACTION_FLY && (mMode == 12 || mMode == 13)) {
+ mAction = ACTION_GROUND;
+
+ if (field_0x5ce != 0xFF && dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_offSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ if (field_0x5b6 != 0) {
+ mTimers[2] = 0.8f * l_HIO.takeoff2_time;
+ } else {
+ mTimers[2] = 0.8f * l_HIO.takeoff_time;
+ }
+ }
+
+ mAtInfo.field_0x18 = 0x1E;
+
+ cCcD_Obj* tg_hit_obj;
+ if (mCcCyl.ChkTgHit()) {
+ tg_hit_obj = mCcCyl.GetTgHitObj();
+ mAtInfo.mpCollider = mCcCyl.GetTgHitObj();
+ } else {
+ tg_hit_obj = mCcHookCyl.GetTgHitObj();
+ mAtInfo.mpCollider = mCcHookCyl.GetTgHitObj();
+ }
+
+ u8 sp8 = 0;
+
+ if (!tg_hit_obj->ChkAtType(AT_TYPE_SHIELD_ATTACK)) {
+ At_Check();
+ }
+
+ u8 spA = mSubAction;
+ field_0x5cc = 10;
+ mSubAction = SUBACT_DAMAGE;
+ mMode = 2;
+
+ if (tg_hit_obj->ChkAtType(AT_TYPE_SHIELD_ATTACK)) {
+ if (field_0x5f0 <= 1) {
+ field_0x5f0++;
+ SetAnm(0x16, 0, 5.0f, 1.0f);
+ onHeadLockFlg();
+ mMode = 4;
+ mSubAction = SUBACT_DAMAGE;
+
+ mCcShieldSph.OffTgSetBit();
+ mCcCyl.OffTgShield();
+ mCcShieldSph.OffTgShield();
+
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+ At_Check();
+ field_0x5cc = 20;
+ } else {
+ mAtInfo.field_0x18 = 0x2A;
+ field_0x5cc = 15;
+ mSubAction = SUBACT_DAMAGE;
+ SetAnm(24, 0, 1.0f, 1.0f);
+
+ mCcShieldSph.OnTgSetBit();
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+ mMode = 0;
+
+ cXyz sp14(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mDoMtx_stack_c::multVec(&sp14, &sp14);
+ dComIfGp_setHitMark(2, this, &sp14, NULL, NULL, 0);
+
+ At_Check();
+ }
+ } else if (tg_hit_obj->ChkAtType(AT_TYPE_HOOKSHOT)) {
+ mMode = 10;
+ field_0x5f0 = 0;
+ } else {
+ field_0x5e0++;
+ field_0x5f0 = 0;
+
+ if (mCcCyl.ChkTgHit()) {
+ dComIfGp_setHitMark(1, this, mCcCyl.GetTgHitPosP(), NULL, NULL, 0);
+ } else {
+ dComIfGp_setHitMark(1, this, mCcHookCyl.GetTgHitPosP(), NULL, NULL, 0);
+ }
+
+ mSound.startCreatureVoice(Z2SE_EN_GG_V_DAMAGE, -1);
+
+ u32 cut_type = daPy_getPlayerActorClass()->getCutType();
+ if (cut_type == daPy_py_c::CUT_TYPE_TURN_LEFT || cut_type == daPy_py_c::CUT_TYPE_TURN_RIGHT) {
+ field_0x6bc++;
+ field_0x5cc = 20;
+ }
+ }
+
+ if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_HEAD_JUMP && mType == TYPE_L7_MBOSS) {
+ if (field_0x5b1 == 0) {
+ field_0x5b1 = 1;
+ health = prev_hp;
+ mSound.startCreatureSound(Z2SE_EN_GG_MET_BREAK, 0, -1);
+ }
+
+ mDoMtx_stack_c::copy(mpHelmetModel->getBaseTRMtx());
+ mDoMtx_stack_c::multVecZero(&mHeadPos);
+ mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &mHeadRot);
+
+ field_0x5c4 = 0;
+ SetAction(ACTION_GROUND, SUBACT_DAMAGE, 2);
+ }
+
+ MoveCo();
+ mCcCyl.ClrTgHit();
+ mCcHookCyl.ClrTgHit();
+ mCcShieldSph.OffTgSetBit();
+ }
}
/* 805EB028-805EB090 00CD08 0068+00 2/1 0/0 0/0 .text ArmAngleSet__8daB_GG_cFv */
void daB_GG_c::ArmAngleSet() {
- // NONMATCHING
+ daPy_getPlayerActorClass()->getCutType();
+
+ switch (daPy_getPlayerActorClass()->getCutType()) {
+ case daPy_py_c::CUT_TYPE_NM_RIGHT:
+ case daPy_py_c::CUT_TYPE_FINISH_RIGHT:
+ case daPy_py_c::CUT_TYPE_MORTAL_DRAW_B:
+ mArmL2Rot.y = -0x1130;
+ mArmL1Rot.z = 0x1B58;
+ return;
+ case daPy_py_c::CUT_TYPE_NM_LEFT:
+ case daPy_py_c::CUT_TYPE_FINISH_LEFT:
+ case daPy_py_c::CUT_TYPE_TURN_LEFT:
+ mArmL1Rot.x = -0x3000;
+ return;
+ case daPy_py_c::CUT_TYPE_HEAD_JUMP:
+ case daPy_py_c::CUT_TYPE_FINISH_VERTICAL:
+ case daPy_py_c::CUT_TYPE_JUMP:
+ mArmL2Rot.x = -0x2328;
+ mArmL1Rot.y = 0x3BC4;
+ default:
+ return;
+ }
}
/* 805EB090-805EB5E0 00CD70 0550+00 1/1 0/0 0/0 .text Guard__8daB_GG_cFv */
void daB_GG_c::Guard() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED368-805ED36C 000308 0004+00 0/0 0/0 0/0 .rodata @8733 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8733 = 16.0f;
-COMPILER_STRIP_GATE(0x805ED368, &lit_8733);
-#pragma pop
-
-/* 805ED36C-805ED370 00030C 0004+00 0/0 0/0 0/0 .rodata @8734 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8734 = 6.0f;
-COMPILER_STRIP_GATE(0x805ED36C, &lit_8734);
-#pragma pop
-
-/* 805ED370-805ED374 000310 0004+00 0/0 0/0 0/0 .rodata @8735 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8735 = 27.0f;
-COMPILER_STRIP_GATE(0x805ED370, &lit_8735);
-#pragma pop
-
-/* 805ED374-805ED378 000314 0004+00 0/0 0/0 0/0 .rodata @8736 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8736 = 26.0f;
-COMPILER_STRIP_GATE(0x805ED374, &lit_8736);
-#pragma pop
-
-/* 805ED378-805ED37C 000318 0004+00 0/0 0/0 0/0 .rodata @8737 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8737 = 29.0f;
-COMPILER_STRIP_GATE(0x805ED378, &lit_8737);
-#pragma pop
-
-/* 805ED37C-805ED380 00031C 0004+00 0/0 0/0 0/0 .rodata @8738 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8738 = 190.0f;
-COMPILER_STRIP_GATE(0x805ED37C, &lit_8738);
-#pragma pop
-
-/* 805ED380-805ED384 000320 0004+00 0/0 0/0 0/0 .rodata @8739 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8739 = 226.0f;
-COMPILER_STRIP_GATE(0x805ED380, &lit_8739);
-#pragma pop
-
-/* 805ED384-805ED388 000324 0004+00 0/0 0/0 0/0 .rodata @8740 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8740 = 23.0f;
-COMPILER_STRIP_GATE(0x805ED384, &lit_8740);
-#pragma pop
-
-/* 805ED388-805ED38C 000328 0004+00 0/0 0/0 0/0 .rodata @8741 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8741 = 22.0f;
-COMPILER_STRIP_GATE(0x805ED388, &lit_8741);
-#pragma pop
-
-/* 805ED38C-805ED390 00032C 0004+00 0/0 0/0 0/0 .rodata @8742 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_8742 = 42.0f;
-COMPILER_STRIP_GATE(0x805ED38C, &lit_8742);
-#pragma pop
-
-/* 805ED390-805ED394 000330 0004+00 0/1 0/0 0/0 .rodata @9281 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9281 = -255.0f;
-COMPILER_STRIP_GATE(0x805ED390, &lit_9281);
-#pragma pop
-
-/* 805ED394-805ED398 000334 0004+00 0/1 0/0 0/0 .rodata @9282 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9282 = 32.0f;
-COMPILER_STRIP_GATE(0x805ED394, &lit_9282);
-#pragma pop
+ mCcStts.Move();
+
+ if (field_0x5cc > 0) {
+ mCcCyl.ClrTgHit();
+ mCcShieldSph.ClrTgHit();
+ mCcHookCyl.ClrTgHit();
+ return;
+ }
+
+ if (mCcCyl.ChkTgHit() && !mCcCyl.ChkTgShield()) {
+ ChanceTime();
+ return;
+ }
+
+ if (mCcShieldSph.ChkTgHit() || (mCcCyl.ChkTgShield() && mCcCyl.ChkTgHit()) || mCcHookCyl.ChkTgHit()) {
+ current.angle.y = s_TargetAngle;
+ field_0x5ba = s_TargetAngle;
+ shape_angle.y = s_TargetAngle;
+
+ u8 spC = mSubAction;
+ field_0x6bc = 0;
+ field_0x5e0 = 0;
+ u8 sp8 = 0;
+ mAtInfo.field_0x18 = 0x2A;
+
+ cCcD_Obj* tg_hit_obj;
+ if (mCcCyl.ChkTgHit()) {
+ mAtInfo.mpCollider = mCcCyl.GetTgHitObj();
+ tg_hit_obj = mCcCyl.GetTgHitObj();
+ mCcCyl.GetTgHitPosP();
+ } else if (mCcHookCyl.ChkTgHit()) {
+ mAtInfo.mpCollider = mCcHookCyl.GetTgHitObj();
+ tg_hit_obj = mCcHookCyl.GetTgHitObj();
+ mCcHookCyl.GetTgHitPosP();
+ } else {
+ mAtInfo.mpCollider = mCcShieldSph.GetTgHitObj();
+ tg_hit_obj = mCcShieldSph.GetTgHitObj();
+ mCcShieldSph.GetTgHitPosP();
+ }
+
+ s16 prev_hp = health;
+ At_Check();
+ health = prev_hp;
+ field_0x5cc = 10;
+
+ if (mSubAction == SUBACT_ATTACK && mAction != ACTION_GROUND) {
+ if (mMode == 0 || mMode == 10) {
+ if (tg_hit_obj->ChkAtType(AT_TYPE_HOOKSHOT)) {
+ mMode = 10;
+ mSubAction = SUBACT_DAMAGE;
+ } else {
+ cXyz sp34(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mDoMtx_stack_c::multVec(&sp34, &sp34);
+ dComIfGp_setHitMark(2, this, &sp34, NULL, NULL, 0);
+ }
+ }
+ } else {
+ cXyz sp28(0.0f, 120.0f, 100.0f);
+ cXyz sp1C(0.0f, 0.0f, 0.0f);
+ cLib_offsetPos(&sp1C, &current.pos, shape_angle.y, &sp28);
+
+ cXyz sp10(1.0f, 1.0f, 1.0f);
+
+ if (mAnm == 0x18) {
+ mAnm = 0x17;
+ }
+
+ if (tg_hit_obj->ChkAtType(AT_TYPE_HOOKSHOT)) {
+ mMode = 10;
+ mSubAction = SUBACT_DAMAGE;
+ field_0x5f0 = 0;
+ } else if (tg_hit_obj->ChkAtType(AT_TYPE_8000)) {
+ mMode = 1;
+ mSubAction = SUBACT_DAMAGE;
+ dComIfGp_setHitMark(2, this, &sp1C, NULL, NULL, 0);
+ field_0x5f0 = 0;
+ } else if (tg_hit_obj->ChkAtType(AT_TYPE_SHIELD_ATTACK) && field_0x5f0 <= 1) {
+ field_0x5f0++;
+ cM_rndF(100.0f);
+ SetAnm(0x16, 0, 5.0f, 1.0f);
+ onHeadLockFlg();
+
+ mMode = 4;
+ mSubAction = SUBACT_DAMAGE;
+
+ mCcShieldSph.OffTgSetBit();
+ mCcCyl.OffTgShield();
+ mCcShieldSph.OffTgShield();
+
+ speedF = nREG_F(7);
+ field_0x5bc = 0.0f;
+ } else if (mSubAction != SUBACT_ATTACK) {
+ mSubAction = SUBACT_DAMAGE;
+ mMode = 0;
+
+ if (mAction == ACTION_GROUND) {
+ SetAnm(24, 0, 1.0f, 1.0f);
+ ArmAngleSet();
+ }
+
+ if (tg_hit_obj->ChkAtType(AT_TYPE_NORMAL_SWORD)) {
+ speedF = -10.0f + nREG_F(7);
+ field_0x5bc = 0.0f;
+ } else {
+ speedF = 0.0f;
+ field_0x5bc = 0.0f;
+ }
+
+ dComIfGp_setHitMark(2, this, &sp1C, NULL, NULL, 0);
+ field_0x5f0 = 0;
+ } else {
+ At_Check();
+ mCcShieldSph.OnTgShield();
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ field_0x5f0 = 0;
+ sp1C.set(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mDoMtx_stack_c::multVec(&sp1C, &sp1C);
+ dComIfGp_setHitMark(2, this, &sp1C, NULL, NULL, 0);
+ }
+ }
+
+ mCcHookCyl.ClrTgHit();
+ mCcCyl.ClrTgHit();
+ mCcShieldSph.ClrTgHit();
+ return;
+ }
+
+ ChanceTime();
+}
/* 805EB5E0-805EB8A8 00D2C0 02C8+00 1/1 0/0 0/0 .text Draw__8daB_GG_cFv */
-void daB_GG_c::Draw() {
- // NONMATCHING
+int daB_GG_c::Draw() {
+ J3DModel* model = mpModelMorf->getModel();
+
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(model, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpShieldModel, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpSwordModel, &tevStr);
+
+ if (mType == TYPE_L7_MBOSS && field_0x5b1 != 2) {
+ g_env_light.setLightTevColorType_MAJI(mpHelmetModel, &tevStr);
+ }
+
+ if (field_0x66c != 0) {
+ J3DMaterial* material = model->getModelData()->getMaterialNodePointer(0);
+ material->getTevColor(0)->r = -255.0f * field_0x668;
+ material->getTevColor(0)->g = -255.0f * field_0x668;
+ material->getTevColor(0)->b = -255.0f * field_0x668;
+ }
+
+ mpModelMorf->entryDL();
+ mDoExt_modelUpdateDL(mpShieldModel);
+ mDoExt_modelUpdateDL(mpSwordModel);
+
+ if (mType == TYPE_L7_MBOSS && field_0x5b1 != 2) {
+ mDoExt_modelUpdateDL(mpHelmetModel);
+ }
+
+ cXyz sp8;
+ sp8.set(current.pos.x, 100.0f + current.pos.y, current.pos.z);
+
+ mShadowId = dComIfGd_setShadow(mShadowId, 1, model, &sp8, 3000.0f, 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ dComIfGd_addRealShadow(mShadowId, mpShieldModel);
+ dComIfGd_addRealShadow(mShadowId, mpSwordModel);
+
+ if (mType == TYPE_L7_MBOSS && field_0x5b1 != 2) {
+ dComIfGd_addRealShadow(mShadowId, mpHelmetModel);
+ }
+
+ if (mAnm == 0xD && mpModelMorf->getFrame() > 32.0f) {
+ cLib_chaseF(&field_0x5ac, 0.0f, 0.5f);
+ mDoGph_gInf_c::setBlureRate(field_0x5ac);
+ mDoGph_gInf_c::onBlure();
+ } else {
+ mDoGph_gInf_c::offBlure();
+ }
+
+ return 1;
}
/* 805EB8A8-805EB910 00D588 0068+00 1/1 0/0 0/0 .text Delete__8daB_GG_cFv */
-void daB_GG_c::Delete() {
- // NONMATCHING
+int daB_GG_c::Delete() {
+ dComIfG_resDelete(&mPhase, "B_gg");
+
+ if (mHIOInit) {
+ l_HIOInit = 0;
+ mDoHIO_DELETE_CHILD(l_HIO.id);
+ }
+
+ if (heap != NULL) {
+ mpModelMorf->stopZelAnime();
+ }
+
+ return 1;
}
/* 805EB910-805EB980 00D5F0 0070+00 2/2 0/0 0/0 .text setBaseMtx__8daB_GG_cFv */
void daB_GG_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::scaleM(l_HIO.base_size, l_HIO.base_size, l_HIO.base_size);
+
+ mpModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ mpModelMorf->modelCalc();
}
/* 805EB980-805EB9DC 00D660 005C+00 1/1 0/0 0/0 .text setShieldMtx__8daB_GG_cFv */
void daB_GG_c::setShieldMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xB));
+ mpShieldModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 805EB9DC-805EBA4C 00D6BC 0070+00 1/1 0/0 0/0 .text setSwordMtx__8daB_GG_cFv */
void daB_GG_c::setSwordMtx() {
- // NONMATCHING
+ if (field_0x66d == 0) {
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0x10));
+ mpSwordModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ } else {
+ setSwordMtx1();
+ }
}
/* 805EBA4C-805EBAB8 00D72C 006C+00 1/1 0/0 0/0 .text setSwordMtx1__8daB_GG_cFv */
void daB_GG_c::setSwordMtx1() {
- // NONMATCHING
+ cXyz sp8(-20.0f, 60.0f, 0.0f);
+ mDoMtx_stack_c::transS(mSwordPos);
+ mDoMtx_stack_c::ZXYrotM(mSwordRot);
+ mpSwordModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 805EBAB8-805EBB30 00D798 0078+00 1/1 0/0 0/0 .text setHeadMtx__8daB_GG_cFv */
void daB_GG_c::setHeadMtx() {
- // NONMATCHING
+ if (field_0x5b1 == 0) {
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(5));
+ mpHelmetModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ } else if (field_0x5b1 == 1) {
+ setHeadMtx1();
+ }
}
/* 805EBB30-805EBB7C 00D810 004C+00 1/1 0/0 0/0 .text setHeadMtx1__8daB_GG_cFv */
void daB_GG_c::setHeadMtx1() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(mHeadPos);
+ mDoMtx_stack_c::ZXYrotM(mHeadRot);
+ mpHelmetModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 805EBB7C-805EBB9C 00D85C 0020+00 1/0 0/0 0/0 .text daB_GG_Draw__FP8daB_GG_c */
-static void daB_GG_Draw(daB_GG_c* param_0) {
- // NONMATCHING
+static int daB_GG_Draw(daB_GG_c* a_this) {
+ return a_this->Draw();
}
/* 805EBB9C-805EBBBC 00D87C 0020+00 2/1 0/0 0/0 .text daB_GG_Execute__FP8daB_GG_c */
-static void daB_GG_Execute(daB_GG_c* param_0) {
- // NONMATCHING
+static int daB_GG_Execute(daB_GG_c* a_this) {
+ return a_this->Execute();
}
/* 805EBBBC-805EBBC4 00D89C 0008+00 1/0 0/0 0/0 .text daB_GG_IsDelete__FP8daB_GG_c */
-static bool daB_GG_IsDelete(daB_GG_c* param_0) {
- return true;
+static int daB_GG_IsDelete(daB_GG_c* a_this) {
+ return 1;
}
/* 805EBBC4-805EBBE4 00D8A4 0020+00 1/0 0/0 0/0 .text daB_GG_Delete__FP8daB_GG_c */
-static void daB_GG_Delete(daB_GG_c* param_0) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED398-805ED39C 000338 0004+00 0/1 0/0 0/0 .rodata @9660 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9660 = -700.0f;
-COMPILER_STRIP_GATE(0x805ED398, &lit_9660);
-#pragma pop
-
-/* 805ED39C-805ED3A0 00033C 0004+00 0/1 0/0 0/0 .rodata @9661 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9661 = -60535.0f;
-COMPILER_STRIP_GATE(0x805ED39C, &lit_9661);
-#pragma pop
-
-/* 805ED3A0-805ED3A4 000340 0004+00 0/1 0/0 0/0 .rodata @9662 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9662 = -1000000000.0f;
-COMPILER_STRIP_GATE(0x805ED3A0, &lit_9662);
-#pragma pop
-
-/* 805ED3D4-805ED3D4 000374 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_805ED3E0 = "D_MN07B";
-SECTION_DEAD static char const* const stringBase_805ED3E8 = "B_GG";
-#pragma pop
-
-/* 805EBBE4-805EC424 00D8C4 0840+00 1/1 0/0 0/0 .text Create__8daB_GG_cFv */
-void daB_GG_c::Create() {
- // NONMATCHING
-}
-
-/* 805EC424-805EC5F8 00E104 01D4+00 1/1 0/0 0/0 .text __ct__8daB_GG_cFv */
-daB_GG_c::daB_GG_c() {
- // NONMATCHING
-}
-
-/* 805EC5F8-805EC654 00E2D8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 805EC654-805EC6C4 00E334 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 805EC6C4-805EC734 00E3A4 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
-
-/* 805EC734-805EC77C 00E414 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
-
-/* 805EC77C-805EC848 00E45C 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_SphFv */
-// dCcD_Sph::~dCcD_Sph() {
-extern "C" void __dt__8dCcD_SphFv() {
- // NONMATCHING
+static int daB_GG_Delete(daB_GG_c* a_this) {
+ return a_this->Delete();
}
-/* 805EC848-805EC8CC 00E528 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */
-// dCcD_Sph::dCcD_Sph() {
-extern "C" void __ct__8dCcD_SphFv() {
- // NONMATCHING
-}
-
-/* 805EC8CC-805EC914 00E5AC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
-
-/* 805EC914-805EC95C 00E5F4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
+/* 805EBBE4-805EC424 00D8C4 0840+00 1/1 0/0 0/0 .text Create__8daB_GG_cFv */
+int daB_GG_c::Create() {
+ fopAcM_SetupActor(this, daB_GG_c);
+
+ int phase_state = dComIfG_resLoad(&mPhase, "B_gg");
+ if (phase_state == cPhs_COMPLEATE_e) {
+ OS_REPORT("B_GG PARAM %x\n", fopAcM_GetParam(this));
+ mType = fopAcM_GetParam(this);
+ field_0x5cf = (fopAcM_GetParam(this) & 0xFF0000) >> 0x10;
+
+ if ((mType == TYPE_L7_MBOSS || mType == TYPE_DEFAULT) && dComIfGs_isStageMiddleBoss() && strcmp("D_MN07B", dComIfGp_getStartStageName()) == 0) {
+ dComIfGs_onSwitch(field_0x5cf, fopAcM_GetRoomNo(this));
+ return cPhs_ERROR_e;
+ }
+
+ if (dComIfGs_isSwitch(field_0x5cf, fopAcM_GetRoomNo(this))) {
+ return cPhs_ERROR_e;
+ }
+
+ if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x4A20)) {
+ return cPhs_ERROR_e;
+ }
+
+ if (!l_HIOInit) {
+ l_HIOInit = TRUE;
+ mHIOInit = TRUE;
+ l_HIO.id = mDoHIO_CREATE_CHILD("ガーゴイル", &l_HIO);
+ }
+
+ field_0x5ce = 0x7C;
+ field_0x5d0 = (fopAcM_GetParam(this) & 0xFF000000) >> 0x18;
+
+ gravity = 0.0f;
+
+ attention_info.flags = 4;
+ attention_info.distances[fopAc_attn_BATTLE_e] = 82;
+
+ fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx());
+ fopAcM_SetMin(this, -700.0f, 0.0f, -700.0f);
+ fopAcM_SetMax(this, 700.0f, 700.0f, 700.0f);
+
+ mAcchCir.SetWall(50.0f, 150.0f);
+
+ if (mType != TYPE_L7_MBOSS && mType != TYPE_DEFAULT) {
+ mAcch.ClrRoofNone();
+ mAcch.SetRoofCrrHeight(200.0f);
+ }
+
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
+
+ cXyz sp34(0.0f, 0.0f, -57.0f);
+ field_0x6bc = 0;
+ field_0x5e0 = 0;
+
+ if (mType == TYPE_L7_MBOSS || mType == TYPE_DEFAULT) {
+ if (dComIfGp_getStartStagePoint() == 2 || dComIfGp_getStartStagePoint() == -1) {
+ cDmr_SkipInfo = 0;
+ cXyz sp28(0.0f, 0.0f, -300.0f);
+
+ mAction = ACTION_FLY;
+ mSubAction = SUBACT_WAIT;
+ mMode = 1;
+ mCamMode = 0;
+
+ cXyz sp1C(0.0f, 300.0f + TREG_F(0), -500.0f);
+ cLib_offsetPos(&current.pos, &sp34, cLib_targetAngleY(&sp28, &sp34), &sp1C);
+ Z2GetAudioMgr()->subBgmStart(Z2BGM_GG_MBOSS);
+ old.pos = current.pos;
+ SetAnm(14, 2, 5.0f, 1.0f);
+
+ mCcCyl.OnTgShield();
+ mCcShieldSph.OnTgShield();
+
+ shape_angle.y = cLib_targetAngleY(&current.pos, &sp34);
+ field_0x6be = 0;
+
+ mTimers[0] = 30;
+ mTimers[1] = 0;
+
+ if (field_0x5ce != 0xFF && !dComIfGs_isSwitch(142, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(142, fopAcM_GetRoomNo(this));
+ }
+
+ field_0x560 = l_HIO.max_hp;
+ health = l_HIO.max_hp;
+
+ setBaseMtx();
+ mType = TYPE_L7_MBOSS;
+ dComIfGs_onSwitch(226, fopAcM_GetRoomNo(this));
+ } else {
+ mAction = ACTION_DEMO;
+ mSubAction = SUBACT_WAIT;
+ mMode = 10;
+ mCamMode = 0;
+
+ current.pos = in_pos[2];
+ current.pos.y += 10000.0f;
+ old.pos = current.pos;
+
+ mType = TYPE_L7_MBOSS;
+ }
+ } else if (mType == TYPE_L7_W) {
+ mType = TYPE_L7_W;
+ field_0x560 = 0.5f * l_HIO.max_hp;
+ health = 0.5f * l_HIO.max_hp;
+ mAction = ACTION_FLY;
+ mSubAction = SUBACT_WAIT;
+ mMode = 0;
+ } else if (mType == TYPE_L7_M) {
+ mType = TYPE_L7_M;
+ field_0x560 = 0.5f * l_HIO.max_hp;
+ health = 0.5f * l_HIO.max_hp;
+ mAction = ACTION_FLY;
+ mSubAction = SUBACT_WAIT;
+ mMode = 0;
+ } else if (mType == TYPE_HYRULE_CASTLE) {
+ field_0x560 = 0.5f * l_HIO.max_hp;
+ health = 0.5f * l_HIO.max_hp;
+ mAction = ACTION_DEMO;
+ mSubAction = 2;
+ mMode = 0;
+
+ current.pos.set(-7853.0f + HREG_F(0), -60535.0f + HREG_F(1), 8619.0f + HREG_F(2));
+ old.pos = current.pos;
+
+ if (cDmr_SkipInfo != 0) {
+ cDmr_SkipInfo = 0;
+ mAction = ACTION_FLY;
+ mSubAction = SUBACT_WAIT;
+ mMode = 0;
+ current.pos.set(5930.0f, 3157.0f, 6993.0f);
+ old.pos = current.pos;
+ }
+ } else if (mType == TYPE_CAVE) {
+ mType = TYPE_L7_M;
+ field_0x560 = 0.5f * l_HIO.max_hp;
+ health = 0.5f * l_HIO.max_hp;
+ mAction = ACTION_STOP;
+ mSubAction = SUBACT_WAIT;
+ mMode = 0;
+
+ SetAnm(32, 2, 5.0f, 1.0f);
+ fopAcM_OnStatus(this, 0x200000);
+
+ if (-1000000000.0f != mAcch.GetGroundH()) {
+ current.pos.y = mAcch.GetGroundH();
+ field_0x648 = mAcch.GetGroundH();
+ }
+ }
+
+ mSound.setEnemyName("B_GG");
+ mSound.init(&current.pos, &eyePos, 3, 1);
+ mAtInfo.mpSound = &mSound;
+ mAtInfo.mPowerType = 1;
+
+ initCc();
+
+ fopAcM_setCullSizeFar(this, 3.0f);
+
+ J3DModel* model = mpModelMorf->getModel();
+ model->setUserArea((u32)this);
+
+ for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) {
+ if (i != 0) {
+ model->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack);
+ }
+ }
+
+ field_0x5ac = 150.0f;
+
+ if (mType == TYPE_L7_MBOSS) {
+ mpHelmetModel->setUserArea((u32)this);
+ mpHelmetModel->getModelData()->getJointNodePointer(1)->setCallBack(HeadJointCallBack);
+ mpHelmetModel->getModelData()->getJointNodePointer(2)->setCallBack(HeadJointCallBack);
+ }
+
+ daB_GG_Execute(this);
+ }
+
+ return phase_state;
}
/* 805EC95C-805EC97C 00E63C 0020+00 1/0 0/0 0/0 .text daB_GG_Create__FP10fopAc_ac_c */
-static void daB_GG_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 805EC97C-805EC9C4 00E65C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 805EC9C4-805ECA0C 00E6A4 0048+00 2/1 0/0 0/0 .text __dt__12daB_GG_HIO_cFv */
-daB_GG_HIO_c::~daB_GG_HIO_c() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED3A4-805ED3A8 000344 0004+00 0/1 0/0 0/0 .rodata @9929 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9929 = 1275.0f;
-COMPILER_STRIP_GATE(0x805ED3A4, &lit_9929);
-#pragma pop
-
-/* 805ED3A8-805ED3AC 000348 0004+00 0/1 0/0 0/0 .rodata @9930 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9930 = 5714.0f;
-COMPILER_STRIP_GATE(0x805ED3A8, &lit_9930);
-#pragma pop
-
-/* 805ED3AC-805ED3B0 00034C 0004+00 0/1 0/0 0/0 .rodata @9931 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9931 = 218.0f;
-COMPILER_STRIP_GATE(0x805ED3AC, &lit_9931);
-#pragma pop
-
-/* 805ED3B0-805ED3B4 000350 0004+00 0/1 0/0 0/0 .rodata @9932 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9932 = 950.0f;
-COMPILER_STRIP_GATE(0x805ED3B0, &lit_9932);
-#pragma pop
-
-/* 805ED3B4-805ED3B8 000354 0004+00 0/1 0/0 0/0 .rodata @9933 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9933 = -4937.0f;
-COMPILER_STRIP_GATE(0x805ED3B4, &lit_9933);
-#pragma pop
-
-/* 805ED3B8-805ED3BC 000358 0004+00 0/1 0/0 0/0 .rodata @9934 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9934 = -5560.0f;
-COMPILER_STRIP_GATE(0x805ED3B8, &lit_9934);
-#pragma pop
-
-/* 805ED3BC-805ED3C0 00035C 0004+00 0/1 0/0 0/0 .rodata @9935 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9935 = 222.0f;
-COMPILER_STRIP_GATE(0x805ED3BC, &lit_9935);
-#pragma pop
-
-/* 805ED3C0-805ED3C4 000360 0004+00 0/1 0/0 0/0 .rodata @9936 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9936 = 1185.0f;
-COMPILER_STRIP_GATE(0x805ED3C0, &lit_9936);
-#pragma pop
-
-/* 805ED3C4-805ED3C8 000364 0004+00 0/1 0/0 0/0 .rodata @9937 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9937 = 152.0f;
-COMPILER_STRIP_GATE(0x805ED3C4, &lit_9937);
-#pragma pop
-
-/* 805ED3C8-805ED3CC 000368 0004+00 0/1 0/0 0/0 .rodata @9938 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9938 = -121.0f;
-COMPILER_STRIP_GATE(0x805ED3C8, &lit_9938);
-#pragma pop
-
-/* 805ED3CC-805ED3D0 00036C 0004+00 0/1 0/0 0/0 .rodata @9939 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9939 = -1190.0f;
-COMPILER_STRIP_GATE(0x805ED3CC, &lit_9939);
-#pragma pop
-
-/* 805ED3D0-805ED3D4 000370 0004+00 0/1 0/0 0/0 .rodata @9940 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_9940 = -1080.0f;
-COMPILER_STRIP_GATE(0x805ED3D0, &lit_9940);
-#pragma pop
-
-/* 805ECA0C-805ECBEC 00E6EC 01E0+00 0/0 1/0 0/0 .text __sinit_d_a_b_gg_cpp */
-void __sinit_d_a_b_gg_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x805ECA0C, __sinit_d_a_b_gg_cpp);
-#pragma pop
-
-/* 805ECBEC-805ECBF4 00E8CC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_805ECBEC() {
- // NONMATCHING
-}
-
-/* 805ECBF4-805ECBFC 00E8D4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_805ECBF4() {
- // NONMATCHING
-}
-
-/* 805ED010-805ED04C 00ECF0 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 805ED7E0-805ED7E4 000128 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7E0[4];
-#pragma pop
-
-/* 805ED7E4-805ED7E8 00012C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7E4[4];
-#pragma pop
-
-/* 805ED7E8-805ED7EC 000130 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7E8[4];
-#pragma pop
-
-/* 805ED7EC-805ED7F0 000134 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7EC[4];
-#pragma pop
-
-/* 805ED7F0-805ED7F4 000138 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7F0[4];
-#pragma pop
-
-/* 805ED7F4-805ED7F8 00013C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7F4[4];
-#pragma pop
-
-/* 805ED7F8-805ED7FC 000140 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7F8[4];
-#pragma pop
-
-/* 805ED7FC-805ED800 000144 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED7FC[4];
-#pragma pop
-
-/* 805ED800-805ED804 000148 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED800[4];
-#pragma pop
-
-/* 805ED804-805ED808 00014C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED804[4];
-#pragma pop
-
-/* 805ED808-805ED80C 000150 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED808[4];
-#pragma pop
-
-/* 805ED80C-805ED810 000154 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED80C[4];
-#pragma pop
-
-/* 805ED810-805ED814 000158 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED810[4];
-#pragma pop
-
-/* 805ED814-805ED818 00015C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED814[4];
-#pragma pop
-
-/* 805ED818-805ED81C 000160 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED818[4];
-#pragma pop
-
-/* 805ED81C-805ED820 000164 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED81C[4];
-#pragma pop
-
-/* 805ED820-805ED824 000168 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED820[4];
-#pragma pop
-
-/* 805ED824-805ED828 00016C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED824[4];
-#pragma pop
-
-/* 805ED828-805ED82C 000170 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED828[4];
-#pragma pop
-
-/* 805ED82C-805ED830 000174 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED82C[4];
-#pragma pop
-
-/* 805ED830-805ED834 000178 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED830[4];
-#pragma pop
+static int daB_GG_Create(fopAc_ac_c* i_this) {
+ return ((daB_GG_c*)i_this)->Create();
+}
-/* 805ED834-805ED838 00017C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED834[4];
-#pragma pop
+/* 805ED5E0-805ED600 -00001 0020+00 1/0 0/0 0/0 .data l_daB_GG_Method */
+static actor_method_class l_daB_GG_Method = {
+ (process_method_func)daB_GG_Create,
+ (process_method_func)daB_GG_Delete,
+ (process_method_func)daB_GG_Execute,
+ (process_method_func)daB_GG_IsDelete,
+ (process_method_func)daB_GG_Draw,
+};
-/* 805ED838-805ED83C 000180 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED838[4];
-#pragma pop
+/* 805ED600-805ED630 -00001 0030+00 0/0 0/0 1/0 .data g_profile_B_GG */
+extern actor_process_profile_definition g_profile_B_GG = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_B_GG, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daB_GG_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 230, // mPriority
+ &l_daB_GG_Method, // sub_method
+ 0x000C0100, // mStatus
+ fopAc_ENEMY_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
-/* 805ED83C-805ED840 000184 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805ED83C[4];
-#pragma pop
-
-/* 805ED840-805ED844 000188 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805ED840[4];
-#pragma pop
-
-/* 805ED3D4-805ED3D4 000374 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+AUDIO_INSTANCES