mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-12 13:34:46 -04:00
Bosses: Demo matches + more cleanup (#972)
Co-authored-by: < >
This commit is contained in:
+3
-3
@@ -1575,14 +1575,14 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_bigelf"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_bk"),
|
||||
ActorRel(NonMatching, "d_a_bl"),
|
||||
ActorRel(NonMatching, "d_a_bmd"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01"), "d_a_bmd"),
|
||||
ActorRel(NonMatching, "d_a_bmdfoot"),
|
||||
ActorRel(NonMatching, "d_a_bmdhand"),
|
||||
ActorRel(MatchingFor("D44J01"), "d_a_bmdhand"),
|
||||
ActorRel(NonMatching, "d_a_bo"),
|
||||
ActorRel(Matching, "d_a_boss_item"),
|
||||
ActorRel(NonMatching, "d_a_bpw"),
|
||||
ActorRel(NonMatching, "d_a_bst"),
|
||||
ActorRel(NonMatching, "d_a_btd"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01"), "d_a_btd"),
|
||||
ActorRel(NonMatching, "d_a_bwd"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_bwdg"),
|
||||
ActorRel(Matching, "d_a_bwds"),
|
||||
|
||||
+10
-10
@@ -11,15 +11,15 @@
|
||||
struct bmd_class {
|
||||
/* 0x000 */ fopEn_enemy_c actor;
|
||||
/* 0x2AC */ request_of_phase_process_class mPhs;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* mpMorf;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* mpBodyMorf;
|
||||
/* 0x2B8 */ mDoExt_brkAnm* mpBrkAnm;
|
||||
/* 0x2BC */ mDoExt_btkAnm* mpBtkAnm;
|
||||
/* 0x2C0 */ mDoExt_McaMorf* m2C0;
|
||||
/* 0x2C4 */ mDoExt_McaMorf* m2C4;
|
||||
/* 0x2C8 */ mDoExt_McaMorf* m2C8;
|
||||
/* 0x2CC */ J3DModel* m2CC;
|
||||
/* 0x2D0 */ J3DModel* m2D0;
|
||||
/* 0x2D4 */ mDoExt_brkAnm* m2D4;
|
||||
/* 0x2C0 */ mDoExt_McaMorf* mpHeadMorf;
|
||||
/* 0x2C4 */ mDoExt_McaMorf* mpHeadDeadMorf;
|
||||
/* 0x2C8 */ mDoExt_McaMorf* mpMakarMorf;
|
||||
/* 0x2CC */ J3DModel* mpMakarFaceModel;
|
||||
/* 0x2D0 */ J3DModel* mpR00_EFModel;
|
||||
/* 0x2D4 */ mDoExt_brkAnm* mpR00_EFBrk;
|
||||
/* 0x2D8 */ f32 m2D8;
|
||||
/* 0x2DC */ s8 m2DC;
|
||||
/* 0x2DD */ u8 m2DD[0x2E0 - 0x2DD];
|
||||
@@ -76,12 +76,12 @@ struct bmd_class {
|
||||
/* 0xA88 */ s16 mA88[2];
|
||||
/* 0xA8C */ s16 mA8C;
|
||||
/* 0xA8E */ u8 mA8E[0xA90 - 0xA8E];
|
||||
/* 0xA90 */ dPa_smokeEcallBack mA90[7];
|
||||
/* 0xA90 */ dPa_smokeEcallBack mSmokeCb[7];
|
||||
/* 0xB70 */ u8 mB70;
|
||||
/* 0xB71 */ s8 mB71;
|
||||
#if VERSION > VERSION_DEMO
|
||||
#if VERSION > VERSION_DEMO
|
||||
/* 0xB72 */ s16 mB72;
|
||||
#endif
|
||||
#endif
|
||||
/* 0xB74 */ s16 mB74;
|
||||
/* 0xB76 */ s16 mB76;
|
||||
/* 0xB78 */ s16 mB78;
|
||||
|
||||
@@ -5,12 +5,10 @@
|
||||
#include "d/d_particle.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
|
||||
class bmdfoot_class {
|
||||
public:
|
||||
/* 0x000 */ fopAc_ac_c actor;
|
||||
/* 0x290 */ u8 m290[0x2AC - 0x290];
|
||||
/* 0x2AC */ request_of_phase_process_class m2AC;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* m2B4;
|
||||
struct bmdfoot_class {
|
||||
/* 0x000 */ fopEn_enemy_c actor;
|
||||
/* 0x2AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* mpBodyVineMorf;
|
||||
/* 0x2B8 */ s16 m2B8;
|
||||
/* 0x2BA */ s16 m2BA;
|
||||
/* 0x2BC */ s16 m2BC;
|
||||
@@ -25,15 +23,15 @@ public:
|
||||
/* 0x3F4 */ u8 m3F4;
|
||||
/* 0x3F5 */ u8 m3F5[0x3F8 - 0x3F5];
|
||||
/* 0x3F8 */ cXyz m3F8[3];
|
||||
/* 0x41C */ dPa_followEcallBack m41C[3];
|
||||
/* 0x458 */ dPa_smokeEcallBack m458[2];
|
||||
/* 0x41C */ dPa_followEcallBack mAsiWaitFollowCB[3];
|
||||
/* 0x458 */ dPa_smokeEcallBack mLAttackSmoke00CB[2];
|
||||
/* 0x498 */ cXyz m498[2];
|
||||
/* 0x4B0 */ dPa_smokeEcallBack m4B0;
|
||||
/* 0x4D0 */ dCcD_Stts m4D0;
|
||||
/* 0x50C */ dCcD_Sph m50C[5];
|
||||
/* 0x4B0 */ dPa_smokeEcallBack mLAttackSmoke01CB;
|
||||
/* 0x4D0 */ dCcD_Stts mStts;
|
||||
/* 0x50C */ dCcD_Sph mSph[5];
|
||||
/* 0xAE8 */ cXyz mAE8;
|
||||
/* 0xAF4 */ mDoExt_McaMorf* mAF4;
|
||||
/* 0xAF8 */ dKy_tevstr_c mAF8;
|
||||
/* 0xAF4 */ mDoExt_McaMorf* mpFloorVineMorf;
|
||||
/* 0xAF8 */ dKy_tevstr_c mTevstr;
|
||||
/* 0xBA8 */ u8 mBA8;
|
||||
/* 0xBA9 */ u8 mBA9[0xBAC - 0xBA9];
|
||||
/* 0xBAC */ cXyz mBAC;
|
||||
|
||||
@@ -13,8 +13,8 @@ struct hand_s {
|
||||
|
||||
struct bmdhand_class {
|
||||
/* 0x000 */ fopEn_enemy_c actor;
|
||||
/* 0x2AC */ request_of_phase_process_class m2AC;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* m2B4;
|
||||
/* 0x2AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* mpMorf;
|
||||
/* 0x2B8 */ s16 m2B8;
|
||||
/* 0x2BA */ s16 m2BA;
|
||||
/* 0x2BC */ s16 m2BC;
|
||||
@@ -39,8 +39,8 @@ struct bmdhand_class {
|
||||
/* 0x31C */ f32 m31C;
|
||||
/* 0x320 */ f32 m320;
|
||||
/* 0x324 */ hand_s m324[20];
|
||||
/* 0x554 */ mDoExt_3DlineMat1_c m554;
|
||||
/* 0x590 */ dCcD_Stts m590;
|
||||
/* 0x554 */ mDoExt_3DlineMat1_c mLineMat;
|
||||
/* 0x590 */ dCcD_Stts mStts;
|
||||
/* 0x5CC */ dCcD_Sph m5CC;
|
||||
/* 0x6F8 */ dCcD_Sph m6F8;
|
||||
/* 0x824 */ u8 m824;
|
||||
|
||||
+21
-54
@@ -7,49 +7,16 @@
|
||||
#include "d/d_particle.h"
|
||||
|
||||
struct bpw_class {
|
||||
enum Actor_Type_e {
|
||||
Actor_Type_BODY_e = 0,
|
||||
Actor_Type_KANTERA_e = 1,
|
||||
Actor_Type_DAMAGE_BALL_e = 2,
|
||||
Actor_Type_TORITUKI_e = 3,
|
||||
};
|
||||
|
||||
enum Damage_Action_e {
|
||||
Damage_Action_LINE_e = 0,
|
||||
Damage_Action_DAMAGE_BALL_e = 1,
|
||||
};
|
||||
|
||||
enum Action_e {
|
||||
Action_MOVE_DOUSA_e = 0,
|
||||
Action_ATTACK_KOUGEKI_e = 1,
|
||||
Action_BODY_DOWN_KARADA_TAORE_e = 2,
|
||||
Action_DAMAGE_e = 3,
|
||||
Action_SEPARATION_BUNRI_DOUSA_e = 4,
|
||||
Action_START_DEMO_e = 20,
|
||||
};
|
||||
|
||||
enum Action_State_Type_e {
|
||||
Action_State_DAMAGE_CARRIED_e = 0x54,
|
||||
Action_State_DAMAGE_THROWN_e = 0x55,
|
||||
Action_State_DAMAGE_HIT_e = 0x65,
|
||||
Action_State_SEPARATE_BUNRI_DOUSA_INIT_e = 0x6E,
|
||||
Action_State_SEPARATE_BUNRI_DOUSA_EXECUTE_e = 0x6F,
|
||||
Action_State_SEPARATE_BUNRI_DOUSA_END_INIT_e = 0x72,
|
||||
Action_State_SEPARATE_BUNRI_DOUSA_END_GATHER_e = 0x73,
|
||||
Action_State_SEPARATE_BUNRI_DOUSA_END_GROW_e = 0x74,
|
||||
Action_State_SEPARATE_BUNRI_DOUSA_END_FINISH_e = 0x75,
|
||||
};
|
||||
|
||||
/* 0x000 */ fopEn_enemy_c actor;
|
||||
/* 0x2AC */ request_of_phase_process_class m2AC;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* mpAnim;
|
||||
/* 0x2AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x2B4 */ mDoExt_McaMorf* mpMorf;
|
||||
/* 0x2B8 */ u8 m2B8[0x2BC - 0x2B8];
|
||||
/* 0x2BC */ mDoExt_brkAnm* mBrkAnim;
|
||||
/* 0x2C0 */ mDoExt_brkAnm* mKanteraAnim;
|
||||
/* 0x2C4 */ mDoExt_brkAnm* m2C4;
|
||||
/* 0x2C8 */ mDoExt_brkAnm* m2C8;
|
||||
/* 0x2CC */ mDoExt_brkAnm* m2CC;
|
||||
/* 0x2D0 */ mDoExt_brkAnm* m2D0;
|
||||
/* 0x2BC */ mDoExt_brkAnm* mpLightFreezeBrkAnm; // Freezing before falling to the ground
|
||||
/* 0x2C0 */ mDoExt_brkAnm* mpLanternGlowBrkAnm;
|
||||
/* 0x2C4 */ mDoExt_brkAnm* mpLightStunBrkAnm; // Hit with light from the Mirror Shield before freezing
|
||||
/* 0x2C8 */ mDoExt_brkAnm* mpCurseStartBrkAnm; // Falling on Link and inverting the controls
|
||||
/* 0x2CC */ mDoExt_brkAnm* mpCurseEndBrkAnm;
|
||||
/* 0x2D0 */ mDoExt_brkAnm* mpDefaultBrkAnm;
|
||||
/* 0x2D4 */ Mtx m2D4;
|
||||
/* 0x304 */ cXyz m304[3];
|
||||
/* 0x328 */ cXyz m328[3];
|
||||
@@ -73,7 +40,7 @@ struct bpw_class {
|
||||
/* 0x3DC */ u8 mType;
|
||||
/* 0x3DD */ u8 mUnknownParam2;
|
||||
/* 0x3DE */ u8 mLightState;
|
||||
/* 0x3DF */ u8 m3DF;
|
||||
/* 0x3DF */ u8 mHitType;
|
||||
/* 0x3E0 */ u8 m3E0;
|
||||
/* 0x3E1 */ u8 m3E1;
|
||||
/* 0x3E2 */ u8 m3E2;
|
||||
@@ -94,9 +61,9 @@ struct bpw_class {
|
||||
/* 0x3FC */ fpc_ProcID m3FC;
|
||||
/* 0x400 */ fpc_ProcID m400;
|
||||
/* 0x404 */ fpc_ProcID m404;
|
||||
#if VERSION > VERSION_DEMO
|
||||
#if VERSION > VERSION_DEMO
|
||||
/* 0x408 */ s16 m408;
|
||||
#endif
|
||||
#endif
|
||||
/* 0x40C */ cXyz m40C;
|
||||
/* 0x418 */ cXyz m418;
|
||||
/* 0x424 */ cXyz m424;
|
||||
@@ -131,31 +98,31 @@ struct bpw_class {
|
||||
/* 0x4A4 */ f32 m4A4;
|
||||
/* 0x4A8 */ f32 m4A8;
|
||||
/* 0x4AC */ int mChildPoeIds[15];
|
||||
/* 0x4E8 */ u32 m4E8;
|
||||
/* 0x4EC */ LIGHT_INFLUENCE m4EC;
|
||||
#if VERSION == VERSION_DEMO
|
||||
/* 0x4E8 */ u32 mShadowId;
|
||||
/* 0x4EC */ LIGHT_INFLUENCE mLightInfluence;
|
||||
#if VERSION == VERSION_DEMO
|
||||
/* 0x508 */ JPABaseEmitter* m508_demo;
|
||||
/* 0x50C */ JPABaseEmitter* m50C_demo;
|
||||
/* 0x510 */ JPABaseEmitter* m510_demo;
|
||||
#endif
|
||||
#endif
|
||||
/* 0x50C */ dPa_smokeEcallBack m50C;
|
||||
#if VERSION == VERSION_DEMO
|
||||
#if VERSION == VERSION_DEMO
|
||||
/* 0x534 */ JPABaseEmitter* m534_demo;
|
||||
/* 0x538 */ JPABaseEmitter* m538_demo;
|
||||
/* 0x53C */ JPABaseEmitter* m53C_demo;
|
||||
/* 0x540 */ JPABaseEmitter* m540_demo;
|
||||
#else
|
||||
#else
|
||||
/* 0x52C */ dPa_followEcallBack m52C;
|
||||
/* 0x540 */ dPa_followEcallBack m540;
|
||||
#endif
|
||||
#endif
|
||||
/* 0x554 */ dPa_followEcallBack m554;
|
||||
/* 0x568 */ dPa_followEcallBack mFire1Dousa_Pa_followEcallBack;
|
||||
/* 0x57C */ dPa_followEcallBack mFire1Dousa_Pa_followEcallBack2;
|
||||
/* 0x590 */ dPa_followEcallBack m590;
|
||||
#if VERSION == VERSION_DEMO
|
||||
#if VERSION == VERSION_DEMO
|
||||
/* 0x594 */ JPABaseEmitter* m594_demo;
|
||||
/* 0x598 */ JPABaseEmitter* m598_demo;
|
||||
#endif
|
||||
#endif
|
||||
/* 0x5A4 */ dPa_followEcallBack mFireDousa2_Pa_followEcallBack;
|
||||
/* 0x5B8 */ dPa_followEcallBack mFireDousa2_Pa_followEcallBack2;
|
||||
/* 0x5CC */ dPa_followEcallBack m5CC;
|
||||
@@ -175,7 +142,7 @@ struct bpw_class {
|
||||
/* 0x9F4 */ dCcD_Sph mBodyAtSph;
|
||||
/* 0xB20 */ dCcD_Sph mKanteraCoSph;
|
||||
/* 0xC4C */ dCcD_Sph mDamageBallCoSph;
|
||||
/* 0xD78 */ mDoExt_invisibleModel mD78;
|
||||
/* 0xD78 */ mDoExt_invisibleModel mInvisibleModel;
|
||||
};
|
||||
|
||||
#endif /* D_A_BPW_H */
|
||||
|
||||
+19
-19
@@ -27,17 +27,17 @@ struct btd_sibuki_s {
|
||||
|
||||
struct btd_class {
|
||||
/* 0x0000 */ fopEn_enemy_c actor;
|
||||
/* 0x02AC */ request_of_phase_process_class m02AC;
|
||||
/* 0x02B4 */ request_of_phase_process_class m02B4;
|
||||
/* 0x02BC */ mDoExt_McaMorf* m02BC;
|
||||
/* 0x02C0 */ mDoExt_btkAnm* btk;
|
||||
/* 0x02C4 */ mDoExt_brkAnm* brk;
|
||||
/* 0x02C8 */ mDoExt_McaMorf* m02C8;
|
||||
/* 0x02CC */ mDoExt_btkAnm* btkS;
|
||||
/* 0x02D0 */ mDoExt_brkAnm* brkS;
|
||||
/* 0x02D4 */ mDoExt_McaMorf* m02D4;
|
||||
/* 0x02D8 */ mDoExt_btkAnm* m02D8;
|
||||
/* 0x02DC */ mDoExt_brkAnm* m02DC;
|
||||
/* 0x02AC */ request_of_phase_process_class mPhaseBtd;
|
||||
/* 0x02B4 */ request_of_phase_process_class mPhaseMagma;
|
||||
/* 0x02BC */ mDoExt_McaMorf* mpPhase1Morf;
|
||||
/* 0x02C0 */ mDoExt_btkAnm* btk; // First phase
|
||||
/* 0x02C4 */ mDoExt_brkAnm* brk; // First phase
|
||||
/* 0x02C8 */ mDoExt_McaMorf* mpPhase2Morf;
|
||||
/* 0x02CC */ mDoExt_btkAnm* btkS; // Second phase
|
||||
/* 0x02D0 */ mDoExt_brkAnm* brkS; // Second phase
|
||||
/* 0x02D4 */ mDoExt_McaMorf* mpDeadHeadMorf;
|
||||
/* 0x02D8 */ mDoExt_btkAnm* mpDeadHeadBtkAnm;
|
||||
/* 0x02DC */ mDoExt_brkAnm* mpDeadHeadBrkAnm;
|
||||
/* 0x02E0 */ u8 m02E0;
|
||||
/* 0x02E1 */ s8 m02E1;
|
||||
/* 0x02E2 */ s16 m02E2;
|
||||
@@ -57,12 +57,12 @@ struct btd_class {
|
||||
/* 0x02FA */ s16 m02FA;
|
||||
/* 0x02FC */ cXyz m02FC[19];
|
||||
/* 0x03E0 */ cXyz m03E0;
|
||||
/* 0x03EC */ dCcD_Stts m03EC;
|
||||
/* 0x0428 */ dCcD_Sph m0428[19];
|
||||
/* 0x1A6C */ dCcD_Sph m1A6C;
|
||||
/* 0x1B98 */ dCcD_Sph m1B98;
|
||||
/* 0x1CC4 */ dCcD_Sph m1CC4[50];
|
||||
/* 0x575C */ dCcD_Cyl m575C[6];
|
||||
/* 0x03EC */ dCcD_Stts mStts;
|
||||
/* 0x0428 */ dCcD_Sph mAtSphs[19];
|
||||
/* 0x1A6C */ dCcD_Sph mEyeSph;
|
||||
/* 0x1B98 */ dCcD_Sph mFireSph;
|
||||
/* 0x1CC4 */ dCcD_Sph mSibukiSphs[50];
|
||||
/* 0x575C */ dCcD_Cyl mHandCyls[6];
|
||||
/* 0x5E7C */ u8 m5E7C;
|
||||
/* 0x5E7D */ u8 m5E7D[0x5E80 - 0x5E7D];
|
||||
/* 0x5E80 */ f32 m5E80;
|
||||
@@ -97,7 +97,7 @@ struct btd_class {
|
||||
/* 0x6048 */ csXyz m6048;
|
||||
/* 0x604E */ u8 m604E[0x6050 - 0x604E];
|
||||
/* 0x6050 */ dPa_smokeEcallBack mPa_SmokeEcallBack[3];
|
||||
/* 0x60B0 */ LIGHT_INFLUENCE m60B0;
|
||||
/* 0x60B0 */ LIGHT_INFLUENCE mLightInfluence;
|
||||
/* 0x60D0 */ f32 m60D0;
|
||||
/* 0x60D4 */ f32 m60D4;
|
||||
/* 0x60D8 */ u8 m60D8;
|
||||
@@ -106,7 +106,7 @@ struct btd_class {
|
||||
/* 0x60DB */ u8 mKankyoState;
|
||||
/* 0x60DC */ s16 mKankyoTimer;
|
||||
/* 0x60DE */ u8 m60DE[0x60E0 - 0x60DE];
|
||||
/* 0x60E0 */ dKy_tevstr_c m60E0;
|
||||
/* 0x60E0 */ dKy_tevstr_c mTevstr;
|
||||
/* 0x6190 */ u8 m6190;
|
||||
/* 0x6191 */ u8 m6191[0x6194 - 0x6191];
|
||||
/* 0x6194 */ btd_hahen_s hahen[35];
|
||||
|
||||
+21
-17
@@ -20,14 +20,14 @@ struct bwd_class {
|
||||
/* 0x02B4 */ request_of_phase_process_class mPhaseBwds;
|
||||
/* 0x02BC */ u8 m02BC;
|
||||
/* 0x02BD */ u8 m02BD[0x02BF - 0x02BD];
|
||||
/* 0x02C0 */ mDoExt_McaMorf* m02C0;
|
||||
/* 0x02C4 */ mDoExt_brkAnm* m02C4;
|
||||
/* 0x02C0 */ mDoExt_McaMorf* mpHeadMorf;
|
||||
/* 0x02C4 */ mDoExt_brkAnm* mpHeadBrkAnm;
|
||||
/* 0x02C8 */ f32 m02C8;
|
||||
/* 0x02CC */ J3DModel* m02CC;
|
||||
/* 0x02D0 */ u8 m02D0[0x02D4 - 0x02D0];
|
||||
/* 0x02D4 */ J3DModel* m02D4[20];
|
||||
/* 0x02D4 */ J3DModel* mpBodyModel[20];
|
||||
/* 0x0324 */ J3DModel* m0324[20];
|
||||
/* 0x0374 */ mDoExt_brkAnm* m0374[20];
|
||||
/* 0x0374 */ mDoExt_brkAnm* mpBodyMorf[20];
|
||||
/* 0x0374 */ f32 m03C4[20];
|
||||
/* 0x0414 */ s32 m0414;
|
||||
/* 0x0418 */ cXyz m0418[20];
|
||||
@@ -51,14 +51,14 @@ struct bwd_class {
|
||||
/* 0x17EA */ u8 m17EA[0x17EC - 0x17EA];
|
||||
/* 0x17EC */ J3DModel* m17EC[2];
|
||||
/* 0x17F4 */ mDoExt_btkAnm* m17F4[2];
|
||||
/* 0x17FC */ Mtx m17FC[2];
|
||||
/* 0x185C */ dBgW* m185C[2];
|
||||
/* 0x17FC */ Mtx mBgwMtx1[2];
|
||||
/* 0x185C */ dBgW* mpBgW1[2];
|
||||
/* 0x1864 */ s8 m1864;
|
||||
/* 0x1865 */ s8 m1865;
|
||||
/* 0x1866 */ u8 m1866[0x1868 - 0x1866];
|
||||
/* 0x1868 */ J3DModel* m1868;
|
||||
/* 0x186C */ Mtx m186C;
|
||||
/* 0x189C */ dBgW* m189C;
|
||||
/* 0x1868 */ J3DModel* mpTriforcePlatformModel;
|
||||
/* 0x186C */ Mtx mBgwMtx2;
|
||||
/* 0x189C */ dBgW* mpBgW2;
|
||||
/* 0x18A0 */ cXyz m18A0;
|
||||
/* 0x18AC */ s16 m18AC;
|
||||
/* 0x18AE */ s16 m18AE;
|
||||
@@ -83,7 +83,7 @@ struct bwd_class {
|
||||
/* 0x1900 */ s16 m1900;
|
||||
/* 0x1902 */ s16 m1902;
|
||||
/* 0x1904 */ s32 m1904;
|
||||
/* 0x1908 */ sita_s m1908[32];
|
||||
/* 0x1908 */ sita_s mTongueSegments[32];
|
||||
/* 0x1B88 */ cXyz m1B88;
|
||||
/* 0x1B94 */ cXyz m1B94;
|
||||
/* 0x1BA0 */ f32 m1BA0;
|
||||
@@ -103,10 +103,10 @@ struct bwd_class {
|
||||
#if VERSION == VERSION_USA
|
||||
/* 0x1BC0 */ fpc_ProcID m1BC0;
|
||||
#endif
|
||||
/* 0x1BC4 */ dCcD_Stts mCcD_Stts;
|
||||
/* 0x1C00 */ dCcD_Sph mDamageSpheres[19];
|
||||
/* 0x3244 */ dCcD_Sph mCcD_Sph;
|
||||
/* 0x3370 */ dCcD_Sph mCcD_Sph_Array5[5];
|
||||
/* 0x1BC4 */ dCcD_Stts mStts;
|
||||
/* 0x1C00 */ dCcD_Sph mBodySph[19];
|
||||
/* 0x3244 */ dCcD_Sph mTongueSph;
|
||||
/* 0x3370 */ dCcD_Sph mTongueCoSph[5];
|
||||
/* 0x394C */ s8 m394C;
|
||||
/* 0x394D */ u8 m394D[0x3954 - 0x394D];
|
||||
/* 0x3954 */ cXyz m3954;
|
||||
@@ -128,9 +128,9 @@ struct bwd_class {
|
||||
/* 0x3B08 */ s8 m3B08[2];
|
||||
/* 0x3B0A */ u8 m3B0A[0x3B0C - 0x3B0A];
|
||||
/* 0x3B0C */ cXyz m3B0C[2];
|
||||
/* 0x3B24 */ mDoExt_McaMorf* m3B24[2];
|
||||
/* 0x3B34 */ mDoExt_btkAnm* m3B2C[2];
|
||||
/* 0x3B34 */ mDoExt_brkAnm* m3B34[2];
|
||||
/* 0x3B24 */ mDoExt_McaMorf* mpGspMorf[2];
|
||||
/* 0x3B34 */ mDoExt_btkAnm* mpGspBtkAnm[2];
|
||||
/* 0x3B34 */ mDoExt_brkAnm* mpGspBrkAnm[2];
|
||||
/* 0x3B3C */ f32 m3B3C;
|
||||
/* 0x3B40 */ f32 m3B40;
|
||||
/* 0x3B44 */ f32 m3B44;
|
||||
@@ -140,12 +140,16 @@ struct bwd_class {
|
||||
/* 0x3C15 */ s8 m3C15;
|
||||
/* 0x3C16 */ u8 m3C16[0x3C18 - 0x3C16];
|
||||
/* 0x3C18 */ f32 m3C18;
|
||||
#if VERSION > VERSION_DEMO
|
||||
/* 0x3C1C */ s16 m3C1C;
|
||||
#endif
|
||||
/* 0x3C1E */ s16 m3C1E;
|
||||
/* 0x3C20 */ s16 m3C20;
|
||||
/* 0x3C22 */ s16 m3C22;
|
||||
/* 0x3C24 */ s8 m3C24;
|
||||
#if VERSION > VERSION_DEMO
|
||||
/* 0x3C25 */ u8 m3C25[0x3C28 - 0x3C25];
|
||||
#endif
|
||||
/* 0x3C28 */ cXyz m3C28;
|
||||
/* 0x3C34 */ cXyz m3C34;
|
||||
/* 0x3C40 */ u8 m3C40[0x3C44 - 0x3C40];
|
||||
|
||||
+10
-10
@@ -71,7 +71,7 @@ daBdk_HIO_c::daBdk_HIO_c() {
|
||||
|
||||
/* 0000015C-000001A8 .text kamome_delete_sub__FPvPv */
|
||||
void* kamome_delete_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_KAMOME) {
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_KAMOME) {
|
||||
fopAcM_delete(static_cast<fopAc_ac_c*>(param_1));
|
||||
}
|
||||
return NULL;
|
||||
@@ -79,7 +79,7 @@ void* kamome_delete_sub(void* param_1, void*) {
|
||||
|
||||
/* 000001A8-000001F4 .text kui_delete_sub__FPvPv */
|
||||
void* kui_delete_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_KUI) {
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_KUI) {
|
||||
fopAcM_delete(static_cast<fopAc_ac_c*>(param_1));
|
||||
}
|
||||
return NULL;
|
||||
@@ -87,7 +87,7 @@ void* kui_delete_sub(void* param_1, void*) {
|
||||
|
||||
/* 000001F4-00000240 .text ep_delete_sub__FPvPv */
|
||||
void* ep_delete_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_EP) {
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_EP) {
|
||||
fopAcM_delete(static_cast<fopAc_ac_c*>(param_1));
|
||||
}
|
||||
return NULL;
|
||||
@@ -95,7 +95,7 @@ void* ep_delete_sub(void* param_1, void*) {
|
||||
|
||||
/* 00000240-0000028C .text dk_delete_sub__FPvPv */
|
||||
void* dk_delete_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_DK) {
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_DK) {
|
||||
fopAcM_delete(static_cast<fopAc_ac_c*>(param_1));
|
||||
}
|
||||
return NULL;
|
||||
@@ -104,7 +104,7 @@ void* dk_delete_sub(void* param_1, void*) {
|
||||
/* 0000028C-000002E8 .text obj_delete_sub__FPvPv */
|
||||
void* obj_delete_sub(void* param_1, void*) {
|
||||
fopAc_ac_c* actor = static_cast<fopAc_ac_c*>(param_1);
|
||||
if (fopAc_IsActor(actor) && fopAcM_GetName(actor) == PROC_BDKOBJ
|
||||
if (fopAcM_IsActor(actor) && fopAcM_GetName(actor) == PROC_BDKOBJ
|
||||
&& (fopAcM_GetParam(actor) & 0xF) >= 2) {
|
||||
fopAcM_delete(actor);
|
||||
}
|
||||
@@ -113,7 +113,7 @@ void* obj_delete_sub(void* param_1, void*) {
|
||||
|
||||
/* 000002E8-00000334 .text sea_delete_sub__FPvPv */
|
||||
void* sea_delete_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_Obj_Tide) {
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_Obj_Tide) {
|
||||
fopAcM_delete(static_cast<fopAc_ac_c*>(param_1));
|
||||
}
|
||||
return NULL;
|
||||
@@ -121,7 +121,7 @@ void* sea_delete_sub(void* param_1, void*) {
|
||||
|
||||
/* 00000334-00000380 .text bk_delete_sub__FPvPv */
|
||||
void* bk_delete_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BK) {
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BK) {
|
||||
fopAcM_delete(static_cast<fopAc_ac_c*>(param_1));
|
||||
}
|
||||
return NULL;
|
||||
@@ -129,7 +129,7 @@ void* bk_delete_sub(void* param_1, void*) {
|
||||
|
||||
/* 00000380-000003CC .text boko_delete_sub__FPvPv */
|
||||
void* boko_delete_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BOKO) {
|
||||
if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BOKO) {
|
||||
fopAcM_delete(static_cast<fopAc_ac_c*>(param_1));
|
||||
}
|
||||
return NULL;
|
||||
@@ -138,7 +138,7 @@ void* boko_delete_sub(void* param_1, void*) {
|
||||
/* 000003CC-00000424 .text obj2_delete_sub__FPvPv */
|
||||
void* obj2_delete_sub(void* param_1, void*) {
|
||||
fopAc_ac_c* actor = static_cast<fopAc_ac_c*>(param_1);
|
||||
if (fopAc_IsActor(actor) && fopAcM_GetName(actor) == PROC_BDKOBJ
|
||||
if (fopAcM_IsActor(actor) && fopAcM_GetName(actor) == PROC_BDKOBJ
|
||||
&& actor->model == NULL) {
|
||||
fopAcM_delete(actor);
|
||||
}
|
||||
@@ -1952,7 +1952,7 @@ void end(bdk_class* i_this) {
|
||||
/* 00005EA0-00005F08 .text obj_s_sub__FPvPv */
|
||||
void* obj_s_sub(void* param_1, void*) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)param_1;
|
||||
if (fopAc_IsActor(actor) && fopAcM_GetName(actor) == PROC_BDKOBJ && (fpcM_GetParam(actor) & 0xF) != 0xF && actor->health != 0) {
|
||||
if (fopAcM_IsActor(actor) && fopAcM_GetName(actor) == PROC_BDKOBJ && (fpcM_GetParam(actor) & 0xF) != 0xF && actor->health != 0) {
|
||||
return param_1;
|
||||
}
|
||||
return NULL;
|
||||
|
||||
+250
-231
File diff suppressed because it is too large
Load Diff
+176
-204
@@ -59,86 +59,76 @@ static BOOL nodeCallBack(J3DNode* node, int calcTiming) {
|
||||
/* 000001D8-000002B0 .text daBmdfoot_Draw__FP13bmdfoot_class */
|
||||
static BOOL daBmdfoot_Draw(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
J3DModel* pJVar1;
|
||||
|
||||
if (i_this->mBC8 != 0) {
|
||||
pJVar1 = i_this->m2B4->getModel();
|
||||
J3DModel* model = i_this->mpBodyVineMorf->getModel();
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &actor->current.pos, &actor->tevStr);
|
||||
g_env_light.setLightTevColorType(pJVar1, &actor->tevStr);
|
||||
i_this->btk->entry(pJVar1->getModelData());
|
||||
i_this->m2B4->entryDL();
|
||||
g_env_light.setLightTevColorType(model, &actor->tevStr);
|
||||
i_this->btk->entry(model->getModelData());
|
||||
i_this->mpBodyVineMorf->entryDL();
|
||||
if (i_this->mBA8 >= 10) {
|
||||
pJVar1 = i_this->mAF4->getModel();
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &i_this->mBAC, &i_this->mAF8);
|
||||
g_env_light.setLightTevColorType(pJVar1, &i_this->mAF8);
|
||||
i_this->mAF4->entryDL();
|
||||
model = i_this->mpFloorVineMorf->getModel();
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &i_this->mBAC, &i_this->mTevstr);
|
||||
g_env_light.setLightTevColorType(model, &i_this->mTevstr);
|
||||
i_this->mpFloorVineMorf->entryDL();
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 000002B0-000003D8 .text anm_init__FP13bmdfoot_classifUcfi */
|
||||
void anm_init(bmdfoot_class* i_this, int bckFileIdx, float morf, unsigned char loopMode, float speed, int soundFileIdx) {
|
||||
void anm_init(bmdfoot_class* i_this, int bckFileIdx, f32 morf, unsigned char loopMode, f32 speed, int soundFileIdx) {
|
||||
if (soundFileIdx >= 0) {
|
||||
i_this->m2B4->setAnm(
|
||||
(J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", bckFileIdx),
|
||||
loopMode, morf, speed, 0.0f, -1.0f,
|
||||
dComIfG_getObjectRes("Bmdfoot", soundFileIdx)
|
||||
i_this->mpBodyVineMorf->setAnm(
|
||||
(J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", bckFileIdx), loopMode, morf, speed, 0.0f, -1.0f, dComIfG_getObjectRes("Bmdfoot", soundFileIdx)
|
||||
);
|
||||
} else {
|
||||
i_this->m2B4->setAnm(
|
||||
(J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", bckFileIdx),
|
||||
loopMode, morf, speed, 0.0f, -1.0f,
|
||||
NULL
|
||||
);
|
||||
i_this->mpBodyVineMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", bckFileIdx), loopMode, morf, speed, 0.0f, -1.0f, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* 000003D8-00000440 .text housi_off__FP13bmdfoot_class */
|
||||
void housi_off(bmdfoot_class* i_this) {
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(i_this->m41C); i++) {
|
||||
if (i_this->m41C[i].getEmitter() != NULL) {
|
||||
i_this->m41C[i].getEmitter()->stopCreateParticle();
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->mAsiWaitFollowCB); i++) {
|
||||
if (i_this->mAsiWaitFollowCB[i].getEmitter() != NULL) {
|
||||
i_this->mAsiWaitFollowCB[i].getEmitter()->stopCreateParticle();
|
||||
}
|
||||
}
|
||||
if (i_this->m4B0.getEmitter() != NULL) {
|
||||
i_this->m4B0.remove();
|
||||
if (i_this->mLAttackSmoke01CB.getEmitter() != NULL) {
|
||||
i_this->mLAttackSmoke01CB.remove();
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000440-00000840 .text wait__FP13bmdfoot_class */
|
||||
void wait(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
short sVar2;
|
||||
int iVar3;
|
||||
cXyz local_98;
|
||||
static s32 eff_id[] = {0x0A, 0x0C, 0x11};
|
||||
s32 i;
|
||||
|
||||
iVar3 = i_this->m2B4->getFrame();
|
||||
int frame = i_this->mpBodyVineMorf->getFrame();
|
||||
local_98.setall(0.0f);
|
||||
|
||||
for (i = 0; i < (s32)ARRAY_SIZE(i_this->m3F8); i++) {
|
||||
MTXCopy(i_this->m2B4->getModel()->getAnmMtx(eff_id[i]), *calc_mtx);
|
||||
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->m3F8); i++) {
|
||||
MTXCopy(i_this->mpBodyVineMorf->getModel()->getAnmMtx(eff_id[i]), *calc_mtx);
|
||||
MtxPosition(&local_98, &i_this->m3F8[i]);
|
||||
if (i_this->m3F4 == 0) {
|
||||
dComIfGp_particle_set(dPa_name::ID_AK_SN_BKMASIWAIT00, &i_this->m3F8[i], NULL, NULL, 0xFF, &i_this->m41C[i]);
|
||||
dComIfGp_particle_set(dPa_name::ID_AK_SN_BKMASIWAIT00, &i_this->m3F8[i], NULL, NULL, 0xFF, &i_this->mAsiWaitFollowCB[i]);
|
||||
}
|
||||
if (i_this->m41C[i].getEmitter() != NULL) {
|
||||
if (iVar3 == 0) {
|
||||
i_this->m41C[i].getEmitter()->playCreateParticle();
|
||||
} else if (iVar3 == 20) {
|
||||
i_this->m41C[i].getEmitter()->stopCreateParticle();
|
||||
if (i_this->mAsiWaitFollowCB[i].getEmitter() != NULL) {
|
||||
if (frame == 0) {
|
||||
i_this->mAsiWaitFollowCB[i].getEmitter()->playCreateParticle();
|
||||
} else if (frame == 20) {
|
||||
i_this->mAsiWaitFollowCB[i].getEmitter()->stopCreateParticle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
i_this->m3F4 = 1;
|
||||
|
||||
|
||||
switch (i_this->m2BC) {
|
||||
case -1:
|
||||
for (i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
cLib_addCalc2(&i_this->m2CC[i].x, (s32)(0x10U - i) * (0.003f + REG12_F(3)), 0.1f, (0.008f + REG12_F(4)));
|
||||
for (s32 i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
cLib_addCalc2(&i_this->m2CC[i].x, (s32)(0x10 - i) * (0.003f + REG12_F(3)), 0.1f, 0.008f + REG12_F(4));
|
||||
i_this->m3A4[i] = 0.0f;
|
||||
}
|
||||
if (i_this->m2C0[2] == 0) {
|
||||
@@ -149,17 +139,17 @@ void wait(bmdfoot_class* i_this) {
|
||||
break;
|
||||
case 0:
|
||||
i_this->m2BC++;
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_WAIT, 50.0f, J3DFrameCtrl::EMode_LOOP, (cM_rndF(0.2f) + 0.9f), -1);
|
||||
i_this->m2C0[0] = (s16)(int)(cM_rndF(150.0f) + 100.0f);
|
||||
i_this->m3EC = (s16)(int)cM_rndFX(32768.0f);
|
||||
for (i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_WAIT, 50.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.2f) + 0.9f, -1);
|
||||
i_this->m2C0[0] = cM_rndF(150.0f) + 100.0f;
|
||||
i_this->m3EC = cM_rndFX(32768.0f);
|
||||
for (s32 i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
i_this->m3A4[i] = REG14_F(13) + (0.2f + cM_rndFX(0.1f));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
i_this->m3EC = (i_this->m3EC + (s16)(REG14_S(4) + 0x200));
|
||||
if (boss->m332 == 1) {
|
||||
sVar2 = actor->current.angle.y - fopAcM_searchPlayerAngleY(actor);
|
||||
s16 sVar2 = actor->current.angle.y - fopAcM_searchPlayerAngleY(actor);
|
||||
if (sVar2 < 0) {
|
||||
sVar2 = -sVar2;
|
||||
}
|
||||
@@ -168,7 +158,7 @@ void wait(bmdfoot_class* i_this) {
|
||||
i_this->m2BA = 1;
|
||||
i_this->m2BC = 0;
|
||||
} else {
|
||||
i_this->m2C0[0] = (s16)(int)(cM_rndF(50.0f) + 50.0f);
|
||||
i_this->m2C0[0] = cM_rndF(50.0f) + 50.0f;
|
||||
}
|
||||
} else {
|
||||
if (boss->m332 == 2) {
|
||||
@@ -185,19 +175,15 @@ void wait(bmdfoot_class* i_this) {
|
||||
void attack_1(bmdfoot_class* i_this) {
|
||||
/* Nonmatching - retail-only regalloc */
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
bool bVar2;
|
||||
short sVar3;
|
||||
short sVar5;
|
||||
J3DModel* pJVar9;
|
||||
s32 i;
|
||||
cXyz local_5c;
|
||||
cXyz cStack_68;
|
||||
static s32 jno[] = {0x0A, 0x0C, 0x11};
|
||||
static s32 col_joint[] = {0x01, 0x03, 0x05, 0x07, 0x09};
|
||||
|
||||
bVar2 = false;
|
||||
bool bVar2 = false;
|
||||
local_5c.setall(0.0f);
|
||||
|
||||
|
||||
switch (i_this->m2BC) {
|
||||
case 0:
|
||||
i_this->m2C0[0] = cM_rndF(20.0f);
|
||||
@@ -214,7 +200,7 @@ void attack_1(bmdfoot_class* i_this) {
|
||||
if (i_this->mBD0 == 0) {
|
||||
i_this->mBD0 = 0x1e;
|
||||
}
|
||||
if (i_this->m2B4->isStop()) {
|
||||
if (i_this->mpBodyVineMorf->isStop()) {
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_ATTACK_LOOP, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1);
|
||||
i_this->m2C0[0] = 0x3c;
|
||||
i_this->m2BC++;
|
||||
@@ -224,7 +210,7 @@ void attack_1(bmdfoot_class* i_this) {
|
||||
if (i_this->mBD0 == 0) {
|
||||
i_this->mBD0 = 0x1e;
|
||||
}
|
||||
for (i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
for (i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
i_this->m3A4[i] = 0.0f;
|
||||
cLib_addCalc0(&i_this->m2CC[i].z, 0.1f, 0.05f);
|
||||
}
|
||||
@@ -239,22 +225,23 @@ void attack_1(bmdfoot_class* i_this) {
|
||||
bVar2 = true;
|
||||
if (i_this->m2C0[0] == 1) {
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_ATTACK, &i_this->mAE8, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(jno); i++) {
|
||||
MTXCopy(i_this->m2B4->getModel()->getAnmMtx(jno[i]), *calc_mtx);
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(jno); i++) {
|
||||
MTXCopy(i_this->mpBodyVineMorf->getModel()->getAnmMtx(jno[i]), *calc_mtx);
|
||||
MtxPosition(&local_5c, &cStack_68);
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMSATTACKHOUSHI00, &cStack_68, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
}
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMSATTACKSOIL00, &i_this->mAE8, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_ST_O_BKMSATTACKSMOKE00, &i_this->mAE8, 0xB9, g_whiteColor, g_whiteColor, 0);
|
||||
}
|
||||
if (i_this->m2B4->isStop()) {
|
||||
if (i_this->mpBodyVineMorf->isStop()) {
|
||||
i_this->m2BA = 0;
|
||||
i_this->m2BC = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
sVar3 = fopAcM_searchPlayerAngleY(actor) - actor->current.angle.y;
|
||||
|
||||
s16 sVar3 = fopAcM_searchPlayerAngleY(actor) - actor->current.angle.y;
|
||||
s16 sVar5;
|
||||
if (sVar3 > l_HIO.m06) {
|
||||
sVar5 = l_HIO.m06;
|
||||
} else if (sVar3 < (s16)-l_HIO.m06) {
|
||||
@@ -264,17 +251,17 @@ void attack_1(bmdfoot_class* i_this) {
|
||||
}
|
||||
cLib_addCalcAngleS2(&i_this->m2BE, sVar5, 4, i_this->mBC4 + 128.0f);
|
||||
cLib_addCalc2(&i_this->mBC4, 10000.0f, 1.0f, REG0_F(7) + 20.0f);
|
||||
|
||||
|
||||
if (bVar2) {
|
||||
pJVar9 = i_this->m2B4->getModel();
|
||||
for (i = 0; i < (s32)ARRAY_SIZE(i_this->m50C); i++) {
|
||||
MTXCopy(pJVar9->getAnmMtx((i_this->m2B8 & 7U) + col_joint[i]), *calc_mtx);
|
||||
J3DModel* model = i_this->mpBodyVineMorf->getModel();
|
||||
for (i = 0; i < ARRAY_SSIZE(i_this->mSph); i++) {
|
||||
MTXCopy(model->getAnmMtx((i_this->m2B8 & 7U) + col_joint[i]), *calc_mtx);
|
||||
MtxPosition(&local_5c, &cStack_68);
|
||||
i_this->m50C[i].SetC(cStack_68);
|
||||
i_this->m50C[i].SetR(40.0f);
|
||||
i_this->m50C[i].OnAtSetBit();
|
||||
i_this->m50C[i].OffCoSetBit();
|
||||
dComIfG_Ccsp()->Set(&i_this->m50C[i]);
|
||||
i_this->mSph[i].SetC(cStack_68);
|
||||
i_this->mSph[i].SetR(40.0f);
|
||||
i_this->mSph[i].OnAtSetBit();
|
||||
i_this->mSph[i].OffCoSetBit();
|
||||
dComIfG_Ccsp()->Set(&i_this->mSph[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -282,16 +269,12 @@ void attack_1(bmdfoot_class* i_this) {
|
||||
/* 00000D8C-00001180 .text ug_move__FP13bmdfoot_class */
|
||||
s32 ug_move(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
u32 uVar4;
|
||||
f32 dVar5;
|
||||
f32 dVar6;
|
||||
float fVar7;
|
||||
cXyz local_4c;
|
||||
cXyz cStack_58;
|
||||
cXyz local_64;
|
||||
|
||||
daPy_py_c* apdVar3 = daPy_getPlayerActorClass();
|
||||
uVar4 = 0;
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
u32 uVar4 = 0;
|
||||
switch (i_this->mBA8) {
|
||||
case 0:
|
||||
break;
|
||||
@@ -301,20 +284,20 @@ s32 ug_move(bmdfoot_class* i_this) {
|
||||
i_this->mBB8.y = actor->current.angle.y;
|
||||
i_this->mBC0 = 0.0f;
|
||||
i_this->mBA8 = 2;
|
||||
fVar7 = cM_rndF(10000.0f);
|
||||
i_this->m2B8 = (s16)(int)fVar7;
|
||||
dComIfGp_particle_setToon(dPa_name::ID_AK_ST_BKMLATTACKSMOKE01, &i_this->mBAC, &i_this->mBB8, NULL, 0xB9, &i_this->m4B0, (u8)actor->current.roomNo);
|
||||
i_this->m2B8 = cM_rndF(10000.0f);
|
||||
dComIfGp_particle_setToon(
|
||||
dPa_name::ID_AK_ST_BKMLATTACKSMOKE01, &i_this->mBAC, &i_this->mBB8, NULL, 0xB9, &i_this->mLAttackSmoke01CB, (u8)actor->current.roomNo
|
||||
);
|
||||
break;
|
||||
case 0xa:
|
||||
break;
|
||||
case 2:
|
||||
local_64 = apdVar3->current.pos - i_this->mBAC;
|
||||
fVar7 = local_64.abs();
|
||||
dVar5 = (fVar7 * 10.0f);
|
||||
local_64 = player->current.pos - i_this->mBAC;
|
||||
f32 dVar5 = (local_64.abs() * 10.0f);
|
||||
if (dVar5 > (REG14_F(14) + 10000.0f)) {
|
||||
dVar5 = (REG14_F(14) + 10000.0f);
|
||||
}
|
||||
dVar6 = cM_ssin(i_this->m2B8 * (REG14_S(3) + 2000));
|
||||
f32 dVar6 = cM_ssin(i_this->m2B8 * (REG14_S(3) + 2000));
|
||||
s16 r28 = dVar5 * dVar6;
|
||||
s16 r4 = r28 + cM_atan2s(local_64.x, local_64.z);
|
||||
cLib_addCalcAngleS2(&i_this->mBB8.y, r4, 0x10, 0x2000);
|
||||
@@ -325,11 +308,10 @@ s32 ug_move(bmdfoot_class* i_this) {
|
||||
MtxPosition(&local_4c, &cStack_58);
|
||||
i_this->mBAC += cStack_58;
|
||||
i_this->mBC0 = i_this->mBC0 + local_4c.z;
|
||||
fVar7 = local_64.abs();
|
||||
if ((fVar7 < 300.0f) || (i_this->mBC0 > REG14_F(15) + 3000.0f)) {
|
||||
if ((local_64.abs() < 300.0f) || (i_this->mBC0 > REG14_F(15) + 3000.0f)) {
|
||||
i_this->mBA8 = 10;
|
||||
if (i_this->m4B0.getEmitter() != NULL) {
|
||||
i_this->m4B0.remove();
|
||||
if (i_this->mLAttackSmoke01CB.getEmitter() != NULL) {
|
||||
i_this->mLAttackSmoke01CB.remove();
|
||||
}
|
||||
uVar4 = 1;
|
||||
}
|
||||
@@ -337,17 +319,17 @@ s32 ug_move(bmdfoot_class* i_this) {
|
||||
}
|
||||
MtxTrans(i_this->mBAC.x, i_this->mBAC.y, i_this->mBAC.z, false);
|
||||
cMtx_YrotM(*calc_mtx, i_this->mBB8.y);
|
||||
J3DModel* model = i_this->mAF4->getModel();
|
||||
J3DModel* model = i_this->mpFloorVineMorf->getModel();
|
||||
model->setBaseTRMtx(*calc_mtx);
|
||||
i_this->mAF4->play(NULL, 0, 0);
|
||||
i_this->mAF4->calc();
|
||||
i_this->mpFloorVineMorf->play(NULL, 0, 0);
|
||||
i_this->mpFloorVineMorf->calc();
|
||||
return uVar4;
|
||||
}
|
||||
|
||||
/* 00001180-00001B00 .text attack_2__FP13bmdfoot_class */
|
||||
void attack_2(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
J3DAnmTransform* pJVar2;
|
||||
J3DAnmTransform* pBck;
|
||||
cXyz local_3c;
|
||||
cXyz local_48;
|
||||
static s32 col_joint[] = {0x11, 0x0F, 0x0C, 0x09};
|
||||
@@ -358,7 +340,7 @@ void attack_2(bmdfoot_class* i_this) {
|
||||
boss->m334 = 10;
|
||||
switch (i_this->m2BC) {
|
||||
case 0:
|
||||
i_this->m2C0[0] = (s16)(int)cM_rndF(20.0f);
|
||||
i_this->m2C0[0] = cM_rndF(20.0f);
|
||||
i_this->m2BC++;
|
||||
case 1:
|
||||
i_this->mBC4 = 0.0f;
|
||||
@@ -370,15 +352,15 @@ void attack_2(bmdfoot_class* i_this) {
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if ((s32)i_this->m2B4->getFrame() == 49) {
|
||||
MTXCopy(i_this->m2B4->getModel()->getAnmMtx(0x11), *calc_mtx);
|
||||
if ((s32)i_this->mpBodyVineMorf->getFrame() == 49) {
|
||||
MTXCopy(i_this->mpBodyVineMorf->getModel()->getAnmMtx(0x11), *calc_mtx);
|
||||
MtxPosition(&local_3c, &local_48);
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMSATTACKHOUSHI00, &local_48, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMSATTACKSOIL00, &local_48, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_ST_O_BKMSATTACKSMOKE00, &local_48, 0xB9, g_whiteColor, g_whiteColor, 0);
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_IN_G, &i_this->mAE8, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
}
|
||||
if (i_this->m2B4->isStop()) {
|
||||
if (i_this->mpBodyVineMorf->isStop()) {
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_UMARU_WAIT, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1);
|
||||
i_this->m2BC++;
|
||||
i_this->mBA8 = 1;
|
||||
@@ -387,13 +369,13 @@ void attack_2(bmdfoot_class* i_this) {
|
||||
case 3:
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_DIG, &i_this->mBAC, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
if (ug_move(i_this)) {
|
||||
pJVar2 = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_DATTACK1);
|
||||
i_this->mAF4->setAnm(pJVar2, J3DFrameCtrl::EMode_NONE, 1.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
pBck = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_DATTACK1);
|
||||
i_this->mpFloorVineMorf->setAnm(pBck, J3DFrameCtrl::EMode_NONE, 1.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
i_this->m2BC++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if ((s32)i_this->mAF4->getFrame() == 2) {
|
||||
if ((s32)i_this->mpFloorVineMorf->getFrame() == 2) {
|
||||
local_48 = i_this->mBAC;
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMSATTACKHOUSHI00, &local_48, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMSATTACKSOIL00, &local_48, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
@@ -401,9 +383,9 @@ void attack_2(bmdfoot_class* i_this) {
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_OUT_G, &i_this->mBAC, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
}
|
||||
ug_move(i_this);
|
||||
if (i_this->mAF4->isStop()) {
|
||||
pJVar2 = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_DATTACK2);
|
||||
i_this->mAF4->setAnm(pJVar2, J3DFrameCtrl::EMode_LOOP, 1.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
if (i_this->mpFloorVineMorf->isStop()) {
|
||||
pBck = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_DATTACK2);
|
||||
i_this->mpFloorVineMorf->setAnm(pBck, J3DFrameCtrl::EMode_LOOP, 1.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
i_this->m2C0[0] = 0xb4;
|
||||
i_this->m2BC++;
|
||||
}
|
||||
@@ -411,31 +393,33 @@ void attack_2(bmdfoot_class* i_this) {
|
||||
case 5:
|
||||
ug_move(i_this);
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_L_ATK, &i_this->mBAC, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(col_joint); i++) {
|
||||
MTXCopy(i_this->mAF4->getModel()->getAnmMtx(col_joint[i]), *calc_mtx);
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(col_joint); i++) {
|
||||
MTXCopy(i_this->mpFloorVineMorf->getModel()->getAnmMtx(col_joint[i]), *calc_mtx);
|
||||
MtxPosition(&local_3c, &local_48);
|
||||
i_this->m50C[i].SetC(local_48);
|
||||
i_this->m50C[i].SetR(40.0f);
|
||||
dComIfG_Ccsp()->Set(&i_this->m50C[i]);
|
||||
i_this->mSph[i].SetC(local_48);
|
||||
i_this->mSph[i].SetR(40.0f);
|
||||
dComIfG_Ccsp()->Set(&i_this->mSph[i]);
|
||||
}
|
||||
if (i_this->m2C0[0] == 0) {
|
||||
pJVar2 = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_DATTACK3);
|
||||
i_this->mAF4->setAnm(pJVar2, J3DFrameCtrl::EMode_NONE, 1.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
pBck = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_DATTACK3);
|
||||
i_this->mpFloorVineMorf->setAnm(pBck, J3DFrameCtrl::EMode_NONE, 1.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
i_this->m2BC++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
ug_move(i_this);
|
||||
if ((s32)i_this->mAF4->getFrame() == 12) {
|
||||
if ((s32)i_this->mpFloorVineMorf->getFrame() == 12) {
|
||||
dComIfGp_particle_set(dPa_name::ID_AK_SN_BKMLATTACKHOUSHI00, &i_this->mBAC);
|
||||
dComIfGp_particle_set(dPa_name::ID_AK_SN_BKMLATTACKSOIL00, &i_this->mBAC);
|
||||
i_this->m498[0].x = i_this->mBAC.x;
|
||||
i_this->m498[0].y = i_this->mBAC.y;
|
||||
i_this->m498[0].z = i_this->mBAC.z;
|
||||
dComIfGp_particle_setToon(dPa_name::ID_AK_ST_BKMLATTACKSMOKE00, &i_this->m498[0], NULL, NULL, 0xB9, &i_this->m458[0], (u8)actor->current.roomNo);
|
||||
dComIfGp_particle_setToon(
|
||||
dPa_name::ID_AK_ST_BKMLATTACKSMOKE00, &i_this->m498[0], NULL, NULL, 0xB9, &i_this->mLAttackSmoke00CB[0], (u8)actor->current.roomNo
|
||||
);
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_IN_G2, &i_this->mBAC, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
}
|
||||
if (i_this->mAF4->isStop()) {
|
||||
if (i_this->mpFloorVineMorf->isStop()) {
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_NUKU, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1);
|
||||
i_this->m2BC++;
|
||||
i_this->mBA8 = 0;
|
||||
@@ -443,7 +427,7 @@ void attack_2(bmdfoot_class* i_this) {
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if ((s32)i_this->m2B4->getFrame() == 13) {
|
||||
if ((s32)i_this->mpBodyVineMorf->getFrame() == 13) {
|
||||
local_48 = actor->current.pos;
|
||||
local_48.y = i_this->mBAC.y;
|
||||
dComIfGp_particle_set(dPa_name::ID_AK_SN_BKMLATTACKHOUSHI00, &local_48);
|
||||
@@ -451,42 +435,42 @@ void attack_2(bmdfoot_class* i_this) {
|
||||
i_this->m498[1].x = local_48.x;
|
||||
i_this->m498[1].y = local_48.y;
|
||||
i_this->m498[1].z = local_48.z;
|
||||
dComIfGp_particle_setToon(dPa_name::ID_AK_ST_BKMLATTACKSMOKE00, &i_this->m498[1], NULL, NULL, 0xB9, &i_this->m458[1], (u8)actor->current.roomNo);
|
||||
dComIfGp_particle_setToon(
|
||||
dPa_name::ID_AK_ST_BKMLATTACKSMOKE00, &i_this->m498[1], NULL, NULL, 0xB9, &i_this->mLAttackSmoke00CB[1], (u8)actor->current.roomNo
|
||||
);
|
||||
}
|
||||
if (i_this->m2B4->isStop()) {
|
||||
if (i_this->mpBodyVineMorf->isStop()) {
|
||||
i_this->m2BA = 0;
|
||||
i_this->m2BC = 0;
|
||||
}
|
||||
}
|
||||
MTXCopy(i_this->m2B4->getModel()->getAnmMtx(4), *calc_mtx);
|
||||
MTXCopy(i_this->mpBodyVineMorf->getModel()->getAnmMtx(4), *calc_mtx);
|
||||
MtxPosition(&local_3c, &local_48);
|
||||
i_this->m50C[4].SetC(local_48);
|
||||
i_this->m50C[4].SetR(50.0f);
|
||||
i_this->m50C[4].OffAtSetBit();
|
||||
i_this->m50C[4].OnCoSetBit();
|
||||
dComIfG_Ccsp()->Set(&i_this->m50C[4]);
|
||||
i_this->mSph[4].SetC(local_48);
|
||||
i_this->mSph[4].SetR(50.0f);
|
||||
i_this->mSph[4].OffAtSetBit();
|
||||
i_this->mSph[4].OnCoSetBit();
|
||||
dComIfG_Ccsp()->Set(&i_this->mSph[4]);
|
||||
}
|
||||
|
||||
/* 00001B00-00001CDC .text damage__FP13bmdfoot_class */
|
||||
void damage(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
f32 dVar5;
|
||||
float fVar9;
|
||||
|
||||
switch (i_this->m2BC) {
|
||||
case 0:
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_NOBIKIRU, 40.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1);
|
||||
i_this->m2BC++;
|
||||
i_this->m2C0[0] = 0x1e;
|
||||
fVar9 = cM_rndFX(32768.0f);
|
||||
i_this->m3EC = (s16)(int)fVar9;
|
||||
for (s32 i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
i_this->m3EC = cM_rndFX(32768.0f);
|
||||
for (s32 i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
i_this->m3A4[i] = (0.3f + cM_rndFX(0.2f));
|
||||
}
|
||||
case 1:
|
||||
if (i_this->m2C0[0] != 0) {
|
||||
dVar5 = ((fopAcM_GetParam(actor) & 0xf) * 0.01f);
|
||||
for (s32 i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
for (s32 i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
cLib_addCalc2(&i_this->m2CC[i].x, -(dVar5 + (0.05f + ((i) * (0.03f + REG14_F(3))))), 0.1f, REG14_F(4) + 0.1f);
|
||||
}
|
||||
}
|
||||
@@ -502,34 +486,34 @@ void damage(bmdfoot_class* i_this) {
|
||||
/* 00001CDC-00001ED8 .text start__FP13bmdfoot_class */
|
||||
void start(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
|
||||
for (s32 i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
|
||||
for (s32 i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
i_this->m2CC[i].z = 0;
|
||||
i_this->m3A4[i] = 0;
|
||||
}
|
||||
|
||||
|
||||
switch (i_this->m2BC) {
|
||||
case 0:
|
||||
if (boss->m332 == 6) {
|
||||
i_this->m2BC = 1;
|
||||
i_this->m2C0[0] = (s16)(int)cM_rndF(10.0f);
|
||||
i_this->m2C0[0] = cM_rndF(10.0f);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (i_this->m2C0[0] == 0) {
|
||||
i_this->mBC8 = 1;
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_START1, 1.0f, J3DFrameCtrl::EMode_NONE, (cM_rndF(0.2f) + 0.9f), -1);
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_START1, 1.0f, J3DFrameCtrl::EMode_NONE, cM_rndF(0.2f) + 0.9f, -1);
|
||||
i_this->m2BC = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (i_this->m2B4->isStop()) {
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_START2, 30.0f, J3DFrameCtrl::EMode_LOOP, (cM_rndF(0.2f) + 0.9f), -1);
|
||||
if (i_this->mpBodyVineMorf->isStop()) {
|
||||
anm_init(i_this, BMDFOOT_BCK_ASI_START2, 30.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.2f) + 0.9f, -1);
|
||||
i_this->m2BC = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if ((s32)i_this->m2B4->getFrame() == 2) {
|
||||
if ((s32)i_this->mpBodyVineMorf->getFrame() == 2) {
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_MOVE_1, &i_this->mAE8, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
}
|
||||
if (boss->m332 == 7) {
|
||||
@@ -542,7 +526,7 @@ void start(bmdfoot_class* i_this) {
|
||||
|
||||
/* 00001ED8-00001FB8 .text end__FP13bmdfoot_class */
|
||||
void end(bmdfoot_class* i_this) {
|
||||
for (s32 i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
for (s32 i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
i_this->m2CC[i].z = 0;
|
||||
i_this->m3A4[i] = 0;
|
||||
}
|
||||
@@ -557,12 +541,11 @@ void end(bmdfoot_class* i_this) {
|
||||
/* 00001FB8-000021B8 .text move__FP13bmdfoot_class */
|
||||
void move(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
s16 sVar1;
|
||||
cXyz local_20;
|
||||
cXyz cStack_2c;
|
||||
|
||||
if (boss != NULL) {
|
||||
sVar1 = (u16)(fopAcM_GetParam(actor) & 0xF) << 13;
|
||||
s16 sVar1 = (u16)(fopAcM_GetParam(actor) & 0xF) << 13;
|
||||
cMtx_YrotS(*calc_mtx, boss->actor.shape_angle.y);
|
||||
cMtx_XrotM(*calc_mtx, boss->actor.shape_angle.x);
|
||||
cMtx_ZrotM(*calc_mtx, boss->actor.shape_angle.z);
|
||||
@@ -608,7 +591,7 @@ void move(bmdfoot_class* i_this) {
|
||||
/* 000021B8-00002204 .text s_a_d_sub__FPvPv */
|
||||
void* s_a_d_sub(void* search, void* param_2) {
|
||||
UNUSED(param_2);
|
||||
if ((fopAc_IsActor(search)) && (fopAcM_GetName(search) == PROC_BMD)) {
|
||||
if ((fopAcM_IsActor(search)) && (fopAcM_GetName(search) == PROC_BMD)) {
|
||||
return search;
|
||||
} else {
|
||||
return NULL;
|
||||
@@ -618,8 +601,6 @@ void* s_a_d_sub(void* search, void* param_2) {
|
||||
/* 00002204-00002594 .text daBmdfoot_Execute__FP13bmdfoot_class */
|
||||
static BOOL daBmdfoot_Execute(bmdfoot_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
short sVar1;
|
||||
J3DModel* pJVar5;
|
||||
cXyz local_68;
|
||||
s32 i;
|
||||
|
||||
@@ -627,7 +608,7 @@ static BOOL daBmdfoot_Execute(bmdfoot_class* i_this) {
|
||||
boss = (bmd_class*)fpcM_Search(s_a_d_sub, i_this);
|
||||
}
|
||||
i_this->m2B8++;
|
||||
for (i = 0; i < (s32)ARRAY_SIZE(i_this->m2C0); i++) {
|
||||
for (i = 0; i < ARRAY_SSIZE(i_this->m2C0); i++) {
|
||||
if (i_this->m2C0[i] != 0) {
|
||||
i_this->m2C0[i]--;
|
||||
}
|
||||
@@ -640,17 +621,17 @@ static BOOL daBmdfoot_Execute(bmdfoot_class* i_this) {
|
||||
cMtx_YrotM(*calc_mtx, actor->current.angle.y + i_this->m2BE);
|
||||
cMtx_XrotM(*calc_mtx, actor->current.angle.x);
|
||||
cMtx_ZrotM(*calc_mtx, actor->current.angle.z + i_this->m2BE * 2);
|
||||
pJVar5 = i_this->m2B4->getModel();
|
||||
J3DModel* pJVar5 = i_this->mpBodyVineMorf->getModel();
|
||||
pJVar5->setBaseTRMtx(*calc_mtx);
|
||||
i_this->m2B4->play(NULL, 0, 0);
|
||||
i_this->m2B4->calc();
|
||||
i_this->mpBodyVineMorf->play(NULL, 0, 0);
|
||||
i_this->mpBodyVineMorf->calc();
|
||||
if (i_this->mBD0 != 0) {
|
||||
if (i_this->mBD0 == 0x1e) {
|
||||
mDoAud_seStart(JA_SE_CM_BKM_ATKVINE_MOVE_2, &i_this->mAE8, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
}
|
||||
i_this->mBD0 = i_this->mBD0 + -1;
|
||||
}
|
||||
sVar1 = 29 - i_this->mBD0;
|
||||
s16 sVar1 = 29 - i_this->mBD0;
|
||||
if (sVar1 >= 30) {
|
||||
sVar1 = sVar1 % 30;
|
||||
}
|
||||
@@ -671,7 +652,7 @@ static BOOL daBmdfoot_Execute(bmdfoot_class* i_this) {
|
||||
sVar1_2 = REG0_S(4);
|
||||
}
|
||||
cLib_addCalcAngleS2(&actor->current.angle.x, sVar1_2, 0x10, 0x80);
|
||||
for (i = 2; i <= (s32)ARRAY_SIZE(i_this->m3A4); i++) {
|
||||
for (i = 2; i <= ARRAY_SSIZE(i_this->m3A4); i++) {
|
||||
f32 f1 = i_this->m3A4[i] * cM_ssin(i_this->m3EC + i * (REG0_S(6) + 9000));
|
||||
cLib_addCalc2(&i_this->m2CC[i].z, f1, 0.05f, 0.01f + REG14_F(5));
|
||||
cLib_addCalc0(&i_this->m2CC[i].x, 0.05f, 0.005f + REG14_F(5));
|
||||
@@ -686,72 +667,65 @@ static BOOL daBmdfoot_IsDelete(bmdfoot_class*) {
|
||||
|
||||
/* 0000259C-000026B0 .text daBmdfoot_Delete__FP13bmdfoot_class */
|
||||
static BOOL daBmdfoot_Delete(bmdfoot_class* i_this) {
|
||||
dComIfG_resDeleteDemo(&i_this->m2AC, "Bmdfoot");
|
||||
dComIfG_resDeleteDemo(&i_this->mPhase, "Bmdfoot");
|
||||
if (i_this->mBD2 != 0) {
|
||||
hio_set = 0;
|
||||
mDoHIO_deleteChild(l_HIO.mNo);
|
||||
}
|
||||
mDoAud_seDeleteObject(&i_this->mAE8);
|
||||
mDoAud_seDeleteObject(&i_this->mBAC);
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(i_this->m41C); i++) {
|
||||
i_this->m41C[i].remove();
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->mAsiWaitFollowCB); i++) {
|
||||
i_this->mAsiWaitFollowCB[i].remove();
|
||||
}
|
||||
i_this->m458[0].remove();
|
||||
i_this->m458[1].remove();
|
||||
i_this->m4B0.remove();
|
||||
i_this->mLAttackSmoke00CB[0].remove();
|
||||
i_this->mLAttackSmoke00CB[1].remove();
|
||||
i_this->mLAttackSmoke01CB.remove();
|
||||
boss = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 000026B0-000029B4 .text useHeapInit__FP13bmdfoot_class */
|
||||
s32 useHeapInit(bmdfoot_class* i_this) {
|
||||
mDoExt_McaMorf* pmVar1;
|
||||
mDoExt_btkAnm* pmVar5;
|
||||
J3DAnmTextureSRTKey* pAnm;
|
||||
int iVar7;
|
||||
J3DModel* pJVar9;
|
||||
i_this->mpBodyVineMorf = new mDoExt_McaMorf(
|
||||
(J3DModelData*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BMD_ASI),
|
||||
NULL,
|
||||
NULL,
|
||||
(J3DAnmTransformKey*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_WAIT),
|
||||
J3DFrameCtrl::EMode_LOOP,
|
||||
cM_rndF(0.2f) + 0.9f,
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
NULL,
|
||||
0,
|
||||
0x11020203
|
||||
);
|
||||
J3DModel* model = i_this->mpBodyVineMorf->getModel();
|
||||
if (model == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (i_this->mpBodyVineMorf == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
pmVar1 = new mDoExt_McaMorf(
|
||||
(J3DModelData*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BMD_ASI),
|
||||
NULL,
|
||||
NULL,
|
||||
(J3DAnmTransformKey*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BCK_ASI_WAIT),
|
||||
J3DFrameCtrl::EMode_LOOP,
|
||||
cM_rndF(0.2f) + 0.9f,
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
NULL,
|
||||
0,
|
||||
0x11020203
|
||||
);
|
||||
i_this->m2B4 = pmVar1;
|
||||
pJVar9 = i_this->m2B4->getModel();
|
||||
if (pJVar9 == NULL) {
|
||||
return FALSE;
|
||||
model->setUserArea((u32)i_this);
|
||||
for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) {
|
||||
model->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack);
|
||||
}
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (i_this->m2B4 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
pJVar9->setUserArea((u32)i_this);
|
||||
for (u16 uVar16 = 0; uVar16 < pJVar9->getModelData()->getJointNum(); uVar16++) {
|
||||
pJVar9->getModelData()->getJointNodePointer(uVar16)->setCallBack(nodeCallBack);
|
||||
}
|
||||
pmVar5 = new mDoExt_btkAnm();
|
||||
i_this->btk = pmVar5;
|
||||
i_this->btk = new mDoExt_btkAnm();
|
||||
JUT_ASSERT(DEMO_SELECT(1416, 1426), i_this->btk);
|
||||
pAnm = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BTK_ASI);
|
||||
iVar7 = i_this->btk->init(pJVar9->getModelData(), pAnm, true, J3DFrameCtrl::EMode_NONE);
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (iVar7 == 0) {
|
||||
J3DAnmTextureSRTKey* pBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BTK_ASI);
|
||||
#if VERSION == VERSION_DEMO
|
||||
i_this->btk->init(model->getModelData(), pBtk, true, J3DFrameCtrl::EMode_NONE);
|
||||
#else
|
||||
if (!i_this->btk->init(model->getModelData(), pBtk, true, J3DFrameCtrl::EMode_NONE)) {
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
pmVar1 = new mDoExt_McaMorf(
|
||||
|
||||
i_this->mpFloorVineMorf = new mDoExt_McaMorf(
|
||||
(J3DModelData*)dComIfG_getObjectRes("Bmdfoot", BMDFOOT_BMD_ASI),
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -765,11 +739,10 @@ s32 useHeapInit(bmdfoot_class* i_this) {
|
||||
0,
|
||||
0x11020203
|
||||
);
|
||||
i_this->mAF4 = pmVar1;
|
||||
if (i_this->mAF4->getModel() == NULL) {
|
||||
if (i_this->mpFloorVineMorf->getModel() == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -809,18 +782,17 @@ static cPhs_State daBmdfoot_Create(fopAc_ac_c* a_this) {
|
||||
/* Radius */ 40.0f,
|
||||
}},
|
||||
};
|
||||
cPhs_State res;
|
||||
|
||||
fopAcM_ct(a_this, bmdfoot_class);
|
||||
bmdfoot_class* i_this = (bmdfoot_class*)a_this;
|
||||
res = dComIfG_resLoad(&i_this->m2AC, "Bmdfoot");
|
||||
cPhs_State res = dComIfG_resLoad(&i_this->mPhase, "Bmdfoot");
|
||||
if (res == cPhs_ERROR_e) {
|
||||
return cPhs_ERROR_e;
|
||||
} else if (res != cPhs_COMPLEATE_e) {
|
||||
return res;
|
||||
}
|
||||
i_this->m458[0].setFollowOff();
|
||||
i_this->m458[1].setFollowOff();
|
||||
i_this->mLAttackSmoke00CB[0].setFollowOff();
|
||||
i_this->mLAttackSmoke00CB[1].setFollowOff();
|
||||
if (!fopAcM_entrySolidHeap(a_this, solidHeapCB, 0x5040)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
@@ -830,12 +802,12 @@ static cPhs_State daBmdfoot_Create(fopAc_ac_c* a_this) {
|
||||
l_HIO.mNo = mDoHIO_createChild("森ボス足", &l_HIO); // Forest boss feet
|
||||
}
|
||||
a_this->health = 2;
|
||||
i_this->m2B8 = (s16)(int)cM_rndF(10000.0f);
|
||||
i_this->m2B8 = cM_rndF(10000.0f);
|
||||
boss = NULL;
|
||||
i_this->m4D0.Init(0xFF, 0, a_this);
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(i_this->m50C); i++) {
|
||||
i_this->m50C[i].SetStts(&i_this->m4D0);
|
||||
i_this->m50C[i].Set(cc_sph_src);
|
||||
i_this->mStts.Init(0xFF, 0, a_this);
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->mSph); i++) {
|
||||
i_this->mSph[i].SetStts(&i_this->mStts);
|
||||
i_this->mSph[i].Set(cc_sph_src);
|
||||
}
|
||||
a_this->attention_info.position.y = -20000.0f;
|
||||
a_this->eyePos.y = -20000.0f;
|
||||
@@ -845,7 +817,7 @@ static cPhs_State daBmdfoot_Create(fopAc_ac_c* a_this) {
|
||||
i_this->mBC8 = 1;
|
||||
}
|
||||
#if VERSION > VERSION_DEMO
|
||||
i_this->mAF8 = a_this->tevStr;
|
||||
i_this->mTevstr = a_this->tevStr;
|
||||
#endif
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
+163
-142
@@ -43,12 +43,16 @@ static f32 boss_joint_xad[] = {60.0f, 20.0f, -20.0f, -60.0f};
|
||||
void hand_draw(bmdhand_class* i_this) {
|
||||
fopAc_ac_c* actor = &i_this->actor;
|
||||
if (i_this->m320 > 0.01f) {
|
||||
g_env_light.setLightTevColorType(i_this->m2B4->getModel(), &actor->tevStr);
|
||||
i_this->m2B4->updateDL();
|
||||
g_env_light.setLightTevColorType(i_this->mpMorf->getModel(), &actor->tevStr);
|
||||
i_this->mpMorf->updateDL();
|
||||
}
|
||||
GXColor local_18 = {0xFF, 0xFF, 0xFF, 0xFF};
|
||||
i_this->m554.update(0x14, local_18, &actor->tevStr);
|
||||
dComIfGd_set3DlineMat(&i_this->m554);
|
||||
#ifdef __MWERKS__
|
||||
i_this->mLineMat.update(0x14, (GXColor){0xFF, 0xFF, 0xFF, 0xFF}, &actor->tevStr);
|
||||
#else
|
||||
GXColor local_18 = (GXColor){0xFF, 0xFF, 0xFF, 0xFF};
|
||||
i_this->mLineMat.update(0x14, local_18, &actor->tevStr);
|
||||
#endif
|
||||
dComIfGd_set3DlineMat(&i_this->mLineMat);
|
||||
}
|
||||
|
||||
/* 000001CC-0000022C .text daBmdhand_Draw__FP13bmdhand_class */
|
||||
@@ -66,23 +70,24 @@ void hand_mtx_set(bmdhand_class* i_this) {
|
||||
f32 x;
|
||||
|
||||
MtxTrans(i_this->m2F0.x, i_this->m2F0.y, i_this->m2F0.z, false);
|
||||
mDoMtx_XrotM(*calc_mtx, i_this->m300);
|
||||
mDoMtx_YrotM(*calc_mtx, i_this->m302);
|
||||
mDoMtx_XrotM(*calc_mtx, REG12_S(1) + -0x4000);
|
||||
cMtx_XrotM(*calc_mtx, i_this->m300);
|
||||
cMtx_YrotM(*calc_mtx, i_this->m302);
|
||||
cMtx_XrotM(*calc_mtx, REG12_S(1) + -0x4000);
|
||||
x = i_this->m320;
|
||||
MtxScale(x, x, x, true);
|
||||
MtxTrans(0.0f, REG12_F(3) + -130.0f, 0.0f, true);
|
||||
i_this->m2B4->getModel()->setBaseTRMtx(*calc_mtx);
|
||||
J3DModel* model = i_this->mpMorf->getModel();
|
||||
model->setBaseTRMtx(*calc_mtx);
|
||||
}
|
||||
|
||||
/* 00000310-00000388 .text control3__FP13bmdhand_class */
|
||||
void control3(bmdhand_class* i_this) {
|
||||
hand_s* phVar1 = &i_this->m324[0];
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(i_this->m324); i++, phVar1++) {
|
||||
hand_s* hand_i = &i_this->m324[0];
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->m324); i++, hand_i++) {
|
||||
if (i < 10) {
|
||||
phVar1->m18 = 10.5f;
|
||||
hand_i->m18 = 10.5f;
|
||||
} else {
|
||||
phVar1->m18 = (15.0f - (s32)(i - 10U)) * 0.7f;
|
||||
hand_i->m18 = (15.0f - (s32)(i - 10)) * 0.7f;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -96,8 +101,8 @@ void control1(bmdhand_class* i_this) {
|
||||
|
||||
i_this->m324[0].m00 = actor->current.pos;
|
||||
s32 i = 1;
|
||||
hand_s* phVar5 = &i_this->m324[1];
|
||||
mDoMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
hand_s* hand_i = &i_this->m324[1];
|
||||
cMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
cXyz local_94;
|
||||
cXyz cStack_a0;
|
||||
cXyz local_ac;
|
||||
@@ -110,20 +115,20 @@ void control1(bmdhand_class* i_this) {
|
||||
local_94.z = i_this->m310;
|
||||
f32 dVar9 = i_this->m31C;
|
||||
cXyz local_c4;
|
||||
for (i = 1; i < 0x13; i++, ++phVar5) {
|
||||
for (i = 1; i < 0x13; i++, ++hand_i) {
|
||||
local_c4.x = (dVar9 * cM_ssin(i_this->m2B8 * (REG0_S(5) + 0x44c) + i * (REG0_S(6) + 4000)));
|
||||
local_c4.z = (dVar9 * cM_scos(i_this->m2B8 * (REG0_S(7) + 800) + i * (REG0_S(8) + 4000)));
|
||||
f32 fVar1 = (i < 15) ? 1.0f : 1.0f - (i - 15) * 0.2f;
|
||||
dVar8 = phVar5->m00.x - phVar5[-1].m00.x + (local_ac.x * fVar1) + (local_c4.x * fVar1);
|
||||
dVar10 = phVar5->m00.y - phVar5[-1].m00.y + local_ac.y;
|
||||
dVar7 = phVar5->m00.z - phVar5[-1].m00.z + (local_ac.z * fVar1) + (local_c4.z * fVar1);
|
||||
dVar8 = hand_i->m00.x - hand_i[-1].m00.x + (local_ac.x * fVar1) + (local_c4.x * fVar1);
|
||||
dVar10 = hand_i->m00.y - hand_i[-1].m00.y + local_ac.y;
|
||||
dVar7 = hand_i->m00.z - hand_i[-1].m00.z + (local_ac.z * fVar1) + (local_c4.z * fVar1);
|
||||
s16 iVar4;
|
||||
int iVar3 = cM_atan2s(dVar8, dVar7);
|
||||
iVar4 = -cM_atan2s(dVar10, std::sqrtf((dVar8 * dVar8) + (dVar7 * dVar7)));
|
||||
mDoMtx_YrotS(*calc_mtx, iVar3);
|
||||
mDoMtx_XrotM(*calc_mtx, iVar4);
|
||||
cMtx_YrotS(*calc_mtx, iVar3);
|
||||
cMtx_XrotM(*calc_mtx, iVar4);
|
||||
MtxPosition(&local_94, &cStack_a0);
|
||||
phVar5->m00 = phVar5[-1].m00 + cStack_a0;
|
||||
hand_i->m00 = hand_i[-1].m00 + cStack_a0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,22 +147,22 @@ void control2(bmdhand_class* i_this) {
|
||||
s32 i = 0x12;
|
||||
s16 iVar4;
|
||||
int iVar3;
|
||||
hand_s* phVar5 = &i_this->m324[0x12];
|
||||
for (i = 0x12; i >= 1; i--, phVar5--) {
|
||||
f32 fVar1 = phVar5->m00.x - phVar5[1].m00.x;
|
||||
f32 dVar9 = ((phVar5->m00.y - phVar5[1].m00.y) - 10.0f);
|
||||
f32 fVar2 = phVar5->m00.z - phVar5[1].m00.z;
|
||||
hand_s* hand_i = &i_this->m324[0x12];
|
||||
for (i = 0x12; i >= 1; i--, hand_i--) {
|
||||
f32 fVar1 = hand_i->m00.x - hand_i[1].m00.x;
|
||||
f32 dVar9 = ((hand_i->m00.y - hand_i[1].m00.y) - 10.0f);
|
||||
f32 fVar2 = hand_i->m00.z - hand_i[1].m00.z;
|
||||
iVar3 = cM_atan2s(fVar1, fVar2);
|
||||
iVar4 = -cM_atan2s(dVar9, std::sqrtf((fVar1 * fVar1) + (fVar2 * fVar2)));
|
||||
mDoMtx_YrotS(*calc_mtx, iVar3);
|
||||
mDoMtx_XrotM(*calc_mtx, iVar4);
|
||||
cMtx_YrotS(*calc_mtx, iVar3);
|
||||
cMtx_XrotM(*calc_mtx, iVar4);
|
||||
if (i == 0x12) {
|
||||
local_7c.z = i_this->m310 + 70.0f + REG12_F(6);
|
||||
} else {
|
||||
local_7c.z = i_this->m310;
|
||||
}
|
||||
MtxPosition(&local_7c, &cStack_88);
|
||||
phVar5->m00 = phVar5[1].m00 + cStack_88;
|
||||
hand_i->m00 = hand_i[1].m00 + cStack_88;
|
||||
}
|
||||
i_this->m2F0 = i_this->m324[0x13].m00;
|
||||
local_7c = i_this->m324[0x12].m00 - i_this->m324[0x13].m00;
|
||||
@@ -168,72 +173,71 @@ void control2(bmdhand_class* i_this) {
|
||||
|
||||
/* 00000A1C-00000EFC .text cut_control__FP13bmdhand_class */
|
||||
void cut_control(bmdhand_class* i_this) {
|
||||
/* Nonmatching - regalloc */
|
||||
/* Nonmatching - retail-only regalloc */
|
||||
fopAc_ac_c* actor = &i_this->actor;
|
||||
|
||||
|
||||
i_this->m324[0].m00 = actor->current.pos;
|
||||
s32 i = 1;
|
||||
hand_s* pcVar6 = &i_this->m324[i];
|
||||
hand_s* hand_i = &i_this->m324[1];
|
||||
cXyz local_e8;
|
||||
cXyz cStack_f4;
|
||||
cXyz local_100;
|
||||
mDoMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
cMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
local_e8.x = 0.0f;
|
||||
local_e8.y = i_this->m314;
|
||||
local_e8.z = i_this->m318;
|
||||
MtxPosition(&local_e8, &local_100);
|
||||
cLib_addCalc2(&i_this->m314, REG14_F(7) + -3.0f, 1.0f, REG12_F(4) + 0.1f);
|
||||
cLib_addCalc2(&i_this->m318, REG14_F(8) + 20.0f + 10.0f, 1.0f, REG12_F(5) + 0.2f);
|
||||
cLib_addCalc0(&i_this->m31C, 1.0f, (REG12_F(6) + 1.0f));
|
||||
cLib_addCalc0(&i_this->m31C, 1.0f, REG12_F(6) + 1.0f);
|
||||
local_e8.z = i_this->m310;
|
||||
f32 fVar_x;
|
||||
f32 delta_y;
|
||||
f32 dVar9;
|
||||
dVar9 = (REG7_F(10) + 0.5f);
|
||||
cXyz local_100_scaled;
|
||||
cXyz local_124;
|
||||
f32 fVar_x;
|
||||
f32 fVar_y;
|
||||
f32 fVar_z;
|
||||
f32 delta_y;
|
||||
for (i = 1; i < (s32)ARRAY_SIZE(i_this->m324); i++, pcVar6++) {
|
||||
for (s32 i = 1; i < ARRAY_SSIZE(i_this->m324); i++, hand_i++) {
|
||||
local_124.x = i_this->m31C * cM_ssin(i_this->m2B8 * (REG0_S(4) + 0xdac) + i * (REG0_S(5) + 4000));
|
||||
local_124.y = i_this->m31C * cM_scos(i_this->m2B8 * (REG0_S(6) + 4000) + i * (REG0_S(7) + 4000));
|
||||
local_124.z = i_this->m31C * cM_scos(i_this->m2B8 * (REG0_S(8) + 0xed8) + i * (REG0_S(9) + 4000));
|
||||
f32 factor = 1.0f - i * (REG0_F(9) + 0.03763158f);
|
||||
local_100_scaled.x = local_100.x * factor;
|
||||
local_100_scaled.z = local_100.z * factor;
|
||||
fVar_x = pcVar6->m0C.x + (pcVar6->m00.x - pcVar6[-1].m00.x + local_100_scaled.x + local_124.x);
|
||||
fVar_y = pcVar6->m0C.y + (pcVar6->m00.y + local_100.y + local_124.y);
|
||||
f32 fVar_y;
|
||||
f32 fVar_z;
|
||||
fVar_x = hand_i->m0C.x + (hand_i->m00.x - hand_i[-1].m00.x + local_100_scaled.x + local_124.x);
|
||||
fVar_y = hand_i->m0C.y + (hand_i->m00.y + local_100.y + local_124.y);
|
||||
if (fVar_y < (5.0f + boss->m328)) {
|
||||
fVar_y = (5.0f + boss->m328);
|
||||
}
|
||||
delta_y = fVar_y - pcVar6[-1].m00.y;
|
||||
fVar_z = pcVar6->m0C.z + (pcVar6->m00.z - pcVar6[-1].m00.z + local_100_scaled.z + local_124.z);
|
||||
delta_y = fVar_y - hand_i[-1].m00.y;
|
||||
fVar_z = hand_i->m0C.z + (hand_i->m00.z - hand_i[-1].m00.z + local_100_scaled.z + local_124.z);
|
||||
s16 iVar5;
|
||||
int iVar4 = cM_atan2s(fVar_x, fVar_z);
|
||||
iVar5 = -cM_atan2s(delta_y, std::sqrtf((fVar_x * fVar_x) + (fVar_z * fVar_z)));
|
||||
mDoMtx_YrotS(*calc_mtx, iVar4);
|
||||
mDoMtx_XrotM(*calc_mtx, iVar5);
|
||||
cMtx_YrotS(*calc_mtx, iVar4);
|
||||
cMtx_XrotM(*calc_mtx, iVar5);
|
||||
MtxPosition(&local_e8, &cStack_f4);
|
||||
pcVar6->m0C = pcVar6->m00;
|
||||
pcVar6->m00 = pcVar6[-1].m00 + cStack_f4;
|
||||
pcVar6->m0C.x = (dVar9 * (pcVar6->m00.x - pcVar6->m0C.x));
|
||||
pcVar6->m0C.y = (dVar9 * (pcVar6->m00.y - pcVar6->m0C.y));
|
||||
pcVar6->m0C.z = (dVar9 * (pcVar6->m00.z - pcVar6->m0C.z));
|
||||
hand_i->m0C = hand_i->m00;
|
||||
hand_i->m00 = hand_i[-1].m00 + cStack_f4;
|
||||
hand_i->m0C.x = (dVar9 * (hand_i->m00.x - hand_i->m0C.x));
|
||||
hand_i->m0C.y = (dVar9 * (hand_i->m00.y - hand_i->m0C.y));
|
||||
hand_i->m0C.z = (dVar9 * (hand_i->m00.z - hand_i->m0C.z));
|
||||
if ((i == 0x13) && (i_this->m2CA != 0)) {
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMTENTACLEBLOOD00, &pcVar6->m00, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
dComIfGp_particle_setSimple(dPa_name::ID_AK_SN_O_BKMTENTACLEBLOOD00, &hand_i->m00, 0xFF, g_whiteColor, g_whiteColor, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000EFC-00000FAC .text cut_control3__FP13bmdhand_class */
|
||||
void cut_control3(bmdhand_class* i_this) {
|
||||
hand_s* phVar1 = &i_this->m324[0];
|
||||
hand_s* hand_i = &i_this->m324[0];
|
||||
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(i_this->m324); i++, phVar1++) {
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->m324); i++, hand_i++) {
|
||||
if (i < 10) {
|
||||
phVar1->m18 = 10.5f;
|
||||
hand_i->m18 = 10.5f;
|
||||
} else {
|
||||
phVar1->m18 = (15.0f - (s32)(i - 10U)) * 0.7f;
|
||||
hand_i->m18 = (15.0f - (s32)(i - 10)) * 0.7f;
|
||||
}
|
||||
}
|
||||
cLib_addCalc2(&i_this->m2F0.y, i_this->m2CC.y, 1.0f, 10.0f);
|
||||
@@ -253,8 +257,8 @@ void start_control1(bmdhand_class* i_this) {
|
||||
|
||||
i_this->m324[0].m00 = actor->current.pos;
|
||||
s32 i = 1;
|
||||
hand_s* phVar5 = &i_this->m324[i];
|
||||
mDoMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
hand_s* hand_i = &i_this->m324[1];
|
||||
cMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
local_94.x = 0.0f;
|
||||
local_94.y = i_this->m314;
|
||||
local_94.z = i_this->m318;
|
||||
@@ -263,20 +267,20 @@ void start_control1(bmdhand_class* i_this) {
|
||||
cLib_addCalc2(&i_this->m318, REG0_F(8) + 5.0f, 1.0f, 1.0f);
|
||||
local_94.z = i_this->m310;
|
||||
f32 dVar9 = i_this->m31C;
|
||||
for (i = 1; i < 0x13; i++, phVar5++) {
|
||||
for (i = 1; i < 0x13; i++, hand_i++) {
|
||||
local_c4.x = (dVar9 * cM_ssin(i_this->m2B8 * (REG0_S(5) + 0x640) + i * (REG0_S(6) + 3000)));
|
||||
local_c4.y = (dVar9 * cM_ssin(i_this->m2B8 * (REG0_S(5) + 0x6a4) + i * (REG0_S(6) + 4000)));
|
||||
local_c4.z = (dVar9 * cM_scos(i_this->m2B8 * (REG0_S(7) + 0x578) + i * (REG0_S(8) + 0xdac)));
|
||||
fVar1 = local_c4.x + (local_ac.x + (phVar5->m00.x - phVar5[-1].m00.x));
|
||||
dVar10 = local_c4.y + (local_ac.y + (phVar5->m00.y - phVar5[-1].m00.y));
|
||||
fVar2 = local_c4.z + (local_ac.z + (phVar5->m00.z - phVar5[-1].m00.z));
|
||||
fVar1 = local_c4.x + (local_ac.x + (hand_i->m00.x - hand_i[-1].m00.x));
|
||||
dVar10 = local_c4.y + (local_ac.y + (hand_i->m00.y - hand_i[-1].m00.y));
|
||||
fVar2 = local_c4.z + (local_ac.z + (hand_i->m00.z - hand_i[-1].m00.z));
|
||||
s16 iVar4;
|
||||
int iVar3 = cM_atan2s(fVar1, fVar2);
|
||||
iVar4 = -cM_atan2s(dVar10, std::sqrtf((fVar1 * fVar1) + (fVar2 * fVar2)));
|
||||
mDoMtx_YrotS(*calc_mtx, iVar3);
|
||||
mDoMtx_XrotM(*calc_mtx, iVar4);
|
||||
cMtx_YrotS(*calc_mtx, iVar3);
|
||||
cMtx_XrotM(*calc_mtx, iVar4);
|
||||
MtxPosition(&local_94, &cStack_a0);
|
||||
phVar5->m00 = phVar5[-1].m00 + cStack_a0;
|
||||
hand_i->m00 = hand_i[-1].m00 + cStack_a0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,17 +296,17 @@ void start_control2(bmdhand_class* i_this) {
|
||||
s32 i = 0x12;
|
||||
s16 iVar4;
|
||||
int iVar3;
|
||||
hand_s* phVar5 = &i_this->m324[i];
|
||||
for (i = 0x12; i >= 1; i--, phVar5--) {
|
||||
f32 fVar1 = phVar5->m00.x - phVar5[1].m00.x;
|
||||
f32 dVar9 = ((phVar5->m00.y - phVar5[1].m00.y) - 5.0f);
|
||||
f32 fVar2 = phVar5->m00.z - phVar5[1].m00.z;
|
||||
hand_s* hand_i = &i_this->m324[0x12];
|
||||
for (i = 0x12; i >= 1; i--, hand_i--) {
|
||||
f32 fVar1 = hand_i->m00.x - hand_i[1].m00.x;
|
||||
f32 dVar9 = ((hand_i->m00.y - hand_i[1].m00.y) - 5.0f);
|
||||
f32 fVar2 = hand_i->m00.z - hand_i[1].m00.z;
|
||||
iVar3 = cM_atan2s(fVar1, fVar2);
|
||||
iVar4 = -cM_atan2s(dVar9, std::sqrtf((fVar1 * fVar1) + (fVar2 * fVar2)));
|
||||
mDoMtx_YrotS(*calc_mtx, iVar3);
|
||||
mDoMtx_XrotM(*calc_mtx, iVar4);
|
||||
cMtx_YrotS(*calc_mtx, iVar3);
|
||||
cMtx_XrotM(*calc_mtx, iVar4);
|
||||
MtxPosition(&local_7c, &cStack_88);
|
||||
phVar5->m00 = phVar5[1].m00 + cStack_88;
|
||||
hand_i->m00 = hand_i[1].m00 + cStack_88;
|
||||
}
|
||||
i_this->m2F0 = i_this->m324[0x13].m00;
|
||||
local_7c = i_this->m324[0x12].m00 - i_this->m324[0x13].m00;
|
||||
@@ -316,7 +320,7 @@ void hand_close(bmdhand_class* i_this) {
|
||||
J3DAnmTransform* pAnimRes;
|
||||
|
||||
pAnimRes = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdhand", BMDHAND_BCK_FOOK_TOJIRU);
|
||||
i_this->m2B4->setAnm(pAnimRes, 0, REG0_F(6) + 5.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
i_this->mpMorf->setAnm(pAnimRes, 0, REG0_F(6) + 5.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
}
|
||||
|
||||
/* 0000161C-000016AC .text hand_open__FP13bmdhand_class */
|
||||
@@ -324,36 +328,35 @@ void hand_open(bmdhand_class* i_this) {
|
||||
J3DAnmTransform* pAnimRes;
|
||||
|
||||
pAnimRes = (J3DAnmTransform*)dComIfG_getObjectRes("Bmdhand", BMDHAND_BCK_FOOK_HIRAKU);
|
||||
i_this->m2B4->setAnm(pAnimRes, 0, REG0_F(6) + 5.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
i_this->mpMorf->setAnm(pAnimRes, 0, REG0_F(6) + 5.0f, 1.0f, 0.0f, -1.0f, NULL);
|
||||
}
|
||||
|
||||
/* 000016AC-00001D30 .text hand_calc__FP13bmdhand_class */
|
||||
void hand_calc(bmdhand_class* i_this) {
|
||||
fopAc_ac_c* actor = &i_this->actor;
|
||||
f32 dVar6;
|
||||
f32 fVar7;
|
||||
cXyz local_b8;
|
||||
cXyz local_c4;
|
||||
|
||||
local_b8.y = 0.0f;
|
||||
local_b8.x = 0.0f;
|
||||
if ((i_this->m2B8 & 0xfU) == 0) {
|
||||
dBgS_LinChk local_ac;
|
||||
if ((i_this->m2B8 & 0xf) == 0) {
|
||||
dBgS_LinChk linChk;
|
||||
cXyz local_d0;
|
||||
cXyz local_dc;
|
||||
local_d0 = i_this->m2D8;
|
||||
local_dc = i_this->m2D8;
|
||||
local_dc.y += 2500.0f;
|
||||
local_ac.Set(&local_d0, &local_dc, actor);
|
||||
if (dComIfG_Bgsp()->LineCross(&local_ac)) {
|
||||
i_this->m2CC = local_ac.GetCross();
|
||||
linChk.Set(&local_d0, &local_dc, actor);
|
||||
if (dComIfG_Bgsp()->LineCross(&linChk)) {
|
||||
i_this->m2CC = linChk.GetCross();
|
||||
i_this->m2CC.y += l_HIO.m08;
|
||||
}
|
||||
}
|
||||
switch (i_this->m2BC) {
|
||||
case 0:
|
||||
mDoMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
if ((fopAcM_GetParam(actor) & 1U) == 0) {
|
||||
cMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
if ((fopAcM_GetParam(actor) & 1) == 0) {
|
||||
local_b8.z = REG0_F(9) + 250.0f;
|
||||
} else {
|
||||
local_b8.z = REG0_F(10) + 350.0f;
|
||||
@@ -372,8 +375,8 @@ void hand_calc(bmdhand_class* i_this) {
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
mDoMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
if ((fopAcM_GetParam(actor) & 1U) == 0) {
|
||||
cMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
if ((fopAcM_GetParam(actor) & 1) == 0) {
|
||||
local_b8.z = REG0_F(9) + 250.0f;
|
||||
} else {
|
||||
local_b8.z = REG0_F(10) + 350.0f;
|
||||
@@ -382,8 +385,7 @@ void hand_calc(bmdhand_class* i_this) {
|
||||
i_this->m2E4.x = actor->current.pos.x + local_c4.x;
|
||||
i_this->m2E4.z = actor->current.pos.z + local_c4.z;
|
||||
local_c4 = i_this->m2E4 - i_this->m2D8;
|
||||
fVar7 = std::sqrtf(local_c4.x * local_c4.x + local_c4.z * local_c4.z);
|
||||
if (fVar7 > REG14_F(0) + 100.0f) {
|
||||
if (std::sqrtf(SQUARE(local_c4.x) + SQUARE(local_c4.z)) > REG14_F(0) + 100.0f) {
|
||||
if (i_this->m2C0[0] == 0) {
|
||||
i_this->m2BC = 2;
|
||||
i_this->m2C0[0] = 0x28;
|
||||
@@ -404,10 +406,9 @@ void hand_calc(bmdhand_class* i_this) {
|
||||
i_this->m2E4.y = (i_this->m2CC.y - 150.0f) + REG0_F(0xe);
|
||||
fVar7 = 0.1f;
|
||||
}
|
||||
dVar6 = fVar7;
|
||||
cLib_addCalc2(&i_this->m2D8.x, i_this->m2E4.x, fVar7, i_this->m308 * 30.0f);
|
||||
cLib_addCalc2(&i_this->m2D8.z, i_this->m2E4.z, dVar6, i_this->m308 * 30.0f);
|
||||
cLib_addCalc2(&i_this->m2D8.y, i_this->m2E4.y, dVar6, i_this->m308 * 30.0f);
|
||||
cLib_addCalc2(&i_this->m2D8.z, i_this->m2E4.z, fVar7, i_this->m308 * 30.0f);
|
||||
cLib_addCalc2(&i_this->m2D8.y, i_this->m2E4.y, fVar7, i_this->m308 * 30.0f);
|
||||
cLib_addCalc2(&i_this->m308, 1.0f, 1.0f, 0.1f);
|
||||
if (i_this->m2C0[0] == 0) {
|
||||
i_this->m2BC = 1;
|
||||
@@ -419,32 +420,33 @@ void hand_calc(bmdhand_class* i_this) {
|
||||
|
||||
/* 00002168-000025D4 .text start_hand_calc__FP13bmdhand_class */
|
||||
void start_hand_calc(bmdhand_class* i_this) {
|
||||
/* Nonmatching - math */
|
||||
fopAc_ac_c* actor = &i_this->actor;
|
||||
cXyz local_a8;
|
||||
cXyz cStack_b4;
|
||||
|
||||
local_a8.y = 0.0f;
|
||||
local_a8.x = 0.0f;
|
||||
dBgS_LinChk local_9c;
|
||||
dBgS_LinChk linChk;
|
||||
cXyz local_c0;
|
||||
cXyz local_cc;
|
||||
local_c0 = i_this->m2D8;
|
||||
local_cc = i_this->m2D8;
|
||||
local_cc.y += 2500.0f;
|
||||
local_9c.Set(&local_c0, &local_cc, actor);
|
||||
if (dComIfG_Bgsp()->LineCross(&local_9c)) {
|
||||
i_this->m2CC = local_9c.GetCross();
|
||||
linChk.Set(&local_c0, &local_cc, actor);
|
||||
if (dComIfG_Bgsp()->LineCross(&linChk)) {
|
||||
i_this->m2CC = linChk.GetCross();
|
||||
i_this->m2CC.y += l_HIO.m08;
|
||||
}
|
||||
switch (i_this->m2BC) {
|
||||
case 0:
|
||||
mDoMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
f32 fVar1 = (i_this->m2E4.y - i_this->m2D8.y) * ((REG13_F(4) + 0.1f) * (REG13_F(5) + 2.0f));
|
||||
case 0:
|
||||
cMtx_YrotS(*calc_mtx, actor->current.angle.y);
|
||||
f32 fVar1 = i_this->m2E4.y - i_this->m2D8.y;
|
||||
fVar1 *= REG13_F(4) + 0.1f;
|
||||
fVar1 *= REG13_F(5) + 2.0f;
|
||||
local_a8.x = fVar1 * cM_ssin(i_this->m2B8 * (REG13_S(5) + 0x5dc));
|
||||
local_a8.z = fVar1 * cM_scos(i_this->m2B8 * (REG13_S(5) + 0x4B0));
|
||||
local_a8.y = fVar1 * cM_ssin(i_this->m2B8 * (REG13_S(7) + 500));
|
||||
if ((fopAcM_GetParam(actor) & 1U) == 0) {
|
||||
if ((fopAcM_GetParam(actor) & 1) == 0) {
|
||||
local_a8.z = REG0_F(9) + 250.0f;
|
||||
} else {
|
||||
local_a8.z = REG0_F(10) + 350.0f;
|
||||
@@ -461,20 +463,24 @@ void start_hand_calc(bmdhand_class* i_this) {
|
||||
|
||||
/* 000025D4-00002E74 .text hand_move__FP13bmdhand_class */
|
||||
void hand_move(bmdhand_class* i_this) {
|
||||
/* Nonmatching - regalloc, math */
|
||||
fopAc_ac_c* actor = &i_this->actor;
|
||||
f32 fVar10;
|
||||
cXyz local_40;
|
||||
cXyz local_4c;
|
||||
cXyz local_58;
|
||||
|
||||
hand_s* pcVar9 = i_this->m324;
|
||||
hand_s* hand_i = i_this->m324;
|
||||
#if VERSION == VERSION_DEMO
|
||||
s8 r29 = 0;
|
||||
#endif
|
||||
if (boss != NULL) {
|
||||
actor->current.angle.y = (fopAcM_GetParam(actor) & 0x1f) * -0xccc + REG8_S(4) + -13000 + boss->actor.shape_angle.y;
|
||||
MTXCopy(boss->mpMorf->getModel()->getAnmMtx(boss_joint_d[(fopAcM_GetParam(actor) & 0x1fU)]), *calc_mtx);
|
||||
u8 r0 = (fopAcM_GetParam(actor));
|
||||
s16 r3 = REG8_S(4);
|
||||
r3 += ((r0 & 0x1f) * -0xccc) + -13000;
|
||||
actor->current.angle.y = r3 + boss->actor.shape_angle.y;
|
||||
MTXCopy(boss->mpBodyMorf->getModel()->getAnmMtx(boss_joint_d[(fopAcM_GetParam(actor) & 0x1f)]), *calc_mtx);
|
||||
local_40.x = REG14_F(6);
|
||||
local_40.y = REG14_F(7);
|
||||
local_40.z = boss_joint_xad[(fopAcM_GetParam(actor) & 3U)];
|
||||
local_40.z = boss_joint_xad[(fopAcM_GetParam(actor) & 3)];
|
||||
MtxPosition(&local_40, &actor->current.pos);
|
||||
if ((i_this->m2BA != 2) && (boss->m332 == 3)) {
|
||||
i_this->m2BA = 2;
|
||||
@@ -507,17 +513,23 @@ void hand_move(bmdhand_class* i_this) {
|
||||
i_this->m2C0[0] = l_HIO.m0C;
|
||||
i_this->m314 = 3.0f;
|
||||
i_this->m318 = 40.0f;
|
||||
fVar10 = cM_rndF(20.0f);
|
||||
i_this->m31C = fVar10 + 30.0f;
|
||||
i_this->m31C = cM_rndF(20.0f) + 30.0f;
|
||||
#if VERSION > VERSION_DEMO
|
||||
i_this->m2C8 = 0x14;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
#if VERSION > VERSION_DEMO
|
||||
i_this->m2C8 = 0x14;
|
||||
#endif
|
||||
i_this->m2CA = 2;
|
||||
cLib_addCalc2(&i_this->m310, REG14_F(0xc) + 20.0f, 0.1f, 0.5f);
|
||||
cut_control(i_this);
|
||||
cut_control3(i_this);
|
||||
#if VERSION == VERSION_DEMO
|
||||
r29 = 1;
|
||||
#endif
|
||||
if (i_this->m2C0[0] < 100) {
|
||||
cLib_addCalc2(&i_this->m320, 0.0f, 1.0f, 0.01f);
|
||||
}
|
||||
@@ -529,7 +541,9 @@ void hand_move(bmdhand_class* i_this) {
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
#if VERSION > VERSION_DEMO
|
||||
i_this->m2C8 = 0x14;
|
||||
#endif
|
||||
if (i_this->m2C0[1] == 0) {
|
||||
cLib_addCalc2(&i_this->m310, REG14_F(0xc) + 20.0f, 0.1f, 0.5f);
|
||||
}
|
||||
@@ -538,9 +552,11 @@ void hand_move(bmdhand_class* i_this) {
|
||||
}
|
||||
cut_control(i_this);
|
||||
cut_control3(i_this);
|
||||
#if VERSION == VERSION_DEMO
|
||||
r29 = 1;
|
||||
#endif
|
||||
if (boss->m332 == 4) {
|
||||
fVar10 = cM_rndF(50.0f);
|
||||
i_this->m2C0[0] = (s16)fVar10;
|
||||
i_this->m2C0[0] = cM_rndF(50.0f);
|
||||
i_this->m2BA = 5;
|
||||
i_this->m2BC = 0;
|
||||
} else if (boss->m332 == 9) {
|
||||
@@ -555,8 +571,7 @@ void hand_move(bmdhand_class* i_this) {
|
||||
i_this->m2E4.y = 10000.0f;
|
||||
i_this->m2D8 = actor->current.pos;
|
||||
i_this->m30C = 1.0f;
|
||||
fVar10 = cM_rndF(50.0f);
|
||||
i_this->m2C0[0] = (s16)fVar10;
|
||||
i_this->m2C0[0] = cM_rndF(50.0f);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
@@ -588,41 +603,50 @@ void hand_move(bmdhand_class* i_this) {
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
#if VERSION > VERSION_DEMO
|
||||
i_this->m2C8 = 0x14;
|
||||
#endif
|
||||
cLib_addCalc0(&i_this->m310, 0.1f, 0.2f);
|
||||
cLib_addCalc0(&i_this->m320, 1.0f, 0.01f);
|
||||
cut_control(i_this);
|
||||
cut_control3(i_this);
|
||||
#if VERSION == VERSION_DEMO
|
||||
r29 = 1;
|
||||
#endif
|
||||
break;
|
||||
case 5:
|
||||
#if VERSION > VERSION_DEMO
|
||||
i_this->m2C8 = REG8_S(2) + 0x46;
|
||||
#endif
|
||||
if (i_this->m2C0[0] == 0) {
|
||||
i_this->m2BA = 0;
|
||||
i_this->m2BC = 0;
|
||||
fVar10 = cM_rndF(0.2f);
|
||||
i_this->m30C = fVar10;
|
||||
i_this->m30C = cM_rndF(0.2f);
|
||||
i_this->m31C = 0.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
cXyz* line_data = i_this->m554.getPos(0);
|
||||
u8* line_size = i_this->m554.getSize(0);
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(i_this->m324); i++, pcVar9++, line_data++, line_size++) {
|
||||
*line_data = pcVar9->m00;
|
||||
*line_size = pcVar9->m18;
|
||||
cXyz* line_data = i_this->mLineMat.getPos(0);
|
||||
u8* line_size = i_this->mLineMat.getSize(0);
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->m324); i++, hand_i++, line_data++, line_size++) {
|
||||
*line_data = hand_i->m00;
|
||||
*line_size = hand_i->m18;
|
||||
|
||||
if (i == 10) {
|
||||
actor->eyePos = pcVar9->m00;
|
||||
actor->eyePos = hand_i->m00;
|
||||
actor->attention_info.position = actor->eyePos;
|
||||
i_this->m5CC.SetC(actor->eyePos);
|
||||
dComIfG_Ccsp()->Set(&i_this->m5CC);
|
||||
} else if (i == (s32)((i_this->m2B8 & 3U) * 4 + 3)) {
|
||||
i_this->m6F8.SetC(pcVar9->m00);
|
||||
dComIfG_Ccsp()->Set(&i_this->m6F8);
|
||||
} else {
|
||||
s32 r0 = ((i_this->m2B8 & 3) * 4) + 3;
|
||||
if (r0 == i) {
|
||||
i_this->m6F8.SetC(hand_i->m00);
|
||||
dComIfG_Ccsp()->Set(&i_this->m6F8);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i_this->m2C8 != 0) {
|
||||
if (DEMO_SELECT(r29, i_this->m2C8) != 0) {
|
||||
local_4c.x = 0.0f;
|
||||
local_4c.y = -20000.0f;
|
||||
local_4c.z = 0.0f;
|
||||
@@ -638,7 +662,7 @@ void hand_move(bmdhand_class* i_this) {
|
||||
/* 00002E74-00002EC0 .text s_a_d_sub__FPvPv */
|
||||
void* s_a_d_sub(void* param_1, void* param_2) {
|
||||
UNUSED(param_2);
|
||||
if ((fopAc_IsActor(param_1)) && (fopAcM_GetName(param_1) == PROC_BMD)) {
|
||||
if ((fopAcM_IsActor(param_1)) && (fopAcM_GetName(param_1) == PROC_BMD)) {
|
||||
return param_1;
|
||||
} else {
|
||||
return NULL;
|
||||
@@ -651,7 +675,7 @@ static BOOL daBmdhand_Execute(bmdhand_class* i_this) {
|
||||
boss = (bmd_class*)fpcM_Search(s_a_d_sub, i_this);
|
||||
}
|
||||
i_this->m2B8++;
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(i_this->m2C0); i++) {
|
||||
for (s32 i = 0; i < ARRAY_SSIZE(i_this->m2C0); i++) {
|
||||
if (i_this->m2C0[i] != 0) {
|
||||
i_this->m2C0[i]--;
|
||||
}
|
||||
@@ -677,7 +701,7 @@ static BOOL daBmdhand_Execute(bmdhand_class* i_this) {
|
||||
hand_close(i_this);
|
||||
}
|
||||
}
|
||||
i_this->m2B4->play(NULL, 0, 0);
|
||||
i_this->mpMorf->play(NULL, 0, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -688,7 +712,7 @@ static BOOL daBmdhand_IsDelete(bmdhand_class*) {
|
||||
|
||||
/* 00003030-000030C4 .text daBmdhand_Delete__FP13bmdhand_class */
|
||||
static BOOL daBmdhand_Delete(bmdhand_class* i_this) {
|
||||
dComIfG_resDelete(&i_this->m2AC, "Bmdhand");
|
||||
dComIfG_resDeleteDemo(&i_this->mPhase, "Bmdhand");
|
||||
if (i_this->m824 != 0) {
|
||||
hio_set = 0;
|
||||
mDoHIO_deleteChild(l_HIO.mNo);
|
||||
@@ -700,10 +724,7 @@ static BOOL daBmdhand_Delete(bmdhand_class* i_this) {
|
||||
|
||||
/* 000030C4-00003210 .text useHeapInit__FP13bmdhand_class */
|
||||
s32 useHeapInit(bmdhand_class* i_this) {
|
||||
mDoExt_McaMorf* morf;
|
||||
ResTIMG* pImg;
|
||||
|
||||
morf = new mDoExt_McaMorf(
|
||||
i_this->mpMorf = new mDoExt_McaMorf(
|
||||
(J3DModelData*)dComIfG_getObjectRes("Bmdhand", BMDHAND_BMD_BKM_FOOK),
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -717,15 +738,16 @@ s32 useHeapInit(bmdhand_class* i_this) {
|
||||
0,
|
||||
0x11020203
|
||||
);
|
||||
i_this->m2B4 = morf;
|
||||
if (i_this->m2B4->getModel() == NULL) {
|
||||
if (i_this->mpMorf->getModel() == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (i_this->m2B4 == NULL) {
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (i_this->mpMorf == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
pImg = (ResTIMG*)dComIfG_getObjectRes("Bmdhand", BMDHAND_BTI_SYOKUSYU_UE);
|
||||
if (!i_this->m554.init(1, 0x14, pImg, 1)) {
|
||||
#endif
|
||||
ResTIMG* pBti = (ResTIMG*)dComIfG_getObjectRes("Bmdhand", BMDHAND_BTI_SYOKUSYU_UE);
|
||||
if (!i_this->mLineMat.init(1, 20, pBti, 1)) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
@@ -767,12 +789,11 @@ static cPhs_State daBmdhand_Create(fopAc_ac_c* a_this) {
|
||||
/* Radius */ 100.0f,
|
||||
}},
|
||||
};
|
||||
cPhs_State res;
|
||||
|
||||
fopAc_ac_c* actor = a_this;
|
||||
fopAcM_ct(actor, bmdhand_class);
|
||||
bmdhand_class* i_this = (bmdhand_class*)a_this;
|
||||
res = dComIfG_resLoad(&i_this->m2AC, "Bmdhand");
|
||||
cPhs_State res = dComIfG_resLoad(&i_this->mPhase, "Bmdhand");
|
||||
if (res == cPhs_ERROR_e) {
|
||||
return cPhs_ERROR_e;
|
||||
} else if (res != cPhs_COMPLEATE_e) {
|
||||
@@ -789,12 +810,12 @@ static cPhs_State daBmdhand_Create(fopAc_ac_c* a_this) {
|
||||
actor->health = 2;
|
||||
i_this->m2B8 = (s16)cM_rndF(10000.0f);
|
||||
boss = NULL;
|
||||
i_this->m590.Init(0xFF, 0xFF, actor);
|
||||
i_this->mStts.Init(0xFF, 0xFF, actor);
|
||||
i_this->m5CC.Set(cc_sph_src);
|
||||
i_this->m5CC.SetStts(&i_this->m590);
|
||||
i_this->m5CC.SetStts(&i_this->mStts);
|
||||
i_this->m5CC.SetR(110.0f);
|
||||
i_this->m6F8.Set(cc_sph_src);
|
||||
i_this->m6F8.SetStts(&i_this->m590);
|
||||
i_this->m6F8.SetStts(&i_this->mStts);
|
||||
i_this->m5CC.SetR(90.0f);
|
||||
if (!(dComIfGs_isStageBossDemo()) && (dComIfGp_getStartStageName()[0] != 'X')) {
|
||||
i_this->m2BA = 3;
|
||||
|
||||
+1098
-882
File diff suppressed because it is too large
Load Diff
+28
-21
@@ -475,7 +475,9 @@ static void down_attack(bst_class* i_this) {
|
||||
particle_pos = actor->current.pos;
|
||||
particle_pos.y = 1.0f;
|
||||
dComIfGp_particle_setProjection(dPa_name::ID_AK_SP_BSTSHOCKWAVEH00, &particle_pos);
|
||||
dComIfGp_particle_setToon(dPa_name::ID_AK_ST_BSTATTACK1HSMOKE00, &particle_pos, NULL, NULL, 0xB9, &i_this->mPa_smokeEcallBack, fopAcM_GetRoomNo(actor));
|
||||
dComIfGp_particle_setToon(
|
||||
dPa_name::ID_AK_ST_BSTATTACK1HSMOKE00, &particle_pos, NULL, NULL, 0xB9, &i_this->mPa_smokeEcallBack, fopAcM_GetRoomNo(actor)
|
||||
);
|
||||
}
|
||||
} else {
|
||||
actor->speed.y += REG0_F(14) + 0.5f;
|
||||
@@ -537,7 +539,7 @@ static void paa_attack(bst_class* i_this) {
|
||||
if (local_38.abs() > REG0_F(0xc) + 200.0f) {
|
||||
cLib_addCalc2(&actor->speedF, 40.0f, 1.0f, REG0_F(0xd) + 2.0f);
|
||||
} else {
|
||||
cLib_addCalc0(&actor->speedF, 1.0f, (REG0_F(0xd) + 2.0f));
|
||||
cLib_addCalc0(&actor->speedF, 1.0f, REG0_F(0xd) + 2.0f);
|
||||
}
|
||||
i_this->m10EC.x = REG0_F(5) + 8000.0f;
|
||||
cMtx_YrotS(*calc_mtx, (int)i_this->m111C);
|
||||
@@ -672,7 +674,7 @@ static void kumi_attack(bst_class* i_this) {
|
||||
if (local_38.abs() > REG0_F(0xc) + 200.0f) {
|
||||
cLib_addCalc2(&actor->speedF, 40.0f, 1.0f, REG0_F(0xd) + 2.0f);
|
||||
} else {
|
||||
cLib_addCalc0(&actor->speedF, 1.0f, (REG0_F(0xd) + 2.0f));
|
||||
cLib_addCalc0(&actor->speedF, 1.0f, REG0_F(0xd) + 2.0f);
|
||||
}
|
||||
i_this->m10EC.x = REG0_F(5) + 8000.0f;
|
||||
cMtx_YrotS(*calc_mtx, (int)i_this->m111C);
|
||||
@@ -742,7 +744,9 @@ static void kumi_attack(bst_class* i_this) {
|
||||
local_50 = i_this->mTargetPos;
|
||||
local_50.y = 1.0f;
|
||||
dComIfGp_particle_setProjection(dPa_name::ID_AK_SP_BSTSHOCKWAVEH00, &local_50);
|
||||
dComIfGp_particle_setToon(dPa_name::ID_AK_ST_BSTATTACK2HSMOKE00, &local_50, NULL, NULL, 0xb9, &i_this->mPa_smokeEcallBack, fopAcM_GetRoomNo(actor));
|
||||
dComIfGp_particle_setToon(
|
||||
dPa_name::ID_AK_ST_BSTATTACK2HSMOKE00, &local_50, NULL, NULL, 0xb9, &i_this->mPa_smokeEcallBack, fopAcM_GetRoomNo(actor)
|
||||
);
|
||||
dComIfGp_getVibration().StartShock(REG0_S(2) + 5, -0x21, cXyz(0.0f, 1.0f, 0.0f));
|
||||
fopAcM_seStartCurrent(actor, JA_SE_CM_BST_2_HAND_ATTACK, 0);
|
||||
}
|
||||
@@ -852,7 +856,7 @@ static void harai_attack(bst_class* i_this) {
|
||||
break;
|
||||
case 3:
|
||||
cVar3 = 1;
|
||||
cLib_addCalc0(&actor->speedF, 1.0f, (REG0_F(0xd) + 3.0f));
|
||||
cLib_addCalc0(&actor->speedF, 1.0f, REG0_F(0xd) + 3.0f);
|
||||
if (i_this->m10FC[0] == 0) {
|
||||
i_this->mActionType = bst_class::ACTION_FLY_e;
|
||||
i_this->mDamage = 0;
|
||||
@@ -1089,7 +1093,12 @@ static void head_damage(bst_class* i_this) {
|
||||
fopAc_ac_c* actor = &i_this->actor;
|
||||
cXyz v;
|
||||
f32 dist;
|
||||
static u16 bomb_eff_name[] = {dPa_name::ID_AK_SN_BSTBOMBNOSTRILSMOKEL00, dPa_name::ID_AK_SN_BSTBOMBNOSTRILSMOKER00, dPa_name::ID_AK_SN_BSTBOMBEARSMOKEL00, dPa_name::ID_AK_SN_BSTBOMBEARSMOKER00};
|
||||
static u16 bomb_eff_name[] = {
|
||||
dPa_name::ID_AK_SN_BSTBOMBNOSTRILSMOKEL00,
|
||||
dPa_name::ID_AK_SN_BSTBOMBNOSTRILSMOKER00,
|
||||
dPa_name::ID_AK_SN_BSTBOMBEARSMOKEL00,
|
||||
dPa_name::ID_AK_SN_BSTBOMBEARSMOKER00
|
||||
};
|
||||
|
||||
i_this->mState = 10;
|
||||
i_this->m2E74[0] = 10;
|
||||
@@ -1126,7 +1135,9 @@ static void head_damage(bst_class* i_this) {
|
||||
if (actor->current.pos.y <= REG0_F(14)) {
|
||||
actor->current.pos.y = REG0_F(14);
|
||||
dComIfGp_getVibration().StartShock(REG0_S(2) + 7, -0x21, cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_particle_setToon(dPa_name::ID_AK_ST_BSTDROPHEADSMOKE00, &actor->current.pos, NULL, NULL, 0xB9, &i_this->mPa_smokeEcallBack, fopAcM_GetRoomNo(actor));
|
||||
dComIfGp_particle_setToon(
|
||||
dPa_name::ID_AK_ST_BSTDROPHEADSMOKE00, &actor->current.pos, NULL, NULL, 0xB9, &i_this->mPa_smokeEcallBack, fopAcM_GetRoomNo(actor)
|
||||
);
|
||||
i_this->m112A = REG0_S(7) + 4;
|
||||
mDoAud_seStart(JA_SE_CM_BST_HEAD_FALL, &actor->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
mDoAud_seStart(JA_SE_CM_BST_MOUTH_OPEN, &actor->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
|
||||
@@ -1895,14 +1906,14 @@ static void beam_eff_set(cXyz* pos, short y, u8 set_angle) {
|
||||
|
||||
/* 00006FA4-00007308 .text beam_wall_check__FP4cXyzP4cXyz */
|
||||
static BOOL beam_wall_check(cXyz* pos_1, cXyz* pos_2) {
|
||||
dBgS_LinChk chk;
|
||||
dBgS_LinChk gndChk;
|
||||
cXyz start = *pos_1 - *pos_2;
|
||||
start.y += 50.0f;
|
||||
cXyz end(*pos_1);
|
||||
end.y = start.y;
|
||||
chk.Set(&start, &end, NULL);
|
||||
if (dComIfG_Bgsp()->LineCross(&chk)) {
|
||||
*pos_1 = chk.mLin.GetEnd();
|
||||
gndChk.Set(&start, &end, NULL);
|
||||
if (dComIfG_Bgsp()->LineCross(&gndChk)) {
|
||||
*pos_1 = gndChk.mLin.GetEnd();
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -1916,7 +1927,7 @@ static void beam_move(bst_class* i_this) {
|
||||
cXyz* pos2;
|
||||
J3DModel* model;
|
||||
s8 beam_set;
|
||||
dBgS_GndChk chk;
|
||||
dBgS_GndChk gndChk;
|
||||
for (s32 i = 0; i < 10; i++) {
|
||||
if (i_this->m04E4[i] == 0) {
|
||||
continue;
|
||||
@@ -1933,8 +1944,8 @@ static void beam_move(bst_class* i_this) {
|
||||
cLib_addCalc2(&i_this->m10A8[i], REG0_F(4) + 5.0f, 1.0f, REG0_F(5) + 0.5f);
|
||||
beam_set = FALSE;
|
||||
f32 fVar1 = 500.0f;
|
||||
chk.m_pos.set(i_this->m03B8[i].x, i_this->m03B8[i].z + fVar1, i_this->m03B8[i].y);
|
||||
f32 ground_cross = dComIfG_Bgsp()->GroundCross(&chk);
|
||||
gndChk.m_pos.set(i_this->m03B8[i].x, i_this->m03B8[i].z + fVar1, i_this->m03B8[i].y);
|
||||
f32 ground_cross = dComIfG_Bgsp()->GroundCross(&gndChk);
|
||||
if (ground_cross >= i_this->m03B8[i].y) {
|
||||
i_this->m03B8[i].y = ground_cross;
|
||||
beam_eff_set(pos1, 0, 0);
|
||||
@@ -2278,7 +2289,7 @@ void demo_camera(bst_class* i_this) {
|
||||
dComIfGp_event_reset();
|
||||
i_this->m2E9A = 0;
|
||||
i_this->m2E7C = 10;
|
||||
g_dComIfG_gameInfo.save.getMemory().getBit().onStageBossDemo();
|
||||
dComIfGs_onStageBossDemo();
|
||||
mDoAud_bgmStart(JA_BGM_BST_BATTLE);
|
||||
i_this->m2FE4 = 1;
|
||||
i_this->m2E98 = 1;
|
||||
@@ -2838,9 +2849,7 @@ static BOOL useHeapInit(fopAc_ac_c* a_this) {
|
||||
if (i_this->m2FD4 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
res = i_this->m2FD4->init(
|
||||
modelData, (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Bst", BST_BTK_HBSITA1), TRUE, J3DFrameCtrl::EMode_LOOP
|
||||
);
|
||||
res = i_this->m2FD4->init(modelData, (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Bst", BST_BTK_HBSITA1), TRUE, J3DFrameCtrl::EMode_LOOP);
|
||||
if (res == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2897,9 +2906,7 @@ static BOOL useHeapInit(fopAc_ac_c* a_this) {
|
||||
if (i_this->mpBrkAnm == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
res = i_this->mpBrkAnm->init(
|
||||
modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes("Bst", set_za_brk_d[i_this->mBstPartType]), TRUE, J3DFrameCtrl::EMode_NONE
|
||||
);
|
||||
res = i_this->mpBrkAnm->init(modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes("Bst", set_za_brk_d[i_this->mBstPartType]), TRUE, J3DFrameCtrl::EMode_NONE);
|
||||
if (res == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+609
-574
File diff suppressed because it is too large
Load Diff
+467
-509
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user