#ifndef D_A_BGN_H #define D_A_BGN_H #include "f_op/f_op_actor.h" #include "m_Do/m_Do_ext.h" #include "d/d_cc_d.h" #include "d/d_particle.h" extern J3DDrawBuffer* dComIfGd_getOpaListSky(); // This class seems like it would be defined in m_Do_ext.h, but the weak function ordering indicates it's from a different header. // Strangely, mDoExt_J3DModelPacketS::setMaterial is defined inside of the d_a_bgn.cpp REL, indicating the class may be from this header. // It's unclear why the developers would do it this way. class mDoExt_J3DModelPacketS : public J3DPacket { public: mDoExt_J3DModelPacketS() {} ~mDoExt_J3DModelPacketS() {} void setModel(J3DModel* model) { mpModel = model; } void update() { dComIfGd_getOpaListSky()->entryImm(this, 0); } void draw(); void setMaterial(); public: /* 0x10 */ J3DModel* mpModel; }; // Size: 0x14 struct part_s { /* 0x000 */ J3DModel* mpPartModel; /* 0x004 */ mDoExt_J3DModelPacketS m004; /* 0x018 */ dKy_tevstr_c mPartTevStr; /* 0x0C8 */ s16 m0C8; /* 0x0C8 */ u8 m0CA[0x0CC - 0x0CA]; /* 0x0CC */ f32 m0CC; /* 0x0D0 */ s16 mPartArrowHitFlashTimer; /* 0x0D2 */ s8 m0D2; /* 0x0D3 */ u8 m0D3[0x0D4 - 0x0D3]; /* 0x0D4 */ cXyz m0D4; /* 0x0E0 */ csXyz m0E0; /* 0x0E6 */ u8 m0E6[0x0F4 - 0x0E6]; /* 0x0F4 */ f32 m0F4; /* 0x0F8 */ dCcD_Sph mPartSph; /* 0x224 */ cXyz m224; #if VERSION > VERSION_DEMO /* 0x230 */ JPABaseEmitter* mpPartArrowHitEmitter1; /* 0x234 */ JPABaseEmitter* mpPartArrowHitEmitter2; /* 0x238 */ s16 mPartArrowHitEffectTimer; /* 0x23A */ u8 m23A[0x23C - 0x23A]; #endif }; // Size: 0x23C struct bgn_himo_s { /* 0x000 */ cXyz m000[60]; }; struct move_s { /* 0x000 */ bgn_himo_s mHimo; /* 0x2D0 */ u8 m2D0; /* 0x2D1 */ u8 m2D1[0x2D4 - 0x2D1]; /* 0x2D4 */ cXyz m2D4; /* 0x2E0 */ csXyz m2E0; /* 0x2E6 */ u8 m2E6[0x2E8 - 0x2E6]; /* 0x2E8 */ f32 m2E8; /* 0x2EC */ f32 m2EC; /* 0x2F0 */ u8 m2F0[0x2F4 - 0x2F0]; /* 0x2F4 */ f32 m2F4; /* 0x2F8 */ s16 m2F8; /* 0x2FA */ s16 m2FA; /* 0x2FC */ s16 m2FC; /* 0x2FE */ s16 m2FE; /* 0x300 */ s16 m300; /* 0x302 */ u8 m302[0x304 - 0x302]; /* 0x304 */ f32 m304; /* 0x308 */ s8 m308; /* 0x309 */ u8 m309[0x30C - 0x309]; }; // Size: 0x30C struct bgn_class { /* 0x0000 */ fopEn_enemy_c actor; /* 0x02AC */ request_of_phase_process_class mPhase; /* 0x02B4 */ u8 m02B4; /* 0x02B5 */ s8 m02B5; /* 0x02B6 */ u8 m02B6[0x02B8 - 0x02B6]; /* 0x02B8 */ mDoExt_McaMorf* mpMorf; /* 0x02BC */ J3DModel* mpChestModel; /* 0x02C0 */ mDoExt_J3DModelPacketS m02C0; #if VERSION > VERSION_DEMO /* 0x02D4 */ JPABaseEmitter* mpArrowHitEmitter1; /* 0x02D8 */ JPABaseEmitter* mpArrowHitEmitter2; /* 0x02DC */ s16 mArrowHitEffectTimer; /* 0x02DE */ u8 m02DE[0x02E0 - 0x02DE]; #endif /* 0x02E0 */ J3DModel* mpJyakutenCModel; // Weak point (1 hit left) /* 0x02E4 */ J3DModel* mpJyakutenBModel; // Weak point (2 hits left) /* 0x02E8 */ J3DModel* mpJyakutenAModel; // Weak point (3 hits left) /* 0x02EC */ mDoExt_brkAnm* mJyakutenCBrkAnm; /* 0x02F0 */ mDoExt_brkAnm* mJyakutenBBrkAnm; /* 0x02F4 */ u8 m02F4[0x02F8 - 0x02F4]; /* 0x02F8 */ s16 m02F8; /* 0x02FA */ u8 m02FA[0x02FC - 0x02FA]; /* 0x02FC */ f32 m02FC; /* 0x0300 */ s16 mArrowHitFlashTimer; /* 0x0302 */ s16 m0302; /* 0x0304 */ s16 m0304; /* 0x0306 */ u8 m0306[0x0308 - 0x0306]; /* 0x0308 */ cXyz m0308; /* 0x0314 */ part_s mHeadParts[2]; /* 0x078C */ part_s mPelvisParts[2]; /* 0x0C04 */ part_s mLeftArmParts[21]; /* 0x3AF0 */ part_s mRightArmParts[21]; /* 0x69DC */ part_s mLeftLegParts[4]; /* 0x72CC */ part_s mRightLegParts[4]; /* 0x7BBC */ part_s mTailParts[21]; /* 0xAAA8 */ move_s mAAA8[8]; /* 0xC308 */ cXyz mC308; /* 0xC314 */ csXyz mC314; /* 0xC31A */ s16 mC31A; /* 0xC31C */ u8 mC31C[0xC324 - 0xC31C]; /* 0xC324 */ f32 mC324[2]; /* 0xC32C */ f32 mC32C[2]; /* 0xC334 */ f32 mC334; /* 0xC338 */ f32 mC338; /* 0xC33C */ cXyz mC33C[8]; /* 0xC39C */ mDoExt_3DlineMat1_c mBlueRopeMat; /* 0xC3D8 */ mDoExt_3DlineMat1_c mRedRopeMat; #if VERSION > VERSION_DEMO /* 0xC414 */ mDoExt_3DlineMat1_c mDefeatCSRopeMat; // Only used when Puppet Ganon disappears /* 0xC450 */ cXyz mC450[60]; /* 0xC720 */ s8 mC720; /* 0xC721 */ u8 mC721[0xC724 - 0xC721]; /* 0xC724 */ f32 mC724; #endif /* 0xC728 */ cXyz mC728; /* 0xC734 */ cXyz mC734; /* 0xC740 */ u8 mC740[0xC744 - 0xC740]; /* 0xC744 */ s16 mC744; /* 0xC746 */ s16 mC746; /* 0xC748 */ s16 mC748; /* 0xC74A */ s16 mC74A; /* 0xC74C */ s16 mC74C; /* 0xC74E */ s16 mC74E; /* 0xC750 */ s16 mC750; /* 0xC752 */ s16 mC752; /* 0xC754 */ s16 mC754; /* 0xC756 */ u8 mC756[0xC758 - 0xC756]; /* 0xC758 */ cXyz mC758; /* 0xC764 */ s16 mC764; /* 0xC766 */ u8 mC766[0xC76C - 0xC766]; /* 0xC76C */ f32 mC76C; /* 0xC770 */ s16 mC770; /* 0xC772 */ u8 mC772[0xC774 - 0xC772]; /* 0xC774 */ f32 mC774; /* 0xC778 */ s8 mC778; /* 0xC779 */ s8 mC779; /* 0xC772 */ u8 mC77A[0xC77C - 0xC77A]; /* 0xC77C */ cXyz mC77C; /* 0xC788 */ cXyz mC788; /* 0xC794 */ cXyz mC794; /* 0xC7A0 */ cXyz mC7A0; /* 0xC7AC */ s16 mC7AC[5]; /* 0xC7B6 */ s16 mC7B6; /* 0xC7B8 */ s16 mC7B8; /* 0xC7BA */ u8 mC7BA[0xC7BC - 0xC7BA]; /* 0xC7BC */ f32 mC7BC; /* 0xC7C0 */ dCcD_Stts mStts; /* 0xC7FC */ dCcD_Sph mC7FC; /* 0xC928 */ dCcD_Sph mCoreSph; /* 0xCA54 */ cXyz mCA54; #if VERSION > VERSION_DEMO /* 0xCA60 */ s16 mCA60; #endif /* 0xCA62 */ s8 mCSMode; /* 0xCA63 */ u8 mCA63[0xCA64 - 0xCA63]; /* 0xCA64 */ s16 mKSubCount; /* 0xCA66 */ u8 mCA66[0xCA68 - 0xCA66]; /* 0xCA68 */ cXyz mCSCamEye; /* 0xCA74 */ cXyz mCA74; /* 0xCA80 */ cXyz mCSCamCenter; /* 0xCA8C */ u8 mCA8C[0xCA98 - 0xCA8C]; /* 0xCA98 */ f32 mCA98; /* 0xCA9C */ f32 mCA9C; /* 0xCAA0 */ f32 mCSFovY; /* 0xCAA4 */ J3DModel* mpWater0Model; /* 0xCAA8 */ J3DModel* mpWater1Model; /* 0xCAAC */ dKy_tevstr_c mWaterTevStr; /* 0xCB5C */ J3DModel* mpRoomReflectionModel; /* 0xCB60 */ mDoExt_J3DModelPacketS mCB60; /* 0xCB74 */ dKy_tevstr_c mRoomTevStr; /* 0xCC24 */ mDoExt_J3DModelPacketS mCC24; /* 0xCC38 */ s8 mCC38; /* 0xCC39 */ u8 mCC39[0xCC3C - 0xCC39]; /* 0xCC3C */ dPa_smokeEcallBack mPunchSmokeCb[2]; /* 0xCC7C */ s8 mKeeseSpawnNum; /* 0xCC7D */ u8 mCC7D[0xCC80 - 0xCC7D]; /* 0xCC80 */ f32 mCC80; /* 0xCC84 */ f32 mCC84; /* 0xCC88 */ f32 mCC88; /* 0xCC8C */ JPABaseEmitter* mCC8C; /* 0xCC90 */ s8 mCC90; /* 0xCC91 */ u8 mCC91; /* 0xCC92 */ u8 mCC92[0xCC94 - 0xCC92]; }; // Size: 0xCC94 #endif /* D_A_BGN_H */