From bbc7944e54bd4c6095c82ca9877c48488a16cdff Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Wed, 19 Feb 2025 15:43:26 -0800 Subject: [PATCH] d_a_boomerang / d_a_grass mostly done, d_a_spinner done (#2304) * d_a_boomerang mostly done * d_a_grass mostly done * d_a_spinner done --- config/GZ2E01/rels/d_a_grass/symbols.txt | 20 +- config/GZ2E01/rels/d_a_spinner/symbols.txt | 14 +- configure.py | 2 +- include/SSystem/SComponent/c_counter.h | 2 +- include/d/actor/d_a_alink.h | 34 + include/d/actor/d_a_boomerang.h | 174 +- include/d/actor/d_a_grass.h | 30 +- include/d/actor/d_a_player.h | 5 + include/d/actor/d_a_spinner.h | 61 +- include/d/actor/d_a_tag_sppath.h | 5 + include/d/d_cc_d.h | 1 + include/d/d_cc_mass_s.h | 2 + include/d/d_cc_s.h | 9 + include/d/d_com_inf_game.h | 8 + include/d/d_kankyo.h | 1 + include/d/d_path.h | 1 + src/d/actor/d_a_boomerang.cpp | 2723 ++++++++------------ src/d/actor/d_a_grass.cpp | 2282 +--------------- src/d/actor/d_a_spinner.cpp | 1801 ++++++------- src/d/actor/d_flower.inc | 889 ++++++- src/d/actor/d_grass.inc | 766 +++++- 21 files changed, 3827 insertions(+), 5003 deletions(-) diff --git a/config/GZ2E01/rels/d_a_grass/symbols.txt b/config/GZ2E01/rels/d_a_grass/symbols.txt index 7c78222b40..43c49c0b78 100644 --- a/config/GZ2E01/rels/d_a_grass/symbols.txt +++ b/config/GZ2E01/rels/d_a_grass/symbols.txt @@ -175,32 +175,32 @@ l_pos = .data:0x00001020; // type:object size:0x3C0 scope:global l_normal = .data:0x000013E0; // type:object size:0xC scope:global l_color = .data:0x000013EC; // type:object size:0x14 scope:global l_texCoord = .data:0x00001400; // type:object size:0xA0 scope:global -l_M_Kusa_9qDL = .data:0x000014A0; // type:object size:0xCB scope:global -l_M_Kusa_9q_cDL = .data:0x00001580; // type:object size:0xCB scope:global -l_M_TenGusaDL = .data:0x00001660; // type:object size:0xD4 scope:global +l_M_Kusa_9qDL = .data:0x000014A0; // type:object size:0xCB scope:global align:32 +l_M_Kusa_9q_cDL = .data:0x00001580; // type:object size:0xCB scope:global align:32 +l_M_TenGusaDL = .data:0x00001660; // type:object size:0xD4 scope:global align:32 l_Tengusa_matDL = .data:0x00001740; // type:object size:0xA8 scope:global l_kusa9q_matDL = .data:0x00001800; // type:object size:0xA8 scope:global l_kusa9q_l4_matDL = .data:0x000018C0; // type:object size:0xA8 scope:global @4620 = .data:0x00001968; // type:object size:0xC scope:local l_vtxDescList$4654 = .data:0x00001974; // type:object size:0x28 scope:local l_vtxAttrFmtList$4655 = .data:0x0000199C; // type:object size:0x50 scope:local -l_J_Ohana00_64TEX = .data:0x00001A00; // type:object size:0x800 scope:global +l_J_Ohana00_64TEX = .data:0x00001A00; // type:object size:0x800 scope:global align:32 l_flowerPos = .data:0x00002200; // type:object size:0x2C4 scope:global l_flowerNormal = .data:0x000024C4; // type:object size:0xB4 scope:global l_flowerColor = .data:0x00002578; // type:object size:0x8 scope:global l_flowerTexCoord = .data:0x00002580; // type:object size:0x138 scope:global -l_J_hana00DL = .data:0x000026C0; // type:object size:0x150 scope:global -l_J_hana00_cDL = .data:0x00002820; // type:object size:0xDE scope:global +l_J_hana00DL = .data:0x000026C0; // type:object size:0x150 scope:global align:32 +l_J_hana00_cDL = .data:0x00002820; // type:object size:0xDE scope:global align:32 l_matDL = .data:0x00002900; // type:object size:0x99 scope:global l_matLight4DL = .data:0x000029A0; // type:object size:0x99 scope:global -l_J_Ohana01_64128_0419TEX = .data:0x00002A40; // type:object size:0x1000 scope:global +l_J_Ohana01_64128_0419TEX = .data:0x00002A40; // type:object size:0x1000 scope:global align:32 l_flowerPos2 = .data:0x00003A40; // type:object size:0x4C8 scope:global l_flowerNormal2 = .data:0x00003F08; // type:object size:0x120 scope:global l_flowerColor2 = .data:0x00004028; // type:object size:0x8 scope:global l_flowerTexCoord2 = .data:0x00004030; // type:object size:0x120 scope:global -l_J_hana01DL = .data:0x00004160; // type:object size:0x138 scope:global -l_J_hana01_c_00DL = .data:0x000042A0; // type:object size:0xDE scope:global -l_J_hana01_c_01DL = .data:0x00004380; // type:object size:0x128 scope:global +l_J_hana01DL = .data:0x00004160; // type:object size:0x138 scope:global align:32 +l_J_hana01_c_00DL = .data:0x000042A0; // type:object size:0xDE scope:global align:32 +l_J_hana01_c_01DL = .data:0x00004380; // type:object size:0x128 scope:global align:32 l_mat2DL = .data:0x000044C0; // type:object size:0x99 scope:global l_mat2Light4DL = .data:0x00004560; // type:object size:0x99 scope:global @5875 = .data:0x000045FC; // type:object size:0xC scope:local data:4byte diff --git a/config/GZ2E01/rels/d_a_spinner/symbols.txt b/config/GZ2E01/rels/d_a_spinner/symbols.txt index eff03303ec..e7c21c37fc 100644 --- a/config/GZ2E01/rels/d_a_spinner/symbols.txt +++ b/config/GZ2E01/rels/d_a_spinner/symbols.txt @@ -4,7 +4,7 @@ _unresolved = .text:0x00000058; // type:function size:0x20 scope:global __register_global_object = .text:0x00000078; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global createHeap__11daSpinner_cFv = .text:0x000000EC; // type:function size:0xC4 scope:global -daSpinner_createHeap__FP10fopAc_ac_c = .text:0x000001B0; // type:function size:0x20 scope:global +daSpinner_createHeap__FP10fopAc_ac_c = .text:0x000001B0; // type:function size:0x20 scope:local create__11daSpinner_cFv = .text:0x000001D0; // type:function size:0x2F0 scope:global __dt__8cM3dGCylFv = .text:0x000004C0; // type:function size:0x48 scope:global __dt__8cM3dGAabFv = .text:0x00000508; // type:function size:0x48 scope:global @@ -13,9 +13,9 @@ __dt__4cXyzFv = .text:0x000005AC; // type:function size:0x3C scope:global __dt__13dBgS_LinkAcchFv = .text:0x000005E8; // type:function size:0x70 scope:global __dt__12dBgS_AcchCirFv = .text:0x00000658; // type:function size:0x70 scope:global __dt__12J3DFrameCtrlFv = .text:0x000006C8; // type:function size:0x48 scope:global -daSpinner_Create__FP10fopAc_ac_c = .text:0x00000710; // type:function size:0x20 scope:global +daSpinner_Create__FP10fopAc_ac_c = .text:0x00000710; // type:function size:0x20 scope:local __dt__11daSpinner_cFv = .text:0x00000730; // type:function size:0x1E8 scope:global -daSpinner_Delete__FP11daSpinner_c = .text:0x00000918; // type:function size:0x28 scope:global +daSpinner_Delete__FP11daSpinner_c = .text:0x00000918; // type:function size:0x28 scope:local setRoomInfo__11daSpinner_cFv = .text:0x00000940; // type:function size:0x98 scope:global setMatrix__11daSpinner_cFv = .text:0x000009D8; // type:function size:0xA8 scope:global setEffect__11daSpinner_cFv = .text:0x00000A80; // type:function size:0x2D4 scope:global @@ -32,9 +32,9 @@ checkPathMove__11daSpinner_cFv = .text:0x00001ED4; // type:function size:0x5EC s setSpreadEffect__11daSpinner_cFv = .text:0x000024C0; // type:function size:0x1B4 scope:global clearSpreadEffect__11daSpinner_cFv = .text:0x00002674; // type:function size:0x78 scope:global execute__11daSpinner_cFv = .text:0x000026EC; // type:function size:0xC08 scope:global -daSpinner_Execute__FP11daSpinner_c = .text:0x000032F4; // type:function size:0x20 scope:global +daSpinner_Execute__FP11daSpinner_c = .text:0x000032F4; // type:function size:0x20 scope:local draw__11daSpinner_cFv = .text:0x00003314; // type:function size:0x154 scope:global -daSpinner_Draw__FP11daSpinner_c = .text:0x00003468; // type:function size:0x20 scope:global +daSpinner_Draw__FP11daSpinner_c = .text:0x00003468; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00003488; // type:function size:0x48 scope:global @36@__dt__13dBgS_LinkAcchFv = .text:0x000034D0; // type:function size:0x8 scope:local @20@__dt__13dBgS_LinkAcchFv = .text:0x000034D8; // type:function size:0x8 scope:local @@ -90,8 +90,8 @@ effName$5299 = .rodata:0x000000D8; // type:object size:0x4 scope:local @5723 = .rodata:0x00000108; // type:object size:0x4 scope:local @5724 = .rodata:0x0000010C; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x00000110; // type:object size:0x8 scope:local data:string_table -l_cylSrc = .data:0x00000000; // type:object size:0x44 scope:global -l_daSpinner_Method = .data:0x00000044; // type:object size:0x20 scope:global +l_cylSrc = .data:0x00000000; // type:object size:0x44 scope:local +l_daSpinner_Method = .data:0x00000044; // type:object size:0x20 scope:local g_profile_SPINNER = .data:0x00000064; // type:object size:0x30 scope:global __vt__8cM3dGPla = .data:0x00000094; // type:object size:0xC scope:global __vt__8cM3dGLin = .data:0x000000A0; // type:object size:0xC scope:global diff --git a/configure.py b/configure.py index 483bc8a896..2b56fb9a28 100755 --- a/configure.py +++ b/configure.py @@ -1486,7 +1486,7 @@ config.libs = [ ActorRel(Equivalent, "d_a_nbomb"), # weak func order ActorRel(MatchingFor("GZ2E01"), "d_a_obj_life_container"), ActorRel(NonMatching, "d_a_obj_yousei"), - ActorRel(NonMatching, "d_a_spinner"), + ActorRel(MatchingFor("GZ2E01"), "d_a_spinner"), ActorRel(MatchingFor("GZ2E01"), "d_a_suspend"), ActorRel(MatchingFor("GZ2E01"), "d_a_tag_attention"), ActorRel(MatchingFor("GZ2E01"), "d_a_alldie"), diff --git a/include/SSystem/SComponent/c_counter.h b/include/SSystem/SComponent/c_counter.h index 19cd6bd3a4..975824eb9e 100644 --- a/include/SSystem/SComponent/c_counter.h +++ b/include/SSystem/SComponent/c_counter.h @@ -6,7 +6,7 @@ struct counter_class { u32 mCounter0; s32 mCounter1; - s32 mTimer; + u32 mTimer; }; extern counter_class g_Counter; diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 957b7147e4..32ec4f92b8 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -3555,6 +3555,40 @@ public: mDoMtx_multVec(getRightHandMatrix(), &m_handRightInSidePos, o_pos); } + cXyz* getLineTopPosP() { + return mSight.getPosP(); + } + + cXyz* getBoomerangLockPosP() { + return &mHeldItemRootPos; + } + + BOOL boomerangLockTrigger() { + return itemActionTrigger(); + } + + BOOL checkBoomerangLockTrigger() { + return boomerangLockTrigger(); + } + + BOOL checkDemoSpinnerKeep() const { + return mDemo.getDemoMode() == 14 && mDemo.getParam0() == 1; + } + + BOOL checkDemoSpinnerKeepSpeed() const { + return mDemo.getDemoMode() == 14 && mDemo.getParam0() == 2; + } + + bool checkSpinnerRideOwn(const fopAc_ac_c* param_0) { + return checkSpinnerRide() && mRideAcKeep.getActorConst() == param_0; + } + + BOOL checkSpinnerReady() const { return mProcID == PROC_SPINNER_READY; } + + BOOL checkGameOverWindow() const { return mProcID == PROC_DEAD && field_0x3478 < 0.01f; } + + f32 getSlideLimit() const { return field_0x3470; } + inline bool checkWindSpeedOnXZ() const; inline void startRestartRoomFromOut(int, u32, int); inline u16 getReadyItem(); diff --git a/include/d/actor/d_a_boomerang.h b/include/d/actor/d_a_boomerang.h index 974fe99645..9198ac4702 100644 --- a/include/d/actor/d_a_boomerang.h +++ b/include/d/actor/d_a_boomerang.h @@ -5,7 +5,9 @@ #include "d/d_particle_copoly.h" #include "f_op/f_op_actor_mng.h" -class daBoomerang_sight_c { +#define BOOMERANG_LOCK_MAX 5 + +class daBoomerang_sight_c : public dDlst_base_c { public: /* 8049E0B8 */ int createHeap(); /* 8049E36C */ void initialize(); @@ -13,48 +15,48 @@ public: /* 8049EDA8 */ void initFrame(int); /* 8049EDE8 */ void copyNumData(int); /* 8049EEC8 */ void setSight(cXyz const*, int); - /* 8049EF60 */ void draw(); - /* 804A278C */ virtual ~daBoomerang_sight_c(); + /* 8049EF60 */ virtual void draw(); + /* 804A278C */ virtual ~daBoomerang_sight_c() {} u8 getReserve() const { return mReserve; } - u8 getAlpha(int i_index) { return mAlpha[i_index]; } - void offRedSight() { mRedSight = false; } + u8 getAlpha(int i_index) { return m_alpha[i_index]; } + void offRedSight() { m_redSight = false; } void onReserve() { mReserve = 1; } void offReserve() { mReserve = 0; } private: - /* 0x04 */ J2DScreen* field_0x4; - /* 0x08 */ J2DPane* field_0x8; - /* 0x0C */ J2DPane* field_0xc; - /* 0x10 */ J2DPane* field_0x10; - /* 0x14 */ J2DPane* field_0x14; - /* 0x18 */ J2DAnmTevRegKey* field_0x18; - /* 0x1C */ J2DAnmTevRegKey* field_0x1c; - /* 0x20 */ J2DScreen* field_0x20; - /* 0x24 */ J2DPane* field_0x24; - /* 0x28 */ J2DPane* field_0x28; - /* 0x2C */ J2DPane* field_0x2c; - /* 0x30 */ J2DPane* field_0x30; - /* 0x34 */ J2DAnmTevRegKey* field_0x34; - /* 0x38 */ J2DAnmTevRegKey* field_0x38; - /* 0x3C */ J2DScreen* field_0x3c; - /* 0x40 */ J2DPane* field_0x40; - /* 0x44 */ J2DPane* field_0x44; - /* 0x48 */ J2DPane* field_0x48; - /* 0x4C */ J2DPane* field_0x4c; - /* 0x50 */ J2DAnmTevRegKey* field_0x50; - /* 0x54 */ J2DAnmTevRegKey* field_0x54; - /* 0x58 */ J2DAnmColor* field_0x58; - /* 0x5C */ J2DAnmTransform* field_0x5c; - /* 0x60 */ bool mRedSight; + /* 0x04 */ J2DScreen* m_cursorYellowScrn; + /* 0x08 */ J2DPane* m_cursorYellowAllPane; + /* 0x0C */ J2DPane* m_cursorYellow0Pane; + /* 0x10 */ J2DPane* m_cursorYellow1Pane; + /* 0x14 */ J2DPane* m_cursorYellow2Pane; + /* 0x18 */ J2DAnmTevRegKey* m_cursorYellow2Brk; + /* 0x1C */ J2DAnmTevRegKey* m_cursorYellowBrk; + /* 0x20 */ J2DScreen* m_cursorRedScrn; + /* 0x24 */ J2DPane* m_cursorRedAllPane; + /* 0x28 */ J2DPane* m_cursorRed0Pane; + /* 0x2C */ J2DPane* m_cursorRed1Pane; + /* 0x30 */ J2DPane* m_cursorRed2Pane; + /* 0x34 */ J2DAnmTevRegKey* m_cursorRed2Brk; + /* 0x38 */ J2DAnmTevRegKey* m_cursorRedBrk; + /* 0x3C */ J2DScreen* m_cursorOrangeScrn; + /* 0x40 */ J2DPane* m_cursorOrangeAllPane; + /* 0x44 */ J2DPane* m_cursorOrange0Pane; + /* 0x48 */ J2DPane* m_cursorOrange1Pane; + /* 0x4C */ J2DPane* m_cursorOrange2Pane; + /* 0x50 */ J2DAnmTevRegKey* m_cursorOrange2Brk; + /* 0x54 */ J2DAnmTevRegKey* m_cursorOrangeBrk; + /* 0x58 */ J2DAnmColor* m_cursorYellowBpk; + /* 0x5C */ J2DAnmTransform* m_cursorYellowBck; + /* 0x60 */ bool m_redSight; /* 0x61 */ u8 mReserve; - /* 0x62 */ u8 mAlpha[6]; - /* 0x68 */ f32 field_0x68[6]; - /* 0x80 */ f32 field_0x80[6]; + /* 0x62 */ u8 m_alpha[6]; + /* 0x68 */ f32 m_proj_posX[6]; + /* 0x80 */ f32 m_proj_posY[6]; /* 0x98 */ f32 field_0x98[6]; /* 0xB0 */ f32 field_0xb0[6]; - /* 0xC8 */ cXyz field_0xc8[6]; + /* 0xC8 */ cXyz m_pos[6]; }; // Size: 0x110 class daAlink_c; @@ -70,10 +72,16 @@ class daAlink_c; class daBoomerang_c : public fopAc_ac_c { public: enum daBoomerang_FLG0 { - /* 0x001 */ FLG0_1 = 0x001, - /* 0x004 */ FLG0_UNK = 0x004, - /* 0x010 */ FLG0_10 = 0x010, - /* 0x200 */ FLG0_0x200 = 0x200, + /* 0x001 */ FLG0_1 = 0x1, + /* 0x002 */ FLG0_2 = 0x2, + /* 0x004 */ FLG0_4 = 0x4, + /* 0x010 */ FLG0_10 = 0x10, + /* 0x020 */ FLG0_20 = 0x20, + /* 0x040 */ FLG0_40 = 0x40, + /* 0x080 */ FLG0_80 = 0x80, + /* 0x100 */ FLG0_100 = 0x100, + /* 0x200 */ FLG0_200 = 0x200, + /* 0x400 */ FLG0_400 = 0x400, /* 0x800 */ FLG0_LOCK_DIST_CANCEL = 0x800, /* 0x080 */ WIND_CATCH = 0x80, }; @@ -95,85 +103,86 @@ public: /* 8049FE6C */ void checkBgHit(cXyz*, cXyz*); /* 804A006C */ JPABaseEmitter* setEffectTraceMatrix(u32*, u16); /* 804A012C */ void setEffect(); - /* 804A0874 */ void procWait(); - /* 804A0F0C */ void procMove(); + /* 804A0874 */ int procWait(); + /* 804A0F0C */ int procMove(); /* 804A1814 */ int execute(); /* 804A1BF4 */ ~daBoomerang_c(); /* 804A1EE4 */ int createHeap(); /* 804A2084 */ int create(); /* 804A230C */ daBoomerang_c(); - u32 checkStateFlg0(daBoomerang_FLG0 i_flag) { return mStateFlg0 & i_flag; } - void onStateFlg0(daBoomerang_FLG0 flag) { mStateFlg0 |= flag; } + u32 checkStateFlg0(daBoomerang_FLG0 i_flag) const { return m_stateFlg0 & i_flag; } + void onStateFlg0(daBoomerang_FLG0 flag) { m_stateFlg0 |= flag; } + void offStateFlg0(daBoomerang_FLG0 flag) { m_stateFlg0 &= ~flag; } void onWindCatch() { onStateFlg0(WIND_CATCH); } - bool checkForceDelete() const { return mForceDelete; } - void onForceDelete() { mForceDelete = true; } + bool checkForceDelete() const { return m_forceDelete; } + void onForceDelete() { m_forceDelete = true; } bool checkCharge() const { return true; } void setThrow() { fopAcM_SetParam(this, 1); } - void setAimActor(fopAc_ac_c* i_actor) { (this->*mpSetAimActorFn)(i_actor); } - void cancelLockActor(fopAc_ac_c* i_actor) { (this->*mpCancelLockActorFn)(i_actor); } - u8 getLockReserve() const { return mSight.getReserve(); } - bool getLockCntMax() { return mLockCnt >= 5; } + void setAimActor(fopAc_ac_c* i_actor) { (this->*m_setAimActorFn)(i_actor); } + void cancelLockActor(fopAc_ac_c* i_actor) { (this->*m_cancelLockActorFn)(i_actor); } + u8 getLockReserve() const { return m_sight.getReserve(); } + bool getLockCntMax() { return m_lockCnt >= BOOMERANG_LOCK_MAX; } void onLockDistanceCancel() { onStateFlg0(FLG0_LOCK_DIST_CANCEL); } private: - /* 0x568 */ J3DModel* field_0x568; - /* 0x56C */ J3DModel* field_0x56c; + /* 0x568 */ J3DModel* mp_boomModel; + /* 0x56C */ J3DModel* mp_shippuModel; /* 0x570 */ J3DAnmTextureSRTKey* m_windBtk; - /* 0x574 */ mDoExt_bckAnm mBck; - /* 0x590 */ J3DModel* field_0x590; + /* 0x574 */ mDoExt_bckAnm m_shippuBck; + /* 0x590 */ J3DModel* mp_setboomEfModel; /* 0x594 */ J3DAnmTextureSRTKey* m_waitEffBtk; - /* 0x598 */ daBoomerang_sight_c mSight; - /* 0x6A8 */ s32 field_0x6a8; - /* 0x6AC */ s32 field_0x6ac[5]; - /* 0x6C0 */ fopAc_ac_c* mLockActors[5]; // Actors corresponding to the five target points - /* 0x6D4 */ u32 field_0x6d4; + /* 0x598 */ daBoomerang_sight_c m_sight; + /* 0x6A8 */ fpc_ProcID m_lockLineActorID; + /* 0x6AC */ fpc_ProcID m_lockActorIDs[BOOMERANG_LOCK_MAX]; + /* 0x6C0 */ fopAc_ac_c* m_lockActors[BOOMERANG_LOCK_MAX]; // Actors corresponding to the five target points + /* 0x6D4 */ fpc_ProcID field_0x6d4; /* 0x6D8 */ fopAc_ac_c* field_0x6d8; - /* 0x6DC */ cXyz mLockActorsPositions[5]; - /* 0x718 */ u8 field_0x718[5]; - /* 0x720 */ Z2SoundObjSimple field_0x720; - /* 0x740 */ dBgS_Acch field_0x740; - /* 0x918 */ dPaPo_c field_0x918; - /* 0x950 */ u8 mLockCnt; + /* 0x6DC */ cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX]; + /* 0x718 */ u8 field_0x718[BOOMERANG_LOCK_MAX]; + /* 0x720 */ Z2SoundObjSimple m_sound; + /* 0x740 */ dBgS_ObjAcch m_acch; + /* 0x918 */ dPaPo_c m_papo; + /* 0x950 */ u8 m_lockCnt; /* 0x951 */ u8 field_0x951; /* 0x952 */ u8 field_0x952; - /* 0x953 */ u8 field_0x953; + /* 0x953 */ s8 m_reverb; /* 0x954 */ u8 field_0x954; /* 0x955 */ u8 field_0x955; - /* 0x956 */ bool mForceDelete; + /* 0x956 */ bool m_forceDelete; /* 0x957 */ u8 field_0x957; /* 0x958 */ s16 field_0x958; - /* 0x95A */ s16 field_0x95a; + /* 0x95A */ s16 m_modelRotY; /* 0x95C */ s16 field_0x95c; /* 0x95E */ s16 field_0x95e; /* 0x960 */ s16 field_0x960; /* 0x962 */ s16 field_0x962; - /* 0x964 */ u32 mStateFlg0; + /* 0x964 */ u32 m_stateFlg0; /* 0x968 */ u32 field_0x968; /* 0x96C */ u32 field_0x96c; /* 0x970 */ u32 field_0x970; /* 0x974 */ u32 field_0x974; /* 0x978 */ u32 field_0x978; /* 0x97C */ u32 field_0x97c; - /* 0x980 */ f32 field_0x980; - /* 0x984 */ f32 field_0x984; + /* 0x980 */ f32 mGroundY; + /* 0x984 */ f32 m_lockLineSqdist; /* 0x988 */ f32 field_0x988; - /* 0x98C */ f32 field_0x98c; - /* 0x990 */ cXyz field_0x990; + /* 0x98C */ f32 m_shippuFrame; + /* 0x990 */ cXyz m_aimPos; /* 0x99C */ cXyz field_0x99c; - /* 0x9A8 */ f32 field_0x9a8; - /* 0x9AC */ cXyz field_0x9ac; + /* 0x9A8 */ f32 m_shippuSize; + /* 0x9AC */ cXyz m_moveTargetPos; /* 0x9B8 */ cXyz field_0x9b8; - /* 0x9C4 */ cXyz field_0x9c4; - /* 0x9D0 */ dCcD_Stts field_0x9d0; - /* 0xA0C */ dCcD_Cps field_0xa0c; - /* 0xB50 */ dCcD_Cyl field_0xb50; - /* 0xC8C */ dBgS_BoomerangLinChk field_0xc8c; - /* 0xCFC */ dBgS_ObjLinChk field_0xcfc; - /* 0xD6C */ dBgS_ObjGndChk field_0xd6c; - /* 0xDC0 */ int (daBoomerang_c::*mpProcFn)(); - /* 0xDCC */ void (daBoomerang_c::*mpSetAimActorFn)(fopAc_ac_c*); - /* 0xDD8 */ void (daBoomerang_c::*mpCancelLockActorFn)(fopAc_ac_c*); + /* 0x9C4 */ cXyz m_movePos; + /* 0x9D0 */ dCcD_Stts m_colliderStts; + /* 0xA0C */ dCcD_Cps m_atCps; + /* 0xB50 */ dCcD_Cyl m_windAtCyl; + /* 0xC8C */ dBgS_BoomerangLinChk m_boomLineChk; + /* 0xCFC */ dBgS_ObjLinChk m_lineChk; + /* 0xD6C */ dBgS_ObjGndChk m_gndChk; + /* 0xDC0 */ int (daBoomerang_c::*m_procFn)(); + /* 0xDCC */ void (daBoomerang_c::*m_setAimActorFn)(fopAc_ac_c*); + /* 0xDD8 */ void (daBoomerang_c::*m_cancelLockActorFn)(fopAc_ac_c*); }; STATIC_ASSERT(sizeof(daBoomerang_c) == 0xDE4); @@ -188,5 +197,4 @@ public: static f32 const m_lockWindScale; }; - #endif /* D_A_BOOMERANG_H */ diff --git a/include/d/actor/d_a_grass.h b/include/d/actor/d_a_grass.h index ff01bde653..16d908c818 100644 --- a/include/d/actor/d_a_grass.h +++ b/include/d/actor/d_a_grass.h @@ -35,6 +35,8 @@ public: /* 8051EDF0 */ void deleteData(); /* 80520928 */ dGrass_room_c(); + dGrass_data_c* getData() { return mp_data; } + /* 0x0 */ dGrass_data_c* mp_data; }; @@ -60,17 +62,19 @@ public: /* 805208E4 */ void setAnm(int, s16); /* 8051F03C */ virtual void draw(); - /* 8051BFBC */ virtual ~dGrass_packet_c(); + /* 8051BFBC */ virtual ~dGrass_packet_c() {} typedef void (dGrass_packet_c::*deleteFunc)(int); static deleteFunc m_deleteRoom; dGrass_anm_c* getAnm() { return m_anm; } + dGrass_anm_c* getAnm(int i_no) { return &m_anm[i_no]; } + dGrass_data_c* getData() { return m_data; } void deleteAnm(int i_idx) { m_anm[i_idx].m_state = 0; } - /* 0x00010 */ u16 field_0x10; + /* 0x00010 */ u16 m_dataNum; /* 0x00014 */ dGrass_data_c m_data[1500]; /* 0x1BD64 */ dGrass_anm_c m_anm[112]; /* 0x1D5E4 */ dGrass_room_c m_room[64]; @@ -86,7 +90,7 @@ public: /* 0x1D708 */ u32 m_Mkusa_9q_DL_size; /* 0x1D70C */ u8* mp_Mkusa_9q_cDL; /* 0x1D710 */ u32 m_Mkusa_9q_cDL_size; - /* 0x1D714 */ u16 field_0x1d714; + /* 0x1D714 */ s16 field_0x1d714; }; // Size: 0x1D718 STATIC_ASSERT(sizeof(dGrass_packet_c) == 0x1D718); @@ -117,6 +121,8 @@ public: /* 80521C08 */ void deleteData(); /* 80522FB4 */ dFlower_room_c(); + dFlower_data_c* getData() { return mp_data; } + /* 0x0 */ dFlower_data_c* mp_data; }; @@ -148,11 +154,18 @@ public: static deleteFunc m_deleteRoom; dFlower_anm_c* getAnm(int i_idx) { return &m_anm[i_idx]; } + dFlower_anm_c* getAnm() { return &m_anm[0]; } dFlower_data_c* getData() { return m_data; } void deleteAnm(int i_idx) { m_anm[i_idx].m_state = 0; } - /* 0x00010 */ u16 field_0x10; + void setPlayerCutFlg(int i_flag) { m_playerCutFlg = i_flag != 0; } + void setPlayerSwordAngY(s16 i_angY) { m_playerSwordAngY = i_angY; } + void setPlayerSwordMoveAngY(s16 i_angY) { m_playerSwordMoveAngY = i_angY; } + void setPlayerSwordTop(cXyz& i_pos) { m_playerSwordTop = i_pos; } + cXyz& getPlayerSwordTop() { return m_playerSwordTop; } + + /* 0x00010 */ u16 m_dataNum; /* 0x00014 */ dFlower_data_c m_data[1000]; /* 0x11954 */ dFlower_anm_c m_anm[72]; /* 0x12914 */ dFlower_room_c m_room[64]; @@ -183,17 +196,18 @@ public: */ class daGrass_c : public fopAc_ac_c { public: - /* 8051BEFC */ int createGrass(); + /* 8051BEFC */ bool createGrass(); /* 8051BF68 */ void deleteGrass(); /* 8051C040 */ void executeGrass(); /* 8051C074 */ void drawGrass(); /* 8051C0A8 */ void newGrassData(cXyz&, int, u8, u8, s16, u8); - /* 8051C0D4 */ int createFlower(); + /* 8051C0D4 */ bool createFlower(); /* 8051C140 */ void deleteFlower(); /* 8051C218 */ void executeFlower(); /* 8051C24C */ void drawFlower(); /* 8051C280 */ void newFlowerData(s8, cXyz&, int, s8, s16); - /* 8051C304 */ int create(); + + /* 8051C304 */ inline int create(); inline int Delete(); inline int execute(); @@ -217,7 +231,7 @@ namespace daGrass_prm { inline u8 getItemBitNo(daGrass_c* i_this) { return (fopAcM_GetParam(i_this) >> 8) & 0xFF; } }; -struct offset_data { +struct daGrass_offsetData { /* 0x0 */ u8 num; /* 0x4 */ csXyz* set_type; }; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 24ba5827fb..9862f623c8 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -38,6 +38,7 @@ public: static void initDropAngleY() { m_dropAngleY = 0x4000; } static void offEventKeepFlg() { m_eventKeepFlg = 0; } + static void onEventKeepFlg() { m_eventKeepFlg = 1; } static s16 m_dropAngleY; static s16 m_eventKeepFlg; @@ -935,6 +936,8 @@ public: void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); } bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); } + u32 checkItemSightBgHit() const { return checkResetFlg0(RFLG0_UNK_2000000); } + void setCanoeSlider() { mSpecialMode = 0x2D; } void offCanoeSlider() { @@ -1002,6 +1005,8 @@ public: cXyz* getRightHandPosP() { return &mRightHandPos; } cXyz* getHeadTopPosP() { return &mHeadTopPos; } + const cXyz& getSwordTopPos() const { return mSwordTopPos; } + u32 checkWolf() const { return checkNoResetFlg1(FLG1_IS_WOLF); } u32 checkEquipHeavyBoots() const { return checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); } u32 checkMagneBootsOn() const { return checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); } diff --git a/include/d/actor/d_a_spinner.h b/include/d/actor/d_a_spinner.h index 5f97df743d..9cc8ba531e 100644 --- a/include/d/actor/d_a_spinner.h +++ b/include/d/actor/d_a_spinner.h @@ -15,6 +15,15 @@ */ class daSpinner_c : public fopAc_ac_c { public: + enum daSpinner_TAG { + TAG_NONE, + TAG_START, + TAG_2, + TAG_INTO, + TAG_INTO_INC_ROT, + TAG_END, + }; + /* 804D198C */ int createHeap(); /* 804D1A70 */ int create(); /* 804D1FD0 */ ~daSpinner_c(); @@ -40,28 +49,28 @@ public: static u32 getWaitArg() { return 0; } - int getDeleteFlg() const { return mDeleteFlg; } + BOOL getDeleteFlg() const { return mDeleteFlg; } - bool checkSpinnerTagEnd() const { return mSpinnerTag == 5; } - bool checkSpinnerTagIntoIncRot() const { return mSpinnerTag == 4; } - bool checkSpinnerTagInto() const { return mSpinnerTag == 3; } + bool checkSpinnerTagEnd() const { return mSpinnerTag == TAG_END; } + bool checkSpinnerTagIntoIncRot() const { return mSpinnerTag == TAG_INTO_INC_ROT; } + bool checkSpinnerTagInto() const { return mSpinnerTag == TAG_INTO; } bool checkGroundHit() { return mAcch.ChkGroundHit(); } u8 getButtonJump() const { return mButtonJump; } u8 getJumpFlg() const { return mJumpFlg; } - void setMove(f32 i_speed, s16 param_1) { + void setMove(f32 i_speed, s16 i_moveTime) { fopAcM_SetParam(this, 1); speedF = i_speed; - field_0xa7a = param_1; + mRideMoveTime = i_moveTime; mCyl.OnAtSetBit(); } void clearPathMove() { mpPathMove = NULL; } void setSpinnerTag(const cXyz& param_0) { - if (!mSpinnerTag) { - mSpinnerTag = 1; + if (mSpinnerTag == TAG_NONE) { + mSpinnerTag = TAG_START; } clearPathMove(); @@ -69,61 +78,61 @@ public: } void offSpinnerTag() { - if (mSpinnerTag != 0) { - mSpinnerTag = 5; + if (mSpinnerTag != TAG_NONE) { + mSpinnerTag = TAG_END; } } bool reflectAccept() { bool accept = false; - if (!mBck.isStop() && mSpinnerTag == 0) { + if (!mBck.isStop() && mSpinnerTag == TAG_NONE) { accept = true; } return accept; } - MtxP getModelMtx() { return mpModel->getBaseTRMtx(); } + MtxPtr getModelMtx() { return mpModel->getBaseTRMtx(); } - s16 getAngleY() { return shape_angle.y + field_0xa7e; } + s16 getAngleY() { return shape_angle.y + mRotY; } - void forceDelete() { mDeleteFlg = 1; } + void forceDelete() { mDeleteFlg = true; } private: /* 0x568 */ J3DModel* mpModel; /* 0x56C */ mDoExt_bckAnm mBck; - /* 0x588 */ J3DAnmTransform* field_0x588; + /* 0x588 */ J3DAnmTransform* mpSpoutBck; /* 0x58C */ dBgS_AcchCir mAcchCir[3]; - /* 0x64C */ dBgS_Acch mAcch; + /* 0x64C */ dBgS_LinkAcch mAcch; /* 0x824 */ dBgS_LinkLinChk mLinChk; - /* 0x894 */ dPaPo_c field_0x894; - /* 0x8CC */ Z2SoundObjSimple field_0x8cc; + /* 0x894 */ dPaPo_c mPaPo; + /* 0x8CC */ Z2SoundObjSimple mSound; /* 0x8EC */ dCcD_Stts mStts; /* 0x928 */ dCcD_Cyl mCyl; /* 0xA64 */ dPath* mpPathMove; /* 0xA68 */ dPath* field_0xa68; /* 0xA6C */ u8 field_0xa6c; /* 0xA6D */ u8 mJumpFlg; - /* 0xA6E */ s8 field_0xa6e; + /* 0xA6E */ s8 mReverb; /* 0xA6F */ u8 mSpinnerTag; /* 0xA70 */ u8 mButtonJump; /* 0xA71 */ u8 mDeleteFlg; - /* 0xA72 */ u8 field_0xa72; - /* 0xA73 */ s8 field_0xa73; + /* 0xA72 */ u8 mPathNo; + /* 0xA73 */ s8 mPathDirection; /* 0xA74 */ u8 field_0xa74; - /* 0xA75 */ u8 field_0xa75; - /* 0xA76 */ u8 field_0xa76; + /* 0xA75 */ u8 mTrigJump; + /* 0xA76 */ s8 field_0xa76; /* 0xA77 */ u8 mPathForceRemove; /* 0xA78 */ u8 field_0xa78; /* 0xA79 */ u8 field_0xa79; - /* 0xA7A */ s16 field_0xa7a; + /* 0xA7A */ s16 mRideMoveTime; /* 0xA7C */ s16 field_0xa7c; - /* 0xA7E */ s16 field_0xa7e; + /* 0xA7E */ s16 mRotY; /* 0xA80 */ s16 field_0xa80; /* 0xA82 */ s16 field_0xa82; /* 0xA84 */ f32 field_0xa84; /* 0xA88 */ f32 field_0xa88; - /* 0xA8C */ u32 field_0xa8c[2]; + /* 0xA8C */ u32 mSpreadEmitterIDs[2]; /* 0xA94 */ u32 field_0xa94; /* 0xA98 */ cXyz field_0xa98; /* 0xAA4 */ cXyz field_0xaa4; diff --git a/include/d/actor/d_a_tag_sppath.h b/include/d/actor/d_a_tag_sppath.h index 68fd623e60..d32a0280fe 100644 --- a/include/d/actor/d_a_tag_sppath.h +++ b/include/d/actor/d_a_tag_sppath.h @@ -12,6 +12,11 @@ public: /* 80D62024 */ int getNearPathPos(cXyz*, dPath*); /* 80D629C0 */ int execute(); + dPath* getKeepPath() { return mpBestPath; } + u16 getKeepPointNum() const { return mBestNo; } + bool checkDirectionFront() const { return field_0x6e8 == 1; } + bool checkDirectionNone() const { return field_0x6e8 == 0; } + /* 0x568 */ dPath* mpInitPath; /* 0x56C */ dPath* mpBestPath; /* 0x570 */ dCcD_Cyl mCyl; diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index db51eccd17..d08639e575 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -407,6 +407,7 @@ public: cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); } bool ChkTgHookshotThrough() { return mGObjTg.ChkSPrm(0x80); } bool ChkTgShieldHit() { return mGObjTg.ChkRPrm(2); } + bool ChkTgSpinnerReflect() { return mGObjTg.ChkSPrm(0x200); } static const Z2SoundID m_hitSeID[24]; diff --git a/include/d/d_cc_mass_s.h b/include/d/d_cc_mass_s.h index d6fd4e17c3..da4478eb48 100644 --- a/include/d/d_cc_mass_s.h +++ b/include/d/d_cc_mass_s.h @@ -35,6 +35,8 @@ private: /* 0x0C */ f32 mCoHitLen; public: + virtual ~dCcMassS_HitInf() {} + void ClearPointer(); void SetAreaHitObj(cCcD_Obj* obj) { mpArea = obj; } void SetCoHitObj(cCcD_Obj* obj) { mpCoObj = obj; } diff --git a/include/d/d_cc_s.h b/include/d/d_cc_s.h index 8787b9c385..619bb360b8 100644 --- a/include/d/d_cc_s.h +++ b/include/d/d_cc_s.h @@ -49,6 +49,15 @@ public: u32 GetMassResultCam() { return mMass_Mng.GetResultCam(); } void PrepareMass() { mMass_Mng.Prepare(); } + u32 ChkMass(cXyz* param_0, fopAc_ac_c** param_1, dCcMassS_HitInf* param_2) { + u32 rt = mMass_Mng.Chk(param_0, param_1, param_2); + return rt; + } + + void SetMassAttr(f32 radius, f32 height, u8 param_2, u8 param_3) { + mMass_Mng.SetAttr(radius, height, param_2, param_3); + } + static bool m_mtrl_hit_tbl[64]; // /* 0x0000 */ cCcS mCCcS; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index d6517f018b..392c2623eb 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -9,6 +9,7 @@ #include "d/d_event_manager.h" #include "d/d_particle.h" #include "f_op/f_op_camera_mng.h" +#include "m_Do/m_Do_controller_pad.h" #include "global.h" class JKRAramArchive; @@ -848,6 +849,8 @@ int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_arcNa int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_resName, JKRHeap* heap); int dComIfG_TimerDeleteRequest(int i_mode); int dComIfG_TimerStart(int i_mode, s16 i_time); +u32 dComIfG_getTrigA(u32 i_padNo); + bool dComIfGp_isLightDropMapVisible(); int dComIfG_TimerEnd(int i_mode, int param_1); void dComIfGs_onStageBossEnemy(int i_stageNo); @@ -981,6 +984,10 @@ inline int dComIfG_getObjctResName2Index(const char* i_arcName, const char* i_re return g_dComIfG_gameInfo.mResControl.getObjectResName2Index(i_arcName, i_resName); } +inline u32 dComIfG_getTrigB(u32 i_padNo) { + return mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_B; +} + u8 dComIfGs_getMixItemIndex(int i_no); void dComIfGs_setSelectItemIndex(int i_no, u8 item_index); void dComIfGs_setMixItemIndex(int i_no, u8 item_index); @@ -1029,6 +1036,7 @@ u8 dComIfGs_checkGetInsectNum(); u8 dComIfGs_getSelectMixItemNoArrowIndex(int i_selmixItemIdx); BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no); s8 dComIfGs_PolyDamageOff_Check(); +void dComIfGs_Grass_hide_Set(s8 param_0); inline void dComIfGs_init() { g_dComIfG_gameInfo.info.init(); diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index 6e0da0c62b..d187374959 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -615,5 +615,6 @@ BOOL dKy_SunMoon_Light_Check(); void dKy_bgparts_activelight_set(LIGHT_INFLUENCE* light_inf_p, int bgpart_id); void dKy_bgparts_activelight_cut(int bgpart_id); int dKy_Indoor_check(); +void dKy_GfFog_tevstr_set(dKy_tevstr_c* tevstr_p); #endif /* D_KANKYO_D_KANKYO_H */ diff --git a/include/d/d_path.h b/include/d/d_path.h index 82e25d6b5c..517cd4f575 100644 --- a/include/d/d_path.h +++ b/include/d/d_path.h @@ -13,6 +13,7 @@ struct dPath { /* 0x4 */ u8 field_0x4; /* 0x5 */ bool m_closed; /* 0x6 */ u8 field_0x6; + /* 0x7 */ u8 field_0x7; /* 0x8 */ dStage_dPnt_c* m_points; }; diff --git a/src/d/actor/d_a_boomerang.cpp b/src/d/actor/d_a_boomerang.cpp index a360598b62..1d6fb89c54 100644 --- a/src/d/actor/d_a_boomerang.cpp +++ b/src/d/actor/d_a_boomerang.cpp @@ -7,327 +7,115 @@ #include "JSystem/J2DGraph/J2DAnmLoader.h" #include "d/actor/d_a_alink.h" #include "d/d_pane_class.h" -#include "dol2asm.h" #include "m_Do/m_Do_lib.h" #include "d/actor/d_a_mirror.h" +#include "Z2AudioLib/Z2Instances.h" #include "SSystem/SComponent/c_math.h" - -// -// Forward References: -// - -extern "C" void createHeap__19daBoomerang_sight_cFv(); -extern "C" void initialize__19daBoomerang_sight_cFv(); -extern "C" void playAnime__19daBoomerang_sight_cFii(); -extern "C" void initFrame__19daBoomerang_sight_cFi(); -extern "C" void copyNumData__19daBoomerang_sight_cFi(); -extern "C" void __dt__4cXyzFv(); -extern "C" void setSight__19daBoomerang_sight_cFPC4cXyzi(); -extern "C" void draw__19daBoomerang_sight_cFv(); -extern "C" void windModelCallBack__13daBoomerang_cFv(); -extern "C" static void daBoomeang_windModelCallBack__FP8J3DJointi(); -extern "C" void draw__13daBoomerang_cFv(); -extern "C" static void daBoomerang_Draw__FP13daBoomerang_c(); -extern "C" void lockLineCallback__13daBoomerang_cFP10fopAc_ac_c(); -extern "C" static void -daBoomerang_lockLineCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" void moveLineCallback__13daBoomerang_cFP10fopAc_ac_c(); -extern "C" static void -daBoomerang_moveLineCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" void pushLockList__13daBoomerang_cFi(); -extern "C" void cancelLockActorBase__13daBoomerang_cFP10fopAc_ac_c(); -extern "C" void setAimActorBase__13daBoomerang_cFP10fopAc_ac_c(); -extern "C" void setLockActor__13daBoomerang_cFP10fopAc_ac_ci(); -extern "C" void resetLockActor__13daBoomerang_cFv(); -extern "C" void setRoomInfo__13daBoomerang_cFv(); -extern "C" void setKeepMatrix__13daBoomerang_cFv(); -extern "C" void setMoveMatrix__13daBoomerang_cFv(); -extern "C" void setRotAngle__13daBoomerang_cFv(); -extern "C" void setAimPos__13daBoomerang_cFv(); -extern "C" void checkBgHit__13daBoomerang_cFP4cXyzP4cXyz(); -extern "C" void setEffectTraceMatrix__13daBoomerang_cFPUlUs(); -extern "C" void setEffect__13daBoomerang_cFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void procWait__13daBoomerang_cFv(); -extern "C" void procMove__13daBoomerang_cFv(); -extern "C" void execute__13daBoomerang_cFv(); -extern "C" static void daBoomerang_Execute__FP13daBoomerang_c(); -extern "C" void __dt__13daBoomerang_cFv(); -extern "C" static void daBoomerang_Delete__FP13daBoomerang_c(); -extern "C" void createHeap__13daBoomerang_cFv(); -extern "C" static void daBoomerang_createHeap__FP10fopAc_ac_c(); -extern "C" void create__13daBoomerang_cFv(); -extern "C" void __ct__13daBoomerang_cFv(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" static void daBoomerang_Create__FP10fopAc_ac_c(); -extern "C" void draw__12dDlst_base_cFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_804A2764(); -extern "C" static void func_804A276C(); -extern "C" static void func_804A2774(); -extern "C" static void func_804A277C(); -extern "C" static void func_804A2784(); -extern "C" void __dt__19daBoomerang_sight_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" u16 const m_lockWaitTime__18daBoomerang_HIO_c0; -extern "C" f32 const m_minCircleR__18daBoomerang_HIO_c0; -extern "C" f32 const m_middleCircleR__18daBoomerang_HIO_c0; -extern "C" f32 const m_maxCircleR__18daBoomerang_HIO_c0; -extern "C" f32 const m_scale__18daBoomerang_HIO_c0; -extern "C" f32 const m_lockWindScale__18daBoomerang_HIO_c0; -extern "C" extern char const* const d_a_boomerang__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XYZrotM__FPA4_fsss(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb(); -extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_modelEntryDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void mDoLib_project__FP3VecP3Vec(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_setStageLayer__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void roofCheck__11fopAcM_rc_cFPC4cXyz(); -extern "C" void waterCheck__11fopAcM_wt_cFPC4cXyz(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void entry__10daMirror_cFP8J3DModel(); -extern "C" void getResInfo__14dRes_control_cFPCcP11dRes_info_ci(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void init__7dPaPo_cFP9dBgS_Acchff(); -extern "C" void setEffectCenter__7dPaPo_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC5csXyzPC4cXyzScff(); -extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetUnderwaterRoofCode__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void dBgS_CheckBRoofPoly__FRC13cBgS_PolyInfo(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP10fopAc_ac_ciP12dBgS_AcchCir(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__14dBgS_ObjLinChkFv(); -extern "C" void __dt__14dBgS_ObjLinChkFv(); -extern "C" void __ct__20dBgS_BoomerangLinChkFv(); -extern "C" void __dt__20dBgS_BoomerangLinChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ResetAtHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps(); -extern "C" void CalcAtVec__8dCcD_CpsFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void Set__12dCcMassS_MngFP8cCcD_ObjUc(); -extern "C" void getAlinkArcName__9daAlink_cFv(); -extern "C" void simpleAnmPlay__9daAlink_cFP10J3DAnmBase(); -extern "C" void itemActionTrigger__9daAlink_cFv(); -extern "C" void checkBoomerangLockAccept__9daAlink_cFv(); -extern "C" void getBoomSpeed__9daAlink_cFv(); -extern "C" void getBoomCatchSpeed__9daAlink_cCFv(); -extern "C" void getBoomFlyMax__9daAlink_cCFv(); -extern "C" void getBoomLockMax__9daAlink_cFv(); -extern "C" void getBoomBgThroughTime__9daAlink_cCFv(); -extern "C" void returnBoomerang__9daAlink_cFi(); -extern "C" void dCam_getBody__Fv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dPaneClass_showNullPane__FP9J2DScreen(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __dv__4cXyzCFf(); -extern "C" void atan2sX_Z__4cXyzCFv(); -extern "C" void atan2sY_XZ__4cXyzCFv(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_rad2s__Ff(); -extern "C" void cM_atan2s__Fff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __ct__8cM3dGCpsFv(); -extern "C" void __dt__8cM3dGCpsFv(); -extern "C" void Set__8cM3dGCpsFRC4cXyzRC4cXyzf(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_chaseUC__FPUcUcUc(); -extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void func_802807E0(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dt__14Z2SoundObjBaseFv(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader(); -extern "C" void __ct__9J2DScreenFv(); -extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive(); -extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); -extern "C" void animation__9J2DScreenFv(); -extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP12J3DModelData(); -extern "C" void entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_17(); -extern "C" void _savegpr_20(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_17(); -extern "C" void _restgpr_20(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__8dCcD_Cps[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__12cCcD_CpsAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" extern void* __vt__16Z2SoundObjSimple[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mRoofCheck__11fopAcM_rc_c[80]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" f32 mRoofY__11fopAcM_rc_c; -extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; -extern "C" extern u8 m_dropAngleY__20daPy_boomerangMove_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - /* 8049E0B8-8049E36C 000078 02B4+00 1/1 0/0 0/0 .text createHeap__19daBoomerang_sight_cFv */ int daBoomerang_sight_c::createHeap() { - void* resource; - const char* arcName = daAlink_c::getAlinkArcName(); - JKRArchive* loader = dComIfG_getObjectResInfo(arcName)->getArchive(); + void* tmpData; + JKRArchive* archive = dComIfG_getObjectResInfo(daAlink_c::getAlinkArcName())->getArchive(); - field_0x4 = new J2DScreen(); - if (field_0x4 == NULL) { - return 0; - } - field_0x4->setPriority("zelda_v_cursor_new_yellow.blo", 0x100000, loader); - dPaneClass_showNullPane(field_0x4); - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.bpk", loader); - field_0x58 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(resource); - if (field_0x58 == NULL) { - return 0; - } - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.bck", loader); - field_0x5c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(resource); - if (field_0x5c == NULL) { - return 0; - } - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow_02.brk", loader); - field_0x18 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource); - if (field_0x18 == NULL) { - return 0; - } - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.brk", loader); - field_0x1c = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource); - if (field_0x1c == NULL) { + m_cursorYellowScrn = new J2DScreen(); + if (m_cursorYellowScrn == NULL) { return 0; } - field_0x20 = new J2DScreen(); - if (field_0x20 == NULL) { - return 0; - } - field_0x20->setPriority("zelda_v_cursor_new_red.blo", 0x100000, loader); - dPaneClass_showNullPane(field_0x20); - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_red_02.brk", loader); - field_0x34 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource); - if (field_0x34 == NULL) { - return 0; - } - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_red.brk", loader); - field_0x38 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource); - if (field_0x38 == NULL) { + m_cursorYellowScrn->setPriority("zelda_v_cursor_new_yellow.blo", 0x100000, archive); + dPaneClass_showNullPane(m_cursorYellowScrn); + + tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow.bpk", archive); + JUT_ASSERT(398, tmpData); + m_cursorYellowBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorYellowBpk == NULL) { return 0; } - field_0x3c = new J2DScreen(); - if (field_0x3c == NULL) { + tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow.bck", archive); + JUT_ASSERT(406, tmpData); + m_cursorYellowBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorYellowBck == NULL) { return 0; } - field_0x3c->setPriority("zelda_v_cursor_new_orange.blo", 0x100000, loader); - dPaneClass_showNullPane(field_0x3c); - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_orange_02.brk", loader); - field_0x50 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource); - if (field_0x50 == NULL) { + + tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow_02.brk", archive); + JUT_ASSERT(415, tmpData); + m_cursorYellow2Brk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorYellow2Brk == NULL) { return 0; } - resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_orange.brk", loader); - field_0x54 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource); - if (field_0x54 == NULL) { + + tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow.brk", archive); + JUT_ASSERT(423, tmpData); + m_cursorYellowBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorYellowBrk == NULL) { return 0; } + + m_cursorRedScrn = new J2DScreen(); + if (m_cursorRedScrn == NULL) { + return 0; + } + + m_cursorRedScrn->setPriority("zelda_v_cursor_new_red.blo", 0x100000, archive); + dPaneClass_showNullPane(m_cursorRedScrn); + + tmpData = JKRGetNameResource("zelda_v_cursor_new_red_02.brk", archive); + JUT_ASSERT(440, tmpData); + m_cursorRed2Brk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorRed2Brk == NULL) { + return 0; + } + + tmpData = JKRGetNameResource("zelda_v_cursor_new_red.brk", archive); + JUT_ASSERT(448, tmpData); + m_cursorRedBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorRedBrk == NULL) { + return 0; + } + + m_cursorOrangeScrn = new J2DScreen(); + if (m_cursorOrangeScrn == NULL) { + return 0; + } + + m_cursorOrangeScrn->setPriority("zelda_v_cursor_new_orange.blo", 0x100000, archive); + dPaneClass_showNullPane(m_cursorOrangeScrn); + + tmpData = JKRGetNameResource("zelda_v_cursor_new_orange_02.brk", archive); + JUT_ASSERT(493, tmpData); + m_cursorOrange2Brk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorOrange2Brk == NULL) { + return 0; + } + + tmpData = JKRGetNameResource("zelda_v_cursor_new_orange.brk", archive); + JUT_ASSERT(501, tmpData); + m_cursorOrangeBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData); + if (m_cursorOrangeBrk == NULL) { + return 0; + } + return 1; } -/* ############################################################################################## */ /* 804A2850-804A285C 000000 000C+00 7/7 0/0 0/0 .rodata @4078 */ -SECTION_RODATA static u8 const lit_4078[12] = { +// unused +static u8 const lit_4078[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -COMPILER_STRIP_GATE(0x804A2850, &lit_4078); /* 804A285C-804A2868 00000C 000C+00 0/0 0/0 0/0 .rodata l_blurTop */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_blurTop[12] = { +// unused +static u8 const l_blurTop[12] = { 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -COMPILER_STRIP_GATE(0x804A285C, &l_blurTop); -#pragma pop /* 804A2868-804A287A 000018 000C+06 0/0 0/0 0/0 .rodata l_blurRoot */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_blurRoot[12 + 6 /* padding */] = { +// unused +static u8 const l_blurRoot[12 + 6] = { 0xC2, 0x20, 0x00, @@ -340,7 +128,6 @@ SECTION_RODATA static u8 const l_blurRoot[12 + 6 /* padding */] = { 0x00, 0x00, 0x00, - /* padding */ 0xB4, 0xA0, 0x8C, @@ -348,476 +135,318 @@ SECTION_RODATA static u8 const l_blurRoot[12 + 6 /* padding */] = { 0x1E, 0x1E, }; -COMPILER_STRIP_GATE(0x804A2868, &l_blurRoot); -#pragma pop /* 804A287A-804A287C 00002A 0002+00 0/0 0/0 0/0 .rodata m_lockWaitTime__18daBoomerang_HIO_c0 */ -#pragma push -#pragma force_active on -SECTION_RODATA u16 const daBoomerang_HIO_c0::m_lockWaitTime = 0x000A; -COMPILER_STRIP_GATE(0x804A287A, &daBoomerang_HIO_c0::m_lockWaitTime); -#pragma pop +const u16 daBoomerang_HIO_c0::m_lockWaitTime = 10; /* 804A287C-804A2880 00002C 0004+00 0/0 0/0 0/0 .rodata m_minCircleR__18daBoomerang_HIO_c0 */ -#pragma push -#pragma force_active on -SECTION_RODATA f32 const daBoomerang_HIO_c0::m_minCircleR = 28.0f; -COMPILER_STRIP_GATE(0x804A287C, &daBoomerang_HIO_c0::m_minCircleR); -#pragma pop +const f32 daBoomerang_HIO_c0::m_minCircleR = 28.0f; /* 804A2880-804A2884 000030 0004+00 0/0 0/0 0/0 .rodata m_middleCircleR__18daBoomerang_HIO_c0 */ -#pragma push -#pragma force_active on -SECTION_RODATA f32 const daBoomerang_HIO_c0::m_middleCircleR = 35.0f; -COMPILER_STRIP_GATE(0x804A2880, &daBoomerang_HIO_c0::m_middleCircleR); -#pragma pop +const f32 daBoomerang_HIO_c0::m_middleCircleR = 35.0f; /* 804A2884-804A2888 000034 0004+00 0/0 0/0 0/0 .rodata m_maxCircleR__18daBoomerang_HIO_c0 */ -#pragma push -#pragma force_active on -SECTION_RODATA f32 const daBoomerang_HIO_c0::m_maxCircleR = 80.0f; -COMPILER_STRIP_GATE(0x804A2884, &daBoomerang_HIO_c0::m_maxCircleR); -#pragma pop +const f32 daBoomerang_HIO_c0::m_maxCircleR = 80.0f; /* 804A2888-804A288C 000038 0004+00 0/0 0/0 0/0 .rodata m_scale__18daBoomerang_HIO_c0 */ -#pragma push -#pragma force_active on -SECTION_RODATA f32 const daBoomerang_HIO_c0::m_scale = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x804A2888, &daBoomerang_HIO_c0::m_scale); -#pragma pop +const f32 daBoomerang_HIO_c0::m_scale = 3.0f / 5.0f; /* 804A288C-804A2890 00003C 0004+00 0/0 0/0 0/0 .rodata m_lockWindScale__18daBoomerang_HIO_c0 */ -#pragma push -#pragma force_active on -SECTION_RODATA f32 const daBoomerang_HIO_c0::m_lockWindScale = 2.0f; -COMPILER_STRIP_GATE(0x804A288C, &daBoomerang_HIO_c0::m_lockWindScale); -#pragma pop +const f32 daBoomerang_HIO_c0::m_lockWindScale = 2.0f; /* 804A2890-804A28A4 000040 0014+00 0/1 0/0 0/0 .rodata l_lockSeFlg */ -static const u32 l_lockSeFlg[5] = { - 104, 105, 106, 107, 108, +static const u32 l_lockSeFlg[BOOMERANG_LOCK_MAX] = { + Z2SE_SY_BOOM_LOCK_ON_1, + Z2SE_SY_BOOM_LOCK_ON_2, + Z2SE_SY_BOOM_LOCK_ON_3, + Z2SE_SY_BOOM_LOCK_ON_4, + Z2SE_SY_BOOM_LOCK_ON_5, }; -/* 804A28A4-804A28A8 000054 0004+00 2/6 0/0 0/0 .rodata @4432 */ -SECTION_RODATA static u8 const lit_4432[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x804A28A4, &lit_4432); - /* 8049E36C-8049EB64 00032C 07F8+00 1/1 0/0 0/0 .text initialize__19daBoomerang_sight_cFv */ void daBoomerang_sight_c::initialize() { - field_0x8 = field_0x4->search('n_all'); - field_0xc = field_0x4->search('cursor0'); - field_0x10 = field_0x4->search('cursor1'); - field_0x14 = field_0x4->search('cursor2'); + m_cursorYellowAllPane = m_cursorYellowScrn->search('n_all'); + m_cursorYellow0Pane = m_cursorYellowScrn->search('cursor0'); + m_cursorYellow1Pane = m_cursorYellowScrn->search('cursor1'); + m_cursorYellow2Pane = m_cursorYellowScrn->search('cursor2'); - field_0x5c->searchUpdateMaterialID(field_0x4); - field_0x8->setAnimation(field_0x5c); - field_0xc->setAnimation(field_0x5c); - field_0x10->setAnimation(field_0x5c); - field_0x14->setAnimation(field_0x5c); - field_0x5c->setFrame(0.0f); + m_cursorYellowBck->searchUpdateMaterialID(m_cursorYellowScrn); + m_cursorYellowAllPane->setAnimation(m_cursorYellowBck); + m_cursorYellow0Pane->setAnimation(m_cursorYellowBck); + m_cursorYellow1Pane->setAnimation(m_cursorYellowBck); + m_cursorYellow2Pane->setAnimation(m_cursorYellowBck); + m_cursorYellowBck->setFrame(0.0f); - field_0x58->searchUpdateMaterialID(field_0x4); - field_0xc->setAnimation(field_0x58); - field_0x10->setAnimation(field_0x58); - field_0x14->setAnimation(field_0x58); - field_0x4->search('flash')->setAnimation(field_0x58); - field_0x58->setFrame(0.0f); + m_cursorYellowBpk->searchUpdateMaterialID(m_cursorYellowScrn); + m_cursorYellow0Pane->setAnimation(m_cursorYellowBpk); + m_cursorYellow1Pane->setAnimation(m_cursorYellowBpk); + m_cursorYellow2Pane->setAnimation(m_cursorYellowBpk); + m_cursorYellowScrn->search('flash')->setAnimation(m_cursorYellowBpk); + m_cursorYellowBpk->setFrame(0.0f); - field_0x18->searchUpdateMaterialID(field_0x4); - field_0x1c->searchUpdateMaterialID(field_0x4); - field_0xc->setAnimation(field_0x18); - field_0x10->setAnimation(field_0x18); - field_0x14->setAnimation(field_0x18); - field_0xc->setAnimation(field_0x1c); - field_0x10->setAnimation(field_0x1c); - field_0x14->setAnimation(field_0x1c); - field_0x18->setFrame(0.0f); - field_0x1c->setFrame(0.0f); + m_cursorYellow2Brk->searchUpdateMaterialID(m_cursorYellowScrn); + m_cursorYellowBrk->searchUpdateMaterialID(m_cursorYellowScrn); + m_cursorYellow0Pane->setAnimation(m_cursorYellow2Brk); + m_cursorYellow1Pane->setAnimation(m_cursorYellow2Brk); + m_cursorYellow2Pane->setAnimation(m_cursorYellow2Brk); + m_cursorYellow0Pane->setAnimation(m_cursorYellowBrk); + m_cursorYellow1Pane->setAnimation(m_cursorYellowBrk); + m_cursorYellow2Pane->setAnimation(m_cursorYellowBrk); + m_cursorYellow2Brk->setFrame(0.0f); + m_cursorYellowBrk->setFrame(0.0f); - field_0x4->animation(); - field_0x4->setUserInfo('n_43'); - field_0x8->setUserInfo(' '); - field_0x24 = field_0x20->search('n_all'); - field_0x28 = field_0x20->search('cursor0'); - field_0x2c = field_0x20->search('cursor1'); - field_0x30 = field_0x20->search('cursor2'); + m_cursorYellowScrn->animation(); + m_cursorYellowScrn->setUserInfo('n_43'); + m_cursorYellowAllPane->setUserInfo(' '); - field_0x24->setAnimation(field_0x5c); - field_0x28->setAnimation(field_0x5c); - field_0x2c->setAnimation(field_0x5c); - field_0x30->setAnimation(field_0x5c); - field_0x28->setAnimation(field_0x58); - field_0x2c->setAnimation(field_0x58); - field_0x30->setAnimation(field_0x58); - field_0x20->search('flash')->setAnimation(field_0x58); + m_cursorRedAllPane = m_cursorRedScrn->search('n_all'); + m_cursorRed0Pane = m_cursorRedScrn->search('cursor0'); + m_cursorRed1Pane = m_cursorRedScrn->search('cursor1'); + m_cursorRed2Pane = m_cursorRedScrn->search('cursor2'); - field_0x34->searchUpdateMaterialID(field_0x20); - field_0x38->searchUpdateMaterialID(field_0x20); - field_0x28->setAnimation(field_0x34); - field_0x2c->setAnimation(field_0x34); - field_0x30->setAnimation(field_0x34); - field_0x28->setAnimation(field_0x38); - field_0x2c->setAnimation(field_0x38); - field_0x30->setAnimation(field_0x38); - field_0x34->setFrame(0.0f); - field_0x38->setFrame(0.0f); + m_cursorRedAllPane->setAnimation(m_cursorYellowBck); + m_cursorRed0Pane->setAnimation(m_cursorYellowBck); + m_cursorRed1Pane->setAnimation(m_cursorYellowBck); + m_cursorRed2Pane->setAnimation(m_cursorYellowBck); + m_cursorRed0Pane->setAnimation(m_cursorYellowBpk); + m_cursorRed1Pane->setAnimation(m_cursorYellowBpk); + m_cursorRed2Pane->setAnimation(m_cursorYellowBpk); + m_cursorRedScrn->search('flash')->setAnimation(m_cursorYellowBpk); - field_0x20->animation(); - field_0x20->setUserInfo('n_43'); - field_0x24->setUserInfo(' '); - field_0x40 = field_0x3c->search('n_all'); - field_0x44 = field_0x3c->search('cursor0'); - field_0x48 = field_0x3c->search('cursor1'); - field_0x4c = field_0x3c->search('cursor2'); + m_cursorRed2Brk->searchUpdateMaterialID(m_cursorRedScrn); + m_cursorRedBrk->searchUpdateMaterialID(m_cursorRedScrn); + m_cursorRed0Pane->setAnimation(m_cursorRed2Brk); + m_cursorRed1Pane->setAnimation(m_cursorRed2Brk); + m_cursorRed2Pane->setAnimation(m_cursorRed2Brk); + m_cursorRed0Pane->setAnimation(m_cursorRedBrk); + m_cursorRed1Pane->setAnimation(m_cursorRedBrk); + m_cursorRed2Pane->setAnimation(m_cursorRedBrk); + m_cursorRed2Brk->setFrame(0.0f); + m_cursorRedBrk->setFrame(0.0f); - field_0x40->setAnimation(field_0x5c); - field_0x44->setAnimation(field_0x5c); - field_0x48->setAnimation(field_0x5c); - field_0x4c->setAnimation(field_0x5c); - field_0x44->setAnimation(field_0x58); - field_0x48->setAnimation(field_0x58); - field_0x4c->setAnimation(field_0x58); - field_0x3c->search('flash')->setAnimation(field_0x58); + m_cursorRedScrn->animation(); + m_cursorRedScrn->setUserInfo('n_43'); + m_cursorRedAllPane->setUserInfo(' '); - field_0x50->searchUpdateMaterialID(field_0x3c); - field_0x54->searchUpdateMaterialID(field_0x3c); - field_0x44->setAnimation(field_0x50); - field_0x48->setAnimation(field_0x50); - field_0x4c->setAnimation(field_0x50); - field_0x44->setAnimation(field_0x54); - field_0x48->setAnimation(field_0x54); - field_0x4c->setAnimation(field_0x54); - field_0x50->setFrame(0.0f); - field_0x54->setFrame(0.0f); + m_cursorOrangeAllPane = m_cursorOrangeScrn->search('n_all'); + m_cursorOrange0Pane = m_cursorOrangeScrn->search('cursor0'); + m_cursorOrange1Pane = m_cursorOrangeScrn->search('cursor1'); + m_cursorOrange2Pane = m_cursorOrangeScrn->search('cursor2'); - field_0x3c->animation(); - field_0x3c->setUserInfo('n_43'); - field_0x40->setUserInfo(' '); + m_cursorOrangeAllPane->setAnimation(m_cursorYellowBck); + m_cursorOrange0Pane->setAnimation(m_cursorYellowBck); + m_cursorOrange1Pane->setAnimation(m_cursorYellowBck); + m_cursorOrange2Pane->setAnimation(m_cursorYellowBck); + m_cursorOrange0Pane->setAnimation(m_cursorYellowBpk); + m_cursorOrange1Pane->setAnimation(m_cursorYellowBpk); + m_cursorOrange2Pane->setAnimation(m_cursorYellowBpk); + m_cursorOrangeScrn->search('flash')->setAnimation(m_cursorYellowBpk); + + m_cursorOrange2Brk->searchUpdateMaterialID(m_cursorOrangeScrn); + m_cursorOrangeBrk->searchUpdateMaterialID(m_cursorOrangeScrn); + m_cursorOrange0Pane->setAnimation(m_cursorOrange2Brk); + m_cursorOrange1Pane->setAnimation(m_cursorOrange2Brk); + m_cursorOrange2Pane->setAnimation(m_cursorOrange2Brk); + m_cursorOrange0Pane->setAnimation(m_cursorOrangeBrk); + m_cursorOrange1Pane->setAnimation(m_cursorOrangeBrk); + m_cursorOrange2Pane->setAnimation(m_cursorOrangeBrk); + m_cursorOrange2Brk->setFrame(0.0f); + m_cursorOrangeBrk->setFrame(0.0f); + + m_cursorOrangeScrn->animation(); + m_cursorOrangeScrn->setUserInfo('n_43'); + m_cursorOrangeAllPane->setUserInfo(' '); } - -/* ############################################################################################## */ -/* 804A28A8-804A28AC 000058 0004+00 0/1 0/0 0/0 .rodata @4481 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4481 = 11.0f / 10.0f; -COMPILER_STRIP_GATE(0x804A28A8, &lit_4481); -#pragma pop - -/* 804A28AC-804A28B0 00005C 0004+00 0/2 0/0 0/0 .rodata @4482 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4482 = 50.0f; -COMPILER_STRIP_GATE(0x804A28AC, &lit_4482); -#pragma pop - -/* 804A28B0-804A28B4 000060 0004+00 0/1 0/0 0/0 .rodata @4483 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4483 = -29.0f; -COMPILER_STRIP_GATE(0x804A28B0, &lit_4483); -#pragma pop - -/* 804A28B4-804A28B8 000064 0004+00 0/2 0/0 0/0 .rodata @4484 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4484 = 21.0f; -COMPILER_STRIP_GATE(0x804A28B4, &lit_4484); -#pragma pop - -/* 804A28B8-804A28C0 000068 0004+04 0/1 0/0 0/0 .rodata @4485 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4485[1 + 1 /* padding */] = { - 9.0f / 10.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x804A28B8, &lit_4485); -#pragma pop - -/* 804A28C0-804A28C8 000070 0008+00 1/2 0/0 0/0 .rodata @4487 */ -SECTION_RODATA static u8 const lit_4487[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804A28C0, &lit_4487); - /* 8049EB64-8049EDA8 000B24 0244+00 1/1 0/0 0/0 .text playAnime__19daBoomerang_sight_cFii */ int daBoomerang_sight_c::playAnime(int param_0, int param_1) { int i; - f32* pfVar3 = field_0x98; - f32* pfVar6 = field_0xb0; - u8* alphaPtr = mAlpha; + f32* var_r30 = field_0x98; + f32* var_r29 = field_0xb0; + u8* alpha_p = m_alpha; - for (i = 0; i < 5; i++, pfVar3++, pfVar6++, alphaPtr++) { - *pfVar3 += 1.1f; - if (*pfVar3 >= 50.0f) { - *pfVar3 += 29.0f; + for (i = 0; i < BOOMERANG_LOCK_MAX; i++, var_r30++, var_r29++, alpha_p++) { + *var_r30 += 1.1f; + if (*var_r30 >= 50.0f) { + *var_r30 += -29.0f; } - *pfVar6 += 1.1f; - if (*pfVar6 >= (f32)field_0x18->getFrameMax()) { - *pfVar6 -= (f32)field_0x18->getFrameMax(); + + *var_r29 += 1.1f; + if (*var_r29 >= (f32)m_cursorYellow2Brk->getFrameMax()) { + *var_r29 -= (f32)m_cursorYellow2Brk->getFrameMax(); } + if (param_0 <= i && param_1 > i) { - cLib_chaseUC(alphaPtr, 0xff, 0x1e); + cLib_chaseUC(alpha_p, 0xFF, 30); } else { - cLib_chaseUC(alphaPtr, 0, 0x1e); - if (*alphaPtr == 0 && i == 0) { - mRedSight = false; + cLib_chaseUC(alpha_p, 0, 30); + if (*alpha_p == 0 && i == 0) { + m_redSight = false; } } } - if (*pfVar3 < 21.0f) { - *pfVar3 = 21.0f; + + if (*var_r30 < 21.0f) { + *var_r30 = 21.0f; } - *pfVar3 += 0.9f; - if (*pfVar3 >= 50.0f) { - *pfVar3 += 29.0f; + + *var_r30 += 0.9f; + if (*var_r30 >= 50.0f) { + *var_r30 += -29.0f; } - *pfVar6 += 0.9f; - if (*pfVar6 >= field_0x18->getFrameMax()) { - *pfVar6 -= (f32)field_0x18->getFrameMax(); + + *var_r29 += 0.9f; + if (*var_r29 >= m_cursorYellow2Brk->getFrameMax()) { + *var_r29 -= (f32)m_cursorYellow2Brk->getFrameMax(); } + if (mReserve != 0) { - return cLib_chaseUC(alphaPtr, 0x80, 0x1e); + return cLib_chaseUC(alpha_p, 0x80, 30); } - return cLib_chaseUC(alphaPtr, 0, 0x1e); + + return cLib_chaseUC(alpha_p, 0, 30); } - -/* ############################################################################################## */ -/* 804A28C8-804A28CC 000078 0004+00 1/2 0/0 0/0 .rodata @4495 */ -SECTION_RODATA static f32 const lit_4495 = 4.0f; -COMPILER_STRIP_GATE(0x804A28C8, &lit_4495); - /* 8049EDA8-8049EDE8 000D68 0040+00 2/2 0/0 0/0 .text initFrame__19daBoomerang_sight_cFi */ -void daBoomerang_sight_c::initFrame(int i_idx) { - mAlpha[i_idx] = 0; - field_0x98[i_idx] = 4.0f; - field_0xb0[i_idx] = 0.0f; - if (i_idx == 0) { - mRedSight = true; +void daBoomerang_sight_c::initFrame(int i_no) { + m_alpha[i_no] = 0; + field_0x98[i_no] = 4.0f; + field_0xb0[i_no] = 0.0f; + + if (i_no == 0) { + m_redSight = true; } } - /* 8049EDE8-8049EE8C 000DA8 00A4+00 1/1 0/0 0/0 .text copyNumData__19daBoomerang_sight_cFi */ -void daBoomerang_sight_c::copyNumData(int i_idx) { - int idx2 = i_idx + 1; +void daBoomerang_sight_c::copyNumData(int i_no) { + int next_no = i_no + 1; - u8 alpha = mAlpha[i_idx]; - mAlpha[i_idx] = mAlpha[idx2]; - mAlpha[idx2] = alpha; + u8 temp_alpha = m_alpha[i_no]; + m_alpha[i_no] = m_alpha[next_no]; + m_alpha[next_no] = temp_alpha; - f32 some_float1 = field_0x98[i_idx]; - field_0x98[i_idx] = field_0x98[idx2]; - field_0x98[idx2] = some_float1; + f32 temp_frame; + temp_frame = field_0x98[i_no]; + field_0x98[i_no] = field_0x98[next_no]; + field_0x98[next_no] = temp_frame; - f32 some_float2 = field_0xb0[i_idx]; - field_0xb0[i_idx] = field_0xb0[idx2]; - field_0xb0[idx2] = some_float2; + temp_frame = field_0xb0[i_no]; + field_0xb0[i_no] = field_0xb0[next_no]; + field_0xb0[next_no] = temp_frame; - cXyz pos = field_0xc8[i_idx]; - field_0xc8[i_idx] = field_0xc8[idx2]; - field_0xc8[idx2] = pos; + cXyz temp_pos = m_pos[i_no]; + m_pos[i_no] = m_pos[next_no]; + m_pos[next_no] = temp_pos; } /* 8049EEC8-8049EF60 000E88 0098+00 1/1 0/0 0/0 .text setSight__19daBoomerang_sight_cFPC4cXyzi */ -void daBoomerang_sight_c::setSight(cXyz const* i_posP, int i_idx) { - Vec pos; - - if (mAlpha[i_idx]) { - if (i_posP) { - field_0xc8[i_idx] = *i_posP; +void daBoomerang_sight_c::setSight(const cXyz* i_pos, int i_no) { + if (m_alpha[i_no]) { + if (i_pos != NULL) { + m_pos[i_no] = *i_pos; } - mDoLib_project(&field_0xc8[i_idx], &pos); - field_0x68[i_idx] = pos.x; - field_0x80[i_idx] = pos.y; + + Vec proj; + mDoLib_project(&m_pos[i_no], &proj); + m_proj_posX[i_no] = proj.x; + m_proj_posY[i_no] = proj.y; } } -/* ############################################################################################## */ -/* 804A28CC-804A28D0 00007C 0004+00 0/1 0/0 0/0 .rodata @4643 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4643 = 80.0f; -COMPILER_STRIP_GATE(0x804A28CC, &lit_4643); -#pragma pop - -/* 804A28D0-804A28D4 000080 0004+00 0/1 0/0 0/0 .rodata @4644 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4644 = 35.0f; -COMPILER_STRIP_GATE(0x804A28D0, &lit_4644); -#pragma pop - -/* 804A28D4-804A28D8 000084 0004+00 0/1 0/0 0/0 .rodata @4645 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4645 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x804A28D4, &lit_4645); -#pragma pop - -/* 804A28D8-804A28DC 000088 0004+00 0/2 0/0 0/0 .rodata @4646 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4646 = 15.0f; -COMPILER_STRIP_GATE(0x804A28D8, &lit_4646); -#pragma pop - -/* 804A28DC-804A28E0 00008C 0004+00 0/1 0/0 0/0 .rodata @4647 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4647 = 1.0f / 6.0f; -COMPILER_STRIP_GATE(0x804A28DC, &lit_4647); -#pragma pop - -/* 804A28E0-804A28E4 000090 0004+00 0/2 0/0 0/0 .rodata @4648 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4648 = 0.5f; -COMPILER_STRIP_GATE(0x804A28E0, &lit_4648); -#pragma pop - -/* 804A28E4-804A28E8 000094 0004+00 0/1 0/0 0/0 .rodata @4649 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4649 = 0x3B800000; -COMPILER_STRIP_GATE(0x804A28E4, &lit_4649); -#pragma pop - -/* 804A28E8-804A28EC 000098 0004+00 0/1 0/0 0/0 .rodata @4650 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4650 = 0x3B008081; -COMPILER_STRIP_GATE(0x804A28E8, &lit_4650); -#pragma pop - -/* 804A28EC-804A28F0 00009C 0004+00 0/1 0/0 0/0 .rodata @4651 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4651 = 0x40278D36; -COMPILER_STRIP_GATE(0x804A28EC, &lit_4651); -#pragma pop - -/* 804A28F0-804A28F8 0000A0 0004+04 0/1 0/0 0/0 .rodata @4652 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4652[1 + 1 /* padding */] = { - 0x3F060A92, - /* padding */ - 0x00000000, -}; -COMPILER_STRIP_GATE(0x804A28F0, &lit_4652); -#pragma pop - -/* 804A28F8-804A2900 0000A8 0008+00 0/1 0/0 0/0 .rodata @4654 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4654[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804A28F8, &lit_4654); -#pragma pop - /* 8049EF60-8049F280 000F20 0320+00 1/0 0/0 0/0 .text draw__19daBoomerang_sight_cFv */ void daBoomerang_sight_c::draw() { J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort(); - u8* puVar = mAlpha; - J2DPane* pJVar5; - J2DPane* pJVar9; - J2DPane* pJVar8; - J2DScreen* screen; - J2DPane* pJVar4; - f32 f30; - f32 f31; + u8* alpha_p = m_alpha; + + J2DPane* cursor0_pane; + J2DPane* cursor1_pane; + J2DPane* cursor2_pane; + J2DScreen* screen; + J2DPane* cursorAll_pane; + f32 var_f30; + f32 var_f31; + + for (int i = 0; i < 6; i++, alpha_p++) { + if (*alpha_p != 0) { + m_cursorYellowBck->setFrame(field_0x98[i]); + m_cursorYellowBpk->setFrame(field_0x98[i] > 21.0f ? 21.0f : field_0x98[i]); - for (int i = 0; i < 6; i++, puVar++) { - if (*puVar != 0) { - field_0x5c->setFrame(field_0x98[i]); - field_0x58->setFrame(field_0x98[i] > 21.0f ? 21.0f : field_0x98[i]); if (i == 5) { - field_0x18->setFrame(field_0xb0[i]); - pJVar5 = field_0xc; - pJVar9 = field_0x10; - pJVar8 = field_0x14; - screen = field_0x4; - pJVar4 = field_0x8; - f31 = 80.0f; - } else if (i == 0 && mRedSight != false) { - field_0x34->setFrame(field_0xb0[i]); - pJVar5 = field_0x28; - pJVar9 = field_0x2c; - pJVar8 = field_0x30; - screen = field_0x20; - pJVar4 = field_0x24; - f31 = 35.0f; + m_cursorYellow2Brk->setFrame(field_0xb0[i]); + cursor0_pane = m_cursorYellow0Pane; + cursor1_pane = m_cursorYellow1Pane; + cursor2_pane = m_cursorYellow2Pane; + screen = m_cursorYellowScrn; + cursorAll_pane = m_cursorYellowAllPane; + var_f31 = 80.0f; + } else if (i == 0 && m_redSight) { + m_cursorRed2Brk->setFrame(field_0xb0[i]); + cursor0_pane = m_cursorRed0Pane; + cursor1_pane = m_cursorRed1Pane; + cursor2_pane = m_cursorRed2Pane; + screen = m_cursorRedScrn; + cursorAll_pane = m_cursorRedAllPane; + var_f31 = 35.0f; } else { - field_0x50->setFrame(field_0xb0[i]); - pJVar5 = field_0x44; - pJVar9 = field_0x48; - pJVar8 = field_0x4c; - screen = field_0x3c; - pJVar4 = field_0x40; - f31 = 35.0f; + m_cursorOrange2Brk->setFrame(field_0xb0[i]); + cursor0_pane = m_cursorOrange0Pane; + cursor1_pane = m_cursorOrange1Pane; + cursor2_pane = m_cursorOrange2Pane; + screen = m_cursorOrangeScrn; + cursorAll_pane = m_cursorOrangeAllPane; + var_f31 = 35.0f; } + screen->animation(); - pJVar4->scale(0.6f, 0.6f); - pJVar4->translate(field_0x68[i], field_0x80[i]); + cursorAll_pane->scale(0.6f, 0.6f); + cursorAll_pane->translate(m_proj_posX[i], m_proj_posY[i]); field_0x98[i] = field_0x98[i]; + if (!(field_0x98[i] < 15.0f)) { if (field_0x98[i] < 21.0f) { - f30 = f31 * (field_0x98[i] - 15.0f) * 0.1666667f; + var_f30 = var_f31 * (field_0x98[i] - 15.0f) * 0.16666667f; } else if (i == 5) { - f30 = f31 * (*puVar * 0.00390625f + 0.5f); + var_f30 = var_f31 * (*alpha_p * 0.00390625f + 0.5f); } else { - f30 = f31 * (*puVar * 0.001960784f + 0.5f); + var_f30 = var_f31 * (*alpha_p * 0.0019607844f + 0.5f); } - pJVar5->translate(0.0f, -f30); - pJVar9->translate(f30 * cM_fcos(2.617994f), f30 * cM_fsin(2.617994f)); - pJVar8->translate(f30 * cM_fcos(0.5235988f), f30 * cM_fsin(0.5235988f)); + cursor0_pane->translate(0.0f, -var_f30); + cursor1_pane->translate(var_f30 * cM_fcos(2.6179938f), var_f30 * cM_fsin(2.6179938f)); + cursor2_pane->translate(var_f30 * cM_fcos(0.5235988f), var_f30 * cM_fsin(0.5235988f)); } + screen->draw(0.0f, 0.0f, ctx); } } } - /* 8049F280-8049F360 001240 00E0+00 1/1 0/0 0/0 .text windModelCallBack__13daBoomerang_cFv */ void daBoomerang_c::windModelCallBack() { - mDoMtx_YrotS((MtxP)mDoMtx_stack_c::get(), shape_angle.y); - mDoMtx_ZrotM((MtxP)mDoMtx_stack_c::get(), -shape_angle.z); - mDoMtx_XrotM((MtxP)mDoMtx_stack_c::get(), -shape_angle.x); - mDoMtx_YrotM((MtxP)mDoMtx_stack_c::get(), -shape_angle.y); - - MTXConcat(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx, mDoMtx_stack_c::get()); + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::ZrotM(-shape_angle.z); + mDoMtx_stack_c::XrotM(-shape_angle.x); + mDoMtx_stack_c::YrotM(-shape_angle.y); + mDoMtx_stack_c::concat(J3DSys::mCurrentMtx); mDoMtx_stack_c::get()[0][3] = J3DSys::mCurrentMtx[0][3]; mDoMtx_stack_c::get()[1][3] = J3DSys::mCurrentMtx[1][3]; mDoMtx_stack_c::get()[2][3] = J3DSys::mCurrentMtx[2][3]; - MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); - field_0x56c->setAnmMtx(4, mDoMtx_stack_c::get()); - - return; + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + mp_shippuModel->setAnmMtx(4, mDoMtx_stack_c::get()); } /* 8049F360-8049F39C 001320 003C+00 1/1 0/0 0/0 .text daBoomeang_windModelCallBack__FP8J3DJointi */ -static int daBoomeang_windModelCallBack(J3DJoint* param_0, int param_1) { +static int daBoomeang_windModelCallBack(J3DJoint* i_joint, int param_1) { daBoomerang_c* boomerang = (daBoomerang_c*)j3dSys.getModel()->getUserArea(); - if (param_1 == 0) { boomerang->windModelCallBack(); } @@ -827,53 +456,58 @@ static int daBoomeang_windModelCallBack(J3DJoint* param_0, int param_1) { /* 8049F39C-8049F5D4 00135C 0238+00 1/1 0/0 0/0 .text draw__13daBoomerang_cFv */ int daBoomerang_c::draw() { - if (checkStateFlg0(FLG0_UNK) == 0) { - for (int i = 0; i < 5; i++) { - if (mSight.getAlpha(i) != 0) { - if (mLockActors[i] != NULL) { - mLockActors[i] = fopAcM_SearchByID(field_0x6ac[i]); - if (mLockActors[i] == NULL) { + if (!checkStateFlg0(FLG0_4)) { + for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) { + if (m_sight.getAlpha(i) != 0) { + if (m_lockActors[i] != NULL) { + m_lockActors[i] = fopAcM_SearchByID(m_lockActorIDs[i]); + if (m_lockActors[i] == NULL) { pushLockList(i); i--; } else { - mSight.setSight(&mLockActors[i]->eyePos, i); + m_sight.setSight(&m_lockActors[i]->eyePos, i); } - } else { if (field_0x718[i] != 0) { - mSight.setSight(&mLockActorsPositions[i], i); + m_sight.setSight(&m_lockActorsPositions[i], i); } else { - mSight.setSight(NULL, i); + m_sight.setSight(NULL, i); } } } } - if (mSight.getAlpha(5) != 0) { + + if (m_sight.getAlpha(5) != 0) { if (field_0x6d8 != NULL) { field_0x6d8 = fopAcM_SearchByID(field_0x6d4); } - if (field_0x6d8 != 0) { - mSight.setSight(&field_0x6d8->eyePos, 5); + + if (field_0x6d8 != NULL) { + m_sight.setSight(&field_0x6d8->eyePos, 5); } else { - mSight.setSight(NULL, 5); + m_sight.setSight(NULL, 5); } } - if (dComIfGp_event_runCheck() == 0) { - dComIfGd_set2DXlu((dDlst_base_c*)&mSight); + + if (!dComIfGp_event_runCheck()) { + dComIfGd_set2DXlu(&m_sight); } } + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); - g_env_light.setLightTevColorType_MAJI(field_0x568, &tevStr); - mDoExt_modelUpdateDL(field_0x568); - daMirror_c::entry(field_0x568); + g_env_light.setLightTevColorType_MAJI(mp_boomModel, &tevStr); + mDoExt_modelUpdateDL(mp_boomModel); + daMirror_c::entry(mp_boomModel); + if (fopAcM_GetParam(this) != 0) { - g_env_light.setLightTevColorType_MAJI(field_0x56c, &tevStr); - mDoExt_modelEntryDL(field_0x56c); - daMirror_c::entry(field_0x56c); - } else if (dComIfGp_checkPlayerStatus0(0, 0x80000) != 0) { - g_env_light.setLightTevColorType_MAJI(field_0x590, &tevStr); - mDoExt_modelUpdateDL(field_0x590); + g_env_light.setLightTevColorType_MAJI(mp_shippuModel, &tevStr); + mDoExt_modelEntryDL(mp_shippuModel); + daMirror_c::entry(mp_shippuModel); + } else if (dComIfGp_checkPlayerStatus0(0, 0x80000)) { + g_env_light.setLightTevColorType_MAJI(mp_setboomEfModel, &tevStr); + mDoExt_modelUpdateDL(mp_setboomEfModel); } + return 1; } @@ -885,11 +519,11 @@ static int daBoomerang_Draw(daBoomerang_c* i_this) { /* 8049F5F4-8049F63C 0015B4 0048+00 1/1 0/0 0/0 .text * lockLineCallback__13daBoomerang_cFP10fopAc_ac_c */ -void daBoomerang_c::lockLineCallback(fopAc_ac_c* i_actorP) { - if (i_actorP && fopAcM_GetName(i_actorP) != PROC_Obj_glowSphere && - fopAcM_GetName(i_actorP) != PROC_E_VT && fopAcM_GetName(i_actorP) != PROC_OBJ_BRG) +void daBoomerang_c::lockLineCallback(fopAc_ac_c* i_actor) { + if (i_actor != NULL && fopAcM_GetName(i_actor) != PROC_Obj_glowSphere && + fopAcM_GetName(i_actor) != PROC_E_VT && fopAcM_GetName(i_actor) != PROC_OBJ_BRG) { - setLockActor(i_actorP, 1); + setLockActor(i_actor, TRUE); } } @@ -903,17 +537,17 @@ static void daBoomerang_lockLineCallback(fopAc_ac_c* i_actorP1, dCcD_GObjInf* pa /* 8049F660-8049F6EC 001620 008C+00 1/1 0/0 0/0 .text * moveLineCallback__13daBoomerang_cFP10fopAc_ac_c */ -void daBoomerang_c::moveLineCallback(fopAc_ac_c* i_actorP) { - if (i_actorP) { - for (int i = 0; i < 5; i++) { - if (mLockActors[i] == i_actorP) { - field_0x6ac[i] = -1; - mLockActors[i] = 0; +void daBoomerang_c::moveLineCallback(fopAc_ac_c* i_actor) { + if (i_actor != NULL) { + for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) { + if (m_lockActors[i] == i_actor) { + m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e; + m_lockActors[i] = NULL; if (i == field_0x951) { field_0x957 = 10; - field_0x9ac = i_actorP->eyePos; - field_0x9c4 = current.pos; + m_moveTargetPos = i_actor->eyePos; + m_movePos = current.pos; } } } @@ -931,33 +565,36 @@ static void daBoomerang_moveLineCallback(fopAc_ac_c* i_actorP1, dCcD_GObjInf* pa /* 8049F710-8049F818 0016D0 0108+00 3/3 0/0 0/0 .text pushLockList__13daBoomerang_cFi */ void daBoomerang_c::pushLockList(int param_0) { if (param_0 == 0) { - mSight.offRedSight(); + m_sight.offRedSight(); } + if (fopAcM_GetParam(this) == 1 && param_0 < field_0x951) { field_0x951--; } int i; - for (i = param_0; i < mLockCnt - 1; i++) { - field_0x6ac[i] = field_0x6ac[i + 1]; - mLockActors[i] = mLockActors[i + 1]; - mLockActorsPositions[i] = mLockActorsPositions[i + 1]; + for (i = param_0; i < m_lockCnt - 1; i++) { + m_lockActorIDs[i] = m_lockActorIDs[i + 1]; + m_lockActors[i] = m_lockActors[i + 1]; + m_lockActorsPositions[i] = m_lockActorsPositions[i + 1]; field_0x718[i] = field_0x718[i + 1]; - mSight.copyNumData(i); + m_sight.copyNumData(i); } - field_0x6ac[i] = -1; - mLockActors[i] = NULL; + + m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e; + m_lockActors[i] = NULL; field_0x718[i] = 0; - if (mLockCnt != 0) { - mLockCnt--; + + if (m_lockCnt != 0) { + m_lockCnt--; } } /* 8049F818-8049F874 0017D8 005C+00 1/0 0/0 0/0 .text * cancelLockActorBase__13daBoomerang_cFP10fopAc_ac_c */ -void daBoomerang_c::cancelLockActorBase(fopAc_ac_c* i_actorP) { - for (int i = 0; i < mLockCnt; i++) { - if (mLockActors[i] == i_actorP) { +void daBoomerang_c::cancelLockActorBase(fopAc_ac_c* i_actor) { + for (int i = 0; i < m_lockCnt; i++) { + if (m_lockActors[i] == i_actor) { pushLockList(i); break; } @@ -966,144 +603,150 @@ void daBoomerang_c::cancelLockActorBase(fopAc_ac_c* i_actorP) { /* 8049F874-8049F8B0 001834 003C+00 1/0 0/0 0/0 .text * setAimActorBase__13daBoomerang_cFP10fopAc_ac_c */ -void daBoomerang_c::setAimActorBase(fopAc_ac_c* i_actorP) { - if (mLockCnt == 0) { - onStateFlg0(FLG0_UNK); - setLockActor(i_actorP, 0); +void daBoomerang_c::setAimActorBase(fopAc_ac_c* i_actor) { + if (m_lockCnt == 0) { + onStateFlg0(FLG0_4); + setLockActor(i_actor, FALSE); } } /* 8049F8B0-8049F9A4 001870 00F4+00 2/2 0/0 0/0 .text setLockActor__13daBoomerang_cFP10fopAc_ac_ci */ -int daBoomerang_c::setLockActor(fopAc_ac_c* param_0, int param_1) { - if (mLockCnt >= 5) { +int daBoomerang_c::setLockActor(fopAc_ac_c* i_actor, BOOL i_isLockline) { + if (m_lockCnt >= BOOMERANG_LOCK_MAX) { return 0; } - u32 Id = fopAcM_GetID(param_0); - for (int i = 0; i < mLockCnt; i++) { - if (field_0x6ac[i] == Id) { + + fpc_ProcID lock_actor_id = fopAcM_GetID(i_actor); + for (int i = 0; i < m_lockCnt; i++) { + if (m_lockActorIDs[i] == lock_actor_id) { return 0; } } - if (param_1 != 0) { - f32 squareDistance = param_0->eyePos.abs2(current.pos); - if (squareDistance > field_0x984) { + + if (i_isLockline) { + f32 sqdist = i_actor->eyePos.abs2(current.pos); + if (sqdist > m_lockLineSqdist) { return 0; } - field_0x984 = squareDistance; - field_0x6a8 = Id; + + m_lockLineSqdist = sqdist; + m_lockLineActorID = lock_actor_id; } else { - field_0x6ac[mLockCnt] = Id; - mLockActors[mLockCnt] = param_0; - mSight.initFrame(mLockCnt); - mLockCnt++; + m_lockActorIDs[m_lockCnt] = lock_actor_id; + m_lockActors[m_lockCnt] = i_actor; + m_sight.initFrame(m_lockCnt); + m_lockCnt++; } + return 1; } /* 8049F9A4-8049F9F0 001964 004C+00 3/3 0/0 0/0 .text resetLockActor__13daBoomerang_cFv */ void daBoomerang_c::resetLockActor() { - for (int i = 0; i < 5; i++) { - field_0x6ac[i] = -1; - mLockActors[i] = 0; + for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) { + m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e; + m_lockActors[i] = NULL; field_0x718[i] = 0; } - mLockCnt = 0; + m_lockCnt = 0; field_0x951 = 0; } /* 8049F9F0-8049FAA4 0019B0 00B4+00 2/2 0/0 0/0 .text setRoomInfo__13daBoomerang_cFv */ void daBoomerang_c::setRoomInfo() { - field_0xd6c.SetPos(¤t.pos); - field_0x980 = dComIfG_Bgsp().GroundCross(&field_0xd6c); + m_gndChk.SetPos(¤t.pos); + mGroundY = dComIfG_Bgsp().GroundCross(&m_gndChk); + int roomNo; - if (field_0x980 != -1000000000.0f) { - roomNo = dComIfG_Bgsp().GetRoomId(field_0xd6c); - tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(field_0xd6c); + if (mGroundY != -1000000000.0f) { + roomNo = dComIfG_Bgsp().GetRoomId(m_gndChk); + tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(m_gndChk); } else { roomNo = dComIfGp_roomControl_getStayNo(); } + tevStr.room_no = roomNo; - field_0x953 = dComIfGp_getReverb(roomNo); - field_0x9d0.SetRoomId(roomNo); + m_reverb = dComIfGp_getReverb(roomNo); + m_colliderStts.SetRoomId(roomNo); fopAcM_SetRoomNo(this, roomNo); } /* 8049FAA4-8049FBAC 001A64 0108+00 2/2 0/0 0/0 .text setKeepMatrix__13daBoomerang_cFv */ void daBoomerang_c::setKeepMatrix() { - daAlink_c* link = daAlink_getAlinkActorClass(); - MTXCopy(link->getLeftItemMatrix(), mDoMtx_stack_c::now); + daAlink_c* player = daAlink_getAlinkActorClass(); + + mDoMtx_stack_c::copy(player->getLeftItemMatrix()); mDoMtx_stack_c::transM(32.0f, -5.0f, -6.0f); - mDoMtx_stack_c::XYZrotM(0xfd28, 0x1bbb, 0xf99a); - MTXCopy(mDoMtx_stack_c::now, field_0x568->mBaseTransformMtx); - MTXCopy(link->getLeftItemMatrix(), field_0x56c->mBaseTransformMtx); + mDoMtx_stack_c::XYZrotM(cM_deg2s(-4.0f), cM_deg2s(39.0f), cM_deg2s(-9.0f)); + mp_boomModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mp_shippuModel->setBaseTRMtx(player->getLeftItemMatrix()); + mDoMtx_stack_c::multVecZero(¤t.pos); daAlink_c::simpleAnmPlay(m_waitEffBtk); - MTXCopy(link->getLeftItemMatrix(), field_0x590->mBaseTransformMtx); -} -/* ############################################################################################## */ -/* 804A2910-804A2914 0000C0 0004+00 5/8 0/0 0/0 .rodata @4945 */ -SECTION_RODATA static f32 const lit_4945 = 1.0f; -COMPILER_STRIP_GATE(0x804A2910, &lit_4945); + mp_setboomEfModel->setBaseTRMtx(player->getLeftItemMatrix()); +} /* 8049FBAC-8049FCD0 001B6C 0124+00 1/1 0/0 0/0 .text setMoveMatrix__13daBoomerang_cFv */ void daBoomerang_c::setMoveMatrix() { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::ZXYrotM(shape_angle); - MTXCopy(mDoMtx_stack_c::now, field_0x56c->mBaseTransformMtx); + mp_shippuModel->setBaseTRMtx(mDoMtx_stack_c::get()); + daAlink_c::simpleAnmPlay(m_windBtk); - field_0x98c += 1.0f; - s32 maxFrame = mBck.getBckAnm()->getFrameMax(); - if (field_0x98c >= maxFrame) { - field_0x98c -= maxFrame; + + m_shippuFrame += 1.0f; + s32 maxFrame = m_shippuBck.getBckAnm()->getFrameMax(); + if (m_shippuFrame >= maxFrame) { + m_shippuFrame -= maxFrame; } - mBck.entry(field_0x56c->getModelData(), field_0x98c); - field_0x56c->calc(); + + m_shippuBck.entry(mp_shippuModel->getModelData(), m_shippuFrame); + mp_shippuModel->calc(); + mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::ZXYrotM(shape_angle); - mDoMtx_stack_c::YrotM(field_0x95a); - mDoMtx_stack_c::XrotM(0x7fff); - MTXCopy(mDoMtx_stack_c::now, field_0x568->mBaseTransformMtx); + mDoMtx_stack_c::YrotM(m_modelRotY); + mDoMtx_stack_c::XrotM(0x7FFF); + + mp_boomModel->setBaseTRMtx(mDoMtx_stack_c::get()); } - -/* ############################################################################################## */ -/* 804A2914-804A2918 0000C4 0004+00 1/2 0/0 0/0 .rodata @4961 */ -SECTION_RODATA static f32 const lit_4961 = -1.0f; -COMPILER_STRIP_GATE(0x804A2914, &lit_4961); - /* 8049FCD0-8049FD6C 001C90 009C+00 1/1 0/0 0/0 .text setRotAngle__13daBoomerang_cFv */ void daBoomerang_c::setRotAngle() { - s16 sVar = field_0x95a; - field_0x95a -= 0x1f00; - if (sVar >= 0 && field_0x95a < 0) { + s16 prev_rot = m_modelRotY; + + m_modelRotY -= 0x1F00; + if (prev_rot >= 0 && m_modelRotY < 0) { fopAcM_seStart(this, JA_SE_LK_BOOM_FLY, 0); } } - /* 8049FD6C-8049FE6C 001D2C 0100+00 2/2 0/0 0/0 .text setAimPos__13daBoomerang_cFv */ void daBoomerang_c::setAimPos() { - if (checkStateFlg0(FLG0_1) != 0) { + if (checkStateFlg0(FLG0_1)) { if (fopAcM_GetParam(this) != 1) return; - field_0x990 = daAlink_getAlinkActorClass()->getBoomerangCatchPos(); + m_aimPos = daAlink_getAlinkActorClass()->getBoomerangCatchPos(); return; } + if (field_0x957 != 0) { - field_0x990 = field_0x9ac; + m_aimPos = m_moveTargetPos; return; } - for (int i = field_0x951; i < mLockCnt; i++, field_0x951++) { - if (mLockActors[i] != NULL) { - field_0x990 = mLockActors[i]->eyePos; + + for (int i = field_0x951; i < m_lockCnt; i++, field_0x951++) { + if (m_lockActors[i] != NULL) { + m_aimPos = m_lockActors[i]->eyePos; return; } + if (field_0x718[i] != 0) { - field_0x990 = mLockActorsPositions[i]; + m_aimPos = m_lockActorsPositions[i]; return; } } @@ -1111,9 +754,9 @@ void daBoomerang_c::setAimPos() { /* 8049FE6C-804A006C 001E2C 0200+00 2/2 0/0 0/0 .text checkBgHit__13daBoomerang_cFP4cXyzP4cXyz */ void daBoomerang_c::checkBgHit(cXyz* i_start, cXyz* i_end) { - field_0xcfc.Set(i_start, i_end, this); - if (dComIfG_Bgsp().LineCross(&field_0xcfc) != 0) { - current.pos = field_0xcfc.i_GetCross(); + m_lineChk.Set(i_start, i_end, this); + if (dComIfG_Bgsp().LineCross(&m_lineChk)) { + current.pos = m_lineChk.i_GetCross(); onStateFlg0(FLG0_1); field_0x957 = 0; current.angle.y -= -0x8000; @@ -1121,36 +764,44 @@ void daBoomerang_c::checkBgHit(cXyz* i_start, cXyz* i_end) { resetLockActor(); return; } + if (field_0x962 != 0) { return; } - field_0xc8c.Set(i_start, i_end, this); - if (dComIfG_Bgsp().LineCross(&field_0xc8c) == 0) + + m_boomLineChk.Set(i_start, i_end, this); + if (!dComIfG_Bgsp().LineCross(&m_boomLineChk)) return; - if (checkStateFlg0(FLG0_0x200) != 0) { + + if (checkStateFlg0(FLG0_200)) { return; } + if (field_0x718[field_0x951] != 0) { - if (mLockActorsPositions[field_0x951].abs2(field_0xc8c.i_GetCross()) < 2500.0f) { - if (field_0x951 < mLockCnt - 1) { + if (m_lockActorsPositions[field_0x951].abs2(m_boomLineChk.i_GetCross()) < 2500.0f) { + if (field_0x951 < m_lockCnt - 1) { field_0x718[field_0x951] = 0; field_0x951++; return; } } } + if (field_0x957 == 0) { - if (checkStateFlg0(FLG0_10) == 0 && mLockCnt > field_0x951) { + if (checkStateFlg0(FLG0_10) == 0 && m_lockCnt > field_0x951) { return; } - current.pos = field_0xc8c.i_GetCross(); + + current.pos = m_boomLineChk.i_GetCross(); onStateFlg0(FLG0_1); field_0x957 = 0; current.angle.y -= -0x8000; - if (dBgS_CheckBRoofPoly(field_0xc8c) != 0) { + + if (dBgS_CheckBRoofPoly(m_boomLineChk)) { current.angle.x *= -1; current.pos.y -= 30.0f; } + shape_angle.y = current.angle.y; resetLockActor(); } @@ -1158,128 +809,647 @@ void daBoomerang_c::checkBgHit(cXyz* i_start, cXyz* i_end) { /* 804A006C-804A012C 00202C 00C0+00 1/1 0/0 0/0 .text setEffectTraceMatrix__13daBoomerang_cFPUlUs */ -JPABaseEmitter* daBoomerang_c::setEffectTraceMatrix(u32* param_0, u16 param_1) { - *param_0 = dComIfGp_particle_set(*param_0, param_1, ¤t.pos, &tevStr); - JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(*param_0); +JPABaseEmitter* daBoomerang_c::setEffectTraceMatrix(u32* i_emitterID, u16 i_name) { + *i_emitterID = dComIfGp_particle_set(*i_emitterID, i_name, ¤t.pos, &tevStr); + + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(*i_emitterID); if (emitter != NULL) { - emitter->setGlobalRTMatrix(field_0x568->getBaseTRMtx()); + emitter->setGlobalRTMatrix(mp_boomModel->getBaseTRMtx()); } + return emitter; } +UNK_REL_DATA; +UNK_REL_BSS; -/* ############################################################################################## */ -/* 804A2920-804A2924 0000D0 0004+00 0/1 0/0 0/0 .rodata @5385 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5385 = 1.5f; -COMPILER_STRIP_GATE(0x804A2920, &lit_5385); -#pragma pop +/* 804A2D10-804A2D14 000040 0001+03 0/0 0/0 0/0 .bss l_HIO */ +static daBoomerang_HIO_c0 l_HIO; -/* 804A2924-804A2928 0000D4 0004+00 0/1 0/0 0/0 .rodata @5386 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5386 = 9.0f / 5.0f; -COMPILER_STRIP_GATE(0x804A2924, &lit_5386); -#pragma pop +/* 804A012C-804A082C 0020EC 0700+00 1/1 0/0 0/0 .text setEffect__13daBoomerang_cFv */ +void daBoomerang_c::setEffect() { + static JGeometry::TVec3 effDirection(0.0f, 1.0f, 0.0f); + static JGeometry::TVec3 effScale0(1.5f, 1.5f, 1.5f); + static JGeometry::TVec3 effScaleSand(1.8f, 1.8f, 1.8f); + static JGeometry::TVec3 effScaleGrass(1.2f, 1.2f, 1.2f); -/* 804A2928-804A292C 0000D8 0004+00 0/1 0/0 0/0 .rodata @5387 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5387 = 6.0f / 5.0f; -COMPILER_STRIP_GATE(0x804A2928, &lit_5387); -#pragma pop + if (fopAcM_GetParam(this) != 0) { + setEffectTraceMatrix(&field_0x96c, 0x1FE); + setEffectTraceMatrix(&field_0x970, 0x1FF); + field_0x974 = dComIfGp_particle_set(field_0x974, 0x24C, ¤t.pos, &tevStr); -/* 804A292C-804A2930 0000DC 0004+00 0/1 0/0 0/0 .rodata @5388 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5388 = 3.0f; -COMPILER_STRIP_GATE(0x804A292C, &lit_5388); -#pragma pop + cXyz no_crr_pos(current.pos); + m_acch.CrrPos(dComIfG_Bgsp()); + current.pos = no_crr_pos; -/* 804A2930-804A2934 0000E0 0004+00 0/1 0/0 0/0 .rodata @5389 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5389 = 5.0f; -COMPILER_STRIP_GATE(0x804A2930, &lit_5389); -#pragma pop + cXyz eff_center(mp_shippuModel->getAnmMtx(4)[0][3], + mp_shippuModel->getAnmMtx(5)[1][3], + mp_shippuModel->getAnmMtx(4)[2][3]); -/* 804A2934-804A2938 0000E4 0004+00 0/1 0/0 0/0 .rodata @5390 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5390 = 10.0f; -COMPILER_STRIP_GATE(0x804A2934, &lit_5390); -#pragma pop + cXyz* eff_pos = NULL; + cM3dGPla plane; + if (m_acch.ChkWaterHit() && dComIfG_Bgsp().GetPolyAtt0(m_acch.m_wtr) != 6) { + if (m_acch.m_wtr.GetHeight() > m_acch.GetGroundH() && m_acch.m_wtr.GetHeight() > eff_center.y) { + eff_center.y = m_acch.m_wtr.GetHeight(); + eff_pos = &eff_center; + dComIfG_Bgsp().GetTriPla(m_acch.m_wtr, &plane); + } + } -/* 804A2938-804A2940 0000E8 0008+00 0/2 0/0 0/0 .rodata @5391 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5391[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804A2938, &lit_5391); -#pragma pop + if (eff_pos == NULL && m_acch.GetGroundH() > eff_center.y) { + eff_center.y = m_acch.GetGroundH(); + eff_pos = &eff_center; + dComIfG_Bgsp().GetTriPla(m_acch.m_gnd, &plane); + } -/* 804A2940-804A2948 0000F0 0008+00 0/2 0/0 0/0 .rodata @5392 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5392[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804A2940, &lit_5392); -#pragma pop + m_papo.setEffectCenter(&tevStr, &eff_center, 4, 0x60000, eff_pos, ¤t.angle, NULL, fopAcM_GetRoomNo(this), 0.0f, speedF); -/* 804A2948-804A2950 0000F8 0008+00 0/2 0/0 0/0 .rodata @5393 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5393[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804A2948, &lit_5393); -#pragma pop + for (int i = 0; i < 2; i++) { + u8 eff_type = m_papo.getCenterEffType(i); + for (int j = 0; j < 4; j++) { + JPABaseEmitter* emitter = m_papo.getCenterEmitter(i, j); + if (emitter != NULL) { + if (eff_type == 0) { + emitter->setVolumeSize(60); + emitter->setLifeTime(20); + emitter->setRate(3.0f); + emitter->setAwayFromAxisSpeed(5.0f); + emitter->setDirectionalSpeed(0.0f); + emitter->setGlobalParticleScale(effScale0); + } else if (eff_type == 1) { + emitter->setVolumeSize(50); + emitter->setAwayFromAxisSpeed(10.0f); + emitter->setDirectionalSpeed(10.0f); + emitter->setDirection(effDirection); + emitter->setGlobalParticleScale(effScaleGrass); + } else if (eff_type == 2) { + emitter->setDirection(effDirection); + emitter->setGlobalScale(effScale0); + } else if (eff_type == 3) { + emitter->setVolumeSize(60); + emitter->setLifeTime(0xF); + emitter->setAwayFromAxisSpeed(3.0f); + emitter->setDirection(effDirection); + emitter->setGlobalParticleScale(effScaleSand); + } else if (eff_type == 4) { + emitter->setVolumeSize(60); + emitter->setAwayFromAxisSpeed(5.0f); + emitter->setDirection(effDirection); + emitter->setGlobalParticleScale(effScale0); + } + } + } + } -/* 804A2950-804A2954 000100 0004+00 0/1 0/0 0/0 .rodata @5394 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5394 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x804A2950, &lit_5394); -#pragma pop + if (eff_pos != NULL) { + csXyz eff_angle(cM_atan2s(plane.mNormal.absXZ(), plane.mNormal.y), 0, 0); + if (eff_angle.x != 0) { + eff_angle.y = plane.mNormal.atan2sX_Z(); + } -/* 804A2ADC-804A2AE8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + field_0x978 = dComIfGp_particle_set(field_0x978, 0x256, eff_pos, &tevStr, &eff_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL); + field_0x97c = dComIfGp_particle_set(field_0x97c, 0x257, eff_pos, &tevStr, &eff_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL); + } -/* 804A2AE8-804A2AFC 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop + cXyz wind_cyl_pos(current.pos.x, eff_center.y, current.pos.z); + m_windAtCyl.SetC(wind_cyl_pos); -/* 804A2AFC-804A2B08 -00001 000C+00 1/1 0/0 0/0 .data @5412 */ -SECTION_DATA static void* lit_5412[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procMove__13daBoomerang_cFv, -}; + f32 wind_cyl_height = current.pos.y - eff_center.y; + if (wind_cyl_height < 0.01f) { + wind_cyl_height = 0.01f; + } -/* 804A2B08-804A2B14 -00001 000C+00 1/1 0/0 0/0 .data @5579 */ -SECTION_DATA static void* lit_5579[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procWait__13daBoomerang_cFv, -}; + m_windAtCyl.SetH(wind_cyl_height); + } + + if (dComIfGp_checkPlayerStatus0(0, 0x80000) && fopAcM_GetParam(this) == 0) { + setEffectTraceMatrix(&field_0x968, 0x740); + } else { + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x968); + if (emitter != NULL) { + emitter->stopDrawParticle(); + } + } +} + +/* 804A0874-804A0F0C 002834 0698+00 2/0 0/0 0/0 .text procWait__13daBoomerang_cFv */ +// NONMATCHING - small regalloc +int daBoomerang_c::procWait() { + daAlink_c* player = daAlink_getAlinkActorClass(); + speedF = 0.0f; + setKeepMatrix(); + + if (fopAcM_GetParam(this) == 1) { + speedF = player->getBoomSpeed(); + field_0x988 = speedF; + m_windBtk->setFrame(0.0f); + m_shippuFrame = 0.0f; + + m_atCps.ResetAtHit(); + m_windAtCyl.ResetAtHit(); + + field_0x957 = 0; + offStateFlg0(daBoomerang_FLG0(FLG0_80 | FLG0_2 | FLG0_1)); + field_0x951 = 0; + setAimPos(); + + if (m_lockCnt == 0) { + resetLockActor(); + f32 fly_max = player->getBoomFlyMax(); + + m_aimPos.set(current.pos.x + (fly_max * cM_ssin(current.angle.y) * cM_scos(current.angle.x)), + current.pos.y + (fly_max * cM_ssin(current.angle.x)), + current.pos.z + (fly_max * cM_scos(current.angle.y) * cM_scos(current.angle.x))); + } else { + cXyz sp24 = m_aimPos - current.pos; + current.angle.x = sp24.atan2sY_XZ(); + current.angle.y = sp24.atan2sX_Z(); + } + + m_modelRotY = 0; + + if (m_lockCnt == 0) { + onStateFlg0(FLG0_10); + } else { + offStateFlg0(FLG0_10); + } + + current.angle.y += 0x1830; + shape_angle.x = current.angle.x; + shape_angle.y = current.angle.y; + shape_angle.z = 0x1000; + field_0x958 = 0x1000; + + m_procFn = &daBoomerang_c::procMove; + offStateFlg0(FLG0_20); + + cXyz line_chk_start(player->current.pos.x, 60.0f + player->current.pos.y, player->current.pos.z); + checkBgHit(&line_chk_start, ¤t.pos); + + field_0x960 = 10; + field_0x954 = 30; + field_0x955 = 0; + field_0x962 = player->getBoomBgThroughTime(); + + procMove(); + } else if (dCam_getBody()->Mode() != 8) { + if (dComIfGp_checkPlayerStatus0(0, 0x80000) && player->getAtnActor() != NULL && m_lockCnt < BOOMERANG_LOCK_MAX) { + fpc_ProcID atn_actor_id = fopAcM_GetID(player->getAtnActor()); + + int var_r27 = 0; + while (var_r27 < m_lockCnt) { + if (m_lockActorIDs[var_r27] == atn_actor_id) { + break; + } + var_r27 += 1; + } + + if (var_r27 == m_lockCnt) { + m_lockActors[m_lockCnt] = player->getAtnActor(); + m_lockActorIDs[m_lockCnt] = atn_actor_id; + + m_sight.initFrame(m_lockCnt); + mDoAud_seStart(l_lockSeFlg[m_lockCnt], NULL, 0, 0); + m_lockCnt++; + } + } else if (!dComIfGp_checkPlayerStatus0(0, 0x80000)) { + resetLockActor(); + } + + m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e; + } else if (player->checkBoomerangLockAccept()) { + int sp10 = 0; + + fopAc_ac_c* lock_line_actor; + if (m_lockLineActorID != fpcM_ERROR_PROCESS_ID_e) { + lock_line_actor = fopAcM_SearchByID(m_lockLineActorID); + } else { + lock_line_actor = NULL; + } + + if (lock_line_actor != NULL && checkStateFlg0(FLG0_100)) { + m_lockActorIDs[m_lockCnt] = m_lockLineActorID; + m_lockActors[m_lockCnt] = lock_line_actor; + m_sight.initFrame(m_lockCnt); + mDoAud_seStart(l_lockSeFlg[m_lockCnt], NULL, 0, 0); + m_lockCnt++; + sp10 = 1; + } else if (checkStateFlg0(FLG0_400) && m_lockCnt < BOOMERANG_LOCK_MAX) { + m_sight.initFrame(m_lockCnt); + m_lockActorsPositions[m_lockCnt] = field_0x99c; + field_0x718[m_lockCnt] = 1; + mDoAud_seStart(l_lockSeFlg[m_lockCnt], NULL, 0, 0); + m_lockCnt++; + } + + if (m_lockCnt < BOOMERANG_LOCK_MAX && lock_line_actor != NULL && sp10 == 0) { + m_sight.onReserve(); + field_0x6d4 = m_lockLineActorID; + field_0x6d8 = lock_line_actor; + } + + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + f32 cps_size; + if (field_0x6d8 != NULL) { + cps_size = 30.0f; + } else { + cps_size = 15.0f; + } + + m_atCps.cM3dGCps::Set(*fopCamM_GetEye_p(camera), *player->getLineTopPosP(), cps_size); + m_atCps.CalcAtVec(); + dComIfG_Ccsp()->Set(&m_atCps); + + m_lockLineSqdist = (100.0f + player->getBoomLockMax()) * (100.0f + player->getBoomLockMax()); + m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e; + offStateFlg0(FLG0_400); + + if (player->checkBoomerangLockTrigger()) { + onStateFlg0(FLG0_100); + if (player->checkItemSightBgHit()) { + onStateFlg0(FLG0_400); + } + field_0x99c = *player->getBoomerangLockPosP(); + } else { + offStateFlg0(FLG0_100); + } + } else { + m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e; + } + + if (dComIfGp_checkPlayerStatus0(0, 0x80000)) { + m_sound.startLevelSound(Z2SE_BOOM_POWER_RESUME, 0, -1); + } + + return 1; +} + +/* 804A0F0C-804A1814 002ECC 0908+00 2/1 0/0 0/0 .text procMove__13daBoomerang_cFv */ +int daBoomerang_c::procMove() { + daAlink_c* player = daAlink_getAlinkActorClass(); + + if (field_0x957 != 0) { + speedF = 40.0f; + field_0x957--; + if (field_0x957 == 0) { + onStateFlg0(FLG0_2); + offStateFlg0(FLG0_10); + } + cLib_addCalc(&m_shippuSize, 2.0f, 0.5f, 0.5f, 0.1f); + } else { + if (checkStateFlg0(FLG0_80)) { + speedF = player->getBoomCatchSpeed(); + } else { + speedF = field_0x988; + } + cLib_addCalc(&m_shippuSize, 1.0f, 0.5f, 0.5f, 0.1f); + } + + Vec shippu_size = {0.0f, 1.0f, 0.0f}; + shippu_size.x = m_shippuSize; + shippu_size.z = m_shippuSize; + mp_shippuModel->setBaseScale(shippu_size); + + offStateFlg0(daBoomerang_FLG0(FLG0_200 | FLG0_80)); + setRotAngle(); + setAimPos(); + + if (checkStateFlg0(FLG0_40)) { + offStateFlg0(FLG0_40); + if (player->returnBoomerang(checkStateFlg0(FLG0_20))) { + fopAcM_SetParam(this, 0); + m_procFn = &daBoomerang_c::procWait; + offStateFlg0(daBoomerang_FLG0(FLG0_400 | FLG0_100 | FLG0_20 | FLG0_4)); + m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e; + current.pos = m_aimPos; + setMoveMatrix(); + resetLockActor(); + } else { + fopAcM_delete(this); + } + + return 1; + } + + cXyz sp38 = m_aimPos - current.pos; + f32 temp_f30 = sp38.abs(); + cXyz sp2C; + + if (temp_f30 > 0.1f) { + sp2C = sp38 / temp_f30; + } else { + sp2C = sp38; + } + + s16 var_r26 = sp2C.atan2sX_Z(); + s16 var_r28 = var_r26 - current.angle.y; + + if (checkStateFlg0(FLG0_2)) { + offStateFlg0(FLG0_2); + if (checkStateFlg0(FLG0_1)) { + current.angle.y = var_r26 + 0x3000; + } else if ((s16)(var_r26 - current.angle.y) >= 0) { + current.angle.y = var_r26 - 0x3000; + } else { + current.angle.y = var_r26 + 0x3000; + } + var_r28 = var_r26 - current.angle.y; + } + + if (field_0x960 != 0) { + field_0x960--; + } + + if (field_0x954 != 0) { + field_0x954--; + if (field_0x954 == 0) { + field_0x954 = 30; + + field_0x955++; + if (field_0x955 > 48) { + field_0x955 = 48; + } + } + } + + bool sp9 = field_0x960 == 0 && (current.pos.abs2(player->getBoomerangCatchPos()) < 4.0f * speedF * speedF); + + if ((checkStateFlg0(FLG0_1) || sp9) && (sp9 || temp_f30 < 2.0f * speedF)) { + field_0x957 = 0; + onStateFlg0(daBoomerang_FLG0(FLG0_40 | FLG0_1)); + resetLockActor(); + } + + if (!checkStateFlg0(FLG0_1) && field_0x957 == 0 && !checkStateFlg0(FLG0_10) && m_lockCnt <= field_0x951) { + onStateFlg0(daBoomerang_FLG0(FLG0_2 | FLG0_1)); + resetLockActor(); + offStateFlg0(FLG0_10); + } + + if (checkStateFlg0(FLG0_2)) { + current.angle.y = var_r26; + field_0x955 = 0; + field_0x954 = 30; + } else if (field_0x957 != 0) { + cLib_chaseAngleS(¤t.angle.y, var_r26, 0x2000); + } else { + f32 var_f31 = 20.0f - ((2.0f * temp_f30) / speedF); + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } else if (var_f31 > 18.0f) { + var_f31 = 20.0f + (40.0f * (var_f31 - 18.0f)); + } + + s16 var_r27 = 1024.0f + (256.0f * var_f31); + if (var_r27 > 0x4000) { + var_r27 = 0x4000; + } else { + var_r27 += field_0x955 * 256; + if (var_r27 > 0x4000) { + var_r27 = 0x4000; + } + } + + if (var_r28 > var_r27) { + var_r28 = var_r27; + } else if (var_r28 < -var_r27) { + var_r28 = -var_r27; + } + + current.angle.y += var_r28; + } + + current.angle.x = sp2C.atan2sY_XZ(); + current.pos.x += speedF * cM_scos(current.angle.x) * cM_ssin(current.angle.y); + current.pos.y -= speedF * cM_ssin(current.angle.x); + current.pos.z += speedF * cM_scos(current.angle.x) * cM_scos(current.angle.y); + + cXyz sp20 = m_aimPos - current.pos; + + if (temp_f30 < speedF && field_0x957 == 0 && !checkStateFlg0(FLG0_1)) { + if (sp20.inprod(sp38) <= 0.0f) { + if (checkStateFlg0(FLG0_10)) { + onStateFlg0(FLG0_2); + offStateFlg0(FLG0_10); + } else { + field_0x957 = 10; + m_moveTargetPos = m_aimPos; + m_movePos = current.pos; + } + + m_lockActors[field_0x951] = NULL; + m_lockActorIDs[field_0x951] = fpcM_ERROR_PROCESS_ID_e; + + if (field_0x718[field_0x951] != 0) { + onStateFlg0(FLG0_200); + } + field_0x718[field_0x951] = 0; + field_0x951++; + } + } + + cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 3, 0x1000, 0x400); + cLib_addCalcAngleS(&shape_angle.x, current.angle.x, 3, 0x1000, 0x400); + + if (!checkStateFlg0(FLG0_1)) { + checkBgHit(&old.pos, ¤t.pos); + } + + var_r28 = -(var_r28 * 2); + if (var_r28 > 0x100) { + var_r28 = 0x1000; + } else if (var_r28 < -0x100) { + var_r28 = -0x1000; + } else { + var_r28 = field_0x958; + } + + field_0x958 = var_r28; + cLib_addCalcAngleS(&shape_angle.z, var_r28, 0x10, 0x1000, 0x10); + + setMoveMatrix(); + + m_sound.startLevelSound(Z2SE_BOOM_TORNADO, 0, -1); + + if (!dComIfGp_event_runCheck()) { + dComIfG_Ccsp()->Set(&m_windAtCyl); + g_dComIfG_gameInfo.play.mCcs.mMass_Mng.Set(&m_windAtCyl, 1); + //dComIfG_Ccsp()->SetMass(&m_windAtCyl, 1); + } else { + m_atCps.ResetAtHit(); + m_windAtCyl.ResetAtHit(); + } + + return 1; +} + +/* 804A1814-804A1BD4 0037D4 03C0+00 1/1 0/0 0/0 .text execute__13daBoomerang_cFv */ +int daBoomerang_c::execute() { + if (field_0x957 != 0) { + current.pos = field_0x9b8; + } + + if (checkStateFlg0(FLG0_1) && fopAcM_wt_c::waterCheck(¤t.pos)) { + cXyz spC(current.pos.x, current.pos.y - 50.0f, current.pos.z); + + f32 roof_y; + if (fopAcM_rc_c::roofCheck(&spC) && dComIfG_Bgsp().GetUnderwaterRoofCode(*fopAcM_rc_c::getRoofCheck()) == 0) { + roof_y = fopAcM_rc_c::getRoofY(); + } else { + roof_y = 1000000000.0f; + } + + if (roof_y > fopAcM_wt_c::getWaterY() && current.pos.y < fopAcM_wt_c::getWaterY() - 50.0f) { + fopAcM_delete(this); + return 1; + } + } + + if (m_forceDelete) { + fopAcM_delete(this); + return 1; + } + + m_sight.offReserve(); + + field_0x6d4 = fpcM_ERROR_PROCESS_ID_e; + field_0x6d8 = 0; + + if (field_0x962 != 0) { + field_0x962--; + } + + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + s16 cam_angleY = fopCamM_GetAngleY(camera); + s16 cam_angleX = fopCamM_GetAngleX(camera); + + for (int i = 0; i < m_lockCnt; i++) { + if (m_lockActorIDs[i] != fpcM_ERROR_PROCESS_ID_e) { + m_lockActors[i] = fopAcM_SearchByID(m_lockActorIDs[i]); + if (m_lockActors[i] == NULL) { + pushLockList(i); + i--; + } + } + } + + daAlink_c* player = daAlink_getAlinkActorClass(); + + if (dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo()) != ST_BOSS_ROOM) { + f32 temp_f31 = 500.0f + player->getBoomLockMax(); + int var_r26 = 0; + + temp_f31 *= temp_f31; + for (int i = 0; i < m_lockCnt; i++) { + f32 var_f29; + if (field_0x718[i] != 0) { + var_f29 = player->current.pos.abs2(m_lockActorsPositions[i]); + } else if (m_lockActors[i] != NULL) { + var_f29 = player->current.pos.abs2(m_lockActors[i]->eyePos); + } else { + continue; + } + + if (var_f29 > temp_f31) { + pushLockList(i); + i--; + var_r26 = 1; + } + } + + if (var_r26 != 0 && m_lockCnt == 0) { + onStateFlg0(FLG0_1); + field_0x957 = 0; + } + } + + (this->*m_procFn)(); + setRoomInfo(); + + m_sight.playAnime(field_0x951, m_lockCnt); + + field_0x95c = cam_angleY; + field_0x95e = cam_angleX; + setEffect(); + + m_sound.framework(0, m_reverb); + field_0x9b8 = current.pos; + + if (field_0x957 != 0) { + cLib_chasePos(&m_movePos, m_moveTargetPos, speedF); + current.pos = m_movePos; + } + + attention_info.position = current.pos; + eyePos = current.pos; + + if (dComIfGp_event_runCheck()) { + daPy_boomerangMove_c::onEventKeepFlg(); + } + + return 1; +} + +/* 804A1BD4-804A1BF4 003B94 0020+00 1/0 0/0 0/0 .text daBoomerang_Execute__FP13daBoomerang_c */ +static int daBoomerang_Execute(daBoomerang_c* i_this) { + return i_this->execute(); +} + +/* 804A1BF4-804A1EBC 003BB4 02C8+00 1/1 0/0 0/0 .text __dt__13daBoomerang_cFv */ +daBoomerang_c::~daBoomerang_c() { + m_sound.deleteObject(); +} + +/* 804A1EBC-804A1EE4 003E7C 0028+00 1/0 0/0 0/0 .text daBoomerang_Delete__FP13daBoomerang_c */ +static int daBoomerang_Delete(daBoomerang_c* i_this) { + i_this->~daBoomerang_c(); + return 1; +} + +/* 804A1EE4-804A2064 003EA4 0180+00 1/1 0/0 0/0 .text createHeap__13daBoomerang_cFv */ +int daBoomerang_c::createHeap() { + if (!m_sight.createHeap()) { + return 0; + } + + m_sight.initialize(); + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x1F); + JUT_ASSERT(2882, modelData != 0); + mp_boomModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mp_boomModel == NULL) { + return 0; + } + + modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x34); + JUT_ASSERT(2898, modelData != 0); + mp_shippuModel = mDoExt_J3DModel__create(modelData, 0, 0x11000284); + if (mp_shippuModel == NULL) { + return 0; + } + + J3DAnmTransform* transAnm = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x13); + JUT_ASSERT(2911, transAnm != 0); + if (m_shippuBck.init(transAnm, 0, 2, 1.0f, 0, -1, false) == 0) { + return 0; + } + + modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x19); + mp_setboomEfModel = mDoExt_J3DModel__create(modelData, 0, 0x11000284); + if (mp_setboomEfModel == NULL) { + return 0; + } + + m_sound.init(¤t.pos, 2); + return 1; +} + +/* 804A2064-804A2084 004024 0020+00 1/1 0/0 0/0 .text daBoomerang_createHeap__FP10fopAc_ac_c */ +static int daBoomerang_createHeap(fopAc_ac_c* i_this) { + return ((daBoomerang_c*)i_this)->createHeap(); +} /* 804A2B14-804A2B60 000038 004C+00 0/1 0/0 0/0 .data l_atCpsSrc */ -#pragma push -#pragma force_active on static dCcD_SrcCps l_atCpsSrc = { { {0, {{AT_TYPE_BOOMERANG, 0, 0x3B}, {0, 0}, 0}}, @@ -1295,15 +1465,12 @@ static dCcD_SrcCps l_atCpsSrc = { }, } }; -#pragma pop /* 804A2B60-804A2BA4 000084 0044+00 0/1 0/0 0/0 .data l_windAtCylSrc */ -#pragma push -#pragma force_active on static dCcD_SrcCyl l_windAtCylSrc = { { {0, {{AT_TYPE_BOOMERANG, 0, 0x1B}, {0, 0}, 0}}, - {dCcD_SE_13, 0, 0, 3, {2}}, + {dCcD_SE_13, 0, 0, dCcD_MTRL_WIND, {2}}, {dCcD_SE_NONE, 0, 0, 0, {0}}, {0}, }, @@ -1313,45 +1480,88 @@ static dCcD_SrcCyl l_windAtCylSrc = { 600.0f, } }; -#pragma pop -/* 804A2BA4-804A2BB0 -00001 000C+00 0/1 0/0 0/0 .data @5999 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5999[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procWait__13daBoomerang_cFv, -}; -#pragma pop +/* 804A2084-804A230C 004044 0288+00 1/1 0/0 0/0 .text create__13daBoomerang_cFv */ +int daBoomerang_c::create() { + fpc_ProcID id = fopAcM_GetID(this); + fopAcM_SetupActor(this, daBoomerang_c); -/* 804A2BB0-804A2BBC -00001 000C+00 0/1 0/0 0/0 .data @6005 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6005[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)setAimActorBase__13daBoomerang_cFP10fopAc_ac_c, -}; -#pragma pop + if (!fopAcM_entrySolidHeap(this, daBoomerang_createHeap, 0xC0D0)) { + return cPhs_ERROR_e; + } -/* 804A2BBC-804A2BC8 -00001 000C+00 0/1 0/0 0/0 .data @6006 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_6006[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cancelLockActorBase__13daBoomerang_cFP10fopAc_ac_c, -}; -#pragma pop + m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e; + + m_acch.Set(this, 0, NULL); + m_papo.init(&m_acch, 600.0f, 600.0f); + setKeepMatrix(); + fopAcM_SetMtx(this, mp_boomModel->getBaseTRMtx()); + + m_procFn = &daBoomerang_c::procWait; + + m_colliderStts.Init(60, 0xFF, this); + + m_atCps.Set(l_atCpsSrc); + m_atCps.SetStts(&m_colliderStts); + m_atCps.SetAtHitCallback(daBoomerang_lockLineCallback); + + m_windAtCyl.Set(l_windAtCylSrc); + m_windAtCyl.SetStts(&m_colliderStts); + m_windAtCyl.SetAtHitCallback(daBoomerang_moveLineCallback); + + m_boomLineChk.ClrSttsRoofOff(); + + for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) { + m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e; + } + + m_windBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x48); + JUT_ASSERT(2997, m_windBtk); + + m_windBtk->searchUpdateMaterialID(mp_shippuModel->getModelData()); + mp_shippuModel->getModelData()->entryTexMtxAnimator(m_windBtk); + mp_shippuModel->getModelData()->getJointNodePointer(4)->setCallBack(daBoomeang_windModelCallBack); + mp_shippuModel->setUserArea((u32)this); + + m_waitEffBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x47); + JUT_ASSERT(3011, m_waitEffBtk); + + m_waitEffBtk->searchUpdateMaterialID(mp_setboomEfModel->getModelData()); + mp_setboomEfModel->getModelData()->entryTexMtxAnimator(m_waitEffBtk); + + setRoomInfo(); + + model = mp_boomModel; + attention_info.field_0xa = 150; + + fopAcM_setStageLayer(this); + + m_setAimActorFn = &daBoomerang_c::setAimActorBase; + m_cancelLockActorFn = &daBoomerang_c::cancelLockActorBase; + + m_lineChk.OffFullGrp(); + m_lineChk.OnWaterGrp(); + + m_shippuSize = 1.0f; + return cPhs_COMPLEATE_e; +} + +/* 804A230C-804A2524 0042CC 0218+00 1/1 0/0 0/0 .text __ct__13daBoomerang_cFv */ +daBoomerang_c::daBoomerang_c() {} + +/* 804A26F8-804A2718 0046B8 0020+00 1/0 0/0 0/0 .text daBoomerang_Create__FP10fopAc_ac_c + */ +static int daBoomerang_Create(fopAc_ac_c* i_this) { + return ((daBoomerang_c*)i_this)->create(); +} /* 804A2BC8-804A2BE8 -00001 0020+00 1/0 0/0 0/0 .data l_daBoomerang_Method */ static actor_method_class l_daBoomerang_Method = { - (process_method_func)daBoomerang_Create__FP10fopAc_ac_c, - (process_method_func)daBoomerang_Delete__FP13daBoomerang_c, - (process_method_func)daBoomerang_Execute__FP13daBoomerang_c, - 0, - (process_method_func)daBoomerang_Draw__FP13daBoomerang_c, + (process_method_func)daBoomerang_Create, + (process_method_func)daBoomerang_Delete, + (process_method_func)daBoomerang_Execute, + (process_method_func)NULL, + (process_method_func)daBoomerang_Draw, }; /* 804A2BE8-804A2C18 -00001 0030+00 0/0 0/0 1/0 .data g_profile_BOOMERANG */ @@ -1361,7 +1571,7 @@ extern actor_process_profile_definition g_profile_BOOMERANG = { fpcPi_CURRENT_e, // mListPrio PROC_BOOMERANG, // mProcName &g_fpcLf_Method.base, // sub_method - 0x00000DE4, // mSize + sizeof(daBoomerang_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method @@ -1372,665 +1582,4 @@ extern actor_process_profile_definition g_profile_BOOMERANG = { fopAc_CULLBOX_0_e, // cullType }; -/* 804A2C18-804A2C24 00013C 000C+00 1/1 0/0 0/0 .data __vt__12dDlst_base_c */ -SECTION_DATA extern void* __vt__12dDlst_base_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__12dDlst_base_cFv, -}; - -/* 804A2C24-804A2C30 000148 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 804A2C30-804A2C54 000154 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_804A2784, - (void*)NULL, - (void*)NULL, - (void*)func_804A277C, -}; - -/* 804A2C54-804A2C60 000178 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 804A2C60-804A2C6C 000184 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 804A2C6C-804A2C78 000190 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 804A2C78-804A2C84 00019C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 804A2C84-804A2CB4 0001A8 0030+00 3/3 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_804A2764, - (void*)NULL, - (void*)NULL, - (void*)func_804A2774, - (void*)NULL, - (void*)NULL, - (void*)func_804A276C, -}; - -/* 804A2CB4-804A2CC0 0001D8 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 804A2CD0-804A2CD4 000000 0001+03 1/1 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 804A2CD4-804A2CD8 000004 0001+03 0/0 0/0 0/0 .bss @1107 */ -#pragma push -#pragma force_active on -static u8 lit_1107[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CD8-804A2CDC 000008 0001+03 0/0 0/0 0/0 .bss @1105 */ -#pragma push -#pragma force_active on -static u8 lit_1105[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CDC-804A2CE0 00000C 0001+03 0/0 0/0 0/0 .bss @1104 */ -#pragma push -#pragma force_active on -static u8 lit_1104[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CE0-804A2CE4 000010 0001+03 0/0 0/0 0/0 .bss @1099 */ -#pragma push -#pragma force_active on -static u8 lit_1099[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CE4-804A2CE8 000014 0001+03 0/0 0/0 0/0 .bss @1097 */ -#pragma push -#pragma force_active on -static u8 lit_1097[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CE8-804A2CEC 000018 0001+03 0/0 0/0 0/0 .bss @1095 */ -#pragma push -#pragma force_active on -static u8 lit_1095[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CEC-804A2CF0 00001C 0001+03 0/0 0/0 0/0 .bss @1094 */ -#pragma push -#pragma force_active on -static u8 lit_1094[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CF0-804A2CF4 000020 0001+03 0/0 0/0 0/0 .bss @1057 */ -#pragma push -#pragma force_active on -static u8 lit_1057[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CF4-804A2CF8 000024 0001+03 0/0 0/0 0/0 .bss @1055 */ -#pragma push -#pragma force_active on -static u8 lit_1055[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CF8-804A2CFC 000028 0001+03 0/0 0/0 0/0 .bss @1053 */ -#pragma push -#pragma force_active on -static u8 lit_1053[1 + 3 /* padding */]; -#pragma pop - -/* 804A2CFC-804A2D00 00002C 0001+03 0/0 0/0 0/0 .bss @1052 */ -#pragma push -#pragma force_active on -static u8 lit_1052[1 + 3 /* padding */]; -#pragma pop - -/* 804A2D00-804A2D04 000030 0001+03 0/0 0/0 0/0 .bss @1014 */ -#pragma push -#pragma force_active on -static u8 lit_1014[1 + 3 /* padding */]; -#pragma pop - -/* 804A2D04-804A2D08 000034 0001+03 0/0 0/0 0/0 .bss @1012 */ -#pragma push -#pragma force_active on -static u8 lit_1012[1 + 3 /* padding */]; -#pragma pop - -/* 804A2D08-804A2D0C 000038 0001+03 0/0 0/0 0/0 .bss @1010 */ -#pragma push -#pragma force_active on -static u8 lit_1010[1 + 3 /* padding */]; -#pragma pop - -/* 804A2D0C-804A2D10 00003C 0001+03 0/0 0/0 0/0 .bss @1009 */ -#pragma push -#pragma force_active on -static u8 lit_1009[1 + 3 /* padding */]; -#pragma pop - -/* 804A2D10-804A2D14 000040 0001+03 0/0 0/0 0/0 .bss l_HIO */ -#pragma push -#pragma force_active on -static u8 l_HIO[1 + 3 /* padding */]; -#pragma pop - -/* 804A2D14-804A2D24 000044 000C+04 0/1 0/0 0/0 .bss effDirection$5075 */ -#pragma push -#pragma force_active on -static u8 effDirection[12 + 4 /* padding */]; -#pragma pop - -/* 804A2D24-804A2D34 000054 000C+04 0/1 0/0 0/0 .bss effScale0$5078 */ -#pragma push -#pragma force_active on -static u8 effScale0[12 + 4 /* padding */]; -#pragma pop - -/* 804A2D34-804A2D44 000064 000C+04 0/1 0/0 0/0 .bss effScaleSand$5081 */ -#pragma push -#pragma force_active on -static u8 effScaleSand[12 + 4 /* padding */]; -#pragma pop - -/* 804A2D44-804A2D50 000074 000C+00 0/1 0/0 0/0 .bss effScaleGrass$5084 */ -#pragma push -#pragma force_active on -static u8 effScaleGrass[12]; -#pragma pop - -/* 804A012C-804A082C 0020EC 0700+00 1/1 0/0 0/0 .text setEffect__13daBoomerang_cFv */ -void daBoomerang_c::setEffect() { - // NONMATCHING -} - -/* 804A082C-804A0874 0027EC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804A2954-804A2958 000104 0004+00 0/1 0/0 0/0 .rodata @5561 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5561 = 60.0f; -COMPILER_STRIP_GATE(0x804A2954, &lit_5561); -#pragma pop - -/* 804A2958-804A295C 000108 0004+00 0/1 0/0 0/0 .rodata @5562 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5562 = 100.0f; -COMPILER_STRIP_GATE(0x804A2958, &lit_5562); -#pragma pop - -/* 804A0874-804A0F0C 002834 0698+00 2/0 0/0 0/0 .text procWait__13daBoomerang_cFv */ -void daBoomerang_c::procWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804A295C-804A2968 00010C 000C+00 0/1 0/0 0/0 .rodata @5574 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5574[12] = { - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804A295C, &lit_5574); -#pragma pop - -/* 804A2968-804A296C 000118 0004+00 0/1 0/0 0/0 .rodata @5762 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5762 = 40.0f; -COMPILER_STRIP_GATE(0x804A2968, &lit_5762); -#pragma pop - -/* 804A296C-804A2970 00011C 0004+00 0/1 0/0 0/0 .rodata @5763 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5763 = 2.0f; -COMPILER_STRIP_GATE(0x804A296C, &lit_5763); -#pragma pop - -/* 804A2970-804A2974 000120 0004+00 0/1 0/0 0/0 .rodata @5764 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5764 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x804A2970, &lit_5764); -#pragma pop - -/* 804A2974-804A2978 000124 0004+00 0/1 0/0 0/0 .rodata @5765 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5765 = 20.0f; -COMPILER_STRIP_GATE(0x804A2974, &lit_5765); -#pragma pop - -/* 804A2978-804A297C 000128 0004+00 0/1 0/0 0/0 .rodata @5766 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5766 = 18.0f; -COMPILER_STRIP_GATE(0x804A2978, &lit_5766); -#pragma pop - -/* 804A297C-804A2980 00012C 0004+00 0/1 0/0 0/0 .rodata @5767 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5767 = 1024.0f; -COMPILER_STRIP_GATE(0x804A297C, &lit_5767); -#pragma pop - -/* 804A2980-804A2984 000130 0004+00 0/1 0/0 0/0 .rodata @5768 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5768 = 256.0f; -COMPILER_STRIP_GATE(0x804A2980, &lit_5768); -#pragma pop - -/* 804A0F0C-804A1814 002ECC 0908+00 2/1 0/0 0/0 .text procMove__13daBoomerang_cFv */ -void daBoomerang_c::procMove() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804A2984-804A2988 000134 0004+00 0/1 0/0 0/0 .rodata @5874 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5874 = 1000000000.0f; -COMPILER_STRIP_GATE(0x804A2984, &lit_5874); -#pragma pop - -/* 804A2988-804A298C 000138 0004+00 0/1 0/0 0/0 .rodata @5875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5875 = 500.0f; -COMPILER_STRIP_GATE(0x804A2988, &lit_5875); -#pragma pop - -/* 804A1814-804A1BD4 0037D4 03C0+00 1/1 0/0 0/0 .text execute__13daBoomerang_cFv */ -int daBoomerang_c::execute() { - // NONMATCHING -} - -/* 804A1BD4-804A1BF4 003B94 0020+00 1/0 0/0 0/0 .text daBoomerang_Execute__FP13daBoomerang_c */ -static int daBoomerang_Execute(daBoomerang_c* i_this) { - return i_this->execute(); -} - -/* ############################################################################################## */ -/* 804A2CC0-804A2CD0 0001E4 0010+00 3/3 0/0 0/0 .data __vt__19daBoomerang_sight_c */ -SECTION_DATA extern void* __vt__19daBoomerang_sight_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__19daBoomerang_sight_cFv, - (void*)__dt__19daBoomerang_sight_cFv, -}; - -/* 804A1BF4-804A1EBC 003BB4 02C8+00 1/1 0/0 0/0 .text __dt__13daBoomerang_cFv */ -daBoomerang_c::~daBoomerang_c() { - // NONMATCHING -} - -/* 804A1EBC-804A1EE4 003E7C 0028+00 1/0 0/0 0/0 .text daBoomerang_Delete__FP13daBoomerang_c */ -static int daBoomerang_Delete(daBoomerang_c* i_this) { - i_this->~daBoomerang_c(); - return 1; -} - -/* 804A1EE4-804A2064 003EA4 0180+00 1/1 0/0 0/0 .text createHeap__13daBoomerang_cFv */ -int daBoomerang_c::createHeap() { - if (mSight.createHeap() == 0) { - return 0; - } - mSight.initialize(); - J3DModelData* modelData = - (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x1f); - field_0x568 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - if (field_0x568 == NULL) { - return 0; - } - modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x34); - field_0x56c = mDoExt_J3DModel__create(modelData, 0, 0x11000284); - if (field_0x56c == NULL) { - return 0; - } - J3DAnmTransform* transform = - (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x13); - if (mBck.init(transform, 0, 2, 1.0f, 0, -1, false) == 0) { - return 0; - } - modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x19); - field_0x590 = mDoExt_J3DModel__create(modelData, 0, 0x11000284); - if (field_0x590 == NULL) { - return 0; - } - field_0x720.init(¤t.pos, 2); - return 1; -} - - -/* 804A2064-804A2084 004024 0020+00 1/1 0/0 0/0 .text daBoomerang_createHeap__FP10fopAc_ac_c */ -static int daBoomerang_createHeap(fopAc_ac_c* i_this) { - return static_cast(i_this)->createHeap(); -} - -/* ############################################################################################## */ -/* 804A298C-804A2990 00013C 0004+00 1/1 0/0 0/0 .rodata @6077 */ -SECTION_RODATA static f32 const lit_6077 = 600.0f; -COMPILER_STRIP_GATE(0x804A298C, &lit_6077); - -/* 804A2084-804A230C 004044 0288+00 1/1 0/0 0/0 .text create__13daBoomerang_cFv */ -int daBoomerang_c::create() { - // NONMATCHING -} - -/* 804A230C-804A2524 0042CC 0218+00 1/1 0/0 0/0 .text __ct__13daBoomerang_cFv */ -daBoomerang_c::daBoomerang_c() { - // NONMATCHING -} - -/* 804A2524-804A259C 0044E4 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* 804A259C-804A25E4 00455C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 804A25E4-804A262C 0045A4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 804A262C-804A2688 0045EC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 804A2688-804A26F8 004648 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 804A26F8-804A2718 0046B8 0020+00 1/0 0/0 0/0 .text daBoomerang_Create__FP10fopAc_ac_c - */ -static int daBoomerang_Create(fopAc_ac_c* i_this) { - return static_cast(i_this)->create(); -} - -/* 804A2718-804A271C 0046D8 0004+00 1/0 0/0 0/0 .text draw__12dDlst_base_cFv */ -void draw__12dDlst_base_cFv() { - /* empty function */ -} - -/* 804A271C-804A2764 0046DC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 804A2764-804A276C 004724 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_804A2764() { - // NONMATCHING -} - -/* 804A276C-804A2774 00472C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_804A276C() { - // NONMATCHING -} - -/* 804A2774-804A277C 004734 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_804A2774() { - // NONMATCHING -} - -/* 804A277C-804A2784 00473C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_804A277C() { - // NONMATCHING -} - -/* 804A2784-804A278C 004744 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_804A2784() { - // NONMATCHING -} - -/* 804A278C-804A27FC 00474C 0070+00 1/0 0/0 0/0 .text __dt__19daBoomerang_sight_cFv */ -// daBoomerang_sight_c::~daBoomerang_sight_c() { -extern "C" void __dt__19daBoomerang_sight_cFv() { - // NONMATCHING -} - -/* 804A27FC-804A2800 0047BC 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 804A2800-804A2848 0047C0 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804A2D50-804A2D54 000080 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_804A2D50[4]; -#pragma pop - -/* 804A2D54-804A2D58 000084 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_804A2D54[4]; -#pragma pop - -/* 804A2D58-804A2D5C 000088 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804A2D58[4]; -#pragma pop - -/* 804A2D5C-804A2D60 00008C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804A2D5C[4]; -#pragma pop - -/* 804A2D60-804A2D64 000090 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804A2D60[4]; -#pragma pop - -/* 804A2D64-804A2D68 000094 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804A2D64[4]; -#pragma pop - -/* 804A2D68-804A2D6C 000098 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_804A2D68[4]; -#pragma pop - -/* 804A2D6C-804A2D70 00009C 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804A2D6C[4]; -#pragma pop - -/* 804A2D70-804A2D74 0000A0 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804A2D70[4]; -#pragma pop - -/* 804A2D74-804A2D78 0000A4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_804A2D74[4]; -#pragma pop - -/* 804A2D78-804A2D7C 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804A2D78[4]; -#pragma pop - -/* 804A2D7C-804A2D80 0000AC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804A2D7C[4]; -#pragma pop - -/* 804A2D80-804A2D84 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_804A2D80[4]; -#pragma pop - -/* 804A2D84-804A2D88 0000B4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804A2D84[4]; -#pragma pop - -/* 804A2D88-804A2D8C 0000B8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804A2D88[4]; -#pragma pop - -/* 804A2D8C-804A2D90 0000BC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_804A2D8C[4]; -#pragma pop - -/* 804A2D90-804A2D94 0000C0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_804A2D90[4]; -#pragma pop - -/* 804A2D94-804A2D98 0000C4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804A2D94[4]; -#pragma pop - -/* 804A2D98-804A2D9C 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_804A2D98[4]; -#pragma pop - -/* 804A2D9C-804A2DA0 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_804A2D9C[4]; -#pragma pop - -/* 804A2DA0-804A2DA4 0000D0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_804A2DA0[4]; -#pragma pop - -/* 804A2DA4-804A2DA8 0000D4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804A2DA4[4]; -#pragma pop - -/* 804A2DA8-804A2DAC 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804A2DA8[4]; -#pragma pop - -/* 804A2DAC-804A2DB0 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804A2DAC[4]; -#pragma pop - -/* 804A2DB0-804A2DB4 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_804A2DB0[4]; -#pragma pop - -/* 804A2DB4-804A2DB8 0000E4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JAUSectionHeap> */ -#pragma push -#pragma force_active on -static u8 data_804A2DB4[4]; -#pragma pop - -/* 804A2990-804A2990 000140 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES; diff --git a/src/d/actor/d_a_grass.cpp b/src/d/actor/d_a_grass.cpp index 41234b6947..eee43906f6 100644 --- a/src/d/actor/d_a_grass.cpp +++ b/src/d/actor/d_a_grass.cpp @@ -9,789 +9,15 @@ #include "d/d_com_inf_game.h" #include "dol2asm.h" #include "m_Do/m_Do_lib.h" -#include "string.h" +#include "Z2AudioLib/Z2Instances.h" +#include #include -// -// Forward References: -// +UNK_REL_DATA +UNK_REL_BSS; -extern "C" static void randam_addcol_set__FPs(); -extern "C" void createGrass__9daGrass_cFv(); -extern "C" void deleteGrass__9daGrass_cFv(); -extern "C" void __dt__15dGrass_packet_cFv(); -extern "C" void executeGrass__9daGrass_cFv(); -extern "C" void drawGrass__9daGrass_cFv(); -extern "C" void newGrassData__9daGrass_cFR4cXyziUcUcsUc(); -extern "C" void createFlower__9daGrass_cFv(); -extern "C" void deleteFlower__9daGrass_cFv(); -extern "C" void __dt__16dFlower_packet_cFv(); -extern "C" void executeFlower__9daGrass_cFv(); -extern "C" void drawFlower__9daGrass_cFv(); -extern "C" void newFlowerData__9daGrass_cFScR4cXyziScs(); -extern "C" static void dGrass_Tex_Change__Fv(); -extern "C" static void daGrass_create__FP9daGrass_c(); -extern "C" void create__9daGrass_cFv(); -extern "C" static void daGrass_Delete__FP9daGrass_c(); -extern "C" static void daGrass_execute__FP9daGrass_c(); -extern "C" static void daGrass_draw__FP9daGrass_c(); -extern "C" void func_8051D7B4(void* _this, u8*); -extern "C" void __sinit_d_a_grass_cpp(); -extern "C" void WorkCo__13dGrass_data_cFP10fopAc_ac_cUli(); -extern "C" void WorkAt_NoCutAnim__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_Obj(); -extern "C" void -Direction_Set__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_ObjP5csXyz(); -extern "C" void WorkAt__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfUs(); -extern "C" void __dt__5csXyzFv(); -extern "C" void hitCheck__13dGrass_data_cFiUs(); -extern "C" void __dt__15dCcMassS_HitInfFv(); -extern "C" void newData__13dGrass_room_cFP13dGrass_data_c(); -extern "C" void deleteData__13dGrass_room_cFv(); -extern "C" void __ct__15dGrass_packet_cFv(); -extern "C" void draw__15dGrass_packet_cFv(); -extern "C" void calc__15dGrass_packet_cFv(); -extern "C" static void checkGroundY__FR4cXyz(); -extern "C" void update__15dGrass_packet_cFv(); -extern "C" void setData__15dGrass_packet_cFP13dGrass_data_ciR4cXyziUcUcsUc(); -extern "C" void newData__15dGrass_packet_cFR4cXyziUcUcsUc(); -extern "C" void deleteRoom__15dGrass_packet_cFi(); -extern "C" void newAnm__15dGrass_packet_cFv(); -extern "C" void setAnm__15dGrass_packet_cFis(); -extern "C" void getSwordTopPos__9daPy_py_cCFv(); -extern "C" void __ct__13dGrass_room_cFv(); -extern "C" void __ct__12dGrass_anm_cFv(); -extern "C" void __dt__13dGrass_data_cFv(); -extern "C" void __ct__13dGrass_data_cFv(); -extern "C" void WorkCo__14dFlower_data_cFP10fopAc_ac_cUli(); -extern "C" void deleteAnm__14dFlower_data_cFv(); -extern "C" void WorkAt_NoCutAnim__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_Obj(); -extern "C" void WorkAt__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInf(); -extern "C" void hitCheck__14dFlower_data_cFP10fopAc_ac_ci(); -extern "C" void newData__14dFlower_room_cFP14dFlower_data_c(); -extern "C" void deleteData__14dFlower_room_cFv(); -extern "C" void __ct__16dFlower_packet_cFv(); -extern "C" void draw__16dFlower_packet_cFv(); -extern "C" void calc__16dFlower_packet_cFv(); -extern "C" static void flowerCheckGroundY__FR4cXyz(); -extern "C" void update__16dFlower_packet_cFv(); -extern "C" void setData__16dFlower_packet_cFP14dFlower_data_ciScR4cXyziScs(); -extern "C" void newData__16dFlower_packet_cFScR4cXyziScs(); -extern "C" void deleteRoom__16dFlower_packet_cFi(); -extern "C" void newAnm__16dFlower_packet_cFv(); -extern "C" void setAnm__16dFlower_packet_cFis(); -extern "C" void __ct__14dFlower_room_cFv(); -extern "C" void __ct__13dFlower_anm_cFv(); -extern "C" void __dt__14dFlower_data_cFv(); -extern "C" void __ct__14dFlower_data_cFv(); -extern "C" extern char const* const d_a_grass__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_setStageLayer__FPv(); -extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void fopOvlpM_IsPeek__Fv(); -extern "C" void getStatusRoomDt__20dStage_roomControl_cFi(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfGs_Grass_hide_Set__FSc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void dKyw_get_wind_vec__Fv(); -extern "C" void dKyw_get_wind_pow__Fv(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void dCcD_GetGObjInf__FP8cCcD_Obj(); -extern "C" void SetAttr__12dCcMassS_MngFffUcUc(); -extern "C" void Prepare__12dCcMassS_MngFv(); -extern "C" void Chk__12dCcMassS_MngFP4cXyzPP10fopAc_ac_cP15dCcMassS_HitInf(); -extern "C" void MassClear__4dCcSFv(); -extern "C" void checkNowWolfEyeUp__9daPy_py_cFv(); -extern "C" void getDaytime__18dScnKy_env_light_cFv(); -extern "C" void dKy_setLight_nowroom_grass__Fcf(); -extern "C" void dKy_setLight_again__Fv(); -extern "C" void dKy_Global_amb_set__FP12dKy_tevstr_c(); -extern "C" void dKy_GxFog_tevstr_set__FP12dKy_tevstr_c(); -extern "C" void dKy_GfFog_tevstr_set__FP12dKy_tevstr_c(); -extern "C" void dKy_get_dayofweek__Fv(); -extern "C" void dKy_SunMoon_Light_Check__Fv(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rnd__Fv(); -extern "C" void cM_rndF__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void calcViewFrustum__11J3DUClipperFv(); -extern "C" void clip__11J3DUClipperCFPA4_Cf3Vecf(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void GFSetTevColorS10__F11_GXTevRegID11_GXColorS10(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void reinitGX__6J3DSysFv(); -extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer(); -extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_18(); -extern "C" void _savegpr_20(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_18(); -extern "C" void _restgpr_20(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__9J3DPacket[5]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mClipper__14mDoLib_clipper[92]; -extern "C" u8 mStatus__20dStage_roomControl_c[65792]; -extern "C" u8 m_deleteRoom__15dGrass_packet_c[12]; -extern "C" u8 m_deleteRoom__16dFlower_packet_c[12]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" f32 mSystemFar__14mDoLib_clipper; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" u8 m_myObj__9daGrass_c[4]; -extern "C" u8 m_grass__9daGrass_c[4]; -extern "C" u8 m_flower__9daGrass_c[4]; -extern "C" u8 mLight8EcallBack__13dPa_control_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80523028-8052302C 000000 0004+00 14/14 0/0 0/0 .rodata @3999 */ -SECTION_RODATA static f32 const lit_3999 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80523028, &lit_3999); - -/* 8052302C-80523030 000004 0004+00 1/10 0/0 0/0 .rodata @4000 */ -SECTION_RODATA static u8 const lit_4000[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8052302C, &lit_4000); - -/* 80523030-80523034 000008 0004+00 0/1 0/0 0/0 .rodata @4001 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4001 = 1600.0f; -COMPILER_STRIP_GATE(0x80523030, &lit_4001); -#pragma pop - -/* 80523034-80523038 00000C 0004+00 0/5 0/0 0/0 .rodata @4002 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4002 = 40.0f; -COMPILER_STRIP_GATE(0x80523034, &lit_4002); -#pragma pop - -/* 80523038-8052303C 000010 0004+00 0/2 0/0 0/0 .rodata @4003 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4003 = 65.0f; -COMPILER_STRIP_GATE(0x80523038, &lit_4003); -#pragma pop - -/* 8052303C-80523040 000014 0004+00 0/3 0/0 0/0 .rodata @4148 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4148 = 5.0f; -COMPILER_STRIP_GATE(0x8052303C, &lit_4148); -#pragma pop - -/* 80523040-80523044 000018 0004+00 0/2 0/0 0/0 .rodata @4149 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4149 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80523040, &lit_4149); -#pragma pop - -/* 80523044-80523048 00001C 0004+00 0/3 0/0 0/0 .rodata @4150 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4150 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80523044, &lit_4150); -#pragma pop - -/* 80523048-8052304C 000020 0004+00 0/1 0/0 0/0 .rodata @4151 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4151 = 2.5f; -COMPILER_STRIP_GATE(0x80523048, &lit_4151); -#pragma pop - -/* 8052304C-80523050 000024 0004+00 0/3 0/0 0/0 .rodata @4152 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4152 = 0.5f; -COMPILER_STRIP_GATE(0x8052304C, &lit_4152); -#pragma pop - -/* 80523050-80523054 000028 0004+00 0/1 0/0 0/0 .rodata @4153 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4153 = 1.5f; -COMPILER_STRIP_GATE(0x80523050, &lit_4153); -#pragma pop - -/* 80523054-80523058 00002C 0004+00 0/1 0/0 0/0 .rodata @4154 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4154 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80523054, &lit_4154); -#pragma pop - -/* 80523058-8052305C 000030 0004+00 0/1 0/0 0/0 .rodata @4155 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4155 = 20.0f; -COMPILER_STRIP_GATE(0x80523058, &lit_4155); -#pragma pop - -/* 8052305C-80523060 000034 0004+00 0/3 0/0 0/0 .rodata @4156 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4156 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x8052305C, &lit_4156); -#pragma pop - -/* 80523060-80523068 000038 0008+00 0/9 0/0 0/0 .rodata @4158 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4158[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80523060, &lit_4158); -#pragma pop - -/* 80523068-80523070 000040 0008+00 0/2 0/0 0/0 .rodata @4509 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4509[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80523068, &lit_4509); -#pragma pop - -/* 80523070-80523078 000048 0008+00 0/2 0/0 0/0 .rodata @4510 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4510[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80523070, &lit_4510); -#pragma pop - -/* 80523078-80523080 000050 0008+00 0/2 0/0 0/0 .rodata @4511 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4511[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80523078, &lit_4511); -#pragma pop - -/* 80523080-80523084 000058 0004+00 0/2 0/0 0/0 .rodata @4512 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4512 = 200.0f; -COMPILER_STRIP_GATE(0x80523080, &lit_4512); -#pragma pop - -/* 80523084-80523088 00005C 0004+00 0/1 0/0 0/0 .rodata @4513 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4513 = 158.0f; -COMPILER_STRIP_GATE(0x80523084, &lit_4513); -#pragma pop - -/* 80523088-8052308C 000060 0004+00 0/2 0/0 0/0 .rodata @4514 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4514 = 500.0f; -COMPILER_STRIP_GATE(0x80523088, &lit_4514); -#pragma pop - -/* 8052308C-80523090 000064 0004+00 0/3 0/0 0/0 .rodata @4515 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4515 = 25.0f; -COMPILER_STRIP_GATE(0x8052308C, &lit_4515); -#pragma pop - -/* 80523090-80523094 000068 0004+00 1/8 0/0 0/0 .rodata @4516 */ -SECTION_RODATA static f32 const lit_4516 = 1.0f; -COMPILER_STRIP_GATE(0x80523090, &lit_4516); - -/* 80523094-80523098 00006C 0004+00 1/3 0/0 0/0 .rodata @4517 */ -SECTION_RODATA static f32 const lit_4517 = -1.0f; -COMPILER_STRIP_GATE(0x80523094, &lit_4517); - -/* 80523098-8052309C 000070 0004+00 2/3 0/0 0/0 .rodata @4600 */ -SECTION_RODATA static f32 const lit_4600 = 15.0f; -COMPILER_STRIP_GATE(0x80523098, &lit_4600); - -/* 8052309C-805230A4 000074 0008+00 0/1 0/0 0/0 .rodata @4656 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4656[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8052309C, &lit_4656); -#pragma pop - -/* 805230A4-805230AC 00007C 0008+00 0/1 0/0 0/0 .rodata @4657 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4657[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x805230A4, &lit_4657); -#pragma pop - -/* 805230AC-805230B0 000084 0004+00 0/1 0/0 0/0 .rodata @4835 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4835 = 90.0f; -COMPILER_STRIP_GATE(0x805230AC, &lit_4835); -#pragma pop - -/* 805230B0-805230B4 000088 0004+00 0/1 0/0 0/0 .rodata @4836 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4836 = 135.0f; -COMPILER_STRIP_GATE(0x805230B0, &lit_4836); -#pragma pop - -/* 805230B4-805230B8 00008C 0004+00 0/1 0/0 0/0 .rodata @4837 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4837 = 1.0f / 45.0f; -COMPILER_STRIP_GATE(0x805230B4, &lit_4837); -#pragma pop - -/* 805230B8-805230BC 000090 0004+00 0/2 0/0 0/0 .rodata @4838 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4838 = 100.0f; -COMPILER_STRIP_GATE(0x805230B8, &lit_4838); -#pragma pop - -/* 805230BC-805230C0 000094 0004+00 0/1 0/0 0/0 .rodata @4839 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4839 = 18.0f; -COMPILER_STRIP_GATE(0x805230BC, &lit_4839); -#pragma pop - -/* 805230C0-805230C4 000098 0004+00 0/1 0/0 0/0 .rodata @4840 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4840 = 225.0f; -COMPILER_STRIP_GATE(0x805230C0, &lit_4840); -#pragma pop - -/* 805230C4-805230C8 00009C 0004+00 0/1 0/0 0/0 .rodata @4841 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4841 = 1.0f / 90.0f; -COMPILER_STRIP_GATE(0x805230C4, &lit_4841); -#pragma pop - -/* 805230C8-805230CC 0000A0 0004+00 0/1 0/0 0/0 .rodata @4842 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4842 = 82.0f; -COMPILER_STRIP_GATE(0x805230C8, &lit_4842); -#pragma pop - -/* 805230CC-805230D0 0000A4 0004+00 0/1 0/0 0/0 .rodata @4843 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4843 = 270.0f; -COMPILER_STRIP_GATE(0x805230CC, &lit_4843); -#pragma pop - -/* 805230D0-805230D4 0000A8 0004+00 0/1 0/0 0/0 .rodata @4844 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4844 = 57.0f; -COMPILER_STRIP_GATE(0x805230D0, &lit_4844); -#pragma pop - -/* 805230D4-805230D8 0000AC 0004+00 0/1 0/0 0/0 .rodata @4845 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4845 = -25.0f; -COMPILER_STRIP_GATE(0x805230D4, &lit_4845); -#pragma pop - -/* 805230D8-805230DC 0000B0 0004+00 0/1 0/0 0/0 .rodata @4846 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4846 = 315.0f; -COMPILER_STRIP_GATE(0x805230D8, &lit_4846); -#pragma pop - -/* 805230DC-805230E0 0000B4 0004+00 0/1 0/0 0/0 .rodata @4847 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4847 = -18.0f; -COMPILER_STRIP_GATE(0x805230DC, &lit_4847); -#pragma pop - -/* 805230E0-805230E4 0000B8 0004+00 0/2 0/0 0/0 .rodata @4848 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4848 = 255.0f; -COMPILER_STRIP_GATE(0x805230E0, &lit_4848); -#pragma pop - -/* 805230E4-805230E8 0000BC 0004+00 0/2 0/0 0/0 .rodata @4849 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4849 = 4.0f; -COMPILER_STRIP_GATE(0x805230E4, &lit_4849); -#pragma pop - -/* 805230E8-805230EC 0000C0 0004+00 0/1 0/0 0/0 .rodata @4850 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4850 = 0x3B000000; -COMPILER_STRIP_GATE(0x805230E8, &lit_4850); -#pragma pop - -/* 805230EC-805230F0 0000C4 0004+00 0/1 0/0 0/0 .rodata @4851 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4851 = 11.0f / 10.0f; -COMPILER_STRIP_GATE(0x805230EC, &lit_4851); -#pragma pop - -/* 805230F0-805230F8 0000C8 0004+04 0/2 0/0 0/0 .rodata @4852 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4852[1 + 1 /* padding */] = { - 2000.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x805230F0, &lit_4852); -#pragma pop - -/* 805230F8-80523100 0000D0 0008+00 0/2 0/0 0/0 .rodata @4854 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4854[8] ALIGN_DECL(16) = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x805230F8, &lit_4854); -#pragma pop - -/* 80523100-80523104 0000D8 0004+00 0/1 0/0 0/0 .rodata @4996 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4996 = 9.0f / 100.0f; -COMPILER_STRIP_GATE(0x80523100, &lit_4996); -#pragma pop - -/* 80523104-80523108 0000DC 0004+00 0/1 0/0 0/0 .rodata @4997 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4997 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x80523104, &lit_4997); -#pragma pop - -/* 80523108-8052310C 0000E0 0004+00 0/1 0/0 0/0 .rodata @4998 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4998 = 290.0f; -COMPILER_STRIP_GATE(0x80523108, &lit_4998); -#pragma pop - -/* 8052310C-80523110 0000E4 0004+00 0/2 0/0 0/0 .rodata @4999 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4999 = 2.0f; -COMPILER_STRIP_GATE(0x8052310C, &lit_4999); -#pragma pop - -/* 80523110-80523114 0000E8 0004+00 0/1 0/0 0/0 .rodata @5000 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5000 = 525.0f; -COMPILER_STRIP_GATE(0x80523110, &lit_5000); -#pragma pop - -/* 80523114-80523118 0000EC 0004+00 0/1 0/0 0/0 .rodata @5001 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5001 = 325.0f; -COMPILER_STRIP_GATE(0x80523114, &lit_5001); -#pragma pop - -/* 80523118-8052311C 0000F0 0004+00 0/3 0/0 0/0 .rodata @5002 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5002 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80523118, &lit_5002); -#pragma pop - -/* 8052311C-80523120 0000F4 0004+00 0/1 0/0 0/0 .rodata @5003 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5003 = 0x3D800000; -COMPILER_STRIP_GATE(0x8052311C, &lit_5003); -#pragma pop - -/* 80523120-80523124 0000F8 0004+00 0/1 0/0 0/0 .rodata @5004 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5004 = -1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80523120, &lit_5004); -#pragma pop - -/* 80523124-80523128 0000FC 0004+00 0/2 0/0 0/0 .rodata @5005 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5005 = 10.0f; -COMPILER_STRIP_GATE(0x80523124, &lit_5005); -#pragma pop - -/* 80523128-8052312C 000100 0004+00 0/1 0/0 0/0 .rodata @5006 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5006 = 8.0f / 5.0f; -COMPILER_STRIP_GATE(0x80523128, &lit_5006); -#pragma pop - -/* 8052312C-80523130 000104 0004+00 0/1 0/0 0/0 .rodata @5007 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5007 = 120.0f; -COMPILER_STRIP_GATE(0x8052312C, &lit_5007); -#pragma pop - -/* 80523130-80523134 000108 0004+00 2/3 0/0 0/0 .rodata @5022 */ -SECTION_RODATA static f32 const lit_5022 = 50.0f; -COMPILER_STRIP_GATE(0x80523130, &lit_5022); - -/* 80523134-80523138 00010C 0004+00 0/1 0/0 0/0 .rodata @5142 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5142 = 18.0f / 11.0f; -COMPILER_STRIP_GATE(0x80523134, &lit_5142); -#pragma pop - -/* 80523138-8052313C 000110 0004+00 0/2 0/0 0/0 .rodata @5143 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5143 = 260.0f; -COMPILER_STRIP_GATE(0x80523138, &lit_5143); -#pragma pop - -/* 8052313C-80523140 000114 0004+00 0/2 0/0 0/0 .rodata @5144 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5144 = 4096.0f; -COMPILER_STRIP_GATE(0x8052313C, &lit_5144); -#pragma pop - -/* 80523140-80523144 000118 0004+00 0/1 0/0 0/0 .rodata @5145 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5145 = 0x3ECCCCCC; -COMPILER_STRIP_GATE(0x80523140, &lit_5145); -#pragma pop - -/* 80523144-80523148 00011C 0004+00 0/2 0/0 0/0 .rodata @5146 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5146 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x80523144, &lit_5146); -#pragma pop - -/* 80523148-8052314C 000120 0004+00 0/1 0/0 0/0 .rodata @5147 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5147 = 11.0f / 50.0f; -COMPILER_STRIP_GATE(0x80523148, &lit_5147); -#pragma pop - -/* 8052314C-80523150 000124 0004+00 0/1 0/0 0/0 .rodata @5148 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5148 = 162.0f; -COMPILER_STRIP_GATE(0x8052314C, &lit_5148); -#pragma pop - -/* 80523150-80523154 000128 0004+00 0/1 0/0 0/0 .rodata @5149 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5149 = 16.0f / 25.0f; -COMPILER_STRIP_GATE(0x80523150, &lit_5149); -#pragma pop - -/* 80523154-80523158 00012C 0004+00 0/1 0/0 0/0 .rodata @5150 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5150 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80523154, &lit_5150); -#pragma pop - -/* 80523158-8052315C 000130 0004+00 0/1 0/0 0/0 .rodata @5151 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5151 = 3200.0f; -COMPILER_STRIP_GATE(0x80523158, &lit_5151); -#pragma pop - -/* 8052315C-80523160 000134 0004+00 0/1 0/0 0/0 .rodata @5261 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5261 = 900.0f; -COMPILER_STRIP_GATE(0x8052315C, &lit_5261); -#pragma pop - -/* 80523160-80523164 000138 0004+00 0/2 0/0 0/0 .rodata @5262 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5262 = 30.0f; -COMPILER_STRIP_GATE(0x80523160, &lit_5262); -#pragma pop - -/* 80523164-80523168 00013C 0004+00 1/1 0/0 0/0 .rodata @5352 */ -SECTION_RODATA static f32 const lit_5352 = 220.0f; -COMPILER_STRIP_GATE(0x80523164, &lit_5352); - -/* 80523168-8052316C 000140 0004+00 0/1 0/0 0/0 .rodata @5781 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5781 = 180.0f; -COMPILER_STRIP_GATE(0x80523168, &lit_5781); -#pragma pop - -/* 8052316C-80523170 000144 0004+00 0/1 0/0 0/0 .rodata @5782 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5782 = 128.0f; -COMPILER_STRIP_GATE(0x8052316C, &lit_5782); -#pragma pop - -/* 80523170-80523174 000148 0004+00 0/1 0/0 0/0 .rodata @5783 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5783 = 150.0f; -COMPILER_STRIP_GATE(0x80523170, &lit_5783); -#pragma pop - -/* 80523174-80523178 00014C 0004+00 0/1 0/0 0/0 .rodata @5784 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5784 = 80.0f; -COMPILER_STRIP_GATE(0x80523174, &lit_5784); -#pragma pop - -/* 80523178-8052317C 000150 0004+00 1/1 0/0 0/0 .rodata @5839 */ -SECTION_RODATA static f32 const lit_5839 = 60.0f; -COMPILER_STRIP_GATE(0x80523178, &lit_5839); - -/* 8052317C-80523184 000154 0008+00 0/1 0/0 0/0 .rodata @5916 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5916[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8052317C, &lit_5916); -#pragma pop - -/* 80523184-80523188 00015C 0004+00 0/0 0/0 0/0 .rodata @5958 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5958 = 0xFFFFFFFF; -COMPILER_STRIP_GATE(0x80523184, &lit_5958); -#pragma pop - -/* 80523188-80523190 000160 0008+00 0/0 0/0 0/0 .rodata @5961 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5961[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80523188, &lit_5961); -#pragma pop - -/* 80523190-80523194 000168 0004+00 0/0 0/0 0/0 .rodata @6080 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6080 = 0x3D000000; -COMPILER_STRIP_GATE(0x80523190, &lit_6080); -#pragma pop - -/* 80523194-80523198 00016C 0004+00 0/0 0/0 0/0 .rodata @6081 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6081 = -2.0f / 5.0f; -COMPILER_STRIP_GATE(0x80523194, &lit_6081); -#pragma pop - -/* 80523198-8052319C 000170 0004+00 0/0 0/0 0/0 .rodata @6082 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6082 = 6.0f; -COMPILER_STRIP_GATE(0x80523198, &lit_6082); -#pragma pop - -/* 8052319C-805231A0 000174 0004+00 0/1 0/0 0/0 .rodata @6165 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6165 = 1000.0f; -COMPILER_STRIP_GATE(0x8052319C, &lit_6165); -#pragma pop - -/* 805231A0-805231A4 000178 0004+00 0/1 0/0 0/0 .rodata @6166 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6166 = 160.0f; -COMPILER_STRIP_GATE(0x805231A0, &lit_6166); -#pragma pop - -/* 805231A4-805231A8 00017C 0004+00 1/1 0/0 0/0 .rodata @6182 */ -SECTION_RODATA static f32 const lit_6182 = -1000000000.0f; -COMPILER_STRIP_GATE(0x805231A4, &lit_6182); - -/* 805231A8-805231AC 000180 0004+00 1/1 0/0 0/0 .rodata @6262 */ -SECTION_RODATA static f32 const lit_6262 = 7.0f; -COMPILER_STRIP_GATE(0x805231A8, &lit_6262); - -/* 805231AC-805231B0 000184 0004+00 0/1 0/0 0/0 .rodata @6337 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6337 = 31.0f; -COMPILER_STRIP_GATE(0x805231AC, &lit_6337); -#pragma pop +#include "d/actor/d_grass.inc" +#include "d/actor/d_flower.inc" /* 8051BD4C-8051BEFC 0000EC 01B0+00 1/1 0/0 0/0 .text randam_addcol_set__FPs */ static void randam_addcol_set(s16* param_0) { @@ -839,9 +65,8 @@ static void randam_addcol_set(s16* param_0) { *param_0 = ((x) << 5) | (var_r30 & 0x1F); } - /* 8051BEFC-8051BF68 00029C 006C+00 1/1 0/0 0/0 .text createGrass__9daGrass_cFv */ -int daGrass_c::createGrass() { +bool daGrass_c::createGrass() { if (m_grass != NULL) { return 1; } @@ -862,1282 +87,6 @@ void daGrass_c::deleteGrass() { } } -/* ############################################################################################## */ -/* 80528854-80528880 -00001 002C+00 2/1 0/0 0/0 .bss None */ -extern "C" u8 struct_80528854[44]; - -/* 80528880-80528900 -00001 0080+00 2/1 0/0 0/0 .bss None */ -extern "C" u8 struct_80528880[128]; - -/* 80528900-80528914 -00001 0014+00 2/1 0/0 0/0 .bss None */ -extern "C" u8 struct_80528900[20]; - -/* 80528914-80528940 -00001 002C+00 2/1 0/0 0/0 .bss None */ -extern "C" u8 struct_80528914[44]; - -/* 80528940-805289A8 -00001 0068+00 2/1 0/0 0/0 .bss None */ -extern "C" u8 struct_80528940[104]; - -/* 805289A8-805289D2 0010E0 002A+00 2/1 0/0 0/0 .bss l_setType5$localstatic13$create__9daGrass_cFv - */ -extern "C" u8 data_805289A8[42]; - -/* 805231D8-805231E4 000000 000C+00 5/5 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 805231E4-805231F8 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop - -/* 805231F8-805239F8 000020 0800+00 0/1 0/0 0/0 .data l_M_kusa05_RGBATEX */ -const u16 l_M_Hijiki00TEX__width = 31; -const u16 l_M_Hijiki00TEX__height = 31; -#include "assets/l_M_kusa05_RGBATEX.h" // ALIGN 32 - -/* 805239F8-805241F8 000820 0800+00 0/1 0/0 0/0 .data l_M_Hijiki00TEX */ -const u16 l_M_kusa05_RGBATEX__width = 31; -const u16 l_M_kusa05_RGBATEX__height = 31; -#include "assets/l_M_Hijiki00TEX.h" // ALIGN 32 - -/* 805241F8-805245B8 001020 03C0+00 0/1 0/0 0/0 .data l_pos */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_pos[960] = { - 0x3F, 0x4A, 0x56, 0xEF, 0xC2, 0x20, 0x00, 0x00, 0x41, 0xFB, 0x17, 0xE4, 0x41, 0xAA, 0xBB, 0xEA, - 0xC2, 0x20, 0x00, 0x00, 0xC1, 0xB7, 0x03, 0x7A, 0x42, 0x55, 0x8D, 0x6F, 0x43, 0x13, 0x16, 0x3F, - 0xC0, 0xC7, 0x24, 0x07, 0x41, 0xE3, 0xC5, 0x31, 0x43, 0x13, 0x16, 0x3F, 0x42, 0x3A, 0x76, 0x90, - 0xC1, 0xDE, 0xF6, 0x89, 0xC2, 0x20, 0x00, 0x00, 0xC1, 0x4E, 0xFE, 0x02, 0xC2, 0x28, 0x22, 0x86, - 0x43, 0x13, 0x16, 0x3F, 0xC2, 0x07, 0x6E, 0x2C, 0x41, 0x51, 0x51, 0xEE, 0x43, 0x13, 0x16, 0x3F, - 0xC2, 0x54, 0xE3, 0xFA, 0xC1, 0x89, 0xD7, 0x9B, 0x43, 0x13, 0x16, 0x3F, 0x42, 0x47, 0x60, 0x87, - 0xC2, 0x59, 0x1D, 0x0E, 0x43, 0x13, 0x16, 0x3F, 0x40, 0x95, 0x9B, 0x11, 0x3F, 0x3A, 0x78, 0x8E, - 0x43, 0x13, 0x16, 0x3F, 0x41, 0xE0, 0xD9, 0x17, 0xC1, 0xE3, 0x1B, 0x10, 0x43, 0x13, 0x16, 0x3F, - 0x42, 0x5A, 0xDD, 0x48, 0xC1, 0xEE, 0x39, 0x52, 0xC2, 0x20, 0x00, 0x00, 0x41, 0xC4, 0x63, 0x09, - 0x00, 0x00, 0x00, 0x00, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x03, 0x56, 0x8B, - 0xC2, 0x20, 0x00, 0x00, 0x41, 0x08, 0xF1, 0x43, 0x42, 0x14, 0xBE, 0x15, 0x43, 0x13, 0x16, 0x3F, - 0x42, 0x3E, 0x56, 0x15, 0x41, 0x9A, 0x86, 0xFF, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0xA7, 0xC6, 0xC3, - 0x42, 0x6A, 0xD4, 0x7A, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0x97, 0x6D, 0x9D, 0xC1, 0x19, 0xCD, 0xF3, - 0xC2, 0x20, 0x00, 0x00, 0xC2, 0x15, 0xFA, 0x6B, 0x40, 0xF2, 0xA2, 0x21, 0x43, 0x13, 0x16, 0x3F, - 0xC2, 0x72, 0x6C, 0x7F, 0xC1, 0xC9, 0x8C, 0x79, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0x3F, 0xB7, 0x0B, - 0xC2, 0x12, 0xFB, 0xE4, 0x43, 0x13, 0x16, 0x3F, 0xC2, 0x46, 0xC9, 0xEB, 0xC2, 0x69, 0xB2, 0x46, - 0x43, 0x13, 0x16, 0x3F, 0x41, 0x49, 0x97, 0x1C, 0x3E, 0xBA, 0x78, 0x8E, 0x42, 0x0E, 0x6B, 0x09, - 0x41, 0x60, 0xD9, 0x17, 0xC1, 0xE8, 0xAA, 0x31, 0x42, 0x0E, 0x6B, 0x09, 0x42, 0x1E, 0x87, 0x66, - 0xC1, 0xEE, 0x39, 0x52, 0xC1, 0xA0, 0x00, 0x00, 0x41, 0xC4, 0x63, 0x09, 0x00, 0x00, 0x00, 0x00, - 0xC1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x03, 0x56, 0x8B, 0xC1, 0xA0, 0x00, 0x00, - 0x41, 0x08, 0xF1, 0x43, 0x42, 0x0C, 0x0A, 0x50, 0x42, 0x0E, 0x6B, 0x09, 0x41, 0xE0, 0x92, 0x67, - 0x41, 0x1A, 0x86, 0xFF, 0x42, 0x0E, 0x6B, 0x09, 0xC1, 0x27, 0xC6, 0xC3, 0x42, 0x37, 0x15, 0x83, - 0x42, 0x0E, 0x6B, 0x09, 0xC0, 0xA5, 0xE9, 0xF7, 0xC1, 0x19, 0xCD, 0xF3, 0xC1, 0xA0, 0x00, 0x00, - 0xC2, 0x15, 0xFA, 0x6B, 0xBF, 0x81, 0xF3, 0x8C, 0x42, 0x0E, 0x6B, 0x09, 0xC2, 0x44, 0x33, 0x76, - 0xC1, 0x49, 0x8C, 0x7A, 0x42, 0x0E, 0x6B, 0x09, 0xC0, 0xBF, 0xB7, 0x0B, 0xC1, 0xB9, 0x6F, 0x60, - 0x42, 0x0E, 0x6B, 0x09, 0xC2, 0x2E, 0x62, 0x2B, 0xC2, 0x30, 0x67, 0x78, 0x42, 0x0E, 0x6B, 0x09, - 0x41, 0x94, 0x97, 0x4B, 0x3F, 0x4A, 0x56, 0xEF, 0xC1, 0xA0, 0x00, 0x00, 0x41, 0xFB, 0x17, 0xE4, - 0x41, 0xAA, 0xBB, 0xEA, 0xC1, 0xA0, 0x00, 0x00, 0xC1, 0xB7, 0x03, 0x7A, 0x42, 0x15, 0x75, 0xB2, - 0x41, 0xD4, 0xFE, 0xE0, 0xC1, 0x68, 0xCC, 0x7C, 0x41, 0x6A, 0x17, 0xE7, 0x41, 0xD4, 0xFE, 0xE0, - 0x42, 0x1C, 0x01, 0x41, 0xC1, 0xDE, 0xF6, 0x89, 0xC1, 0xA0, 0x00, 0x00, 0xC1, 0x4E, 0xFE, 0x02, - 0xC2, 0x0B, 0xCE, 0xE5, 0x41, 0xD4, 0xFE, 0xE0, 0xC1, 0xBB, 0x2D, 0xAD, 0x41, 0x89, 0xB2, 0x71, - 0x41, 0xD4, 0xFE, 0xE0, 0xC2, 0x18, 0x32, 0xDB, 0xC1, 0x03, 0x84, 0xE4, 0x41, 0xD4, 0xFE, 0xE0, - 0x42, 0x22, 0x76, 0x3C, 0xC2, 0x24, 0x4C, 0x29, 0x41, 0xD4, 0xFE, 0xE0, 0xC0, 0x84, 0x30, 0x7B, - 0x41, 0x47, 0x75, 0x1E, 0x43, 0x9F, 0x77, 0x6C, 0x42, 0xE0, 0x3F, 0xC6, 0x41, 0x8A, 0x76, 0x75, - 0xC2, 0x05, 0x2D, 0xB7, 0xC1, 0xCF, 0xDC, 0xAC, 0xC1, 0x8C, 0x34, 0xB2, 0xC2, 0x3A, 0xD2, 0x49, - 0x40, 0xA1, 0xFC, 0xF0, 0x43, 0x07, 0x5C, 0xA5, 0x43, 0x37, 0x70, 0xEE, 0x42, 0x80, 0x8E, 0x59, - 0x40, 0xAF, 0x73, 0x3F, 0x40, 0x5B, 0xFC, 0x44, 0x41, 0xA2, 0xC5, 0x58, 0xBE, 0x8F, 0xF1, 0x0F, - 0x41, 0xD6, 0xD6, 0xFB, 0xC0, 0xFF, 0xAA, 0x6F, 0x42, 0x47, 0x87, 0xFB, 0x43, 0x71, 0x58, 0x6A, - 0xC2, 0x6A, 0x7B, 0x21, 0x41, 0x79, 0x6D, 0x34, 0x42, 0x7D, 0x14, 0x66, 0x41, 0xC5, 0x98, 0xA7, - 0xC1, 0x3D, 0x22, 0x18, 0x42, 0x94, 0x1C, 0x80, 0x41, 0xF6, 0xE0, 0x36, 0x42, 0xDF, 0xB0, 0x65, - 0x43, 0xA2, 0xC0, 0xAF, 0xC1, 0x24, 0x3C, 0xD0, 0xC1, 0xD2, 0x1A, 0x2E, 0xC1, 0xD5, 0xC7, 0x38, - 0xC1, 0x71, 0xB4, 0x9D, 0x40, 0x99, 0x06, 0xE6, 0xC2, 0x20, 0x88, 0x2D, 0x41, 0x9D, 0xD0, 0xD9, - 0x41, 0xBB, 0x21, 0x46, 0x43, 0x39, 0xA7, 0xB9, 0xC3, 0x11, 0x8D, 0x20, 0x41, 0x8D, 0xE2, 0x64, - 0x40, 0xB4, 0xD7, 0xAE, 0xC0, 0xDD, 0x14, 0x64, 0xC1, 0x02, 0x49, 0xD6, 0x41, 0xE8, 0x8D, 0x5E, - 0x40, 0xBF, 0xC4, 0x15, 0xC1, 0xD9, 0x0C, 0xDC, 0x43, 0x68, 0x5A, 0x22, 0xC2, 0x4F, 0xE7, 0x5E, - 0x41, 0x82, 0x49, 0x5F, 0x42, 0x5A, 0x19, 0xB6, 0xC1, 0x89, 0xC1, 0xA5, 0x41, 0xB3, 0x90, 0xED, - 0x42, 0x82, 0x9F, 0x28, 0x41, 0x23, 0x0C, 0x02, 0xC1, 0x8D, 0x1C, 0xF7, 0x43, 0x9F, 0x77, 0x6C, - 0xC2, 0xE5, 0xDF, 0x4C, 0xC1, 0xB3, 0xD8, 0xDD, 0xC2, 0x05, 0x2D, 0xB7, 0x41, 0xB9, 0x5E, 0x95, - 0x41, 0x45, 0xA4, 0x94, 0xC2, 0x3A, 0xD2, 0x49, 0xC0, 0xFB, 0xF5, 0x4D, 0xC3, 0x16, 0x18, 0x11, - 0x43, 0x39, 0xA7, 0xB9, 0xC2, 0x07, 0x6F, 0xB1, 0xC1, 0x71, 0x27, 0xE6, 0x40, 0xB4, 0xD7, 0xAE, - 0xC1, 0xAE, 0x78, 0x69, 0xC0, 0x0A, 0xEE, 0xAA, 0x41, 0xE8, 0x8D, 0x5E, 0x40, 0x82, 0x3B, 0x99, - 0xC2, 0x33, 0x95, 0x59, 0x43, 0x5F, 0x75, 0x5E, 0x3D, 0xF4, 0x6A, 0x1A, 0xC1, 0x9E, 0xD4, 0x98, - 0x42, 0x7D, 0x14, 0x66, 0xC1, 0xDD, 0xD4, 0x93, 0x40, 0xF1, 0xCC, 0x38, 0x42, 0x94, 0x1C, 0x80, - 0xC2, 0x07, 0x8E, 0x11, 0xC2, 0xE0, 0xEF, 0x0C, 0x43, 0xA0, 0x12, 0xC6, 0xC1, 0x91, 0xCE, 0x9E, - 0x41, 0x9D, 0x73, 0x77, 0xC2, 0x00, 0x52, 0xDD, 0x41, 0xB1, 0x90, 0xD0, 0xBF, 0xA5, 0x21, 0x04, - 0xC2, 0x35, 0xF7, 0x70, 0xC1, 0x9B, 0xE3, 0x38, 0xC2, 0x84, 0xB6, 0xB8, 0x43, 0x43, 0x0C, 0x16, - 0x42, 0xFA, 0x80, 0xC7, 0xC1, 0xCC, 0x7C, 0xFD, 0x41, 0x7A, 0x99, 0xDC, 0x40, 0x0F, 0xBE, 0x34, - 0x40, 0x31, 0x97, 0xA6, 0x42, 0x1C, 0x52, 0x30, 0xC0, 0x61, 0x26, 0x39, 0x42, 0x41, 0xBD, 0x21, - 0x43, 0x72, 0x8F, 0x21, 0x42, 0x23, 0xF4, 0x30, 0xC1, 0xE5, 0xEB, 0x07, 0x42, 0x80, 0xF7, 0x9F, - 0x40, 0xD8, 0x8F, 0xF3, 0xC1, 0xDC, 0xC3, 0xBB, 0x42, 0x96, 0x89, 0xEC, 0xC1, 0xAA, 0x6C, 0x09, -}; -#pragma pop - -/* 805245B8-805245C4 0013E0 000C+00 0/1 0/0 0/0 .data l_normal */ -#pragma push -#pragma force_active on -SECTION_DATA static Vec l_normal = {0.0f, 1.0f, 0.0f}; -#pragma pop - -/* 805245C4-805245D8 0013EC 0014+00 0/1 0/0 0/0 .data l_color */ -#pragma push -#pragma force_active on -SECTION_DATA static GXColor l_color[] = { - {0xFF, 0xFF, 0xFF, 0x00}, {0xFF, 0xFF, 0xFF, 0x80}, {0xFF, 0xFF, 0xFF, 0x79}, - {0xFF, 0xFF, 0xFF, 0x73}, {0xFF, 0xFF, 0xFF, 0xFF}, -}; -#pragma pop - -/* 805245D8-80524678 001400 00A0+00 0/1 0/0 0/0 .data l_texCoord */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_texCoord[160] = { - 0x3F, 0x86, 0xF6, 0x27, 0x3F, 0x9C, 0x00, 0x00, 0x40, 0x03, 0x7B, 0x14, 0x3F, 0x9C, 0x00, 0x00, - 0x40, 0x03, 0x7B, 0x14, 0x3D, 0x00, 0x00, 0x00, 0x3F, 0x86, 0xF6, 0x27, 0x3D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, - 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, 0xBF, 0x80, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, - 0x3F, 0x80, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, 0x40, 0x03, 0x7B, 0x14, 0x3E, 0xC4, 0xF3, 0xBA, - 0x3F, 0x86, 0xF6, 0x27, 0x3E, 0xC4, 0xF3, 0xBA, 0x3E, 0xF0, 0x00, 0x00, 0xBF, 0xDC, 0x00, 0x00, - 0x3F, 0x94, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, 0xBD, 0xC0, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, - 0x3F, 0x94, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBD, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, -}; -#pragma pop - -/* 80524678-80524758 0014A0 00CB+15 0/1 0/0 0/0 .data l_M_Kusa_9qDL */ -#include "assets/l_M_Kusa_9qDL.h" // ALIGN 32 - -/* 80524758-80524838 001580 00CB+15 0/1 0/0 0/0 .data l_M_Kusa_9q_cDL */ -#include "assets/l_M_Kusa_9q_cDL.h" // ALIGN 32 - -/* 80524838-80524918 001660 00D4+0C 0/1 0/0 0/0 .data l_M_TenGusaDL */ -#include "assets/l_M_TenGusaDL.h" // ALIGN 32 - -/* 80524918-805249D8 001740 00A8+18 0/2 0/0 0/0 .data l_Tengusa_matDL */ -#include "assets/l_Tengusa_matDL.h" -l_Tengusa_matDL(l_M_Hijiki00TEX) - -/* 805249D8-80524A98 001800 00A8+18 0/2 0/0 0/0 .data l_kusa9q_matDL */ -#include "assets/l_kusa9q_matDL.h" -l_kusa9q_matDL(l_M_kusa05_RGBATEX) - -/* 80524A98-80524B40 0018C0 00A8+00 0/2 0/0 0/0 .data l_kusa9q_l4_matDL */ -#include "assets/l_kusa9q_l4_matDL.h" -l_kusa9q_l4_matDL(l_M_kusa05_RGBATEX) - -/* 80524B40-80524B4C -00001 000C+00 0/1 0/0 0/0 .data @4620 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4620[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)deleteRoom__15dGrass_packet_cFi, -}; -#pragma pop - -/* 80524B4C-80524B74 001974 0028+00 0/1 0/0 0/0 .data l_vtxDescList$4654 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_vtxDescList[40] = { - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 80524B74-80524BD8 00199C 0050+14 0/1 0/0 0/0 .data l_vtxAttrFmtList$4655 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_vtxAttrFmtList[80] = { - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 80524BD8-805253D8 001A00 0800+00 0/1 0/0 0/0 .data l_J_Ohana00_64TEX */ -const u16 l_J_Ohana00_64TEX__width = 63; -const u16 l_J_Ohana00_64TEX__height = 63; -#include "assets/l_J_Ohana00_64TEX.h" // ALIGN 32 - -/* 805253D8-8052569C 002200 02C4+00 0/1 0/0 0/0 .data l_flowerPos */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerPos[708] = { - 0xC0, 0x8C, 0x2C, 0xF7, 0x42, 0x05, 0xBC, 0xDF, 0xC1, 0xA1, 0x00, 0x70, 0xBF, 0x50, 0x51, 0xB9, - 0x42, 0x12, 0x58, 0xAD, 0xC0, 0xDE, 0xCE, 0x40, 0xC1, 0x04, 0x67, 0x23, 0x41, 0xE5, 0x87, 0x25, - 0xC1, 0x1B, 0xF3, 0xF8, 0xC1, 0x8F, 0x17, 0x3E, 0x42, 0x05, 0x7F, 0xC6, 0xC1, 0x83, 0x9B, 0xFC, - 0xC1, 0x65, 0x1D, 0x1B, 0x42, 0x12, 0x1B, 0x94, 0xC0, 0x52, 0x78, 0xE2, 0x41, 0x4A, 0xF2, 0x65, - 0x41, 0xB8, 0x6D, 0xEC, 0xC1, 0x05, 0xB8, 0xB9, 0x41, 0x59, 0xA0, 0x35, 0x41, 0xC8, 0x8E, 0xEA, - 0x3F, 0xD7, 0x00, 0xBD, 0x40, 0xFD, 0x20, 0x08, 0x41, 0xA5, 0x7C, 0x50, 0xC0, 0x1A, 0x58, 0x21, - 0x40, 0x45, 0x4A, 0xF1, 0x41, 0xD5, 0xC3, 0x79, 0xC1, 0x03, 0x76, 0xC0, 0x40, 0x80, 0x01, 0x19, - 0x41, 0xE5, 0xE4, 0x79, 0x3F, 0xE9, 0x10, 0x80, 0xC0, 0xC5, 0xE3, 0xA8, 0x41, 0x8D, 0x10, 0xEF, - 0x41, 0x5D, 0x5E, 0x8F, 0xC1, 0x83, 0x4F, 0x3A, 0x41, 0x95, 0x37, 0x4A, 0x41, 0x13, 0xAB, 0xB0, - 0xC1, 0x0B, 0x2F, 0x13, 0x41, 0x82, 0x79, 0x28, 0x40, 0xBC, 0x27, 0x0F, 0xBF, 0xE5, 0x81, 0x9D, - 0x41, 0xBD, 0xAD, 0xB1, 0x40, 0xAD, 0xAF, 0x4F, 0xC1, 0x40, 0x5C, 0xAB, 0x41, 0xC5, 0xD4, 0x0B, - 0x3F, 0x52, 0x4A, 0x06, 0xC1, 0x92, 0x9C, 0x90, 0x41, 0x6B, 0x5E, 0x96, 0xC1, 0x70, 0xB5, 0x34, - 0x40, 0x09, 0xC7, 0xFC, 0x41, 0xA1, 0xD1, 0xA9, 0xC1, 0x99, 0xED, 0xD6, 0x40, 0x93, 0x3C, 0x3E, - 0x41, 0x91, 0x1A, 0x4B, 0xC0, 0xFD, 0x15, 0x96, 0xC1, 0x7E, 0x0D, 0x00, 0x41, 0x49, 0xEF, 0xDC, - 0xC0, 0x6D, 0x90, 0xAC, 0x40, 0x51, 0xDE, 0xF0, 0x40, 0x89, 0x1C, 0x93, 0xBE, 0xF1, 0xC4, 0x11, - 0xC1, 0x70, 0xB0, 0x8B, 0x40, 0xFE, 0x20, 0x45, 0x41, 0x30, 0xC6, 0x50, 0xC1, 0xA1, 0x7C, 0x11, - 0x41, 0x24, 0xCB, 0xE5, 0x3F, 0xE9, 0xDE, 0xBE, 0xBF, 0xEE, 0x7E, 0xD8, 0x40, 0xD4, 0x94, 0x18, - 0xC1, 0x1B, 0x18, 0xC1, 0xC1, 0x84, 0x20, 0x71, 0x40, 0xF3, 0x8A, 0x69, 0x40, 0x98, 0xEA, 0x1F, - 0x40, 0x97, 0xB4, 0x48, 0x41, 0x51, 0xF6, 0x25, 0x40, 0xA6, 0xAE, 0x30, 0x40, 0x5F, 0xA7, 0xB1, - 0x41, 0x89, 0x17, 0x78, 0x41, 0x75, 0xAC, 0x70, 0xC1, 0x8E, 0x18, 0x8E, 0x41, 0x39, 0xFE, 0x02, - 0x41, 0x6E, 0xCA, 0x67, 0x40, 0x9E, 0x6A, 0x68, 0x41, 0x10, 0x81, 0x11, 0x41, 0x1B, 0x6F, 0x7F, - 0x40, 0xAD, 0x4B, 0x29, 0x41, 0x3B, 0x3A, 0x41, 0xC1, 0x41, 0x4C, 0x98, 0x41, 0x7E, 0x28, 0x15, - 0x41, 0x6F, 0x56, 0x2E, 0xC1, 0x37, 0x57, 0x88, 0x41, 0x76, 0xB7, 0xB5, 0x41, 0x44, 0x9C, 0xFE, - 0x41, 0x25, 0x64, 0x90, 0x40, 0xE2, 0xFC, 0xE5, 0x41, 0xA7, 0xF4, 0x9C, 0xBF, 0xE7, 0xAE, 0x14, - 0x41, 0x0A, 0x36, 0x26, 0x41, 0xA4, 0x39, 0xDE, 0xC0, 0x24, 0xAB, 0x93, 0xBB, 0xF0, 0x06, 0x8E, - 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x16, 0x81, 0x13, 0xBD, 0x88, 0xA2, 0x66, 0xC1, 0x20, 0x00, 0x00, - 0x3F, 0x1D, 0xDC, 0x0E, 0x40, 0xF1, 0x74, 0x95, 0x41, 0xA6, 0x44, 0xA9, 0xC0, 0x36, 0xA5, 0x59, - 0x41, 0x02, 0xFB, 0x9C, 0x41, 0xA5, 0xE9, 0xDA, 0xBF, 0xC3, 0xB5, 0x4A, 0xBC, 0xD0, 0x6B, 0xBE, - 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x20, 0x46, 0x20, 0xBD, 0x47, 0x89, 0x61, 0xC1, 0x1F, 0xFF, 0xFF, - 0x3F, 0x14, 0x35, 0xDF, 0xC0, 0xFA, 0x9D, 0xC7, 0x41, 0x85, 0xC1, 0xB7, 0x40, 0xAA, 0xE7, 0x6F, - 0xC1, 0x10, 0x29, 0xEB, 0x41, 0x80, 0x9F, 0x20, 0x40, 0xD0, 0x7A, 0xD1, 0x3E, 0xC2, 0x2B, 0x7C, - 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x29, 0xC0, 0x01, 0x3F, 0x38, 0x85, 0x7F, 0xC1, 0x1F, 0xFF, 0xFF, - 0x3E, 0xAF, 0xF4, 0x56, 0xC0, 0xFD, 0x71, 0xD8, 0x41, 0x83, 0xAB, 0x96, 0x40, 0xCE, 0xD3, 0xB1, - 0xC1, 0x0E, 0xBE, 0xA4, 0x41, 0x82, 0xB5, 0x43, 0x40, 0xAC, 0x90, 0x1F, 0x3E, 0xD9, 0x21, 0x68, - 0xC1, 0x20, 0x00, 0x00, 0x3E, 0xBF, 0x6C, 0x48, 0x3F, 0x2D, 0xCF, 0xBC, 0xC1, 0x20, 0x00, 0x00, - 0x3F, 0x21, 0x31, 0x44, 0xC0, 0xF8, 0xE0, 0x22, 0x41, 0xE8, 0x4B, 0x4B, 0xC1, 0x14, 0x36, 0x1F, - 0xC1, 0x0C, 0x7F, 0xA6, 0x41, 0xE4, 0x93, 0x45, 0xC1, 0x24, 0x12, 0xDA, 0xC0, 0x01, 0x25, 0x39, - 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB5, 0xEB, 0x3A, 0xBF, 0xF6, 0x43, 0x3D, 0xC1, 0x1F, 0xFF, 0xFE, - 0x3F, 0xC2, 0x77, 0x2D, 0xC1, 0x0B, 0x64, 0x82, 0x41, 0xE6, 0x84, 0x99, 0xC1, 0x15, 0x34, 0xD0, - 0xC0, 0xFB, 0x14, 0x70, 0x41, 0xE6, 0x5A, 0x05, 0xC1, 0x23, 0x13, 0xB7, 0xBF, 0xF7, 0x6B, 0x09, - 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB7, 0x60, 0x63, 0xC0, 0x00, 0x83, 0x99, 0xC1, 0x20, 0x00, 0x01, - 0x3F, 0xC1, 0x1A, 0x97, 0xC0, 0xCA, 0x0C, 0x4E, 0x41, 0x9A, 0x38, 0x78, 0xC0, 0xD2, 0x29, 0xBB, - 0xC0, 0xE2, 0xE4, 0x1F, 0x41, 0x97, 0x6E, 0x73, 0xC0, 0xEA, 0xBD, 0x92, 0xC0, 0xE1, 0x27, 0x37, - 0x41, 0x98, 0xE3, 0x73, 0xC0, 0xD3, 0xBD, 0x8E, 0xC0, 0xCB, 0xC6, 0x04, 0x41, 0x98, 0xC3, 0x84, - 0xC0, 0xE9, 0x27, 0x8D, -}; -#pragma pop - -/* 8052569C-80525750 0024C4 00B4+00 0/1 0/0 0/0 .data l_flowerNormal */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerNormal[180] = { - 0x3C, 0x8D, 0x2C, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x46, 0xF7, 0xA1, 0x3C, 0x76, 0x83, - 0x7F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x12, 0x5F, 0xE9, 0xBB, 0xE5, 0xA3, 0x5D, 0x3F, 0x7F, - 0xF5, 0xF9, 0x3C, 0x83, 0x57, 0xA3, 0x3B, 0xF9, 0xB1, 0x31, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, - 0x81, 0x0A, 0x57, 0xBC, 0x80, 0x86, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xE2, 0xEF, - 0xBC, 0x43, 0xEB, 0x7D, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x4E, 0x3C, 0x3C, 0x4B, 0x2D, - 0x90, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x4A, 0x42, 0xAF, 0x3C, 0x4F, 0x0B, 0x6B, 0x3F, 0x7F, - 0xF5, 0xF9, 0xBC, 0x46, 0x4B, 0xA9, 0x3C, 0x4B, 0xF2, 0xB2, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, - 0x49, 0x7D, 0x8D, 0x3C, 0x8D, 0x2A, 0x20, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x47, 0x5C, 0x4B, - 0xBC, 0x80, 0x84, 0x1F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xF3, 0xB6, 0xBC, 0x43, 0xFC, - 0x44, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x3D, 0x75, 0x3C, 0x4B, 0x3E, 0x57, 0x3F, 0x7F, - 0xF5, 0xF9, 0xBC, 0x4A, 0x31, 0xE8, 0x3C, 0x4F, 0x07, 0x3A, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, - 0x46, 0x54, 0x0D, 0x3C, 0x4B, 0xEE, 0x80, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x49, 0x81, 0xBF, -}; -#pragma pop - -/* 80525750-80525758 002578 0008+00 0/1 0/0 0/0 .data l_flowerColor */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerColor[8] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xB2, 0xB2, 0xFF, -}; -#pragma pop - -/* 80525758-80525898 002580 0138+08 0/1 0/0 0/0 .data l_flowerTexCoord */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerTexCoord[] = { - 0x40, 0x40, 0xD0, 0xEA, 0x3D, 0x69, 0x70, 0x72, 0x40, 0x7D, 0xD8, 0x30, 0x3F, 0x81, 0x3D, 0xC9, - 0x40, 0x40, 0xCE, 0x85, 0x3F, 0x81, 0x3D, 0xC9, 0x40, 0x01, 0xDD, 0x33, 0x3F, 0x81, 0x3D, 0xC9, - 0x40, 0x40, 0xD0, 0xEA, 0x3F, 0xF9, 0x46, 0xD4, 0x40, 0x00, 0xCD, 0xB8, 0xBF, 0x7F, 0xD4, 0x39, - 0x40, 0x40, 0xC2, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0xC8, 0x3F, 0x3E, 0xFF, 0xD4, 0x39, - 0x3F, 0xC1, 0xA6, 0x61, 0xBE, 0xFF, 0xD4, 0x39, 0x40, 0x00, 0xCD, 0xB8, 0x3F, 0x7F, 0xD4, 0x39, - 0x3F, 0x81, 0xB1, 0x53, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x49, 0x75, 0x29, 0xBD, 0xFA, 0x4F, 0x87, - 0x3C, 0x54, 0x88, 0x83, 0xBD, 0xFA, 0x4F, 0x87, 0x3C, 0xF8, 0x85, 0x4D, 0xBF, 0x27, 0x85, 0x40, - 0x3D, 0x01, 0x8D, 0x69, 0xBF, 0x27, 0x98, 0x20, 0xBD, 0x44, 0x30, 0xB1, 0xBD, 0xFC, 0xC3, 0xA0, - 0xBB, 0xEE, 0x06, 0xD9, 0xBD, 0xFC, 0xC3, 0xA0, 0xBC, 0xF4, 0x1F, 0x21, 0xBF, 0x27, 0x90, 0xA8, - 0xBD, 0x00, 0x00, 0x00, 0xBF, 0x27, 0x92, 0x7D, 0xBE, 0x03, 0x5A, 0x86, 0xBD, 0x67, 0x4C, 0x0A, - 0xBE, 0x03, 0x5A, 0x86, 0xBC, 0x82, 0xCD, 0x3A, 0xBF, 0x25, 0x30, 0x59, 0xBD, 0x06, 0x8E, 0xC5, - 0xBF, 0x25, 0xFA, 0x66, 0xBD, 0x2F, 0x2B, 0x67, 0xBE, 0x03, 0x59, 0x79, 0x3D, 0x40, 0x8E, 0x9B, - 0xBE, 0x03, 0x59, 0x79, 0x3B, 0xAF, 0xE6, 0x0C, 0xBF, 0x25, 0xB3, 0x4A, 0x3C, 0x9E, 0x81, 0xCB, - 0xBF, 0x25, 0xD9, 0x3C, 0x3C, 0xF1, 0xE6, 0xCD, 0x3E, 0x1C, 0xD0, 0x78, 0x3D, 0x36, 0xDC, 0xA0, - 0x3E, 0x1C, 0xD0, 0x78, 0x3B, 0x48, 0x68, 0xBA, 0x3F, 0x59, 0x32, 0x61, 0x3C, 0xDD, 0x5F, 0x57, - 0x3F, 0x59, 0x61, 0xF6, 0x3C, 0xFB, 0x13, 0x9D, 0x3E, 0x1C, 0xD0, 0x78, 0xBB, 0xEB, 0xED, 0xFA, - 0x3E, 0x1C, 0xD0, 0x78, 0xBD, 0x47, 0xD3, 0xD4, 0x3F, 0x59, 0x49, 0x41, 0xBC, 0xCB, 0x3E, 0x57, - 0x3F, 0x59, 0x4B, 0x6A, 0xBC, 0xAD, 0x94, 0x8E, 0x3E, 0xA7, 0x7F, 0x28, 0x3D, 0x28, 0x87, 0xA9, - 0x3E, 0xA7, 0x67, 0x4D, 0x3C, 0x14, 0x46, 0x74, 0x3E, 0xA7, 0x73, 0xE2, 0xBC, 0x2F, 0x46, 0xAA, - 0x3E, 0xA7, 0x72, 0xD6, 0xBD, 0x2F, 0x46, 0xAA}; -#pragma pop - -/* 80525898-805259F8 0026C0 0150+10 0/1 0/0 0/0 .data l_J_hana00DL */ -#include "assets/l_J_hana00DL.h" // ALIGN 32 - -/* 805259F8-80525AD8 002820 00DE+02 0/1 0/0 0/0 .data l_J_hana00_cDL */ -#include "assets/l_J_hana00_cDL.h" // ALIGN 32 - -/* 80525AD8-80525B78 002900 0099+07 0/2 0/0 0/0 .data l_matDL */ -#include "assets/l_matDL__d_a_grass.h" -l_matDL__d_a_grass(l_J_Ohana00_64TEX) - -/* 80525B78-80525C18 0029A0 0099+07 0/2 0/0 0/0 .data l_matLight4DL */ -#include "assets/l_matLight4DL.h" -l_matLight4DL(l_J_Ohana00_64TEX) - -/* 80525C18-80526C18 002A40 1000+00 0/1 0/0 0/0 .data l_J_Ohana01_64128_0419TEX */ -const u16 l_J_Ohana01_64128_0419TEX__width = 63; -const u16 l_J_Ohana01_64128_0419TEX__height = 127; -#include "assets/l_J_Ohana01_64128_0419TEX.h" // ALIGN 32 - -/* 80526C18-805270E0 003A40 04C8+00 0/1 0/0 0/0 .data l_flowerPos2 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerPos2[1224] = { - 0x40, 0x25, 0x9F, 0x34, 0x42, 0xC2, 0x95, 0x72, 0xC1, 0x22, 0x34, 0x78, 0x41, 0x4D, 0xF9, 0x63, - 0x43, 0x09, 0x35, 0x0D, 0x40, 0x97, 0xD7, 0x54, 0x41, 0x76, 0x80, 0x55, 0x42, 0xBA, 0x1C, 0xB4, - 0x41, 0x91, 0x3E, 0x0D, 0xC0, 0x99, 0x8D, 0x47, 0x42, 0xC2, 0x8D, 0xF5, 0x41, 0x12, 0xA1, 0x12, - 0x41, 0xB9, 0x1A, 0xFF, 0x42, 0xBA, 0x37, 0xE3, 0xBF, 0xBD, 0xD2, 0xA6, 0x41, 0x4D, 0xF9, 0x34, - 0x43, 0x09, 0x35, 0x0F, 0x40, 0x97, 0xD6, 0xB6, 0xC1, 0x07, 0x14, 0xD0, 0x42, 0xCC, 0x9E, 0xFD, - 0xC1, 0x42, 0x39, 0x8F, 0xC0, 0xC1, 0xA4, 0x94, 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0xE2, - 0x40, 0x32, 0xFE, 0x8B, 0x42, 0xC7, 0x29, 0xAC, 0x41, 0x9E, 0x0C, 0xC8, 0xC0, 0xC1, 0xA4, 0xE1, - 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0x8E, 0xC1, 0x95, 0xAF, 0x93, 0x42, 0xC4, 0x31, 0xF1, - 0x41, 0x1A, 0xB9, 0x87, 0x41, 0x51, 0x09, 0xAB, 0x42, 0xCF, 0x96, 0xC1, 0xC0, 0x03, 0x66, 0x1F, - 0xC1, 0x01, 0x95, 0x6E, 0x42, 0xB3, 0x6A, 0x42, 0xC1, 0x8B, 0x4C, 0x1D, 0xC0, 0xD4, 0xA5, 0x9C, - 0x42, 0xFE, 0x7B, 0x90, 0xC1, 0x0A, 0x4F, 0x99, 0x40, 0x1C, 0xE1, 0x15, 0x42, 0xC2, 0x2D, 0x47, - 0x41, 0x06, 0xA6, 0x41, 0xC1, 0x7B, 0x73, 0x6E, 0x42, 0xB8, 0x6D, 0x93, 0x3F, 0x5A, 0xCC, 0xA3, - 0x41, 0x21, 0x15, 0xF4, 0x42, 0xBD, 0x29, 0xFE, 0xC1, 0x1D, 0x9F, 0x3A, 0xC0, 0xD4, 0xA5, 0xEC, - 0x42, 0xFE, 0x7B, 0x93, 0xC1, 0x0A, 0x4F, 0xE9, 0x41, 0x06, 0x70, 0xFC, 0x42, 0xC4, 0x24, 0x9D, - 0x40, 0x7C, 0x3E, 0xE6, 0x41, 0x24, 0x1D, 0x91, 0x42, 0xC3, 0xD6, 0x8C, 0x40, 0x7C, 0x3E, 0xE6, - 0x3F, 0xEA, 0x26, 0xBB, 0xC1, 0x20, 0x00, 0x00, 0x3E, 0x25, 0x61, 0x91, 0xBF, 0x8B, 0x0E, 0xC3, - 0xC1, 0x20, 0x00, 0x01, 0x3E, 0x1C, 0xD6, 0x80, 0x41, 0x15, 0x52, 0x2B, 0x42, 0xC4, 0x0E, 0x24, - 0x40, 0x40, 0xBB, 0xC3, 0x41, 0x15, 0x3C, 0x61, 0x42, 0xC3, 0xED, 0x00, 0x40, 0x9B, 0xE1, 0x05, - 0x3E, 0xBE, 0xC3, 0xFC, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xCE, 0x28, 0xBB, 0x3E, 0xBE, 0xBA, 0x6B, - 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0xA5, 0xFF, 0xCE, 0xC0, 0x6B, 0x3A, 0x75, 0x42, 0xC1, 0x3D, 0x51, - 0xC0, 0xA0, 0xCD, 0x8E, 0xBF, 0xDC, 0xEC, 0x63, 0x42, 0xC1, 0x54, 0xB6, 0xC0, 0xA0, 0x6C, 0x42, - 0x3F, 0x88, 0xCC, 0x2D, 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0x24, 0x6B, 0xBE, 0xBF, 0xC0, 0xE6, 0x08, - 0xC1, 0x20, 0x00, 0x01, 0xBF, 0x29, 0x08, 0x81, 0xC0, 0x2C, 0x6A, 0x66, 0x42, 0xC1, 0x36, 0x4D, - 0xC0, 0xBF, 0xC9, 0xD6, 0xC0, 0x2D, 0x46, 0x30, 0x42, 0xC1, 0x5B, 0xB5, 0xC0, 0x81, 0x6F, 0xF4, - 0xBE, 0x68, 0x6B, 0xDF, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x23, 0x29, 0xD4, 0xBE, 0x58, 0xD0, 0xCC, - 0xC1, 0x20, 0x00, 0x01, 0xBF, 0xF8, 0x39, 0x71, 0xC0, 0x79, 0x82, 0x0E, 0x42, 0xD0, 0x8E, 0xE6, - 0x40, 0x7C, 0x3E, 0xE6, 0xC0, 0x00, 0x2E, 0x23, 0x42, 0xD0, 0xA5, 0xB2, 0x40, 0x7C, 0x3E, 0xE6, - 0x3F, 0x2F, 0x08, 0x57, 0xC1, 0x1F, 0x8E, 0x06, 0xBB, 0xAE, 0xF2, 0xC7, 0xBF, 0xD7, 0xC7, 0x1D, - 0xC1, 0x20, 0x71, 0xFC, 0xBB, 0xAE, 0xF2, 0xC7, 0xC0, 0x3C, 0xE3, 0xDE, 0x42, 0xD0, 0xAB, 0x13, - 0x40, 0x3F, 0x99, 0x18, 0xC0, 0x3C, 0xCC, 0x57, 0x42, 0xD0, 0x89, 0x86, 0x40, 0x9C, 0x72, 0x58, - 0xBF, 0x00, 0x08, 0x31, 0xC1, 0x20, 0xA7, 0xBD, 0x3F, 0x96, 0xEC, 0x4A, 0xBF, 0x00, 0x7D, 0xB3, - 0xC1, 0x1F, 0x58, 0x45, 0xBF, 0x98, 0x4A, 0x30, 0x40, 0xBD, 0x8F, 0x9B, 0x42, 0x63, 0xF3, 0x30, - 0x40, 0x23, 0x56, 0x11, 0x41, 0x65, 0x2F, 0xC6, 0x42, 0xBB, 0x00, 0xB1, 0xC1, 0x8C, 0x12, 0x7A, - 0x41, 0xCA, 0x62, 0xA7, 0x42, 0xBB, 0x00, 0xB0, 0x41, 0x28, 0xB1, 0x15, 0xC1, 0x5B, 0xA6, 0x8E, - 0x42, 0xBB, 0x00, 0xAE, 0xC0, 0xD1, 0x1E, 0x86, 0xC0, 0x30, 0x44, 0xBF, 0x42, 0xBB, 0x00, 0xAD, - 0x41, 0xAC, 0x23, 0x4E, 0xBF, 0xAD, 0xFA, 0x8F, 0x41, 0xB0, 0x93, 0x1B, 0x3F, 0x85, 0x39, 0x9F, - 0x41, 0x9F, 0x2B, 0xD3, 0x42, 0x90, 0x9F, 0x64, 0xC1, 0x8A, 0x85, 0x5E, 0x41, 0x7B, 0x1C, 0x3E, - 0x42, 0x90, 0x9F, 0x63, 0x41, 0xA7, 0xF3, 0x96, 0xC1, 0x13, 0xCB, 0x32, 0x42, 0x90, 0x9F, 0x65, - 0xC1, 0x92, 0x20, 0x52, 0xC1, 0x7F, 0xDB, 0xED, 0x42, 0x90, 0x9F, 0x65, 0x41, 0x46, 0xD3, 0x80, - 0xBF, 0x24, 0xCA, 0xC5, 0x42, 0x44, 0xF1, 0x22, 0xC0, 0x3B, 0xEA, 0xC4, 0xC0, 0x35, 0x33, 0xCE, - 0x42, 0x44, 0xDE, 0xC0, 0xC0, 0x3C, 0xDA, 0x27, 0xBF, 0xDF, 0x4A, 0x77, 0x42, 0x44, 0xF6, 0xA3, - 0xBF, 0xEC, 0xBC, 0x8C, 0xBF, 0xDD, 0x8A, 0x1A, 0x42, 0x44, 0xD9, 0x3D, 0xC0, 0x81, 0x30, 0x55, - 0xBF, 0x4A, 0x36, 0xF4, 0x42, 0x56, 0x1A, 0x91, 0x40, 0x0B, 0xFC, 0x11, 0xC0, 0x3B, 0xC6, 0x93, - 0x42, 0x55, 0xE6, 0xFE, 0x40, 0x0B, 0xFC, 0x0D, 0xBF, 0xEE, 0x39, 0xBD, 0x42, 0x55, 0xDA, 0xD7, - 0x40, 0x50, 0x93, 0xC4, 0xBF, 0xEE, 0x6E, 0xEB, 0x42, 0x56, 0x26, 0xB9, 0x3F, 0x8E, 0xC8, 0xB4, - 0x40, 0xBF, 0xC7, 0x22, 0x42, 0x8E, 0x14, 0xBA, 0x40, 0x3F, 0x9A, 0x4E, 0x41, 0x03, 0x00, 0x18, - 0x42, 0x8D, 0xE7, 0xA4, 0x40, 0x3F, 0xCE, 0xF6, 0x40, 0xE2, 0xF3, 0x95, 0x42, 0x8E, 0x07, 0xC0, - 0x3F, 0xF2, 0xF4, 0xA5, 0x40, 0xE2, 0xDA, 0xA3, 0x42, 0x8D, 0xF4, 0x9D, 0x40, 0x82, 0xF4, 0x90, - 0xBE, 0x9C, 0x1E, 0xDE, 0x42, 0x00, 0x1D, 0x6A, 0xC0, 0xD3, 0x0E, 0xA8, 0x41, 0x2D, 0xDB, 0x19, - 0x42, 0x00, 0x1D, 0x68, 0xC0, 0xC8, 0xE4, 0xE0, 0x40, 0x17, 0x47, 0xAA, 0x41, 0x99, 0xE3, 0xCB, - 0x3F, 0x88, 0x3F, 0x79, 0x41, 0x12, 0xF6, 0x8B, 0x42, 0x00, 0x1D, 0x67, 0x41, 0x10, 0xBB, 0x1F, - 0xC0, 0x40, 0x6B, 0x66, 0x42, 0x00, 0x1D, 0x68, 0x40, 0xB5, 0xCE, 0x40, 0x40, 0xB0, 0x3B, 0xDA, - 0x42, 0x08, 0x7F, 0x60, 0x40, 0xB3, 0xDC, 0xD7, 0xC0, 0x7B, 0x9C, 0x13, 0x42, 0x08, 0x7F, 0x5F, - 0x41, 0x39, 0xAA, 0x67, 0xBF, 0x7D, 0x10, 0x1B, 0x41, 0xB4, 0xF6, 0xEB, 0x3F, 0x43, 0x3A, 0x04, - 0xC1, 0x31, 0xB5, 0x84, 0x42, 0x08, 0x7F, 0x5E, 0xC0, 0x02, 0x89, 0x9C, 0x3F, 0x61, 0xC2, 0x2B, - 0x42, 0x08, 0x7F, 0x5F, 0xC0, 0xC2, 0x2D, 0xCD, 0xC0, 0xB7, 0xA5, 0x40, 0x42, 0x03, 0xBD, 0x64, - 0xC0, 0xF9, 0x2E, 0x71, 0x40, 0x97, 0xF6, 0x62, 0x42, 0x03, 0xBD, 0x63, 0xC1, 0x3A, 0x58, 0x92, - 0xBE, 0xD3, 0x65, 0xED, 0x41, 0x99, 0xE3, 0xCC, 0xBF, 0xD5, 0x9D, 0xED, 0x41, 0x0E, 0x33, 0x4E, - 0x42, 0x03, 0xBD, 0x61, 0x40, 0x4C, 0xFD, 0x0D, 0xBE, 0x25, 0xBF, 0xF0, 0x42, 0x09, 0x9F, 0xF5, - 0xC0, 0x05, 0xBD, 0x6F, 0x3F, 0x87, 0x66, 0x17, 0xC1, 0x1E, 0x5D, 0x2E, 0xBF, 0x22, 0xBD, 0x5E, - 0xBF, 0xBE, 0xED, 0x1C, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0x27, 0x4E, 0x12, 0xC0, 0x0C, 0x84, 0x34, - 0x42, 0x09, 0x96, 0x95, 0xC0, 0x06, 0xA0, 0xBA, 0xBF, 0x97, 0xAF, 0xEA, 0x42, 0x09, 0xA2, 0xC4, - 0xBF, 0x8A, 0x29, 0x63, 0xBE, 0x66, 0x0B, 0x70, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0x21, 0x7E, 0xBB, - 0xBE, 0x56, 0x99, 0x42, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0xF5, 0xAF, 0xB0, 0xBF, 0x96, 0x19, 0x3B, - 0x42, 0x09, 0x93, 0xC4, 0xC0, 0x47, 0x42, 0x91, 0xBE, 0xB2, 0xE9, 0xEE, 0x42, 0x09, 0x50, 0x68, - 0x3F, 0xB1, 0x1A, 0xCA, 0x3F, 0x2D, 0x3E, 0x2D, 0xC1, 0x1D, 0xEC, 0x5F, 0xBB, 0xAD, 0x2D, 0xCB, - 0xBF, 0xD5, 0x92, 0x4B, 0xC1, 0x1E, 0xCE, 0x00, 0xBB, 0xAD, 0x2D, 0xCB, 0xC0, 0x17, 0x75, 0x3A, - 0x42, 0x09, 0x1F, 0xE3, 0x3F, 0xB1, 0x1A, 0xCA, 0xBF, 0xAD, 0xB9, 0x73, 0x42, 0x09, 0x14, 0x75, - 0x40, 0x19, 0x14, 0xF9, 0xBE, 0xFD, 0x72, 0x15, 0xC1, 0x1F, 0x03, 0x34, 0x3F, 0x95, 0x61, 0x35, - 0xBE, 0xFE, 0x5A, 0xBC, 0xC1, 0x1D, 0xB7, 0x2A, 0xBF, 0x96, 0xBB, 0x88, 0xBF, 0xAD, 0xEB, 0x7D, - 0x42, 0x09, 0x5B, 0xD8, 0x3E, 0xC0, 0x2E, 0xA9, 0x40, 0x1E, 0x27, 0x67, 0x42, 0x02, 0x4C, 0x03, - 0x3F, 0xC0, 0x2D, 0xB6, 0x40, 0x94, 0xBE, 0xD1, 0x42, 0x02, 0x30, 0x38, 0x3F, 0xC0, 0xDA, 0xE4, - 0x3F, 0xE7, 0xC1, 0xCE, 0xC1, 0x1E, 0x5D, 0x2E, 0x3E, 0x23, 0xB0, 0x81, 0xBF, 0x89, 0xA2, 0xBE, - 0xC1, 0x1E, 0x5D, 0x30, 0x3E, 0x1B, 0x3B, 0xFB, 0x40, 0x63, 0xE5, 0x3F, 0x42, 0x02, 0x44, 0x03, - 0x3E, 0xD5, 0xAB, 0x19, 0x40, 0x63, 0xD6, 0x7C, 0x42, 0x02, 0x38, 0x37, 0x40, 0x25, 0xC5, 0x61, - 0x3E, 0xBC, 0xD0, 0x9A, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0xCC, 0x0D, 0x13, 0x3E, 0xBC, 0xC7, 0x2A, - 0xC1, 0x1E, 0x5D, 0x2D, 0xBF, 0xA4, 0x4D, 0x4D, -}; -#pragma pop - -/* 805270E0-80527200 003F08 0120+00 0/1 0/0 0/0 .data l_flowerNormal2 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerNormal2[288] = { - 0xBB, 0xC4, 0x93, 0x42, 0x3F, 0x7F, 0xF6, 0x6F, 0xBC, 0x83, 0x0E, 0x3D, 0x3C, 0x83, 0x0C, 0x24, - 0x3F, 0x7F, 0xF5, 0x84, 0x3C, 0x03, 0x0E, 0x3D, 0xB8, 0x51, 0xB7, 0x17, 0x3F, 0x7F, 0xF5, 0xF9, - 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x38, 0x1F, 0x62, 0x30, - 0xBD, 0xB8, 0xC9, 0xFB, 0x3F, 0x7E, 0x68, 0x3C, 0xBD, 0x85, 0xBD, 0x94, 0xBD, 0xD9, 0x65, 0xB2, - 0x3F, 0x7E, 0x28, 0x13, 0xBD, 0x63, 0x62, 0xA6, 0xBD, 0xB8, 0x12, 0x7B, 0x3F, 0x7E, 0x6B, 0x0E, - 0xBD, 0x85, 0x62, 0x5A, 0xBD, 0xFD, 0x2D, 0x88, 0x3F, 0x7D, 0x58, 0x32, 0xBD, 0x95, 0xE3, 0x97, - 0xBD, 0xB5, 0xC6, 0x3B, 0x3F, 0x7E, 0xFB, 0x4C, 0x3C, 0x01, 0xC7, 0x15, 0xB8, 0xFF, 0xDA, 0x40, - 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0x37, 0x38, 0x8C, 0xA4, 0x3F, 0x7F, 0xF5, 0xF9, - 0xBC, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB8, 0xBE, 0xD7, 0x41, - 0x38, 0x06, 0x37, 0xBD, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8F, 0x57, 0xF7, 0x37, 0x6A, 0xE1, 0x8B, - 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8E, 0xC7, 0x43, 0x3F, 0x7F, 0xF5, 0xF9, - 0x3A, 0xCB, 0xF2, 0xB2, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x00, 0x00, 0x00, 0x00, - 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB7, 0xD1, 0xB7, 0x17, 0xBC, 0x8F, 0x55, 0xDE, - 0x3F, 0x7F, 0xF5, 0xF9, 0x39, 0x4E, 0x91, 0xC9, 0xBA, 0x02, 0x49, 0x1B, 0x3F, 0x7F, 0xF5, 0xF9, - 0x3C, 0x8F, 0x49, 0x49, 0x3C, 0x80, 0x34, 0x6E, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x00, 0x3C, 0xD1, - 0xBC, 0x8E, 0x7F, 0xF6, 0x3F, 0x7F, 0xF5, 0xF9, 0xBA, 0xF8, 0xE7, 0xDE, 0x3B, 0x98, 0xD4, 0x78, - 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x28, 0x78, 0x3C, 0x8B, 0xFE, 0x3B, 0x3F, 0x7F, 0xF5, 0xF9, - 0x3B, 0x76, 0x7B, 0x1C, 0x3B, 0x99, 0x6B, 0x76, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x1D, 0xFC, -}; -#pragma pop - -/* 80527200-80527208 004028 0008+00 0/1 0/0 0/0 .data l_flowerColor2 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerColor2[8] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xFF, -}; -#pragma pop - -/* 80527208-80527338 004030 0120+10 0/1 0/0 0/0 .data l_flowerTexCoord2 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_flowerTexCoord2[] = { - 0x3F, 0xF3, 0x6D, 0x11, 0x3F, 0x72, 0x0B, 0xA2, 0x3F, 0x80, 0x00, 0x00, 0x3C, 0xAB, 0xDC, 0x27, - 0x3D, 0xC9, 0x2E, 0xE8, 0x3F, 0x72, 0x0B, 0xA2, 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x81, 0x7B, 0x96, - 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x06, 0x1F, 0xCD, 0x3F, 0x7B, 0xB5, 0x18, - 0x40, 0x06, 0x00, 0x47, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x06, 0x16, 0xBE, 0x3F, 0x81, 0x7B, 0x96, - 0x40, 0x06, 0x09, 0x5B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x07, 0xBB, 0x1F, 0x3F, 0x7B, 0xB5, 0x18, - 0x40, 0x07, 0xC2, 0xF8, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x07, 0xB8, 0xC3, 0x3F, 0x81, 0x7B, 0x96, - 0x40, 0x07, 0xC5, 0x50, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x7B, 0xB5, 0x18, - 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xA0, 0x9B, 0xA2, - 0x40, 0x39, 0x01, 0x1D, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBE, 0x0D, 0xCC, - 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x25, 0xD5, 0xA2, 0x3F, 0x7B, 0xB5, 0x18, - 0x40, 0x25, 0xD9, 0x1F, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x25, 0xD4, 0x95, 0x3F, 0x81, 0x7B, 0x96, - 0x40, 0x25, 0xDA, 0x2B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x7B, 0xB5, 0x18, - 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x2F, 0xF0, 0x35, 0x3F, 0x81, 0x7B, 0x96, - 0x40, 0x2F, 0xF8, 0x16, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x2F, 0xF2, 0x78, 0x3F, 0x7B, 0xB5, 0x18, - 0x40, 0x2F, 0xF5, 0xCF, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x51, 0x10, 0x6F, - 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x7C, 0x19, 0xB1, 0x3F, 0x80, 0x5E, 0x57, - 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x04, 0x26, 0x74, 0x3F, 0x80, 0x3F, 0x79, - 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x80, 0x3F, 0x79, 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x51, 0x10, 0x6F}; -#pragma pop - -/* 80527338-80527478 004160 0138+08 0/1 0/0 0/0 .data l_J_hana01DL */ -#include "assets/l_J_hana01DL.h" // ALIGN 32 - -/* 80527478-80527558 0042A0 00DE+02 0/0 0/0 0/0 .data l_J_hana01_c_00DL */ -#include "assets/l_J_hana01_c_00DL.h" // ALIGN 32 - -/* 80527558-80527698 004380 0128+18 0/1 0/0 0/0 .data l_J_hana01_c_01DL */ -#include "assets/l_J_hana01_c_01DL.h" // ALIGN 32 - -/* 80527698-80527738 0044C0 0099+07 0/2 0/0 0/0 .data l_mat2DL */ -#include "assets/l_mat2DL__d_a_grass.h" -l_mat2DL__d_a_grass(l_J_Ohana01_64128_0419TEX) - -/* 80527738-805277D4 004560 0099+03 0/2 0/0 0/0 .data l_mat2Light4DL */ -#include "assets/l_mat2Light4DL.h" -l_mat2Light4DL(l_J_Ohana01_64128_0419TEX) - -/* 805277D4-805277E0 -00001 000C+00 1/1 0/0 0/0 .data @5875 */ -SECTION_DATA static void* lit_5875[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)deleteRoom__16dFlower_packet_cFi, -}; - -/* 805277E0-80527800 -00001 0020+00 1/1 0/0 0/0 .data @6092 */ -SECTION_DATA static void* lit_6092[8] = { - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x6EC), - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x708), - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x724), - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x740), - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x760), - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x780), - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x7A0), - (void*)(((char*)draw__16dFlower_packet_cFv) + 0x7C0), -}; - -/* 80527800-80527840 -00001 0040+00 1/1 0/0 0/0 .data - * l_offsetData$localstatic15$create__9daGrass_cFv */ -SECTION_DATA static void* data_80527800[16] = { - (void*)0x03000000, - (void*)(((char*)&struct_80528900) + 0x0) /* l_setType2$localstatic7$create__9daGrass_cFv */, - (void*)0x07000000, - (void*)(((char*)&struct_80528854) + 0x0) /* l_setType0$localstatic3$create__9daGrass_cFv */, - (void*)0x15000000, - (void*)(((char*)&struct_80528880) + 0x0) /* l_setType1$localstatic5$create__9daGrass_cFv */, - (void*)0x07000000, - (void*)(((char*)&struct_80528854) + 0x0) /* l_setType0$localstatic3$create__9daGrass_cFv */, - (void*)0x07000000, - (void*)(((char*)&struct_80528914) + 0x0) /* l_setType3$localstatic9$create__9daGrass_cFv */, - (void*)0x11000000, - (void*)(((char*)&struct_80528940) + 0x0) /* l_setType4$localstatic11$create__9daGrass_cFv */, - (void*)0x07000000, - (void*)&data_805289A8, - (void*)0x07000000, - (void*)(((char*)&struct_80528854) + 0x0) /* l_setType0$localstatic3$create__9daGrass_cFv */, -}; - -/* 80527840-80527860 -00001 0020+00 1/0 0/0 0/0 .data daGrass_METHODS */ -static actor_method_class daGrass_METHODS = { - (process_method_func)daGrass_create__FP9daGrass_c, - (process_method_func)daGrass_Delete__FP9daGrass_c, - (process_method_func)daGrass_execute__FP9daGrass_c, - 0, - (process_method_func)daGrass_draw__FP9daGrass_c, -}; - -/* 80527860-80527890 -00001 0030+00 0/0 0/0 1/0 .data g_profile_GRASS */ -extern actor_process_profile_definition g_profile_GRASS = { - fpcLy_CURRENT_e, // mLayerID - 11, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_GRASS, // mProcName - &g_fpcLf_Method.base, // sub_method - 0x00000570, // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 8, // mPriority - &daGrass_METHODS, // sub_method - 0x00060000, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_0_e, // cullType -}; - -/* 80527890-805278A4 0046B8 0014+00 2/2 0/0 0/0 .data __vt__16dFlower_packet_c */ -SECTION_DATA extern void* __vt__16dFlower_packet_c[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__16dFlower_packet_cFv, - (void*)__dt__16dFlower_packet_cFv, -}; - -/* 805278A4-805278B8 0046CC 0014+00 2/2 0/0 0/0 .data __vt__15dGrass_packet_c */ -SECTION_DATA extern void* __vt__15dGrass_packet_c[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__15dGrass_packet_cFv, - (void*)__dt__15dGrass_packet_cFv, -}; - -/* 805278D0-805278D4 000008 0001+03 4/4 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 805278D4-805278D8 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ -#pragma push -#pragma force_active on -static u8 lit_1107[1 + 3 /* padding */]; -#pragma pop - -/* 805278D8-805278DC 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ -#pragma push -#pragma force_active on -static u8 lit_1105[1 + 3 /* padding */]; -#pragma pop - -/* 805278DC-805278E0 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ -#pragma push -#pragma force_active on -static u8 lit_1104[1 + 3 /* padding */]; -#pragma pop - -/* 805278E0-805278E4 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ -#pragma push -#pragma force_active on -static u8 lit_1099[1 + 3 /* padding */]; -#pragma pop - -/* 805278E4-805278E8 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ -#pragma push -#pragma force_active on -static u8 lit_1097[1 + 3 /* padding */]; -#pragma pop - -/* 805278E8-805278EC 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ -#pragma push -#pragma force_active on -static u8 lit_1095[1 + 3 /* padding */]; -#pragma pop - -/* 805278EC-805278F0 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ -#pragma push -#pragma force_active on -static u8 lit_1094[1 + 3 /* padding */]; -#pragma pop - -/* 805278F0-805278F4 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ -#pragma push -#pragma force_active on -static u8 lit_1057[1 + 3 /* padding */]; -#pragma pop - -/* 805278F4-805278F8 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ -#pragma push -#pragma force_active on -static u8 lit_1055[1 + 3 /* padding */]; -#pragma pop - -/* 805278F8-805278FC 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ -#pragma push -#pragma force_active on -static u8 lit_1053[1 + 3 /* padding */]; -#pragma pop - -/* 805278FC-80527900 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ -#pragma push -#pragma force_active on -static u8 lit_1052[1 + 3 /* padding */]; -#pragma pop - -/* 80527900-80527904 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ -#pragma push -#pragma force_active on -static u8 lit_1014[1 + 3 /* padding */]; -#pragma pop - -/* 80527904-80527908 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ -#pragma push -#pragma force_active on -static u8 lit_1012[1 + 3 /* padding */]; -#pragma pop - -/* 80527908-8052790C 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ -#pragma push -#pragma force_active on -static u8 lit_1010[1 + 3 /* padding */]; -#pragma pop - -/* 8052790C-80527910 000044 0001+03 0/0 0/0 0/0 .bss @1009 */ -#pragma push -#pragma force_active on -static u8 lit_1009[1 + 3 /* padding */]; -#pragma pop - -/* 80527910-80527920 000048 000C+04 0/1 0/0 0/0 .bss @4293 */ -#pragma push -#pragma force_active on -static u8 lit_4293[12 + 4 /* padding */]; -#pragma pop - -/* 80527920-80527930 -00001 000C+04 0/2 0/0 0/0 .bss None */ -#pragma push -#pragma force_active on -/* 80527920 0006+00 data_80527920 ang$4292 */ -/* 80527926 0002+02 data_80527926 exec_count_dammy$4868 */ -/* 8052792A 0002+00 data_8052792A exec_count_dammy2$4871 */ -static u8 struct_80527920[12 + 4 /* padding */]; -#pragma pop - -/* 80527930-805284E8 000068 0BB8+00 1/1 0/0 0/0 .bss mAngleZ$5046 */ -static s16 mAngleZ[1500]; - -/* 805284E8-805284EC 000C20 0004+00 1/2 0/0 0/0 .bss None */ -static u8 data_805284E8[4]; - -/* 805284EC-805284FC 000C24 000C+04 0/1 0/0 0/0 .bss @5442 */ -#pragma push -#pragma force_active on -static u8 lit_5442[12 + 4 /* padding */]; -#pragma pop - -/* 805284FC-80528504 000C34 0006+02 0/1 0/0 0/0 .bss ang$5441 */ -#pragma push -#pragma force_active on -static u8 ang[6 + 2 /* padding */]; -#pragma pop - -/* 80528504-80528510 000C3C 000C+00 0/1 0/0 0/0 .bss @6340 */ -#pragma push -#pragma force_active on -static u8 lit_6340[12]; -#pragma pop - -/* 80528510-8052851C 000C48 000C+00 0/1 0/0 0/0 .bss @6342 */ -#pragma push -#pragma force_active on -static u8 lit_6342[12]; -#pragma pop - -/* 8052851C-80528528 000C54 000C+00 0/1 0/0 0/0 .bss @6343 */ -#pragma push -#pragma force_active on -static u8 lit_6343[12]; -#pragma pop - -/* 80528528-80528534 000C60 000C+00 0/1 0/0 0/0 .bss @6344 */ -#pragma push -#pragma force_active on -static u8 lit_6344[12]; -#pragma pop - -/* 80528534-80528540 000C6C 000C+00 0/1 0/0 0/0 .bss @6345 */ -#pragma push -#pragma force_active on -static u8 lit_6345[12]; -#pragma pop - -/* 80528540-8052854C 000C78 000C+00 0/1 0/0 0/0 .bss @6346 */ -#pragma push -#pragma force_active on -static u8 lit_6346[12]; -#pragma pop - -/* 8052854C-80528558 000C84 000C+00 0/1 0/0 0/0 .bss @6347 */ -#pragma push -#pragma force_active on -static u8 lit_6347[12]; -#pragma pop - -/* 80528558-80528564 000C90 000C+00 0/1 0/0 0/0 .bss @6348 */ -#pragma push -#pragma force_active on -static u8 lit_6348[12]; -#pragma pop - -/* 80528564-80528570 000C9C 000C+00 0/1 0/0 0/0 .bss @6350 */ -#pragma push -#pragma force_active on -static u8 lit_6350[12]; -#pragma pop - -/* 80528570-8052857C 000CA8 000C+00 0/1 0/0 0/0 .bss @6351 */ -#pragma push -#pragma force_active on -static u8 lit_6351[12]; -#pragma pop - -/* 8052857C-80528588 000CB4 000C+00 0/1 0/0 0/0 .bss @6352 */ -#pragma push -#pragma force_active on -static u8 lit_6352[12]; -#pragma pop - -/* 80528588-80528594 000CC0 000C+00 0/1 0/0 0/0 .bss @6353 */ -#pragma push -#pragma force_active on -static u8 lit_6353[12]; -#pragma pop - -/* 80528594-805285A0 000CCC 000C+00 0/1 0/0 0/0 .bss @6354 */ -#pragma push -#pragma force_active on -static u8 lit_6354[12]; -#pragma pop - -/* 805285A0-805285AC 000CD8 000C+00 0/1 0/0 0/0 .bss @6355 */ -#pragma push -#pragma force_active on -static u8 lit_6355[12]; -#pragma pop - -/* 805285AC-805285B8 000CE4 000C+00 0/1 0/0 0/0 .bss @6356 */ -#pragma push -#pragma force_active on -static u8 lit_6356[12]; -#pragma pop - -/* 805285B8-805285C4 000CF0 000C+00 0/1 0/0 0/0 .bss @6357 */ -#pragma push -#pragma force_active on -static u8 lit_6357[12]; -#pragma pop - -/* 805285C4-805285D0 000CFC 000C+00 0/1 0/0 0/0 .bss @6358 */ -#pragma push -#pragma force_active on -static u8 lit_6358[12]; -#pragma pop - -/* 805285D0-805285DC 000D08 000C+00 0/1 0/0 0/0 .bss @6359 */ -#pragma push -#pragma force_active on -static u8 lit_6359[12]; -#pragma pop - -/* 805285DC-805285E8 000D14 000C+00 0/1 0/0 0/0 .bss @6360 */ -#pragma push -#pragma force_active on -static u8 lit_6360[12]; -#pragma pop - -/* 805285E8-805285F4 000D20 000C+00 0/1 0/0 0/0 .bss @6361 */ -#pragma push -#pragma force_active on -static u8 lit_6361[12]; -#pragma pop - -/* 805285F4-80528600 000D2C 000C+00 0/1 0/0 0/0 .bss @6362 */ -#pragma push -#pragma force_active on -static u8 lit_6362[12]; -#pragma pop - -/* 80528600-8052860C 000D38 000C+00 0/1 0/0 0/0 .bss @6363 */ -#pragma push -#pragma force_active on -static u8 lit_6363[12]; -#pragma pop - -/* 8052860C-80528618 000D44 000C+00 0/1 0/0 0/0 .bss @6364 */ -#pragma push -#pragma force_active on -static u8 lit_6364[12]; -#pragma pop - -/* 80528618-80528624 000D50 000C+00 0/1 0/0 0/0 .bss @6365 */ -#pragma push -#pragma force_active on -static u8 lit_6365[12]; -#pragma pop - -/* 80528624-80528630 000D5C 000C+00 0/1 0/0 0/0 .bss @6366 */ -#pragma push -#pragma force_active on -static u8 lit_6366[12]; -#pragma pop - -/* 80528630-8052863C 000D68 000C+00 0/1 0/0 0/0 .bss @6367 */ -#pragma push -#pragma force_active on -static u8 lit_6367[12]; -#pragma pop - -/* 8052863C-80528648 000D74 000C+00 0/1 0/0 0/0 .bss @6368 */ -#pragma push -#pragma force_active on -static u8 lit_6368[12]; -#pragma pop - -/* 80528648-80528654 000D80 000C+00 0/1 0/0 0/0 .bss @6369 */ -#pragma push -#pragma force_active on -static u8 lit_6369[12]; -#pragma pop - -/* 80528654-80528660 000D8C 000C+00 0/1 0/0 0/0 .bss @6370 */ -#pragma push -#pragma force_active on -static u8 lit_6370[12]; -#pragma pop - -/* 80528660-8052866C 000D98 000C+00 0/1 0/0 0/0 .bss @6372 */ -#pragma push -#pragma force_active on -static u8 lit_6372[12]; -#pragma pop - -/* 8052866C-80528678 000DA4 000C+00 0/1 0/0 0/0 .bss @6373 */ -#pragma push -#pragma force_active on -static u8 lit_6373[12]; -#pragma pop - -/* 80528678-80528684 000DB0 000C+00 0/1 0/0 0/0 .bss @6374 */ -#pragma push -#pragma force_active on -static u8 lit_6374[12]; -#pragma pop - -/* 80528684-80528690 000DBC 000C+00 0/1 0/0 0/0 .bss @6376 */ -#pragma push -#pragma force_active on -static u8 lit_6376[12]; -#pragma pop - -/* 80528690-8052869C 000DC8 000C+00 0/1 0/0 0/0 .bss @6377 */ -#pragma push -#pragma force_active on -static u8 lit_6377[12]; -#pragma pop - -/* 8052869C-805286A8 000DD4 000C+00 0/1 0/0 0/0 .bss @6378 */ -#pragma push -#pragma force_active on -static u8 lit_6378[12]; -#pragma pop - -/* 805286A8-805286B4 000DE0 000C+00 0/1 0/0 0/0 .bss @6379 */ -#pragma push -#pragma force_active on -static u8 lit_6379[12]; -#pragma pop - -/* 805286B4-805286C0 000DEC 000C+00 0/1 0/0 0/0 .bss @6380 */ -#pragma push -#pragma force_active on -static u8 lit_6380[12]; -#pragma pop - -/* 805286C0-805286CC 000DF8 000C+00 0/1 0/0 0/0 .bss @6381 */ -#pragma push -#pragma force_active on -static u8 lit_6381[12]; -#pragma pop - -/* 805286CC-805286D8 000E04 000C+00 0/1 0/0 0/0 .bss @6382 */ -#pragma push -#pragma force_active on -static u8 lit_6382[12]; -#pragma pop - -/* 805286D8-805286E4 000E10 000C+00 0/1 0/0 0/0 .bss @6384 */ -#pragma push -#pragma force_active on -static u8 lit_6384[12]; -#pragma pop - -/* 805286E4-805286F0 000E1C 000C+00 0/1 0/0 0/0 .bss @6385 */ -#pragma push -#pragma force_active on -static u8 lit_6385[12]; -#pragma pop - -/* 805286F0-805286FC 000E28 000C+00 0/1 0/0 0/0 .bss @6386 */ -#pragma push -#pragma force_active on -static u8 lit_6386[12]; -#pragma pop - -/* 805286FC-80528708 000E34 000C+00 0/1 0/0 0/0 .bss @6387 */ -#pragma push -#pragma force_active on -static u8 lit_6387[12]; -#pragma pop - -/* 80528708-80528714 000E40 000C+00 0/1 0/0 0/0 .bss @6388 */ -#pragma push -#pragma force_active on -static u8 lit_6388[12]; -#pragma pop - -/* 80528714-80528720 000E4C 000C+00 0/1 0/0 0/0 .bss @6389 */ -#pragma push -#pragma force_active on -static u8 lit_6389[12]; -#pragma pop - -/* 80528720-8052872C 000E58 000C+00 0/1 0/0 0/0 .bss @6390 */ -#pragma push -#pragma force_active on -static u8 lit_6390[12]; -#pragma pop - -/* 8052872C-80528738 000E64 000C+00 0/1 0/0 0/0 .bss @6391 */ -#pragma push -#pragma force_active on -static u8 lit_6391[12]; -#pragma pop - -/* 80528738-80528744 000E70 000C+00 0/1 0/0 0/0 .bss @6392 */ -#pragma push -#pragma force_active on -static u8 lit_6392[12]; -#pragma pop - -/* 80528744-80528750 000E7C 000C+00 0/1 0/0 0/0 .bss @6393 */ -#pragma push -#pragma force_active on -static u8 lit_6393[12]; -#pragma pop - -/* 80528750-8052875C 000E88 000C+00 0/1 0/0 0/0 .bss @6394 */ -#pragma push -#pragma force_active on -static u8 lit_6394[12]; -#pragma pop - -/* 8052875C-80528768 000E94 000C+00 0/1 0/0 0/0 .bss @6395 */ -#pragma push -#pragma force_active on -static u8 lit_6395[12]; -#pragma pop - -/* 80528768-80528774 000EA0 000C+00 0/1 0/0 0/0 .bss @6396 */ -#pragma push -#pragma force_active on -static u8 lit_6396[12]; -#pragma pop - -/* 80528774-80528780 000EAC 000C+00 0/1 0/0 0/0 .bss @6397 */ -#pragma push -#pragma force_active on -static u8 lit_6397[12]; -#pragma pop - -/* 80528780-8052878C 000EB8 000C+00 0/1 0/0 0/0 .bss @6398 */ -#pragma push -#pragma force_active on -static u8 lit_6398[12]; -#pragma pop - -/* 8052878C-80528798 000EC4 000C+00 0/1 0/0 0/0 .bss @6399 */ -#pragma push -#pragma force_active on -static u8 lit_6399[12]; -#pragma pop - -/* 80528798-805287A4 000ED0 000C+00 0/1 0/0 0/0 .bss @6400 */ -#pragma push -#pragma force_active on -static u8 lit_6400[12]; -#pragma pop - -/* 805287A4-805287B0 000EDC 000C+00 0/1 0/0 0/0 .bss @6402 */ -#pragma push -#pragma force_active on -static u8 lit_6402[12]; -#pragma pop - -/* 805287B0-805287BC 000EE8 000C+00 0/1 0/0 0/0 .bss @6403 */ -#pragma push -#pragma force_active on -static u8 lit_6403[12]; -#pragma pop - -/* 805287BC-805287C8 000EF4 000C+00 0/1 0/0 0/0 .bss @6404 */ -#pragma push -#pragma force_active on -static u8 lit_6404[12]; -#pragma pop - -/* 805287C8-805287D4 000F00 000C+00 0/1 0/0 0/0 .bss @6405 */ -#pragma push -#pragma force_active on -static u8 lit_6405[12]; -#pragma pop - -/* 805287D4-805287E0 000F0C 000C+00 0/1 0/0 0/0 .bss @6406 */ -#pragma push -#pragma force_active on -static u8 lit_6406[12]; -#pragma pop - -/* 805287E0-805287EC 000F18 000C+00 0/1 0/0 0/0 .bss @6407 */ -#pragma push -#pragma force_active on -static u8 lit_6407[12]; -#pragma pop - -/* 805287EC-805287F0 000F24 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_805287EC[4]; -#pragma pop - -/* 805287F0-805287F4 000F28 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_805287F0[4]; -#pragma pop - -/* 805287F4-805287F8 000F2C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_805287F4[4]; -#pragma pop - -/* 805287F8-805287FC 000F30 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_805287F8[4]; -#pragma pop - -/* 805287FC-80528800 000F34 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_805287FC[4]; -#pragma pop - -/* 80528800-80528804 000F38 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80528800[4]; -#pragma pop - -/* 80528804-80528808 000F3C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_80528804[4]; -#pragma pop - -/* 80528808-8052880C 000F40 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80528808[4]; -#pragma pop - -/* 8052880C-80528810 000F44 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8052880C[4]; -#pragma pop - -/* 80528810-80528814 000F48 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_80528810[4]; -#pragma pop - -/* 80528814-80528818 000F4C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80528814[4]; -#pragma pop - -/* 80528818-8052881C 000F50 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80528818[4]; -#pragma pop - -/* 8052881C-80528820 000F54 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_8052881C[4]; -#pragma pop - -/* 80528820-80528824 000F58 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80528820[4]; -#pragma pop - -/* 80528824-80528828 000F5C 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80528824[4]; -#pragma pop - -/* 80528828-8052882C 000F60 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_80528828[4]; -#pragma pop - -/* 8052882C-80528830 000F64 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_8052882C[4]; -#pragma pop - -/* 80528830-80528834 000F68 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80528830[4]; -#pragma pop - -/* 80528834-80528838 000F6C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_80528834[4]; -#pragma pop - -/* 80528838-8052883C 000F70 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_80528838[4]; -#pragma pop - -/* 8052883C-80528840 000F74 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_8052883C[4]; -#pragma pop - -/* 80528840-80528844 000F78 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80528840[4]; -#pragma pop - -/* 80528844-80528848 000F7C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80528844[4]; -#pragma pop - -/* 80528848-8052884C 000F80 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80528848[4]; -#pragma pop - -/* 8052884C-80528850 000F84 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_8052884C[4]; -#pragma pop - -/* 80528850-80528854 000F88 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80528850[4]; - -/* 80528854-80528880 -00001 002C+00 2/1 0/0 0/0 .bss None */ -/* 80528854 002A+00 data_80528854 l_setType0$localstatic3$create__9daGrass_cFv */ -/* 8052887E 0002+00 data_8052887E None */ -static u8 struct_80528854[44]; - -/* 80528880-80528900 -00001 0080+00 2/1 0/0 0/0 .bss None */ -/* 80528880 007E+00 data_80528880 l_setType1$localstatic5$create__9daGrass_cFv */ -/* 805288FE 0002+00 data_805288FE None */ -static u8 struct_80528880[128]; - -/* 80528900-80528914 -00001 0014+00 2/1 0/0 0/0 .bss None */ -/* 80528900 0012+00 data_80528900 l_setType2$localstatic7$create__9daGrass_cFv */ -/* 80528912 0002+00 data_80528912 None */ -static u8 struct_80528900[20]; - -/* 80528914-80528940 -00001 002C+00 2/1 0/0 0/0 .bss None */ -/* 80528914 002A+00 data_80528914 l_setType3$localstatic9$create__9daGrass_cFv */ -/* 8052893E 0002+00 data_8052893E None */ -static u8 struct_80528914[44]; - -/* 80528940-805289A8 -00001 0068+00 2/1 0/0 0/0 .bss None */ -/* 80528940 0066+00 data_80528940 l_setType4$localstatic11$create__9daGrass_cFv */ -/* 805289A6 0002+00 data_805289A6 None */ -static u8 struct_80528940[104]; - -/* 805289A8-805289D2 0010E0 002A+00 2/1 0/0 0/0 .bss l_setType5$localstatic13$create__9daGrass_cFv - */ -static u8 data_805289A8[42]; - -/* 8051BFBC-8051C040 00035C 0084+00 1/0 0/0 0/0 .text __dt__15dGrass_packet_cFv */ -dGrass_packet_c::~dGrass_packet_c() {} - /* 8051C040-8051C074 0003E0 0034+00 1/1 0/0 0/0 .text executeGrass__9daGrass_cFv */ void daGrass_c::executeGrass() { if (m_grass != NULL) { @@ -2159,7 +108,7 @@ void daGrass_c::newGrassData(cXyz& i_pos, int i_roomNo, u8 i_itemNo, u8 i_itemBi } /* 8051C0D4-8051C140 000474 006C+00 1/1 0/0 0/0 .text createFlower__9daGrass_cFv */ -int daGrass_c::createFlower() { +bool daGrass_c::createFlower() { if (m_flower != NULL) { return 1; } @@ -2198,8 +147,8 @@ void daGrass_c::drawFlower() { } /* 8051C280-8051C2AC 000620 002C+00 1/1 0/0 0/0 .text newFlowerData__9daGrass_cFScR4cXyziScs */ -void daGrass_c::newFlowerData(s8 param_0, cXyz& param_1, int param_2, s8 param_3, s16 param_4) { - m_flower->newData(param_0, param_1, param_2, param_3, param_4); +void daGrass_c::newFlowerData(s8 param_0, cXyz& i_pos, int i_roomNo, s8 i_tableNo, s16 i_addCol) { + m_flower->newData(param_0, i_pos, i_roomNo, i_tableNo, i_addCol); } /* 8051C2AC-8051C2B0 00064C 0004+00 1/1 0/0 0/0 .text dGrass_Tex_Change__Fv */ @@ -2211,87 +160,94 @@ static int daGrass_create(daGrass_c* i_this) { return i_this->create(); } -/* ############################################################################################## */ -/* 805231B0-805231B4 000188 0004+00 0/1 0/0 0/0 .rodata @6978 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6978 = 1200.0f; -COMPILER_STRIP_GATE(0x805231B0, &lit_6978); -#pragma pop - -/* 805231B4-805231B8 00018C 0004+00 0/1 0/0 0/0 .rodata @6979 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6979 = 75.0f; -COMPILER_STRIP_GATE(0x805231B4, &lit_6979); -#pragma pop - -/* 805231B8-805231BC 000190 0004+00 0/1 0/0 0/0 .rodata @6980 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6980 = 83.0f / 100.0f; -COMPILER_STRIP_GATE(0x805231B8, &lit_6980); -#pragma pop - -/* 805231BC-805231C0 000194 0004+00 0/1 0/0 0/0 .rodata @6981 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6981 = 23.0f / 10.0f; -COMPILER_STRIP_GATE(0x805231BC, &lit_6981); -#pragma pop - -/* 805231C0-805231C0 000198 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_805231C0 = "D_MN01"; -SECTION_DEAD static char const* const stringBase_805231C7 = "D_MN54"; -SECTION_DEAD static char const* const stringBase_805231CE = "D_MN07A"; -#pragma pop - /* 8051C304-8051D6CC 0006A4 13C8+00 1/1 0/0 0/0 .text create__9daGrass_cFv */ -// NONMATCHING - matches except for static data int daGrass_c::create() { static csXyz l_setType0[] = { - csXyz(0, 0, 0), csXyz(3, 0, -50), csXyz(-2, 0, 50), csXyz(50, 0, 27), - csXyz(52, 0, -25), csXyz(-50, 0, 22), csXyz(-50, 0, -29), + csXyz(0, 0, 0), + csXyz(3, 0, -50), + csXyz(-2, 0, 50), + csXyz(50, 0, 27), + csXyz(52, 0, -25), + csXyz(-50, 0, 22), + csXyz(-50, 0, -29) }; static csXyz l_setType1[] = { - csXyz(-18, 0, 76), csXyz(-15, 0, 26), csXyz(133, 0, 0), csXyz(80, 0, 23), - csXyz(86, 0, -83), csXyz(33, 0, -56), csXyz(83, 0, -27), csXyz(-120, 0, -26), - csXyz(-18, 0, -74), csXyz(-20, 0, -21), csXyz(-73, 0, 1), csXyz(-67, 0, -102), - csXyz(-21, 0, 126), csXyz(-120, 0, -78), csXyz(-70, 0, -49), csXyz(32, 0, 103), - csXyz(34, 0, 51), csXyz(-72, 0, 98), csXyz(-68, 0, 47), csXyz(33, 0, -5), - csXyz(135, 0, -53), + csXyz(-18, 0, 76), + csXyz(-15, 0, 26), + csXyz(133, 0, 0), + csXyz(80, 0, 23), + csXyz(86, 0, -83), + csXyz(33, 0, -56), + csXyz(83, 0, -27), + csXyz(-120, 0, -26), + csXyz(-18, 0, -74), + csXyz(-20, 0, -21), + csXyz(-73, 0, 1), + csXyz(-67, 0, -102), + csXyz(-21, 0, 126), + csXyz(-120, 0, -78), + csXyz(-70, 0, -49), + csXyz(32, 0, 103), + csXyz(34, 0, 51), + csXyz(-72, 0, 98), + csXyz(-68, 0, 47), + csXyz(33, 0, -5), + csXyz(135, 0, -53) }; - static csXyz l_setType2[] = {csXyz(25, 0, 25), csXyz(25, 0, -25), csXyz(-25, 0, 0)}; + static csXyz l_setType2[] = { + csXyz(25, 0, 25), + csXyz(25, 0, -25), + csXyz(-25, 0, 0) + }; static csXyz l_setType3[] = { - csXyz(-24, 0, -28), csXyz(27, 0, -28), csXyz(-21, 0, 33), csXyz(-18, 0, -34), - csXyz(44, 0, -4), csXyz(41, 0, 10), csXyz(24, 0, 39), + csXyz(-24, 0, -28), + csXyz(27, 0, -28), + csXyz(-21, 0, 33), + csXyz(-18, 0, -34), + csXyz(44, 0, -4), + csXyz(41, 0, 10), + csXyz(24, 0, 39) }; static csXyz l_setType4[] = { - csXyz(-55, 0, -22), csXyz(-28, 0, -50), csXyz(-77, 0, 11), csXyz(55, 0, -44), - csXyz(83, 0, -71), csXyz(11, 0, -48), csXyz(97, 0, -34), csXyz(-74, 0, -57), - csXyz(31, 0, 58), csXyz(59, 0, 30), csXyz(13, 0, 23), csXyz(-12, 0, 54), - csXyz(55, 0, 97), csXyz(10, 0, 92), csXyz(33, 0, -10), csXyz(-99, 0, -27), - csXyz(40, 0, -87), + csXyz(-55, 0, -22), + csXyz(-28, 0, -50), + csXyz(-77, 0, 11), + csXyz(55, 0, -44), + csXyz(83, 0, -71), + csXyz(11, 0, -48), + csXyz(97, 0, -34), + csXyz(-74, 0, -57), + csXyz(31, 0, 58), + csXyz(59, 0, 30), + csXyz(13, 0, 23), + csXyz(-12, 0, 54), + csXyz(55, 0, 97), + csXyz(10, 0, 92), + csXyz(33, 0, -10), + csXyz(-99, 0, -27), + csXyz(40, 0, -87) }; static csXyz l_setType5[] = { - csXyz(0, 0, 3), csXyz(-26, 0, -29), csXyz(7, 0, -25), csXyz(31, 0, -5), - csXyz(-7, 0, 40), csXyz(-35, 0, 15), csXyz(23, 0, 32), + csXyz(0, 0, 3), + csXyz(-26, 0, -29), + csXyz(7, 0, -25), + csXyz(31, 0, -5), + csXyz(-7, 0, 40), + csXyz(-35, 0, 15), + csXyz(23, 0, 32) }; - - static offset_data l_offsetData[] = { + static daGrass_offsetData l_offsetData[] = { {3, l_setType2}, {7, l_setType0}, {21, l_setType1}, {7, l_setType0}, {7, l_setType3}, {17, l_setType4}, {7, l_setType5}, {7, l_setType0}, }; - offset_data* data = l_offsetData; + daGrass_offsetData* offset_data = l_offsetData; int temp_r26 = current.angle.x & 0xFF; u8 kind = daGrass_prm::getKind(this); @@ -2300,13 +256,13 @@ int daGrass_c::create() { int type; if ((u32)temp_r26 >= 1 && kind == 0) { type = ((temp_r26 - 1) % 3); - data = &data[type]; + offset_data = &offset_data[type]; } else { type = daGrass_prm::getType(this); - data = &data[type]; + offset_data = &offset_data[type]; } - csXyz* set_type = data->set_type; + csXyz* set_type = offset_data->set_type; if (kind == 0) { dGrass_Tex_Change(); @@ -2314,13 +270,12 @@ int daGrass_c::create() { if (createGrass()) { u8 itemNo = daGrass_prm::getItemNo(this); u8 itemBitNo = daGrass_prm::getItemBitNo(this); - cXyz pos; if (dKy_get_dayofweek() == 6 && strcmp(dComIfGp_getStartStageName(), "D_MN07A") == 0) { - int var_r25 = 0; - int var_r27 = 0; - f32 var_f29 = 1200.0f; + int angle = 0; + int iterations = 0; + f32 size = 1200.0f; for (int i = 0; i < 500; i++) { add_col = current.angle.z; @@ -2328,17 +283,17 @@ int daGrass_c::create() { randam_addcol_set(&add_col); } - pos.x = var_f29 * cM_ssin(var_r25); + pos.x = size * cM_ssin(angle); pos.y = 0.0f; - pos.z = var_f29 * cM_scos(var_r25); + pos.z = size * cM_scos(angle); - var_r25 += 0x157; - if (var_r25 > 0xFFFF) { - var_r25 += 0xFFFF0001; - var_f29 += 75.0f; - var_r27++; + angle += 0x157; + if (angle > 0xFFFF) { + angle += 0xFFFF0001; + size += 75.0f; + iterations++; - if (var_r27 > 1000) { + if (iterations > 1000) { break; } } @@ -2351,7 +306,7 @@ int daGrass_c::create() { } } } else { - for (int i = 0; i < data->num; i++) { + for (int i = 0; i < offset_data->num; i++) { add_col = current.angle.z; if (i != 0) { randam_addcol_set(&add_col); @@ -2367,14 +322,14 @@ int daGrass_c::create() { pos.z = current.pos.z + set_type->z * 2.3f; } - u8 num = data->num; - if ((num == 3 && i != 0) || (num >= 16 && num <= 21 && i >= 16) || + u8 num = offset_data->num; + if ((num == 3 && i != 0) || + (num >= 16 && num <= 21 && i >= 16) || (num >= 4 && num <= 7 && i >= 4)) { - newGrassData(pos, fopAcM_GetRoomNo(this), 0xFF, 0xFF, add_col, temp_r26); + newGrassData(pos, fopAcM_GetRoomNo(this), fpcNm_ITEM_NONE, 0xFF, add_col, temp_r26); } else { - newGrassData(pos, fopAcM_GetRoomNo(this), itemNo, itemBitNo, add_col, - temp_r26); + newGrassData(pos, fopAcM_GetRoomNo(this), itemNo, itemBitNo, add_col, temp_r26); } set_type++; @@ -2391,7 +346,7 @@ int daGrass_c::create() { } cXyz pos; - for (int i = 0; i < data->num; i++) { + for (int i = 0; i < offset_data->num; i++) { add_col = current.angle.z; if (i != 0) { randam_addcol_set(&add_col); @@ -2431,7 +386,7 @@ static int daGrass_Delete(daGrass_c* i_this) { } int daGrass_c::execute() { - // inlines save to register instead of reloading + // fake match, inlines save to register instead of reloading // dComIfG_Ccsp()->PrepareMass(); g_dComIfG_gameInfo.play.mCcs.mMass_Mng.Prepare(); @@ -2459,20 +414,31 @@ static int daGrass_draw(daGrass_c* i_this) { return i_this->draw(); } -/* 8051D7B4-8051D7D0 001B54 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPUc */ -extern "C" void func_8051D7B4(void* _this, u8* param_0) { - // NONMATCHING -} +/* 80527840-80527860 -00001 0020+00 1/0 0/0 0/0 .data daGrass_METHODS */ +static actor_method_class daGrass_METHODS = { + (process_method_func)daGrass_create, + (process_method_func)daGrass_Delete, + (process_method_func)daGrass_execute, + (process_method_func)NULL, + (process_method_func)daGrass_draw, +}; -/* 8051D7D0-8051D88C 001B70 00BC+00 0/0 1/0 0/0 .text __sinit_d_a_grass_cpp */ -/* void __sinit_d_a_grass_cpp(){// NONMATCHING -} +/* 80527860-80527890 -00001 0030+00 0/0 0/0 1/0 .data g_profile_GRASS */ +extern actor_process_profile_definition g_profile_GRASS = { + fpcLy_CURRENT_e, // mLayerID + 11, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_GRASS, // mProcName + &g_fpcLf_Method.base, // sub_method + 0x00000570, // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 8, // mPriority + &daGrass_METHODS, // sub_method + 0x00060000, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_0_e, // cullType +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8051D7D0, __sinit_d_a_grass_cpp); -#pragma pop */ - -#include "d/actor/d_grass.inc" - -#include "d/actor/d_flower.inc" +AUDIO_INSTANCES; diff --git a/src/d/actor/d_a_spinner.cpp b/src/d/actor/d_a_spinner.cpp index 5036f1d0b8..2a7b372ef0 100644 --- a/src/d/actor/d_a_spinner.cpp +++ b/src/d/actor/d_a_spinner.cpp @@ -4,197 +4,18 @@ */ #include "d/actor/d_a_spinner.h" +#include "d/actor/d_a_tag_sppath.h" #include "dol2asm.h" #include "d/actor/d_a_alink.h" +#include "d/actor/d_a_mirror.h" +#include "Z2AudioLib/Z2Instances.h" #include "SSystem/SComponent/c_math.h" +#include "m_Do/m_Do_controller_pad.h" -// -// Forward References: -// - -extern "C" void createHeap__11daSpinner_cFv(); -extern "C" static void daSpinner_createHeap__FP10fopAc_ac_c(); -extern "C" void create__11daSpinner_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __dt__13dBgS_LinkAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daSpinner_Create__FP10fopAc_ac_c(); -extern "C" void __dt__11daSpinner_cFv(); -extern "C" static void daSpinner_Delete__FP11daSpinner_c(); -extern "C" void setRoomInfo__11daSpinner_cFv(); -extern "C" void setMatrix__11daSpinner_cFv(); -extern "C" void setEffect__11daSpinner_cFv(); -extern "C" void posMove__11daSpinner_cFv(); -extern "C" void __dt__8cM3dGLinFv(); -extern "C" void setReflectAngle__11daSpinner_cFv(); -extern "C" void setWallHit__11daSpinner_cFsUl(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void setAnm__11daSpinner_cFv(); -extern "C" void setNextPathNum__11daSpinner_cFv(); -extern "C" void getPathNextPos__11daSpinner_cFv(); -extern "C" void checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz(); -extern "C" void checkPathMove__11daSpinner_cFv(); -extern "C" void setSpreadEffect__11daSpinner_cFv(); -extern "C" void clearSpreadEffect__11daSpinner_cFv(); -extern "C" void execute__11daSpinner_cFv(); -extern "C" static void daSpinner_Execute__FP11daSpinner_c(); -extern "C" void draw__11daSpinner_cFv(); -extern "C" static void daSpinner_Draw__FP11daSpinner_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_804D4D70(); -extern "C" static void func_804D4D78(); -extern "C" extern char const* const d_a_spinner__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb(); -extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf(); -extern "C" void mDoExt_modelEntryDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_setStageLayer__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_getPolygonAngle__FRC13cBgS_PolyInfos(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfGs_isZoneSwitch__Fii(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void dComIfG_getTrigA__FUl(); -extern "C" void entry__10daMirror_cFP8J3DModel(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl(); -extern "C" void -setPoly__13dPa_control_cFUsR13cBgS_PolyInfoPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyziP18dPa_levelEcallBackScPC4cXyz(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void init__7dPaPo_cFP9dBgS_Acchff(); -extern "C" void setEffectCenter__7dPaPo_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC5csXyzPC4cXyzScff(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetSpecialCode__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetGroundCode__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void dBgS_CheckBWallPoly__FRC13cBgS_PolyInfo(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWallR__12dBgS_AcchCirFf(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP10fopAc_ac_ciP12dBgS_AcchCir(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__15dBgS_LinkLinChkFv(); -extern "C" void __dt__15dBgS_LinkLinChkFv(); -extern "C" void SetLink__16dBgS_PolyPassChkFv(); -extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void GetAtHitGObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void StartCAt__8dCcD_CylFR4cXyz(); -extern "C" void MoveCAt__8dCcD_CylFR4cXyz(); -extern "C" void Set__12dCcMassS_MngFP8cCcD_ObjUc(); -extern "C" void getAlinkArcName__9daAlink_cFv(); -extern "C" void checkStageName__9daAlink_cFPCc(); -extern "C" void getSpinnerGravity__9daAlink_cCFv(); -extern "C" void getSpinnerMaxFallSpeed__9daAlink_cCFv(); -extern "C" void getSpinnerJumpRate__9daAlink_cCFv(); -extern "C" void getSpinnerRideMoveTime__9daAlink_cFv(); -extern "C" void getSpinnerRideSpeedF__9daAlink_cFv(); -extern "C" void getSpinnerRideDecSpeedMax__9daAlink_cCFv(); -extern "C" void getSpinnerRideDecSpeedMin__9daAlink_cCFv(); -extern "C" void getSpinnerRideDecSpeedRate__9daAlink_cCFv(); -extern "C" void getSpinnerRideRotAngleMax__9daAlink_cCFv(); -extern "C" void getSpinnerRideRotAngleMin__9daAlink_cCFv(); -extern "C" void dCam_getControledAngleY__FP12camera_class(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_pol_sound_get__FPC13cBgS_PolyInfo(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void normalizeZP__4cXyzFv(); -extern "C" void atan2sX_Z__4cXyzCFv(); -extern "C" void atan2sY_XZ__4cXyzCFv(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void cM3d_Len3dSqPntAndSegLine__FPC8cM3dGLinPC3VecP3VecPf(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void SetStartEnd__8cM3dGLinFRC3VecRC3Vec(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_chasePosXZ__FP4cXyzRC4cXyzf(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_distanceAngleS__Fss(); -extern "C" void func_802807E0(); -extern "C" void __dt__14Z2SoundObjBaseFv(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_21(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_21(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29();; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" extern void* __vt__16Z2SoundObjSimple[8]; -extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 804D4D90-804D4D9C 000000 000C+00 9/9 0/0 0/0 .rodata @3768 */ -SECTION_RODATA static u8 const lit_3768[12] = { +static u8 const lit_3768[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -COMPILER_STRIP_GATE(0x804D4D90, &lit_3768); - -/* 804D4D9C-804D4DA0 00000C 0004+00 1/8 0/0 0/0 .rodata @4168 */ -SECTION_RODATA static f32 const lit_4168 = 1.0f; -COMPILER_STRIP_GATE(0x804D4D9C, &lit_4168); /* 804D198C-804D1A50 0000EC 00C4+00 1/1 0/0 0/0 .text createHeap__11daSpinner_cFv */ int daSpinner_c::createHeap() { @@ -203,85 +24,20 @@ int daSpinner_c::createHeap() { if (mpModel == NULL) { return 0; } - field_0x588 = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x16); - return mBck.init(field_0x588, 1, 2, 1.0f, 0, -1, false) != 0 ? 1 : 0; -} + mpSpoutBck = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x16); + if (!mBck.init(mpSpoutBck, 1, 2, 1.0f, 0, -1, false)) { + return 0; + } + + return 1; +} /* 804D1A50-804D1A70 0001B0 0020+00 1/1 0/0 0/0 .text daSpinner_createHeap__FP10fopAc_ac_c */ static int daSpinner_createHeap(fopAc_ac_c* i_this) { - return static_cast(i_this)->createHeap(); + return ((daSpinner_c*)i_this)->createHeap(); } -/* ############################################################################################## */ -/* 804D4DA0-804D4DA4 000010 0004+00 0/1 0/0 0/0 .rodata @4241 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4241 = 10000.0f; -COMPILER_STRIP_GATE(0x804D4DA0, &lit_4241); -#pragma pop - -/* 804D4DA4-804D4DA8 000014 0004+00 0/1 0/0 0/0 .rodata @4242 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4242 = 0x42480A3D; -COMPILER_STRIP_GATE(0x804D4DA4, &lit_4242); -#pragma pop - -/* 804D4DA8-804D4DAC 000018 0004+00 0/4 0/0 0/0 .rodata @4243 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4243 = 58.0f; -COMPILER_STRIP_GATE(0x804D4DA8, &lit_4243); -#pragma pop - -/* 804D4DAC-804D4DB0 00001C 0004+00 0/1 0/0 0/0 .rodata @4244 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4244 = 0x4301FD71; -COMPILER_STRIP_GATE(0x804D4DAC, &lit_4244); -#pragma pop - -/* 804D4DB0-804D4DB4 000020 0004+00 0/1 0/0 0/0 .rodata @4245 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4245 = 35.0f; -COMPILER_STRIP_GATE(0x804D4DB0, &lit_4245); -#pragma pop - -/* 804D4DB4-804D4DB8 000024 0004+00 0/1 0/0 0/0 .rodata @4246 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4246 = 85.0f; -COMPILER_STRIP_GATE(0x804D4DB4, &lit_4246); -#pragma pop - -/* 804D4DB8-804D4DC0 000028 0004+04 0/9 0/0 0/0 .rodata @4247 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4247[4 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x804D4DB8, &lit_4247); -#pragma pop - -/* 804D4DC0-804D4DC8 000030 0008+00 0/2 0/0 0/0 .rodata @4249 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4249[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804D4DC0, &lit_4249); -#pragma pop - /* 804D4EA8-804D4EEC 000000 0044+00 1/1 0/0 0/0 .data l_cylSrc */ static dCcD_SrcCyl l_cylSrc = { { @@ -297,157 +53,64 @@ static dCcD_SrcCyl l_cylSrc = { } }; -/* 804D4EEC-804D4F0C -00001 0020+00 1/0 0/0 0/0 .data l_daSpinner_Method */ -static actor_method_class l_daSpinner_Method = { - (process_method_func)daSpinner_Create__FP10fopAc_ac_c, - (process_method_func)daSpinner_Delete__FP11daSpinner_c, - (process_method_func)daSpinner_Execute__FP11daSpinner_c, - 0, - (process_method_func)daSpinner_Draw__FP11daSpinner_c, -}; - -/* 804D4F0C-804D4F3C -00001 0030+00 0/0 0/0 1/0 .data g_profile_SPINNER */ -extern actor_process_profile_definition g_profile_SPINNER = { - fpcLy_CURRENT_e, // mLayerID - 4, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_SPINNER, // mProcName - &g_fpcLf_Method.base, // sub_method - 0x00000ABC, // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 687, // mPriority - &l_daSpinner_Method, // sub_method - 0x00060000, // mStatus - fopAc_UNK_GROUP_5_e, // mActorType - fopAc_CULLBOX_0_e, // cullType -}; - -/* 804D4F3C-804D4F48 000094 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 804D4F48-804D4F54 0000A0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGLin */ -SECTION_DATA extern void* __vt__8cM3dGLin[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGLinFv, -}; - -/* 804D4F54-804D4F60 0000AC 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 804D4F60-804D4F6C 0000B8 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 804D4F6C-804D4F78 0000C4 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 804D4F78-804D4F84 0000D0 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 804D4F84-804D4F90 0000DC 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 804D4F90-804D4FB4 0000E8 0024+00 3/3 0/0 0/0 .data __vt__13dBgS_LinkAcch */ -SECTION_DATA extern void* __vt__13dBgS_LinkAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13dBgS_LinkAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_804D4D78, - (void*)NULL, - (void*)NULL, - (void*)func_804D4D70, -}; - -/* 804D4FB4-804D4FC0 00010C 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - /* 804D1A70-804D1D60 0001D0 02F0+00 1/1 0/0 0/0 .text create__11daSpinner_cFv */ int daSpinner_c::create() { - // NONMATCHING -} + fopAcM_SetupActor(this, daSpinner_c); -/* 804D1D60-804D1DA8 0004C0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} + if (!fopAcM_entrySolidHeap(this, daSpinner_createHeap, 0x900)) { + return cPhs_ERROR_e; + } -/* 804D1DA8-804D1DF0 000508 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} + daAlink_c* player = daAlink_getAlinkActorClass(); + + mAcch.Set(this, 3, mAcchCir); + mAcch.SetWaterCheckOffset(10000.0f); + mAcch.OnLineCheck(); + mAcch.SetWtrChkMode(2); -/* 804D1DF0-804D1E4C 000550 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} + mAcchCir[0].SetWall(50.01f, 58.0f); + mAcchCir[1].SetWall(129.99f, 35.0f); + mAcchCir[2].SetWall(player->field_0x598, 35.0f); -/* 804D1E4C-804D1E88 0005AC 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} + mPaPo.init(&mAcch, 85.0f, 85.0f); -/* 804D1E88-804D1EF8 0005E8 0070+00 3/2 0/0 0/0 .text __dt__13dBgS_LinkAcchFv */ -// dBgS_LinkAcch::~dBgS_LinkAcch() -extern "C" void __dt__13dBgS_LinkAcchFv() { - // NONMATCHING -} + mSound.init(¤t.pos, 1); -/* 804D1EF8-804D1F68 000658 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} + mStts.Init(200, 0, this); + mCyl.Set(l_cylSrc); + mCyl.SetStts(&mStts); + mCyl.StartCAt(current.pos); -/* 804D1F68-804D1FB0 0006C8 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING + this->model = mpModel; + + gravity = player->getSpinnerGravity(); + maxFallSpeed = player->getSpinnerMaxFallSpeed(); + field_0xa76 = 1; + + mAcch.CrrPos(dComIfG_Bgsp()); + + fopAcM_setStageLayer(this); + + mBck.setFrame(mBck.getEndFrame()); + mBck.setPlaySpeed(0.0f); + + setMatrix(); + setRoomInfo(); + field_0xa82 = 0x82F; + + return cPhs_COMPLEATE_e; } /* 804D1FB0-804D1FD0 000710 0020+00 1/0 0/0 0/0 .text daSpinner_Create__FP10fopAc_ac_c */ static int daSpinner_Create(fopAc_ac_c* i_this) { - return static_cast(i_this)->create(); + return ((daSpinner_c*)i_this)->create(); } /* 804D1FD0-804D21B8 000730 01E8+00 1/1 0/0 0/0 .text __dt__11daSpinner_cFv */ daSpinner_c::~daSpinner_c() { - // NONMATCHING + mSound.deleteObject(); + clearSpreadEffect(); + clearPathMove(); } /* 804D21B8-804D21E0 000918 0028+00 1/0 0/0 0/0 .text daSpinner_Delete__FP11daSpinner_c @@ -465,10 +128,10 @@ void daSpinner_c::setRoomInfo() { tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(mAcch.m_gnd); } else { roomNo = dComIfGp_roomControl_getStayNo(); - } + tevStr.room_no = roomNo; - field_0xa6e = dComIfGp_getReverb(roomNo); + mReverb = dComIfGp_getReverb(roomNo); mStts.SetRoomId(roomNo); fopAcM_SetRoomNo(this, roomNo); } @@ -477,233 +140,231 @@ void daSpinner_c::setRoomInfo() { void daSpinner_c::setMatrix() { mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0xa84 + 90.0f, current.pos.z); mDoMtx_stack_c::ZXYrotM(shape_angle); - mDoMtx_stack_c::YrotM(field_0xa7e); - MTXCopy(mDoMtx_stack_c::now, mpModel->mBaseTransformMtx); + mDoMtx_stack_c::YrotM(mRotY); + + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); mBck.entry(mpModel->getModelData()); mpModel->calc(); } -/* ############################################################################################## */ -/* 804D4DD0-804D4DD4 000040 0004+00 0/1 0/0 0/0 .rodata @4591 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4591 = 1.5f; -COMPILER_STRIP_GATE(0x804D4DD0, &lit_4591); -#pragma pop - -/* 804D4DD4-804D4DD8 000044 0004+00 0/2 0/0 0/0 .rodata @4592 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4592 = 3.0f; -COMPILER_STRIP_GATE(0x804D4DD4, &lit_4592); -#pragma pop - -/* 804D4DD8-804D4DDC 000048 0004+00 0/1 0/0 0/0 .rodata @4593 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4593 = 2.0f; -COMPILER_STRIP_GATE(0x804D4DD8, &lit_4593); -#pragma pop - -/* 804D4FC8-804D4FCC 000008 0001+03 1/1 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 804D4FCC-804D4FD0 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ -#pragma push -#pragma force_active on -static u8 lit_1107[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FD0-804D4FD4 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ -#pragma push -#pragma force_active on -static u8 lit_1105[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FD4-804D4FD8 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ -#pragma push -#pragma force_active on -static u8 lit_1104[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FD8-804D4FDC 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ -#pragma push -#pragma force_active on -static u8 lit_1099[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FDC-804D4FE0 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ -#pragma push -#pragma force_active on -static u8 lit_1097[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FE0-804D4FE4 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ -#pragma push -#pragma force_active on -static u8 lit_1095[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FE4-804D4FE8 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ -#pragma push -#pragma force_active on -static u8 lit_1094[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FE8-804D4FEC 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ -#pragma push -#pragma force_active on -static u8 lit_1057[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FEC-804D4FF0 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ -#pragma push -#pragma force_active on -static u8 lit_1055[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FF0-804D4FF4 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ -#pragma push -#pragma force_active on -static u8 lit_1053[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FF4-804D4FF8 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ -#pragma push -#pragma force_active on -static u8 lit_1052[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FF8-804D4FFC 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ -#pragma push -#pragma force_active on -static u8 lit_1014[1 + 3 /* padding */]; -#pragma pop - -/* 804D4FFC-804D5000 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ -#pragma push -#pragma force_active on -static u8 lit_1012[1 + 3 /* padding */]; -#pragma pop - -/* 804D5000-804D5004 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ -#pragma push -#pragma force_active on -static u8 lit_1010[1 + 3 /* padding */]; -#pragma pop - -/* 804D5004-804D5008 000044 0001+03 0/0 0/0 0/0 .bss @1009 */ -#pragma push -#pragma force_active on -static u8 lit_1009[1 + 3 /* padding */]; -#pragma pop - -/* 804D5008-804D5014 000048 000C+00 0/1 0/0 0/0 .bss effDirection$4433 */ -#pragma push -#pragma force_active on -static u8 effDirection[12]; -#pragma pop - -/* 804D5014-804D5024 000054 000C+04 0/1 0/0 0/0 .bss @4437 */ -#pragma push -#pragma force_active on -static u8 lit_4437[12 + 4 /* padding */]; -#pragma pop - -/* 804D5024-804D5030 000064 000C+00 0/1 0/0 0/0 .bss particleScale$4436 */ -#pragma push -#pragma force_active on -static u8 particleScale[12]; -#pragma pop +UNK_REL_BSS /* 804D2320-804D25F4 000A80 02D4+00 1/1 0/0 0/0 .text setEffect__11daSpinner_cFv */ void daSpinner_c::setEffect() { - // NONMATCHING + static JGeometry::TVec3 effDirection(0.0f, 1.0f, 0.0f); + static cXyz particleScale(1.5f, 1.5f, 1.5f); + + cXyz effCenter(current.pos); + cXyz* sp24 = NULL; + + if (mAcch.ChkWaterHit() && dComIfG_Bgsp().GetPolyAtt0(mAcch.m_wtr) != 6) { + if (mAcch.m_wtr.GetHeight() > mAcch.GetGroundH() && mAcch.m_wtr.GetHeight() > effCenter.y) { + effCenter.y = mAcch.m_wtr.GetHeight(); + sp24 = &effCenter; + } + } + + if (sp24 == NULL && mAcch.ChkGroundHit()) { + effCenter.y = mAcch.GetGroundH(); + + int sp20 = dComIfG_Bgsp().GetGroundCode(mAcch.m_gnd); + if (sp20 != 4 && sp20 != 10) { + sp24 = &effCenter; + } + } + + mPaPo.setEffectCenter(&tevStr, &effCenter, 4, 0x60000, sp24, ¤t.angle, NULL, fopAcM_GetRoomNo(this), 0.0f, speedF); + + for (int i = 0; i < 2; i++) { + u8 eff_type = mPaPo.getCenterEffType(i); + for (int j = 0; j < 4; j++) { + JPABaseEmitter* emitter = mPaPo.getCenterEmitter(i, j); + + if (emitter != NULL) { + emitter->setDirection(effDirection); + + if (eff_type == 0) { + emitter->setDirectionalSpeed(1.0f); + emitter->setGlobalParticleScale(particleScale); + } else if (eff_type == 1) { + emitter->setAwayFromCenterSpeed(3.0f); + emitter->setAwayFromAxisSpeed(3.0f); + emitter->setDirectionalSpeed(3.0f); + } else if (eff_type == 3) { + emitter->setRate(1.5f); + emitter->setAwayFromAxisSpeed(1.0f); + emitter->setGlobalParticleScale(particleScale); + } else if (eff_type == 4) { + emitter->setRate(1.5f); + emitter->setAwayFromCenterSpeed(2.0f); + emitter->setGlobalParticleScale(particleScale); + } + } + } + } } -/* ############################################################################################## */ -/* 804D4DDC-804D4DE0 00004C 0004+00 0/2 0/0 0/0 .rodata @4930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4930 = -20.0f; -COMPILER_STRIP_GATE(0x804D4DDC, &lit_4930); -#pragma pop - -/* 804D4DE0-804D4DE8 000050 0004+04 0/1 0/0 0/0 .rodata @4931 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4931[1 + 1 /* padding */] = { - 0x4250CCCC, - /* padding */ - 0x00000000, -}; -COMPILER_STRIP_GATE(0x804D4DE0, &lit_4931); -#pragma pop - -/* 804D4DE8-804D4DF0 000058 0008+00 0/3 0/0 0/0 .rodata @4932 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4932[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804D4DE8, &lit_4932); -#pragma pop - -/* 804D4DF0-804D4DF8 000060 0008+00 0/3 0/0 0/0 .rodata @4933 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4933[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804D4DF0, &lit_4933); -#pragma pop - -/* 804D4DF8-804D4E00 000068 0008+00 0/3 0/0 0/0 .rodata @4934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4934[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804D4DF8, &lit_4934); -#pragma pop - -/* 804D4E00-804D4E04 000070 0004+00 0/1 0/0 0/0 .rodata @4935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4935 = 0x3BB6365E; -COMPILER_STRIP_GATE(0x804D4E00, &lit_4935); -#pragma pop - -/* 804D4E04-804D4E08 000074 0004+00 0/1 0/0 0/0 .rodata @4936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4936 = 0x4333D588; -COMPILER_STRIP_GATE(0x804D4E04, &lit_4936); -#pragma pop - -/* 804D4E08-804D4E0C 000078 0004+00 0/1 0/0 0/0 .rodata @4937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4937 = 29.0f; -COMPILER_STRIP_GATE(0x804D4E08, &lit_4937); -#pragma pop - -/* 804D4E0C-804D4E10 00007C 0004+00 0/1 0/0 0/0 .rodata @4938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4938 = 50.0f; -COMPILER_STRIP_GATE(0x804D4E0C, &lit_4938); -#pragma pop - /* 804D25F4-804D3048 000D54 0A54+00 1/1 0/0 0/0 .text posMove__11daSpinner_cFv */ int daSpinner_c::posMove() { - // NONMATCHING -} + daAlink_c* player = daAlink_getAlinkActorClass(); + + f32 move_speed; + if (!player->checkDemoSpinnerKeep()) { + if (player->checkDemoSpinnerKeepSpeed()) { + speedF = player->getSpinnerRideSpeedF(); + } + move_speed = speedF * cM_scos(current.angle.x); + } else { + move_speed = 0.0f; + } -/* 804D3048-804D3090 0017A8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */ -// cM3dGLin::~cM3dGLin() -extern "C" void __dt__8cM3dGLinFv() { - // NONMATCHING + if (mpPathMove == NULL) { + speed.y += gravity; + if (speed.y < maxFallSpeed) { + speed.y = maxFallSpeed; + } + } + + current.pos.x += move_speed * cM_ssin(current.angle.y); + current.pos.y += speed.y - (speedF * cM_ssin(current.angle.x)); + current.pos.z += move_speed * cM_scos(current.angle.y); + + if (mpPathMove != NULL) { + f32 var_f31 = speedF; + cM3dGLin sp60; + cXyz sp54; + + while (var_f31 > 0.0f) { + Vec* curr_path_pos = &mpPathMove->m_points[mPathNo].m_position; + Vec* next_path_pos = getPathNextPos(); + + cXyz sp48(current.pos.x, current.pos.y - -20.0f, current.pos.z); + cXyz sp3C(curr_path_pos->x - next_path_pos->x, curr_path_pos->y - next_path_pos->y, curr_path_pos->z - next_path_pos->z); + + int spC; + s16 spA = sp3C.atan2sX_Z(); + sp3C.normalizeZP(); + sp3C *= 58.0f; + + sp3C.x += curr_path_pos->x; + sp3C.y += curr_path_pos->y; + sp3C.z += curr_path_pos->z; + + sp60.set(sp3C, *next_path_pos); + + f32 sp10; + if (!cM3d_Len3dSqPntAndSegLine(&sp60, &sp48, &sp54, &sp10)) { + if (setNextPathNum() && (mPathNo == 0 || mPathNo == mpPathMove->m_num - 1) && !dPath_ChkClose(mpPathMove)) { + var_f31 = 0.0f; + if (mpPathMove->m_points[mPathNo].mArg0 == 0) { + u8 sp8 = mPathNo; + setReflectAngle(); + mPathNo = sp8; + + if ((s16)(cM_atan2s(current.pos.x - next_path_pos->x, current.pos.z - next_path_pos->z) - spA) > 0) { + spA += 0x4000; + } else { + spA -= 0x4000; + } + + field_0xab0.set(next_path_pos->x, next_path_pos->y, next_path_pos->z); + current.pos.set(next_path_pos->x + (52.199997f * cM_ssin(spA)), -20.0f + next_path_pos->y, next_path_pos->z + (52.199997f * cM_scos(spA))); + } else { + clearPathMove(); + field_0xa74 = 1; + } + } else { + var_f31 -= field_0xab0.abs(*next_path_pos); + field_0xab0.set(next_path_pos->x, next_path_pos->y, next_path_pos->z); + + sp3C = sp48 - field_0xab0; + if ((s16)(sp3C.atan2sX_Z() - current.angle.y) > 0) { + spC = 1; + } else { + spC = -1; + } + } + + if (mpPathMove != NULL) { + curr_path_pos = &mpPathMove->m_points[mPathNo].m_position; + next_path_pos = getPathNextPos(); + sp3C.set(next_path_pos->x - curr_path_pos->x, next_path_pos->y - curr_path_pos->y, next_path_pos->z - curr_path_pos->z); + + spA = current.angle.y; + current.angle.y = sp3C.atan2sX_Z(); + current.angle.x = sp3C.atan2sY_XZ(); + + if (var_f31 > 0.0f) { + spA = current.angle.y - spA; + var_f31 += 0.0055606803f * spA * spC; + + if (var_f31 > 0.0f) { + sp3C.normalizeZP(); + spA = current.angle.y + (spC << 0xE); + current.pos.set(curr_path_pos->x + (sp3C.x * var_f31), -20.0f + (curr_path_pos->y + (sp3C.y * var_f31)), curr_path_pos->z + (sp3C.z * var_f31)); + } else { + spA = (spC << 0xE) + (current.angle.y + (spC * (179.8341f * fabsf(var_f31)))); + current.pos.set(curr_path_pos->x, -20.0f + curr_path_pos->y, curr_path_pos->z); + } + + current.pos.x += 29.0f * cM_ssin(spA); + current.pos.z += 29.0f * cM_scos(spA); + old.pos = current.pos; + } + } + } else { + var_f31 = 0.0f; + field_0xab0 = sp54; + } + } + } else if (mStts.GetCCMoveP() != NULL) { + current.pos += *mStts.GetCCMoveP(); + } + + mAcch.CrrPos(dComIfG_Bgsp()); + + if (mpPathMove == NULL) { + if (!mJumpFlg) { + if (!mAcch.ChkGroundHit()) { + if (current.angle.x < 0) { + mJumpFlg = true; + speed.y = speedF; + if (speed.y > player->getSpinnerRideSpeedF()) { + speed.y = player->getSpinnerRideSpeedF(); + } + speed.y *= -player->getSpinnerJumpRate() * cM_ssin(current.angle.x); + } else { + f32 temp_f28 = mAcch.GetGroundH() - current.pos.y; + f32 var_f29 = current.pos.absXZ(old.pos) * cM_ssin(fopAcM_getPolygonAngle(mAcch.m_gnd, current.angle.y)); + if (var_f29 < 0.0f) { + var_f29 = 0.0f; + } + + if (temp_f28 < 0.0f && temp_f28 >= -mAcchCir[0].GetWallH() - var_f29) { + current.pos.y = mAcch.GetGroundH(); + mAcch.SetGroundHit(); + speed.y = 0.0f; + } else { + mJumpFlg = true; + } + } + } + } else if (mAcch.ChkGroundHit()) { + mJumpFlg = false; + } else { + mJumpFlg = true; + } + } + + if (mAcch.ChkWaterHit()) { + f32 temp_f27 = mAcch.m_wtr.GetHeight() - current.pos.y; + if ((temp_f27 > 50.0f || (dComIfG_Bgsp().GetPolyAtt0(mAcch.m_wtr) == 6 && temp_f27 >= 0.0f))) { + mDeleteFlg = true; + return 0; + } + } + + return 1; } /* 804D3090-804D3174 0017F0 00E4+00 3/3 0/0 0/0 .text setReflectAngle__11daSpinner_cFv */ @@ -711,283 +372,557 @@ void daSpinner_c::setReflectAngle() { if (mpPathMove != NULL) { current.angle.y += 0x8000; current.angle.x *= -1; + setNextPathNum(); - field_0xa73 *= -1; + + mPathDirection *= -1; field_0xa76 *= -1; } else { s16 angle = current.angle.y - field_0xa80; - int l_abs = abs(angle); - if (l_abs > 0x4800) { + if (abs(angle) > 0x4800) { current.angle.y = (field_0xa80 << 1) - (current.angle.y + 0x8000); - } - else if (angle > 0x3800) { + } else if (angle > 0x3800) { current.angle.y = field_0xa80 + 0x3800; - } - else if (angle < -0x3800) { + } else if (angle < -0x3800) { current.angle.y = field_0xa80 - 0x3800; } } } -/* ############################################################################################## */ -/* 804D4E10-804D4E14 000080 0004+00 0/1 0/0 0/0 .rodata @5053 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5053 = -1.0f; -COMPILER_STRIP_GATE(0x804D4E10, &lit_5053); -#pragma pop - /* 804D3174-804D3468 0018D4 02F4+00 1/1 0/0 0/0 .text setWallHit__11daSpinner_cFsUl */ void daSpinner_c::setWallHit(s16 param_0, u32 param_1) { - // NONMATCHING -} + field_0xa80 = param_0; + setReflectAngle(); -/* 804D3468-804D34B0 001BC8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} + cXyz line_start(current.pos.x, current.pos.y + mAcchCir[0].GetWallH(), current.pos.z); + cXyz line_end(current.pos.x - (mAcchCir[0].GetWallR() * cM_ssin(param_0)), line_start.y, current.pos.z - (mAcchCir[0].GetWallR() * cM_scos(param_0))); + mLinChk.Set(&line_start, &line_end, this); + + csXyz spC; + cXyz* var_r29; + if (dComIfG_Bgsp().LineCross(&mLinChk)) { + cM3dGPla plane; + dComIfG_Bgsp().GetTriPla(mLinChk, &plane); + var_r29 = mLinChk.GetCrossP(); -/* ############################################################################################## */ -/* 804D4E14-804D4E18 000084 0004+00 0/1 0/0 0/0 .rodata @5091 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5091 = 20.0f; -COMPILER_STRIP_GATE(0x804D4E14, &lit_5091); -#pragma pop + spC.set(cM_atan2s(plane.mNormal.y, plane.mNormal.absXZ()), cM_atan2s(-plane.mNormal.x, -plane.mNormal.z), 0); + } else { + var_r29 = &line_end; + spC.set(0, param_0 + 0x8000, 0); + } + + if (field_0xa78 == 0) { + daAlink_getAlinkActorClass()->itemHitSE(Z2SE_HIT_SPINNER, param_1, &mSound); + field_0xa78 = 10; + + if (field_0xa79 == 0) { + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f)); + dComIfGp_setHitMark(9, NULL, var_r29, &spC, NULL, 0); + } + } +} /* 804D34B0-804D3618 001C10 0168+00 1/1 0/0 0/0 .text setAnm__11daSpinner_cFv */ void daSpinner_c::setAnm() { - if (mBck.isStop() && field_0xa75 != 0) { - mBck.init(field_0x588, 1, -1, 1.0f, 0, -1, true); + if (mBck.isStop() && mTrigJump) { + mBck.init(mpSpoutBck, 1, -1, 1.0f, 0, -1, true); daAlink_getAlinkActorClass()->seStartOnlyReverb(Z2SE_AL_SPINNER_EXTEND); dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f)); - if (mJumpFlg == 0) { + + if (!mJumpFlg) { speed.y = 20.0f; - mJumpFlg = 1; - mButtonJump = 1; + mJumpFlg = true; + mButtonJump = true; } + if (mpPathMove != NULL) { - s16 targetAngle = cLib_targetAngleY(&mpPathMove->m_points[field_0xa72].m_position, ¤t.pos); + s16 targetAngle = cLib_targetAngleY(&mpPathMove->m_points[mPathNo].m_position, ¤t.pos); if (s16(targetAngle - current.angle.y) > 0) { current.angle.y += 0x3000; } else { current.angle.y -= 0x3000; } + clearPathMove(); mAcch.ClrWallHit(); } } } - /* 804D3618-804D3694 001D78 007C+00 2/2 0/0 0/0 .text setNextPathNum__11daSpinner_cFv */ int daSpinner_c::setNextPathNum() { - if (field_0xa72 == 0 && field_0xa73 == -1) { - field_0xa72 = mpPathMove->m_num - 1; - } else if (field_0xa72 == mpPathMove->m_num - 1 && field_0xa73 == 1) { - field_0xa72 = 0; + if (mPathNo == 0 && mPathDirection == -1) { + mPathNo = mpPathMove->m_num - 1; + } else if (mPathNo == mpPathMove->m_num - 1 && mPathDirection == 1) { + mPathNo = 0; } else { - field_0xa72 += field_0xa73; + mPathNo += mPathDirection; return 1; } + return 0; } /* 804D3694-804D36F4 001DF4 0060+00 1/1 0/0 0/0 .text getPathNextPos__11daSpinner_cFv */ Vec* daSpinner_c::getPathNextPos() { - s32 add = field_0xa72 + field_0xa73; - if (add < 0) { + int next_point_no = mPathNo + mPathDirection; + if (next_point_no < 0) { return &(mpPathMove->m_points + mpPathMove->m_num - 1)->m_position; } - if (add >= mpPathMove->m_num) { - return &mpPathMove->m_points->m_position; + + if (next_point_no >= mpPathMove->m_num) { + return &mpPathMove->m_points[0].m_position; } - return &mpPathMove->m_points[add].m_position; + + return &mpPathMove->m_points[next_point_no].m_position; } /* 804D36F4-804D3774 001E54 0080+00 1/1 0/0 0/0 .text checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz */ int daSpinner_c::checkLineWallHit(cXyz* i_start, cXyz* i_end) { mLinChk.Set(i_start, i_end, this); - if (dComIfG_Bgsp().LineCross(&mLinChk) != 0) { - if (dBgS_CheckBWallPoly(mLinChk) != 0 || daAlink_c::checkStageName("D_MN10A") != 0) { + if (dComIfG_Bgsp().LineCross(&mLinChk)) { + if (dBgS_CheckBWallPoly(mLinChk) || daAlink_c::checkStageName("D_MN10A")) { return 1; } } + return 0; } -/* ############################################################################################## */ -/* 804D4E18-804D4E24 000088 000C+00 0/1 0/0 0/0 .rodata sideCheckVec0$5143 */ -#pragma push -#pragma force_active on -static const Vec sideCheckVec0 = { - 30.0f, 10.0f, 5.0f, -}; -#pragma pop - -/* 804D4E24-804D4E30 000094 000C+00 0/1 0/0 0/0 .rodata sideCheckVec1$5144 */ -#pragma push -#pragma force_active on -static const Vec sideCheckVec1 = { - -30.0f, 10.0f, 5.0f, -}; -#pragma pop - -/* 804D4E30-804D4E3C 0000A0 000C+00 0/1 0/0 0/0 .rodata initSide0$5145 */ -#pragma push -#pragma force_active on -static const Vec initSide0 = { - 53.0f, 0.0f, 0.0f, -}; -#pragma pop - -/* 804D4E3C-804D4E48 0000AC 000C+00 0/1 0/0 0/0 .rodata initSide1$5146 */ -#pragma push -#pragma force_active on -static const Vec initSide1 = { - -53.0f, 0.0f, 0.0f, -}; -#pragma pop - -/* 804D4E48-804D4E54 0000B8 000C+00 0/1 0/0 0/0 .rodata initSideOld0$5147 */ -#pragma push -#pragma force_active on -static const Vec initSideOld0 = { - 78.0f, 0.0f, 0.0f, -}; -#pragma pop - -/* 804D4E54-804D4E60 0000C4 000C+00 0/1 0/0 0/0 .rodata initSideOld1$5148 */ -#pragma push -#pragma force_active on -static const Vec initSideOld1 = { - -78.0f, 0.0f, 0.0f, -}; -#pragma pop - -/* 804D4E60-804D4E68 0000D0 0008+00 0/1 0/0 0/0 .rodata @5295 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5295[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804D4E60, &lit_5295); -#pragma pop - /* 804D3774-804D3D60 001ED4 05EC+00 1/1 0/0 0/0 .text checkPathMove__11daSpinner_cFv */ int daSpinner_c::checkPathMove() { - // NONMATCHING + if (mpPathMove != NULL) { + return 1; + } + + daTagSppath_c* sppath_tag = (daTagSppath_c*)mCyl.GetAtHitAc(); + + if (mCyl.ChkAtHit() && mSpinnerTag == TAG_NONE && sppath_tag != NULL && fopAcM_GetName(sppath_tag) == PROC_Tag_Sppath) { + if (sppath_tag->getKeepPath() == field_0xa68) { + return 0; + } + + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 1, cXyz(0.0f, 1.0f, 0.0f)); + mpPathMove = sppath_tag->getKeepPath(); + field_0xa68 = mpPathMove; + mJumpFlg = false; + speed.y = 0.0f; + + int var_r27 = sppath_tag->getKeepPointNum(); + int sp10; + if (var_r27 != mpPathMove->m_num - 1) { + sp10 = var_r27 + 1; + } else if (dPath_ChkClose(mpPathMove)) { + sp10 = 0; + } else { + sp10 = var_r27; + var_r27--; + } + + dStage_dPnt_c* temp_r26 = &mpPathMove->m_points[var_r27]; + dStage_dPnt_c* temp_r25 = &mpPathMove->m_points[sp10]; + cXyz sp50(temp_r25->m_position.x - temp_r26->m_position.x, + temp_r25->m_position.y - temp_r26->m_position.y, + temp_r25->m_position.z - temp_r26->m_position.z); + + s16 sp8 = sp50.atan2sX_Z(); + cXyz sp44; + cXyz sp38; + cXyz sp2C; + cXyz sp20; + + static const Vec sideCheckVec0 = {30.0f, 10.0f, 5.0f}; + static const Vec sideCheckVec1 = {-30.0f, 10.0f, 5.0f}; + static const Vec initSide0 = {53.0f, 0.0f, 0.0f}; + static const Vec initSide1 = {-53.0f, 0.0f, 0.0f}; + static const Vec initSideOld0 = {78.0f, 0.0f, 0.0f}; + static const Vec initSideOld1 = {-78.0f, 0.0f, 0.0f}; + + mDoMtx_stack_c::transS(sppath_tag->current.pos); + mDoMtx_stack_c::YrotM(sp8); + mDoMtx_stack_c::multVec(&sideCheckVec0, &sp44); + mDoMtx_stack_c::multVec(&sideCheckVec1, &sp38); + + int var_r24 = 0; + int spC = 1; + cM3dGPla sp5C; + + if (checkLineWallHit(&sp44, &sp38)) { + var_r24 = 1; + mDoMtx_stack_c::multVec(&initSide0, &sp2C); + mDoMtx_stack_c::multVec(&initSideOld0, &sp20); + } else if (checkLineWallHit(&sp38, &sp44)) { + var_r24 = 1; + mDoMtx_stack_c::multVec(&initSide1, &sp2C); + mDoMtx_stack_c::multVec(&initSideOld1, &sp20); + spC = 0; + } else { + mDoMtx_stack_c::YrotM(-0x8000); + mDoMtx_stack_c::multVec(&sideCheckVec1, &sp44); + mDoMtx_stack_c::multVec(&sideCheckVec0, &sp38); + + if (checkLineWallHit(&sp44, &sp38)) { + var_r24 = 1; + mDoMtx_stack_c::multVec(&initSide1, &sp2C); + mDoMtx_stack_c::multVec(&initSideOld1, &sp20); + } else if (checkLineWallHit(&sp38, &sp44)) { + var_r24 = 1; + mDoMtx_stack_c::multVec(&initSide0, &sp2C); + mDoMtx_stack_c::multVec(&initSideOld0, &sp20); + spC = 0; + } + } + + if (sppath_tag->checkDirectionFront() || (sppath_tag->checkDirectionNone() && cLib_distanceAngleS(sp8, current.angle.y) < 0x4000)) { + current.angle.y = sp8; + current.angle.x = sp50.atan2sY_XZ(); + mPathNo = var_r27; + mPathDirection = 1; + + if (spC != 0) { + field_0xa76 = -1; + } else { + field_0xa76 = 1; + } + } else { + current.angle.y = sp8 + 0x8000; + current.angle.x = cM_atan2s(sp50.y, sp50.absXZ()); + mPathNo = sp10; + mPathDirection = -1; + + if (spC != 0) { + field_0xa76 = 1; + } else { + field_0xa76 = -1; + } + } + + if (var_r24 != 0) { + current.pos = sp2C; + old.pos = sp20; + old.pos.y += -20.0f; + } else { + current.pos = sppath_tag->current.pos; + } + + field_0xab0 = current.pos; + current.pos.y += -20.0f; + + mAcchCir[0].SetWallR(58.0f); + mCyl.SetR(58.0f); + + mRideMoveTime = daAlink_getAlinkActorClass()->getSpinnerRideMoveTime(); + + if (mpPathMove->field_0x7 == 0xFF) { + speedF = daAlink_getAlinkActorClass()->getSpinnerRideSpeedF(); + } else { + speedF = mpPathMove->field_0x7; + } + + return 1; + } + + field_0xa68 = 0; + return 0; } -/* 804D4E68-804D4E6C 0000D8 0004+00 0/1 0/0 0/0 .rodata effName$5299 */ -#pragma push -#pragma force_active on -static const u16 effName[2] = { - 2245, - 2246, -}; - -#pragma pop - -/* 804D4E6C-804D4E70 0000DC 0004+00 0/1 0/0 0/0 .rodata @5361 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5361 = 10.0f; -COMPILER_STRIP_GATE(0x804D4E6C, &lit_5361); -#pragma pop - /* 804D3D60-804D3F14 0024C0 01B4+00 1/1 0/0 0/0 .text setSpreadEffect__11daSpinner_cFv */ void daSpinner_c::setSpreadEffect() { - // NONMATCHING + u32* emitter_id = mSpreadEmitterIDs; + + mDoMtx_stack_c::copy(mpModel->getBaseTRMtx()); + if (field_0xa76 < 0) { + mDoMtx_stack_c::XrotM(0x7FFF); + } + + mDoMtx_stack_c::get()[1][3] -= 10.0f; + + for (int i = 0; i < 2; i++, emitter_id++) { + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(*emitter_id); + + if (reflectAccept() || (emitter != NULL && !emitter->isEnableDeleteEmitter())) { + static const u16 effName[2] = {0x8C5, 0x8C6}; + *emitter_id = dComIfGp_particle_set(*emitter_id, effName[i], ¤t.pos, &shape_angle, NULL); + } + + emitter = dComIfGp_particle_getEmitter(*emitter_id); + if (emitter != NULL) { + emitter->setGlobalRTMatrix(mDoMtx_stack_c::get()); + } + } } /* 804D3F14-804D3F8C 002674 0078+00 2/2 0/0 0/0 .text clearSpreadEffect__11daSpinner_cFv */ void daSpinner_c::clearSpreadEffect() { for (int i = 0; i < 2; i++) { - JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xa8c[i]); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mSpreadEmitterIDs[i]); if (emitter != NULL) { emitter->stopDrawParticle(); } } } -/* ############################################################################################## */ -/* 804D4E70-804D4E74 0000E0 0004+00 0/1 0/0 0/0 .rodata @5671 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5671 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x804D4E70, &lit_5671); -#pragma pop - -/* 804D4E74-804D4E78 0000E4 0004+00 0/1 0/0 0/0 .rodata @5672 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5672 = 2330.0f; -COMPILER_STRIP_GATE(0x804D4E74, &lit_5672); -#pragma pop - -/* 804D4E78-804D4E7C 0000E8 0004+00 0/1 0/0 0/0 .rodata @5673 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5673 = 17.0f / 20.0f; -COMPILER_STRIP_GATE(0x804D4E78, &lit_5673); -#pragma pop - -/* 804D4E7C-804D4E80 0000EC 0004+00 0/1 0/0 0/0 .rodata @5674 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5674 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x804D4E7C, &lit_5674); -#pragma pop - -/* 804D4E80-804D4E84 0000F0 0004+00 0/1 0/0 0/0 .rodata @5675 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5675 = 5.0f; -COMPILER_STRIP_GATE(0x804D4E80, &lit_5675); -#pragma pop - -/* 804D4E84-804D4E88 0000F4 0004+00 0/1 0/0 0/0 .rodata @5676 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5676 = 0.5f; -COMPILER_STRIP_GATE(0x804D4E84, &lit_5676); -#pragma pop - -/* 804D4E88-804D4E8C 0000F8 0004+00 0/1 0/0 0/0 .rodata @5677 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5677 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x804D4E88, &lit_5677); -#pragma pop - -/* 804D4E8C-804D4E90 0000FC 0004+00 0/1 0/0 0/0 .rodata @5678 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5678 = 2000.0f; -COMPILER_STRIP_GATE(0x804D4E8C, &lit_5678); -#pragma pop - -/* 804D4E90-804D4E94 000100 0004+00 0/1 0/0 0/0 .rodata @5679 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5679 = 9.0f; -COMPILER_STRIP_GATE(0x804D4E90, &lit_5679); -#pragma pop - -/* 804D4E94-804D4E98 000104 0004+00 0/1 0/0 0/0 .rodata @5680 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5680 = 100.0f; -COMPILER_STRIP_GATE(0x804D4E94, &lit_5680); -#pragma pop - /* 804D3F8C-804D4B94 0026EC 0C08+00 1/1 0/0 0/0 .text execute__11daSpinner_cFv */ int daSpinner_c::execute() { - // NONMATCHING + if (mDeleteFlg) { + clearSpreadEffect(); + fopAcM_delete(this); + return 1; + } + + int sp24 = 0; + mButtonJump = false; + + daAlink_c* player = daAlink_getAlinkActorClass(); + if (!player->checkGameOverWindow() && field_0xa78 != 0) { + field_0xa78--; + } + + f32 pad_stick_value; + s16 move_angle; + if (dComIfGp_event_runCheck()) { + pad_stick_value = 0.0f; + move_angle = 0; + mTrigJump = false; + } else { + if (mSpinnerTag != TAG_NONE || mpPathMove != NULL || (mJumpFlg && daAlink_c::checkStageName("D_MN10A") && dComIfGs_isZoneSwitch(6, dComIfGp_roomControl_getStayNo()) && dComIfGs_isZoneSwitch(7, dComIfGp_roomControl_getStayNo()))) { + pad_stick_value = 0.0f; + } else { + pad_stick_value = mDoCPd_c::getStickValue(PAD_1); + } + + move_angle = (mDoCPd_c::getStickAngle3D(PAD_1) + 0x10000 + dCam_getControledAngleY(dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)))) - 0x8000; + +#if VERSION == VERSION_SHIELD_DEBUG + if (dComIfG_getTrigB(PAD_1) && dComIfGp_getSelectItem(3) == fpcNm_ITEM_SPINNER) { +#else + if (dComIfG_getTrigA(PAD_1)) { +#endif + mTrigJump = true; + } else { + mTrigJump = false; + } + + if (fopAcM_GetParam(this) != 0 && mSpinnerTag == TAG_NONE) { + setAnm(); + } + } + + if (mPathForceRemove) { + if (mpPathMove != NULL) { + clearPathMove(); + mAcch.ClrWallHit(); + } + mPathForceRemove = false; + } + + bool sp10 = player->checkSpinnerRideOwn(this); + mRotY += field_0xa82 * field_0xa76; + if (reflectAccept()) { + mRotY += field_0xa76 * 2000; + } + + mBck.play(); + + mSound.framework(0, mReverb); + + if (fopAcM_GetParam(this) == 0) { + field_0xa7c += (int)(2330.0f * (0.85f + cM_rndF(0.3f))); + field_0xa84 = 5.0f * cM_ssin(field_0xa7c); + field_0xa98 = current.pos; + + if (sp10 != 0) { + current.angle.y = player->current.angle.y; + } else if (!player->checkSpinnerReady()) { + clearSpreadEffect(); + fopAcM_delete(this); + return 1; + } + } else if (mSpinnerTag != TAG_NONE) { + mRideMoveTime = player->getSpinnerRideMoveTime(); + speedF = player->getSpinnerRideSpeedF(); + mJumpFlg = false; + field_0xa76 = 1; + + if (mSpinnerTag == TAG_START) { + clearPathMove(); + + f32 temp_f30 = current.pos.y; + if (cLib_chasePosXZ(¤t.pos, field_0xaa4, speedF)) { + mSpinnerTag = 2; + speed.y = 0.0f; + field_0xa84 = 0.0f; + current.pos.y = temp_f30; + } + } else if (mSpinnerTag == 2) { + speed.y += gravity; + if (speed.y < maxFallSpeed) { + speed.y = maxFallSpeed; + } + + if (cLib_chaseF(¤t.pos.y, field_0xaa4.y, fabsf(speed.y))) { + mSpinnerTag = TAG_INTO; + field_0xa82 = 0x800; + + dComIfGp_particle_setPolyColor(0xE7, mAcch.m_gnd, &player->current.pos, &tevStr, NULL, NULL, 0, NULL, -1, NULL); + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 1, cXyz(0.0f, 1.0f, 0.0f)); + } + } else { + current.pos = field_0xaa4; + + if (mSpinnerTag != TAG_END) { + if (!dComIfGp_event_runCheck() && mTrigJump) { + field_0xa82 += 0x200; + if (field_0xa82 > 5000) { + field_0xa82 = 5000; + } + mSpinnerTag = TAG_INTO_INC_ROT; + } else { + field_0xa82 -= 0x40; + if (field_0xa82 < 0) { + field_0xa82 = 0; + } + mSpinnerTag = TAG_INTO; + } + } + } + } else { + field_0xa82 = 0x82F; + cLib_chaseF(&field_0xa84, 0.0f, 0.5f); + + if (mRideMoveTime == 0) { + if (cLib_addCalc(&speedF, 0.0f, player->getSpinnerRideDecSpeedRate(), player->getSpinnerRideDecSpeedMax(), player->getSpinnerRideDecSpeedMin()) < 0.1f) { + mDeleteFlg = true; + return 1; + } + } else if (!player->checkDemoSpinnerKeep() && mpPathMove == NULL) { + mRideMoveTime--; + } + + cM3dGPla tri; + s16 sp12; + if (mAcch.ChkGroundHit()) { + dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &tri); + sp12 = tri.mNormal.atan2sX_Z(); + } + + if (!checkPathMove()) { + if (mAcch.ChkWallHit() && field_0xa74 == 0) { + dBgS_AcchCir* acch_cir = mAcchCir; + for (int i = 0; i < 3; i++, acch_cir++) { + if (acch_cir->ChkWallHit()) { + setWallHit(acch_cir->GetWallAngleY(), dKy_pol_sound_get(acch_cir)); + break; + } + } + } else if (mAcch.ChkGroundHit() && tri.mNormal.y < player->getSlideLimit() && dComIfG_Bgsp().GetSpecialCode(mAcch.m_gnd) != 2 && abs((s16)(sp12 - current.angle.y)) > 0x4000) { + setWallHit(sp12, dKy_pol_sound_get(&mAcch.m_gnd)); + } else if (mCyl.ChkAtHit() && (mCyl.ChkAtShieldHit() || (mCyl.GetAtHitGObj() != NULL && ((dCcD_GObjInf*)mCyl.GetAtHitGObj())->ChkTgSpinnerReflect()))) { + cXyz sp58; + if (mCyl.GetAtHitAc() != NULL) { + sp58 = current.pos - mCyl.GetAtHitAc()->current.pos; + } else { + sp58 = current.pos - *mCyl.GetAtHitPosP(); + } + + field_0xa80 = sp58.atan2sX_Z(); + setReflectAngle(); + } else if (sp10 != 0 && pad_stick_value > 0.3f) { + cLib_addCalcAngleS(¤t.angle.y, move_angle, 4, player->getSpinnerRideRotAngleMax(), player->getSpinnerRideRotAngleMin()); + } + } + + if (sp10 != 0) { + mCyl.OffCoSPrmBit(0x10); + } else { + mCyl.OnCoSPrmBit(0x10); + } + + field_0xa74 = 0; + } + + s16 var_r27; + if (mSpinnerTag != TAG_NONE || mpPathMove != NULL || sp24 != 0) { + var_r27 = 0; + } else { + var_r27 = ((shape_angle.y - current.angle.y) / player->getSpinnerRideRotAngleMax()) * 1500; + } + + cLib_addCalcAngleS(&shape_angle.z, var_r27, 3, 300, 50); + + if (mSpinnerTag != TAG_NONE || mpPathMove != NULL) { + var_r27 = 0; + } else { + var_r27 = 2000.0f * (speedF / player->getSpinnerRideSpeedF()); + if (var_r27 > 2000) { + var_r27 = 2000; + } + } + + cLib_addCalcAngleS(&shape_angle.x, var_r27, 3, 300, 50); + shape_angle.y = current.angle.y; + + if (mSpinnerTag == TAG_NONE) { + if (!player->checkGameOverWindow() && !posMove()) { + return 1; + } + + if (!dComIfGp_event_runCheck() && speedF > 3.0f && field_0xa98.abs2XZ(current.pos) < 9.0f) { + field_0xa79++; + if (field_0xa79 > 30) { + mDeleteFlg = true; + } + } else { + field_0xa79 = 0; + field_0xa98 = current.pos; + } + } else { + field_0xa79 = 0; + field_0xa98 = current.pos; + cXyz sp4C(speed); + + mAcch.CrrPos(dComIfG_Bgsp()); + + current.pos = field_0xa98; + speed = sp4C; + } + + setRoomInfo(); + setMatrix(); + setEffect(); + + if (mpPathMove == NULL) { + if (mAcch.ChkGroundHit()) { + current.angle.x = fopAcM_getPolygonAngle(mAcch.m_gnd, current.angle.y); + } else { + current.angle.x = 0; + } + } + + mCyl.MoveCAt(current.pos); + dComIfG_Ccsp()->Set(&mCyl); + g_dComIfG_gameInfo.play.mCcs.mMass_Mng.Set(&mCyl, 1); + + if (reflectAccept()) { + if (mpPathMove != NULL) { + mAcchCir[0].SetWallR(58.0f); + mCyl.SetR(58.0f); + } else { + mAcchCir[0].SetWallR(100.0f); + mCyl.SetR(100.0f); + } + + mCyl.SetAtAtp(2); + } else { + mAcchCir[0].SetWallR(58.0f); + mCyl.SetR(58.0f); + mCyl.SetAtAtp(1); + } + + setSpreadEffect(); + return 1; } /* 804D4B94-804D4BB4 0032F4 0020+00 1/0 0/0 0/0 .text daSpinner_Execute__FP11daSpinner_c @@ -996,24 +931,24 @@ static int daSpinner_Execute(daSpinner_c* i_this) { return i_this->execute(); } -/* ############################################################################################## */ -/* 804D4E98-804D4E9C 000108 0004+00 0/1 0/0 0/0 .rodata @5723 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5723 = 70.0f; -COMPILER_STRIP_GATE(0x804D4E98, &lit_5723); -#pragma pop - -/* 804D4E9C-804D4EA0 00010C 0004+00 0/1 0/0 0/0 .rodata @5724 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5724 = 300.0f; -COMPILER_STRIP_GATE(0x804D4E9C, &lit_5724); -#pragma pop - /* 804D4BB4-804D4D08 003314 0154+00 1/1 0/0 0/0 .text draw__11daSpinner_cFv */ int daSpinner_c::draw() { - // NONMATCHING + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + if ((daAlink_getAlinkActorClass()->checkSpinnerReady() && daAlink_getAlinkActorClass()->gravity >= 0.0f) || mDeleteFlg) { + return 1; + } + + mDoExt_modelEntryDL(mpModel); + daMirror_c::entry(mpModel); + + if (!daAlink_getAlinkActorClass()->checkSpinnerRideOwn(this)) { + cXyz sp8(current.pos.x, 70.0f + current.pos.y, current.pos.z); + field_0xa94 = dComIfGd_setShadow(field_0xa94, 1, mpModel, &sp8, 300.0f, 0.0f, sp8.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } + + return 1; } /* 804D4D08-804D4D28 003468 0020+00 1/0 0/0 0/0 .text daSpinner_Draw__FP11daSpinner_c */ @@ -1021,199 +956,33 @@ static int daSpinner_Draw(daSpinner_c* i_this) { return i_this->draw(); } -/* 804D4D28-804D4D70 003488 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} +/* 804D4EEC-804D4F0C -00001 0020+00 1/0 0/0 0/0 .data l_daSpinner_Method */ +static actor_method_class l_daSpinner_Method = { + (process_method_func)daSpinner_Create, + (process_method_func)daSpinner_Delete, + (process_method_func)daSpinner_Execute, + (process_method_func)NULL, + (process_method_func)daSpinner_Draw, +}; -/* 804D4D70-804D4D78 0034D0 0008+00 1/0 0/0 0/0 .text @36@__dt__13dBgS_LinkAcchFv */ -static void func_804D4D70() { - // NONMATCHING -} +/* 804D4F0C-804D4F3C -00001 0030+00 0/0 0/0 1/0 .data g_profile_SPINNER */ +extern actor_process_profile_definition g_profile_SPINNER = { + fpcLy_CURRENT_e, // mLayerID + 4, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_SPINNER, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daSpinner_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 687, // mPriority + &l_daSpinner_Method, // sub_method + 0x00060000, // mStatus + fopAc_UNK_GROUP_5_e, // mActorType + fopAc_CULLBOX_0_e, // cullType +}; -/* 804D4D78-804D4D80 0034D8 0008+00 1/0 0/0 0/0 .text @20@__dt__13dBgS_LinkAcchFv */ -static void func_804D4D78() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804D5030-804D5034 000070 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_804D5030[4]; -#pragma pop - -/* 804D5034-804D5038 000074 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_804D5034[4]; -#pragma pop - -/* 804D5038-804D503C 000078 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804D5038[4]; -#pragma pop - -/* 804D503C-804D5040 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804D503C[4]; -#pragma pop - -/* 804D5040-804D5044 000080 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804D5040[4]; -#pragma pop - -/* 804D5044-804D5048 000084 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804D5044[4]; -#pragma pop - -/* 804D5048-804D504C 000088 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_804D5048[4]; -#pragma pop - -/* 804D504C-804D5050 00008C 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804D504C[4]; -#pragma pop - -/* 804D5050-804D5054 000090 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804D5050[4]; -#pragma pop - -/* 804D5054-804D5058 000094 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_804D5054[4]; -#pragma pop - -/* 804D5058-804D505C 000098 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804D5058[4]; -#pragma pop - -/* 804D505C-804D5060 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804D505C[4]; -#pragma pop - -/* 804D5060-804D5064 0000A0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_804D5060[4]; -#pragma pop - -/* 804D5064-804D5068 0000A4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804D5064[4]; -#pragma pop - -/* 804D5068-804D506C 0000A8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804D5068[4]; -#pragma pop - -/* 804D506C-804D5070 0000AC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_804D506C[4]; -#pragma pop - -/* 804D5070-804D5074 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_804D5070[4]; -#pragma pop - -/* 804D5074-804D5078 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804D5074[4]; -#pragma pop - -/* 804D5078-804D507C 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_804D5078[4]; -#pragma pop - -/* 804D507C-804D5080 0000BC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_804D507C[4]; -#pragma pop - -/* 804D5080-804D5084 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_804D5080[4]; -#pragma pop - -/* 804D5084-804D5088 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804D5084[4]; -#pragma pop - -/* 804D5088-804D508C 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804D5088[4]; -#pragma pop - -/* 804D508C-804D5090 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804D508C[4]; -#pragma pop - -/* 804D5090-804D5094 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_804D5090[4]; -#pragma pop - -/* 804D5094-804D5098 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JAUSectionHeap> */ -#pragma push -#pragma force_active on -static u8 data_804D5094[4]; -#pragma pop - -/* 804D4EA0-804D4EA0 000110 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES +struct JAUSectionHeap; +JAUSectionHeap* JASGlobalInstance::sInstance; diff --git a/src/d/actor/d_flower.inc b/src/d/actor/d_flower.inc index 6b484de8ae..e4362ca5a3 100644 --- a/src/d/actor/d_flower.inc +++ b/src/d/actor/d_flower.inc @@ -1,6 +1,326 @@ +#include "d/actor/d_a_grass.h" +#include "d/d_com_inf_game.h" +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" +#include "SSystem/SComponent/c_counter.h" + +/* 80524BD8-805253D8 001A00 0800+00 0/1 0/0 0/0 .data l_J_Ohana00_64TEX */ +const u16 l_J_Ohana00_64TEX__width = 63; +const u16 l_J_Ohana00_64TEX__height = 63; +#include "assets/l_J_Ohana00_64TEX.h" + +/* 805253D8-8052569C 002200 02C4+00 0/1 0/0 0/0 .data l_flowerPos */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerPos[708] = { + 0xC0, 0x8C, 0x2C, 0xF7, 0x42, 0x05, 0xBC, 0xDF, 0xC1, 0xA1, 0x00, 0x70, 0xBF, 0x50, 0x51, 0xB9, + 0x42, 0x12, 0x58, 0xAD, 0xC0, 0xDE, 0xCE, 0x40, 0xC1, 0x04, 0x67, 0x23, 0x41, 0xE5, 0x87, 0x25, + 0xC1, 0x1B, 0xF3, 0xF8, 0xC1, 0x8F, 0x17, 0x3E, 0x42, 0x05, 0x7F, 0xC6, 0xC1, 0x83, 0x9B, 0xFC, + 0xC1, 0x65, 0x1D, 0x1B, 0x42, 0x12, 0x1B, 0x94, 0xC0, 0x52, 0x78, 0xE2, 0x41, 0x4A, 0xF2, 0x65, + 0x41, 0xB8, 0x6D, 0xEC, 0xC1, 0x05, 0xB8, 0xB9, 0x41, 0x59, 0xA0, 0x35, 0x41, 0xC8, 0x8E, 0xEA, + 0x3F, 0xD7, 0x00, 0xBD, 0x40, 0xFD, 0x20, 0x08, 0x41, 0xA5, 0x7C, 0x50, 0xC0, 0x1A, 0x58, 0x21, + 0x40, 0x45, 0x4A, 0xF1, 0x41, 0xD5, 0xC3, 0x79, 0xC1, 0x03, 0x76, 0xC0, 0x40, 0x80, 0x01, 0x19, + 0x41, 0xE5, 0xE4, 0x79, 0x3F, 0xE9, 0x10, 0x80, 0xC0, 0xC5, 0xE3, 0xA8, 0x41, 0x8D, 0x10, 0xEF, + 0x41, 0x5D, 0x5E, 0x8F, 0xC1, 0x83, 0x4F, 0x3A, 0x41, 0x95, 0x37, 0x4A, 0x41, 0x13, 0xAB, 0xB0, + 0xC1, 0x0B, 0x2F, 0x13, 0x41, 0x82, 0x79, 0x28, 0x40, 0xBC, 0x27, 0x0F, 0xBF, 0xE5, 0x81, 0x9D, + 0x41, 0xBD, 0xAD, 0xB1, 0x40, 0xAD, 0xAF, 0x4F, 0xC1, 0x40, 0x5C, 0xAB, 0x41, 0xC5, 0xD4, 0x0B, + 0x3F, 0x52, 0x4A, 0x06, 0xC1, 0x92, 0x9C, 0x90, 0x41, 0x6B, 0x5E, 0x96, 0xC1, 0x70, 0xB5, 0x34, + 0x40, 0x09, 0xC7, 0xFC, 0x41, 0xA1, 0xD1, 0xA9, 0xC1, 0x99, 0xED, 0xD6, 0x40, 0x93, 0x3C, 0x3E, + 0x41, 0x91, 0x1A, 0x4B, 0xC0, 0xFD, 0x15, 0x96, 0xC1, 0x7E, 0x0D, 0x00, 0x41, 0x49, 0xEF, 0xDC, + 0xC0, 0x6D, 0x90, 0xAC, 0x40, 0x51, 0xDE, 0xF0, 0x40, 0x89, 0x1C, 0x93, 0xBE, 0xF1, 0xC4, 0x11, + 0xC1, 0x70, 0xB0, 0x8B, 0x40, 0xFE, 0x20, 0x45, 0x41, 0x30, 0xC6, 0x50, 0xC1, 0xA1, 0x7C, 0x11, + 0x41, 0x24, 0xCB, 0xE5, 0x3F, 0xE9, 0xDE, 0xBE, 0xBF, 0xEE, 0x7E, 0xD8, 0x40, 0xD4, 0x94, 0x18, + 0xC1, 0x1B, 0x18, 0xC1, 0xC1, 0x84, 0x20, 0x71, 0x40, 0xF3, 0x8A, 0x69, 0x40, 0x98, 0xEA, 0x1F, + 0x40, 0x97, 0xB4, 0x48, 0x41, 0x51, 0xF6, 0x25, 0x40, 0xA6, 0xAE, 0x30, 0x40, 0x5F, 0xA7, 0xB1, + 0x41, 0x89, 0x17, 0x78, 0x41, 0x75, 0xAC, 0x70, 0xC1, 0x8E, 0x18, 0x8E, 0x41, 0x39, 0xFE, 0x02, + 0x41, 0x6E, 0xCA, 0x67, 0x40, 0x9E, 0x6A, 0x68, 0x41, 0x10, 0x81, 0x11, 0x41, 0x1B, 0x6F, 0x7F, + 0x40, 0xAD, 0x4B, 0x29, 0x41, 0x3B, 0x3A, 0x41, 0xC1, 0x41, 0x4C, 0x98, 0x41, 0x7E, 0x28, 0x15, + 0x41, 0x6F, 0x56, 0x2E, 0xC1, 0x37, 0x57, 0x88, 0x41, 0x76, 0xB7, 0xB5, 0x41, 0x44, 0x9C, 0xFE, + 0x41, 0x25, 0x64, 0x90, 0x40, 0xE2, 0xFC, 0xE5, 0x41, 0xA7, 0xF4, 0x9C, 0xBF, 0xE7, 0xAE, 0x14, + 0x41, 0x0A, 0x36, 0x26, 0x41, 0xA4, 0x39, 0xDE, 0xC0, 0x24, 0xAB, 0x93, 0xBB, 0xF0, 0x06, 0x8E, + 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x16, 0x81, 0x13, 0xBD, 0x88, 0xA2, 0x66, 0xC1, 0x20, 0x00, 0x00, + 0x3F, 0x1D, 0xDC, 0x0E, 0x40, 0xF1, 0x74, 0x95, 0x41, 0xA6, 0x44, 0xA9, 0xC0, 0x36, 0xA5, 0x59, + 0x41, 0x02, 0xFB, 0x9C, 0x41, 0xA5, 0xE9, 0xDA, 0xBF, 0xC3, 0xB5, 0x4A, 0xBC, 0xD0, 0x6B, 0xBE, + 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x20, 0x46, 0x20, 0xBD, 0x47, 0x89, 0x61, 0xC1, 0x1F, 0xFF, 0xFF, + 0x3F, 0x14, 0x35, 0xDF, 0xC0, 0xFA, 0x9D, 0xC7, 0x41, 0x85, 0xC1, 0xB7, 0x40, 0xAA, 0xE7, 0x6F, + 0xC1, 0x10, 0x29, 0xEB, 0x41, 0x80, 0x9F, 0x20, 0x40, 0xD0, 0x7A, 0xD1, 0x3E, 0xC2, 0x2B, 0x7C, + 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x29, 0xC0, 0x01, 0x3F, 0x38, 0x85, 0x7F, 0xC1, 0x1F, 0xFF, 0xFF, + 0x3E, 0xAF, 0xF4, 0x56, 0xC0, 0xFD, 0x71, 0xD8, 0x41, 0x83, 0xAB, 0x96, 0x40, 0xCE, 0xD3, 0xB1, + 0xC1, 0x0E, 0xBE, 0xA4, 0x41, 0x82, 0xB5, 0x43, 0x40, 0xAC, 0x90, 0x1F, 0x3E, 0xD9, 0x21, 0x68, + 0xC1, 0x20, 0x00, 0x00, 0x3E, 0xBF, 0x6C, 0x48, 0x3F, 0x2D, 0xCF, 0xBC, 0xC1, 0x20, 0x00, 0x00, + 0x3F, 0x21, 0x31, 0x44, 0xC0, 0xF8, 0xE0, 0x22, 0x41, 0xE8, 0x4B, 0x4B, 0xC1, 0x14, 0x36, 0x1F, + 0xC1, 0x0C, 0x7F, 0xA6, 0x41, 0xE4, 0x93, 0x45, 0xC1, 0x24, 0x12, 0xDA, 0xC0, 0x01, 0x25, 0x39, + 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB5, 0xEB, 0x3A, 0xBF, 0xF6, 0x43, 0x3D, 0xC1, 0x1F, 0xFF, 0xFE, + 0x3F, 0xC2, 0x77, 0x2D, 0xC1, 0x0B, 0x64, 0x82, 0x41, 0xE6, 0x84, 0x99, 0xC1, 0x15, 0x34, 0xD0, + 0xC0, 0xFB, 0x14, 0x70, 0x41, 0xE6, 0x5A, 0x05, 0xC1, 0x23, 0x13, 0xB7, 0xBF, 0xF7, 0x6B, 0x09, + 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB7, 0x60, 0x63, 0xC0, 0x00, 0x83, 0x99, 0xC1, 0x20, 0x00, 0x01, + 0x3F, 0xC1, 0x1A, 0x97, 0xC0, 0xCA, 0x0C, 0x4E, 0x41, 0x9A, 0x38, 0x78, 0xC0, 0xD2, 0x29, 0xBB, + 0xC0, 0xE2, 0xE4, 0x1F, 0x41, 0x97, 0x6E, 0x73, 0xC0, 0xEA, 0xBD, 0x92, 0xC0, 0xE1, 0x27, 0x37, + 0x41, 0x98, 0xE3, 0x73, 0xC0, 0xD3, 0xBD, 0x8E, 0xC0, 0xCB, 0xC6, 0x04, 0x41, 0x98, 0xC3, 0x84, + 0xC0, 0xE9, 0x27, 0x8D, +}; +#pragma pop + +/* 8052569C-80525750 0024C4 00B4+00 0/1 0/0 0/0 .data l_flowerNormal */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerNormal[180] = { + 0x3C, 0x8D, 0x2C, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x46, 0xF7, 0xA1, 0x3C, 0x76, 0x83, + 0x7F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x12, 0x5F, 0xE9, 0xBB, 0xE5, 0xA3, 0x5D, 0x3F, 0x7F, + 0xF5, 0xF9, 0x3C, 0x83, 0x57, 0xA3, 0x3B, 0xF9, 0xB1, 0x31, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, + 0x81, 0x0A, 0x57, 0xBC, 0x80, 0x86, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xE2, 0xEF, + 0xBC, 0x43, 0xEB, 0x7D, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x4E, 0x3C, 0x3C, 0x4B, 0x2D, + 0x90, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x4A, 0x42, 0xAF, 0x3C, 0x4F, 0x0B, 0x6B, 0x3F, 0x7F, + 0xF5, 0xF9, 0xBC, 0x46, 0x4B, 0xA9, 0x3C, 0x4B, 0xF2, 0xB2, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, + 0x49, 0x7D, 0x8D, 0x3C, 0x8D, 0x2A, 0x20, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x47, 0x5C, 0x4B, + 0xBC, 0x80, 0x84, 0x1F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xF3, 0xB6, 0xBC, 0x43, 0xFC, + 0x44, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x3D, 0x75, 0x3C, 0x4B, 0x3E, 0x57, 0x3F, 0x7F, + 0xF5, 0xF9, 0xBC, 0x4A, 0x31, 0xE8, 0x3C, 0x4F, 0x07, 0x3A, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, + 0x46, 0x54, 0x0D, 0x3C, 0x4B, 0xEE, 0x80, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x49, 0x81, 0xBF, +}; +#pragma pop + +/* 80525750-80525758 002578 0008+00 0/1 0/0 0/0 .data l_flowerColor */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerColor[8] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xB2, 0xB2, 0xFF, +}; +#pragma pop + +/* 80525758-80525898 002580 0138+08 0/1 0/0 0/0 .data l_flowerTexCoord */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerTexCoord[] = { + 0x40, 0x40, 0xD0, 0xEA, 0x3D, 0x69, 0x70, 0x72, 0x40, 0x7D, 0xD8, 0x30, 0x3F, 0x81, 0x3D, 0xC9, + 0x40, 0x40, 0xCE, 0x85, 0x3F, 0x81, 0x3D, 0xC9, 0x40, 0x01, 0xDD, 0x33, 0x3F, 0x81, 0x3D, 0xC9, + 0x40, 0x40, 0xD0, 0xEA, 0x3F, 0xF9, 0x46, 0xD4, 0x40, 0x00, 0xCD, 0xB8, 0xBF, 0x7F, 0xD4, 0x39, + 0x40, 0x40, 0xC2, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0xC8, 0x3F, 0x3E, 0xFF, 0xD4, 0x39, + 0x3F, 0xC1, 0xA6, 0x61, 0xBE, 0xFF, 0xD4, 0x39, 0x40, 0x00, 0xCD, 0xB8, 0x3F, 0x7F, 0xD4, 0x39, + 0x3F, 0x81, 0xB1, 0x53, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x49, 0x75, 0x29, 0xBD, 0xFA, 0x4F, 0x87, + 0x3C, 0x54, 0x88, 0x83, 0xBD, 0xFA, 0x4F, 0x87, 0x3C, 0xF8, 0x85, 0x4D, 0xBF, 0x27, 0x85, 0x40, + 0x3D, 0x01, 0x8D, 0x69, 0xBF, 0x27, 0x98, 0x20, 0xBD, 0x44, 0x30, 0xB1, 0xBD, 0xFC, 0xC3, 0xA0, + 0xBB, 0xEE, 0x06, 0xD9, 0xBD, 0xFC, 0xC3, 0xA0, 0xBC, 0xF4, 0x1F, 0x21, 0xBF, 0x27, 0x90, 0xA8, + 0xBD, 0x00, 0x00, 0x00, 0xBF, 0x27, 0x92, 0x7D, 0xBE, 0x03, 0x5A, 0x86, 0xBD, 0x67, 0x4C, 0x0A, + 0xBE, 0x03, 0x5A, 0x86, 0xBC, 0x82, 0xCD, 0x3A, 0xBF, 0x25, 0x30, 0x59, 0xBD, 0x06, 0x8E, 0xC5, + 0xBF, 0x25, 0xFA, 0x66, 0xBD, 0x2F, 0x2B, 0x67, 0xBE, 0x03, 0x59, 0x79, 0x3D, 0x40, 0x8E, 0x9B, + 0xBE, 0x03, 0x59, 0x79, 0x3B, 0xAF, 0xE6, 0x0C, 0xBF, 0x25, 0xB3, 0x4A, 0x3C, 0x9E, 0x81, 0xCB, + 0xBF, 0x25, 0xD9, 0x3C, 0x3C, 0xF1, 0xE6, 0xCD, 0x3E, 0x1C, 0xD0, 0x78, 0x3D, 0x36, 0xDC, 0xA0, + 0x3E, 0x1C, 0xD0, 0x78, 0x3B, 0x48, 0x68, 0xBA, 0x3F, 0x59, 0x32, 0x61, 0x3C, 0xDD, 0x5F, 0x57, + 0x3F, 0x59, 0x61, 0xF6, 0x3C, 0xFB, 0x13, 0x9D, 0x3E, 0x1C, 0xD0, 0x78, 0xBB, 0xEB, 0xED, 0xFA, + 0x3E, 0x1C, 0xD0, 0x78, 0xBD, 0x47, 0xD3, 0xD4, 0x3F, 0x59, 0x49, 0x41, 0xBC, 0xCB, 0x3E, 0x57, + 0x3F, 0x59, 0x4B, 0x6A, 0xBC, 0xAD, 0x94, 0x8E, 0x3E, 0xA7, 0x7F, 0x28, 0x3D, 0x28, 0x87, 0xA9, + 0x3E, 0xA7, 0x67, 0x4D, 0x3C, 0x14, 0x46, 0x74, 0x3E, 0xA7, 0x73, 0xE2, 0xBC, 0x2F, 0x46, 0xAA, + 0x3E, 0xA7, 0x72, 0xD6, 0xBD, 0x2F, 0x46, 0xAA}; +#pragma pop + +/* 80525898-805259F8 0026C0 0150+10 0/1 0/0 0/0 .data l_J_hana00DL */ +#include "assets/l_J_hana00DL.h" + +/* 805259F8-80525AD8 002820 00DE+02 0/1 0/0 0/0 .data l_J_hana00_cDL */ +#include "assets/l_J_hana00_cDL.h" + +/* 80525AD8-80525B78 002900 0099+07 0/2 0/0 0/0 .data l_matDL */ +#include "assets/l_matDL__d_a_grass.h" +l_matDL__d_a_grass(l_J_Ohana00_64TEX) + +/* 80525B78-80525C18 0029A0 0099+07 0/2 0/0 0/0 .data l_matLight4DL */ +#include "assets/l_matLight4DL.h" +l_matLight4DL(l_J_Ohana00_64TEX) + +/* 80525C18-80526C18 002A40 1000+00 0/1 0/0 0/0 .data l_J_Ohana01_64128_0419TEX */ +const u16 l_J_Ohana01_64128_0419TEX__width = 63; +const u16 l_J_Ohana01_64128_0419TEX__height = 127; +#include "assets/l_J_Ohana01_64128_0419TEX.h" + +/* 80526C18-805270E0 003A40 04C8+00 0/1 0/0 0/0 .data l_flowerPos2 */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerPos2[1224] = { + 0x40, 0x25, 0x9F, 0x34, 0x42, 0xC2, 0x95, 0x72, 0xC1, 0x22, 0x34, 0x78, 0x41, 0x4D, 0xF9, 0x63, + 0x43, 0x09, 0x35, 0x0D, 0x40, 0x97, 0xD7, 0x54, 0x41, 0x76, 0x80, 0x55, 0x42, 0xBA, 0x1C, 0xB4, + 0x41, 0x91, 0x3E, 0x0D, 0xC0, 0x99, 0x8D, 0x47, 0x42, 0xC2, 0x8D, 0xF5, 0x41, 0x12, 0xA1, 0x12, + 0x41, 0xB9, 0x1A, 0xFF, 0x42, 0xBA, 0x37, 0xE3, 0xBF, 0xBD, 0xD2, 0xA6, 0x41, 0x4D, 0xF9, 0x34, + 0x43, 0x09, 0x35, 0x0F, 0x40, 0x97, 0xD6, 0xB6, 0xC1, 0x07, 0x14, 0xD0, 0x42, 0xCC, 0x9E, 0xFD, + 0xC1, 0x42, 0x39, 0x8F, 0xC0, 0xC1, 0xA4, 0x94, 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0xE2, + 0x40, 0x32, 0xFE, 0x8B, 0x42, 0xC7, 0x29, 0xAC, 0x41, 0x9E, 0x0C, 0xC8, 0xC0, 0xC1, 0xA4, 0xE1, + 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0x8E, 0xC1, 0x95, 0xAF, 0x93, 0x42, 0xC4, 0x31, 0xF1, + 0x41, 0x1A, 0xB9, 0x87, 0x41, 0x51, 0x09, 0xAB, 0x42, 0xCF, 0x96, 0xC1, 0xC0, 0x03, 0x66, 0x1F, + 0xC1, 0x01, 0x95, 0x6E, 0x42, 0xB3, 0x6A, 0x42, 0xC1, 0x8B, 0x4C, 0x1D, 0xC0, 0xD4, 0xA5, 0x9C, + 0x42, 0xFE, 0x7B, 0x90, 0xC1, 0x0A, 0x4F, 0x99, 0x40, 0x1C, 0xE1, 0x15, 0x42, 0xC2, 0x2D, 0x47, + 0x41, 0x06, 0xA6, 0x41, 0xC1, 0x7B, 0x73, 0x6E, 0x42, 0xB8, 0x6D, 0x93, 0x3F, 0x5A, 0xCC, 0xA3, + 0x41, 0x21, 0x15, 0xF4, 0x42, 0xBD, 0x29, 0xFE, 0xC1, 0x1D, 0x9F, 0x3A, 0xC0, 0xD4, 0xA5, 0xEC, + 0x42, 0xFE, 0x7B, 0x93, 0xC1, 0x0A, 0x4F, 0xE9, 0x41, 0x06, 0x70, 0xFC, 0x42, 0xC4, 0x24, 0x9D, + 0x40, 0x7C, 0x3E, 0xE6, 0x41, 0x24, 0x1D, 0x91, 0x42, 0xC3, 0xD6, 0x8C, 0x40, 0x7C, 0x3E, 0xE6, + 0x3F, 0xEA, 0x26, 0xBB, 0xC1, 0x20, 0x00, 0x00, 0x3E, 0x25, 0x61, 0x91, 0xBF, 0x8B, 0x0E, 0xC3, + 0xC1, 0x20, 0x00, 0x01, 0x3E, 0x1C, 0xD6, 0x80, 0x41, 0x15, 0x52, 0x2B, 0x42, 0xC4, 0x0E, 0x24, + 0x40, 0x40, 0xBB, 0xC3, 0x41, 0x15, 0x3C, 0x61, 0x42, 0xC3, 0xED, 0x00, 0x40, 0x9B, 0xE1, 0x05, + 0x3E, 0xBE, 0xC3, 0xFC, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xCE, 0x28, 0xBB, 0x3E, 0xBE, 0xBA, 0x6B, + 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0xA5, 0xFF, 0xCE, 0xC0, 0x6B, 0x3A, 0x75, 0x42, 0xC1, 0x3D, 0x51, + 0xC0, 0xA0, 0xCD, 0x8E, 0xBF, 0xDC, 0xEC, 0x63, 0x42, 0xC1, 0x54, 0xB6, 0xC0, 0xA0, 0x6C, 0x42, + 0x3F, 0x88, 0xCC, 0x2D, 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0x24, 0x6B, 0xBE, 0xBF, 0xC0, 0xE6, 0x08, + 0xC1, 0x20, 0x00, 0x01, 0xBF, 0x29, 0x08, 0x81, 0xC0, 0x2C, 0x6A, 0x66, 0x42, 0xC1, 0x36, 0x4D, + 0xC0, 0xBF, 0xC9, 0xD6, 0xC0, 0x2D, 0x46, 0x30, 0x42, 0xC1, 0x5B, 0xB5, 0xC0, 0x81, 0x6F, 0xF4, + 0xBE, 0x68, 0x6B, 0xDF, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x23, 0x29, 0xD4, 0xBE, 0x58, 0xD0, 0xCC, + 0xC1, 0x20, 0x00, 0x01, 0xBF, 0xF8, 0x39, 0x71, 0xC0, 0x79, 0x82, 0x0E, 0x42, 0xD0, 0x8E, 0xE6, + 0x40, 0x7C, 0x3E, 0xE6, 0xC0, 0x00, 0x2E, 0x23, 0x42, 0xD0, 0xA5, 0xB2, 0x40, 0x7C, 0x3E, 0xE6, + 0x3F, 0x2F, 0x08, 0x57, 0xC1, 0x1F, 0x8E, 0x06, 0xBB, 0xAE, 0xF2, 0xC7, 0xBF, 0xD7, 0xC7, 0x1D, + 0xC1, 0x20, 0x71, 0xFC, 0xBB, 0xAE, 0xF2, 0xC7, 0xC0, 0x3C, 0xE3, 0xDE, 0x42, 0xD0, 0xAB, 0x13, + 0x40, 0x3F, 0x99, 0x18, 0xC0, 0x3C, 0xCC, 0x57, 0x42, 0xD0, 0x89, 0x86, 0x40, 0x9C, 0x72, 0x58, + 0xBF, 0x00, 0x08, 0x31, 0xC1, 0x20, 0xA7, 0xBD, 0x3F, 0x96, 0xEC, 0x4A, 0xBF, 0x00, 0x7D, 0xB3, + 0xC1, 0x1F, 0x58, 0x45, 0xBF, 0x98, 0x4A, 0x30, 0x40, 0xBD, 0x8F, 0x9B, 0x42, 0x63, 0xF3, 0x30, + 0x40, 0x23, 0x56, 0x11, 0x41, 0x65, 0x2F, 0xC6, 0x42, 0xBB, 0x00, 0xB1, 0xC1, 0x8C, 0x12, 0x7A, + 0x41, 0xCA, 0x62, 0xA7, 0x42, 0xBB, 0x00, 0xB0, 0x41, 0x28, 0xB1, 0x15, 0xC1, 0x5B, 0xA6, 0x8E, + 0x42, 0xBB, 0x00, 0xAE, 0xC0, 0xD1, 0x1E, 0x86, 0xC0, 0x30, 0x44, 0xBF, 0x42, 0xBB, 0x00, 0xAD, + 0x41, 0xAC, 0x23, 0x4E, 0xBF, 0xAD, 0xFA, 0x8F, 0x41, 0xB0, 0x93, 0x1B, 0x3F, 0x85, 0x39, 0x9F, + 0x41, 0x9F, 0x2B, 0xD3, 0x42, 0x90, 0x9F, 0x64, 0xC1, 0x8A, 0x85, 0x5E, 0x41, 0x7B, 0x1C, 0x3E, + 0x42, 0x90, 0x9F, 0x63, 0x41, 0xA7, 0xF3, 0x96, 0xC1, 0x13, 0xCB, 0x32, 0x42, 0x90, 0x9F, 0x65, + 0xC1, 0x92, 0x20, 0x52, 0xC1, 0x7F, 0xDB, 0xED, 0x42, 0x90, 0x9F, 0x65, 0x41, 0x46, 0xD3, 0x80, + 0xBF, 0x24, 0xCA, 0xC5, 0x42, 0x44, 0xF1, 0x22, 0xC0, 0x3B, 0xEA, 0xC4, 0xC0, 0x35, 0x33, 0xCE, + 0x42, 0x44, 0xDE, 0xC0, 0xC0, 0x3C, 0xDA, 0x27, 0xBF, 0xDF, 0x4A, 0x77, 0x42, 0x44, 0xF6, 0xA3, + 0xBF, 0xEC, 0xBC, 0x8C, 0xBF, 0xDD, 0x8A, 0x1A, 0x42, 0x44, 0xD9, 0x3D, 0xC0, 0x81, 0x30, 0x55, + 0xBF, 0x4A, 0x36, 0xF4, 0x42, 0x56, 0x1A, 0x91, 0x40, 0x0B, 0xFC, 0x11, 0xC0, 0x3B, 0xC6, 0x93, + 0x42, 0x55, 0xE6, 0xFE, 0x40, 0x0B, 0xFC, 0x0D, 0xBF, 0xEE, 0x39, 0xBD, 0x42, 0x55, 0xDA, 0xD7, + 0x40, 0x50, 0x93, 0xC4, 0xBF, 0xEE, 0x6E, 0xEB, 0x42, 0x56, 0x26, 0xB9, 0x3F, 0x8E, 0xC8, 0xB4, + 0x40, 0xBF, 0xC7, 0x22, 0x42, 0x8E, 0x14, 0xBA, 0x40, 0x3F, 0x9A, 0x4E, 0x41, 0x03, 0x00, 0x18, + 0x42, 0x8D, 0xE7, 0xA4, 0x40, 0x3F, 0xCE, 0xF6, 0x40, 0xE2, 0xF3, 0x95, 0x42, 0x8E, 0x07, 0xC0, + 0x3F, 0xF2, 0xF4, 0xA5, 0x40, 0xE2, 0xDA, 0xA3, 0x42, 0x8D, 0xF4, 0x9D, 0x40, 0x82, 0xF4, 0x90, + 0xBE, 0x9C, 0x1E, 0xDE, 0x42, 0x00, 0x1D, 0x6A, 0xC0, 0xD3, 0x0E, 0xA8, 0x41, 0x2D, 0xDB, 0x19, + 0x42, 0x00, 0x1D, 0x68, 0xC0, 0xC8, 0xE4, 0xE0, 0x40, 0x17, 0x47, 0xAA, 0x41, 0x99, 0xE3, 0xCB, + 0x3F, 0x88, 0x3F, 0x79, 0x41, 0x12, 0xF6, 0x8B, 0x42, 0x00, 0x1D, 0x67, 0x41, 0x10, 0xBB, 0x1F, + 0xC0, 0x40, 0x6B, 0x66, 0x42, 0x00, 0x1D, 0x68, 0x40, 0xB5, 0xCE, 0x40, 0x40, 0xB0, 0x3B, 0xDA, + 0x42, 0x08, 0x7F, 0x60, 0x40, 0xB3, 0xDC, 0xD7, 0xC0, 0x7B, 0x9C, 0x13, 0x42, 0x08, 0x7F, 0x5F, + 0x41, 0x39, 0xAA, 0x67, 0xBF, 0x7D, 0x10, 0x1B, 0x41, 0xB4, 0xF6, 0xEB, 0x3F, 0x43, 0x3A, 0x04, + 0xC1, 0x31, 0xB5, 0x84, 0x42, 0x08, 0x7F, 0x5E, 0xC0, 0x02, 0x89, 0x9C, 0x3F, 0x61, 0xC2, 0x2B, + 0x42, 0x08, 0x7F, 0x5F, 0xC0, 0xC2, 0x2D, 0xCD, 0xC0, 0xB7, 0xA5, 0x40, 0x42, 0x03, 0xBD, 0x64, + 0xC0, 0xF9, 0x2E, 0x71, 0x40, 0x97, 0xF6, 0x62, 0x42, 0x03, 0xBD, 0x63, 0xC1, 0x3A, 0x58, 0x92, + 0xBE, 0xD3, 0x65, 0xED, 0x41, 0x99, 0xE3, 0xCC, 0xBF, 0xD5, 0x9D, 0xED, 0x41, 0x0E, 0x33, 0x4E, + 0x42, 0x03, 0xBD, 0x61, 0x40, 0x4C, 0xFD, 0x0D, 0xBE, 0x25, 0xBF, 0xF0, 0x42, 0x09, 0x9F, 0xF5, + 0xC0, 0x05, 0xBD, 0x6F, 0x3F, 0x87, 0x66, 0x17, 0xC1, 0x1E, 0x5D, 0x2E, 0xBF, 0x22, 0xBD, 0x5E, + 0xBF, 0xBE, 0xED, 0x1C, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0x27, 0x4E, 0x12, 0xC0, 0x0C, 0x84, 0x34, + 0x42, 0x09, 0x96, 0x95, 0xC0, 0x06, 0xA0, 0xBA, 0xBF, 0x97, 0xAF, 0xEA, 0x42, 0x09, 0xA2, 0xC4, + 0xBF, 0x8A, 0x29, 0x63, 0xBE, 0x66, 0x0B, 0x70, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0x21, 0x7E, 0xBB, + 0xBE, 0x56, 0x99, 0x42, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0xF5, 0xAF, 0xB0, 0xBF, 0x96, 0x19, 0x3B, + 0x42, 0x09, 0x93, 0xC4, 0xC0, 0x47, 0x42, 0x91, 0xBE, 0xB2, 0xE9, 0xEE, 0x42, 0x09, 0x50, 0x68, + 0x3F, 0xB1, 0x1A, 0xCA, 0x3F, 0x2D, 0x3E, 0x2D, 0xC1, 0x1D, 0xEC, 0x5F, 0xBB, 0xAD, 0x2D, 0xCB, + 0xBF, 0xD5, 0x92, 0x4B, 0xC1, 0x1E, 0xCE, 0x00, 0xBB, 0xAD, 0x2D, 0xCB, 0xC0, 0x17, 0x75, 0x3A, + 0x42, 0x09, 0x1F, 0xE3, 0x3F, 0xB1, 0x1A, 0xCA, 0xBF, 0xAD, 0xB9, 0x73, 0x42, 0x09, 0x14, 0x75, + 0x40, 0x19, 0x14, 0xF9, 0xBE, 0xFD, 0x72, 0x15, 0xC1, 0x1F, 0x03, 0x34, 0x3F, 0x95, 0x61, 0x35, + 0xBE, 0xFE, 0x5A, 0xBC, 0xC1, 0x1D, 0xB7, 0x2A, 0xBF, 0x96, 0xBB, 0x88, 0xBF, 0xAD, 0xEB, 0x7D, + 0x42, 0x09, 0x5B, 0xD8, 0x3E, 0xC0, 0x2E, 0xA9, 0x40, 0x1E, 0x27, 0x67, 0x42, 0x02, 0x4C, 0x03, + 0x3F, 0xC0, 0x2D, 0xB6, 0x40, 0x94, 0xBE, 0xD1, 0x42, 0x02, 0x30, 0x38, 0x3F, 0xC0, 0xDA, 0xE4, + 0x3F, 0xE7, 0xC1, 0xCE, 0xC1, 0x1E, 0x5D, 0x2E, 0x3E, 0x23, 0xB0, 0x81, 0xBF, 0x89, 0xA2, 0xBE, + 0xC1, 0x1E, 0x5D, 0x30, 0x3E, 0x1B, 0x3B, 0xFB, 0x40, 0x63, 0xE5, 0x3F, 0x42, 0x02, 0x44, 0x03, + 0x3E, 0xD5, 0xAB, 0x19, 0x40, 0x63, 0xD6, 0x7C, 0x42, 0x02, 0x38, 0x37, 0x40, 0x25, 0xC5, 0x61, + 0x3E, 0xBC, 0xD0, 0x9A, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0xCC, 0x0D, 0x13, 0x3E, 0xBC, 0xC7, 0x2A, + 0xC1, 0x1E, 0x5D, 0x2D, 0xBF, 0xA4, 0x4D, 0x4D, +}; +#pragma pop + +/* 805270E0-80527200 003F08 0120+00 0/1 0/0 0/0 .data l_flowerNormal2 */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerNormal2[288] = { + 0xBB, 0xC4, 0x93, 0x42, 0x3F, 0x7F, 0xF6, 0x6F, 0xBC, 0x83, 0x0E, 0x3D, 0x3C, 0x83, 0x0C, 0x24, + 0x3F, 0x7F, 0xF5, 0x84, 0x3C, 0x03, 0x0E, 0x3D, 0xB8, 0x51, 0xB7, 0x17, 0x3F, 0x7F, 0xF5, 0xF9, + 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x38, 0x1F, 0x62, 0x30, + 0xBD, 0xB8, 0xC9, 0xFB, 0x3F, 0x7E, 0x68, 0x3C, 0xBD, 0x85, 0xBD, 0x94, 0xBD, 0xD9, 0x65, 0xB2, + 0x3F, 0x7E, 0x28, 0x13, 0xBD, 0x63, 0x62, 0xA6, 0xBD, 0xB8, 0x12, 0x7B, 0x3F, 0x7E, 0x6B, 0x0E, + 0xBD, 0x85, 0x62, 0x5A, 0xBD, 0xFD, 0x2D, 0x88, 0x3F, 0x7D, 0x58, 0x32, 0xBD, 0x95, 0xE3, 0x97, + 0xBD, 0xB5, 0xC6, 0x3B, 0x3F, 0x7E, 0xFB, 0x4C, 0x3C, 0x01, 0xC7, 0x15, 0xB8, 0xFF, 0xDA, 0x40, + 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0x37, 0x38, 0x8C, 0xA4, 0x3F, 0x7F, 0xF5, 0xF9, + 0xBC, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB8, 0xBE, 0xD7, 0x41, + 0x38, 0x06, 0x37, 0xBD, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8F, 0x57, 0xF7, 0x37, 0x6A, 0xE1, 0x8B, + 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8E, 0xC7, 0x43, 0x3F, 0x7F, 0xF5, 0xF9, + 0x3A, 0xCB, 0xF2, 0xB2, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x00, 0x00, 0x00, 0x00, + 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB7, 0xD1, 0xB7, 0x17, 0xBC, 0x8F, 0x55, 0xDE, + 0x3F, 0x7F, 0xF5, 0xF9, 0x39, 0x4E, 0x91, 0xC9, 0xBA, 0x02, 0x49, 0x1B, 0x3F, 0x7F, 0xF5, 0xF9, + 0x3C, 0x8F, 0x49, 0x49, 0x3C, 0x80, 0x34, 0x6E, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x00, 0x3C, 0xD1, + 0xBC, 0x8E, 0x7F, 0xF6, 0x3F, 0x7F, 0xF5, 0xF9, 0xBA, 0xF8, 0xE7, 0xDE, 0x3B, 0x98, 0xD4, 0x78, + 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x28, 0x78, 0x3C, 0x8B, 0xFE, 0x3B, 0x3F, 0x7F, 0xF5, 0xF9, + 0x3B, 0x76, 0x7B, 0x1C, 0x3B, 0x99, 0x6B, 0x76, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x1D, 0xFC, +}; +#pragma pop + +/* 80527200-80527208 004028 0008+00 0/1 0/0 0/0 .data l_flowerColor2 */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerColor2[8] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xFF, +}; +#pragma pop + +/* 80527208-80527338 004030 0120+10 0/1 0/0 0/0 .data l_flowerTexCoord2 */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_flowerTexCoord2[] = { + 0x3F, 0xF3, 0x6D, 0x11, 0x3F, 0x72, 0x0B, 0xA2, 0x3F, 0x80, 0x00, 0x00, 0x3C, 0xAB, 0xDC, 0x27, + 0x3D, 0xC9, 0x2E, 0xE8, 0x3F, 0x72, 0x0B, 0xA2, 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x81, 0x7B, 0x96, + 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x06, 0x1F, 0xCD, 0x3F, 0x7B, 0xB5, 0x18, + 0x40, 0x06, 0x00, 0x47, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x06, 0x16, 0xBE, 0x3F, 0x81, 0x7B, 0x96, + 0x40, 0x06, 0x09, 0x5B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x07, 0xBB, 0x1F, 0x3F, 0x7B, 0xB5, 0x18, + 0x40, 0x07, 0xC2, 0xF8, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x07, 0xB8, 0xC3, 0x3F, 0x81, 0x7B, 0x96, + 0x40, 0x07, 0xC5, 0x50, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x7B, 0xB5, 0x18, + 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xA0, 0x9B, 0xA2, + 0x40, 0x39, 0x01, 0x1D, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBE, 0x0D, 0xCC, + 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x25, 0xD5, 0xA2, 0x3F, 0x7B, 0xB5, 0x18, + 0x40, 0x25, 0xD9, 0x1F, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x25, 0xD4, 0x95, 0x3F, 0x81, 0x7B, 0x96, + 0x40, 0x25, 0xDA, 0x2B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x7B, 0xB5, 0x18, + 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x2F, 0xF0, 0x35, 0x3F, 0x81, 0x7B, 0x96, + 0x40, 0x2F, 0xF8, 0x16, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x2F, 0xF2, 0x78, 0x3F, 0x7B, 0xB5, 0x18, + 0x40, 0x2F, 0xF5, 0xCF, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x51, 0x10, 0x6F, + 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x7C, 0x19, 0xB1, 0x3F, 0x80, 0x5E, 0x57, + 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x04, 0x26, 0x74, 0x3F, 0x80, 0x3F, 0x79, + 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x80, 0x3F, 0x79, 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x51, 0x10, 0x6F}; +#pragma pop + +/* 80527338-80527478 004160 0138+08 0/1 0/0 0/0 .data l_J_hana01DL */ +#include "assets/l_J_hana01DL.h" + +/* 80527478-80527558 0042A0 00DE+02 0/0 0/0 0/0 .data l_J_hana01_c_00DL */ +#include "assets/l_J_hana01_c_00DL.h" + +/* 80527558-80527698 004380 0128+18 0/1 0/0 0/0 .data l_J_hana01_c_01DL */ +#include "assets/l_J_hana01_c_01DL.h" + +/* 80527698-80527738 0044C0 0099+07 0/2 0/0 0/0 .data l_mat2DL */ +#include "assets/l_mat2DL__d_a_grass.h" +l_mat2DL__d_a_grass(l_J_Ohana01_64128_0419TEX) + +/* 80527738-805277D4 004560 0099+03 0/2 0/0 0/0 .data l_mat2Light4DL */ +#include "assets/l_mat2Light4DL.h" +l_mat2Light4DL(l_J_Ohana01_64128_0419TEX) + /* 80520988-80520AD8 004D28 0150+00 1/1 0/0 0/0 .text WorkCo__14dFlower_data_cFP10fopAc_ac_cUli */ -void dFlower_data_c::WorkCo(fopAc_ac_c* param_0, u32 param_1, int param_2) { - // NONMATCHING +void dFlower_data_c::WorkCo(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo) { + cXyz sp8; + sp8.x = m_pos.x - i_hitActor->current.pos.x; + sp8.z = m_pos.z - i_hitActor->current.pos.z; + + f32 temp_f1 = sp8.abs2XZ(); + if (!(temp_f1 > 900.0f)) { + sp8.y = m_pos.y - i_hitActor->current.pos.y; + + s16 temp_r26 = cM_atan2s(sp8.x, sp8.z); + f32 var_f31 = JMAFastSqrt(temp_f1); + + dFlower_anm_c* var_r29; + if (field_0x01 < 8) { + int temp_r3_2 = daGrass_c::getFlower()->newAnm(); + if (temp_r3_2 < 0) { + return; + } + + field_0x01 = temp_r3_2; + var_r29 = daGrass_c::getFlower()->getAnm(field_0x01); + } else { + var_r29 = daGrass_c::getFlower()->getAnm(field_0x01); + } + + var_r29->m_angY = temp_r26; + var_r29->m_angX = cM_atan2s(30.0f - var_f31, 65.0f); + } } /* 80520AD8-80520B34 004E78 005C+00 4/4 0/0 0/0 .text deleteAnm__14dFlower_data_cFv */ @@ -14,21 +334,198 @@ void dFlower_data_c::deleteAnm() { /* 80520B34-80520CFC 004ED4 01C8+00 1/1 0/0 0/0 .text * WorkAt_NoCutAnim__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_Obj */ -void dFlower_data_c::WorkAt_NoCutAnim(fopAc_ac_c* param_0, u32 param_1, int param_2, - dCcMassS_HitInf* param_3, cCcD_Obj* param_4) { - // NONMATCHING +void dFlower_data_c::WorkAt_NoCutAnim(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo, + dCcMassS_HitInf* i_hitinf, cCcD_Obj* i_hitobj) { + dCcD_GObjInf* var_r26 = dCcD_GetGObjInf(i_hitobj); + cXyz sp14(*var_r26->GetAtVecP()); + + f32 temp_f31 = sp14.abs2XZ(); + if (cM3d_IsZero(temp_f31) && fopAcM_GetName(i_hitActor) == PROC_ALINK) { + sp14.x = m_pos.x - i_hitActor->current.pos.x; + sp14.y = m_pos.y - i_hitActor->current.pos.y; + sp14.z = m_pos.z - i_hitActor->current.pos.z; + temp_f31 = sp14.abs2XZ(); + } + + temp_f31 = sp14.abs2XZ(); + + s16 temp_r25 = cM_atan2s(sp14.x, sp14.z); + temp_f31 = JMAFastSqrt(temp_f31); + + dFlower_anm_c* var_r29; + if (field_0x01 < 8) { + int temp_r3_2 = daGrass_c::getFlower()->newAnm(); + if (temp_r3_2 < 0) { + return; + } + field_0x01 = temp_r3_2; + var_r29 = daGrass_c::getFlower()->getAnm(field_0x01); + } else { + var_r29 = daGrass_c::getFlower()->getAnm(field_0x01); + } + + var_r29->m_angY = temp_r25; + var_r29->m_angX = cM_atan2s(temp_f31, 220.0f); } +/* 805284E8-805284EC 000C20 0004+00 1/2 0/0 0/0 .bss None */ +static bool data_805284E8; + /* 80520CFC-80521A3C 00509C 0D40+00 1/1 0/0 0/0 .text * WorkAt__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInf */ -void dFlower_data_c::WorkAt(fopAc_ac_c* param_0, u32 param_1, int param_2, - dCcMassS_HitInf* param_3) { - // NONMATCHING +void dFlower_data_c::WorkAt(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo, dCcMassS_HitInf* i_hitinf) { + cCcD_Obj* hitobj_p = i_hitinf->GetAtHitObj(); + + if (hitobj_p != NULL && + (hitobj_p->ChkAtType(0) || hitobj_p->ChkAtType(AT_TYPE_ARROW) || hitobj_p->ChkAtType(AT_TYPE_SLINGSHOT) || + hitobj_p->ChkAtType(AT_TYPE_20000000) || hitobj_p->ChkAtType(AT_TYPE_SHIELD_ATTACK) || + hitobj_p->ChkAtType(AT_TYPE_BOOMERANG) || hitobj_p->ChkAtType(AT_TYPE_100) || + hitobj_p->ChkAtType(AT_TYPE_LANTERN_SWING) || hitobj_p->ChkAtType(AT_TYPE_HOOKSHOT))) + { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p); + return; + } + + if (field_0x03 == 0) { + fopAc_ac_c* temp_r26 = dComIfGp_getPlayer(0); + if (hitobj_p->ChkAtType(AT_TYPE_BOMB) || hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) || + hitobj_p->ChkAtType(AT_TYPE_SPINNER) || hitobj_p->ChkAtType(AT_TYPE_WOLF_ATTACK) || + hitobj_p->ChkAtType(AT_TYPE_WOLF_CUT_TURN)) + { + if (i_hitActor != NULL && !hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) && m_pos.abs(i_hitActor->current.pos) > 200.0f) { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p); + return; + } + } else { + if (cLib_checkBit(m_state, 0x10) || !cLib_checkBit(m_state, 0x40)) { + if ((daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_NM_VERTICAL) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_NM_STAB) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_LEFT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT)) + { + if (m_pos.abs(temp_r26->current.pos) > 180.0f) { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p); + return; + } + } else { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p); + return; + } + } + + if ((daPy_getPlayerActorClass()->getCutType() >= 3) && (daPy_getPlayerActorClass()->getCutType() <= 7)) { + if (m_pos.abs(temp_r26->current.pos) > 128.0f) { + if (m_pos.abs(temp_r26->current.pos) < 200.0f) { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p); + } + return; + } + } else if ((daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_LEFT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT)) + { + if (m_pos.abs(temp_r26->current.pos) > 150.0f) { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p); + return; + } + } else if ((daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_NM_VERTICAL) || (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_NM_STAB)) { + if (m_pos.abs(temp_r26->current.pos) > 80.0f) { + return; + } + } else if ((m_pos.abs(i_hitActor->current.pos) > 128.0f) && (m_pos.abs(temp_r26->current.pos) < 200.0f)) { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p); + return; + } + } + + if (field_0x01 >= 8) { + deleteAnm(); + } + + if (cLib_checkBit(m_state, 0x40)) { + if (hitobj_p->ChkAtType(AT_TYPE_BOMB) || hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) || + hitobj_p->ChkAtType(AT_TYPE_SPINNER) || hitobj_p->ChkAtType(AT_TYPE_WOLF_ATTACK) || + hitobj_p->ChkAtType(AT_TYPE_WOLF_CUT_TURN) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_LEFT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) || + (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT)) + { + cLib_onBit(m_state, 8); + } else if (cLib_checkBit(m_state, 0x10)) { + cLib_onBit(m_state, 8); + } else { + field_0x03 = 0x14; + cLib_onBit(m_state, 0x10); + } + } else { + cLib_onBit(m_state, 8); + } + + static csXyz ang(0, 0, 0); + + cXyz particle_pos; + dKy_tevstr_c* room_tevstr = dComIfGp_roomControl_getTevStr(i_roomNo); + + particle_pos.set(m_pos.x, m_pos.y, m_pos.z); + + if (cLib_checkBit(m_state, 0x40)) { + dComIfGp_particle_set(0x8297, &particle_pos, room_tevstr, NULL, NULL); + dComIfGp_particle_set(0x8298, &particle_pos, room_tevstr, NULL, NULL); + } else { + dComIfGp_particle_set(0x8299, &particle_pos, room_tevstr, NULL, NULL); + dComIfGp_particle_set(0x829A, &particle_pos, room_tevstr, NULL, NULL); + } + + if (m_tableNo >= 0) { + fopAcM_createItemFromTable(&m_pos, m_tableNo, -1, i_roomNo, NULL, 0, NULL, NULL, NULL, false); + } + + if (data_805284E8 == 0) { + data_805284E8 = 1; + mDoAud_seStart(JA_SE_LK_CUT_GRASS, &m_pos, 0, dComIfGp_getReverb(i_roomNo)); + } + } } /* 80521A3C-80521BF8 005DDC 01BC+00 1/1 0/0 0/0 .text hitCheck__14dFlower_data_cFP10fopAc_ac_ci */ -void dFlower_data_c::hitCheck(fopAc_ac_c* param_0, int param_1) { - // NONMATCHING +void dFlower_data_c::hitCheck(fopAc_ac_c* i_hitActor, int i_roomNo) { + dCcMassS_HitInf hitinf; + + cXyz sp14; + sp14 = m_pos; + + if (cLib_checkBit(m_state, 0x40)) { + sp14.y += 60.0f; + } + + fopAc_ac_c* hit_actor; + u32 mass_flags = dComIfG_Ccsp()->ChkMass(&sp14, &hit_actor, &hitinf); + bool at_hit = (mass_flags & 1) && (hit_actor != NULL && fopAcM_GetName(hit_actor) != PROC_Obj_Carry); + + if (!(mass_flags & 2) && !at_hit) { + if (field_0x01 >= 8) { + dFlower_anm_c* temp_r3 = daGrass_c::getFlower()->getAnm(field_0x01); + s16 spA = (temp_r3->m_angY & 0xE000); + int spC = (temp_r3->m_angY >> 0xD) & 7; + + if (cLib_addCalcAngleS(&temp_r3->m_angX, daGrass_c::getFlower()->getAnm(spC)->m_angX, 8, 4000, 100) == 0 && + cLib_chaseAngleS(&temp_r3->m_angY, spA, 800) != 0) { + deleteAnm(); + } + } + } else { + if (mass_flags & 2) { + WorkCo(hit_actor, mass_flags, i_roomNo); + } + + if (!cLib_checkBit(m_state, 8) && at_hit) { + WorkAt(hit_actor, mass_flags, i_roomNo, &hitinf); + } + } } /* 80521BF8-80521C08 005F98 0010+00 1/1 0/0 0/0 .text newData__14dFlower_room_cFP14dFlower_data_c @@ -67,34 +564,372 @@ dFlower_packet_c::dFlower_packet_c() { unused += 0x2000; } - m_deleteRoom = &deleteRoom; + m_deleteRoom = &dFlower_packet_c::deleteRoom; } - /* 80521DAC-80522774 00614C 09C8+00 2/0 0/0 0/0 .text draw__16dFlower_packet_cFv */ -// void dFlower_packet_c::draw() { -extern "C" asm void draw__16dFlower_packet_cFv() { - // NONMATCHING +// NONMATCHING +void dFlower_packet_c::draw() { + dScnKy_env_light_c* kankyo = dKy_getEnvlight(); + j3dSys.reinitGX(); + + GXSetNumIndStages(0); + dKy_setLight_again(); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxDesc(GX_VA_NRM, GX_INDEX8); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_POS, &l_flowerPos, 0xC); + GXSetArray(GX_VA_NRM, &l_flowerNormal, 0xC); + GXSetArray(GX_VA_CLR0, &l_flowerColor, 4); + GXSetArray(GX_VA_TEX0, &l_flowerTexCoord, 8); + + dFlower_room_c* sp5C = m_room; + + for (int i = 0; i < 64; i++) { + dFlower_data_c* sp54 = sp5C->getData(); + if (sp54 != NULL && dComIfGp_roomControl_checkStatusFlag(i, 0x10)) { + dKy_tevstr_c* sp50 = dComIfGp_roomControl_getTevStr(i); + GXColorS10 sp80 = {0, 0, 0, 0}; + int sp84 = 0; + int sp4C = 6; + + if (dComIfGp_roomControl_getStatusRoomDt(i) != NULL) { + sp4C = dComIfGp_roomControl_getStatusRoomDt(i)->mRoomDt.getLightVecInfoNum(); + } + + if (dKy_SunMoon_Light_Check() == TRUE && sp4C < 2) { + sp4C = 2; + } + + for (int j = 0; j < 6; j++) { + if (kankyo->field_0x0c18[j].field_0x26 == 1) { + sp4C++; + } + } + + if (sp4C <= 2) { + GXCallDisplayList(&l_matLight4DL, 0x80); + } else { + GXCallDisplayList(&l_matDL, 0x80); + } + + GXSetTevColorS10(GX_TEVREG0, sp80); + dKy_Global_amb_set(sp50); + dKy_GxFog_tevstr_set(sp50); + dKy_setLight_nowroom_grass(sp50->room_no, 1.0f); + + for (dFlower_data_c* sp44 = sp5C->getData(); sp44 != NULL; sp44 = sp44->mp_next) { + GXColor sp64; + sp64.r = (sp44->field_0x04 & 0x1F) * 2; + sp64.g = ((sp44->field_0x04 >> 5) & 0x1F) * 2; + sp64.b = ((sp44->field_0x04 >> 0xA) & 0x1F) * 2; + + if (daPy_py_c::checkNowWolfPowerUp()) { + f32 var_f31 = g_env_light.bg_amb_col[0].r / 255.0f; + sp64.r = (((sp44->field_0x04 & 0x1F) * 2) + 0x10) * (4.0f * var_f31); + + var_f31 = g_env_light.bg_amb_col[0].g / 255.0f; + sp64.g = ((((sp44->field_0x04 >> 5) & 0x1F) * 2) + 0x10) * (4.0f * var_f31); + + var_f31 = g_env_light.bg_amb_col[0].b / 255.0f; + sp64.b = ((((sp44->field_0x04 >> 0xA) & 0x1F) * 2) + 0x10) * (4.0f * var_f31); + } + + if (sp64.r == 0x3E) { + sp64.r = sp50->AmbCol.r; + } + + if (sp64.g == 0x3E) { + sp64.g = sp50->AmbCol.g; + } + + if (sp64.b == 0x3E) { + sp64.b = sp50->AmbCol.b; + } + + GXSetChanAmbColor(GX_COLOR0A0, sp64); + + if (!cLib_checkBit(sp44->m_state, 4) && !cLib_checkBit(sp44->m_state, 0x40)) { + GXLoadPosMtxImm(sp44->m_modelMtx, 0); + GXLoadNrmMtxImm(j3dSys.getViewMtx(), 0); + + if (!cLib_checkBit(sp44->m_state, 8)) { + GXCallDisplayList(&l_J_hana00DL, 0x140); + } else { + GXCallDisplayList(&l_J_hana00_cDL, 0xC0); + } + } + } + } + sp5C++; + } + + GXSetArray(GX_VA_POS, mp_pos, 0xC); + GXSetArray(GX_VA_NRM, &l_flowerNormal2, 0xC); + GXSetArray(GX_VA_CLR0, mp_colors, 4); + GXSetArray(GX_VA_TEX0, mp_texCoords, 8); + + sp5C = m_room; + + for (int i = 0; i < 64; i++) { + GXColor sp3C = {0xFF, 0xFF, 0xFF, 0xFF}; + dFlower_data_c* sp38 = sp5C->getData(); + if (sp38 != NULL) { + dFlower_data_c* sp34 = sp5C->getData(); + int sp30 = 0; + int sp2C = 6; + dKy_tevstr_c* temp_r29 = dComIfGp_roomControl_getTevStr(i); + GXColorS10 sp78 = {0, 0, 0, 0}; + int sp7C = 0; + + if (dComIfGp_roomControl_getStatusRoomDt(i) != NULL) { + sp2C = dComIfGp_roomControl_getStatusRoomDt(i)->mRoomDt.getLightVecInfoNum(); + } + + if (dKy_SunMoon_Light_Check() == TRUE && sp2C < 2) { + sp2C = 2; + } + + if (sp2C <= 2) { + GXCallDisplayList(mp_mat2Light4DL, m_mat2Light4DL_size); + } else { + GXCallDisplayList(mp_mat2DL, m_mat2DL_size); + } + + GXSetTevColorS10(GX_TEVREG0, sp78); + dKy_Global_amb_set(temp_r29); + dKy_GxFog_tevstr_set(temp_r29); + dKy_setLight_nowroom_grass(temp_r29->room_no, 1.0f); + + while (sp34 != NULL) { + f32 var_f29 = temp_r29->AmbCol.r * 0.03125f; + if (var_f29 > 1.0f) { + var_f29 = 1.0f; + } + + f32 var_f28 = temp_r29->AmbCol.g * 0.03125f; + if (var_f28 > 1.0f) { + var_f28 = 1.0f; + } + + f32 var_f27 = temp_r29->AmbCol.b * 0.03125f; + if (var_f27 > 1.0f) { + var_f27 = 1.0f; + } + + GXColor sp28; + + u8 sp24 = -0.4f * temp_r29->AmbCol.r * var_f29; + u8 sp25 = -0.4f * temp_r29->AmbCol.g * var_f28; + u8 sp26 = -0.4f * temp_r29->AmbCol.b * var_f27; + + u8 sp8 = sp30 & 7; + switch (sp8) { + case 0: + sp28.r = temp_r29->AmbCol.r + sp24; + sp28.g = temp_r29->AmbCol.g; + sp28.b = temp_r29->AmbCol.b; + break; + case 1: + sp28.r = temp_r29->AmbCol.r; + sp28.g = temp_r29->AmbCol.g + sp25; + sp28.b = temp_r29->AmbCol.b; + break; + case 2: + sp28.r = temp_r29->AmbCol.r; + sp28.g = temp_r29->AmbCol.g; + sp28.b = temp_r29->AmbCol.b + sp26; + break; + case 3: + sp28.r = temp_r29->AmbCol.r + sp24; + sp28.g = temp_r29->AmbCol.g + sp25; + sp28.b = temp_r29->AmbCol.b; + break; + case 4: + sp28.r = temp_r29->AmbCol.r; + sp28.g = temp_r29->AmbCol.g + sp25; + sp28.b = temp_r29->AmbCol.b + sp26; + break; + case 5: + sp28.r = temp_r29->AmbCol.r + sp24; + sp28.g = temp_r29->AmbCol.g; + sp28.b = temp_r29->AmbCol.b + sp26; + break; + case 6: + sp28.r = temp_r29->AmbCol.r + sp24; + sp28.g = temp_r29->AmbCol.g + sp25; + sp28.b = temp_r29->AmbCol.b + sp26; + break; + case 7: + break; + } + + if (daPy_py_c::checkNowWolfPowerUp()) { + f32 var_f30 = g_env_light.bg_amb_col[0].r / 255.0f; + sp28.r = (sp28.r + 8) * (6.0f * var_f30); + + var_f30 = g_env_light.bg_amb_col[0].g / 255.0f; + sp28.g = (sp28.g + 8) * (6.0f * var_f30); + + var_f30 = g_env_light.bg_amb_col[0].b / 255.0f; + sp28.b = (sp28.b + 8) * (6.0f * var_f30); + } + + GXSetChanAmbColor(GX_COLOR0A0, sp28); + + sp30++; + + if (!cLib_checkBit(sp34->m_state, 4) && cLib_checkBit(sp34->m_state, 0x40)) { + GXLoadPosMtxImm(sp34->m_modelMtx, 0); + GXLoadNrmMtxImm(j3dSys.getViewMtx(), 0); + + if (!cLib_checkBit(sp34->m_state, 8)) { + if (!cLib_checkBit(sp34->m_state, 0x10)) { + GXCallDisplayList(mp_Jhana01DL, m_Jhana01DL_size); + } else { + GXCallDisplayList(&l_J_hana01_c_00DL, 0xC0); + } + } else { + GXCallDisplayList(mp_Jhana01_cDL, m_Jhana01_cDL_size); + } + } + + sp34 = sp34->mp_next; + } + } + sp5C++; + } + + J3DShape::resetVcdVatCache(); } /* 80522774-8052299C 006B14 0228+00 1/1 0/0 0/0 .text calc__16dFlower_packet_cFv */ +// NONMATCHING void dFlower_packet_c::calc() { - // NONMATCHING + dFlower_anm_c* anm_p = getAnm(); + + for (int i = 0; i < 8; i++) { + anm_p->m_angX = 1000.0f + (100.0f * cM_scos(1000.0f * (g_Counter.mTimer + (i * 250)))); + anm_p++; + } + + int room_no = dComIfGp_roomControl_getStayNo(); + dFlower_data_c* data_p = m_room[room_no].getData(); + + if (data_p != NULL) { + daPy_py_c* temp_r26 = (daPy_py_c*)dComIfGp_getPlayer(0); + cXyz sp38; + cXyz sp2C; + + setPlayerCutFlg(temp_r26->getCutAtFlg()); + + sp38 = temp_r26->getSwordTopPos(); + sp2C = sp38 - temp_r26->current.pos; + + setPlayerSwordAngY(cM_atan2s(sp2C.x, sp2C.z)); + + sp2C = getPlayerSwordTop() - sp38; + setPlayerSwordMoveAngY(cM_atan2s(sp2C.x, sp2C.z)); + setPlayerSwordTop(sp38); + + data_805284E8 = 0; + + if (!cLib_checkBit(data_p->m_state, 0x40)) { + dComIfG_Ccsp()->SetMassAttr(30.0f, 50.0f, 11, 2); + } else { + dComIfG_Ccsp()->SetMassAttr(30.0f, 160.0f, 11, 2); + } + + do { + if (!cLib_checkBit(data_p->m_state, 4)) { + data_p->hitCheck(temp_r26, room_no); + } + data_p = data_p->mp_next; + } while (data_p != NULL); + } } /* 8052299C-80522A64 006D3C 00C8+00 2/2 0/0 0/0 .text flowerCheckGroundY__FR4cXyz */ static f32 flowerCheckGroundY(cXyz& param_0) { - // NONMATCHING + dBgS_GndChk sp8; + param_0.y += 50.0f; + + sp8.SetPos(¶m_0); + + f32 temp_f31 = dComIfG_Bgsp().GroundCross(&sp8); + param_0.y -= 50.0f; + + if (temp_f31 <= -1000000000.0f) { + return param_0.y; + } else { + return temp_f31; + } } /* 80522A64-80522CBC 006E04 0258+00 1/1 0/0 0/0 .text update__16dFlower_packet_cFv */ void dFlower_packet_c::update() { - // NONMATCHING + dFlower_anm_c* var_r29 = getAnm(); + + for (int i = 0; i < 72; i++) { + mDoMtx_stack_c::YrotS(var_r29->m_angY); + mDoMtx_stack_c::XrotM(var_r29->m_angX); + mDoMtx_stack_c::YrotM(-var_r29->m_angY); + cMtx_copy(mDoMtx_stack_c::get(), var_r29->m_animMtx); + var_r29++; + } + + dFlower_data_c* data_p = getData(); + var_r29 = getAnm(); + + cXyz sp28; + int sp14 = 0; + + for (int i = 0; i < 1000; i++) { + if (cLib_checkBit(data_p->m_state, 2)) { + cLib_calcTimer(&data_p->field_0x03); + + if (cLib_checkBit(data_p->m_state, 0x20) && sp14 < 8) { + data_p->m_pos.y = flowerCheckGroundY(data_p->m_pos); + cLib_offBit(data_p->m_state, 0x20); + sp14++; + } + + sp28.set(data_p->m_pos.x, 260.0f + data_p->m_pos.y, data_p->m_pos.z); + + if (mDoLib_clipper::clip(j3dSys.getViewMtx(), sp28, 260.0f)) { + cLib_onBit(data_p->m_state, 4); + data_p->deleteAnm(); + } else { + cLib_offBit(data_p->m_state, 4); + + MtxPtr temp_r28 = var_r29[data_p->field_0x01].m_animMtx; + temp_r28[0][3] = data_p->m_pos.x; + temp_r28[1][3] = data_p->m_pos.y; + temp_r28[2][3] = data_p->m_pos.z; + + f32 temp_f31 = 0.69999999f + (0.3f * ((((s16)data_p->m_pos.x * 3535) & 0xFFF) / 4096.0f)); + + mDoMtx_stack_c::copy(temp_r28); + mDoMtx_stack_c::scaleM(temp_f31, temp_f31, temp_f31); + cMtx_concat(j3dSys.getViewMtx(), temp_r28, data_p->m_modelMtx); + } + } + + data_p++; + } + + dComIfGd_getListPacket()->entryImm(this, 0); } /* 80522CBC-80522E28 00705C 016C+00 1/1 0/0 0/0 .text * setData__16dFlower_packet_cFP14dFlower_data_ciScR4cXyziScs */ -void dFlower_packet_c::setData(dFlower_data_c* i_data, int param_1, s8 param_2, cXyz& i_pos, +void dFlower_packet_c::setData(dFlower_data_c* i_data, int i_dataNo, s8 param_2, cXyz& i_pos, int i_roomNo, s8 i_tableNo, s16 i_addCol) { f32 y_pos; if (fopOvlpM_IsPeek()) { @@ -109,7 +944,7 @@ void dFlower_packet_c::setData(dFlower_data_c* i_data, int param_1, s8 param_2, cLib_onBit(i_data->m_state, 0x40); } - i_data->field_0x01 = cM_rndF(FLOAT_LABEL(lit_6262)); + i_data->field_0x01 = cM_rndF(7.0f); i_data->m_pos.set(i_pos.x, y_pos, i_pos.z); i_data->m_tableNo = i_tableNo; i_data->field_0x03 = 0; @@ -130,15 +965,15 @@ void dFlower_packet_c::setData(dFlower_data_c* i_data, int param_1, s8 param_2, } m_room[i_roomNo].newData(i_data); - field_0x10 = param_1; + m_dataNum = i_dataNo; } /* 80522E28-80522F0C 0071C8 00E4+00 1/1 0/0 0/0 .text newData__16dFlower_packet_cFScR4cXyziScs */ dFlower_data_c* dFlower_packet_c::newData(s8 param_0, cXyz& i_pos, int i_roomNo, s8 i_tableNo, s16 i_addCol) { - dFlower_data_c* data_p = m_data + field_0x10; + dFlower_data_c* data_p = m_data + m_dataNum; - for (int i = field_0x10; i < 1000; i++) { + for (int i = m_dataNum; i < 1000; i++) { if (!cLib_checkBit(data_p->m_state, 2)) { setData(data_p, i, param_0, i_pos, i_roomNo, i_tableNo, i_addCol); return data_p; @@ -147,7 +982,7 @@ dFlower_data_c* dFlower_packet_c::newData(s8 param_0, cXyz& i_pos, int i_roomNo, } data_p = m_data; - for (int i = 0; i < field_0x10; i++) { + for (int i = 0; i < m_dataNum; i++) { if (!cLib_checkBit(data_p->m_state, 2)) { setData(data_p, i, param_0, i_pos, i_roomNo, i_tableNo, i_addCol); return data_p; @@ -181,11 +1016,11 @@ int dFlower_packet_c::newAnm() { } /* 80522F8C-80522FB4 00732C 0028+00 1/1 0/0 0/0 .text setAnm__16dFlower_packet_cFis */ -void dFlower_packet_c::setAnm(int i_idx, s16 param_1) { +void dFlower_packet_c::setAnm(int i_idx, s16 i_angY) { dFlower_anm_c* anm_p = m_anm + i_idx; anm_p->m_state = 1; - anm_p->m_angY = param_1; + anm_p->m_angY = i_angY; anm_p->m_angX = 0; } @@ -205,4 +1040,4 @@ dFlower_data_c::~dFlower_data_c() {} /* 80523008-80523014 0073A8 000C+00 1/1 0/0 0/0 .text __ct__14dFlower_data_cFv */ dFlower_data_c::dFlower_data_c() { m_state = 0; -} \ No newline at end of file +} diff --git a/src/d/actor/d_grass.inc b/src/d/actor/d_grass.inc index 38033a4629..aaa6b1bb33 100644 --- a/src/d/actor/d_grass.inc +++ b/src/d/actor/d_grass.inc @@ -1,52 +1,327 @@ #include "d/actor/d_a_grass.h" #include "d/d_com_inf_game.h" #include "d/actor/d_a_player.h" +#include "d/d_s_play.h" #include "JSystem/J3DGraphBase/J3DDrawBuffer.h" #include "SSystem/SComponent/c_lib.h" #include "f_op/f_op_overlap_mng.h" +#include + +/* 805231F8-805239F8 000020 0800+00 0/1 0/0 0/0 .data l_M_kusa05_RGBATEX */ +const u16 l_M_Hijiki00TEX__width = 31; +const u16 l_M_Hijiki00TEX__height = 31; +#include "assets/l_M_kusa05_RGBATEX.h" // ALIGN 32 + +/* 805239F8-805241F8 000820 0800+00 0/1 0/0 0/0 .data l_M_Hijiki00TEX */ +const u16 l_M_kusa05_RGBATEX__width = 31; +const u16 l_M_kusa05_RGBATEX__height = 31; +#include "assets/l_M_Hijiki00TEX.h" // ALIGN 32 + +/* 805241F8-805245B8 001020 03C0+00 0/1 0/0 0/0 .data l_pos */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_pos[960] = { + 0x3F, 0x4A, 0x56, 0xEF, 0xC2, 0x20, 0x00, 0x00, 0x41, 0xFB, 0x17, 0xE4, 0x41, 0xAA, 0xBB, 0xEA, + 0xC2, 0x20, 0x00, 0x00, 0xC1, 0xB7, 0x03, 0x7A, 0x42, 0x55, 0x8D, 0x6F, 0x43, 0x13, 0x16, 0x3F, + 0xC0, 0xC7, 0x24, 0x07, 0x41, 0xE3, 0xC5, 0x31, 0x43, 0x13, 0x16, 0x3F, 0x42, 0x3A, 0x76, 0x90, + 0xC1, 0xDE, 0xF6, 0x89, 0xC2, 0x20, 0x00, 0x00, 0xC1, 0x4E, 0xFE, 0x02, 0xC2, 0x28, 0x22, 0x86, + 0x43, 0x13, 0x16, 0x3F, 0xC2, 0x07, 0x6E, 0x2C, 0x41, 0x51, 0x51, 0xEE, 0x43, 0x13, 0x16, 0x3F, + 0xC2, 0x54, 0xE3, 0xFA, 0xC1, 0x89, 0xD7, 0x9B, 0x43, 0x13, 0x16, 0x3F, 0x42, 0x47, 0x60, 0x87, + 0xC2, 0x59, 0x1D, 0x0E, 0x43, 0x13, 0x16, 0x3F, 0x40, 0x95, 0x9B, 0x11, 0x3F, 0x3A, 0x78, 0x8E, + 0x43, 0x13, 0x16, 0x3F, 0x41, 0xE0, 0xD9, 0x17, 0xC1, 0xE3, 0x1B, 0x10, 0x43, 0x13, 0x16, 0x3F, + 0x42, 0x5A, 0xDD, 0x48, 0xC1, 0xEE, 0x39, 0x52, 0xC2, 0x20, 0x00, 0x00, 0x41, 0xC4, 0x63, 0x09, + 0x00, 0x00, 0x00, 0x00, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x03, 0x56, 0x8B, + 0xC2, 0x20, 0x00, 0x00, 0x41, 0x08, 0xF1, 0x43, 0x42, 0x14, 0xBE, 0x15, 0x43, 0x13, 0x16, 0x3F, + 0x42, 0x3E, 0x56, 0x15, 0x41, 0x9A, 0x86, 0xFF, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0xA7, 0xC6, 0xC3, + 0x42, 0x6A, 0xD4, 0x7A, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0x97, 0x6D, 0x9D, 0xC1, 0x19, 0xCD, 0xF3, + 0xC2, 0x20, 0x00, 0x00, 0xC2, 0x15, 0xFA, 0x6B, 0x40, 0xF2, 0xA2, 0x21, 0x43, 0x13, 0x16, 0x3F, + 0xC2, 0x72, 0x6C, 0x7F, 0xC1, 0xC9, 0x8C, 0x79, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0x3F, 0xB7, 0x0B, + 0xC2, 0x12, 0xFB, 0xE4, 0x43, 0x13, 0x16, 0x3F, 0xC2, 0x46, 0xC9, 0xEB, 0xC2, 0x69, 0xB2, 0x46, + 0x43, 0x13, 0x16, 0x3F, 0x41, 0x49, 0x97, 0x1C, 0x3E, 0xBA, 0x78, 0x8E, 0x42, 0x0E, 0x6B, 0x09, + 0x41, 0x60, 0xD9, 0x17, 0xC1, 0xE8, 0xAA, 0x31, 0x42, 0x0E, 0x6B, 0x09, 0x42, 0x1E, 0x87, 0x66, + 0xC1, 0xEE, 0x39, 0x52, 0xC1, 0xA0, 0x00, 0x00, 0x41, 0xC4, 0x63, 0x09, 0x00, 0x00, 0x00, 0x00, + 0xC1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x03, 0x56, 0x8B, 0xC1, 0xA0, 0x00, 0x00, + 0x41, 0x08, 0xF1, 0x43, 0x42, 0x0C, 0x0A, 0x50, 0x42, 0x0E, 0x6B, 0x09, 0x41, 0xE0, 0x92, 0x67, + 0x41, 0x1A, 0x86, 0xFF, 0x42, 0x0E, 0x6B, 0x09, 0xC1, 0x27, 0xC6, 0xC3, 0x42, 0x37, 0x15, 0x83, + 0x42, 0x0E, 0x6B, 0x09, 0xC0, 0xA5, 0xE9, 0xF7, 0xC1, 0x19, 0xCD, 0xF3, 0xC1, 0xA0, 0x00, 0x00, + 0xC2, 0x15, 0xFA, 0x6B, 0xBF, 0x81, 0xF3, 0x8C, 0x42, 0x0E, 0x6B, 0x09, 0xC2, 0x44, 0x33, 0x76, + 0xC1, 0x49, 0x8C, 0x7A, 0x42, 0x0E, 0x6B, 0x09, 0xC0, 0xBF, 0xB7, 0x0B, 0xC1, 0xB9, 0x6F, 0x60, + 0x42, 0x0E, 0x6B, 0x09, 0xC2, 0x2E, 0x62, 0x2B, 0xC2, 0x30, 0x67, 0x78, 0x42, 0x0E, 0x6B, 0x09, + 0x41, 0x94, 0x97, 0x4B, 0x3F, 0x4A, 0x56, 0xEF, 0xC1, 0xA0, 0x00, 0x00, 0x41, 0xFB, 0x17, 0xE4, + 0x41, 0xAA, 0xBB, 0xEA, 0xC1, 0xA0, 0x00, 0x00, 0xC1, 0xB7, 0x03, 0x7A, 0x42, 0x15, 0x75, 0xB2, + 0x41, 0xD4, 0xFE, 0xE0, 0xC1, 0x68, 0xCC, 0x7C, 0x41, 0x6A, 0x17, 0xE7, 0x41, 0xD4, 0xFE, 0xE0, + 0x42, 0x1C, 0x01, 0x41, 0xC1, 0xDE, 0xF6, 0x89, 0xC1, 0xA0, 0x00, 0x00, 0xC1, 0x4E, 0xFE, 0x02, + 0xC2, 0x0B, 0xCE, 0xE5, 0x41, 0xD4, 0xFE, 0xE0, 0xC1, 0xBB, 0x2D, 0xAD, 0x41, 0x89, 0xB2, 0x71, + 0x41, 0xD4, 0xFE, 0xE0, 0xC2, 0x18, 0x32, 0xDB, 0xC1, 0x03, 0x84, 0xE4, 0x41, 0xD4, 0xFE, 0xE0, + 0x42, 0x22, 0x76, 0x3C, 0xC2, 0x24, 0x4C, 0x29, 0x41, 0xD4, 0xFE, 0xE0, 0xC0, 0x84, 0x30, 0x7B, + 0x41, 0x47, 0x75, 0x1E, 0x43, 0x9F, 0x77, 0x6C, 0x42, 0xE0, 0x3F, 0xC6, 0x41, 0x8A, 0x76, 0x75, + 0xC2, 0x05, 0x2D, 0xB7, 0xC1, 0xCF, 0xDC, 0xAC, 0xC1, 0x8C, 0x34, 0xB2, 0xC2, 0x3A, 0xD2, 0x49, + 0x40, 0xA1, 0xFC, 0xF0, 0x43, 0x07, 0x5C, 0xA5, 0x43, 0x37, 0x70, 0xEE, 0x42, 0x80, 0x8E, 0x59, + 0x40, 0xAF, 0x73, 0x3F, 0x40, 0x5B, 0xFC, 0x44, 0x41, 0xA2, 0xC5, 0x58, 0xBE, 0x8F, 0xF1, 0x0F, + 0x41, 0xD6, 0xD6, 0xFB, 0xC0, 0xFF, 0xAA, 0x6F, 0x42, 0x47, 0x87, 0xFB, 0x43, 0x71, 0x58, 0x6A, + 0xC2, 0x6A, 0x7B, 0x21, 0x41, 0x79, 0x6D, 0x34, 0x42, 0x7D, 0x14, 0x66, 0x41, 0xC5, 0x98, 0xA7, + 0xC1, 0x3D, 0x22, 0x18, 0x42, 0x94, 0x1C, 0x80, 0x41, 0xF6, 0xE0, 0x36, 0x42, 0xDF, 0xB0, 0x65, + 0x43, 0xA2, 0xC0, 0xAF, 0xC1, 0x24, 0x3C, 0xD0, 0xC1, 0xD2, 0x1A, 0x2E, 0xC1, 0xD5, 0xC7, 0x38, + 0xC1, 0x71, 0xB4, 0x9D, 0x40, 0x99, 0x06, 0xE6, 0xC2, 0x20, 0x88, 0x2D, 0x41, 0x9D, 0xD0, 0xD9, + 0x41, 0xBB, 0x21, 0x46, 0x43, 0x39, 0xA7, 0xB9, 0xC3, 0x11, 0x8D, 0x20, 0x41, 0x8D, 0xE2, 0x64, + 0x40, 0xB4, 0xD7, 0xAE, 0xC0, 0xDD, 0x14, 0x64, 0xC1, 0x02, 0x49, 0xD6, 0x41, 0xE8, 0x8D, 0x5E, + 0x40, 0xBF, 0xC4, 0x15, 0xC1, 0xD9, 0x0C, 0xDC, 0x43, 0x68, 0x5A, 0x22, 0xC2, 0x4F, 0xE7, 0x5E, + 0x41, 0x82, 0x49, 0x5F, 0x42, 0x5A, 0x19, 0xB6, 0xC1, 0x89, 0xC1, 0xA5, 0x41, 0xB3, 0x90, 0xED, + 0x42, 0x82, 0x9F, 0x28, 0x41, 0x23, 0x0C, 0x02, 0xC1, 0x8D, 0x1C, 0xF7, 0x43, 0x9F, 0x77, 0x6C, + 0xC2, 0xE5, 0xDF, 0x4C, 0xC1, 0xB3, 0xD8, 0xDD, 0xC2, 0x05, 0x2D, 0xB7, 0x41, 0xB9, 0x5E, 0x95, + 0x41, 0x45, 0xA4, 0x94, 0xC2, 0x3A, 0xD2, 0x49, 0xC0, 0xFB, 0xF5, 0x4D, 0xC3, 0x16, 0x18, 0x11, + 0x43, 0x39, 0xA7, 0xB9, 0xC2, 0x07, 0x6F, 0xB1, 0xC1, 0x71, 0x27, 0xE6, 0x40, 0xB4, 0xD7, 0xAE, + 0xC1, 0xAE, 0x78, 0x69, 0xC0, 0x0A, 0xEE, 0xAA, 0x41, 0xE8, 0x8D, 0x5E, 0x40, 0x82, 0x3B, 0x99, + 0xC2, 0x33, 0x95, 0x59, 0x43, 0x5F, 0x75, 0x5E, 0x3D, 0xF4, 0x6A, 0x1A, 0xC1, 0x9E, 0xD4, 0x98, + 0x42, 0x7D, 0x14, 0x66, 0xC1, 0xDD, 0xD4, 0x93, 0x40, 0xF1, 0xCC, 0x38, 0x42, 0x94, 0x1C, 0x80, + 0xC2, 0x07, 0x8E, 0x11, 0xC2, 0xE0, 0xEF, 0x0C, 0x43, 0xA0, 0x12, 0xC6, 0xC1, 0x91, 0xCE, 0x9E, + 0x41, 0x9D, 0x73, 0x77, 0xC2, 0x00, 0x52, 0xDD, 0x41, 0xB1, 0x90, 0xD0, 0xBF, 0xA5, 0x21, 0x04, + 0xC2, 0x35, 0xF7, 0x70, 0xC1, 0x9B, 0xE3, 0x38, 0xC2, 0x84, 0xB6, 0xB8, 0x43, 0x43, 0x0C, 0x16, + 0x42, 0xFA, 0x80, 0xC7, 0xC1, 0xCC, 0x7C, 0xFD, 0x41, 0x7A, 0x99, 0xDC, 0x40, 0x0F, 0xBE, 0x34, + 0x40, 0x31, 0x97, 0xA6, 0x42, 0x1C, 0x52, 0x30, 0xC0, 0x61, 0x26, 0x39, 0x42, 0x41, 0xBD, 0x21, + 0x43, 0x72, 0x8F, 0x21, 0x42, 0x23, 0xF4, 0x30, 0xC1, 0xE5, 0xEB, 0x07, 0x42, 0x80, 0xF7, 0x9F, + 0x40, 0xD8, 0x8F, 0xF3, 0xC1, 0xDC, 0xC3, 0xBB, 0x42, 0x96, 0x89, 0xEC, 0xC1, 0xAA, 0x6C, 0x09, +}; +#pragma pop + +/* 805245B8-805245C4 0013E0 000C+00 0/1 0/0 0/0 .data l_normal */ +#pragma push +#pragma force_active on +SECTION_DATA static Vec l_normal = {0.0f, 1.0f, 0.0f}; +#pragma pop + +/* 805245C4-805245D8 0013EC 0014+00 0/1 0/0 0/0 .data l_color */ +#pragma push +#pragma force_active on +SECTION_DATA static GXColor l_color[] = { + {0xFF, 0xFF, 0xFF, 0x00}, {0xFF, 0xFF, 0xFF, 0x80}, {0xFF, 0xFF, 0xFF, 0x79}, + {0xFF, 0xFF, 0xFF, 0x73}, {0xFF, 0xFF, 0xFF, 0xFF}, +}; +#pragma pop + +/* 805245D8-80524678 001400 00A0+00 0/1 0/0 0/0 .data l_texCoord */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 l_texCoord[160] = { + 0x3F, 0x86, 0xF6, 0x27, 0x3F, 0x9C, 0x00, 0x00, 0x40, 0x03, 0x7B, 0x14, 0x3F, 0x9C, 0x00, 0x00, + 0x40, 0x03, 0x7B, 0x14, 0x3D, 0x00, 0x00, 0x00, 0x3F, 0x86, 0xF6, 0x27, 0x3D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, + 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, 0xBF, 0x80, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, + 0x3F, 0x80, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, 0x40, 0x03, 0x7B, 0x14, 0x3E, 0xC4, 0xF3, 0xBA, + 0x3F, 0x86, 0xF6, 0x27, 0x3E, 0xC4, 0xF3, 0xBA, 0x3E, 0xF0, 0x00, 0x00, 0xBF, 0xDC, 0x00, 0x00, + 0x3F, 0x94, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, 0xBD, 0xC0, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, + 0x3F, 0x94, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBD, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, +}; +#pragma pop + +/* 80524678-80524758 0014A0 00CB+15 0/1 0/0 0/0 .data l_M_Kusa_9qDL */ +#include "assets/l_M_Kusa_9qDL.h" + +/* 80524758-80524838 001580 00CB+15 0/1 0/0 0/0 .data l_M_Kusa_9q_cDL */ +#include "assets/l_M_Kusa_9q_cDL.h" + +/* 80524838-80524918 001660 00D4+0C 0/1 0/0 0/0 .data l_M_TenGusaDL */ +#include "assets/l_M_TenGusaDL.h" + +/* 80524918-805249D8 001740 00A8+18 0/2 0/0 0/0 .data l_Tengusa_matDL */ +#include "assets/l_Tengusa_matDL.h" +l_Tengusa_matDL(l_M_Hijiki00TEX) + +/* 805249D8-80524A98 001800 00A8+18 0/2 0/0 0/0 .data l_kusa9q_matDL */ +#include "assets/l_kusa9q_matDL.h" +l_kusa9q_matDL(l_M_kusa05_RGBATEX) + +/* 80524A98-80524B40 0018C0 00A8+00 0/2 0/0 0/0 .data l_kusa9q_l4_matDL */ +#include "assets/l_kusa9q_l4_matDL.h" +l_kusa9q_l4_matDL(l_M_kusa05_RGBATEX) /* 8051D88C-8051DA20 001C2C 0194+00 1/1 0/0 0/0 .text WorkCo__13dGrass_data_cFP10fopAc_ac_cUli */ -void dGrass_data_c::WorkCo(fopAc_ac_c* param_0, u32 param_1, int param_2) { - // NONMATCHING +void dGrass_data_c::WorkCo(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo) { + cXyz sp18; + + if (!(dKyw_get_wind_pow() >= 0.6f)) { + sp18.x = m_pos.x - i_hitActor->current.pos.x; + sp18.z = m_pos.z - i_hitActor->current.pos.z; + + f32 var_f31 = sp18.abs2XZ(); + if (!(var_f31 > 1600.0f)) { + sp18.y = m_pos.y - i_hitActor->current.pos.y; + + s16 temp_r26 = cM_atan2s(sp18.x, sp18.z); + var_f31 = JMAFastSqrt(var_f31); + + dGrass_anm_c* var_r28; + if (field_0x02 < 16) { + if (i_hitActor->speedF > 16.0f) { + cXyz spC(m_pos.x, 20.0f + m_pos.y, m_pos.z); + dKy_tevstr_c* var_r25 = dComIfGp_roomControl_getTevStr(i_roomNo); + } + + int var_r27 = daGrass_c::getGrass()->newAnm(); + if (var_r27 < 0) { + return; + } + + field_0x02 = var_r27; + var_r28 = daGrass_c::getGrass()->getAnm(field_0x02); + } else { + var_r28 = daGrass_c::getGrass()->getAnm(field_0x02); + } + + cLib_addCalcAngleS(&var_r28->m_angY, temp_r26, 20, 4000, 1); + cLib_addCalcAngleS(&var_r28->m_angX, cM_atan2s(40.0f - var_f31, 65.0f), 10, 4000, 1); + var_r28->m_state = 2; + } + } } /* 8051DA20-8051DF54 001DC0 0534+00 1/1 0/0 0/0 .text * WorkAt_NoCutAnim__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_Obj */ -void dGrass_data_c::WorkAt_NoCutAnim(fopAc_ac_c* param_0, u32 param_1, int param_2, - dCcMassS_HitInf* param_3, cCcD_Obj* param_4) { - // NONMATCHING +void dGrass_data_c::WorkAt_NoCutAnim(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo, dCcMassS_HitInf* i_hitinf, cCcD_Obj* i_hitObj) { + cXyz spC; + dCcD_GObjInf* gobj_p = dCcD_GetGObjInf(i_hitObj); + + f32 var_f31; + s16 var_r26; + if (i_hitObj == NULL) { + spC.x = m_pos.x - i_hitActor->current.pos.x; + spC.y = m_pos.y - i_hitActor->current.pos.y; + spC.z = m_pos.z - i_hitActor->current.pos.z; + + var_f31 = spC.abs2XZ(); + var_r26 = i_hitActor->shape_angle.y; + } else { + spC = *dCcD_GetGObjInf(i_hitObj)->GetAtVecP(); + var_f31 = spC.abs2XZ(); + + if (cM3d_IsZero(var_f31)) { + cCcD_ShapeAttr* shape = i_hitObj->GetShapeAttr(); + if (shape->GetNVec(m_pos, &spC)) { + PSVECScale(&spC, &spC, 5.0f); + var_f31 = spC.abs2XZ(); + } else { + spC.x = m_pos.x - i_hitActor->current.pos.x; + spC.y = m_pos.y - i_hitActor->current.pos.y; + spC.z = m_pos.z - i_hitActor->current.pos.z; + + var_f31 = spC.abs2XZ(); + } + } + + if (cM3d_IsZero(var_f31)) { + return; + } + + var_r26 = cM_atan2s(spC.x, spC.z); + } + + dGrass_anm_c* anm_p; + if (field_0x02 < 16) { + int var_r25 = daGrass_c::getGrass()->newAnm(); + if (var_r25 < 0) { + return; + } + + field_0x02 = var_r25; + anm_p = daGrass_c::getGrass()->getAnm(field_0x02); + } else { + anm_p = daGrass_c::getGrass()->getAnm(field_0x02); + } + + anm_p->m_angY = var_r26 * (0.9f + (0.2f * cM_rnd())); + + if (i_hitObj->ChkAtType(AT_TYPE_BOMB)) { + anm_p->m_angX = cM_atan2s(var_f31, 40.0f) * (2.5f + (0.5f * cM_rnd())); + } else if (i_hitObj->ChkAtType(AT_TYPE_BOOMERANG)) { + anm_p->m_angX = cM_atan2s(var_f31, 40.0f) * (1.5f + (0.5f * cM_rnd())); + } else if (i_hitObj->ChkAtType(AT_TYPE_100) || i_hitObj->ChkAtType(AT_TYPE_LANTERN_SWING)) { + anm_p->m_angX = 0.05f * (cM_atan2s(var_f31, 40.0f) * (1.5f + cM_rnd())); + } else if (daPy_getPlayerActorClass()->getCutType() >= daPy_py_c::CUT_TYPE_NM_VERTICAL && daPy_getPlayerActorClass()->getCutType() <= daPy_py_c::CUT_TYPE_FINISH_VERTICAL) { + anm_p->m_angX = 0.5f * (cM_atan2s(var_f31, 20.0f) * (0.5f + (0.2f * cM_rnd()))); + } else if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT || + daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_LEFT || + daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT || + daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT) + { + anm_p->m_angX = cM_atan2s(var_f31, 40.0f) * (1.5f + (0.3f * cM_rnd())); + } else { + anm_p->m_angX = cM_atan2s(var_f31, 40.0f) * (0.9f + (0.2f * cM_rnd())); + } + + anm_p->m_state = 2; } /* 8051DF54-8051E1C8 0022F4 0274+00 1/1 0/0 0/0 .text * Direction_Set__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_ObjP5csXyz */ -void dGrass_data_c::Direction_Set(fopAc_ac_c* param_0, u32 param_1, int param_2, - dCcMassS_HitInf* param_3, cCcD_Obj* param_4, csXyz* param_5) { - // NONMATCHING +void dGrass_data_c::Direction_Set(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo, + dCcMassS_HitInf* i_hitinf, cCcD_Obj* i_hitObj, csXyz* i_rotation) { + cXyz sp8; + + f32 var_f31; + s16 var_r27; + if (i_hitObj == NULL) { + sp8.x = m_pos.x - i_hitActor->current.pos.x; + sp8.y = m_pos.y - i_hitActor->current.pos.y; + sp8.z = m_pos.z - i_hitActor->current.pos.z; + + var_f31 = sp8.abs2XZ(); + var_r27 = i_hitActor->shape_angle.y; + } else { + sp8 = *dCcD_GetGObjInf(i_hitObj)->GetAtVecP(); + var_f31 = sp8.abs2XZ(); + + if (cM3d_IsZero(var_f31)) { + cCcD_ShapeAttr* shape = i_hitObj->GetShapeAttr(); + if (shape->GetNVec(m_pos, &sp8)) { + PSVECScale(&sp8, &sp8, 5.0f); + var_f31 = sp8.abs2XZ(); + } else { + sp8.x = m_pos.x - i_hitActor->current.pos.x; + sp8.y = m_pos.y - i_hitActor->current.pos.y; + sp8.z = m_pos.z - i_hitActor->current.pos.z; + + var_f31 = sp8.abs2XZ(); + } + } + + if (cM3d_IsZero(var_f31)) { + return; + } + + var_r27 = cM_atan2s(sp8.x, sp8.z); + } + + i_rotation->y = var_r27 * (0.89999998f + (0.2f * cM_rnd())); + i_rotation->x = 0.6f * (cM_atan2s(var_f31, 40.0f)); + i_rotation->z = 0; } +static u8 data_8052790d; + /* 8051E1C8-8051EB4C 002568 0984+00 1/1 0/0 0/0 .text * WorkAt__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfUs */ -// NONMATCHING - literals / regswap, equivalent? -void dGrass_data_c::WorkAt(fopAc_ac_c* param_0, u32 param_1, int i_roomNo, dCcMassS_HitInf* param_3, +void dGrass_data_c::WorkAt(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo, dCcMassS_HitInf* i_hitinf, u16 i_particleID) { - cCcD_Obj* hit_obj = param_3->GetAtHitObj(); + cCcD_Obj* hit_obj = i_hitinf->GetAtHitObj(); if (hit_obj != NULL) { if (hit_obj->ChkAtType(0) || hit_obj->ChkAtType(AT_TYPE_ARROW) || - hit_obj->ChkAtType(AT_TYPE_SLINGSHOT) || hit_obj->ChkAtType(0x20000000) || + hit_obj->ChkAtType(AT_TYPE_SLINGSHOT) || hit_obj->ChkAtType(AT_TYPE_20000000) || hit_obj->ChkAtType(AT_TYPE_SHIELD_ATTACK) || hit_obj->ChkAtType(AT_TYPE_BOOMERANG) || - hit_obj->ChkAtType(0x100) || hit_obj->ChkAtType(AT_TYPE_LANTERN_SWING) || + hit_obj->ChkAtType(AT_TYPE_100) || hit_obj->ChkAtType(AT_TYPE_LANTERN_SWING) || hit_obj->ChkAtType(AT_TYPE_HOOKSHOT)) { - WorkAt_NoCutAnim(param_0, param_1, i_roomNo, param_3, hit_obj); + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hit_obj); return; } } fopAc_ac_c* player_p = dComIfGp_getPlayer(0); if (hit_obj->ChkAtType(AT_TYPE_BOMB)) { - if (param_0 != NULL && m_pos.abs(param_0->current.pos) > 200.0f) { - WorkAt_NoCutAnim(param_0, param_1, i_roomNo, param_3, hit_obj); + if (i_hitActor != NULL && m_pos.abs(i_hitActor->current.pos) > 200.0f) { + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hit_obj); return; } } else if (daPy_getPlayerActorClass()->getCutType() >= daPy_py_c::CUT_TYPE_NM_RIGHT && @@ -54,7 +329,7 @@ void dGrass_data_c::WorkAt(fopAc_ac_c* param_0, u32 param_1, int i_roomNo, dCcMa { if (m_pos.abs(player_p->current.pos) > 158.0f) { if (m_pos.abs(player_p->current.pos) < 200.0f) { - WorkAt_NoCutAnim(param_0, param_1, i_roomNo, param_3, hit_obj); + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hit_obj); } return; } @@ -62,14 +337,14 @@ void dGrass_data_c::WorkAt(fopAc_ac_c* param_0, u32 param_1, int i_roomNo, dCcMa daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_LEFT) { if (m_pos.abs(player_p->current.pos) > 200.0f) { - WorkAt_NoCutAnim(param_0, param_1, i_roomNo, param_3, hit_obj); + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hit_obj); return; } } else if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT || daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT) { if (m_pos.abs(player_p->current.pos) > 500.0f) { - WorkAt_NoCutAnim(param_0, param_1, i_roomNo, param_3, hit_obj); + WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hit_obj); return; } } else if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_NM_VERTICAL || @@ -101,48 +376,60 @@ void dGrass_data_c::WorkAt(fopAc_ac_c* param_0, u32 param_1, int i_roomNo, dCcMa static csXyz ang(0, 0, 0); - cXyz sp50(m_pos.x, m_pos.y + 25.0f, m_pos.z); + cXyz particle_pos(m_pos.x, m_pos.y + 25.0f, m_pos.z); dKy_tevstr_c* tevstr = dComIfGp_roomControl_getTevStr(i_roomNo); - csXyz sp40; - Direction_Set(param_0, param_1, i_roomNo, param_3, hit_obj, &sp40); + csXyz particle_rot; + Direction_Set(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hit_obj, &particle_rot); GXColor envcolor; - envcolor.r = (m_addCol >> 8) & 0xFF; + envcolor.r = m_addCol >> 8; envcolor.g = m_addCol & 0xFF; - dComIfGp_particle_set(i_particleID, &sp50, tevstr, &sp40, NULL, 255, + dComIfGp_particle_set(i_particleID, &particle_pos, tevstr, &particle_rot, NULL, 255, dPa_control_c::getLight8EcallBack(), -1, &envcolor, NULL, NULL); - static bool init; - if (!init) { - init = true; + if (data_8052790d == 0) { + data_8052790d = 1; mDoAud_seStart(JA_SE_LK_CUT_GRASS, &m_pos, 0, dComIfGp_getReverb(i_roomNo)); } } -/* 8051EB4C-8051EB88 002EEC 003C+00 3/3 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" asm void __dt__5csXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 805278B8-805278C4 0046E0 000C+00 3/3 0/0 0/0 .data __vt__15dCcMassS_HitInf */ -SECTION_DATA extern void* __vt__15dCcMassS_HitInf[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15dCcMassS_HitInfFv, -}; - /* 8051EB88-8051ED98 002F28 0210+00 1/1 0/0 0/0 .text hitCheck__13dGrass_data_cFiUs */ -void dGrass_data_c::hitCheck(int param_0, u16 param_1) { - // NONMATCHING -} +void dGrass_data_c::hitCheck(int i_roomNo, u16 i_particleName) { + dCcMassS_HitInf hitinf; + fopAc_ac_c* hit_actor; -/* 8051ED98-8051EDE0 003138 0048+00 1/0 0/0 0/0 .text __dt__15dCcMassS_HitInfFv */ -// dCcMassS_HitInf::~dCcMassS_HitInf() { -extern "C" asm void __dt__15dCcMassS_HitInfFv() { - // NONMATCHING + u32 mass_flags = dComIfG_Ccsp()->ChkMass(&m_pos, &hit_actor, &hitinf); + bool at_hit = (mass_flags & 1) && (hit_actor != NULL && fopAcM_GetName(hit_actor) != PROC_Obj_Carry); + + if (!(mass_flags & 2) && !at_hit) { + if (field_0x02 >= 16) { + dGrass_anm_c* anm_p = daGrass_c::getGrass()->getAnm(field_0x02); + s16 spC = anm_p->m_angY & 0xE000; + int sp10 = field_0x02 & 15; + dGrass_anm_c* temp_r27 = daGrass_c::getGrass()->getAnm(sp10); + + if (anm_p->m_state == 2) { + mDoAud_seStart(JA_SE_FT_ADD_GRASS, &m_pos, 0, dComIfGp_getReverb(i_roomNo)); + anm_p->m_state = 1; + } + + if (cLib_addCalcAngleS(&anm_p->m_angX, temp_r27->m_angX, 10, 4400, 400) == 0) { + if (cLib_addCalcAngleS(&anm_p->m_angY, temp_r27->m_angY, 10, 4400, 400) == 0) { + daGrass_c::getGrass()->deleteAnm(field_0x02); + field_0x02 &= 15; + } + } + } + } else { + if (mass_flags & 2) { + WorkCo(hit_actor, mass_flags, i_roomNo); + } + + if (at_hit) { + WorkAt(hit_actor, mass_flags, i_roomNo, &hitinf, i_particleName); + } + } } /* 8051EDE0-8051EDF0 003180 0010+00 1/1 0/0 0/0 .text newData__13dGrass_room_cFP13dGrass_data_c */ @@ -159,7 +446,7 @@ void dGrass_room_c::deleteData() { s8 anm_id = mp_data->field_0x02; if (anm_id >= 16) { daGrass_c::getGrass()->deleteAnm(anm_id); - mp_data->field_0x02 = cM_rnd() * FLOAT_LABEL(lit_4600); + mp_data->field_0x02 = cM_rnd() * 15.0f; } mp_data = mp_data->mp_next; @@ -174,7 +461,7 @@ dGrass_packet_c::dGrass_packet_c() { data_p++; } - field_0x10 = 0; + m_dataNum = 0; dGrass_anm_c* anm_p = m_anm; for (int i = 0; i < 112; i++) { @@ -202,28 +489,359 @@ dGrass_packet_c::dGrass_packet_c() { m_Mkusa_9q_cDL_size = 0xC0; field_0x1d714 = 0; - m_deleteRoom = &deleteRoom; + m_deleteRoom = &dGrass_packet_c::deleteRoom; } - /* 8051F03C-8051FABC 0033DC 0A80+00 1/0 0/0 0/0 .text draw__15dGrass_packet_cFv */ -// void dGrass_packet_c::draw() { -extern "C" asm void draw__15dGrass_packet_cFv() { - // NONMATCHING +// NONMATCHING +void dGrass_packet_c::draw() { + dScnKy_env_light_c* kankyo = dKy_getEnvlight(); + cXyz spB4; + cXyz spA8; + + j3dSys.reinitGX(); + GXSetNumIndStages(0); + dKy_setLight_again(); + GXClearVtxDesc(); + + static GXVtxDescList l_vtxDescList[] = { + {GX_VA_POS, GX_INDEX8}, + {GX_VA_NRM, GX_INDEX8}, + {GX_VA_CLR0, GX_INDEX8}, + {GX_VA_TEX0, GX_INDEX8}, + {GX_VA_NULL, GX_NONE}, + }; + + static GXVtxAttrFmtList l_vtxAttrFmtList[] = { + GX_VA_POS, + GX_POS_XYZ, + GX_F32, + 0, + + GX_VA_NRM, + GX_NRM_XYZ, + GX_F32, + 0, + + GX_VA_CLR0, + GX_CLR_RGBA, + GX_RGBA8, + 0, + + GX_VA_TEX0, + GX_TEX_ST, + GX_F32, + 0, + + GX_VA_NULL, + GX_TEX_ST, + GX_S8, + 0, + }; + + GXSetVtxDescv(l_vtxDescList); + GXSetVtxAttrFmtv(GX_VTXFMT0, l_vtxAttrFmtList); + GXSetArray(GX_VA_POS, mp_pos, sizeof(Vec)); + GXSetArray(GX_VA_NRM, mp_normal, sizeof(Vec)); + GXSetArray(GX_VA_CLR0, mp_colors, sizeof(GXColor)); + GXSetArray(GX_VA_TEX0, mp_texCoords, 8); + + GXColorS10 spA0 = {0, 0, 0, 0}; + GXColorS10 sp98 = {0, 0, 0, 0}; + + dGrass_room_c* sp54 = m_room; + + f32 var_f31 = g_env_light.getDaytime(); + f32 var_f30; + f32 var_f29; + if (var_f31 >= 90.0f && var_f31 < 135.0f) { + var_f30 = 1.0f - (0.022222223f * (135.0f - var_f31)); + var_f29 = 100.0f - (18.0f * var_f30); + } else if (var_f31 >= 135.0f && var_f31 < 225.0f) { + var_f30 = 1.0f - (0.011111111f * (225.0f - var_f31)); + var_f29 = 82.0f - (25.0f * var_f30); + } else if (var_f31 >= 225.0f && var_f31 < 270.0f) { + var_f30 = 1.0f - (0.022222223f * (270.0f - var_f31)); + var_f29 = 57.0f - (-25.0f * var_f30); + } else if (var_f31 >= 270.0f && var_f31 < 315.0f) { + var_f30 = (1.0f - (0.022222223f * (315.0f - var_f31))); + var_f29 = 82.0f - (-18.0f * var_f30); + } else { + var_f29 = 100.0f; + } + + for (int i = 0; i < 64; i++) { + dGrass_data_c* var_r29 = sp54->getData(); + if (var_r29 != NULL && dComIfGp_roomControl_checkStatusFlag(i, 0x10)) { + int sp4C = 0; + int sp48 = 6; + dKy_tevstr_c* sp44 = dComIfGp_roomControl_getTevStr(i); + + f32 temp_f27 = g_env_light.grass_light_inf_rate * g_env_light.bg_light_influence; + f32 sp58 = 1.0f - temp_f27; + temp_f27 += 0.5f * sp58; + + J3DLightInfo& sp40 = sp44->mLights[0].getLightInfo(); + sp98.r = sp40.mColor.r * temp_f27; + sp98.g = sp40.mColor.g * temp_f27; + sp98.b = sp40.mColor.b * temp_f27; + sp98.a = var_f29; + + if (memcmp(dComIfGp_getStartStageName(), "D_MN01", 6) == 0) { + sp98.r = 0; + sp98.g = 0x1E; + sp98.b = 5; + sp98.a = 0x50; + } + + GFSetTevColorS10(GX_TEVREG1, sp98); + + if (dComIfGp_roomControl_getStatusRoomDt(i) != NULL) { + sp48 = dComIfGp_roomControl_getStatusRoomDt(i)->mRoomDt.getLightVecInfoNum(); + } + + if (dKy_SunMoon_Light_Check() == TRUE && sp48 < 2) { + sp48 = 2; + } + + for (int j = 0; j < 6; j++) { + if (kankyo->field_0x0c18[j].field_0x26 == 1) { + sp48++; + } + } + + if (var_r29->field_0x05 <= 3 || var_r29->field_0x05 >= 10) { + if (sp48 <= 3) { + GXCallDisplayList(mp_kusa9q_14_DL, m_kusa9q_DL_14_size); + } else { + GXCallDisplayList(mp_kusa9q_DL, m_kusa9q_DL_size); + } + } else { + GXCallDisplayList(l_Tengusa_matDL, 0xA0); + } + + GFSetTevColorS10(GX_TEVREG2, spA0); + + dKy_Global_amb_set(sp44); + dKy_GfFog_tevstr_set(sp44); + dKy_setLight_nowroom_grass(sp44->room_no, 0.0f); + + while (var_r29 != NULL) { + if (var_r29->field_0x05 <= 3 || var_r29->field_0x05 >= 10) { + if (sp48 <= 2) { + GXCallDisplayList(mp_kusa9q_14_DL, m_kusa9q_DL_14_size); + } else { + GXCallDisplayList(mp_kusa9q_DL, m_kusa9q_DL_size); + } + } else { + GXCallDisplayList(l_Tengusa_matDL, 0xA0); + } + + if (var_r29->field_0x02 <= -1) { + sp98.a = 0; + } else { + sp98.a = var_f29; + } + + GFSetTevColorS10(GX_TEVREG1, sp98); + + GXColor sp38; + sp38.r = (var_r29->m_addCol & 0x1F) * 2; + sp38.g = ((var_r29->m_addCol >> 5) & 0x1F) * 2; + sp38.b = ((var_r29->m_addCol >> 0xA) & 0x1F) * 2; + + if (daPy_py_c::checkNowWolfPowerUp()) { + f32 var_f26 = g_env_light.bg_amb_col[0].r / 255.0f; + sp38.r = (((var_r29->m_addCol & 0x1F) * 2) + 0x10) * (4.0f * var_f26); + + var_f26 = g_env_light.bg_amb_col[0].g / 255.0f; + sp38.g = ((((var_r29->m_addCol >> 5) & 0x1F) * 2) + 0x10) * (4.0f * var_f26); + + var_f26 = g_env_light.bg_amb_col[0].b / 255.0f; + sp38.b = ((((var_r29->m_addCol >> 0xA) & 0x1F) * 2) + 0x10) * (4.0f * var_f26); + } + + f32 sp2C = 1.0f - ((int)var_r29->m_pos.x * 0.001953125f); + + f32 var_f28 = 1.1f - ((int)var_r29->m_pos.x / 2000.0f); + var_f28 -= (int)var_r29->m_pos.z / 2000.0f; + + if (var_f28 > 1.0f) { + var_f28 = 1.0f; + } + + if (sp38.r == 0x3E) { + sp38.r = sp44->AmbCol.r * sp2C; + } else { + sp38.r = sp38.r * var_f28; + } + + if (sp38.g == 0x3E) { + sp38.g = sp44->AmbCol.g * sp2C; + } else { + sp38.g = sp38.g * var_f28; + } + + if (sp38.b == 0x3E) { + sp38.b = sp44->AmbCol.b * sp2C; + } else { + sp38.b = sp38.b * var_f28; + } + + GXSetChanAmbColor(GX_COLOR0A0, sp38); + + if (!cLib_checkBit(var_r29->field_0x01, 2)) { + GXLoadPosMtxImm(var_r29->m_modelMtx, 0); + GXLoadNrmMtxImm(j3dSys.getViewMtx(), 0); + if (var_r29->field_0x05 <= 3 || var_r29->field_0x05 >= 10) { + if (var_r29->field_0x02 < -1) { + spA0.a = (-0x100 - ((var_r29->field_0x02 << 8) / 40)); + GFSetTevColorS10(GX_TEVREG2, spA0); + + if (var_r29->field_0x02 != -2) { + GXCallDisplayList(mp_Mkusa_9q_DL, m_Mkusa_9q_DL_size); + } else { + GXCallDisplayList(mp_Mkusa_9q_cDL, m_Mkusa_9q_cDL_size); + } + + spA0.a = 0; + GFSetTevColorS10(GX_TEVREG2, spA0); + } else if (var_r29->field_0x02 >= 0) { + GXCallDisplayList(mp_Mkusa_9q_DL, m_Mkusa_9q_DL_size); + } else { + GXCallDisplayList(mp_Mkusa_9q_cDL, m_Mkusa_9q_cDL_size); + } + } else if (var_r29->field_0x02 < -1) { + spA0.a = (-0x100 - ((var_r29->field_0x02 << 8) / 40)); + GFSetTevColorS10(GX_TEVREG2, spA0); + + if (var_r29->field_0x02 != -2) { + GXCallDisplayList(l_M_TenGusaDL, 0xC0); + } else { + GXCallDisplayList(mp_Mkusa_9q_cDL, m_Mkusa_9q_cDL_size); + } + + spA0.a = 0; + GFSetTevColorS10(GX_TEVREG2, spA0); + } else if (var_r29->field_0x02 >= 0) { + GXCallDisplayList(l_M_TenGusaDL, 0xC0); + } else { + GXCallDisplayList(mp_Mkusa_9q_cDL, m_Mkusa_9q_cDL_size); + } + } + + var_r29 = var_r29->mp_next; + } + } + sp54++; + } + + J3DShape::resetVcdVatCache(); } /* 8051FABC-8051FF88 003E5C 04CC+00 1/1 0/0 0/0 .text calc__15dGrass_packet_cFv */ +// NONMATCHING void dGrass_packet_c::calc() { - // NONMATCHING + cXyz* temp_r29 = dKyw_get_wind_vec(); + f32 var_f31 = dKyw_get_wind_pow() * dKyw_get_wind_pow(); + + static s16 exec_count_dammy = 0; + static s16 exec_count_dammy2 = 0; + + if (var_f31 < 0.09f) { + var_f31 = 0.09f; + } + + if (memcmp(dComIfGp_getStartStageName(), "D_MN01", 6) == 0 && temp_r29 != NULL) { + temp_r29->x = 0.0f; + temp_r29->y = 0.0f; + temp_r29->z = 0.0f; + var_f31 = 0.0f; + } + + if (memcmp(dComIfGp_getStartStageName(), "D_MN54", 6) == 0 && temp_r29 != NULL) { + temp_r29->x = 0.0f; + temp_r29->y = 0.0f; + temp_r29->z = 0.0f; + var_f31 = 0.01f; + } + + dGrass_anm_c* sp14 = getAnm(); + f32 temp_f30 = cM_scos(field_0x1d714); + field_0x1d714 += (int)(40.0f + cM_rndF(290.0f)); + + int sp18 = 1.0f + ((1.0f - var_f31) * (2.0f + NREG_F(3))); + + for (int i = 0; i < 16; i++) { + f32 temp_f28 = i * 0.0625f; + f32 temp_f29 = cLib_maxLimit(500.0f + (500.0f * (i / 16)), 2000.0f); + f32 temp_f27_2 = 1.6f + (0.69999999f * cM_ssin(exec_count_dammy2)); + + s16 sp8 = 0.69999999f * var_f31 * (temp_f29 + ((1.0f + (-0.2f * temp_f28)) * (10.0f * temp_f29 * (cM_ssin(exec_count_dammy + (i * 3050)) + temp_f27_2)))); + + exec_count_dammy += (int)(525.0f * var_f31); + exec_count_dammy2 += (int)(325.0f * var_f31); + + cLib_addCalcAngleS(&sp14->m_angX, (s16)sp8, sp18, 4000, 1); + cLib_addCalcAngleS(&sp14->m_angY, (s16)cM_atan2s(temp_r29->x, temp_r29->z), 20, 4000, 1); + + sp14++; + } + + int sp10 = dComIfGp_roomControl_getStayNo(); + dGrass_data_c* var_r30 = m_room[sp10].getData(); + dComIfGs_Grass_hide_Set(0); + + if (var_r30 != NULL) { + data_8052790d = 0; + dComIfG_Ccsp()->SetMassAttr(40.0f, 120.0f, 11, 0); + + do { + u16 spA = 0x89D7; + if (var_r30->field_0x05 >= 7 && var_r30->field_0x05 <= 9) { + spA = 0x89D6; + } else if (var_r30->field_0x05 >= 4 && var_r30->field_0x05 <= 6) { + spA = 0x89D8; + } + + if (!cLib_checkBit(var_r30->field_0x01, 2)) { + if (var_r30->field_0x02 >= 0) { + var_r30->hitCheck(sp10, spA); + } else if (var_r30->field_0x02 < -2) { + var_r30->field_0x02 += 1; + } + } else if (var_r30->field_0x02 >= 16) { + daGrass_c::getGrass()->deleteAnm(var_r30->field_0x02); + var_r30->field_0x02 = 15.0f * cM_rnd(); + } + + var_r30 = var_r30->mp_next; + } while (var_r30 != NULL); + } else { + dComIfG_Ccsp()->SetMassAttr(40.0f, 40.0f, 11, 0); + } } /* 8051FF88-80520030 004328 00A8+00 2/3 0/0 0/1 .text checkGroundY__FR4cXyz */ static f32 checkGroundY(cXyz& param_0) { - // NONMATCHING + dBgS_GndChk sp8; + param_0.y += 50.0f; + + bool temp_r3 = fopAcM_gc_c::gndCheck(¶m_0); + f32 temp_f31 = fopAcM_gc_c::getGroundY(); + + param_0.y -= 50.0f; + + f32 temp_f30; + if (!temp_r3) { + temp_f30 = param_0.y; + return temp_f30; + } + + return temp_f31; } /* 80520030-8052067C 0043D0 064C+00 1/1 0/0 0/0 .text update__15dGrass_packet_cFv */ -// NONMATCHING - mostly matches except literals, some regalloc, and one out of order block void dGrass_packet_c::update() { static s16 mAngleZ[1500]; @@ -243,7 +861,7 @@ void dGrass_packet_c::update() { cXyz sp1C; f32 far = mDoLib_clipper::getFar(); - mDoLib_clipper::changeFar(far * 1.636364f); + mDoLib_clipper::changeFar(far * 1.6363636f); for (int i = 0; i < 1500; i++) { if (data_p->m_state != 0) { @@ -269,14 +887,13 @@ void dGrass_packet_c::update() { mAngleZ[i] = 0; } - f32 temp_f2 = ((((s16)data_p->m_pos.x * 3535) & 0xFFF) / 4096.0f) + - ((((s16)data_p->m_pos.z * 3535) & 0xFFF) / 4096.0f); - temp_f2 *= 0.5f; + f32 temp_f2 = (((s16)data_p->m_pos.x * 3535) & 0xFFF) / 4096.0f; + temp_f2 = (temp_f2 + ((((s16)data_p->m_pos.z * 3535) & 0xFFF) / 4096.0f)) / 2; f32 var_f31; f32 var_f30; if (data_p->field_0x05 >= 10) { - var_f31 = temp_f2 * 0.4f + 0.6f; + var_f31 = temp_f2 * 0.39999998f + 0.6f; var_f30 = temp_f2 * 0.3f + 0.7f; } else { var_f31 = temp_f2 * 0.3f + 0.7f; @@ -314,10 +931,7 @@ void dGrass_packet_c::update() { if (data_p->field_0x05 >= 10 && memcmp(dComIfGp_getStartStageName(), "D_MN54", 6) != 0) { - f32 pow = - dKyw_get_wind_pow() * dKyw_get_wind_pow() * dKyw_get_wind_pow(); - s16 ang = (((i + 1) & 0xF) * 25.0f + 3200.0f) * pow; - mAngleZ[i] = mAngleZ[i] + ang; + mAngleZ[i] += (int)((((i + 1) & 0xF) * 25.0f + 3200.0f) * (dKyw_get_wind_pow() * dKyw_get_wind_pow() * dKyw_get_wind_pow())); } } @@ -345,7 +959,7 @@ void dGrass_packet_c::update() { /* 8052067C-80520770 004A1C 00F4+00 1/1 0/0 0/0 .text * setData__15dGrass_packet_cFP13dGrass_data_ciR4cXyziUcUcsUc */ -void dGrass_packet_c::setData(dGrass_data_c* i_data, int param_1, cXyz& i_pos, int i_roomNo, +void dGrass_packet_c::setData(dGrass_data_c* i_data, int i_dataNo, cXyz& i_pos, int i_roomNo, u8 i_tableNo, u8 i_itemBitNo, s16 i_addCol, u8 param_7) { f32 y_pos; if (fopOvlpM_IsPeek()) { @@ -357,7 +971,7 @@ void dGrass_packet_c::setData(dGrass_data_c* i_data, int param_1, cXyz& i_pos, i } i_data->field_0x01 = 2; - i_data->field_0x02 = cM_rndF(FLOAT_LABEL(lit_4600)); + i_data->field_0x02 = cM_rndF(15.0f); i_data->m_pos.set(i_pos.x, y_pos, i_pos.z); i_data->m_tableNo = i_tableNo; i_data->m_itemBitNo = i_itemBitNo; @@ -365,15 +979,15 @@ void dGrass_packet_c::setData(dGrass_data_c* i_data, int param_1, cXyz& i_pos, i i_data->field_0x05 = param_7; m_room[i_roomNo].newData(i_data); - field_0x10 = param_1; + m_dataNum = i_dataNo; } /* 80520770-80520864 004B10 00F4+00 1/1 0/0 0/0 .text newData__15dGrass_packet_cFR4cXyziUcUcsUc */ dGrass_data_c* dGrass_packet_c::newData(cXyz& i_pos, int i_roomNo, u8 i_tableNo, u8 i_itemBitNo, s16 i_addCol, u8 param_5) { - dGrass_data_c* data_p = m_data + field_0x10; + dGrass_data_c* data_p = m_data + m_dataNum; - for (int i = field_0x10; i < 1500; i++) { + for (int i = m_dataNum; i < 1500; i++) { if (data_p->m_state == 0) { setData(data_p, i, i_pos, i_roomNo, i_tableNo, i_itemBitNo, i_addCol, param_5); return data_p; @@ -382,7 +996,7 @@ dGrass_data_c* dGrass_packet_c::newData(cXyz& i_pos, int i_roomNo, u8 i_tableNo, } data_p = m_data; - for (int i = 0; i < field_0x10; i++) { + for (int i = 0; i < m_dataNum; i++) { if (data_p->m_state == 0) { setData(data_p, i, i_pos, i_roomNo, i_tableNo, i_itemBitNo, i_addCol, param_5); return data_p; @@ -424,12 +1038,6 @@ void dGrass_packet_c::setAnm(int i_idx, s16) { anm_p->m_angX = 0; } -/* 8052090C-80520928 004CAC 001C+00 1/1 0/0 0/0 .text getSwordTopPos__9daPy_py_cCFv */ -// void daPy_py_c::getSwordTopPos() const { -extern "C" asm void getSwordTopPos__9daPy_py_cCFv() { - // NONMATCHING -} - /* 80520928-80520934 004CC8 000C+00 1/1 0/0 0/0 .text __ct__13dGrass_room_cFv */ dGrass_room_c::dGrass_room_c() { mp_data = NULL;