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
This commit is contained in:
TakaRikka 2025-02-19 15:43:26 -08:00 committed by GitHub
parent 376a5be6e3
commit bbc7944e54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 3827 additions and 5003 deletions

View File

@ -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

View File

@ -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

View File

@ -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"),

View File

@ -6,7 +6,7 @@
struct counter_class {
u32 mCounter0;
s32 mCounter1;
s32 mTimer;
u32 mTimer;
};
extern counter_class g_Counter;

View File

@ -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();

View File

@ -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 */

View File

@ -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;
};

View File

@ -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); }

View File

@ -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;

View File

@ -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;

View File

@ -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];

View File

@ -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; }

View File

@ -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;

View File

@ -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();

View File

@ -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 */

View File

@ -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;
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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<u8>(m_state, 0x10) || !cLib_checkBit<u8>(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<u8>(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<u8>(m_state, 8);
} else if (cLib_checkBit<u8>(m_state, 0x10)) {
cLib_onBit<u8>(m_state, 8);
} else {
field_0x03 = 0x14;
cLib_onBit<u8>(m_state, 0x10);
}
} else {
cLib_onBit<u8>(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<u8>(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<u8>(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<u8>(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<u8>(sp44->m_state, 4) && !cLib_checkBit<u8>(sp44->m_state, 0x40)) {
GXLoadPosMtxImm(sp44->m_modelMtx, 0);
GXLoadNrmMtxImm(j3dSys.getViewMtx(), 0);
if (!cLib_checkBit<u8>(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<u8>(sp34->m_state, 4) && cLib_checkBit<u8>(sp34->m_state, 0x40)) {
GXLoadPosMtxImm(sp34->m_modelMtx, 0);
GXLoadNrmMtxImm(j3dSys.getViewMtx(), 0);
if (!cLib_checkBit<u8>(sp34->m_state, 8)) {
if (!cLib_checkBit<u8>(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<u8>(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<u8>(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(&param_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<u8>(data_p->m_state, 2)) {
cLib_calcTimer<u8>(&data_p->field_0x03);
if (cLib_checkBit<u8>(data_p->m_state, 0x20) && sp14 < 8) {
data_p->m_pos.y = flowerCheckGroundY(data_p->m_pos);
cLib_offBit<u8>(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<u8>(data_p->m_state, 4);
data_p->deleteAnm();
} else {
cLib_offBit<u8>(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<u8>(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<u8>(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<u8>(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;
}
}

View File

@ -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 <dolphin/gf.h>
/* 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<u8>(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<f32>(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<u8>(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(&param_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;