From a87d86078fd28740dce1bd0da43d10953f53d080 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Thu, 2 Mar 2023 04:13:22 -0800 Subject: [PATCH] setup b_ob_class --- include/d/a/d_a_alink.h | 4 +- include/rel/d/a/b/d_a_b_ob/d_a_b_ob.h | 177 ++++++- include/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.h | 15 +- .../d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h | 2 + rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp | 470 +++--------------- rel/d/a/b/d_a_b_oh2/d_a_b_oh2.cpp | 4 +- src/d/a/d_a_alink_hang.inc | 115 +++-- 7 files changed, 344 insertions(+), 443 deletions(-) diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index 7f2405565c..bec8d8f2ad 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -641,6 +641,8 @@ public: }; enum daAlink_FTANM { + FTANM_UNK_3 = 3, + FTANM_UNK_4 = 4, FTANM_UNK_8 = 8, FTANM_UNK_13 = 0x13, FTANM_UNK_14 = 0x14, @@ -2239,7 +2241,7 @@ public: /* 800FC2F4 */ int procHangLeverDownInit(); /* 800FC390 */ int procHangLeverDown(); /* 800FC5A4 */ void setDragonHangPos(); - /* 800FC6B4 */ void setOctaIealHangPos(); + /* 800FC6B4 */ int setOctaIealHangPos(); /* 800FC748 */ void setBossBodyHangPos(); /* 800FC77C */ int procBossBodyHangInit(fopAc_ac_c*); /* 800FC870 */ int procBossBodyHang(); diff --git a/include/rel/d/a/b/d_a_b_ob/d_a_b_ob.h b/include/rel/d/a/b/d_a_b_ob/d_a_b_ob.h index 06ef41adc4..d00d3ce40c 100644 --- a/include/rel/d/a/b/d_a_b_ob/d_a_b_ob.h +++ b/include/rel/d/a/b/d_a_b_ob/d_a_b_ob.h @@ -1,6 +1,181 @@ #ifndef D_A_B_OB_H #define D_A_B_OB_H -#include "dolphin/types.h" +#include "d/cc/d_cc_uty.h" +#include "d/com/d_com_inf_game.h" + +struct Z2CreatureOI : public Z2CreatureEnemy { + /* 802C2578 */ Z2CreatureOI(); + /* 802C2670 */ void init(Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, + Vec*); + /* 802C2C84 */ void startTentacleSound(JAISoundID, u8, u32, s8); + /* 802C2CD4 */ void startTentacleSoundLevel(JAISoundID, u8, f32, u32, s8); + + /* 802C25EC */ virtual void deleteObject(); + /* 802C2864 */ virtual void framework(u32, s8); + /* 802C29D4 */ virtual void startCreatureSoundLevel(JAISoundID, u32, s8); + + /* 0x0A4 */ Z2SoundObjSimple field_0xa4; + /* 0x0C4 */ Z2SoundObjSimple field_0xc4; + /* 0x0E4 */ Z2SoundObjSimple field_0xe4; + /* 0x104 */ Z2SoundObjSimple field_0x104[8]; +}; + +struct ob_part_s { + /* 8061A658 */ ~ob_part_s(); + /* 8061A72C */ ob_part_s(); + + /* 0x00 */ mDoExt_McaMorf* field_0x0; + /* 0x04 */ mDoExt_McaMorf* field_0x4; + /* 0x08 */ mDoExt_McaMorf* field_0x8; + /* 0x0C */ mDoExt_McaMorf* field_0xc; + /* 0x10 */ mDoExt_McaMorf* field_0x10; + /* 0x14 */ cXyz field_0x14; + /* 0x20 */ csXyz field_0x20; + /* 0x26 */ s16 field_0x26; + /* 0x28 */ f32 field_0x28; + /* 0x2C */ csXyz field_0x2c; + /* 0x32 */ csXyz field_0x32; + /* 0x38 */ csXyz field_0x38; + /* 0x40 */ dCcD_Sph mSph; +}; // Size: 0x178 + +struct ob_ke_s { + /* 8061A3A0 */ ~ob_ke_s(); + /* 8061A41C */ ob_ke_s(); + + /* 0x000 */ cXyz field_0x0[20]; + /* 0x0F0 */ cXyz field_0xf0[20]; + /* 0x1E0 */ cXyz field_0x1e0; +}; // Size: 0x1EC + +class b_ob_class : public fopEn_enemy_c { +public: + /* 8061A0C0 */ b_ob_class(); + + /* 0x05AC */ request_of_phase_process_class mPhase; + /* 0x05B4 */ mDoExt_McaMorfSO* field_0x5b4; + /* 0x05B8 */ u8 field_0x5b8[0x5BC - 0x5B8]; + /* 0x05BC */ f32 field_0x5bc; + /* 0x05C0 */ ob_part_s mParts[20]; + /* 0x2320 */ int field_0x2320; + /* 0x2324 */ cXyz field_0x2324[512]; + /* 0x3B24 */ csXyz field_0x3b24[512]; + /* 0x4724 */ J3DModel* field_0x4724; + /* 0x4728 */ mDoExt_btkAnm* field_0x4728; + /* 0x472C */ mDoExt_brkAnm* field_0x472c; + /* 0x4730 */ f32 field_0x4730; + /* 0x4734 */ int mAnmResID; + /* 0x4738 */ int field_0x4738; + /* 0x4738 */ u8 field_0x473c; + /* 0x4740 */ f32 field_0x4740; + /* 0x4744 */ u8 field_0x4744; + /* 0x4745 */ u8 field_0x4745; + /* 0x4748 */ u32 field_0x4748; + /* 0x474C */ u8 field_0x474c; + /* 0x474D */ u8 field_0x474d; + /* 0x474E */ u8 field_0x474e[0x4750 - 0x474e]; + /* 0x4750 */ s16 field_0x4750; + /* 0x4752 */ s16 field_0x4752; + /* 0x4754 */ s16 field_0x4754; + /* 0x4756 */ s16 field_0x4756; + /* 0x4758 */ cXyz field_0x4758; + /* 0x4764 */ csXyz field_0x4764; + /* 0x476A */ s16 field_0x476a; + /* 0x476C */ s16 mYAngleToPlayer; + /* 0x476E */ s16 mXAngleToPlayer; + /* 0x4770 */ f32 mDistToPlayer; + /* 0x4774 */ u8 field_0x4774[0x4778 - 0x4774]; + /* 0x4778 */ s16 field_0x4778; + /* 0x477A */ s16 field_0x477a; + /* 0x477C */ s16 field_0x477c; + /* 0x477E */ s16 field_0x477e; + /* 0x4780 */ s16 field_0x4780; + /* 0x4782 */ u8 field_0x4782[0x4784 - 0x4782]; + /* 0x05AC */ s16 field_0x4784; + /* 0x4786 */ u8 field_0x4786[0x4788 - 0x4786]; + /* 0x4788 */ int field_0x4788; + /* 0x478C */ int field_0x478c; + /* 0x4790 */ int field_0x4790; + /* 0x4794 */ s16 field_0x4794; + /* 0x4798 */ f32 field_0x4798; + /* 0x479C */ f32 field_0x479c; + /* 0x47A0 */ f32 field_0x47a0; + /* 0x47A4 */ u8 field_0x47a4[0x47aa - 0x47a4]; + /* 0x47AA */ s16 field_0x47aa; + /* 0x47AC */ s16 field_0x47ac; + /* 0x47AE */ s16 field_0x47ae; + /* 0x47B0 */ s16 field_0x47b0; + /* 0x47B4 */ int field_0x47b4; + /* 0x47B8 */ s16 field_0x47b8; + /* 0x47BA */ s16 field_0x47ba; + /* 0x47BC */ s16 field_0x47bc; + /* 0x47C0 */ f32 field_0x47c0; + /* 0x47C4 */ s16 field_0x47c4; + /* 0x47C8 */ int field_0x47c8; + /* 0x47CC */ dCcD_Stts field_0x47cc; + /* 0x4808 */ dCcD_Sph mCcSph; + /* 0x4940 */ dCcD_Sph mCoreSph; + /* 0x4A78 */ dCcU_AtInfo mAtInfo; + /* 0x4A9C */ u8 field_0x4a9c[0x4aa0 - 0x4a9c]; + /* 0x4AA0 */ dCcD_Stts field_0x4aa0; + /* 0x4ADC */ dCcD_Sph mBodySph; + /* 0x4C14 */ dCcD_Sph field_0x4c14; + /* 0x4D4C */ dBgS_AcchCir field_0x4d4c; + /* 0x4D8C */ dBgS_ObjAcch field_0x4d8c; + /* 0x4F64 */ u32 mTentacleActorIDs[8]; + /* 0x4F84 */ ob_ke_s field_0x4f84[5]; + /* 0x5920 */ mDoExt_3DlineMat0_c field_0x5920; + /* 0x593C */ Z2CreatureEnemy field_0x593c; + /* 0x59E0 */ Z2CreatureOI field_0x59e0; + /* 0x5BE4 */ cXyz field_0x5be4[13]; + /* 0x5C80 */ s16 mDemoAction; + /* 0x5C82 */ s16 field_0x5c82; + /* 0x5C84 */ cXyz field_0x5c84; + /* 0x5C90 */ cXyz field_0x5c90; + /* 0x5C9C */ cXyz field_0x5c9c; + /* 0x5CA8 */ cXyz field_0x5ca8; + /* 0x5CB4 */ f32 field_0x5cb4; + /* 0x5CB8 */ f32 field_0x5cb8; + /* 0x5CBC */ f32 field_0x5cbc; + /* 0x5CC0 */ f32 field_0x5cc0; + /* 0x5CC4 */ f32 field_0x5cc4; + /* 0x5CC8 */ f32 field_0x5cc8; + /* 0x5CCC */ f32 field_0x5ccc; + /* 0x5CD0 */ f32 field_0x5cd0; + /* 0x5CD4 */ f32 field_0x5cd4; + /* 0x5CD8 */ f32 field_0x5cd8; + /* 0x5CDC */ f32 field_0x5cdc; + /* 0x5CE0 */ s16 field_0x5ce0; + /* 0x5CE4 */ f32 field_0x5ce4; + /* 0x5CE8 */ int field_0x5ce8; + /* 0x5CEC */ cXyz field_0x5cec; + /* 0x5CF8 */ s16 field_0x5cf8; + /* 0x5CFC */ f32 field_0x5cfc; + /* 0x5D00 */ f32 field_0x5d00; + /* 0x5D04 */ f32 field_0x5d04; + /* 0x5D08 */ s16 field_0x5d08; + /* 0x5D0A */ s16 field_0x5d0a; + /* 0x5D0C */ s16 field_0x5d0c; + /* 0x5D0E */ u8 field_0x5d0e[0x5d11 - 0x5d0e]; + /* 0x5D11 */ s8 field_0x5d11; + /* 0x5D12 */ s8 field_0x5d12; + /* 0x5D14 */ f32 field_0x5d14; + /* 0x5D18 */ u8 field_0x5d18; + /* 0x5D19 */ u8 field_0x5d19[0x5d24 - 0x5d19]; + /* 0x5D24 */ u32 field_0x5d24[3]; + /* 0x5D30 */ u8 field_0x5d30[0x5d38 - 0x5D30]; + /* 0x5D38 */ u32 field_0x5d38; + /* 0x5D3C */ s16 field_0x5d3c; + /* 0x5D40 */ u32 field_0x5d40; + /* 0x5D44 */ u8 field_0x5d44[0x5d88 - 0x5d44]; + /* 0x5D88 */ u32 field_0x5d88; + /* 0x5D8C */ u32 field_0x5d8c; + /* 0x5D90 */ u8 field_0x5d90[0x5dd4 - 0x5d90]; + /* 0x5DD4 */ u32 field_0x5dd4; + /* 0x5DD8 */ int field_0x5dd8; + /* 0x5DDC */ f32 field_0x5ddc; + /* 0x5DE0 */ u8 field_0x5de0; +}; #endif /* D_A_B_OB_H */ diff --git a/include/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.h b/include/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.h index 9dae6051e7..c88fe408c6 100644 --- a/include/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.h +++ b/include/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.h @@ -1,20 +1,7 @@ #ifndef D_A_B_OH2_H #define D_A_B_OH2_H -#include "d/com/d_com_inf_game.h" - -// fix/move to d_a_b_ob later -class b_ob_class : public fopEn_enemy_c { -public: - /* 0x05AC */ u8 field_0x5ac[0x5c0 - 0x5ac]; - /* 0x05C0 */ mDoExt_McaMorf* field_0x5c0; - /* 0x05C4 */ u8 field_0x5c4[0x4752 - 0x5c4]; - /* 0x4752 */ s16 field_0x4752; - /* 0x4754 */ u8 field_0x4754[0x47a0 - 0x4754]; - /* 0x47A0 */ f32 field_0x47a0; - /* 0x47A4 */ u8 field_0x47a4[0x5d04 - 0x47a4]; - /* 0x5D04 */ f32 field_0x5d04; -}; +#include "rel/d/a/b/d_a_b_ob/d_a_b_ob.h" class b_oh2_class : public fopEn_enemy_c { public: diff --git a/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h b/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h index ea022d331d..247d1fbbe7 100644 --- a/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h +++ b/include/rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h @@ -31,6 +31,8 @@ public: /* 80CFCD04 */ virtual int Draw(); /* 80CFCD98 */ virtual int Delete(); + void setHangPlayer() { mHangPlayer = 1; } + /* 0x5A0 */ dEvLib_callback_c field_0x5a0; /* 0x5B0 */ request_of_phase_process_class mPhase; /* 0x5B8 */ J3DModel* mpModel; diff --git a/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp b/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp index 5b8dbf5ddd..4afdfce59f 100644 --- a/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp +++ b/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp @@ -5,7 +5,6 @@ #include "rel/d/a/b/d_a_b_ob/d_a_b_ob.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Types: @@ -15,346 +14,15 @@ namespace std { /* 8061AACC */ void fabsf(f32); }; -struct request_of_phase_process_class {}; - -struct Vec {}; - -struct cXyz { - /* 80266AE4 */ void operator+(Vec const&) const; - /* 80266B34 */ void operator-(Vec const&) const; - /* 80266B84 */ void operator*(f32) const; - /* 80611408 */ ~cXyz(); - /* 8061AD60 */ cXyz(f32, f32, f32); - /* 8061AA8C */ cXyz(cXyz const&); - /* 8061A654 */ cXyz(); - /* 8061A95C */ void operator+=(Vec const&); - /* 8061A9AC */ void operator=(cXyz const&); - /* 8061ABF4 */ void set(f32, f32, f32); - /* 8061AC0C */ void abs() const; -}; - struct obj_ystone_class { /* 8061AA70 */ void setCurrentPos(cXyz); }; -struct ob_part_s { - /* 8061A658 */ ~ob_part_s(); - /* 8061A72C */ ob_part_s(); -}; - -struct ob_ke_s { - /* 8061A3A0 */ ~ob_ke_s(); - /* 8061A41C */ ob_ke_s(); -}; - -struct mDoMtx_stack_c { - /* 8000CCC8 */ void push(); - /* 8000CD14 */ void pop(); - /* 8000CD9C */ void transM(f32, f32, f32); - /* 8000CE38 */ void scaleM(f32, f32, f32); - /* 8061A924 */ void multVecZero(Vec*); - - static u8 now[48]; -}; - -struct mDoGph_gInf_c { - /* 80008078 */ void onBlure(); -}; - -struct mDoExt_morf_c { - /* 8061AB4C */ void setPlaySpeed(f32); - /* 8061AD20 */ void isStop(); -}; - -struct J3DMaterialTable {}; - -struct J3DAnmTextureSRTKey {}; - -struct mDoExt_btkAnm { - /* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16); - /* 8000D6D8 */ void entry(J3DMaterialTable*, f32); -}; - -struct J3DAnmTevRegKey {}; - -struct mDoExt_brkAnm { - /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16); - /* 8000D7A8 */ void entry(J3DMaterialTable*, f32); -}; - -struct mDoExt_baseAnm { - /* 8000D428 */ void play(); -}; - -struct mDoExt_McaMorfCallBack2_c {}; - -struct mDoExt_McaMorfCallBack1_c {}; - -struct J3DAnmTransform {}; - -struct J3DModelData {}; - -struct Z2Creature { - /* 802C06F4 */ void stopAnime(); -}; - -struct mDoExt_McaMorfSO { - /* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, - int, Z2Creature*, u32, u32); - /* 800111C0 */ void entryDL(); - /* 800111EC */ void modelCalc(); -}; - -struct mDoExt_McaMorf { - /* 8000FC4C */ mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, - int, void*, u32, u32); - /* 8001037C */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32, void*); - /* 800105C8 */ void play(Vec*, u32, s8); - /* 80010680 */ void entryDL(); - /* 800106AC */ void modelCalc(); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct daPy_py_c { - /* 8061A89C */ void cancelOriginalDemo(); - /* 8061A9C8 */ void changeDemoMode(u32, int, int, s16); - /* 8061A9DC */ void changeOriginalDemo(); -}; - struct daB_OB_HIO_c { /* 8061056C */ daB_OB_HIO_c(); /* 8061A808 */ ~daB_OB_HIO_c(); }; -struct dVibration_c { - /* 8006FA24 */ void StartShock(int, int, cXyz); - /* 8006FB10 */ void StartQuake(int, int, cXyz); - /* 8006FD94 */ void StopQuake(int); -}; - -struct dSv_memBit_c { - /* 80034918 */ void onDungeonItem(int); - /* 80034934 */ void isDungeonItem(int) const; -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dKy_tevstr_c {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dPa_levelEcallBack {}; - -struct csXyz { - /* 8061AAB8 */ csXyz(csXyz const&); - /* 8061A650 */ csXyz(); - /* 802673F4 */ csXyz(s16, s16, s16); - /* 80611EF8 */ ~csXyz(); - /* 8061A990 */ void operator=(csXyz const&); -}; - -struct _GXColor {}; - -struct dPa_control_c { - struct level_c { - /* 8004B918 */ void getEmitter(u32); - }; - - /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, - u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, - cXyz const*, f32); - /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, - cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, - _GXColor const*, cXyz const*, f32); -}; - -struct dEvt_info_c { - /* 8061AA00 */ void onCondition(u16); - /* 8061AA10 */ void checkCommandDemoAccrpt(); -}; - -struct dEvt_control_c { - /* 80042468 */ void reset(); - /* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int); - /* 806185F4 */ void checkSkipEdge(); - /* 8061AB54 */ void startCheckSkipEdge(void*); -}; - -struct dDlst_shadowControl_c { - static u8 mSimpleTexObj[32]; -}; - -struct dCcU_AtInfo {}; - -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcSph {}; - -struct dCcD_Sph { - /* 80084A34 */ void Set(dCcD_SrcSph const&); -}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80083830 */ void Move(); - /* 8061A5F4 */ ~dCcD_GStts(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800840E4 */ ~dCcD_GObjInf(); - /* 80084460 */ void ChkTgHit(); - /* 800844F8 */ void GetTgHitObj(); -}; - -struct dCamera_c { - /* 801614AC */ void Start(); - /* 801614D0 */ void Stop(); - /* 8016300C */ void SetTrimSize(s32); - /* 80180B40 */ void Set(cXyz, cXyz, s16, f32); - /* 80180C18 */ void Reset(cXyz, cXyz); -}; - -struct dBgS_PolyPassChk { - /* 80078E68 */ void SetObj(); -}; - -struct dBgS_ObjAcch { - /* 8061A484 */ ~dBgS_ObjAcch(); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F58 */ void SetWall(f32, f32); - /* 8061A4F4 */ ~dBgS_AcchCir(); -}; - -struct dBgS {}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - -struct cM3dGSph { - /* 8026F648 */ void SetC(cXyz const&); - /* 8026F708 */ void SetR(f32); - /* 8061A564 */ ~cM3dGSph(); -}; - -struct cM3dGCir { - /* 8026EF18 */ ~cM3dGCir(); -}; - -struct cM3dGAab { - /* 8061A5AC */ ~cM3dGAab(); -}; - -struct cCcD_Obj {}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - -struct cCcD_GStts { - /* 8061A7C0 */ ~cCcD_GStts(); -}; - -struct cBgS_PolyInfo { - /* 802680B0 */ ~cBgS_PolyInfo(); -}; - -struct b_ob_class { - /* 8061A0C0 */ b_ob_class(); -}; - -struct _GXTexObj {}; - -struct Z2SeqMgr { - /* 802AF010 */ void bgmStart(u32, u32, s32); - /* 802AF408 */ void bgmStop(u32, s32); - /* 802AF49C */ void subBgmStart(u32); - /* 802AFB94 */ void bgmStreamPrepare(u32); - /* 802AFE18 */ void bgmStreamPlay(); - /* 802AFF8C */ void changeBgmStatus(s32); -}; - -struct JAISoundID { - /* 8061AC04 */ JAISoundID(u32); -}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2CreatureOI { - /* 802C2578 */ Z2CreatureOI(); - /* 802C2670 */ void init(Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, - Vec*); - /* 802C2CD4 */ void startTentacleSoundLevel(JAISoundID, u8, f32, u32, s8); -}; - -struct Z2CreatureEnemy { - /* 802C0F64 */ Z2CreatureEnemy(); - /* 802C1094 */ void init(Vec*, Vec*, u8, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JPABaseEmitter { - /* 8061AAA8 */ void becomeDeleteEmitter(); -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct J3DSys { - static u8 mCurrentMtx[48]; -}; - -struct J3DModel { - /* 8061A948 */ void getAnmMtx(int); -}; - -struct J3DJoint {}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 8032842C */ void checkPass(f32); - /* 80619C14 */ ~J3DFrameCtrl(); -}; - // // Forward References: // @@ -448,7 +116,7 @@ extern "C" void startCheckSkipEdge__14dEvt_control_cFPv(); extern "C" static void dComIfGp_getEvent__Fv(); extern "C" static void mDoAud_seStart__FUlPC3VecUlSc(); extern "C" void set__4cXyzFfff(); -extern "C" void __ct__10JAISoundIDFUl(); +extern "C" void __ct__10JAISoundIDFUl(JAISoundID* this_, u32 param_0); extern "C" void abs__4cXyzCFv(); extern "C" void isStop__13mDoExt_morf_cFv(); extern "C" static void dComIfGp_getVibration__Fv(); @@ -593,11 +261,6 @@ extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void init__12J3DFrameCtrlFs(); extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void PSVECSquareMag(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void __cvt_fp2unsigned(); @@ -620,23 +283,15 @@ extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" extern void* __vt__19mDoExt_3DlineMat0_c[5]; -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__8dCcD_Sph[36]; extern "C" extern void* __vt__9dCcD_Stts[11]; extern "C" extern void* __vt__12cCcD_SphAttr[25]; extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; extern "C" extern void* __vt__9cCcD_Stts[8]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern void* calc_mtx[1 + 1 /* padding */]; -extern "C" extern u32 __float_nan; -extern "C" extern u8 mBlureFlag__13mDoGph_gInf_c[4]; extern "C" extern u8 struct_80450C98[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" void __register_global_object(); @@ -1289,7 +944,8 @@ static asm void daB_OB_Draw(b_ob_class* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::~cXyz() { +// asm cXyz::~cXyz() { +extern "C" asm void __dt__4cXyzFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__4cXyzFv.s" } @@ -1443,7 +1099,8 @@ static asm void bombfishset(b_ob_class* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm csXyz::~csXyz() { +// asm csXyz::~csXyz() { +extern "C" asm void __dt__5csXyzFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__5csXyzFv.s" } @@ -2157,7 +1814,8 @@ static asm void demo_camera(b_ob_class* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_particle_getEmitter(u32 param_0) { +// static asm void dComIfGp_particle_getEmitter(u32 param_0) { +extern "C" asm void dComIfGp_particle_getEmitter__FUl() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_particle_getEmitter__FUl.s" } @@ -2168,8 +1826,9 @@ static asm void dComIfGp_particle_getEmitter(u32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_particle_set(u32 param_0, u16 param_1, cXyz const* param_2, - csXyz const* param_3, cXyz const* param_4) { +/* static asm void dComIfGp_particle_set(u32 param_0, u16 param_1, cXyz const* param_2, + csXyz const* param_3, cXyz const* param_4) { */ +extern "C" asm void dComIfGp_particle_set__FUlUsPC4cXyzPC5csXyzPC4cXyz() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_particle_set__FUlUsPC4cXyzPC5csXyzPC4cXyz.s" } @@ -2907,7 +2566,8 @@ static asm void useHeapInit(fopAc_ac_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// asm J3DFrameCtrl::~J3DFrameCtrl() { +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__12J3DFrameCtrlFv.s" } @@ -2986,7 +2646,8 @@ asm ob_ke_s::ob_ke_s() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_ObjAcch::~dBgS_ObjAcch() { +// asm dBgS_ObjAcch::~dBgS_ObjAcch() { +extern "C" asm void __dt__12dBgS_ObjAcchFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__12dBgS_ObjAcchFv.s" } @@ -2996,7 +2657,8 @@ asm dBgS_ObjAcch::~dBgS_ObjAcch() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_AcchCir::~dBgS_AcchCir() { +// asm dBgS_AcchCir::~dBgS_AcchCir() { +extern "C" asm void __dt__12dBgS_AcchCirFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__12dBgS_AcchCirFv.s" } @@ -3006,7 +2668,8 @@ asm dBgS_AcchCir::~dBgS_AcchCir() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGSph::~cM3dGSph() { +// asm cM3dGSph::~cM3dGSph() { +extern "C" asm void __dt__8cM3dGSphFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__8cM3dGSphFv.s" } @@ -3016,7 +2679,8 @@ asm cM3dGSph::~cM3dGSph() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGAab::~cM3dGAab() { +// asm cM3dGAab::~cM3dGAab() { +extern "C" asm void __dt__8cM3dGAabFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__8cM3dGAabFv.s" } @@ -3026,19 +2690,22 @@ asm cM3dGAab::~cM3dGAab() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_GStts::~dCcD_GStts() { +// asm dCcD_GStts::~dCcD_GStts() { +extern "C" asm void __dt__10dCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__10dCcD_GSttsFv.s" } #pragma pop /* 8061A650-8061A654 00A1D0 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -csXyz::csXyz() { +// csXyz::csXyz() { +extern "C" void __ct__5csXyzFv() { /* empty function */ } /* 8061A654-8061A658 00A1D4 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -cXyz::cXyz() { +// cXyz::cXyz() { +extern "C" void __ct__4cXyzFv() { /* empty function */ } @@ -3066,7 +2733,8 @@ asm ob_part_s::ob_part_s() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cCcD_GStts::~cCcD_GStts() { +// asm cCcD_GStts::~cCcD_GStts() { +extern "C" asm void __dt__10cCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__dt__10cCcD_GSttsFv.s" } @@ -3141,7 +2809,8 @@ static asm void dComIfGp_event_reset() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGs_onStageBossEnemy() { +// static asm void dComIfGs_onStageBossEnemy() { +extern "C" asm void dComIfGs_onStageBossEnemy__Fv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGs_onStageBossEnemy__Fv.s" } @@ -3152,7 +2821,8 @@ static asm void dComIfGs_onStageBossEnemy() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoMtx_stack_c::multVecZero(Vec* param_0) { +// asm void mDoMtx_stack_c::multVecZero(Vec* param_0) { +extern "C" asm void multVecZero__14mDoMtx_stack_cFP3Vec() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/multVecZero__14mDoMtx_stack_cFP3Vec.s" } @@ -3162,7 +2832,8 @@ asm void mDoMtx_stack_c::multVecZero(Vec* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DModel::getAnmMtx(int param_0) { +// asm void J3DModel::getAnmMtx(int param_0) { +extern "C" asm void getAnmMtx__8J3DModelFi() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/getAnmMtx__8J3DModelFi.s" } @@ -3172,7 +2843,8 @@ asm void J3DModel::getAnmMtx(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::operator+=(Vec const& param_0) { +// asm void cXyz::operator+=(Vec const& param_0) { +extern "C" asm void __apl__4cXyzFRC3Vec() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__apl__4cXyzFRC3Vec.s" } @@ -3182,7 +2854,8 @@ asm void cXyz::operator+=(Vec const& param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void csXyz::operator=(csXyz const& param_0) { +// asm void csXyz::operator=(csXyz const& param_0) { +extern "C" asm void __as__5csXyzFRC5csXyz() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__as__5csXyzFRC5csXyz.s" } @@ -3192,7 +2865,8 @@ asm void csXyz::operator=(csXyz const& param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::operator=(cXyz const& param_0) { +// asm void cXyz::operator=(cXyz const& param_0) { +extern "C" asm void __as__4cXyzFRC4cXyz() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__as__4cXyzFRC4cXyz.s" } @@ -3222,7 +2896,8 @@ asm void daPy_py_c::changeOriginalDemo() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daPy_getPlayerActorClass() { +// static asm void daPy_getPlayerActorClass() { +extern "C" asm void daPy_getPlayerActorClass__Fv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/daPy_getPlayerActorClass__Fv.s" } @@ -3242,7 +2917,8 @@ asm void dEvt_info_c::onCondition(u16 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dEvt_info_c::checkCommandDemoAccrpt() { +// asm void dEvt_info_c::checkCommandDemoAccrpt() { +extern "C" asm void checkCommandDemoAccrpt__11dEvt_info_cFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/checkCommandDemoAccrpt__11dEvt_info_cFv.s" } @@ -3252,7 +2928,8 @@ asm void dEvt_info_c::checkCommandDemoAccrpt() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getCamera(int param_0) { +// static asm void dComIfGp_getCamera(int param_0) { +extern "C" asm void dComIfGp_getCamera__Fi() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_getCamera__Fi.s" } @@ -3262,7 +2939,8 @@ static asm void dComIfGp_getCamera(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getPlayerCameraID(int param_0) { +// static asm void dComIfGp_getPlayerCameraID(int param_0) { +extern "C" asm void dComIfGp_getPlayerCameraID__Fi() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_getPlayerCameraID__Fi.s" } @@ -3272,7 +2950,8 @@ static asm void dComIfGp_getPlayerCameraID(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getPlayer(int param_0) { +// static asm void dComIfGp_getPlayer(int param_0) { +extern "C" asm void dComIfGp_getPlayer__Fi() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_getPlayer__Fi.s" } @@ -3292,7 +2971,8 @@ asm void obj_ystone_class::setCurrentPos(cXyz param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::cXyz(cXyz const& param_0) { +// asm cXyz::cXyz(cXyz const& param_0) { +extern "C" asm void __ct__4cXyzFRC4cXyz() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__ct__4cXyzFRC4cXyz.s" } @@ -3302,7 +2982,8 @@ asm cXyz::cXyz(cXyz const& param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JPABaseEmitter::becomeDeleteEmitter() { +// asm void JPABaseEmitter::becomeDeleteEmitter() { +extern "C" asm void becomeDeleteEmitter__14JPABaseEmitterFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/becomeDeleteEmitter__14JPABaseEmitterFv.s" } @@ -3312,7 +2993,8 @@ asm void JPABaseEmitter::becomeDeleteEmitter() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm csXyz::csXyz(csXyz const& param_0) { +// asm csXyz::csXyz(csXyz const& param_0) { +extern "C" asm void __ct__5csXyzFRC5csXyz() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__ct__5csXyzFRC5csXyz.s" } @@ -3322,7 +3004,8 @@ asm csXyz::csXyz(csXyz const& param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void std::fabsf(f32 param_0) { +// asm void std::fabsf(f32 param_0) { +extern "C" asm void fabsf__3stdFf() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/fabsf__3stdFf.s" } @@ -3333,8 +3016,9 @@ asm void std::fabsf(f32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_particle_set(u16 param_0, cXyz const* param_1, csXyz const* param_2, - cXyz const* param_3) { +/* static asm void dComIfGp_particle_set(u16 param_0, cXyz const* param_1, csXyz const* param_2, + cXyz const* param_3) { */ +extern "C" asm void dComIfGp_particle_set__FUsPC4cXyzPC5csXyzPC4cXyz() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_particle_set__FUsPC4cXyzPC5csXyzPC4cXyz.s" } @@ -3344,7 +3028,8 @@ static asm void dComIfGp_particle_set(u16 param_0, cXyz const* param_1, csXyz co #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoExt_morf_c::setPlaySpeed(f32 param_0) { +// asm void mDoExt_morf_c::setPlaySpeed(f32 param_0) { +extern "C" asm void setPlaySpeed__13mDoExt_morf_cFf() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/setPlaySpeed__13mDoExt_morf_cFf.s" } @@ -3354,7 +3039,8 @@ asm void mDoExt_morf_c::setPlaySpeed(f32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dEvt_control_c::startCheckSkipEdge(void* param_0) { +// asm void dEvt_control_c::startCheckSkipEdge(void* param_0) { +extern "C" asm void startCheckSkipEdge__14dEvt_control_cFPv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/startCheckSkipEdge__14dEvt_control_cFPv.s" } @@ -3364,7 +3050,8 @@ asm void dEvt_control_c::startCheckSkipEdge(void* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getEvent() { +// static asm void dComIfGp_getEvent() { +extern "C" asm void dComIfGp_getEvent__Fv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_getEvent__Fv.s" } @@ -3374,7 +3061,8 @@ static asm void dComIfGp_getEvent() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void mDoAud_seStart(u32 param_0, Vec const* param_1, u32 param_2, s8 param_3) { +// static asm void mDoAud_seStart(u32 param_0, Vec const* param_1, u32 param_2, s8 param_3) { +extern "C" asm void mDoAud_seStart__FUlPC3VecUlSc() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/mDoAud_seStart__FUlPC3VecUlSc.s" } @@ -3384,22 +3072,25 @@ static asm void mDoAud_seStart(u32 param_0, Vec const* param_1, u32 param_2, s8 #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::set(f32 param_0, f32 param_1, f32 param_2) { +// asm void cXyz::set(f32 param_0, f32 param_1, f32 param_2) { +extern "C" asm void set__4cXyzFfff() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/set__4cXyzFfff.s" } #pragma pop /* 8061AC04-8061AC0C -00001 0008+00 0/0 0/0 0/0 .text __ct__10JAISoundIDFUl */ -JAISoundID::JAISoundID(u32 param_0) { - *(u32*)this = (u32)(param_0); +// JAISoundID::JAISoundID(u32 param_0) { +extern "C" void __ct__10JAISoundIDFUl(JAISoundID* this_, u32 param_0) { + *(u32*)this_ = (u32)(param_0); } /* 8061AC0C-8061AD20 00A78C 0114+00 1/1 0/0 0/0 .text abs__4cXyzCFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cXyz::abs() const { +// asm void cXyz::abs() const { +extern "C" asm void abs__4cXyzCFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/abs__4cXyzCFv.s" } @@ -3409,7 +3100,8 @@ asm void cXyz::abs() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoExt_morf_c::isStop() { +// asm void mDoExt_morf_c::isStop() { +extern "C" asm void isStop__13mDoExt_morf_cFv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/isStop__13mDoExt_morf_cFv.s" } @@ -3419,7 +3111,8 @@ asm void mDoExt_morf_c::isStop() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getVibration() { +// static asm void dComIfGp_getVibration() { +extern "C" asm void dComIfGp_getVibration__Fv() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/dComIfGp_getVibration__Fv.s" } @@ -3429,7 +3122,8 @@ static asm void dComIfGp_getVibration() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::cXyz(f32 param_0, f32 param_1, f32 param_2) { +// asm cXyz::cXyz(f32 param_0, f32 param_1, f32 param_2) { +extern "C" asm void __ct__4cXyzFfff() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/__ct__4cXyzFfff.s" } diff --git a/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.cpp b/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.cpp index 3e1294891a..ce2bae1892 100644 --- a/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.cpp +++ b/rel/d/a/b/d_a_b_oh2/d_a_b_oh2.cpp @@ -139,10 +139,10 @@ static void action(b_oh2_class* i_this) { break; } - PSMTXCopy(boss->field_0x5c0->getModel()->i_getAnmMtx(i_this->field_0x5c8 + 8), + PSMTXCopy(boss->mParts[0].field_0x0->getModel()->i_getAnmMtx(i_this->field_0x5c8 + 8), mDoMtx_stack_c::get()); mDoMtx_stack_c::multVecZero(&i_this->current.pos); - PSMTXCopy(boss->field_0x5c0->getModel()->i_getAnmMtx(0), mDoMtx_stack_c::get()); + PSMTXCopy(boss->mParts[0].field_0x0->getModel()->i_getAnmMtx(0), mDoMtx_stack_c::get()); local_20.set(0.0f, 0.0f, i_this->field_0x5c8 * 20.0f + 650.0f); mDoMtx_stack_c::multVec(&local_20, &vstack_2C); diff --git a/src/d/a/d_a_alink_hang.inc b/src/d/a/d_a_alink_hang.inc index 9ef2048981..fea7a305d8 100644 --- a/src/d/a/d_a_alink_hang.inc +++ b/src/d/a/d_a_alink_hang.inc @@ -1,3 +1,4 @@ +#include "rel/d/a/b/d_a_b_ob/d_a_b_ob.h" #include "rel/d/a/obj/d_a_obj_swhang/d_a_obj_swhang.h" /* 800F9FDC-800F9FFC 0F491C 0020+00 2/2 0/0 0/0 .text getHangMoveAnmSpeed__9daAlink_cFv @@ -475,14 +476,18 @@ asm void daAlink_c::setDragonHangPos() { #pragma pop /* 800FC6B4-800FC748 0F6FF4 0094+00 1/1 0/0 0/0 .text setOctaIealHangPos__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setOctaIealHangPos() { - nofralloc -#include "asm/d/a/d_a_alink/setOctaIealHangPos__9daAlink_cFv.s" +int daAlink_c::setOctaIealHangPos() { + b_ob_class* ob_p = (b_ob_class*)field_0x280c.getActor(); + if (ob_p == NULL) { + return 0; + } + + mDoMtx_stack_c::copy(ob_p->mParts[0].field_0x0->getModel()->i_getAnmMtx(0)); + mDoMtx_stack_c::transM(FLOAT_LABEL(lit_6108), lit_24400, lit_24401); + mDoMtx_stack_c::multVecZero(¤t.pos); + mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &shape_angle); + return 1; } -#pragma pop /* 800FC748-800FC77C 0F7088 0034+00 2/2 0/0 0/0 .text setBossBodyHangPos__9daAlink_cFv */ void daAlink_c::setBossBodyHangPos() { @@ -1332,14 +1337,44 @@ int daAlink_c::procRoofHangSideMove() { /* 801013B8-80101534 0FBCF8 017C+00 1/1 0/0 0/0 .text procRoofHangTurnInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daAlink_c::procRoofHangTurnInit() { - nofralloc -#include "asm/d/a/d_a_alink/procRoofHangTurnInit__9daAlink_cFv.s" +int daAlink_c::procRoofHangTurnInit() { + commonProcInit(PROC_ROOF_HANG_TURN); + + f32 anm_speed; + if ((s16)(field_0x2fe2 - shape_angle.y) < 0) { + anm_speed = -daAlinkHIO_roofHang_c0::m.field_0x44; + field_0x3008 = 1; + shape_angle.y += 0x8000; + setOldRootQuaternion(0, -0x8000, 0); + field_0x2060->getOldFrameTransInfo(0)->mTranslate.z = lit_26275; + field_0x300c = field_0x2fe2; + field_0x3478 = FLOAT_LABEL(lit_6108); + field_0x347c = lit_7625; + } else { + anm_speed = daAlinkHIO_roofHang_c0::m.field_0x44; + field_0x3008 = 0; + field_0x300c = field_0x2fe2 + 0x8000; + field_0x3478 = lit_7625; + field_0x347c = lit_26276; + } + + current.angle.y = shape_angle.y; + setSingleAnimeBaseSpeed(ANM_ROOF_HANG_TURN, anm_speed, daAlinkHIO_roofHang_c0::m.field_0x48); + + if (field_0x3008 != 0) { + setFaceBasicTexture(FTANM_UNK_4); + } else { + setFaceBasicTexture(FTANM_UNK_3); + } + + field_0x2f98 = 4; + setSpecialGravity(FLOAT_LABEL(lit_6108), mMaxFallSpeed, 0); + f32 tmp_0 = FLOAT_LABEL(lit_6108); + mNormalSpeed = tmp_0; + speed.y = tmp_0; + dComIfGp_setPlayerStatus1(0, 0x100000); + return 1; } -#pragma pop /* 80101534-8010163C 0FBE74 0108+00 1/0 0/0 0/0 .text procRoofHangTurn__9daAlink_cFv */ int daAlink_c::procRoofHangTurn() { @@ -1370,25 +1405,40 @@ int daAlink_c::procRoofHangTurn() { } /* 8010163C-801016AC 0FBF7C 0070+00 2/2 0/0 0/0 .text setRoofHangSwitch__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setRoofHangSwitch() { - nofralloc -#include "asm/d/a/d_a_alink/setRoofHangSwitch__9daAlink_cFv.s" +void daAlink_c::setRoofHangSwitch() { + daObjSwHang_c* swhang_p = (daObjSwHang_c*)field_0x280c.getActor(); + current.pos = swhang_p->getHangPos(); + current.pos.y -= lit_25916; + swhang_p->setHangPlayer(); } -#pragma pop /* 801016AC-801017AC 0FBFEC 0100+00 1/1 0/0 0/0 .text * procRoofSwitchHangInit__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daAlink_c::procRoofSwitchHangInit(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/procRoofSwitchHangInit__9daAlink_cFP10fopAc_ac_c.s" +int daAlink_c::procRoofSwitchHangInit(fopAc_ac_c* param_0) { + commonProcInit(PROC_ROOF_SWITCH_HANG); + deleteEquipItem(TRUE, FALSE); + setSingleAnimeParam(ANM_ROOF_HANG, &daAlinkHIO_roofHang_c0::m.field_0x0); + + setSpecialGravity(FLOAT_LABEL(lit_6108), mMaxFallSpeed, 0); + f32 tmp_0 = FLOAT_LABEL(lit_6108); + speed.y = tmp_0; + mNormalSpeed = tmp_0; + + field_0x280c.setData(param_0); + setRoofHangSwitch(); + + if (cLib_distanceAngleS(param_0->shape_angle.y, shape_angle.y) > 0x4000) { + current.angle.y = param_0->shape_angle.y + 0x8000; + } else { + current.angle.y = param_0->shape_angle.y; + } + + setOldRootQuaternion(0, current.angle.y - shape_angle.y, 0); + shape_angle.y = current.angle.y; + field_0x2f99 = 0x50; + field_0x300c = 0; + return 1; } -#pragma pop /* 801017AC-80101874 0FC0EC 00C8+00 1/0 0/0 0/0 .text procRoofSwitchHang__9daAlink_cFv */ int daAlink_c::procRoofSwitchHang() { @@ -1414,15 +1464,6 @@ int daAlink_c::procRoofSwitchHang() { } /* 80101874-80101890 0FC1B4 001C+00 2/2 0/0 0/0 .text getHangPos__13daObjSwHang_cFv */ -/* #pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm cXyz daObjSwHang_c::getHangPos() { - nofralloc -#include "asm/d/a/d_a_alink/getHangPos__13daObjSwHang_cFv.s" -} -#pragma pop - */ cXyz daObjSwHang_c::getHangPos() { return mHangPos; }