summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-02-19 15:43:26 -0800
committerGitHub <noreply@github.com>2025-02-19 18:43:26 -0500
commitbbc7944e54bd4c6095c82ca9877c48488a16cdff (patch)
treed417a6408bd4ce2193f5ad41da93dabd6b297712 /src
parent376a5be6e304b5ec49e899e0f79287690522e08a (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_boomerang.cpp2667
-rw-r--r--src/d/actor/d_a_grass.cpp2284
-rw-r--r--src/d/actor/d_a_spinner.cpp1779
-rw-r--r--src/d/actor/d_flower.inc889
-rw-r--r--src/d/actor/d_grass.inc766
5 files changed, 3556 insertions, 4829 deletions
diff --git a/src/d/actor/d_a_boomerang.cpp b/src/d/actor/d_a_boomerang.cpp
index a360598b62..1d6fb89c54 100644
--- a/src/d/actor/d_a_boomerang.cpp
+++ b/src/d/actor/d_a_boomerang.cpp
@@ -7,327 +7,115 @@
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "d/actor/d_a_alink.h"
#include "d/d_pane_class.h"
-#include "dol2asm.h"
#include "m_Do/m_Do_lib.h"
#include "d/actor/d_a_mirror.h"
+#include "Z2AudioLib/Z2Instances.h"
#include "SSystem/SComponent/c_math.h"
-
-//
-// Forward References:
-//
-
-extern "C" void createHeap__19daBoomerang_sight_cFv();
-extern "C" void initialize__19daBoomerang_sight_cFv();
-extern "C" void playAnime__19daBoomerang_sight_cFii();
-extern "C" void initFrame__19daBoomerang_sight_cFi();
-extern "C" void copyNumData__19daBoomerang_sight_cFi();
-extern "C" void __dt__4cXyzFv();
-extern "C" void setSight__19daBoomerang_sight_cFPC4cXyzi();
-extern "C" void draw__19daBoomerang_sight_cFv();
-extern "C" void windModelCallBack__13daBoomerang_cFv();
-extern "C" static void daBoomeang_windModelCallBack__FP8J3DJointi();
-extern "C" void draw__13daBoomerang_cFv();
-extern "C" static void daBoomerang_Draw__FP13daBoomerang_c();
-extern "C" void lockLineCallback__13daBoomerang_cFP10fopAc_ac_c();
-extern "C" static void
-daBoomerang_lockLineCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
-extern "C" void moveLineCallback__13daBoomerang_cFP10fopAc_ac_c();
-extern "C" static void
-daBoomerang_moveLineCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
-extern "C" void pushLockList__13daBoomerang_cFi();
-extern "C" void cancelLockActorBase__13daBoomerang_cFP10fopAc_ac_c();
-extern "C" void setAimActorBase__13daBoomerang_cFP10fopAc_ac_c();
-extern "C" void setLockActor__13daBoomerang_cFP10fopAc_ac_ci();
-extern "C" void resetLockActor__13daBoomerang_cFv();
-extern "C" void setRoomInfo__13daBoomerang_cFv();
-extern "C" void setKeepMatrix__13daBoomerang_cFv();
-extern "C" void setMoveMatrix__13daBoomerang_cFv();
-extern "C" void setRotAngle__13daBoomerang_cFv();
-extern "C" void setAimPos__13daBoomerang_cFv();
-extern "C" void checkBgHit__13daBoomerang_cFP4cXyzP4cXyz();
-extern "C" void setEffectTraceMatrix__13daBoomerang_cFPUlUs();
-extern "C" void setEffect__13daBoomerang_cFv();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void procWait__13daBoomerang_cFv();
-extern "C" void procMove__13daBoomerang_cFv();
-extern "C" void execute__13daBoomerang_cFv();
-extern "C" static void daBoomerang_Execute__FP13daBoomerang_c();
-extern "C" void __dt__13daBoomerang_cFv();
-extern "C" static void daBoomerang_Delete__FP13daBoomerang_c();
-extern "C" void createHeap__13daBoomerang_cFv();
-extern "C" static void daBoomerang_createHeap__FP10fopAc_ac_c();
-extern "C" void create__13daBoomerang_cFv();
-extern "C" void __ct__13daBoomerang_cFv();
-extern "C" void __dt__14dBgS_ObjGndChkFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" static void daBoomerang_Create__FP10fopAc_ac_c();
-extern "C" void draw__12dDlst_base_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" static void func_804A2764();
-extern "C" static void func_804A276C();
-extern "C" static void func_804A2774();
-extern "C" static void func_804A277C();
-extern "C" static void func_804A2784();
-extern "C" void __dt__19daBoomerang_sight_cFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" u16 const m_lockWaitTime__18daBoomerang_HIO_c0;
-extern "C" f32 const m_minCircleR__18daBoomerang_HIO_c0;
-extern "C" f32 const m_middleCircleR__18daBoomerang_HIO_c0;
-extern "C" f32 const m_maxCircleR__18daBoomerang_HIO_c0;
-extern "C" f32 const m_scale__18daBoomerang_HIO_c0;
-extern "C" f32 const m_lockWindScale__18daBoomerang_HIO_c0;
-extern "C" extern char const* const d_a_boomerang__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XYZrotM__FPA4_fsss();
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
-extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_modelEntryDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void mDoLib_project__FP3VecP3Vec();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
-extern "C" void fopAcM_setStageLayer__FPv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void roofCheck__11fopAcM_rc_cFPC4cXyz();
-extern "C" void waterCheck__11fopAcM_wt_cFPC4cXyz();
-extern "C" void fpcSch_JudgeByID__FPvPv();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void entry__10daMirror_cFP8J3DModel();
-extern "C" void getResInfo__14dRes_control_cFPCcP11dRes_info_ci();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void getEmitter__Q213dPa_control_c7level_cFUl();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void init__7dPaPo_cFP9dBgS_Acchff();
-extern "C" void setEffectCenter__7dPaPo_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC5csXyzPC4cXyzScff();
-extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetUnderwaterRoofCode__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void dBgS_CheckBRoofPoly__FRC13cBgS_PolyInfo();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP10fopAc_ac_ciP12dBgS_AcchCir();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-extern "C" void __ct__14dBgS_ObjLinChkFv();
-extern "C" void __dt__14dBgS_ObjLinChkFv();
-extern "C" void __ct__20dBgS_BoomerangLinChkFv();
-extern "C" void __dt__20dBgS_BoomerangLinChkFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void ResetAtHit__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps();
-extern "C" void CalcAtVec__8dCcD_CpsFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void Set__12dCcMassS_MngFP8cCcD_ObjUc();
-extern "C" void getAlinkArcName__9daAlink_cFv();
-extern "C" void simpleAnmPlay__9daAlink_cFP10J3DAnmBase();
-extern "C" void itemActionTrigger__9daAlink_cFv();
-extern "C" void checkBoomerangLockAccept__9daAlink_cFv();
-extern "C" void getBoomSpeed__9daAlink_cFv();
-extern "C" void getBoomCatchSpeed__9daAlink_cCFv();
-extern "C" void getBoomFlyMax__9daAlink_cCFv();
-extern "C" void getBoomLockMax__9daAlink_cFv();
-extern "C" void getBoomBgThroughTime__9daAlink_cCFv();
-extern "C" void returnBoomerang__9daAlink_cFi();
-extern "C" void dCam_getBody__Fv();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void __dv__4cXyzCFf();
-extern "C" void atan2sX_Z__4cXyzCFv();
-extern "C" void atan2sY_XZ__4cXyzCFv();
-extern "C" void __ct__5csXyzFsss();
-extern "C" void cM_rad2s__Ff();
-extern "C" void cM_atan2s__Fff();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-extern "C" void __ct__8cM3dGCpsFv();
-extern "C" void __dt__8cM3dGCpsFv();
-extern "C" void Set__8cM3dGCpsFRC4cXyzRC4cXyzf();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void cLib_addCalcAngleS__FPsssss();
-extern "C" void cLib_chaseUC__FPUcUcUc();
-extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf();
-extern "C" void cLib_chaseAngleS__FPsss();
-extern "C" void func_802807E0();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dt__14Z2SoundObjBaseFv();
-extern "C" void deleteObject__14Z2SoundObjBaseFv();
-extern "C" void __ct__16Z2SoundObjSimpleFv();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader();
-extern "C" void __ct__9J2DScreenFv();
-extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
-extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
-extern "C" void animation__9J2DScreenFv();
-extern "C" void load__20J2DAnmLoaderDataBaseFPCv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP12J3DModelData();
-extern "C" void entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_17();
-extern "C" void _savegpr_20();
-extern "C" void _savegpr_23();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_17();
-extern "C" void _restgpr_20();
-extern "C" void _restgpr_23();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__8dCcD_Cps[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__12cCcD_CpsAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" extern void* __vt__16Z2SoundObjSimple[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mRoofCheck__11fopAcM_rc_c[80];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" f32 mRoofY__11fopAcM_rc_c;
-extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */];
-extern "C" extern u8 m_dropAngleY__20daPy_boomerangMove_c[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
-
/* 8049E0B8-8049E36C 000078 02B4+00 1/1 0/0 0/0 .text createHeap__19daBoomerang_sight_cFv
*/
int daBoomerang_sight_c::createHeap() {
- void* resource;
- const char* arcName = daAlink_c::getAlinkArcName();
- JKRArchive* loader = dComIfG_getObjectResInfo(arcName)->getArchive();
+ void* tmpData;
+ JKRArchive* archive = dComIfG_getObjectResInfo(daAlink_c::getAlinkArcName())->getArchive();
- field_0x4 = new J2DScreen();
- if (field_0x4 == NULL) {
+ m_cursorYellowScrn = new J2DScreen();
+ if (m_cursorYellowScrn == NULL) {
return 0;
}
- field_0x4->setPriority("zelda_v_cursor_new_yellow.blo", 0x100000, loader);
- dPaneClass_showNullPane(field_0x4);
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.bpk", loader);
- field_0x58 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x58 == NULL) {
+
+ m_cursorYellowScrn->setPriority("zelda_v_cursor_new_yellow.blo", 0x100000, archive);
+ dPaneClass_showNullPane(m_cursorYellowScrn);
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow.bpk", archive);
+ JUT_ASSERT(398, tmpData);
+ m_cursorYellowBpk = (J2DAnmColor*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorYellowBpk == NULL) {
return 0;
}
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.bck", loader);
- field_0x5c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x5c == NULL) {
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow.bck", archive);
+ JUT_ASSERT(406, tmpData);
+ m_cursorYellowBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorYellowBck == NULL) {
return 0;
}
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow_02.brk", loader);
- field_0x18 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x18 == NULL) {
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow_02.brk", archive);
+ JUT_ASSERT(415, tmpData);
+ m_cursorYellow2Brk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorYellow2Brk == NULL) {
return 0;
}
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.brk", loader);
- field_0x1c = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x1c == NULL) {
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_yellow.brk", archive);
+ JUT_ASSERT(423, tmpData);
+ m_cursorYellowBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorYellowBrk == NULL) {
return 0;
}
- field_0x20 = new J2DScreen();
- if (field_0x20 == NULL) {
+ m_cursorRedScrn = new J2DScreen();
+ if (m_cursorRedScrn == NULL) {
return 0;
}
- field_0x20->setPriority("zelda_v_cursor_new_red.blo", 0x100000, loader);
- dPaneClass_showNullPane(field_0x20);
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_red_02.brk", loader);
- field_0x34 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x34 == NULL) {
+
+ m_cursorRedScrn->setPriority("zelda_v_cursor_new_red.blo", 0x100000, archive);
+ dPaneClass_showNullPane(m_cursorRedScrn);
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_red_02.brk", archive);
+ JUT_ASSERT(440, tmpData);
+ m_cursorRed2Brk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorRed2Brk == NULL) {
return 0;
}
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_red.brk", loader);
- field_0x38 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x38 == NULL) {
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_red.brk", archive);
+ JUT_ASSERT(448, tmpData);
+ m_cursorRedBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorRedBrk == NULL) {
return 0;
}
- field_0x3c = new J2DScreen();
- if (field_0x3c == NULL) {
+ m_cursorOrangeScrn = new J2DScreen();
+ if (m_cursorOrangeScrn == NULL) {
return 0;
}
- field_0x3c->setPriority("zelda_v_cursor_new_orange.blo", 0x100000, loader);
- dPaneClass_showNullPane(field_0x3c);
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_orange_02.brk", loader);
- field_0x50 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x50 == NULL) {
+
+ m_cursorOrangeScrn->setPriority("zelda_v_cursor_new_orange.blo", 0x100000, archive);
+ dPaneClass_showNullPane(m_cursorOrangeScrn);
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_orange_02.brk", archive);
+ JUT_ASSERT(493, tmpData);
+ m_cursorOrange2Brk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorOrange2Brk == NULL) {
return 0;
}
- resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_orange.brk", loader);
- field_0x54 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
- if (field_0x54 == NULL) {
+
+ tmpData = JKRGetNameResource("zelda_v_cursor_new_orange.brk", archive);
+ JUT_ASSERT(501, tmpData);
+ m_cursorOrangeBrk = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(tmpData);
+ if (m_cursorOrangeBrk == NULL) {
return 0;
}
+
return 1;
}
-/* ############################################################################################## */
/* 804A2850-804A285C 000000 000C+00 7/7 0/0 0/0 .rodata @4078 */
-SECTION_RODATA static u8 const lit_4078[12] = {
+// unused
+static u8 const lit_4078[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
-COMPILER_STRIP_GATE(0x804A2850, &lit_4078);
/* 804A285C-804A2868 00000C 000C+00 0/0 0/0 0/0 .rodata l_blurTop */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_blurTop[12] = {
+// unused
+static u8 const l_blurTop[12] = {
0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
-COMPILER_STRIP_GATE(0x804A285C, &l_blurTop);
-#pragma pop
/* 804A2868-804A287A 000018 000C+06 0/0 0/0 0/0 .rodata l_blurRoot */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_blurRoot[12 + 6 /* padding */] = {
+// unused
+static u8 const l_blurRoot[12 + 6] = {
0xC2,
0x20,
0x00,
@@ -340,7 +128,6 @@ SECTION_RODATA static u8 const l_blurRoot[12 + 6 /* padding */] = {
0x00,
0x00,
0x00,
- /* padding */
0xB4,
0xA0,
0x8C,
@@ -348,476 +135,318 @@ SECTION_RODATA static u8 const l_blurRoot[12 + 6 /* padding */] = {
0x1E,
0x1E,
};
-COMPILER_STRIP_GATE(0x804A2868, &l_blurRoot);
-#pragma pop
/* 804A287A-804A287C 00002A 0002+00 0/0 0/0 0/0 .rodata m_lockWaitTime__18daBoomerang_HIO_c0 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA u16 const daBoomerang_HIO_c0::m_lockWaitTime = 0x000A;
-COMPILER_STRIP_GATE(0x804A287A, &daBoomerang_HIO_c0::m_lockWaitTime);
-#pragma pop
+const u16 daBoomerang_HIO_c0::m_lockWaitTime = 10;
/* 804A287C-804A2880 00002C 0004+00 0/0 0/0 0/0 .rodata m_minCircleR__18daBoomerang_HIO_c0
*/
-#pragma push
-#pragma force_active on
-SECTION_RODATA f32 const daBoomerang_HIO_c0::m_minCircleR = 28.0f;
-COMPILER_STRIP_GATE(0x804A287C, &daBoomerang_HIO_c0::m_minCircleR);
-#pragma pop
+const f32 daBoomerang_HIO_c0::m_minCircleR = 28.0f;
/* 804A2880-804A2884 000030 0004+00 0/0 0/0 0/0 .rodata m_middleCircleR__18daBoomerang_HIO_c0 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA f32 const daBoomerang_HIO_c0::m_middleCircleR = 35.0f;
-COMPILER_STRIP_GATE(0x804A2880, &daBoomerang_HIO_c0::m_middleCircleR);
-#pragma pop
+const f32 daBoomerang_HIO_c0::m_middleCircleR = 35.0f;
/* 804A2884-804A2888 000034 0004+00 0/0 0/0 0/0 .rodata m_maxCircleR__18daBoomerang_HIO_c0
*/
-#pragma push
-#pragma force_active on
-SECTION_RODATA f32 const daBoomerang_HIO_c0::m_maxCircleR = 80.0f;
-COMPILER_STRIP_GATE(0x804A2884, &daBoomerang_HIO_c0::m_maxCircleR);
-#pragma pop
+const f32 daBoomerang_HIO_c0::m_maxCircleR = 80.0f;
/* 804A2888-804A288C 000038 0004+00 0/0 0/0 0/0 .rodata m_scale__18daBoomerang_HIO_c0 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA f32 const daBoomerang_HIO_c0::m_scale = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804A2888, &daBoomerang_HIO_c0::m_scale);
-#pragma pop
+const f32 daBoomerang_HIO_c0::m_scale = 3.0f / 5.0f;
/* 804A288C-804A2890 00003C 0004+00 0/0 0/0 0/0 .rodata m_lockWindScale__18daBoomerang_HIO_c0 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA f32 const daBoomerang_HIO_c0::m_lockWindScale = 2.0f;
-COMPILER_STRIP_GATE(0x804A288C, &daBoomerang_HIO_c0::m_lockWindScale);
-#pragma pop
+const f32 daBoomerang_HIO_c0::m_lockWindScale = 2.0f;
/* 804A2890-804A28A4 000040 0014+00 0/1 0/0 0/0 .rodata l_lockSeFlg */
-static const u32 l_lockSeFlg[5] = {
- 104, 105, 106, 107, 108,
+static const u32 l_lockSeFlg[BOOMERANG_LOCK_MAX] = {
+ Z2SE_SY_BOOM_LOCK_ON_1,
+ Z2SE_SY_BOOM_LOCK_ON_2,
+ Z2SE_SY_BOOM_LOCK_ON_3,
+ Z2SE_SY_BOOM_LOCK_ON_4,
+ Z2SE_SY_BOOM_LOCK_ON_5,
};
-/* 804A28A4-804A28A8 000054 0004+00 2/6 0/0 0/0 .rodata @4432 */
-SECTION_RODATA static u8 const lit_4432[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x804A28A4, &lit_4432);
-
/* 8049E36C-8049EB64 00032C 07F8+00 1/1 0/0 0/0 .text initialize__19daBoomerang_sight_cFv
*/
void daBoomerang_sight_c::initialize() {
- field_0x8 = field_0x4->search('n_all');
- field_0xc = field_0x4->search('cursor0');
- field_0x10 = field_0x4->search('cursor1');
- field_0x14 = field_0x4->search('cursor2');
-
- field_0x5c->searchUpdateMaterialID(field_0x4);
- field_0x8->setAnimation(field_0x5c);
- field_0xc->setAnimation(field_0x5c);
- field_0x10->setAnimation(field_0x5c);
- field_0x14->setAnimation(field_0x5c);
- field_0x5c->setFrame(0.0f);
-
- field_0x58->searchUpdateMaterialID(field_0x4);
- field_0xc->setAnimation(field_0x58);
- field_0x10->setAnimation(field_0x58);
- field_0x14->setAnimation(field_0x58);
- field_0x4->search('flash')->setAnimation(field_0x58);
- field_0x58->setFrame(0.0f);
-
- field_0x18->searchUpdateMaterialID(field_0x4);
- field_0x1c->searchUpdateMaterialID(field_0x4);
- field_0xc->setAnimation(field_0x18);
- field_0x10->setAnimation(field_0x18);
- field_0x14->setAnimation(field_0x18);
- field_0xc->setAnimation(field_0x1c);
- field_0x10->setAnimation(field_0x1c);
- field_0x14->setAnimation(field_0x1c);
- field_0x18->setFrame(0.0f);
- field_0x1c->setFrame(0.0f);
-
- field_0x4->animation();
- field_0x4->setUserInfo('n_43');
- field_0x8->setUserInfo(' ');
- field_0x24 = field_0x20->search('n_all');
- field_0x28 = field_0x20->search('cursor0');
- field_0x2c = field_0x20->search('cursor1');
- field_0x30 = field_0x20->search('cursor2');
-
- field_0x24->setAnimation(field_0x5c);
- field_0x28->setAnimation(field_0x5c);
- field_0x2c->setAnimation(field_0x5c);
- field_0x30->setAnimation(field_0x5c);
- field_0x28->setAnimation(field_0x58);
- field_0x2c->setAnimation(field_0x58);
- field_0x30->setAnimation(field_0x58);
- field_0x20->search('flash')->setAnimation(field_0x58);
-
- field_0x34->searchUpdateMaterialID(field_0x20);
- field_0x38->searchUpdateMaterialID(field_0x20);
- field_0x28->setAnimation(field_0x34);
- field_0x2c->setAnimation(field_0x34);
- field_0x30->setAnimation(field_0x34);
- field_0x28->setAnimation(field_0x38);
- field_0x2c->setAnimation(field_0x38);
- field_0x30->setAnimation(field_0x38);
- field_0x34->setFrame(0.0f);
- field_0x38->setFrame(0.0f);
-
- field_0x20->animation();
- field_0x20->setUserInfo('n_43');
- field_0x24->setUserInfo(' ');
- field_0x40 = field_0x3c->search('n_all');
- field_0x44 = field_0x3c->search('cursor0');
- field_0x48 = field_0x3c->search('cursor1');
- field_0x4c = field_0x3c->search('cursor2');
-
- field_0x40->setAnimation(field_0x5c);
- field_0x44->setAnimation(field_0x5c);
- field_0x48->setAnimation(field_0x5c);
- field_0x4c->setAnimation(field_0x5c);
- field_0x44->setAnimation(field_0x58);
- field_0x48->setAnimation(field_0x58);
- field_0x4c->setAnimation(field_0x58);
- field_0x3c->search('flash')->setAnimation(field_0x58);
-
- field_0x50->searchUpdateMaterialID(field_0x3c);
- field_0x54->searchUpdateMaterialID(field_0x3c);
- field_0x44->setAnimation(field_0x50);
- field_0x48->setAnimation(field_0x50);
- field_0x4c->setAnimation(field_0x50);
- field_0x44->setAnimation(field_0x54);
- field_0x48->setAnimation(field_0x54);
- field_0x4c->setAnimation(field_0x54);
- field_0x50->setFrame(0.0f);
- field_0x54->setFrame(0.0f);
-
- field_0x3c->animation();
- field_0x3c->setUserInfo('n_43');
- field_0x40->setUserInfo(' ');
+ m_cursorYellowAllPane = m_cursorYellowScrn->search('n_all');
+ m_cursorYellow0Pane = m_cursorYellowScrn->search('cursor0');
+ m_cursorYellow1Pane = m_cursorYellowScrn->search('cursor1');
+ m_cursorYellow2Pane = m_cursorYellowScrn->search('cursor2');
+
+ m_cursorYellowBck->searchUpdateMaterialID(m_cursorYellowScrn);
+ m_cursorYellowAllPane->setAnimation(m_cursorYellowBck);
+ m_cursorYellow0Pane->setAnimation(m_cursorYellowBck);
+ m_cursorYellow1Pane->setAnimation(m_cursorYellowBck);
+ m_cursorYellow2Pane->setAnimation(m_cursorYellowBck);
+ m_cursorYellowBck->setFrame(0.0f);
+
+ m_cursorYellowBpk->searchUpdateMaterialID(m_cursorYellowScrn);
+ m_cursorYellow0Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorYellow1Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorYellow2Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorYellowScrn->search('flash')->setAnimation(m_cursorYellowBpk);
+ m_cursorYellowBpk->setFrame(0.0f);
+
+ m_cursorYellow2Brk->searchUpdateMaterialID(m_cursorYellowScrn);
+ m_cursorYellowBrk->searchUpdateMaterialID(m_cursorYellowScrn);
+ m_cursorYellow0Pane->setAnimation(m_cursorYellow2Brk);
+ m_cursorYellow1Pane->setAnimation(m_cursorYellow2Brk);
+ m_cursorYellow2Pane->setAnimation(m_cursorYellow2Brk);
+ m_cursorYellow0Pane->setAnimation(m_cursorYellowBrk);
+ m_cursorYellow1Pane->setAnimation(m_cursorYellowBrk);
+ m_cursorYellow2Pane->setAnimation(m_cursorYellowBrk);
+ m_cursorYellow2Brk->setFrame(0.0f);
+ m_cursorYellowBrk->setFrame(0.0f);
+
+ m_cursorYellowScrn->animation();
+ m_cursorYellowScrn->setUserInfo('n_43');
+ m_cursorYellowAllPane->setUserInfo(' ');
+
+ m_cursorRedAllPane = m_cursorRedScrn->search('n_all');
+ m_cursorRed0Pane = m_cursorRedScrn->search('cursor0');
+ m_cursorRed1Pane = m_cursorRedScrn->search('cursor1');
+ m_cursorRed2Pane = m_cursorRedScrn->search('cursor2');
+
+ m_cursorRedAllPane->setAnimation(m_cursorYellowBck);
+ m_cursorRed0Pane->setAnimation(m_cursorYellowBck);
+ m_cursorRed1Pane->setAnimation(m_cursorYellowBck);
+ m_cursorRed2Pane->setAnimation(m_cursorYellowBck);
+ m_cursorRed0Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorRed1Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorRed2Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorRedScrn->search('flash')->setAnimation(m_cursorYellowBpk);
+
+ m_cursorRed2Brk->searchUpdateMaterialID(m_cursorRedScrn);
+ m_cursorRedBrk->searchUpdateMaterialID(m_cursorRedScrn);
+ m_cursorRed0Pane->setAnimation(m_cursorRed2Brk);
+ m_cursorRed1Pane->setAnimation(m_cursorRed2Brk);
+ m_cursorRed2Pane->setAnimation(m_cursorRed2Brk);
+ m_cursorRed0Pane->setAnimation(m_cursorRedBrk);
+ m_cursorRed1Pane->setAnimation(m_cursorRedBrk);
+ m_cursorRed2Pane->setAnimation(m_cursorRedBrk);
+ m_cursorRed2Brk->setFrame(0.0f);
+ m_cursorRedBrk->setFrame(0.0f);
+
+ m_cursorRedScrn->animation();
+ m_cursorRedScrn->setUserInfo('n_43');
+ m_cursorRedAllPane->setUserInfo(' ');
+
+ m_cursorOrangeAllPane = m_cursorOrangeScrn->search('n_all');
+ m_cursorOrange0Pane = m_cursorOrangeScrn->search('cursor0');
+ m_cursorOrange1Pane = m_cursorOrangeScrn->search('cursor1');
+ m_cursorOrange2Pane = m_cursorOrangeScrn->search('cursor2');
+
+ m_cursorOrangeAllPane->setAnimation(m_cursorYellowBck);
+ m_cursorOrange0Pane->setAnimation(m_cursorYellowBck);
+ m_cursorOrange1Pane->setAnimation(m_cursorYellowBck);
+ m_cursorOrange2Pane->setAnimation(m_cursorYellowBck);
+ m_cursorOrange0Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorOrange1Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorOrange2Pane->setAnimation(m_cursorYellowBpk);
+ m_cursorOrangeScrn->search('flash')->setAnimation(m_cursorYellowBpk);
+
+ m_cursorOrange2Brk->searchUpdateMaterialID(m_cursorOrangeScrn);
+ m_cursorOrangeBrk->searchUpdateMaterialID(m_cursorOrangeScrn);
+ m_cursorOrange0Pane->setAnimation(m_cursorOrange2Brk);
+ m_cursorOrange1Pane->setAnimation(m_cursorOrange2Brk);
+ m_cursorOrange2Pane->setAnimation(m_cursorOrange2Brk);
+ m_cursorOrange0Pane->setAnimation(m_cursorOrangeBrk);
+ m_cursorOrange1Pane->setAnimation(m_cursorOrangeBrk);
+ m_cursorOrange2Pane->setAnimation(m_cursorOrangeBrk);
+ m_cursorOrange2Brk->setFrame(0.0f);
+ m_cursorOrangeBrk->setFrame(0.0f);
+
+ m_cursorOrangeScrn->animation();
+ m_cursorOrangeScrn->setUserInfo('n_43');
+ m_cursorOrangeAllPane->setUserInfo(' ');
}
-
-/* ############################################################################################## */
-/* 804A28A8-804A28AC 000058 0004+00 0/1 0/0 0/0 .rodata @4481 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4481 = 11.0f / 10.0f;
-COMPILER_STRIP_GATE(0x804A28A8, &lit_4481);
-#pragma pop
-
-/* 804A28AC-804A28B0 00005C 0004+00 0/2 0/0 0/0 .rodata @4482 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4482 = 50.0f;
-COMPILER_STRIP_GATE(0x804A28AC, &lit_4482);
-#pragma pop
-
-/* 804A28B0-804A28B4 000060 0004+00 0/1 0/0 0/0 .rodata @4483 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4483 = -29.0f;
-COMPILER_STRIP_GATE(0x804A28B0, &lit_4483);
-#pragma pop
-
-/* 804A28B4-804A28B8 000064 0004+00 0/2 0/0 0/0 .rodata @4484 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4484 = 21.0f;
-COMPILER_STRIP_GATE(0x804A28B4, &lit_4484);
-#pragma pop
-
-/* 804A28B8-804A28C0 000068 0004+04 0/1 0/0 0/0 .rodata @4485 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4485[1 + 1 /* padding */] = {
- 9.0f / 10.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x804A28B8, &lit_4485);
-#pragma pop
-
-/* 804A28C0-804A28C8 000070 0008+00 1/2 0/0 0/0 .rodata @4487 */
-SECTION_RODATA static u8 const lit_4487[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804A28C0, &lit_4487);
-
/* 8049EB64-8049EDA8 000B24 0244+00 1/1 0/0 0/0 .text playAnime__19daBoomerang_sight_cFii
*/
int daBoomerang_sight_c::playAnime(int param_0, int param_1) {
int i;
- f32* pfVar3 = field_0x98;
- f32* pfVar6 = field_0xb0;
- u8* alphaPtr = mAlpha;
-
- for (i = 0; i < 5; i++, pfVar3++, pfVar6++, alphaPtr++) {
- *pfVar3 += 1.1f;
- if (*pfVar3 >= 50.0f) {
- *pfVar3 += 29.0f;
+ f32* var_r30 = field_0x98;
+ f32* var_r29 = field_0xb0;
+ u8* alpha_p = m_alpha;
+
+ for (i = 0; i < BOOMERANG_LOCK_MAX; i++, var_r30++, var_r29++, alpha_p++) {
+ *var_r30 += 1.1f;
+ if (*var_r30 >= 50.0f) {
+ *var_r30 += -29.0f;
}
- *pfVar6 += 1.1f;
- if (*pfVar6 >= (f32)field_0x18->getFrameMax()) {
- *pfVar6 -= (f32)field_0x18->getFrameMax();
+
+ *var_r29 += 1.1f;
+ if (*var_r29 >= (f32)m_cursorYellow2Brk->getFrameMax()) {
+ *var_r29 -= (f32)m_cursorYellow2Brk->getFrameMax();
}
+
if (param_0 <= i && param_1 > i) {
- cLib_chaseUC(alphaPtr, 0xff, 0x1e);
+ cLib_chaseUC(alpha_p, 0xFF, 30);
} else {
- cLib_chaseUC(alphaPtr, 0, 0x1e);
- if (*alphaPtr == 0 && i == 0) {
- mRedSight = false;
+ cLib_chaseUC(alpha_p, 0, 30);
+ if (*alpha_p == 0 && i == 0) {
+ m_redSight = false;
}
}
}
- if (*pfVar3 < 21.0f) {
- *pfVar3 = 21.0f;
+
+ if (*var_r30 < 21.0f) {
+ *var_r30 = 21.0f;
}
- *pfVar3 += 0.9f;
- if (*pfVar3 >= 50.0f) {
- *pfVar3 += 29.0f;
+
+ *var_r30 += 0.9f;
+ if (*var_r30 >= 50.0f) {
+ *var_r30 += -29.0f;
}
- *pfVar6 += 0.9f;
- if (*pfVar6 >= field_0x18->getFrameMax()) {
- *pfVar6 -= (f32)field_0x18->getFrameMax();
+
+ *var_r29 += 0.9f;
+ if (*var_r29 >= m_cursorYellow2Brk->getFrameMax()) {
+ *var_r29 -= (f32)m_cursorYellow2Brk->getFrameMax();
}
+
if (mReserve != 0) {
- return cLib_chaseUC(alphaPtr, 0x80, 0x1e);
+ return cLib_chaseUC(alpha_p, 0x80, 30);
}
- return cLib_chaseUC(alphaPtr, 0, 0x1e);
-}
-
-/* ############################################################################################## */
-/* 804A28C8-804A28CC 000078 0004+00 1/2 0/0 0/0 .rodata @4495 */
-SECTION_RODATA static f32 const lit_4495 = 4.0f;
-COMPILER_STRIP_GATE(0x804A28C8, &lit_4495);
+ return cLib_chaseUC(alpha_p, 0, 30);
+}
/* 8049EDA8-8049EDE8 000D68 0040+00 2/2 0/0 0/0 .text initFrame__19daBoomerang_sight_cFi
*/
-void daBoomerang_sight_c::initFrame(int i_idx) {
- mAlpha[i_idx] = 0;
- field_0x98[i_idx] = 4.0f;
- field_0xb0[i_idx] = 0.0f;
- if (i_idx == 0) {
- mRedSight = true;
+void daBoomerang_sight_c::initFrame(int i_no) {
+ m_alpha[i_no] = 0;
+ field_0x98[i_no] = 4.0f;
+ field_0xb0[i_no] = 0.0f;
+
+ if (i_no == 0) {
+ m_redSight = true;
}
}
-
/* 8049EDE8-8049EE8C 000DA8 00A4+00 1/1 0/0 0/0 .text copyNumData__19daBoomerang_sight_cFi */
-void daBoomerang_sight_c::copyNumData(int i_idx) {
- int idx2 = i_idx + 1;
+void daBoomerang_sight_c::copyNumData(int i_no) {
+ int next_no = i_no + 1;
- u8 alpha = mAlpha[i_idx];
- mAlpha[i_idx] = mAlpha[idx2];
- mAlpha[idx2] = alpha;
+ u8 temp_alpha = m_alpha[i_no];
+ m_alpha[i_no] = m_alpha[next_no];
+ m_alpha[next_no] = temp_alpha;
- f32 some_float1 = field_0x98[i_idx];
- field_0x98[i_idx] = field_0x98[idx2];
- field_0x98[idx2] = some_float1;
+ f32 temp_frame;
+ temp_frame = field_0x98[i_no];
+ field_0x98[i_no] = field_0x98[next_no];
+ field_0x98[next_no] = temp_frame;
- f32 some_float2 = field_0xb0[i_idx];
- field_0xb0[i_idx] = field_0xb0[idx2];
- field_0xb0[idx2] = some_float2;
+ temp_frame = field_0xb0[i_no];
+ field_0xb0[i_no] = field_0xb0[next_no];
+ field_0xb0[next_no] = temp_frame;
- cXyz pos = field_0xc8[i_idx];
- field_0xc8[i_idx] = field_0xc8[idx2];
- field_0xc8[idx2] = pos;
+ cXyz temp_pos = m_pos[i_no];
+ m_pos[i_no] = m_pos[next_no];
+ m_pos[next_no] = temp_pos;
}
/* 8049EEC8-8049EF60 000E88 0098+00 1/1 0/0 0/0 .text setSight__19daBoomerang_sight_cFPC4cXyzi */
-void daBoomerang_sight_c::setSight(cXyz const* i_posP, int i_idx) {
- Vec pos;
-
- if (mAlpha[i_idx]) {
- if (i_posP) {
- field_0xc8[i_idx] = *i_posP;
+void daBoomerang_sight_c::setSight(const cXyz* i_pos, int i_no) {
+ if (m_alpha[i_no]) {
+ if (i_pos != NULL) {
+ m_pos[i_no] = *i_pos;
}
- mDoLib_project(&field_0xc8[i_idx], &pos);
- field_0x68[i_idx] = pos.x;
- field_0x80[i_idx] = pos.y;
+
+ Vec proj;
+ mDoLib_project(&m_pos[i_no], &proj);
+ m_proj_posX[i_no] = proj.x;
+ m_proj_posY[i_no] = proj.y;
}
}
-/* ############################################################################################## */
-/* 804A28CC-804A28D0 00007C 0004+00 0/1 0/0 0/0 .rodata @4643 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4643 = 80.0f;
-COMPILER_STRIP_GATE(0x804A28CC, &lit_4643);
-#pragma pop
-
-/* 804A28D0-804A28D4 000080 0004+00 0/1 0/0 0/0 .rodata @4644 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4644 = 35.0f;
-COMPILER_STRIP_GATE(0x804A28D0, &lit_4644);
-#pragma pop
-
-/* 804A28D4-804A28D8 000084 0004+00 0/1 0/0 0/0 .rodata @4645 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4645 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804A28D4, &lit_4645);
-#pragma pop
-
-/* 804A28D8-804A28DC 000088 0004+00 0/2 0/0 0/0 .rodata @4646 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4646 = 15.0f;
-COMPILER_STRIP_GATE(0x804A28D8, &lit_4646);
-#pragma pop
-
-/* 804A28DC-804A28E0 00008C 0004+00 0/1 0/0 0/0 .rodata @4647 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4647 = 1.0f / 6.0f;
-COMPILER_STRIP_GATE(0x804A28DC, &lit_4647);
-#pragma pop
-
-/* 804A28E0-804A28E4 000090 0004+00 0/2 0/0 0/0 .rodata @4648 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4648 = 0.5f;
-COMPILER_STRIP_GATE(0x804A28E0, &lit_4648);
-#pragma pop
-
-/* 804A28E4-804A28E8 000094 0004+00 0/1 0/0 0/0 .rodata @4649 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4649 = 0x3B800000;
-COMPILER_STRIP_GATE(0x804A28E4, &lit_4649);
-#pragma pop
-
-/* 804A28E8-804A28EC 000098 0004+00 0/1 0/0 0/0 .rodata @4650 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4650 = 0x3B008081;
-COMPILER_STRIP_GATE(0x804A28E8, &lit_4650);
-#pragma pop
-
-/* 804A28EC-804A28F0 00009C 0004+00 0/1 0/0 0/0 .rodata @4651 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4651 = 0x40278D36;
-COMPILER_STRIP_GATE(0x804A28EC, &lit_4651);
-#pragma pop
-
-/* 804A28F0-804A28F8 0000A0 0004+04 0/1 0/0 0/0 .rodata @4652 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4652[1 + 1 /* padding */] = {
- 0x3F060A92,
- /* padding */
- 0x00000000,
-};
-COMPILER_STRIP_GATE(0x804A28F0, &lit_4652);
-#pragma pop
-
-/* 804A28F8-804A2900 0000A8 0008+00 0/1 0/0 0/0 .rodata @4654 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4654[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804A28F8, &lit_4654);
-#pragma pop
-
/* 8049EF60-8049F280 000F20 0320+00 1/0 0/0 0/0 .text draw__19daBoomerang_sight_cFv */
void daBoomerang_sight_c::draw() {
J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort();
- u8* puVar = mAlpha;
- J2DPane* pJVar5;
- J2DPane* pJVar9;
- J2DPane* pJVar8;
+ u8* alpha_p = m_alpha;
+
+ J2DPane* cursor0_pane;
+ J2DPane* cursor1_pane;
+ J2DPane* cursor2_pane;
J2DScreen* screen;
- J2DPane* pJVar4;
- f32 f30;
- f32 f31;
-
- for (int i = 0; i < 6; i++, puVar++) {
- if (*puVar != 0) {
- field_0x5c->setFrame(field_0x98[i]);
- field_0x58->setFrame(field_0x98[i] > 21.0f ? 21.0f : field_0x98[i]);
+ J2DPane* cursorAll_pane;
+ f32 var_f30;
+ f32 var_f31;
+
+ for (int i = 0; i < 6; i++, alpha_p++) {
+ if (*alpha_p != 0) {
+ m_cursorYellowBck->setFrame(field_0x98[i]);
+ m_cursorYellowBpk->setFrame(field_0x98[i] > 21.0f ? 21.0f : field_0x98[i]);
+
if (i == 5) {
- field_0x18->setFrame(field_0xb0[i]);
- pJVar5 = field_0xc;
- pJVar9 = field_0x10;
- pJVar8 = field_0x14;
- screen = field_0x4;
- pJVar4 = field_0x8;
- f31 = 80.0f;
- } else if (i == 0 && mRedSight != false) {
- field_0x34->setFrame(field_0xb0[i]);
- pJVar5 = field_0x28;
- pJVar9 = field_0x2c;
- pJVar8 = field_0x30;
- screen = field_0x20;
- pJVar4 = field_0x24;
- f31 = 35.0f;
+ m_cursorYellow2Brk->setFrame(field_0xb0[i]);
+ cursor0_pane = m_cursorYellow0Pane;
+ cursor1_pane = m_cursorYellow1Pane;
+ cursor2_pane = m_cursorYellow2Pane;
+ screen = m_cursorYellowScrn;
+ cursorAll_pane = m_cursorYellowAllPane;
+ var_f31 = 80.0f;
+ } else if (i == 0 && m_redSight) {
+ m_cursorRed2Brk->setFrame(field_0xb0[i]);
+ cursor0_pane = m_cursorRed0Pane;
+ cursor1_pane = m_cursorRed1Pane;
+ cursor2_pane = m_cursorRed2Pane;
+ screen = m_cursorRedScrn;
+ cursorAll_pane = m_cursorRedAllPane;
+ var_f31 = 35.0f;
} else {
- field_0x50->setFrame(field_0xb0[i]);
- pJVar5 = field_0x44;
- pJVar9 = field_0x48;
- pJVar8 = field_0x4c;
- screen = field_0x3c;
- pJVar4 = field_0x40;
- f31 = 35.0f;
+ m_cursorOrange2Brk->setFrame(field_0xb0[i]);
+ cursor0_pane = m_cursorOrange0Pane;
+ cursor1_pane = m_cursorOrange1Pane;
+ cursor2_pane = m_cursorOrange2Pane;
+ screen = m_cursorOrangeScrn;
+ cursorAll_pane = m_cursorOrangeAllPane;
+ var_f31 = 35.0f;
}
+
screen->animation();
- pJVar4->scale(0.6f, 0.6f);
- pJVar4->translate(field_0x68[i], field_0x80[i]);
+ cursorAll_pane->scale(0.6f, 0.6f);
+ cursorAll_pane->translate(m_proj_posX[i], m_proj_posY[i]);
field_0x98[i] = field_0x98[i];
+
if (!(field_0x98[i] < 15.0f)) {
if (field_0x98[i] < 21.0f) {
- f30 = f31 * (field_0x98[i] - 15.0f) * 0.1666667f;
+ var_f30 = var_f31 * (field_0x98[i] - 15.0f) * 0.16666667f;
} else if (i == 5) {
- f30 = f31 * (*puVar * 0.00390625f + 0.5f);
+ var_f30 = var_f31 * (*alpha_p * 0.00390625f + 0.5f);
} else {
- f30 = f31 * (*puVar * 0.001960784f + 0.5f);
+ var_f30 = var_f31 * (*alpha_p * 0.0019607844f + 0.5f);
}
- pJVar5->translate(0.0f, -f30);
- pJVar9->translate(f30 * cM_fcos(2.617994f), f30 * cM_fsin(2.617994f));
- pJVar8->translate(f30 * cM_fcos(0.5235988f), f30 * cM_fsin(0.5235988f));
+ cursor0_pane->translate(0.0f, -var_f30);
+ cursor1_pane->translate(var_f30 * cM_fcos(2.6179938f), var_f30 * cM_fsin(2.6179938f));
+ cursor2_pane->translate(var_f30 * cM_fcos(0.5235988f), var_f30 * cM_fsin(0.5235988f));
}
+
screen->draw(0.0f, 0.0f, ctx);
}
}
}
-
/* 8049F280-8049F360 001240 00E0+00 1/1 0/0 0/0 .text windModelCallBack__13daBoomerang_cFv */
void daBoomerang_c::windModelCallBack() {
- mDoMtx_YrotS((MtxP)mDoMtx_stack_c::get(), shape_angle.y);
- mDoMtx_ZrotM((MtxP)mDoMtx_stack_c::get(), -shape_angle.z);
- mDoMtx_XrotM((MtxP)mDoMtx_stack_c::get(), -shape_angle.x);
- mDoMtx_YrotM((MtxP)mDoMtx_stack_c::get(), -shape_angle.y);
-
- MTXConcat(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx, mDoMtx_stack_c::get());
+ mDoMtx_stack_c::YrotS(shape_angle.y);
+ mDoMtx_stack_c::ZrotM(-shape_angle.z);
+ mDoMtx_stack_c::XrotM(-shape_angle.x);
+ mDoMtx_stack_c::YrotM(-shape_angle.y);
+ mDoMtx_stack_c::concat(J3DSys::mCurrentMtx);
mDoMtx_stack_c::get()[0][3] = J3DSys::mCurrentMtx[0][3];
mDoMtx_stack_c::get()[1][3] = J3DSys::mCurrentMtx[1][3];
mDoMtx_stack_c::get()[2][3] = J3DSys::mCurrentMtx[2][3];
- MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
- field_0x56c->setAnmMtx(4, mDoMtx_stack_c::get());
-
- return;
+ cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+ mp_shippuModel->setAnmMtx(4, mDoMtx_stack_c::get());
}
/* 8049F360-8049F39C 001320 003C+00 1/1 0/0 0/0 .text daBoomeang_windModelCallBack__FP8J3DJointi
*/
-static int daBoomeang_windModelCallBack(J3DJoint* param_0, int param_1) {
+static int daBoomeang_windModelCallBack(J3DJoint* i_joint, int param_1) {
daBoomerang_c* boomerang = (daBoomerang_c*)j3dSys.getModel()->getUserArea();
-
if (param_1 == 0) {
boomerang->windModelCallBack();
}
@@ -827,53 +456,58 @@ static int daBoomeang_windModelCallBack(J3DJoint* param_0, int param_1) {
/* 8049F39C-8049F5D4 00135C 0238+00 1/1 0/0 0/0 .text draw__13daBoomerang_cFv */
int daBoomerang_c::draw() {
- if (checkStateFlg0(FLG0_UNK) == 0) {
- for (int i = 0; i < 5; i++) {
- if (mSight.getAlpha(i) != 0) {
- if (mLockActors[i] != NULL) {
- mLockActors[i] = fopAcM_SearchByID(field_0x6ac[i]);
- if (mLockActors[i] == NULL) {
+ if (!checkStateFlg0(FLG0_4)) {
+ for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) {
+ if (m_sight.getAlpha(i) != 0) {
+ if (m_lockActors[i] != NULL) {
+ m_lockActors[i] = fopAcM_SearchByID(m_lockActorIDs[i]);
+ if (m_lockActors[i] == NULL) {
pushLockList(i);
i--;
} else {
- mSight.setSight(&mLockActors[i]->eyePos, i);
+ m_sight.setSight(&m_lockActors[i]->eyePos, i);
}
-
} else {
if (field_0x718[i] != 0) {
- mSight.setSight(&mLockActorsPositions[i], i);
+ m_sight.setSight(&m_lockActorsPositions[i], i);
} else {
- mSight.setSight(NULL, i);
+ m_sight.setSight(NULL, i);
}
}
}
}
- if (mSight.getAlpha(5) != 0) {
+
+ if (m_sight.getAlpha(5) != 0) {
if (field_0x6d8 != NULL) {
field_0x6d8 = fopAcM_SearchByID(field_0x6d4);
}
- if (field_0x6d8 != 0) {
- mSight.setSight(&field_0x6d8->eyePos, 5);
+
+ if (field_0x6d8 != NULL) {
+ m_sight.setSight(&field_0x6d8->eyePos, 5);
} else {
- mSight.setSight(NULL, 5);
+ m_sight.setSight(NULL, 5);
}
}
- if (dComIfGp_event_runCheck() == 0) {
- dComIfGd_set2DXlu((dDlst_base_c*)&mSight);
+
+ if (!dComIfGp_event_runCheck()) {
+ dComIfGd_set2DXlu(&m_sight);
}
}
+
g_env_light.settingTevStruct(0, &current.pos, &tevStr);
- g_env_light.setLightTevColorType_MAJI(field_0x568, &tevStr);
- mDoExt_modelUpdateDL(field_0x568);
- daMirror_c::entry(field_0x568);
+ g_env_light.setLightTevColorType_MAJI(mp_boomModel, &tevStr);
+ mDoExt_modelUpdateDL(mp_boomModel);
+ daMirror_c::entry(mp_boomModel);
+
if (fopAcM_GetParam(this) != 0) {
- g_env_light.setLightTevColorType_MAJI(field_0x56c, &tevStr);
- mDoExt_modelEntryDL(field_0x56c);
- daMirror_c::entry(field_0x56c);
- } else if (dComIfGp_checkPlayerStatus0(0, 0x80000) != 0) {
- g_env_light.setLightTevColorType_MAJI(field_0x590, &tevStr);
- mDoExt_modelUpdateDL(field_0x590);
+ g_env_light.setLightTevColorType_MAJI(mp_shippuModel, &tevStr);
+ mDoExt_modelEntryDL(mp_shippuModel);
+ daMirror_c::entry(mp_shippuModel);
+ } else if (dComIfGp_checkPlayerStatus0(0, 0x80000)) {
+ g_env_light.setLightTevColorType_MAJI(mp_setboomEfModel, &tevStr);
+ mDoExt_modelUpdateDL(mp_setboomEfModel);
}
+
return 1;
}
@@ -885,11 +519,11 @@ static int daBoomerang_Draw(daBoomerang_c* i_this) {
/* 8049F5F4-8049F63C 0015B4 0048+00 1/1 0/0 0/0 .text
* lockLineCallback__13daBoomerang_cFP10fopAc_ac_c */
-void daBoomerang_c::lockLineCallback(fopAc_ac_c* i_actorP) {
- if (i_actorP && fopAcM_GetName(i_actorP) != PROC_Obj_glowSphere &&
- fopAcM_GetName(i_actorP) != PROC_E_VT && fopAcM_GetName(i_actorP) != PROC_OBJ_BRG)
+void daBoomerang_c::lockLineCallback(fopAc_ac_c* i_actor) {
+ if (i_actor != NULL && fopAcM_GetName(i_actor) != PROC_Obj_glowSphere &&
+ fopAcM_GetName(i_actor) != PROC_E_VT && fopAcM_GetName(i_actor) != PROC_OBJ_BRG)
{
- setLockActor(i_actorP, 1);
+ setLockActor(i_actor, TRUE);
}
}
@@ -903,17 +537,17 @@ static void daBoomerang_lockLineCallback(fopAc_ac_c* i_actorP1, dCcD_GObjInf* pa
/* 8049F660-8049F6EC 001620 008C+00 1/1 0/0 0/0 .text
* moveLineCallback__13daBoomerang_cFP10fopAc_ac_c */
-void daBoomerang_c::moveLineCallback(fopAc_ac_c* i_actorP) {
- if (i_actorP) {
- for (int i = 0; i < 5; i++) {
- if (mLockActors[i] == i_actorP) {
- field_0x6ac[i] = -1;
- mLockActors[i] = 0;
+void daBoomerang_c::moveLineCallback(fopAc_ac_c* i_actor) {
+ if (i_actor != NULL) {
+ for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) {
+ if (m_lockActors[i] == i_actor) {
+ m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e;
+ m_lockActors[i] = NULL;
if (i == field_0x951) {
field_0x957 = 10;
- field_0x9ac = i_actorP->eyePos;
- field_0x9c4 = current.pos;
+ m_moveTargetPos = i_actor->eyePos;
+ m_movePos = current.pos;
}
}
}
@@ -931,33 +565,36 @@ static void daBoomerang_moveLineCallback(fopAc_ac_c* i_actorP1, dCcD_GObjInf* pa
/* 8049F710-8049F818 0016D0 0108+00 3/3 0/0 0/0 .text pushLockList__13daBoomerang_cFi */
void daBoomerang_c::pushLockList(int param_0) {
if (param_0 == 0) {
- mSight.offRedSight();
+ m_sight.offRedSight();
}
+
if (fopAcM_GetParam(this) == 1 && param_0 < field_0x951) {
field_0x951--;
}
int i;
- for (i = param_0; i < mLockCnt - 1; i++) {
- field_0x6ac[i] = field_0x6ac[i + 1];
- mLockActors[i] = mLockActors[i + 1];
- mLockActorsPositions[i] = mLockActorsPositions[i + 1];
+ for (i = param_0; i < m_lockCnt - 1; i++) {
+ m_lockActorIDs[i] = m_lockActorIDs[i + 1];
+ m_lockActors[i] = m_lockActors[i + 1];
+ m_lockActorsPositions[i] = m_lockActorsPositions[i + 1];
field_0x718[i] = field_0x718[i + 1];
- mSight.copyNumData(i);
+ m_sight.copyNumData(i);
}
- field_0x6ac[i] = -1;
- mLockActors[i] = NULL;
+
+ m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e;
+ m_lockActors[i] = NULL;
field_0x718[i] = 0;
- if (mLockCnt != 0) {
- mLockCnt--;
+
+ if (m_lockCnt != 0) {
+ m_lockCnt--;
}
}
/* 8049F818-8049F874 0017D8 005C+00 1/0 0/0 0/0 .text
* cancelLockActorBase__13daBoomerang_cFP10fopAc_ac_c */
-void daBoomerang_c::cancelLockActorBase(fopAc_ac_c* i_actorP) {
- for (int i = 0; i < mLockCnt; i++) {
- if (mLockActors[i] == i_actorP) {
+void daBoomerang_c::cancelLockActorBase(fopAc_ac_c* i_actor) {
+ for (int i = 0; i < m_lockCnt; i++) {
+ if (m_lockActors[i] == i_actor) {
pushLockList(i);
break;
}
@@ -966,144 +603,150 @@ void daBoomerang_c::cancelLockActorBase(fopAc_ac_c* i_actorP) {
/* 8049F874-8049F8B0 001834 003C+00 1/0 0/0 0/0 .text
* setAimActorBase__13daBoomerang_cFP10fopAc_ac_c */
-void daBoomerang_c::setAimActorBase(fopAc_ac_c* i_actorP) {
- if (mLockCnt == 0) {
- onStateFlg0(FLG0_UNK);
- setLockActor(i_actorP, 0);
+void daBoomerang_c::setAimActorBase(fopAc_ac_c* i_actor) {
+ if (m_lockCnt == 0) {
+ onStateFlg0(FLG0_4);
+ setLockActor(i_actor, FALSE);
}
}
/* 8049F8B0-8049F9A4 001870 00F4+00 2/2 0/0 0/0 .text setLockActor__13daBoomerang_cFP10fopAc_ac_ci
*/
-int daBoomerang_c::setLockActor(fopAc_ac_c* param_0, int param_1) {
- if (mLockCnt >= 5) {
+int daBoomerang_c::setLockActor(fopAc_ac_c* i_actor, BOOL i_isLockline) {
+ if (m_lockCnt >= BOOMERANG_LOCK_MAX) {
return 0;
}
- u32 Id = fopAcM_GetID(param_0);
- for (int i = 0; i < mLockCnt; i++) {
- if (field_0x6ac[i] == Id) {
+
+ fpc_ProcID lock_actor_id = fopAcM_GetID(i_actor);
+ for (int i = 0; i < m_lockCnt; i++) {
+ if (m_lockActorIDs[i] == lock_actor_id) {
return 0;
}
}
- if (param_1 != 0) {
- f32 squareDistance = param_0->eyePos.abs2(current.pos);
- if (squareDistance > field_0x984) {
+
+ if (i_isLockline) {
+ f32 sqdist = i_actor->eyePos.abs2(current.pos);
+ if (sqdist > m_lockLineSqdist) {
return 0;
}
- field_0x984 = squareDistance;
- field_0x6a8 = Id;
+
+ m_lockLineSqdist = sqdist;
+ m_lockLineActorID = lock_actor_id;
} else {
- field_0x6ac[mLockCnt] = Id;
- mLockActors[mLockCnt] = param_0;
- mSight.initFrame(mLockCnt);
- mLockCnt++;
+ m_lockActorIDs[m_lockCnt] = lock_actor_id;
+ m_lockActors[m_lockCnt] = i_actor;
+ m_sight.initFrame(m_lockCnt);
+ m_lockCnt++;
}
+
return 1;
}
/* 8049F9A4-8049F9F0 001964 004C+00 3/3 0/0 0/0 .text resetLockActor__13daBoomerang_cFv
*/
void daBoomerang_c::resetLockActor() {
- for (int i = 0; i < 5; i++) {
- field_0x6ac[i] = -1;
- mLockActors[i] = 0;
+ for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) {
+ m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e;
+ m_lockActors[i] = NULL;
field_0x718[i] = 0;
}
- mLockCnt = 0;
+ m_lockCnt = 0;
field_0x951 = 0;
}
/* 8049F9F0-8049FAA4 0019B0 00B4+00 2/2 0/0 0/0 .text setRoomInfo__13daBoomerang_cFv */
void daBoomerang_c::setRoomInfo() {
- field_0xd6c.SetPos(&current.pos);
- field_0x980 = dComIfG_Bgsp().GroundCross(&field_0xd6c);
+ m_gndChk.SetPos(&current.pos);
+ mGroundY = dComIfG_Bgsp().GroundCross(&m_gndChk);
+
int roomNo;
- if (field_0x980 != -1000000000.0f) {
- roomNo = dComIfG_Bgsp().GetRoomId(field_0xd6c);
- tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(field_0xd6c);
+ if (mGroundY != -1000000000.0f) {
+ roomNo = dComIfG_Bgsp().GetRoomId(m_gndChk);
+ tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(m_gndChk);
} else {
roomNo = dComIfGp_roomControl_getStayNo();
}
+
tevStr.room_no = roomNo;
- field_0x953 = dComIfGp_getReverb(roomNo);
- field_0x9d0.SetRoomId(roomNo);
+ m_reverb = dComIfGp_getReverb(roomNo);
+ m_colliderStts.SetRoomId(roomNo);
fopAcM_SetRoomNo(this, roomNo);
}
/* 8049FAA4-8049FBAC 001A64 0108+00 2/2 0/0 0/0 .text setKeepMatrix__13daBoomerang_cFv */
void daBoomerang_c::setKeepMatrix() {
- daAlink_c* link = daAlink_getAlinkActorClass();
- MTXCopy(link->getLeftItemMatrix(), mDoMtx_stack_c::now);
+ daAlink_c* player = daAlink_getAlinkActorClass();
+
+ mDoMtx_stack_c::copy(player->getLeftItemMatrix());
mDoMtx_stack_c::transM(32.0f, -5.0f, -6.0f);
- mDoMtx_stack_c::XYZrotM(0xfd28, 0x1bbb, 0xf99a);
- MTXCopy(mDoMtx_stack_c::now, field_0x568->mBaseTransformMtx);
- MTXCopy(link->getLeftItemMatrix(), field_0x56c->mBaseTransformMtx);
+ mDoMtx_stack_c::XYZrotM(cM_deg2s(-4.0f), cM_deg2s(39.0f), cM_deg2s(-9.0f));
+ mp_boomModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ mp_shippuModel->setBaseTRMtx(player->getLeftItemMatrix());
+
mDoMtx_stack_c::multVecZero(&current.pos);
daAlink_c::simpleAnmPlay(m_waitEffBtk);
- MTXCopy(link->getLeftItemMatrix(), field_0x590->mBaseTransformMtx);
-}
-/* ############################################################################################## */
-/* 804A2910-804A2914 0000C0 0004+00 5/8 0/0 0/0 .rodata @4945 */
-SECTION_RODATA static f32 const lit_4945 = 1.0f;
-COMPILER_STRIP_GATE(0x804A2910, &lit_4945);
+ mp_setboomEfModel->setBaseTRMtx(player->getLeftItemMatrix());
+}
/* 8049FBAC-8049FCD0 001B6C 0124+00 1/1 0/0 0/0 .text setMoveMatrix__13daBoomerang_cFv */
void daBoomerang_c::setMoveMatrix() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
- MTXCopy(mDoMtx_stack_c::now, field_0x56c->mBaseTransformMtx);
+ mp_shippuModel->setBaseTRMtx(mDoMtx_stack_c::get());
+
daAlink_c::simpleAnmPlay(m_windBtk);
- field_0x98c += 1.0f;
- s32 maxFrame = mBck.getBckAnm()->getFrameMax();
- if (field_0x98c >= maxFrame) {
- field_0x98c -= maxFrame;
+
+ m_shippuFrame += 1.0f;
+ s32 maxFrame = m_shippuBck.getBckAnm()->getFrameMax();
+ if (m_shippuFrame >= maxFrame) {
+ m_shippuFrame -= maxFrame;
}
- mBck.entry(field_0x56c->getModelData(), field_0x98c);
- field_0x56c->calc();
+
+ m_shippuBck.entry(mp_shippuModel->getModelData(), m_shippuFrame);
+ mp_shippuModel->calc();
+
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
- mDoMtx_stack_c::YrotM(field_0x95a);
- mDoMtx_stack_c::XrotM(0x7fff);
- MTXCopy(mDoMtx_stack_c::now, field_0x568->mBaseTransformMtx);
-}
+ mDoMtx_stack_c::YrotM(m_modelRotY);
+ mDoMtx_stack_c::XrotM(0x7FFF);
-
-/* ############################################################################################## */
-/* 804A2914-804A2918 0000C4 0004+00 1/2 0/0 0/0 .rodata @4961 */
-SECTION_RODATA static f32 const lit_4961 = -1.0f;
-COMPILER_STRIP_GATE(0x804A2914, &lit_4961);
+ mp_boomModel->setBaseTRMtx(mDoMtx_stack_c::get());
+}
/* 8049FCD0-8049FD6C 001C90 009C+00 1/1 0/0 0/0 .text setRotAngle__13daBoomerang_cFv */
void daBoomerang_c::setRotAngle() {
- s16 sVar = field_0x95a;
- field_0x95a -= 0x1f00;
- if (sVar >= 0 && field_0x95a < 0) {
+ s16 prev_rot = m_modelRotY;
+
+ m_modelRotY -= 0x1F00;
+ if (prev_rot >= 0 && m_modelRotY < 0) {
fopAcM_seStart(this, JA_SE_LK_BOOM_FLY, 0);
}
}
-
/* 8049FD6C-8049FE6C 001D2C 0100+00 2/2 0/0 0/0 .text setAimPos__13daBoomerang_cFv */
void daBoomerang_c::setAimPos() {
- if (checkStateFlg0(FLG0_1) != 0) {
+ if (checkStateFlg0(FLG0_1)) {
if (fopAcM_GetParam(this) != 1)
return;
- field_0x990 = daAlink_getAlinkActorClass()->getBoomerangCatchPos();
+ m_aimPos = daAlink_getAlinkActorClass()->getBoomerangCatchPos();
return;
}
+
if (field_0x957 != 0) {
- field_0x990 = field_0x9ac;
+ m_aimPos = m_moveTargetPos;
return;
}
- for (int i = field_0x951; i < mLockCnt; i++, field_0x951++) {
- if (mLockActors[i] != NULL) {
- field_0x990 = mLockActors[i]->eyePos;
+
+ for (int i = field_0x951; i < m_lockCnt; i++, field_0x951++) {
+ if (m_lockActors[i] != NULL) {
+ m_aimPos = m_lockActors[i]->eyePos;
return;
}
+
if (field_0x718[i] != 0) {
- field_0x990 = mLockActorsPositions[i];
+ m_aimPos = m_lockActorsPositions[i];
return;
}
}
@@ -1111,9 +754,9 @@ void daBoomerang_c::setAimPos() {
/* 8049FE6C-804A006C 001E2C 0200+00 2/2 0/0 0/0 .text checkBgHit__13daBoomerang_cFP4cXyzP4cXyz */
void daBoomerang_c::checkBgHit(cXyz* i_start, cXyz* i_end) {
- field_0xcfc.Set(i_start, i_end, this);
- if (dComIfG_Bgsp().LineCross(&field_0xcfc) != 0) {
- current.pos = field_0xcfc.i_GetCross();
+ m_lineChk.Set(i_start, i_end, this);
+ if (dComIfG_Bgsp().LineCross(&m_lineChk)) {
+ current.pos = m_lineChk.i_GetCross();
onStateFlg0(FLG0_1);
field_0x957 = 0;
current.angle.y -= -0x8000;
@@ -1121,36 +764,44 @@ void daBoomerang_c::checkBgHit(cXyz* i_start, cXyz* i_end) {
resetLockActor();
return;
}
+
if (field_0x962 != 0) {
return;
}
- field_0xc8c.Set(i_start, i_end, this);
- if (dComIfG_Bgsp().LineCross(&field_0xc8c) == 0)
+
+ m_boomLineChk.Set(i_start, i_end, this);
+ if (!dComIfG_Bgsp().LineCross(&m_boomLineChk))
return;
- if (checkStateFlg0(FLG0_0x200) != 0) {
+
+ if (checkStateFlg0(FLG0_200)) {
return;
}
+
if (field_0x718[field_0x951] != 0) {
- if (mLockActorsPositions[field_0x951].abs2(field_0xc8c.i_GetCross()) < 2500.0f) {
- if (field_0x951 < mLockCnt - 1) {
+ if (m_lockActorsPositions[field_0x951].abs2(m_boomLineChk.i_GetCross()) < 2500.0f) {
+ if (field_0x951 < m_lockCnt - 1) {
field_0x718[field_0x951] = 0;
field_0x951++;
return;
}
}
}
+
if (field_0x957 == 0) {
- if (checkStateFlg0(FLG0_10) == 0 && mLockCnt > field_0x951) {
+ if (checkStateFlg0(FLG0_10) == 0 && m_lockCnt > field_0x951) {
return;
}
- current.pos = field_0xc8c.i_GetCross();
+
+ current.pos = m_boomLineChk.i_GetCross();
onStateFlg0(FLG0_1);
field_0x957 = 0;
current.angle.y -= -0x8000;
- if (dBgS_CheckBRoofPoly(field_0xc8c) != 0) {
+
+ if (dBgS_CheckBRoofPoly(m_boomLineChk)) {
current.angle.x *= -1;
current.pos.y -= 30.0f;
}
+
shape_angle.y = current.angle.y;
resetLockActor();
}
@@ -1158,534 +809,585 @@ void daBoomerang_c::checkBgHit(cXyz* i_start, cXyz* i_end) {
/* 804A006C-804A012C 00202C 00C0+00 1/1 0/0 0/0 .text setEffectTraceMatrix__13daBoomerang_cFPUlUs
*/
-JPABaseEmitter* daBoomerang_c::setEffectTraceMatrix(u32* param_0, u16 param_1) {
- *param_0 = dComIfGp_particle_set(*param_0, param_1, &current.pos, &tevStr);
- JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(*param_0);
+JPABaseEmitter* daBoomerang_c::setEffectTraceMatrix(u32* i_emitterID, u16 i_name) {
+ *i_emitterID = dComIfGp_particle_set(*i_emitterID, i_name, &current.pos, &tevStr);
+
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(*i_emitterID);
if (emitter != NULL) {
- emitter->setGlobalRTMatrix(field_0x568->getBaseTRMtx());
+ emitter->setGlobalRTMatrix(mp_boomModel->getBaseTRMtx());
}
+
return emitter;
}
+UNK_REL_DATA;
+UNK_REL_BSS;
-/* ############################################################################################## */
-/* 804A2920-804A2924 0000D0 0004+00 0/1 0/0 0/0 .rodata @5385 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5385 = 1.5f;
-COMPILER_STRIP_GATE(0x804A2920, &lit_5385);
-#pragma pop
-
-/* 804A2924-804A2928 0000D4 0004+00 0/1 0/0 0/0 .rodata @5386 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5386 = 9.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804A2924, &lit_5386);
-#pragma pop
-
-/* 804A2928-804A292C 0000D8 0004+00 0/1 0/0 0/0 .rodata @5387 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5387 = 6.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804A2928, &lit_5387);
-#pragma pop
-
-/* 804A292C-804A2930 0000DC 0004+00 0/1 0/0 0/0 .rodata @5388 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5388 = 3.0f;
-COMPILER_STRIP_GATE(0x804A292C, &lit_5388);
-#pragma pop
-
-/* 804A2930-804A2934 0000E0 0004+00 0/1 0/0 0/0 .rodata @5389 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5389 = 5.0f;
-COMPILER_STRIP_GATE(0x804A2930, &lit_5389);
-#pragma pop
-
-/* 804A2934-804A2938 0000E4 0004+00 0/1 0/0 0/0 .rodata @5390 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5390 = 10.0f;
-COMPILER_STRIP_GATE(0x804A2934, &lit_5390);
-#pragma pop
-
-/* 804A2938-804A2940 0000E8 0008+00 0/2 0/0 0/0 .rodata @5391 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5391[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804A2938, &lit_5391);
-#pragma pop
-
-/* 804A2940-804A2948 0000F0 0008+00 0/2 0/0 0/0 .rodata @5392 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5392[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804A2940, &lit_5392);
-#pragma pop
-
-/* 804A2948-804A2950 0000F8 0008+00 0/2 0/0 0/0 .rodata @5393 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5393[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804A2948, &lit_5393);
-#pragma pop
-
-/* 804A2950-804A2954 000100 0004+00 0/1 0/0 0/0 .rodata @5394 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5394 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x804A2950, &lit_5394);
-#pragma pop
-
-/* 804A2ADC-804A2AE8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
-static u8 cNullVec__6Z2Calc[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+/* 804A2D10-804A2D14 000040 0001+03 0/0 0/0 0/0 .bss l_HIO */
+static daBoomerang_HIO_c0 l_HIO;
-/* 804A2AE8-804A2AFC 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
- 0x02000201,
- /* padding */
- 0x40080000,
- 0x00000000,
- 0x3FE00000,
- 0x00000000,
-};
-#pragma pop
+/* 804A012C-804A082C 0020EC 0700+00 1/1 0/0 0/0 .text setEffect__13daBoomerang_cFv */
+void daBoomerang_c::setEffect() {
+ static JGeometry::TVec3<f32> effDirection(0.0f, 1.0f, 0.0f);
+ static JGeometry::TVec3<f32> effScale0(1.5f, 1.5f, 1.5f);
+ static JGeometry::TVec3<f32> effScaleSand(1.8f, 1.8f, 1.8f);
+ static JGeometry::TVec3<f32> effScaleGrass(1.2f, 1.2f, 1.2f);
-/* 804A2AFC-804A2B08 -00001 000C+00 1/1 0/0 0/0 .data @5412 */
-SECTION_DATA static void* lit_5412[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)procMove__13daBoomerang_cFv,
-};
+ if (fopAcM_GetParam(this) != 0) {
+ setEffectTraceMatrix(&field_0x96c, 0x1FE);
+ setEffectTraceMatrix(&field_0x970, 0x1FF);
+ field_0x974 = dComIfGp_particle_set(field_0x974, 0x24C, &current.pos, &tevStr);
+
+ cXyz no_crr_pos(current.pos);
+ m_acch.CrrPos(dComIfG_Bgsp());
+ current.pos = no_crr_pos;
+
+ cXyz eff_center(mp_shippuModel->getAnmMtx(4)[0][3],
+ mp_shippuModel->getAnmMtx(5)[1][3],
+ mp_shippuModel->getAnmMtx(4)[2][3]);
+
+ cXyz* eff_pos = NULL;
+ cM3dGPla plane;
+ if (m_acch.ChkWaterHit() && dComIfG_Bgsp().GetPolyAtt0(m_acch.m_wtr) != 6) {
+ if (m_acch.m_wtr.GetHeight() > m_acch.GetGroundH() && m_acch.m_wtr.GetHeight() > eff_center.y) {
+ eff_center.y = m_acch.m_wtr.GetHeight();
+ eff_pos = &eff_center;
+ dComIfG_Bgsp().GetTriPla(m_acch.m_wtr, &plane);
+ }
+ }
-/* 804A2B08-804A2B14 -00001 000C+00 1/1 0/0 0/0 .data @5579 */
-SECTION_DATA static void* lit_5579[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)procWait__13daBoomerang_cFv,
-};
+ if (eff_pos == NULL && m_acch.GetGroundH() > eff_center.y) {
+ eff_center.y = m_acch.GetGroundH();
+ eff_pos = &eff_center;
+ dComIfG_Bgsp().GetTriPla(m_acch.m_gnd, &plane);
+ }
-/* 804A2B14-804A2B60 000038 004C+00 0/1 0/0 0/0 .data l_atCpsSrc */
-#pragma push
-#pragma force_active on
-static dCcD_SrcCps l_atCpsSrc = {
- {
- {0, {{AT_TYPE_BOOMERANG, 0, 0x3B}, {0, 0}, 0}},
- {dCcD_SE_WOOD, 4, 0, 0, {0}},
- {dCcD_SE_NONE, 0, 0, 0, {0}},
- {0},
- },
- {
- {
- {0.0f, 0.0f, 0.0f},
- {0.0f, 0.0f, 0.0f},
- 15.0f,
- },
+ m_papo.setEffectCenter(&tevStr, &eff_center, 4, 0x60000, eff_pos, &current.angle, NULL, fopAcM_GetRoomNo(this), 0.0f, speedF);
+
+ for (int i = 0; i < 2; i++) {
+ u8 eff_type = m_papo.getCenterEffType(i);
+ for (int j = 0; j < 4; j++) {
+ JPABaseEmitter* emitter = m_papo.getCenterEmitter(i, j);
+ if (emitter != NULL) {
+ if (eff_type == 0) {
+ emitter->setVolumeSize(60);
+ emitter->setLifeTime(20);
+ emitter->setRate(3.0f);
+ emitter->setAwayFromAxisSpeed(5.0f);
+ emitter->setDirectionalSpeed(0.0f);
+ emitter->setGlobalParticleScale(effScale0);
+ } else if (eff_type == 1) {
+ emitter->setVolumeSize(50);
+ emitter->setAwayFromAxisSpeed(10.0f);
+ emitter->setDirectionalSpeed(10.0f);
+ emitter->setDirection(effDirection);
+ emitter->setGlobalParticleScale(effScaleGrass);
+ } else if (eff_type == 2) {
+ emitter->setDirection(effDirection);
+ emitter->setGlobalScale(effScale0);
+ } else if (eff_type == 3) {
+ emitter->setVolumeSize(60);
+ emitter->setLifeTime(0xF);
+ emitter->setAwayFromAxisSpeed(3.0f);
+ emitter->setDirection(effDirection);
+ emitter->setGlobalParticleScale(effScaleSand);
+ } else if (eff_type == 4) {
+ emitter->setVolumeSize(60);
+ emitter->setAwayFromAxisSpeed(5.0f);
+ emitter->setDirection(effDirection);
+ emitter->setGlobalParticleScale(effScale0);
+ }
+ }
+ }
+ }
+
+ if (eff_pos != NULL) {
+ csXyz eff_angle(cM_atan2s(plane.mNormal.absXZ(), plane.mNormal.y), 0, 0);
+ if (eff_angle.x != 0) {
+ eff_angle.y = plane.mNormal.atan2sX_Z();
+ }
+
+ field_0x978 = dComIfGp_particle_set(field_0x978, 0x256, eff_pos, &tevStr, &eff_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ field_0x97c = dComIfGp_particle_set(field_0x97c, 0x257, eff_pos, &tevStr, &eff_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ }
+
+ cXyz wind_cyl_pos(current.pos.x, eff_center.y, current.pos.z);
+ m_windAtCyl.SetC(wind_cyl_pos);
+
+ f32 wind_cyl_height = current.pos.y - eff_center.y;
+ if (wind_cyl_height < 0.01f) {
+ wind_cyl_height = 0.01f;
+ }
+
+ m_windAtCyl.SetH(wind_cyl_height);
}
-};
-#pragma pop
-/* 804A2B60-804A2BA4 000084 0044+00 0/1 0/0 0/0 .data l_windAtCylSrc */
-#pragma push
-#pragma force_active on
-static dCcD_SrcCyl l_windAtCylSrc = {
- {
- {0, {{AT_TYPE_BOOMERANG, 0, 0x1B}, {0, 0}, 0}},
- {dCcD_SE_13, 0, 0, 3, {2}},
- {dCcD_SE_NONE, 0, 0, 0, {0}},
- {0},
- },
- {
- {0.0f, 0.0f, 0.0f},
- 150.0f,
- 600.0f,
+ if (dComIfGp_checkPlayerStatus0(0, 0x80000) && fopAcM_GetParam(this) == 0) {
+ setEffectTraceMatrix(&field_0x968, 0x740);
+ } else {
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x968);
+ if (emitter != NULL) {
+ emitter->stopDrawParticle();
+ }
}
-};
-#pragma pop
-
-/* 804A2BA4-804A2BB0 -00001 000C+00 0/1 0/0 0/0 .data @5999 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5999[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)procWait__13daBoomerang_cFv,
-};
-#pragma pop
-
-/* 804A2BB0-804A2BBC -00001 000C+00 0/1 0/0 0/0 .data @6005 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_6005[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)setAimActorBase__13daBoomerang_cFP10fopAc_ac_c,
-};
-#pragma pop
-
-/* 804A2BBC-804A2BC8 -00001 000C+00 0/1 0/0 0/0 .data @6006 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_6006[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)cancelLockActorBase__13daBoomerang_cFP10fopAc_ac_c,
-};
-#pragma pop
+}
-/* 804A2BC8-804A2BE8 -00001 0020+00 1/0 0/0 0/0 .data l_daBoomerang_Method */
-static actor_method_class l_daBoomerang_Method = {
- (process_method_func)daBoomerang_Create__FP10fopAc_ac_c,
- (process_method_func)daBoomerang_Delete__FP13daBoomerang_c,
- (process_method_func)daBoomerang_Execute__FP13daBoomerang_c,
- 0,
- (process_method_func)daBoomerang_Draw__FP13daBoomerang_c,
-};
+/* 804A0874-804A0F0C 002834 0698+00 2/0 0/0 0/0 .text procWait__13daBoomerang_cFv */
+// NONMATCHING - small regalloc
+int daBoomerang_c::procWait() {
+ daAlink_c* player = daAlink_getAlinkActorClass();
+ speedF = 0.0f;
+ setKeepMatrix();
-/* 804A2BE8-804A2C18 -00001 0030+00 0/0 0/0 1/0 .data g_profile_BOOMERANG */
-extern actor_process_profile_definition g_profile_BOOMERANG = {
- fpcLy_CURRENT_e, // mLayerID
- 6, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_BOOMERANG, // mProcName
- &g_fpcLf_Method.base, // sub_method
- 0x00000DE4, // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 686, // mPriority
- &l_daBoomerang_Method, // sub_method
- 0x00060000, // mStatus
- fopAc_UNK_GROUP_5_e, // mActorType
- fopAc_CULLBOX_0_e, // cullType
-};
+ if (fopAcM_GetParam(this) == 1) {
+ speedF = player->getBoomSpeed();
+ field_0x988 = speedF;
+ m_windBtk->setFrame(0.0f);
+ m_shippuFrame = 0.0f;
-/* 804A2C18-804A2C24 00013C 000C+00 1/1 0/0 0/0 .data __vt__12dDlst_base_c */
-SECTION_DATA extern void* __vt__12dDlst_base_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)draw__12dDlst_base_cFv,
-};
+ m_atCps.ResetAtHit();
+ m_windAtCyl.ResetAtHit();
-/* 804A2C24-804A2C30 000148 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
+ field_0x957 = 0;
+ offStateFlg0(daBoomerang_FLG0(FLG0_80 | FLG0_2 | FLG0_1));
+ field_0x951 = 0;
+ setAimPos();
-/* 804A2C30-804A2C54 000154 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */
-SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_ObjAcchFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804A2784,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804A277C,
-};
+ if (m_lockCnt == 0) {
+ resetLockActor();
+ f32 fly_max = player->getBoomFlyMax();
-/* 804A2C54-804A2C60 000178 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
+ m_aimPos.set(current.pos.x + (fly_max * cM_ssin(current.angle.y) * cM_scos(current.angle.x)),
+ current.pos.y + (fly_max * cM_ssin(current.angle.x)),
+ current.pos.z + (fly_max * cM_scos(current.angle.y) * cM_scos(current.angle.x)));
+ } else {
+ cXyz sp24 = m_aimPos - current.pos;
+ current.angle.x = sp24.atan2sY_XZ();
+ current.angle.y = sp24.atan2sX_Z();
+ }
+
+ m_modelRotY = 0;
-/* 804A2C60-804A2C6C 000184 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
+ if (m_lockCnt == 0) {
+ onStateFlg0(FLG0_10);
+ } else {
+ offStateFlg0(FLG0_10);
+ }
+
+ current.angle.y += 0x1830;
+ shape_angle.x = current.angle.x;
+ shape_angle.y = current.angle.y;
+ shape_angle.z = 0x1000;
+ field_0x958 = 0x1000;
+
+ m_procFn = &daBoomerang_c::procMove;
+ offStateFlg0(FLG0_20);
+
+ cXyz line_chk_start(player->current.pos.x, 60.0f + player->current.pos.y, player->current.pos.z);
+ checkBgHit(&line_chk_start, &current.pos);
+
+ field_0x960 = 10;
+ field_0x954 = 30;
+ field_0x955 = 0;
+ field_0x962 = player->getBoomBgThroughTime();
+
+ procMove();
+ } else if (dCam_getBody()->Mode() != 8) {
+ if (dComIfGp_checkPlayerStatus0(0, 0x80000) && player->getAtnActor() != NULL && m_lockCnt < BOOMERANG_LOCK_MAX) {
+ fpc_ProcID atn_actor_id = fopAcM_GetID(player->getAtnActor());
+
+ int var_r27 = 0;
+ while (var_r27 < m_lockCnt) {
+ if (m_lockActorIDs[var_r27] == atn_actor_id) {
+ break;
+ }
+ var_r27 += 1;
+ }
-/* 804A2C6C-804A2C78 000190 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
+ if (var_r27 == m_lockCnt) {
+ m_lockActors[m_lockCnt] = player->getAtnActor();
+ m_lockActorIDs[m_lockCnt] = atn_actor_id;
-/* 804A2C78-804A2C84 00019C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
+ m_sight.initFrame(m_lockCnt);
+ mDoAud_seStart(l_lockSeFlg[m_lockCnt], NULL, 0, 0);
+ m_lockCnt++;
+ }
+ } else if (!dComIfGp_checkPlayerStatus0(0, 0x80000)) {
+ resetLockActor();
+ }
-/* 804A2C84-804A2CB4 0001A8 0030+00 3/3 0/0 0/0 .data __vt__14dBgS_ObjGndChk */
-SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14dBgS_ObjGndChkFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804A2764,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804A2774,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804A276C,
-};
+ m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e;
+ } else if (player->checkBoomerangLockAccept()) {
+ int sp10 = 0;
-/* 804A2CB4-804A2CC0 0001D8 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
-};
+ fopAc_ac_c* lock_line_actor;
+ if (m_lockLineActorID != fpcM_ERROR_PROCESS_ID_e) {
+ lock_line_actor = fopAcM_SearchByID(m_lockLineActorID);
+ } else {
+ lock_line_actor = NULL;
+ }
-/* 804A2CD0-804A2CD4 000000 0001+03 1/1 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 804A2CD4-804A2CD8 000004 0001+03 0/0 0/0 0/0 .bss @1107 */
-#pragma push
-#pragma force_active on
-static u8 lit_1107[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CD8-804A2CDC 000008 0001+03 0/0 0/0 0/0 .bss @1105 */
-#pragma push
-#pragma force_active on
-static u8 lit_1105[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CDC-804A2CE0 00000C 0001+03 0/0 0/0 0/0 .bss @1104 */
-#pragma push
-#pragma force_active on
-static u8 lit_1104[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CE0-804A2CE4 000010 0001+03 0/0 0/0 0/0 .bss @1099 */
-#pragma push
-#pragma force_active on
-static u8 lit_1099[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CE4-804A2CE8 000014 0001+03 0/0 0/0 0/0 .bss @1097 */
-#pragma push
-#pragma force_active on
-static u8 lit_1097[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CE8-804A2CEC 000018 0001+03 0/0 0/0 0/0 .bss @1095 */
-#pragma push
-#pragma force_active on
-static u8 lit_1095[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CEC-804A2CF0 00001C 0001+03 0/0 0/0 0/0 .bss @1094 */
-#pragma push
-#pragma force_active on
-static u8 lit_1094[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CF0-804A2CF4 000020 0001+03 0/0 0/0 0/0 .bss @1057 */
-#pragma push
-#pragma force_active on
-static u8 lit_1057[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CF4-804A2CF8 000024 0001+03 0/0 0/0 0/0 .bss @1055 */
-#pragma push
-#pragma force_active on
-static u8 lit_1055[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CF8-804A2CFC 000028 0001+03 0/0 0/0 0/0 .bss @1053 */
-#pragma push
-#pragma force_active on
-static u8 lit_1053[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2CFC-804A2D00 00002C 0001+03 0/0 0/0 0/0 .bss @1052 */
-#pragma push
-#pragma force_active on
-static u8 lit_1052[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2D00-804A2D04 000030 0001+03 0/0 0/0 0/0 .bss @1014 */
-#pragma push
-#pragma force_active on
-static u8 lit_1014[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2D04-804A2D08 000034 0001+03 0/0 0/0 0/0 .bss @1012 */
-#pragma push
-#pragma force_active on
-static u8 lit_1012[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2D08-804A2D0C 000038 0001+03 0/0 0/0 0/0 .bss @1010 */
-#pragma push
-#pragma force_active on
-static u8 lit_1010[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2D0C-804A2D10 00003C 0001+03 0/0 0/0 0/0 .bss @1009 */
-#pragma push
-#pragma force_active on
-static u8 lit_1009[1 + 3 /* padding */];
-#pragma pop
+ if (lock_line_actor != NULL && checkStateFlg0(FLG0_100)) {
+ m_lockActorIDs[m_lockCnt] = m_lockLineActorID;
+ m_lockActors[m_lockCnt] = lock_line_actor;
+ m_sight.initFrame(m_lockCnt);
+ mDoAud_seStart(l_lockSeFlg[m_lockCnt], NULL, 0, 0);
+ m_lockCnt++;
+ sp10 = 1;
+ } else if (checkStateFlg0(FLG0_400) && m_lockCnt < BOOMERANG_LOCK_MAX) {
+ m_sight.initFrame(m_lockCnt);
+ m_lockActorsPositions[m_lockCnt] = field_0x99c;
+ field_0x718[m_lockCnt] = 1;
+ mDoAud_seStart(l_lockSeFlg[m_lockCnt], NULL, 0, 0);
+ m_lockCnt++;
+ }
-/* 804A2D10-804A2D14 000040 0001+03 0/0 0/0 0/0 .bss l_HIO */
-#pragma push
-#pragma force_active on
-static u8 l_HIO[1 + 3 /* padding */];
-#pragma pop
-
-/* 804A2D14-804A2D24 000044 000C+04 0/1 0/0 0/0 .bss effDirection$5075 */
-#pragma push
-#pragma force_active on
-static u8 effDirection[12 + 4 /* padding */];
-#pragma pop
-
-/* 804A2D24-804A2D34 000054 000C+04 0/1 0/0 0/0 .bss effScale0$5078 */
-#pragma push
-#pragma force_active on
-static u8 effScale0[12 + 4 /* padding */];
-#pragma pop
-
-/* 804A2D34-804A2D44 000064 000C+04 0/1 0/0 0/0 .bss effScaleSand$5081 */
-#pragma push
-#pragma force_active on
-static u8 effScaleSand[12 + 4 /* padding */];
-#pragma pop
-
-/* 804A2D44-804A2D50 000074 000C+00 0/1 0/0 0/0 .bss effScaleGrass$5084 */
-#pragma push
-#pragma force_active on
-static u8 effScaleGrass[12];
-#pragma pop
+ if (m_lockCnt < BOOMERANG_LOCK_MAX && lock_line_actor != NULL && sp10 == 0) {
+ m_sight.onReserve();
+ field_0x6d4 = m_lockLineActorID;
+ field_0x6d8 = lock_line_actor;
+ }
+
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ f32 cps_size;
+ if (field_0x6d8 != NULL) {
+ cps_size = 30.0f;
+ } else {
+ cps_size = 15.0f;
+ }
+
+ m_atCps.cM3dGCps::Set(*fopCamM_GetEye_p(camera), *player->getLineTopPosP(), cps_size);
+ m_atCps.CalcAtVec();
+ dComIfG_Ccsp()->Set(&m_atCps);
+
+ m_lockLineSqdist = (100.0f + player->getBoomLockMax()) * (100.0f + player->getBoomLockMax());
+ m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e;
+ offStateFlg0(FLG0_400);
+
+ if (player->checkBoomerangLockTrigger()) {
+ onStateFlg0(FLG0_100);
+ if (player->checkItemSightBgHit()) {
+ onStateFlg0(FLG0_400);
+ }
+ field_0x99c = *player->getBoomerangLockPosP();
+ } else {
+ offStateFlg0(FLG0_100);
+ }
+ } else {
+ m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e;
+ }
-/* 804A012C-804A082C 0020EC 0700+00 1/1 0/0 0/0 .text setEffect__13daBoomerang_cFv */
-void daBoomerang_c::setEffect() {
- // NONMATCHING
-}
+ if (dComIfGp_checkPlayerStatus0(0, 0x80000)) {
+ m_sound.startLevelSound(Z2SE_BOOM_POWER_RESUME, 0, -1);
+ }
-/* 804A082C-804A0874 0027EC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla() {
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
+ return 1;
}
-/* ############################################################################################## */
-/* 804A2954-804A2958 000104 0004+00 0/1 0/0 0/0 .rodata @5561 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5561 = 60.0f;
-COMPILER_STRIP_GATE(0x804A2954, &lit_5561);
-#pragma pop
-
-/* 804A2958-804A295C 000108 0004+00 0/1 0/0 0/0 .rodata @5562 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5562 = 100.0f;
-COMPILER_STRIP_GATE(0x804A2958, &lit_5562);
-#pragma pop
+/* 804A0F0C-804A1814 002ECC 0908+00 2/1 0/0 0/0 .text procMove__13daBoomerang_cFv */
+int daBoomerang_c::procMove() {
+ daAlink_c* player = daAlink_getAlinkActorClass();
+
+ if (field_0x957 != 0) {
+ speedF = 40.0f;
+ field_0x957--;
+ if (field_0x957 == 0) {
+ onStateFlg0(FLG0_2);
+ offStateFlg0(FLG0_10);
+ }
+ cLib_addCalc(&m_shippuSize, 2.0f, 0.5f, 0.5f, 0.1f);
+ } else {
+ if (checkStateFlg0(FLG0_80)) {
+ speedF = player->getBoomCatchSpeed();
+ } else {
+ speedF = field_0x988;
+ }
+ cLib_addCalc(&m_shippuSize, 1.0f, 0.5f, 0.5f, 0.1f);
+ }
-/* 804A0874-804A0F0C 002834 0698+00 2/0 0/0 0/0 .text procWait__13daBoomerang_cFv */
-void daBoomerang_c::procWait() {
- // NONMATCHING
-}
+ Vec shippu_size = {0.0f, 1.0f, 0.0f};
+ shippu_size.x = m_shippuSize;
+ shippu_size.z = m_shippuSize;
+ mp_shippuModel->setBaseScale(shippu_size);
+
+ offStateFlg0(daBoomerang_FLG0(FLG0_200 | FLG0_80));
+ setRotAngle();
+ setAimPos();
+
+ if (checkStateFlg0(FLG0_40)) {
+ offStateFlg0(FLG0_40);
+ if (player->returnBoomerang(checkStateFlg0(FLG0_20))) {
+ fopAcM_SetParam(this, 0);
+ m_procFn = &daBoomerang_c::procWait;
+ offStateFlg0(daBoomerang_FLG0(FLG0_400 | FLG0_100 | FLG0_20 | FLG0_4));
+ m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e;
+ current.pos = m_aimPos;
+ setMoveMatrix();
+ resetLockActor();
+ } else {
+ fopAcM_delete(this);
+ }
-/* ############################################################################################## */
-/* 804A295C-804A2968 00010C 000C+00 0/1 0/0 0/0 .rodata @5574 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5574[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804A295C, &lit_5574);
-#pragma pop
-
-/* 804A2968-804A296C 000118 0004+00 0/1 0/0 0/0 .rodata @5762 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5762 = 40.0f;
-COMPILER_STRIP_GATE(0x804A2968, &lit_5762);
-#pragma pop
-
-/* 804A296C-804A2970 00011C 0004+00 0/1 0/0 0/0 .rodata @5763 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5763 = 2.0f;
-COMPILER_STRIP_GATE(0x804A296C, &lit_5763);
-#pragma pop
-
-/* 804A2970-804A2974 000120 0004+00 0/1 0/0 0/0 .rodata @5764 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5764 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x804A2970, &lit_5764);
-#pragma pop
-
-/* 804A2974-804A2978 000124 0004+00 0/1 0/0 0/0 .rodata @5765 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5765 = 20.0f;
-COMPILER_STRIP_GATE(0x804A2974, &lit_5765);
-#pragma pop
-
-/* 804A2978-804A297C 000128 0004+00 0/1 0/0 0/0 .rodata @5766 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5766 = 18.0f;
-COMPILER_STRIP_GATE(0x804A2978, &lit_5766);
-#pragma pop
-
-/* 804A297C-804A2980 00012C 0004+00 0/1 0/0 0/0 .rodata @5767 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5767 = 1024.0f;
-COMPILER_STRIP_GATE(0x804A297C, &lit_5767);
-#pragma pop
-
-/* 804A2980-804A2984 000130 0004+00 0/1 0/0 0/0 .rodata @5768 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5768 = 256.0f;
-COMPILER_STRIP_GATE(0x804A2980, &lit_5768);
-#pragma pop
+ return 1;
+ }
-/* 804A0F0C-804A1814 002ECC 0908+00 2/1 0/0 0/0 .text procMove__13daBoomerang_cFv */
-void daBoomerang_c::procMove() {
- // NONMATCHING
-}
+ cXyz sp38 = m_aimPos - current.pos;
+ f32 temp_f30 = sp38.abs();
+ cXyz sp2C;
+
+ if (temp_f30 > 0.1f) {
+ sp2C = sp38 / temp_f30;
+ } else {
+ sp2C = sp38;
+ }
+
+ s16 var_r26 = sp2C.atan2sX_Z();
+ s16 var_r28 = var_r26 - current.angle.y;
+
+ if (checkStateFlg0(FLG0_2)) {
+ offStateFlg0(FLG0_2);
+ if (checkStateFlg0(FLG0_1)) {
+ current.angle.y = var_r26 + 0x3000;
+ } else if ((s16)(var_r26 - current.angle.y) >= 0) {
+ current.angle.y = var_r26 - 0x3000;
+ } else {
+ current.angle.y = var_r26 + 0x3000;
+ }
+ var_r28 = var_r26 - current.angle.y;
+ }
+
+ if (field_0x960 != 0) {
+ field_0x960--;
+ }
+
+ if (field_0x954 != 0) {
+ field_0x954--;
+ if (field_0x954 == 0) {
+ field_0x954 = 30;
+
+ field_0x955++;
+ if (field_0x955 > 48) {
+ field_0x955 = 48;
+ }
+ }
+ }
+
+ bool sp9 = field_0x960 == 0 && (current.pos.abs2(player->getBoomerangCatchPos()) < 4.0f * speedF * speedF);
+
+ if ((checkStateFlg0(FLG0_1) || sp9) && (sp9 || temp_f30 < 2.0f * speedF)) {
+ field_0x957 = 0;
+ onStateFlg0(daBoomerang_FLG0(FLG0_40 | FLG0_1));
+ resetLockActor();
+ }
+
+ if (!checkStateFlg0(FLG0_1) && field_0x957 == 0 && !checkStateFlg0(FLG0_10) && m_lockCnt <= field_0x951) {
+ onStateFlg0(daBoomerang_FLG0(FLG0_2 | FLG0_1));
+ resetLockActor();
+ offStateFlg0(FLG0_10);
+ }
+
+ if (checkStateFlg0(FLG0_2)) {
+ current.angle.y = var_r26;
+ field_0x955 = 0;
+ field_0x954 = 30;
+ } else if (field_0x957 != 0) {
+ cLib_chaseAngleS(&current.angle.y, var_r26, 0x2000);
+ } else {
+ f32 var_f31 = 20.0f - ((2.0f * temp_f30) / speedF);
+ if (var_f31 < 0.0f) {
+ var_f31 = 0.0f;
+ } else if (var_f31 > 18.0f) {
+ var_f31 = 20.0f + (40.0f * (var_f31 - 18.0f));
+ }
+
+ s16 var_r27 = 1024.0f + (256.0f * var_f31);
+ if (var_r27 > 0x4000) {
+ var_r27 = 0x4000;
+ } else {
+ var_r27 += field_0x955 * 256;
+ if (var_r27 > 0x4000) {
+ var_r27 = 0x4000;
+ }
+ }
+
+ if (var_r28 > var_r27) {
+ var_r28 = var_r27;
+ } else if (var_r28 < -var_r27) {
+ var_r28 = -var_r27;
+ }
+
+ current.angle.y += var_r28;
+ }
+
+ current.angle.x = sp2C.atan2sY_XZ();
+ current.pos.x += speedF * cM_scos(current.angle.x) * cM_ssin(current.angle.y);
+ current.pos.y -= speedF * cM_ssin(current.angle.x);
+ current.pos.z += speedF * cM_scos(current.angle.x) * cM_scos(current.angle.y);
+
+ cXyz sp20 = m_aimPos - current.pos;
+
+ if (temp_f30 < speedF && field_0x957 == 0 && !checkStateFlg0(FLG0_1)) {
+ if (sp20.inprod(sp38) <= 0.0f) {
+ if (checkStateFlg0(FLG0_10)) {
+ onStateFlg0(FLG0_2);
+ offStateFlg0(FLG0_10);
+ } else {
+ field_0x957 = 10;
+ m_moveTargetPos = m_aimPos;
+ m_movePos = current.pos;
+ }
+
+ m_lockActors[field_0x951] = NULL;
+ m_lockActorIDs[field_0x951] = fpcM_ERROR_PROCESS_ID_e;
+
+ if (field_0x718[field_0x951] != 0) {
+ onStateFlg0(FLG0_200);
+ }
+ field_0x718[field_0x951] = 0;
+ field_0x951++;
+ }
+ }
+
+ cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 3, 0x1000, 0x400);
+ cLib_addCalcAngleS(&shape_angle.x, current.angle.x, 3, 0x1000, 0x400);
+
+ if (!checkStateFlg0(FLG0_1)) {
+ checkBgHit(&old.pos, &current.pos);
+ }
+
+ var_r28 = -(var_r28 * 2);
+ if (var_r28 > 0x100) {
+ var_r28 = 0x1000;
+ } else if (var_r28 < -0x100) {
+ var_r28 = -0x1000;
+ } else {
+ var_r28 = field_0x958;
+ }
+
+ field_0x958 = var_r28;
+ cLib_addCalcAngleS(&shape_angle.z, var_r28, 0x10, 0x1000, 0x10);
+
+ setMoveMatrix();
-/* ############################################################################################## */
-/* 804A2984-804A2988 000134 0004+00 0/1 0/0 0/0 .rodata @5874 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5874 = 1000000000.0f;
-COMPILER_STRIP_GATE(0x804A2984, &lit_5874);
-#pragma pop
-
-/* 804A2988-804A298C 000138 0004+00 0/1 0/0 0/0 .rodata @5875 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5875 = 500.0f;
-COMPILER_STRIP_GATE(0x804A2988, &lit_5875);
-#pragma pop
+ m_sound.startLevelSound(Z2SE_BOOM_TORNADO, 0, -1);
+
+ if (!dComIfGp_event_runCheck()) {
+ dComIfG_Ccsp()->Set(&m_windAtCyl);
+ g_dComIfG_gameInfo.play.mCcs.mMass_Mng.Set(&m_windAtCyl, 1);
+ //dComIfG_Ccsp()->SetMass(&m_windAtCyl, 1);
+ } else {
+ m_atCps.ResetAtHit();
+ m_windAtCyl.ResetAtHit();
+ }
+
+ return 1;
+}
/* 804A1814-804A1BD4 0037D4 03C0+00 1/1 0/0 0/0 .text execute__13daBoomerang_cFv */
int daBoomerang_c::execute() {
- // NONMATCHING
+ if (field_0x957 != 0) {
+ current.pos = field_0x9b8;
+ }
+
+ if (checkStateFlg0(FLG0_1) && fopAcM_wt_c::waterCheck(&current.pos)) {
+ cXyz spC(current.pos.x, current.pos.y - 50.0f, current.pos.z);
+
+ f32 roof_y;
+ if (fopAcM_rc_c::roofCheck(&spC) && dComIfG_Bgsp().GetUnderwaterRoofCode(*fopAcM_rc_c::getRoofCheck()) == 0) {
+ roof_y = fopAcM_rc_c::getRoofY();
+ } else {
+ roof_y = 1000000000.0f;
+ }
+
+ if (roof_y > fopAcM_wt_c::getWaterY() && current.pos.y < fopAcM_wt_c::getWaterY() - 50.0f) {
+ fopAcM_delete(this);
+ return 1;
+ }
+ }
+
+ if (m_forceDelete) {
+ fopAcM_delete(this);
+ return 1;
+ }
+
+ m_sight.offReserve();
+
+ field_0x6d4 = fpcM_ERROR_PROCESS_ID_e;
+ field_0x6d8 = 0;
+
+ if (field_0x962 != 0) {
+ field_0x962--;
+ }
+
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ s16 cam_angleY = fopCamM_GetAngleY(camera);
+ s16 cam_angleX = fopCamM_GetAngleX(camera);
+
+ for (int i = 0; i < m_lockCnt; i++) {
+ if (m_lockActorIDs[i] != fpcM_ERROR_PROCESS_ID_e) {
+ m_lockActors[i] = fopAcM_SearchByID(m_lockActorIDs[i]);
+ if (m_lockActors[i] == NULL) {
+ pushLockList(i);
+ i--;
+ }
+ }
+ }
+
+ daAlink_c* player = daAlink_getAlinkActorClass();
+
+ if (dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo()) != ST_BOSS_ROOM) {
+ f32 temp_f31 = 500.0f + player->getBoomLockMax();
+ int var_r26 = 0;
+
+ temp_f31 *= temp_f31;
+ for (int i = 0; i < m_lockCnt; i++) {
+ f32 var_f29;
+ if (field_0x718[i] != 0) {
+ var_f29 = player->current.pos.abs2(m_lockActorsPositions[i]);
+ } else if (m_lockActors[i] != NULL) {
+ var_f29 = player->current.pos.abs2(m_lockActors[i]->eyePos);
+ } else {
+ continue;
+ }
+
+ if (var_f29 > temp_f31) {
+ pushLockList(i);
+ i--;
+ var_r26 = 1;
+ }
+ }
+
+ if (var_r26 != 0 && m_lockCnt == 0) {
+ onStateFlg0(FLG0_1);
+ field_0x957 = 0;
+ }
+ }
+
+ (this->*m_procFn)();
+ setRoomInfo();
+
+ m_sight.playAnime(field_0x951, m_lockCnt);
+
+ field_0x95c = cam_angleY;
+ field_0x95e = cam_angleX;
+ setEffect();
+
+ m_sound.framework(0, m_reverb);
+ field_0x9b8 = current.pos;
+
+ if (field_0x957 != 0) {
+ cLib_chasePos(&m_movePos, m_moveTargetPos, speedF);
+ current.pos = m_movePos;
+ }
+
+ attention_info.position = current.pos;
+ eyePos = current.pos;
+
+ if (dComIfGp_event_runCheck()) {
+ daPy_boomerangMove_c::onEventKeepFlg();
+ }
+
+ return 1;
}
/* 804A1BD4-804A1BF4 003B94 0020+00 1/0 0/0 0/0 .text daBoomerang_Execute__FP13daBoomerang_c */
@@ -1693,18 +1395,9 @@ static int daBoomerang_Execute(daBoomerang_c* i_this) {
return i_this->execute();
}
-/* ############################################################################################## */
-/* 804A2CC0-804A2CD0 0001E4 0010+00 3/3 0/0 0/0 .data __vt__19daBoomerang_sight_c */
-SECTION_DATA extern void* __vt__19daBoomerang_sight_c[4] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)draw__19daBoomerang_sight_cFv,
- (void*)__dt__19daBoomerang_sight_cFv,
-};
-
/* 804A1BF4-804A1EBC 003BB4 02C8+00 1/1 0/0 0/0 .text __dt__13daBoomerang_cFv */
daBoomerang_c::~daBoomerang_c() {
- // NONMATCHING
+ m_sound.deleteObject();
}
/* 804A1EBC-804A1EE4 003E7C 0028+00 1/0 0/0 0/0 .text daBoomerang_Delete__FP13daBoomerang_c */
@@ -1715,322 +1408,178 @@ static int daBoomerang_Delete(daBoomerang_c* i_this) {
/* 804A1EE4-804A2064 003EA4 0180+00 1/1 0/0 0/0 .text createHeap__13daBoomerang_cFv */
int daBoomerang_c::createHeap() {
- if (mSight.createHeap() == 0) {
+ if (!m_sight.createHeap()) {
return 0;
}
- mSight.initialize();
- J3DModelData* modelData =
- (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x1f);
- field_0x568 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
- if (field_0x568 == NULL) {
+
+ m_sight.initialize();
+
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x1F);
+ JUT_ASSERT(2882, modelData != 0);
+ mp_boomModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mp_boomModel == NULL) {
return 0;
}
+
modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x34);
- field_0x56c = mDoExt_J3DModel__create(modelData, 0, 0x11000284);
- if (field_0x56c == NULL) {
+ JUT_ASSERT(2898, modelData != 0);
+ mp_shippuModel = mDoExt_J3DModel__create(modelData, 0, 0x11000284);
+ if (mp_shippuModel == NULL) {
return 0;
}
- J3DAnmTransform* transform =
- (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x13);
- if (mBck.init(transform, 0, 2, 1.0f, 0, -1, false) == 0) {
+
+ J3DAnmTransform* transAnm = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x13);
+ JUT_ASSERT(2911, transAnm != 0);
+ if (m_shippuBck.init(transAnm, 0, 2, 1.0f, 0, -1, false) == 0) {
return 0;
}
+
modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x19);
- field_0x590 = mDoExt_J3DModel__create(modelData, 0, 0x11000284);
- if (field_0x590 == NULL) {
+ mp_setboomEfModel = mDoExt_J3DModel__create(modelData, 0, 0x11000284);
+ if (mp_setboomEfModel == NULL) {
return 0;
}
- field_0x720.init(&current.pos, 2);
+
+ m_sound.init(&current.pos, 2);
return 1;
}
-
/* 804A2064-804A2084 004024 0020+00 1/1 0/0 0/0 .text daBoomerang_createHeap__FP10fopAc_ac_c */
static int daBoomerang_createHeap(fopAc_ac_c* i_this) {
- return static_cast<daBoomerang_c*>(i_this)->createHeap();
+ return ((daBoomerang_c*)i_this)->createHeap();
}
-/* ############################################################################################## */
-/* 804A298C-804A2990 00013C 0004+00 1/1 0/0 0/0 .rodata @6077 */
-SECTION_RODATA static f32 const lit_6077 = 600.0f;
-COMPILER_STRIP_GATE(0x804A298C, &lit_6077);
+/* 804A2B14-804A2B60 000038 004C+00 0/1 0/0 0/0 .data l_atCpsSrc */
+static dCcD_SrcCps l_atCpsSrc = {
+ {
+ {0, {{AT_TYPE_BOOMERANG, 0, 0x3B}, {0, 0}, 0}},
+ {dCcD_SE_WOOD, 4, 0, 0, {0}},
+ {dCcD_SE_NONE, 0, 0, 0, {0}},
+ {0},
+ },
+ {
+ {
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ 15.0f,
+ },
+ }
+};
+
+/* 804A2B60-804A2BA4 000084 0044+00 0/1 0/0 0/0 .data l_windAtCylSrc */
+static dCcD_SrcCyl l_windAtCylSrc = {
+ {
+ {0, {{AT_TYPE_BOOMERANG, 0, 0x1B}, {0, 0}, 0}},
+ {dCcD_SE_13, 0, 0, dCcD_MTRL_WIND, {2}},
+ {dCcD_SE_NONE, 0, 0, 0, {0}},
+ {0},
+ },
+ {
+ {0.0f, 0.0f, 0.0f},
+ 150.0f,
+ 600.0f,
+ }
+};
/* 804A2084-804A230C 004044 0288+00 1/1 0/0 0/0 .text create__13daBoomerang_cFv */
int daBoomerang_c::create() {
- // NONMATCHING
-}
+ fpc_ProcID id = fopAcM_GetID(this);
+ fopAcM_SetupActor(this, daBoomerang_c);
-/* 804A230C-804A2524 0042CC 0218+00 1/1 0/0 0/0 .text __ct__13daBoomerang_cFv */
-daBoomerang_c::daBoomerang_c() {
- // NONMATCHING
-}
+ if (!fopAcM_entrySolidHeap(this, daBoomerang_createHeap, 0xC0D0)) {
+ return cPhs_ERROR_e;
+ }
-/* 804A2524-804A259C 0044E4 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */
-// dBgS_ObjGndChk::~dBgS_ObjGndChk() {
-extern "C" void __dt__14dBgS_ObjGndChkFv() {
- // NONMATCHING
-}
+ m_lockLineActorID = fpcM_ERROR_PROCESS_ID_e;
-/* 804A259C-804A25E4 00455C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ m_acch.Set(this, 0, NULL);
+ m_papo.init(&m_acch, 600.0f, 600.0f);
+ setKeepMatrix();
+ fopAcM_SetMtx(this, mp_boomModel->getBaseTRMtx());
-/* 804A25E4-804A262C 0045A4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ m_procFn = &daBoomerang_c::procWait;
-/* 804A262C-804A2688 0045EC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
+ m_colliderStts.Init(60, 0xFF, this);
-/* 804A2688-804A26F8 004648 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
+ m_atCps.Set(l_atCpsSrc);
+ m_atCps.SetStts(&m_colliderStts);
+ m_atCps.SetAtHitCallback(daBoomerang_lockLineCallback);
-/* 804A26F8-804A2718 0046B8 0020+00 1/0 0/0 0/0 .text daBoomerang_Create__FP10fopAc_ac_c
- */
-static int daBoomerang_Create(fopAc_ac_c* i_this) {
- return static_cast<daBoomerang_c*>(i_this)->create();
-}
+ m_windAtCyl.Set(l_windAtCylSrc);
+ m_windAtCyl.SetStts(&m_colliderStts);
+ m_windAtCyl.SetAtHitCallback(daBoomerang_moveLineCallback);
-/* 804A2718-804A271C 0046D8 0004+00 1/0 0/0 0/0 .text draw__12dDlst_base_cFv */
-void draw__12dDlst_base_cFv() {
- /* empty function */
-}
+ m_boomLineChk.ClrSttsRoofOff();
-/* 804A271C-804A2764 0046DC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
+ for (int i = 0; i < BOOMERANG_LOCK_MAX; i++) {
+ m_lockActorIDs[i] = fpcM_ERROR_PROCESS_ID_e;
+ }
-/* 804A2764-804A276C 004724 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */
-static void func_804A2764() {
- // NONMATCHING
-}
+ m_windBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x48);
+ JUT_ASSERT(2997, m_windBtk);
-/* 804A276C-804A2774 00472C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */
-static void func_804A276C() {
- // NONMATCHING
-}
+ m_windBtk->searchUpdateMaterialID(mp_shippuModel->getModelData());
+ mp_shippuModel->getModelData()->entryTexMtxAnimator(m_windBtk);
+ mp_shippuModel->getModelData()->getJointNodePointer(4)->setCallBack(daBoomeang_windModelCallBack);
+ mp_shippuModel->setUserArea((u32)this);
-/* 804A2774-804A277C 004734 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */
-static void func_804A2774() {
- // NONMATCHING
-}
+ m_waitEffBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x47);
+ JUT_ASSERT(3011, m_waitEffBtk);
-/* 804A277C-804A2784 00473C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_804A277C() {
- // NONMATCHING
-}
+ m_waitEffBtk->searchUpdateMaterialID(mp_setboomEfModel->getModelData());
+ mp_setboomEfModel->getModelData()->entryTexMtxAnimator(m_waitEffBtk);
-/* 804A2784-804A278C 004744 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_804A2784() {
- // NONMATCHING
-}
+ setRoomInfo();
-/* 804A278C-804A27FC 00474C 0070+00 1/0 0/0 0/0 .text __dt__19daBoomerang_sight_cFv */
-// daBoomerang_sight_c::~daBoomerang_sight_c() {
-extern "C" void __dt__19daBoomerang_sight_cFv() {
- // NONMATCHING
-}
+ model = mp_boomModel;
+ attention_info.field_0xa = 150;
-/* 804A27FC-804A2800 0047BC 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
-}
+ fopAcM_setStageLayer(this);
-/* 804A2800-804A2848 0047C0 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
-}
+ m_setAimActorFn = &daBoomerang_c::setAimActorBase;
+ m_cancelLockActorFn = &daBoomerang_c::cancelLockActorBase;
-/* ############################################################################################## */
-/* 804A2D50-804A2D54 000080 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D50[4];
-#pragma pop
-
-/* 804A2D54-804A2D58 000084 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D54[4];
-#pragma pop
-
-/* 804A2D58-804A2D5C 000088 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D58[4];
-#pragma pop
-
-/* 804A2D5C-804A2D60 00008C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D5C[4];
-#pragma pop
-
-/* 804A2D60-804A2D64 000090 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D60[4];
-#pragma pop
+ m_lineChk.OffFullGrp();
+ m_lineChk.OnWaterGrp();
-/* 804A2D64-804A2D68 000094 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D64[4];
-#pragma pop
+ m_shippuSize = 1.0f;
+ return cPhs_COMPLEATE_e;
+}
-/* 804A2D68-804A2D6C 000098 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D68[4];
-#pragma pop
-
-/* 804A2D6C-804A2D70 00009C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D6C[4];
-#pragma pop
-
-/* 804A2D70-804A2D74 0000A0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D70[4];
-#pragma pop
-
-/* 804A2D74-804A2D78 0000A4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D74[4];
-#pragma pop
-
-/* 804A2D78-804A2D7C 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D78[4];
-#pragma pop
-
-/* 804A2D7C-804A2D80 0000AC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D7C[4];
-#pragma pop
-
-/* 804A2D80-804A2D84 0000B0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D80[4];
-#pragma pop
-
-/* 804A2D84-804A2D88 0000B4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D84[4];
-#pragma pop
-
-/* 804A2D88-804A2D8C 0000B8 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D88[4];
-#pragma pop
-
-/* 804A2D8C-804A2D90 0000BC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D8C[4];
-#pragma pop
-
-/* 804A2D90-804A2D94 0000C0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D90[4];
-#pragma pop
-
-/* 804A2D94-804A2D98 0000C4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D94[4];
-#pragma pop
-
-/* 804A2D98-804A2D9C 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D98[4];
-#pragma pop
-
-/* 804A2D9C-804A2DA0 0000CC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2D9C[4];
-#pragma pop
-
-/* 804A2DA0-804A2DA4 0000D0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2DA0[4];
-#pragma pop
+/* 804A230C-804A2524 0042CC 0218+00 1/1 0/0 0/0 .text __ct__13daBoomerang_cFv */
+daBoomerang_c::daBoomerang_c() {}
-/* 804A2DA4-804A2DA8 0000D4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
+/* 804A26F8-804A2718 0046B8 0020+00 1/0 0/0 0/0 .text daBoomerang_Create__FP10fopAc_ac_c
*/
-#pragma push
-#pragma force_active on
-static u8 data_804A2DA4[4];
-#pragma pop
+static int daBoomerang_Create(fopAc_ac_c* i_this) {
+ return ((daBoomerang_c*)i_this)->create();
+}
-/* 804A2DA8-804A2DAC 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2DA8[4];
-#pragma pop
+/* 804A2BC8-804A2BE8 -00001 0020+00 1/0 0/0 0/0 .data l_daBoomerang_Method */
+static actor_method_class l_daBoomerang_Method = {
+ (process_method_func)daBoomerang_Create,
+ (process_method_func)daBoomerang_Delete,
+ (process_method_func)daBoomerang_Execute,
+ (process_method_func)NULL,
+ (process_method_func)daBoomerang_Draw,
+};
-/* 804A2DAC-804A2DB0 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804A2DAC[4];
-#pragma pop
-
-/* 804A2DB0-804A2DB4 0000E0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2DB0[4];
-#pragma pop
-
-/* 804A2DB4-804A2DB8 0000E4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JAUSectionHeap> */
-#pragma push
-#pragma force_active on
-static u8 data_804A2DB4[4];
-#pragma pop
-
-/* 804A2990-804A2990 000140 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 804A2BE8-804A2C18 -00001 0030+00 0/0 0/0 1/0 .data g_profile_BOOMERANG */
+extern actor_process_profile_definition g_profile_BOOMERANG = {
+ fpcLy_CURRENT_e, // mLayerID
+ 6, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_BOOMERANG, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daBoomerang_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 686, // mPriority
+ &l_daBoomerang_Method, // sub_method
+ 0x00060000, // mStatus
+ fopAc_UNK_GROUP_5_e, // mActorType
+ fopAc_CULLBOX_0_e, // cullType
+};
+
+AUDIO_INSTANCES;
diff --git a/src/d/actor/d_a_grass.cpp b/src/d/actor/d_a_grass.cpp
index 41234b6947..eee43906f6 100644
--- a/src/d/actor/d_a_grass.cpp
+++ b/src/d/actor/d_a_grass.cpp
@@ -9,789 +9,15 @@
#include "d/d_com_inf_game.h"
#include "dol2asm.h"
#include "m_Do/m_Do_lib.h"
-#include "string.h"
+#include "Z2AudioLib/Z2Instances.h"
+#include <string.h>
#include <dolphin/gd.h>
-//
-// Forward References:
-//
-
-extern "C" static void randam_addcol_set__FPs();
-extern "C" void createGrass__9daGrass_cFv();
-extern "C" void deleteGrass__9daGrass_cFv();
-extern "C" void __dt__15dGrass_packet_cFv();
-extern "C" void executeGrass__9daGrass_cFv();
-extern "C" void drawGrass__9daGrass_cFv();
-extern "C" void newGrassData__9daGrass_cFR4cXyziUcUcsUc();
-extern "C" void createFlower__9daGrass_cFv();
-extern "C" void deleteFlower__9daGrass_cFv();
-extern "C" void __dt__16dFlower_packet_cFv();
-extern "C" void executeFlower__9daGrass_cFv();
-extern "C" void drawFlower__9daGrass_cFv();
-extern "C" void newFlowerData__9daGrass_cFScR4cXyziScs();
-extern "C" static void dGrass_Tex_Change__Fv();
-extern "C" static void daGrass_create__FP9daGrass_c();
-extern "C" void create__9daGrass_cFv();
-extern "C" static void daGrass_Delete__FP9daGrass_c();
-extern "C" static void daGrass_execute__FP9daGrass_c();
-extern "C" static void daGrass_draw__FP9daGrass_c();
-extern "C" void func_8051D7B4(void* _this, u8*);
-extern "C" void __sinit_d_a_grass_cpp();
-extern "C" void WorkCo__13dGrass_data_cFP10fopAc_ac_cUli();
-extern "C" void WorkAt_NoCutAnim__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_Obj();
-extern "C" void
-Direction_Set__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_ObjP5csXyz();
-extern "C" void WorkAt__13dGrass_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfUs();
-extern "C" void __dt__5csXyzFv();
-extern "C" void hitCheck__13dGrass_data_cFiUs();
-extern "C" void __dt__15dCcMassS_HitInfFv();
-extern "C" void newData__13dGrass_room_cFP13dGrass_data_c();
-extern "C" void deleteData__13dGrass_room_cFv();
-extern "C" void __ct__15dGrass_packet_cFv();
-extern "C" void draw__15dGrass_packet_cFv();
-extern "C" void calc__15dGrass_packet_cFv();
-extern "C" static void checkGroundY__FR4cXyz();
-extern "C" void update__15dGrass_packet_cFv();
-extern "C" void setData__15dGrass_packet_cFP13dGrass_data_ciR4cXyziUcUcsUc();
-extern "C" void newData__15dGrass_packet_cFR4cXyziUcUcsUc();
-extern "C" void deleteRoom__15dGrass_packet_cFi();
-extern "C" void newAnm__15dGrass_packet_cFv();
-extern "C" void setAnm__15dGrass_packet_cFis();
-extern "C" void getSwordTopPos__9daPy_py_cCFv();
-extern "C" void __ct__13dGrass_room_cFv();
-extern "C" void __ct__12dGrass_anm_cFv();
-extern "C" void __dt__13dGrass_data_cFv();
-extern "C" void __ct__13dGrass_data_cFv();
-extern "C" void WorkCo__14dFlower_data_cFP10fopAc_ac_cUli();
-extern "C" void deleteAnm__14dFlower_data_cFv();
-extern "C" void WorkAt_NoCutAnim__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_Obj();
-extern "C" void WorkAt__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInf();
-extern "C" void hitCheck__14dFlower_data_cFP10fopAc_ac_ci();
-extern "C" void newData__14dFlower_room_cFP14dFlower_data_c();
-extern "C" void deleteData__14dFlower_room_cFv();
-extern "C" void __ct__16dFlower_packet_cFv();
-extern "C" void draw__16dFlower_packet_cFv();
-extern "C" void calc__16dFlower_packet_cFv();
-extern "C" static void flowerCheckGroundY__FR4cXyz();
-extern "C" void update__16dFlower_packet_cFv();
-extern "C" void setData__16dFlower_packet_cFP14dFlower_data_ciScR4cXyziScs();
-extern "C" void newData__16dFlower_packet_cFScR4cXyziScs();
-extern "C" void deleteRoom__16dFlower_packet_cFi();
-extern "C" void newAnm__16dFlower_packet_cFv();
-extern "C" void setAnm__16dFlower_packet_cFis();
-extern "C" void __ct__14dFlower_room_cFv();
-extern "C" void __ct__13dFlower_anm_cFv();
-extern "C" void __dt__14dFlower_data_cFv();
-extern "C" void __ct__14dFlower_data_cFv();
-extern "C" extern char const* const d_a_grass__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void scaleM__14mDoMtx_stack_cFfff();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void fopAcM_setStageLayer__FPv();
-extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb();
-extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
-extern "C" void fopOvlpM_IsPeek__Fv();
-extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void dComIfGs_Grass_hide_Set__FSc();
-extern "C" void
-set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void dKyw_get_wind_vec__Fv();
-extern "C" void dKyw_get_wind_pow__Fv();
-extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void dCcD_GetGObjInf__FP8cCcD_Obj();
-extern "C" void SetAttr__12dCcMassS_MngFffUcUc();
-extern "C" void Prepare__12dCcMassS_MngFv();
-extern "C" void Chk__12dCcMassS_MngFP4cXyzPP10fopAc_ac_cP15dCcMassS_HitInf();
-extern "C" void MassClear__4dCcSFv();
-extern "C" void checkNowWolfEyeUp__9daPy_py_cFv();
-extern "C" void getDaytime__18dScnKy_env_light_cFv();
-extern "C" void dKy_setLight_nowroom_grass__Fcf();
-extern "C" void dKy_setLight_again__Fv();
-extern "C" void dKy_Global_amb_set__FP12dKy_tevstr_c();
-extern "C" void dKy_GxFog_tevstr_set__FP12dKy_tevstr_c();
-extern "C" void dKy_GfFog_tevstr_set__FP12dKy_tevstr_c();
-extern "C" void dKy_get_dayofweek__Fv();
-extern "C" void dKy_SunMoon_Light_Check__Fv();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void __ct__5csXyzFsss();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rnd__Fv();
-extern "C" void cM_rndF__Ff();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-extern "C" void cLib_addCalcAngleS__FPsssss();
-extern "C" void cLib_chaseAngleS__FPsss();
-extern "C" void calcViewFrustum__11J3DUClipperFv();
-extern "C" void clip__11J3DUClipperCFPA4_Cf3Vecf();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void GFSetTevColorS10__F11_GXTevRegID11_GXColorS10();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void reinitGX__6J3DSysFv();
-extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer();
-extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void _savegpr_18();
-extern "C" void _savegpr_20();
-extern "C" void _savegpr_22();
-extern "C" void _savegpr_23();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_18();
-extern "C" void _restgpr_20();
-extern "C" void _restgpr_22();
-extern "C" void _restgpr_23();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__9J3DPacket[5];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mClipper__14mDoLib_clipper[92];
-extern "C" u8 mStatus__20dStage_roomControl_c[65792];
-extern "C" u8 m_deleteRoom__15dGrass_packet_c[12];
-extern "C" u8 m_deleteRoom__16dFlower_packet_c[12];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" f32 mSystemFar__14mDoLib_clipper;
-extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" u8 m_myObj__9daGrass_c[4];
-extern "C" u8 m_grass__9daGrass_c[4];
-extern "C" u8 m_flower__9daGrass_c[4];
-extern "C" u8 mLight8EcallBack__13dPa_control_c[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80523028-8052302C 000000 0004+00 14/14 0/0 0/0 .rodata @3999 */
-SECTION_RODATA static f32 const lit_3999 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80523028, &lit_3999);
-
-/* 8052302C-80523030 000004 0004+00 1/10 0/0 0/0 .rodata @4000 */
-SECTION_RODATA static u8 const lit_4000[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x8052302C, &lit_4000);
-
-/* 80523030-80523034 000008 0004+00 0/1 0/0 0/0 .rodata @4001 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4001 = 1600.0f;
-COMPILER_STRIP_GATE(0x80523030, &lit_4001);
-#pragma pop
-
-/* 80523034-80523038 00000C 0004+00 0/5 0/0 0/0 .rodata @4002 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4002 = 40.0f;
-COMPILER_STRIP_GATE(0x80523034, &lit_4002);
-#pragma pop
-
-/* 80523038-8052303C 000010 0004+00 0/2 0/0 0/0 .rodata @4003 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4003 = 65.0f;
-COMPILER_STRIP_GATE(0x80523038, &lit_4003);
-#pragma pop
-
-/* 8052303C-80523040 000014 0004+00 0/3 0/0 0/0 .rodata @4148 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4148 = 5.0f;
-COMPILER_STRIP_GATE(0x8052303C, &lit_4148);
-#pragma pop
-
-/* 80523040-80523044 000018 0004+00 0/2 0/0 0/0 .rodata @4149 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4149 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80523040, &lit_4149);
-#pragma pop
-
-/* 80523044-80523048 00001C 0004+00 0/3 0/0 0/0 .rodata @4150 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4150 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80523044, &lit_4150);
-#pragma pop
-
-/* 80523048-8052304C 000020 0004+00 0/1 0/0 0/0 .rodata @4151 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4151 = 2.5f;
-COMPILER_STRIP_GATE(0x80523048, &lit_4151);
-#pragma pop
-
-/* 8052304C-80523050 000024 0004+00 0/3 0/0 0/0 .rodata @4152 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4152 = 0.5f;
-COMPILER_STRIP_GATE(0x8052304C, &lit_4152);
-#pragma pop
-
-/* 80523050-80523054 000028 0004+00 0/1 0/0 0/0 .rodata @4153 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4153 = 1.5f;
-COMPILER_STRIP_GATE(0x80523050, &lit_4153);
-#pragma pop
-
-/* 80523054-80523058 00002C 0004+00 0/1 0/0 0/0 .rodata @4154 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4154 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80523054, &lit_4154);
-#pragma pop
-
-/* 80523058-8052305C 000030 0004+00 0/1 0/0 0/0 .rodata @4155 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4155 = 20.0f;
-COMPILER_STRIP_GATE(0x80523058, &lit_4155);
-#pragma pop
-
-/* 8052305C-80523060 000034 0004+00 0/3 0/0 0/0 .rodata @4156 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4156 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x8052305C, &lit_4156);
-#pragma pop
-
-/* 80523060-80523068 000038 0008+00 0/9 0/0 0/0 .rodata @4158 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4158[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80523060, &lit_4158);
-#pragma pop
-
-/* 80523068-80523070 000040 0008+00 0/2 0/0 0/0 .rodata @4509 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4509[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80523068, &lit_4509);
-#pragma pop
-
-/* 80523070-80523078 000048 0008+00 0/2 0/0 0/0 .rodata @4510 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4510[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80523070, &lit_4510);
-#pragma pop
-
-/* 80523078-80523080 000050 0008+00 0/2 0/0 0/0 .rodata @4511 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4511[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80523078, &lit_4511);
-#pragma pop
-
-/* 80523080-80523084 000058 0004+00 0/2 0/0 0/0 .rodata @4512 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4512 = 200.0f;
-COMPILER_STRIP_GATE(0x80523080, &lit_4512);
-#pragma pop
-
-/* 80523084-80523088 00005C 0004+00 0/1 0/0 0/0 .rodata @4513 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4513 = 158.0f;
-COMPILER_STRIP_GATE(0x80523084, &lit_4513);
-#pragma pop
-
-/* 80523088-8052308C 000060 0004+00 0/2 0/0 0/0 .rodata @4514 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4514 = 500.0f;
-COMPILER_STRIP_GATE(0x80523088, &lit_4514);
-#pragma pop
-
-/* 8052308C-80523090 000064 0004+00 0/3 0/0 0/0 .rodata @4515 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4515 = 25.0f;
-COMPILER_STRIP_GATE(0x8052308C, &lit_4515);
-#pragma pop
-
-/* 80523090-80523094 000068 0004+00 1/8 0/0 0/0 .rodata @4516 */
-SECTION_RODATA static f32 const lit_4516 = 1.0f;
-COMPILER_STRIP_GATE(0x80523090, &lit_4516);
-
-/* 80523094-80523098 00006C 0004+00 1/3 0/0 0/0 .rodata @4517 */
-SECTION_RODATA static f32 const lit_4517 = -1.0f;
-COMPILER_STRIP_GATE(0x80523094, &lit_4517);
-
-/* 80523098-8052309C 000070 0004+00 2/3 0/0 0/0 .rodata @4600 */
-SECTION_RODATA static f32 const lit_4600 = 15.0f;
-COMPILER_STRIP_GATE(0x80523098, &lit_4600);
-
-/* 8052309C-805230A4 000074 0008+00 0/1 0/0 0/0 .rodata @4656 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4656[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8052309C, &lit_4656);
-#pragma pop
-
-/* 805230A4-805230AC 00007C 0008+00 0/1 0/0 0/0 .rodata @4657 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4657[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x805230A4, &lit_4657);
-#pragma pop
-
-/* 805230AC-805230B0 000084 0004+00 0/1 0/0 0/0 .rodata @4835 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4835 = 90.0f;
-COMPILER_STRIP_GATE(0x805230AC, &lit_4835);
-#pragma pop
-
-/* 805230B0-805230B4 000088 0004+00 0/1 0/0 0/0 .rodata @4836 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4836 = 135.0f;
-COMPILER_STRIP_GATE(0x805230B0, &lit_4836);
-#pragma pop
-
-/* 805230B4-805230B8 00008C 0004+00 0/1 0/0 0/0 .rodata @4837 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4837 = 1.0f / 45.0f;
-COMPILER_STRIP_GATE(0x805230B4, &lit_4837);
-#pragma pop
-
-/* 805230B8-805230BC 000090 0004+00 0/2 0/0 0/0 .rodata @4838 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4838 = 100.0f;
-COMPILER_STRIP_GATE(0x805230B8, &lit_4838);
-#pragma pop
-
-/* 805230BC-805230C0 000094 0004+00 0/1 0/0 0/0 .rodata @4839 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4839 = 18.0f;
-COMPILER_STRIP_GATE(0x805230BC, &lit_4839);
-#pragma pop
-
-/* 805230C0-805230C4 000098 0004+00 0/1 0/0 0/0 .rodata @4840 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4840 = 225.0f;
-COMPILER_STRIP_GATE(0x805230C0, &lit_4840);
-#pragma pop
-
-/* 805230C4-805230C8 00009C 0004+00 0/1 0/0 0/0 .rodata @4841 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4841 = 1.0f / 90.0f;
-COMPILER_STRIP_GATE(0x805230C4, &lit_4841);
-#pragma pop
-
-/* 805230C8-805230CC 0000A0 0004+00 0/1 0/0 0/0 .rodata @4842 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4842 = 82.0f;
-COMPILER_STRIP_GATE(0x805230C8, &lit_4842);
-#pragma pop
-
-/* 805230CC-805230D0 0000A4 0004+00 0/1 0/0 0/0 .rodata @4843 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4843 = 270.0f;
-COMPILER_STRIP_GATE(0x805230CC, &lit_4843);
-#pragma pop
-
-/* 805230D0-805230D4 0000A8 0004+00 0/1 0/0 0/0 .rodata @4844 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4844 = 57.0f;
-COMPILER_STRIP_GATE(0x805230D0, &lit_4844);
-#pragma pop
-
-/* 805230D4-805230D8 0000AC 0004+00 0/1 0/0 0/0 .rodata @4845 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4845 = -25.0f;
-COMPILER_STRIP_GATE(0x805230D4, &lit_4845);
-#pragma pop
-
-/* 805230D8-805230DC 0000B0 0004+00 0/1 0/0 0/0 .rodata @4846 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4846 = 315.0f;
-COMPILER_STRIP_GATE(0x805230D8, &lit_4846);
-#pragma pop
-
-/* 805230DC-805230E0 0000B4 0004+00 0/1 0/0 0/0 .rodata @4847 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4847 = -18.0f;
-COMPILER_STRIP_GATE(0x805230DC, &lit_4847);
-#pragma pop
-
-/* 805230E0-805230E4 0000B8 0004+00 0/2 0/0 0/0 .rodata @4848 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4848 = 255.0f;
-COMPILER_STRIP_GATE(0x805230E0, &lit_4848);
-#pragma pop
-
-/* 805230E4-805230E8 0000BC 0004+00 0/2 0/0 0/0 .rodata @4849 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4849 = 4.0f;
-COMPILER_STRIP_GATE(0x805230E4, &lit_4849);
-#pragma pop
-
-/* 805230E8-805230EC 0000C0 0004+00 0/1 0/0 0/0 .rodata @4850 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4850 = 0x3B000000;
-COMPILER_STRIP_GATE(0x805230E8, &lit_4850);
-#pragma pop
-
-/* 805230EC-805230F0 0000C4 0004+00 0/1 0/0 0/0 .rodata @4851 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4851 = 11.0f / 10.0f;
-COMPILER_STRIP_GATE(0x805230EC, &lit_4851);
-#pragma pop
-
-/* 805230F0-805230F8 0000C8 0004+04 0/2 0/0 0/0 .rodata @4852 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4852[1 + 1 /* padding */] = {
- 2000.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x805230F0, &lit_4852);
-#pragma pop
-
-/* 805230F8-80523100 0000D0 0008+00 0/2 0/0 0/0 .rodata @4854 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4854[8] ALIGN_DECL(16) = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x805230F8, &lit_4854);
-#pragma pop
-
-/* 80523100-80523104 0000D8 0004+00 0/1 0/0 0/0 .rodata @4996 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4996 = 9.0f / 100.0f;
-COMPILER_STRIP_GATE(0x80523100, &lit_4996);
-#pragma pop
-
-/* 80523104-80523108 0000DC 0004+00 0/1 0/0 0/0 .rodata @4997 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4997 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x80523104, &lit_4997);
-#pragma pop
-
-/* 80523108-8052310C 0000E0 0004+00 0/1 0/0 0/0 .rodata @4998 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4998 = 290.0f;
-COMPILER_STRIP_GATE(0x80523108, &lit_4998);
-#pragma pop
-
-/* 8052310C-80523110 0000E4 0004+00 0/2 0/0 0/0 .rodata @4999 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4999 = 2.0f;
-COMPILER_STRIP_GATE(0x8052310C, &lit_4999);
-#pragma pop
-
-/* 80523110-80523114 0000E8 0004+00 0/1 0/0 0/0 .rodata @5000 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5000 = 525.0f;
-COMPILER_STRIP_GATE(0x80523110, &lit_5000);
-#pragma pop
-
-/* 80523114-80523118 0000EC 0004+00 0/1 0/0 0/0 .rodata @5001 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5001 = 325.0f;
-COMPILER_STRIP_GATE(0x80523114, &lit_5001);
-#pragma pop
-
-/* 80523118-8052311C 0000F0 0004+00 0/3 0/0 0/0 .rodata @5002 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5002 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80523118, &lit_5002);
-#pragma pop
-
-/* 8052311C-80523120 0000F4 0004+00 0/1 0/0 0/0 .rodata @5003 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5003 = 0x3D800000;
-COMPILER_STRIP_GATE(0x8052311C, &lit_5003);
-#pragma pop
-
-/* 80523120-80523124 0000F8 0004+00 0/1 0/0 0/0 .rodata @5004 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5004 = -1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80523120, &lit_5004);
-#pragma pop
-
-/* 80523124-80523128 0000FC 0004+00 0/2 0/0 0/0 .rodata @5005 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5005 = 10.0f;
-COMPILER_STRIP_GATE(0x80523124, &lit_5005);
-#pragma pop
-
-/* 80523128-8052312C 000100 0004+00 0/1 0/0 0/0 .rodata @5006 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5006 = 8.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80523128, &lit_5006);
-#pragma pop
-
-/* 8052312C-80523130 000104 0004+00 0/1 0/0 0/0 .rodata @5007 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5007 = 120.0f;
-COMPILER_STRIP_GATE(0x8052312C, &lit_5007);
-#pragma pop
-
-/* 80523130-80523134 000108 0004+00 2/3 0/0 0/0 .rodata @5022 */
-SECTION_RODATA static f32 const lit_5022 = 50.0f;
-COMPILER_STRIP_GATE(0x80523130, &lit_5022);
-
-/* 80523134-80523138 00010C 0004+00 0/1 0/0 0/0 .rodata @5142 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5142 = 18.0f / 11.0f;
-COMPILER_STRIP_GATE(0x80523134, &lit_5142);
-#pragma pop
-
-/* 80523138-8052313C 000110 0004+00 0/2 0/0 0/0 .rodata @5143 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5143 = 260.0f;
-COMPILER_STRIP_GATE(0x80523138, &lit_5143);
-#pragma pop
-
-/* 8052313C-80523140 000114 0004+00 0/2 0/0 0/0 .rodata @5144 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5144 = 4096.0f;
-COMPILER_STRIP_GATE(0x8052313C, &lit_5144);
-#pragma pop
-
-/* 80523140-80523144 000118 0004+00 0/1 0/0 0/0 .rodata @5145 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5145 = 0x3ECCCCCC;
-COMPILER_STRIP_GATE(0x80523140, &lit_5145);
-#pragma pop
-
-/* 80523144-80523148 00011C 0004+00 0/2 0/0 0/0 .rodata @5146 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5146 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80523144, &lit_5146);
-#pragma pop
-
-/* 80523148-8052314C 000120 0004+00 0/1 0/0 0/0 .rodata @5147 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5147 = 11.0f / 50.0f;
-COMPILER_STRIP_GATE(0x80523148, &lit_5147);
-#pragma pop
-
-/* 8052314C-80523150 000124 0004+00 0/1 0/0 0/0 .rodata @5148 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5148 = 162.0f;
-COMPILER_STRIP_GATE(0x8052314C, &lit_5148);
-#pragma pop
-
-/* 80523150-80523154 000128 0004+00 0/1 0/0 0/0 .rodata @5149 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5149 = 16.0f / 25.0f;
-COMPILER_STRIP_GATE(0x80523150, &lit_5149);
-#pragma pop
-
-/* 80523154-80523158 00012C 0004+00 0/1 0/0 0/0 .rodata @5150 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5150 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80523154, &lit_5150);
-#pragma pop
-
-/* 80523158-8052315C 000130 0004+00 0/1 0/0 0/0 .rodata @5151 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5151 = 3200.0f;
-COMPILER_STRIP_GATE(0x80523158, &lit_5151);
-#pragma pop
-
-/* 8052315C-80523160 000134 0004+00 0/1 0/0 0/0 .rodata @5261 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5261 = 900.0f;
-COMPILER_STRIP_GATE(0x8052315C, &lit_5261);
-#pragma pop
-
-/* 80523160-80523164 000138 0004+00 0/2 0/0 0/0 .rodata @5262 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5262 = 30.0f;
-COMPILER_STRIP_GATE(0x80523160, &lit_5262);
-#pragma pop
-
-/* 80523164-80523168 00013C 0004+00 1/1 0/0 0/0 .rodata @5352 */
-SECTION_RODATA static f32 const lit_5352 = 220.0f;
-COMPILER_STRIP_GATE(0x80523164, &lit_5352);
-
-/* 80523168-8052316C 000140 0004+00 0/1 0/0 0/0 .rodata @5781 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5781 = 180.0f;
-COMPILER_STRIP_GATE(0x80523168, &lit_5781);
-#pragma pop
-
-/* 8052316C-80523170 000144 0004+00 0/1 0/0 0/0 .rodata @5782 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5782 = 128.0f;
-COMPILER_STRIP_GATE(0x8052316C, &lit_5782);
-#pragma pop
-
-/* 80523170-80523174 000148 0004+00 0/1 0/0 0/0 .rodata @5783 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5783 = 150.0f;
-COMPILER_STRIP_GATE(0x80523170, &lit_5783);
-#pragma pop
-
-/* 80523174-80523178 00014C 0004+00 0/1 0/0 0/0 .rodata @5784 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5784 = 80.0f;
-COMPILER_STRIP_GATE(0x80523174, &lit_5784);
-#pragma pop
-
-/* 80523178-8052317C 000150 0004+00 1/1 0/0 0/0 .rodata @5839 */
-SECTION_RODATA static f32 const lit_5839 = 60.0f;
-COMPILER_STRIP_GATE(0x80523178, &lit_5839);
-
-/* 8052317C-80523184 000154 0008+00 0/1 0/0 0/0 .rodata @5916 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5916[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8052317C, &lit_5916);
-#pragma pop
-
-/* 80523184-80523188 00015C 0004+00 0/0 0/0 0/0 .rodata @5958 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5958 = 0xFFFFFFFF;
-COMPILER_STRIP_GATE(0x80523184, &lit_5958);
-#pragma pop
-
-/* 80523188-80523190 000160 0008+00 0/0 0/0 0/0 .rodata @5961 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5961[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80523188, &lit_5961);
-#pragma pop
-
-/* 80523190-80523194 000168 0004+00 0/0 0/0 0/0 .rodata @6080 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_6080 = 0x3D000000;
-COMPILER_STRIP_GATE(0x80523190, &lit_6080);
-#pragma pop
-
-/* 80523194-80523198 00016C 0004+00 0/0 0/0 0/0 .rodata @6081 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6081 = -2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80523194, &lit_6081);
-#pragma pop
-
-/* 80523198-8052319C 000170 0004+00 0/0 0/0 0/0 .rodata @6082 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6082 = 6.0f;
-COMPILER_STRIP_GATE(0x80523198, &lit_6082);
-#pragma pop
-
-/* 8052319C-805231A0 000174 0004+00 0/1 0/0 0/0 .rodata @6165 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6165 = 1000.0f;
-COMPILER_STRIP_GATE(0x8052319C, &lit_6165);
-#pragma pop
-
-/* 805231A0-805231A4 000178 0004+00 0/1 0/0 0/0 .rodata @6166 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6166 = 160.0f;
-COMPILER_STRIP_GATE(0x805231A0, &lit_6166);
-#pragma pop
-
-/* 805231A4-805231A8 00017C 0004+00 1/1 0/0 0/0 .rodata @6182 */
-SECTION_RODATA static f32 const lit_6182 = -1000000000.0f;
-COMPILER_STRIP_GATE(0x805231A4, &lit_6182);
-
-/* 805231A8-805231AC 000180 0004+00 1/1 0/0 0/0 .rodata @6262 */
-SECTION_RODATA static f32 const lit_6262 = 7.0f;
-COMPILER_STRIP_GATE(0x805231A8, &lit_6262);
-
-/* 805231AC-805231B0 000184 0004+00 0/1 0/0 0/0 .rodata @6337 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6337 = 31.0f;
-COMPILER_STRIP_GATE(0x805231AC, &lit_6337);
-#pragma pop
+UNK_REL_DATA
+UNK_REL_BSS;
+
+#include "d/actor/d_grass.inc"
+#include "d/actor/d_flower.inc"
/* 8051BD4C-8051BEFC 0000EC 01B0+00 1/1 0/0 0/0 .text randam_addcol_set__FPs */
static void randam_addcol_set(s16* param_0) {
@@ -839,9 +65,8 @@ static void randam_addcol_set(s16* param_0) {
*param_0 = ((x) << 5) | (var_r30 & 0x1F);
}
-
/* 8051BEFC-8051BF68 00029C 006C+00 1/1 0/0 0/0 .text createGrass__9daGrass_cFv */
-int daGrass_c::createGrass() {
+bool daGrass_c::createGrass() {
if (m_grass != NULL) {
return 1;
}
@@ -862,1282 +87,6 @@ void daGrass_c::deleteGrass() {
}
}
-/* ############################################################################################## */
-/* 80528854-80528880 -00001 002C+00 2/1 0/0 0/0 .bss None */
-extern "C" u8 struct_80528854[44];
-
-/* 80528880-80528900 -00001 0080+00 2/1 0/0 0/0 .bss None */
-extern "C" u8 struct_80528880[128];
-
-/* 80528900-80528914 -00001 0014+00 2/1 0/0 0/0 .bss None */
-extern "C" u8 struct_80528900[20];
-
-/* 80528914-80528940 -00001 002C+00 2/1 0/0 0/0 .bss None */
-extern "C" u8 struct_80528914[44];
-
-/* 80528940-805289A8 -00001 0068+00 2/1 0/0 0/0 .bss None */
-extern "C" u8 struct_80528940[104];
-
-/* 805289A8-805289D2 0010E0 002A+00 2/1 0/0 0/0 .bss l_setType5$localstatic13$create__9daGrass_cFv
- */
-extern "C" u8 data_805289A8[42];
-
-/* 805231D8-805231E4 000000 000C+00 5/5 0/0 0/0 .data cNullVec__6Z2Calc */
-SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-/* 805231E4-805231F8 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
- 0x02000201,
- /* padding */
- 0x40080000,
- 0x00000000,
- 0x3FE00000,
- 0x00000000,
-};
-#pragma pop
-
-/* 805231F8-805239F8 000020 0800+00 0/1 0/0 0/0 .data l_M_kusa05_RGBATEX */
-const u16 l_M_Hijiki00TEX__width = 31;
-const u16 l_M_Hijiki00TEX__height = 31;
-#include "assets/l_M_kusa05_RGBATEX.h" // ALIGN 32
-
-/* 805239F8-805241F8 000820 0800+00 0/1 0/0 0/0 .data l_M_Hijiki00TEX */
-const u16 l_M_kusa05_RGBATEX__width = 31;
-const u16 l_M_kusa05_RGBATEX__height = 31;
-#include "assets/l_M_Hijiki00TEX.h" // ALIGN 32
-
-/* 805241F8-805245B8 001020 03C0+00 0/1 0/0 0/0 .data l_pos */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_pos[960] = {
- 0x3F, 0x4A, 0x56, 0xEF, 0xC2, 0x20, 0x00, 0x00, 0x41, 0xFB, 0x17, 0xE4, 0x41, 0xAA, 0xBB, 0xEA,
- 0xC2, 0x20, 0x00, 0x00, 0xC1, 0xB7, 0x03, 0x7A, 0x42, 0x55, 0x8D, 0x6F, 0x43, 0x13, 0x16, 0x3F,
- 0xC0, 0xC7, 0x24, 0x07, 0x41, 0xE3, 0xC5, 0x31, 0x43, 0x13, 0x16, 0x3F, 0x42, 0x3A, 0x76, 0x90,
- 0xC1, 0xDE, 0xF6, 0x89, 0xC2, 0x20, 0x00, 0x00, 0xC1, 0x4E, 0xFE, 0x02, 0xC2, 0x28, 0x22, 0x86,
- 0x43, 0x13, 0x16, 0x3F, 0xC2, 0x07, 0x6E, 0x2C, 0x41, 0x51, 0x51, 0xEE, 0x43, 0x13, 0x16, 0x3F,
- 0xC2, 0x54, 0xE3, 0xFA, 0xC1, 0x89, 0xD7, 0x9B, 0x43, 0x13, 0x16, 0x3F, 0x42, 0x47, 0x60, 0x87,
- 0xC2, 0x59, 0x1D, 0x0E, 0x43, 0x13, 0x16, 0x3F, 0x40, 0x95, 0x9B, 0x11, 0x3F, 0x3A, 0x78, 0x8E,
- 0x43, 0x13, 0x16, 0x3F, 0x41, 0xE0, 0xD9, 0x17, 0xC1, 0xE3, 0x1B, 0x10, 0x43, 0x13, 0x16, 0x3F,
- 0x42, 0x5A, 0xDD, 0x48, 0xC1, 0xEE, 0x39, 0x52, 0xC2, 0x20, 0x00, 0x00, 0x41, 0xC4, 0x63, 0x09,
- 0x00, 0x00, 0x00, 0x00, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x03, 0x56, 0x8B,
- 0xC2, 0x20, 0x00, 0x00, 0x41, 0x08, 0xF1, 0x43, 0x42, 0x14, 0xBE, 0x15, 0x43, 0x13, 0x16, 0x3F,
- 0x42, 0x3E, 0x56, 0x15, 0x41, 0x9A, 0x86, 0xFF, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0xA7, 0xC6, 0xC3,
- 0x42, 0x6A, 0xD4, 0x7A, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0x97, 0x6D, 0x9D, 0xC1, 0x19, 0xCD, 0xF3,
- 0xC2, 0x20, 0x00, 0x00, 0xC2, 0x15, 0xFA, 0x6B, 0x40, 0xF2, 0xA2, 0x21, 0x43, 0x13, 0x16, 0x3F,
- 0xC2, 0x72, 0x6C, 0x7F, 0xC1, 0xC9, 0x8C, 0x79, 0x43, 0x13, 0x16, 0x3F, 0xC1, 0x3F, 0xB7, 0x0B,
- 0xC2, 0x12, 0xFB, 0xE4, 0x43, 0x13, 0x16, 0x3F, 0xC2, 0x46, 0xC9, 0xEB, 0xC2, 0x69, 0xB2, 0x46,
- 0x43, 0x13, 0x16, 0x3F, 0x41, 0x49, 0x97, 0x1C, 0x3E, 0xBA, 0x78, 0x8E, 0x42, 0x0E, 0x6B, 0x09,
- 0x41, 0x60, 0xD9, 0x17, 0xC1, 0xE8, 0xAA, 0x31, 0x42, 0x0E, 0x6B, 0x09, 0x42, 0x1E, 0x87, 0x66,
- 0xC1, 0xEE, 0x39, 0x52, 0xC1, 0xA0, 0x00, 0x00, 0x41, 0xC4, 0x63, 0x09, 0x00, 0x00, 0x00, 0x00,
- 0xC1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x03, 0x56, 0x8B, 0xC1, 0xA0, 0x00, 0x00,
- 0x41, 0x08, 0xF1, 0x43, 0x42, 0x0C, 0x0A, 0x50, 0x42, 0x0E, 0x6B, 0x09, 0x41, 0xE0, 0x92, 0x67,
- 0x41, 0x1A, 0x86, 0xFF, 0x42, 0x0E, 0x6B, 0x09, 0xC1, 0x27, 0xC6, 0xC3, 0x42, 0x37, 0x15, 0x83,
- 0x42, 0x0E, 0x6B, 0x09, 0xC0, 0xA5, 0xE9, 0xF7, 0xC1, 0x19, 0xCD, 0xF3, 0xC1, 0xA0, 0x00, 0x00,
- 0xC2, 0x15, 0xFA, 0x6B, 0xBF, 0x81, 0xF3, 0x8C, 0x42, 0x0E, 0x6B, 0x09, 0xC2, 0x44, 0x33, 0x76,
- 0xC1, 0x49, 0x8C, 0x7A, 0x42, 0x0E, 0x6B, 0x09, 0xC0, 0xBF, 0xB7, 0x0B, 0xC1, 0xB9, 0x6F, 0x60,
- 0x42, 0x0E, 0x6B, 0x09, 0xC2, 0x2E, 0x62, 0x2B, 0xC2, 0x30, 0x67, 0x78, 0x42, 0x0E, 0x6B, 0x09,
- 0x41, 0x94, 0x97, 0x4B, 0x3F, 0x4A, 0x56, 0xEF, 0xC1, 0xA0, 0x00, 0x00, 0x41, 0xFB, 0x17, 0xE4,
- 0x41, 0xAA, 0xBB, 0xEA, 0xC1, 0xA0, 0x00, 0x00, 0xC1, 0xB7, 0x03, 0x7A, 0x42, 0x15, 0x75, 0xB2,
- 0x41, 0xD4, 0xFE, 0xE0, 0xC1, 0x68, 0xCC, 0x7C, 0x41, 0x6A, 0x17, 0xE7, 0x41, 0xD4, 0xFE, 0xE0,
- 0x42, 0x1C, 0x01, 0x41, 0xC1, 0xDE, 0xF6, 0x89, 0xC1, 0xA0, 0x00, 0x00, 0xC1, 0x4E, 0xFE, 0x02,
- 0xC2, 0x0B, 0xCE, 0xE5, 0x41, 0xD4, 0xFE, 0xE0, 0xC1, 0xBB, 0x2D, 0xAD, 0x41, 0x89, 0xB2, 0x71,
- 0x41, 0xD4, 0xFE, 0xE0, 0xC2, 0x18, 0x32, 0xDB, 0xC1, 0x03, 0x84, 0xE4, 0x41, 0xD4, 0xFE, 0xE0,
- 0x42, 0x22, 0x76, 0x3C, 0xC2, 0x24, 0x4C, 0x29, 0x41, 0xD4, 0xFE, 0xE0, 0xC0, 0x84, 0x30, 0x7B,
- 0x41, 0x47, 0x75, 0x1E, 0x43, 0x9F, 0x77, 0x6C, 0x42, 0xE0, 0x3F, 0xC6, 0x41, 0x8A, 0x76, 0x75,
- 0xC2, 0x05, 0x2D, 0xB7, 0xC1, 0xCF, 0xDC, 0xAC, 0xC1, 0x8C, 0x34, 0xB2, 0xC2, 0x3A, 0xD2, 0x49,
- 0x40, 0xA1, 0xFC, 0xF0, 0x43, 0x07, 0x5C, 0xA5, 0x43, 0x37, 0x70, 0xEE, 0x42, 0x80, 0x8E, 0x59,
- 0x40, 0xAF, 0x73, 0x3F, 0x40, 0x5B, 0xFC, 0x44, 0x41, 0xA2, 0xC5, 0x58, 0xBE, 0x8F, 0xF1, 0x0F,
- 0x41, 0xD6, 0xD6, 0xFB, 0xC0, 0xFF, 0xAA, 0x6F, 0x42, 0x47, 0x87, 0xFB, 0x43, 0x71, 0x58, 0x6A,
- 0xC2, 0x6A, 0x7B, 0x21, 0x41, 0x79, 0x6D, 0x34, 0x42, 0x7D, 0x14, 0x66, 0x41, 0xC5, 0x98, 0xA7,
- 0xC1, 0x3D, 0x22, 0x18, 0x42, 0x94, 0x1C, 0x80, 0x41, 0xF6, 0xE0, 0x36, 0x42, 0xDF, 0xB0, 0x65,
- 0x43, 0xA2, 0xC0, 0xAF, 0xC1, 0x24, 0x3C, 0xD0, 0xC1, 0xD2, 0x1A, 0x2E, 0xC1, 0xD5, 0xC7, 0x38,
- 0xC1, 0x71, 0xB4, 0x9D, 0x40, 0x99, 0x06, 0xE6, 0xC2, 0x20, 0x88, 0x2D, 0x41, 0x9D, 0xD0, 0xD9,
- 0x41, 0xBB, 0x21, 0x46, 0x43, 0x39, 0xA7, 0xB9, 0xC3, 0x11, 0x8D, 0x20, 0x41, 0x8D, 0xE2, 0x64,
- 0x40, 0xB4, 0xD7, 0xAE, 0xC0, 0xDD, 0x14, 0x64, 0xC1, 0x02, 0x49, 0xD6, 0x41, 0xE8, 0x8D, 0x5E,
- 0x40, 0xBF, 0xC4, 0x15, 0xC1, 0xD9, 0x0C, 0xDC, 0x43, 0x68, 0x5A, 0x22, 0xC2, 0x4F, 0xE7, 0x5E,
- 0x41, 0x82, 0x49, 0x5F, 0x42, 0x5A, 0x19, 0xB6, 0xC1, 0x89, 0xC1, 0xA5, 0x41, 0xB3, 0x90, 0xED,
- 0x42, 0x82, 0x9F, 0x28, 0x41, 0x23, 0x0C, 0x02, 0xC1, 0x8D, 0x1C, 0xF7, 0x43, 0x9F, 0x77, 0x6C,
- 0xC2, 0xE5, 0xDF, 0x4C, 0xC1, 0xB3, 0xD8, 0xDD, 0xC2, 0x05, 0x2D, 0xB7, 0x41, 0xB9, 0x5E, 0x95,
- 0x41, 0x45, 0xA4, 0x94, 0xC2, 0x3A, 0xD2, 0x49, 0xC0, 0xFB, 0xF5, 0x4D, 0xC3, 0x16, 0x18, 0x11,
- 0x43, 0x39, 0xA7, 0xB9, 0xC2, 0x07, 0x6F, 0xB1, 0xC1, 0x71, 0x27, 0xE6, 0x40, 0xB4, 0xD7, 0xAE,
- 0xC1, 0xAE, 0x78, 0x69, 0xC0, 0x0A, 0xEE, 0xAA, 0x41, 0xE8, 0x8D, 0x5E, 0x40, 0x82, 0x3B, 0x99,
- 0xC2, 0x33, 0x95, 0x59, 0x43, 0x5F, 0x75, 0x5E, 0x3D, 0xF4, 0x6A, 0x1A, 0xC1, 0x9E, 0xD4, 0x98,
- 0x42, 0x7D, 0x14, 0x66, 0xC1, 0xDD, 0xD4, 0x93, 0x40, 0xF1, 0xCC, 0x38, 0x42, 0x94, 0x1C, 0x80,
- 0xC2, 0x07, 0x8E, 0x11, 0xC2, 0xE0, 0xEF, 0x0C, 0x43, 0xA0, 0x12, 0xC6, 0xC1, 0x91, 0xCE, 0x9E,
- 0x41, 0x9D, 0x73, 0x77, 0xC2, 0x00, 0x52, 0xDD, 0x41, 0xB1, 0x90, 0xD0, 0xBF, 0xA5, 0x21, 0x04,
- 0xC2, 0x35, 0xF7, 0x70, 0xC1, 0x9B, 0xE3, 0x38, 0xC2, 0x84, 0xB6, 0xB8, 0x43, 0x43, 0x0C, 0x16,
- 0x42, 0xFA, 0x80, 0xC7, 0xC1, 0xCC, 0x7C, 0xFD, 0x41, 0x7A, 0x99, 0xDC, 0x40, 0x0F, 0xBE, 0x34,
- 0x40, 0x31, 0x97, 0xA6, 0x42, 0x1C, 0x52, 0x30, 0xC0, 0x61, 0x26, 0x39, 0x42, 0x41, 0xBD, 0x21,
- 0x43, 0x72, 0x8F, 0x21, 0x42, 0x23, 0xF4, 0x30, 0xC1, 0xE5, 0xEB, 0x07, 0x42, 0x80, 0xF7, 0x9F,
- 0x40, 0xD8, 0x8F, 0xF3, 0xC1, 0xDC, 0xC3, 0xBB, 0x42, 0x96, 0x89, 0xEC, 0xC1, 0xAA, 0x6C, 0x09,
-};
-#pragma pop
-
-/* 805245B8-805245C4 0013E0 000C+00 0/1 0/0 0/0 .data l_normal */
-#pragma push
-#pragma force_active on
-SECTION_DATA static Vec l_normal = {0.0f, 1.0f, 0.0f};
-#pragma pop
-
-/* 805245C4-805245D8 0013EC 0014+00 0/1 0/0 0/0 .data l_color */
-#pragma push
-#pragma force_active on
-SECTION_DATA static GXColor l_color[] = {
- {0xFF, 0xFF, 0xFF, 0x00}, {0xFF, 0xFF, 0xFF, 0x80}, {0xFF, 0xFF, 0xFF, 0x79},
- {0xFF, 0xFF, 0xFF, 0x73}, {0xFF, 0xFF, 0xFF, 0xFF},
-};
-#pragma pop
-
-/* 805245D8-80524678 001400 00A0+00 0/1 0/0 0/0 .data l_texCoord */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_texCoord[160] = {
- 0x3F, 0x86, 0xF6, 0x27, 0x3F, 0x9C, 0x00, 0x00, 0x40, 0x03, 0x7B, 0x14, 0x3F, 0x9C, 0x00, 0x00,
- 0x40, 0x03, 0x7B, 0x14, 0x3D, 0x00, 0x00, 0x00, 0x3F, 0x86, 0xF6, 0x27, 0x3D, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00,
- 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00,
- 0x3F, 0x80, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, 0xBF, 0x80, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA,
- 0x3F, 0x80, 0x00, 0x00, 0x3E, 0xC4, 0xF3, 0xBA, 0x40, 0x03, 0x7B, 0x14, 0x3E, 0xC4, 0xF3, 0xBA,
- 0x3F, 0x86, 0xF6, 0x27, 0x3E, 0xC4, 0xF3, 0xBA, 0x3E, 0xF0, 0x00, 0x00, 0xBF, 0xDC, 0x00, 0x00,
- 0x3F, 0x94, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00, 0xBD, 0xC0, 0x00, 0x00, 0x3F, 0x9C, 0x00, 0x00,
- 0x3F, 0x94, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBD, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80524678-80524758 0014A0 00CB+15 0/1 0/0 0/0 .data l_M_Kusa_9qDL */
-#include "assets/l_M_Kusa_9qDL.h" // ALIGN 32
-
-/* 80524758-80524838 001580 00CB+15 0/1 0/0 0/0 .data l_M_Kusa_9q_cDL */
-#include "assets/l_M_Kusa_9q_cDL.h" // ALIGN 32
-
-/* 80524838-80524918 001660 00D4+0C 0/1 0/0 0/0 .data l_M_TenGusaDL */
-#include "assets/l_M_TenGusaDL.h" // ALIGN 32
-
-/* 80524918-805249D8 001740 00A8+18 0/2 0/0 0/0 .data l_Tengusa_matDL */
-#include "assets/l_Tengusa_matDL.h"
-l_Tengusa_matDL(l_M_Hijiki00TEX)
-
-/* 805249D8-80524A98 001800 00A8+18 0/2 0/0 0/0 .data l_kusa9q_matDL */
-#include "assets/l_kusa9q_matDL.h"
-l_kusa9q_matDL(l_M_kusa05_RGBATEX)
-
-/* 80524A98-80524B40 0018C0 00A8+00 0/2 0/0 0/0 .data l_kusa9q_l4_matDL */
-#include "assets/l_kusa9q_l4_matDL.h"
-l_kusa9q_l4_matDL(l_M_kusa05_RGBATEX)
-
-/* 80524B40-80524B4C -00001 000C+00 0/1 0/0 0/0 .data @4620 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4620[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)deleteRoom__15dGrass_packet_cFi,
-};
-#pragma pop
-
-/* 80524B4C-80524B74 001974 0028+00 0/1 0/0 0/0 .data l_vtxDescList$4654 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_vtxDescList[40] = {
- 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80524B74-80524BD8 00199C 0050+14 0/1 0/0 0/0 .data l_vtxAttrFmtList$4655 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_vtxAttrFmtList[80] = {
- 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80524BD8-805253D8 001A00 0800+00 0/1 0/0 0/0 .data l_J_Ohana00_64TEX */
-const u16 l_J_Ohana00_64TEX__width = 63;
-const u16 l_J_Ohana00_64TEX__height = 63;
-#include "assets/l_J_Ohana00_64TEX.h" // ALIGN 32
-
-/* 805253D8-8052569C 002200 02C4+00 0/1 0/0 0/0 .data l_flowerPos */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerPos[708] = {
- 0xC0, 0x8C, 0x2C, 0xF7, 0x42, 0x05, 0xBC, 0xDF, 0xC1, 0xA1, 0x00, 0x70, 0xBF, 0x50, 0x51, 0xB9,
- 0x42, 0x12, 0x58, 0xAD, 0xC0, 0xDE, 0xCE, 0x40, 0xC1, 0x04, 0x67, 0x23, 0x41, 0xE5, 0x87, 0x25,
- 0xC1, 0x1B, 0xF3, 0xF8, 0xC1, 0x8F, 0x17, 0x3E, 0x42, 0x05, 0x7F, 0xC6, 0xC1, 0x83, 0x9B, 0xFC,
- 0xC1, 0x65, 0x1D, 0x1B, 0x42, 0x12, 0x1B, 0x94, 0xC0, 0x52, 0x78, 0xE2, 0x41, 0x4A, 0xF2, 0x65,
- 0x41, 0xB8, 0x6D, 0xEC, 0xC1, 0x05, 0xB8, 0xB9, 0x41, 0x59, 0xA0, 0x35, 0x41, 0xC8, 0x8E, 0xEA,
- 0x3F, 0xD7, 0x00, 0xBD, 0x40, 0xFD, 0x20, 0x08, 0x41, 0xA5, 0x7C, 0x50, 0xC0, 0x1A, 0x58, 0x21,
- 0x40, 0x45, 0x4A, 0xF1, 0x41, 0xD5, 0xC3, 0x79, 0xC1, 0x03, 0x76, 0xC0, 0x40, 0x80, 0x01, 0x19,
- 0x41, 0xE5, 0xE4, 0x79, 0x3F, 0xE9, 0x10, 0x80, 0xC0, 0xC5, 0xE3, 0xA8, 0x41, 0x8D, 0x10, 0xEF,
- 0x41, 0x5D, 0x5E, 0x8F, 0xC1, 0x83, 0x4F, 0x3A, 0x41, 0x95, 0x37, 0x4A, 0x41, 0x13, 0xAB, 0xB0,
- 0xC1, 0x0B, 0x2F, 0x13, 0x41, 0x82, 0x79, 0x28, 0x40, 0xBC, 0x27, 0x0F, 0xBF, 0xE5, 0x81, 0x9D,
- 0x41, 0xBD, 0xAD, 0xB1, 0x40, 0xAD, 0xAF, 0x4F, 0xC1, 0x40, 0x5C, 0xAB, 0x41, 0xC5, 0xD4, 0x0B,
- 0x3F, 0x52, 0x4A, 0x06, 0xC1, 0x92, 0x9C, 0x90, 0x41, 0x6B, 0x5E, 0x96, 0xC1, 0x70, 0xB5, 0x34,
- 0x40, 0x09, 0xC7, 0xFC, 0x41, 0xA1, 0xD1, 0xA9, 0xC1, 0x99, 0xED, 0xD6, 0x40, 0x93, 0x3C, 0x3E,
- 0x41, 0x91, 0x1A, 0x4B, 0xC0, 0xFD, 0x15, 0x96, 0xC1, 0x7E, 0x0D, 0x00, 0x41, 0x49, 0xEF, 0xDC,
- 0xC0, 0x6D, 0x90, 0xAC, 0x40, 0x51, 0xDE, 0xF0, 0x40, 0x89, 0x1C, 0x93, 0xBE, 0xF1, 0xC4, 0x11,
- 0xC1, 0x70, 0xB0, 0x8B, 0x40, 0xFE, 0x20, 0x45, 0x41, 0x30, 0xC6, 0x50, 0xC1, 0xA1, 0x7C, 0x11,
- 0x41, 0x24, 0xCB, 0xE5, 0x3F, 0xE9, 0xDE, 0xBE, 0xBF, 0xEE, 0x7E, 0xD8, 0x40, 0xD4, 0x94, 0x18,
- 0xC1, 0x1B, 0x18, 0xC1, 0xC1, 0x84, 0x20, 0x71, 0x40, 0xF3, 0x8A, 0x69, 0x40, 0x98, 0xEA, 0x1F,
- 0x40, 0x97, 0xB4, 0x48, 0x41, 0x51, 0xF6, 0x25, 0x40, 0xA6, 0xAE, 0x30, 0x40, 0x5F, 0xA7, 0xB1,
- 0x41, 0x89, 0x17, 0x78, 0x41, 0x75, 0xAC, 0x70, 0xC1, 0x8E, 0x18, 0x8E, 0x41, 0x39, 0xFE, 0x02,
- 0x41, 0x6E, 0xCA, 0x67, 0x40, 0x9E, 0x6A, 0x68, 0x41, 0x10, 0x81, 0x11, 0x41, 0x1B, 0x6F, 0x7F,
- 0x40, 0xAD, 0x4B, 0x29, 0x41, 0x3B, 0x3A, 0x41, 0xC1, 0x41, 0x4C, 0x98, 0x41, 0x7E, 0x28, 0x15,
- 0x41, 0x6F, 0x56, 0x2E, 0xC1, 0x37, 0x57, 0x88, 0x41, 0x76, 0xB7, 0xB5, 0x41, 0x44, 0x9C, 0xFE,
- 0x41, 0x25, 0x64, 0x90, 0x40, 0xE2, 0xFC, 0xE5, 0x41, 0xA7, 0xF4, 0x9C, 0xBF, 0xE7, 0xAE, 0x14,
- 0x41, 0x0A, 0x36, 0x26, 0x41, 0xA4, 0x39, 0xDE, 0xC0, 0x24, 0xAB, 0x93, 0xBB, 0xF0, 0x06, 0x8E,
- 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x16, 0x81, 0x13, 0xBD, 0x88, 0xA2, 0x66, 0xC1, 0x20, 0x00, 0x00,
- 0x3F, 0x1D, 0xDC, 0x0E, 0x40, 0xF1, 0x74, 0x95, 0x41, 0xA6, 0x44, 0xA9, 0xC0, 0x36, 0xA5, 0x59,
- 0x41, 0x02, 0xFB, 0x9C, 0x41, 0xA5, 0xE9, 0xDA, 0xBF, 0xC3, 0xB5, 0x4A, 0xBC, 0xD0, 0x6B, 0xBE,
- 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x20, 0x46, 0x20, 0xBD, 0x47, 0x89, 0x61, 0xC1, 0x1F, 0xFF, 0xFF,
- 0x3F, 0x14, 0x35, 0xDF, 0xC0, 0xFA, 0x9D, 0xC7, 0x41, 0x85, 0xC1, 0xB7, 0x40, 0xAA, 0xE7, 0x6F,
- 0xC1, 0x10, 0x29, 0xEB, 0x41, 0x80, 0x9F, 0x20, 0x40, 0xD0, 0x7A, 0xD1, 0x3E, 0xC2, 0x2B, 0x7C,
- 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x29, 0xC0, 0x01, 0x3F, 0x38, 0x85, 0x7F, 0xC1, 0x1F, 0xFF, 0xFF,
- 0x3E, 0xAF, 0xF4, 0x56, 0xC0, 0xFD, 0x71, 0xD8, 0x41, 0x83, 0xAB, 0x96, 0x40, 0xCE, 0xD3, 0xB1,
- 0xC1, 0x0E, 0xBE, 0xA4, 0x41, 0x82, 0xB5, 0x43, 0x40, 0xAC, 0x90, 0x1F, 0x3E, 0xD9, 0x21, 0x68,
- 0xC1, 0x20, 0x00, 0x00, 0x3E, 0xBF, 0x6C, 0x48, 0x3F, 0x2D, 0xCF, 0xBC, 0xC1, 0x20, 0x00, 0x00,
- 0x3F, 0x21, 0x31, 0x44, 0xC0, 0xF8, 0xE0, 0x22, 0x41, 0xE8, 0x4B, 0x4B, 0xC1, 0x14, 0x36, 0x1F,
- 0xC1, 0x0C, 0x7F, 0xA6, 0x41, 0xE4, 0x93, 0x45, 0xC1, 0x24, 0x12, 0xDA, 0xC0, 0x01, 0x25, 0x39,
- 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB5, 0xEB, 0x3A, 0xBF, 0xF6, 0x43, 0x3D, 0xC1, 0x1F, 0xFF, 0xFE,
- 0x3F, 0xC2, 0x77, 0x2D, 0xC1, 0x0B, 0x64, 0x82, 0x41, 0xE6, 0x84, 0x99, 0xC1, 0x15, 0x34, 0xD0,
- 0xC0, 0xFB, 0x14, 0x70, 0x41, 0xE6, 0x5A, 0x05, 0xC1, 0x23, 0x13, 0xB7, 0xBF, 0xF7, 0x6B, 0x09,
- 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB7, 0x60, 0x63, 0xC0, 0x00, 0x83, 0x99, 0xC1, 0x20, 0x00, 0x01,
- 0x3F, 0xC1, 0x1A, 0x97, 0xC0, 0xCA, 0x0C, 0x4E, 0x41, 0x9A, 0x38, 0x78, 0xC0, 0xD2, 0x29, 0xBB,
- 0xC0, 0xE2, 0xE4, 0x1F, 0x41, 0x97, 0x6E, 0x73, 0xC0, 0xEA, 0xBD, 0x92, 0xC0, 0xE1, 0x27, 0x37,
- 0x41, 0x98, 0xE3, 0x73, 0xC0, 0xD3, 0xBD, 0x8E, 0xC0, 0xCB, 0xC6, 0x04, 0x41, 0x98, 0xC3, 0x84,
- 0xC0, 0xE9, 0x27, 0x8D,
-};
-#pragma pop
-
-/* 8052569C-80525750 0024C4 00B4+00 0/1 0/0 0/0 .data l_flowerNormal */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerNormal[180] = {
- 0x3C, 0x8D, 0x2C, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x46, 0xF7, 0xA1, 0x3C, 0x76, 0x83,
- 0x7F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x12, 0x5F, 0xE9, 0xBB, 0xE5, 0xA3, 0x5D, 0x3F, 0x7F,
- 0xF5, 0xF9, 0x3C, 0x83, 0x57, 0xA3, 0x3B, 0xF9, 0xB1, 0x31, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C,
- 0x81, 0x0A, 0x57, 0xBC, 0x80, 0x86, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xE2, 0xEF,
- 0xBC, 0x43, 0xEB, 0x7D, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x4E, 0x3C, 0x3C, 0x4B, 0x2D,
- 0x90, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x4A, 0x42, 0xAF, 0x3C, 0x4F, 0x0B, 0x6B, 0x3F, 0x7F,
- 0xF5, 0xF9, 0xBC, 0x46, 0x4B, 0xA9, 0x3C, 0x4B, 0xF2, 0xB2, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C,
- 0x49, 0x7D, 0x8D, 0x3C, 0x8D, 0x2A, 0x20, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x47, 0x5C, 0x4B,
- 0xBC, 0x80, 0x84, 0x1F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xF3, 0xB6, 0xBC, 0x43, 0xFC,
- 0x44, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x3D, 0x75, 0x3C, 0x4B, 0x3E, 0x57, 0x3F, 0x7F,
- 0xF5, 0xF9, 0xBC, 0x4A, 0x31, 0xE8, 0x3C, 0x4F, 0x07, 0x3A, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC,
- 0x46, 0x54, 0x0D, 0x3C, 0x4B, 0xEE, 0x80, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x49, 0x81, 0xBF,
-};
-#pragma pop
-
-/* 80525750-80525758 002578 0008+00 0/1 0/0 0/0 .data l_flowerColor */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerColor[8] = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xB2, 0xB2, 0xFF,
-};
-#pragma pop
-
-/* 80525758-80525898 002580 0138+08 0/1 0/0 0/0 .data l_flowerTexCoord */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerTexCoord[] = {
- 0x40, 0x40, 0xD0, 0xEA, 0x3D, 0x69, 0x70, 0x72, 0x40, 0x7D, 0xD8, 0x30, 0x3F, 0x81, 0x3D, 0xC9,
- 0x40, 0x40, 0xCE, 0x85, 0x3F, 0x81, 0x3D, 0xC9, 0x40, 0x01, 0xDD, 0x33, 0x3F, 0x81, 0x3D, 0xC9,
- 0x40, 0x40, 0xD0, 0xEA, 0x3F, 0xF9, 0x46, 0xD4, 0x40, 0x00, 0xCD, 0xB8, 0xBF, 0x7F, 0xD4, 0x39,
- 0x40, 0x40, 0xC2, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0xC8, 0x3F, 0x3E, 0xFF, 0xD4, 0x39,
- 0x3F, 0xC1, 0xA6, 0x61, 0xBE, 0xFF, 0xD4, 0x39, 0x40, 0x00, 0xCD, 0xB8, 0x3F, 0x7F, 0xD4, 0x39,
- 0x3F, 0x81, 0xB1, 0x53, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x49, 0x75, 0x29, 0xBD, 0xFA, 0x4F, 0x87,
- 0x3C, 0x54, 0x88, 0x83, 0xBD, 0xFA, 0x4F, 0x87, 0x3C, 0xF8, 0x85, 0x4D, 0xBF, 0x27, 0x85, 0x40,
- 0x3D, 0x01, 0x8D, 0x69, 0xBF, 0x27, 0x98, 0x20, 0xBD, 0x44, 0x30, 0xB1, 0xBD, 0xFC, 0xC3, 0xA0,
- 0xBB, 0xEE, 0x06, 0xD9, 0xBD, 0xFC, 0xC3, 0xA0, 0xBC, 0xF4, 0x1F, 0x21, 0xBF, 0x27, 0x90, 0xA8,
- 0xBD, 0x00, 0x00, 0x00, 0xBF, 0x27, 0x92, 0x7D, 0xBE, 0x03, 0x5A, 0x86, 0xBD, 0x67, 0x4C, 0x0A,
- 0xBE, 0x03, 0x5A, 0x86, 0xBC, 0x82, 0xCD, 0x3A, 0xBF, 0x25, 0x30, 0x59, 0xBD, 0x06, 0x8E, 0xC5,
- 0xBF, 0x25, 0xFA, 0x66, 0xBD, 0x2F, 0x2B, 0x67, 0xBE, 0x03, 0x59, 0x79, 0x3D, 0x40, 0x8E, 0x9B,
- 0xBE, 0x03, 0x59, 0x79, 0x3B, 0xAF, 0xE6, 0x0C, 0xBF, 0x25, 0xB3, 0x4A, 0x3C, 0x9E, 0x81, 0xCB,
- 0xBF, 0x25, 0xD9, 0x3C, 0x3C, 0xF1, 0xE6, 0xCD, 0x3E, 0x1C, 0xD0, 0x78, 0x3D, 0x36, 0xDC, 0xA0,
- 0x3E, 0x1C, 0xD0, 0x78, 0x3B, 0x48, 0x68, 0xBA, 0x3F, 0x59, 0x32, 0x61, 0x3C, 0xDD, 0x5F, 0x57,
- 0x3F, 0x59, 0x61, 0xF6, 0x3C, 0xFB, 0x13, 0x9D, 0x3E, 0x1C, 0xD0, 0x78, 0xBB, 0xEB, 0xED, 0xFA,
- 0x3E, 0x1C, 0xD0, 0x78, 0xBD, 0x47, 0xD3, 0xD4, 0x3F, 0x59, 0x49, 0x41, 0xBC, 0xCB, 0x3E, 0x57,
- 0x3F, 0x59, 0x4B, 0x6A, 0xBC, 0xAD, 0x94, 0x8E, 0x3E, 0xA7, 0x7F, 0x28, 0x3D, 0x28, 0x87, 0xA9,
- 0x3E, 0xA7, 0x67, 0x4D, 0x3C, 0x14, 0x46, 0x74, 0x3E, 0xA7, 0x73, 0xE2, 0xBC, 0x2F, 0x46, 0xAA,
- 0x3E, 0xA7, 0x72, 0xD6, 0xBD, 0x2F, 0x46, 0xAA};
-#pragma pop
-
-/* 80525898-805259F8 0026C0 0150+10 0/1 0/0 0/0 .data l_J_hana00DL */
-#include "assets/l_J_hana00DL.h" // ALIGN 32
-
-/* 805259F8-80525AD8 002820 00DE+02 0/1 0/0 0/0 .data l_J_hana00_cDL */
-#include "assets/l_J_hana00_cDL.h" // ALIGN 32
-
-/* 80525AD8-80525B78 002900 0099+07 0/2 0/0 0/0 .data l_matDL */
-#include "assets/l_matDL__d_a_grass.h"
-l_matDL__d_a_grass(l_J_Ohana00_64TEX)
-
-/* 80525B78-80525C18 0029A0 0099+07 0/2 0/0 0/0 .data l_matLight4DL */
-#include "assets/l_matLight4DL.h"
-l_matLight4DL(l_J_Ohana00_64TEX)
-
-/* 80525C18-80526C18 002A40 1000+00 0/1 0/0 0/0 .data l_J_Ohana01_64128_0419TEX */
-const u16 l_J_Ohana01_64128_0419TEX__width = 63;
-const u16 l_J_Ohana01_64128_0419TEX__height = 127;
-#include "assets/l_J_Ohana01_64128_0419TEX.h" // ALIGN 32
-
-/* 80526C18-805270E0 003A40 04C8+00 0/1 0/0 0/0 .data l_flowerPos2 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerPos2[1224] = {
- 0x40, 0x25, 0x9F, 0x34, 0x42, 0xC2, 0x95, 0x72, 0xC1, 0x22, 0x34, 0x78, 0x41, 0x4D, 0xF9, 0x63,
- 0x43, 0x09, 0x35, 0x0D, 0x40, 0x97, 0xD7, 0x54, 0x41, 0x76, 0x80, 0x55, 0x42, 0xBA, 0x1C, 0xB4,
- 0x41, 0x91, 0x3E, 0x0D, 0xC0, 0x99, 0x8D, 0x47, 0x42, 0xC2, 0x8D, 0xF5, 0x41, 0x12, 0xA1, 0x12,
- 0x41, 0xB9, 0x1A, 0xFF, 0x42, 0xBA, 0x37, 0xE3, 0xBF, 0xBD, 0xD2, 0xA6, 0x41, 0x4D, 0xF9, 0x34,
- 0x43, 0x09, 0x35, 0x0F, 0x40, 0x97, 0xD6, 0xB6, 0xC1, 0x07, 0x14, 0xD0, 0x42, 0xCC, 0x9E, 0xFD,
- 0xC1, 0x42, 0x39, 0x8F, 0xC0, 0xC1, 0xA4, 0x94, 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0xE2,
- 0x40, 0x32, 0xFE, 0x8B, 0x42, 0xC7, 0x29, 0xAC, 0x41, 0x9E, 0x0C, 0xC8, 0xC0, 0xC1, 0xA4, 0xE1,
- 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0x8E, 0xC1, 0x95, 0xAF, 0x93, 0x42, 0xC4, 0x31, 0xF1,
- 0x41, 0x1A, 0xB9, 0x87, 0x41, 0x51, 0x09, 0xAB, 0x42, 0xCF, 0x96, 0xC1, 0xC0, 0x03, 0x66, 0x1F,
- 0xC1, 0x01, 0x95, 0x6E, 0x42, 0xB3, 0x6A, 0x42, 0xC1, 0x8B, 0x4C, 0x1D, 0xC0, 0xD4, 0xA5, 0x9C,
- 0x42, 0xFE, 0x7B, 0x90, 0xC1, 0x0A, 0x4F, 0x99, 0x40, 0x1C, 0xE1, 0x15, 0x42, 0xC2, 0x2D, 0x47,
- 0x41, 0x06, 0xA6, 0x41, 0xC1, 0x7B, 0x73, 0x6E, 0x42, 0xB8, 0x6D, 0x93, 0x3F, 0x5A, 0xCC, 0xA3,
- 0x41, 0x21, 0x15, 0xF4, 0x42, 0xBD, 0x29, 0xFE, 0xC1, 0x1D, 0x9F, 0x3A, 0xC0, 0xD4, 0xA5, 0xEC,
- 0x42, 0xFE, 0x7B, 0x93, 0xC1, 0x0A, 0x4F, 0xE9, 0x41, 0x06, 0x70, 0xFC, 0x42, 0xC4, 0x24, 0x9D,
- 0x40, 0x7C, 0x3E, 0xE6, 0x41, 0x24, 0x1D, 0x91, 0x42, 0xC3, 0xD6, 0x8C, 0x40, 0x7C, 0x3E, 0xE6,
- 0x3F, 0xEA, 0x26, 0xBB, 0xC1, 0x20, 0x00, 0x00, 0x3E, 0x25, 0x61, 0x91, 0xBF, 0x8B, 0x0E, 0xC3,
- 0xC1, 0x20, 0x00, 0x01, 0x3E, 0x1C, 0xD6, 0x80, 0x41, 0x15, 0x52, 0x2B, 0x42, 0xC4, 0x0E, 0x24,
- 0x40, 0x40, 0xBB, 0xC3, 0x41, 0x15, 0x3C, 0x61, 0x42, 0xC3, 0xED, 0x00, 0x40, 0x9B, 0xE1, 0x05,
- 0x3E, 0xBE, 0xC3, 0xFC, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xCE, 0x28, 0xBB, 0x3E, 0xBE, 0xBA, 0x6B,
- 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0xA5, 0xFF, 0xCE, 0xC0, 0x6B, 0x3A, 0x75, 0x42, 0xC1, 0x3D, 0x51,
- 0xC0, 0xA0, 0xCD, 0x8E, 0xBF, 0xDC, 0xEC, 0x63, 0x42, 0xC1, 0x54, 0xB6, 0xC0, 0xA0, 0x6C, 0x42,
- 0x3F, 0x88, 0xCC, 0x2D, 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0x24, 0x6B, 0xBE, 0xBF, 0xC0, 0xE6, 0x08,
- 0xC1, 0x20, 0x00, 0x01, 0xBF, 0x29, 0x08, 0x81, 0xC0, 0x2C, 0x6A, 0x66, 0x42, 0xC1, 0x36, 0x4D,
- 0xC0, 0xBF, 0xC9, 0xD6, 0xC0, 0x2D, 0x46, 0x30, 0x42, 0xC1, 0x5B, 0xB5, 0xC0, 0x81, 0x6F, 0xF4,
- 0xBE, 0x68, 0x6B, 0xDF, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x23, 0x29, 0xD4, 0xBE, 0x58, 0xD0, 0xCC,
- 0xC1, 0x20, 0x00, 0x01, 0xBF, 0xF8, 0x39, 0x71, 0xC0, 0x79, 0x82, 0x0E, 0x42, 0xD0, 0x8E, 0xE6,
- 0x40, 0x7C, 0x3E, 0xE6, 0xC0, 0x00, 0x2E, 0x23, 0x42, 0xD0, 0xA5, 0xB2, 0x40, 0x7C, 0x3E, 0xE6,
- 0x3F, 0x2F, 0x08, 0x57, 0xC1, 0x1F, 0x8E, 0x06, 0xBB, 0xAE, 0xF2, 0xC7, 0xBF, 0xD7, 0xC7, 0x1D,
- 0xC1, 0x20, 0x71, 0xFC, 0xBB, 0xAE, 0xF2, 0xC7, 0xC0, 0x3C, 0xE3, 0xDE, 0x42, 0xD0, 0xAB, 0x13,
- 0x40, 0x3F, 0x99, 0x18, 0xC0, 0x3C, 0xCC, 0x57, 0x42, 0xD0, 0x89, 0x86, 0x40, 0x9C, 0x72, 0x58,
- 0xBF, 0x00, 0x08, 0x31, 0xC1, 0x20, 0xA7, 0xBD, 0x3F, 0x96, 0xEC, 0x4A, 0xBF, 0x00, 0x7D, 0xB3,
- 0xC1, 0x1F, 0x58, 0x45, 0xBF, 0x98, 0x4A, 0x30, 0x40, 0xBD, 0x8F, 0x9B, 0x42, 0x63, 0xF3, 0x30,
- 0x40, 0x23, 0x56, 0x11, 0x41, 0x65, 0x2F, 0xC6, 0x42, 0xBB, 0x00, 0xB1, 0xC1, 0x8C, 0x12, 0x7A,
- 0x41, 0xCA, 0x62, 0xA7, 0x42, 0xBB, 0x00, 0xB0, 0x41, 0x28, 0xB1, 0x15, 0xC1, 0x5B, 0xA6, 0x8E,
- 0x42, 0xBB, 0x00, 0xAE, 0xC0, 0xD1, 0x1E, 0x86, 0xC0, 0x30, 0x44, 0xBF, 0x42, 0xBB, 0x00, 0xAD,
- 0x41, 0xAC, 0x23, 0x4E, 0xBF, 0xAD, 0xFA, 0x8F, 0x41, 0xB0, 0x93, 0x1B, 0x3F, 0x85, 0x39, 0x9F,
- 0x41, 0x9F, 0x2B, 0xD3, 0x42, 0x90, 0x9F, 0x64, 0xC1, 0x8A, 0x85, 0x5E, 0x41, 0x7B, 0x1C, 0x3E,
- 0x42, 0x90, 0x9F, 0x63, 0x41, 0xA7, 0xF3, 0x96, 0xC1, 0x13, 0xCB, 0x32, 0x42, 0x90, 0x9F, 0x65,
- 0xC1, 0x92, 0x20, 0x52, 0xC1, 0x7F, 0xDB, 0xED, 0x42, 0x90, 0x9F, 0x65, 0x41, 0x46, 0xD3, 0x80,
- 0xBF, 0x24, 0xCA, 0xC5, 0x42, 0x44, 0xF1, 0x22, 0xC0, 0x3B, 0xEA, 0xC4, 0xC0, 0x35, 0x33, 0xCE,
- 0x42, 0x44, 0xDE, 0xC0, 0xC0, 0x3C, 0xDA, 0x27, 0xBF, 0xDF, 0x4A, 0x77, 0x42, 0x44, 0xF6, 0xA3,
- 0xBF, 0xEC, 0xBC, 0x8C, 0xBF, 0xDD, 0x8A, 0x1A, 0x42, 0x44, 0xD9, 0x3D, 0xC0, 0x81, 0x30, 0x55,
- 0xBF, 0x4A, 0x36, 0xF4, 0x42, 0x56, 0x1A, 0x91, 0x40, 0x0B, 0xFC, 0x11, 0xC0, 0x3B, 0xC6, 0x93,
- 0x42, 0x55, 0xE6, 0xFE, 0x40, 0x0B, 0xFC, 0x0D, 0xBF, 0xEE, 0x39, 0xBD, 0x42, 0x55, 0xDA, 0xD7,
- 0x40, 0x50, 0x93, 0xC4, 0xBF, 0xEE, 0x6E, 0xEB, 0x42, 0x56, 0x26, 0xB9, 0x3F, 0x8E, 0xC8, 0xB4,
- 0x40, 0xBF, 0xC7, 0x22, 0x42, 0x8E, 0x14, 0xBA, 0x40, 0x3F, 0x9A, 0x4E, 0x41, 0x03, 0x00, 0x18,
- 0x42, 0x8D, 0xE7, 0xA4, 0x40, 0x3F, 0xCE, 0xF6, 0x40, 0xE2, 0xF3, 0x95, 0x42, 0x8E, 0x07, 0xC0,
- 0x3F, 0xF2, 0xF4, 0xA5, 0x40, 0xE2, 0xDA, 0xA3, 0x42, 0x8D, 0xF4, 0x9D, 0x40, 0x82, 0xF4, 0x90,
- 0xBE, 0x9C, 0x1E, 0xDE, 0x42, 0x00, 0x1D, 0x6A, 0xC0, 0xD3, 0x0E, 0xA8, 0x41, 0x2D, 0xDB, 0x19,
- 0x42, 0x00, 0x1D, 0x68, 0xC0, 0xC8, 0xE4, 0xE0, 0x40, 0x17, 0x47, 0xAA, 0x41, 0x99, 0xE3, 0xCB,
- 0x3F, 0x88, 0x3F, 0x79, 0x41, 0x12, 0xF6, 0x8B, 0x42, 0x00, 0x1D, 0x67, 0x41, 0x10, 0xBB, 0x1F,
- 0xC0, 0x40, 0x6B, 0x66, 0x42, 0x00, 0x1D, 0x68, 0x40, 0xB5, 0xCE, 0x40, 0x40, 0xB0, 0x3B, 0xDA,
- 0x42, 0x08, 0x7F, 0x60, 0x40, 0xB3, 0xDC, 0xD7, 0xC0, 0x7B, 0x9C, 0x13, 0x42, 0x08, 0x7F, 0x5F,
- 0x41, 0x39, 0xAA, 0x67, 0xBF, 0x7D, 0x10, 0x1B, 0x41, 0xB4, 0xF6, 0xEB, 0x3F, 0x43, 0x3A, 0x04,
- 0xC1, 0x31, 0xB5, 0x84, 0x42, 0x08, 0x7F, 0x5E, 0xC0, 0x02, 0x89, 0x9C, 0x3F, 0x61, 0xC2, 0x2B,
- 0x42, 0x08, 0x7F, 0x5F, 0xC0, 0xC2, 0x2D, 0xCD, 0xC0, 0xB7, 0xA5, 0x40, 0x42, 0x03, 0xBD, 0x64,
- 0xC0, 0xF9, 0x2E, 0x71, 0x40, 0x97, 0xF6, 0x62, 0x42, 0x03, 0xBD, 0x63, 0xC1, 0x3A, 0x58, 0x92,
- 0xBE, 0xD3, 0x65, 0xED, 0x41, 0x99, 0xE3, 0xCC, 0xBF, 0xD5, 0x9D, 0xED, 0x41, 0x0E, 0x33, 0x4E,
- 0x42, 0x03, 0xBD, 0x61, 0x40, 0x4C, 0xFD, 0x0D, 0xBE, 0x25, 0xBF, 0xF0, 0x42, 0x09, 0x9F, 0xF5,
- 0xC0, 0x05, 0xBD, 0x6F, 0x3F, 0x87, 0x66, 0x17, 0xC1, 0x1E, 0x5D, 0x2E, 0xBF, 0x22, 0xBD, 0x5E,
- 0xBF, 0xBE, 0xED, 0x1C, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0x27, 0x4E, 0x12, 0xC0, 0x0C, 0x84, 0x34,
- 0x42, 0x09, 0x96, 0x95, 0xC0, 0x06, 0xA0, 0xBA, 0xBF, 0x97, 0xAF, 0xEA, 0x42, 0x09, 0xA2, 0xC4,
- 0xBF, 0x8A, 0x29, 0x63, 0xBE, 0x66, 0x0B, 0x70, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0x21, 0x7E, 0xBB,
- 0xBE, 0x56, 0x99, 0x42, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0xF5, 0xAF, 0xB0, 0xBF, 0x96, 0x19, 0x3B,
- 0x42, 0x09, 0x93, 0xC4, 0xC0, 0x47, 0x42, 0x91, 0xBE, 0xB2, 0xE9, 0xEE, 0x42, 0x09, 0x50, 0x68,
- 0x3F, 0xB1, 0x1A, 0xCA, 0x3F, 0x2D, 0x3E, 0x2D, 0xC1, 0x1D, 0xEC, 0x5F, 0xBB, 0xAD, 0x2D, 0xCB,
- 0xBF, 0xD5, 0x92, 0x4B, 0xC1, 0x1E, 0xCE, 0x00, 0xBB, 0xAD, 0x2D, 0xCB, 0xC0, 0x17, 0x75, 0x3A,
- 0x42, 0x09, 0x1F, 0xE3, 0x3F, 0xB1, 0x1A, 0xCA, 0xBF, 0xAD, 0xB9, 0x73, 0x42, 0x09, 0x14, 0x75,
- 0x40, 0x19, 0x14, 0xF9, 0xBE, 0xFD, 0x72, 0x15, 0xC1, 0x1F, 0x03, 0x34, 0x3F, 0x95, 0x61, 0x35,
- 0xBE, 0xFE, 0x5A, 0xBC, 0xC1, 0x1D, 0xB7, 0x2A, 0xBF, 0x96, 0xBB, 0x88, 0xBF, 0xAD, 0xEB, 0x7D,
- 0x42, 0x09, 0x5B, 0xD8, 0x3E, 0xC0, 0x2E, 0xA9, 0x40, 0x1E, 0x27, 0x67, 0x42, 0x02, 0x4C, 0x03,
- 0x3F, 0xC0, 0x2D, 0xB6, 0x40, 0x94, 0xBE, 0xD1, 0x42, 0x02, 0x30, 0x38, 0x3F, 0xC0, 0xDA, 0xE4,
- 0x3F, 0xE7, 0xC1, 0xCE, 0xC1, 0x1E, 0x5D, 0x2E, 0x3E, 0x23, 0xB0, 0x81, 0xBF, 0x89, 0xA2, 0xBE,
- 0xC1, 0x1E, 0x5D, 0x30, 0x3E, 0x1B, 0x3B, 0xFB, 0x40, 0x63, 0xE5, 0x3F, 0x42, 0x02, 0x44, 0x03,
- 0x3E, 0xD5, 0xAB, 0x19, 0x40, 0x63, 0xD6, 0x7C, 0x42, 0x02, 0x38, 0x37, 0x40, 0x25, 0xC5, 0x61,
- 0x3E, 0xBC, 0xD0, 0x9A, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0xCC, 0x0D, 0x13, 0x3E, 0xBC, 0xC7, 0x2A,
- 0xC1, 0x1E, 0x5D, 0x2D, 0xBF, 0xA4, 0x4D, 0x4D,
-};
-#pragma pop
-
-/* 805270E0-80527200 003F08 0120+00 0/1 0/0 0/0 .data l_flowerNormal2 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerNormal2[288] = {
- 0xBB, 0xC4, 0x93, 0x42, 0x3F, 0x7F, 0xF6, 0x6F, 0xBC, 0x83, 0x0E, 0x3D, 0x3C, 0x83, 0x0C, 0x24,
- 0x3F, 0x7F, 0xF5, 0x84, 0x3C, 0x03, 0x0E, 0x3D, 0xB8, 0x51, 0xB7, 0x17, 0x3F, 0x7F, 0xF5, 0xF9,
- 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x38, 0x1F, 0x62, 0x30,
- 0xBD, 0xB8, 0xC9, 0xFB, 0x3F, 0x7E, 0x68, 0x3C, 0xBD, 0x85, 0xBD, 0x94, 0xBD, 0xD9, 0x65, 0xB2,
- 0x3F, 0x7E, 0x28, 0x13, 0xBD, 0x63, 0x62, 0xA6, 0xBD, 0xB8, 0x12, 0x7B, 0x3F, 0x7E, 0x6B, 0x0E,
- 0xBD, 0x85, 0x62, 0x5A, 0xBD, 0xFD, 0x2D, 0x88, 0x3F, 0x7D, 0x58, 0x32, 0xBD, 0x95, 0xE3, 0x97,
- 0xBD, 0xB5, 0xC6, 0x3B, 0x3F, 0x7E, 0xFB, 0x4C, 0x3C, 0x01, 0xC7, 0x15, 0xB8, 0xFF, 0xDA, 0x40,
- 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0x37, 0x38, 0x8C, 0xA4, 0x3F, 0x7F, 0xF5, 0xF9,
- 0xBC, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB8, 0xBE, 0xD7, 0x41,
- 0x38, 0x06, 0x37, 0xBD, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8F, 0x57, 0xF7, 0x37, 0x6A, 0xE1, 0x8B,
- 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8E, 0xC7, 0x43, 0x3F, 0x7F, 0xF5, 0xF9,
- 0x3A, 0xCB, 0xF2, 0xB2, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x00, 0x00, 0x00, 0x00,
- 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB7, 0xD1, 0xB7, 0x17, 0xBC, 0x8F, 0x55, 0xDE,
- 0x3F, 0x7F, 0xF5, 0xF9, 0x39, 0x4E, 0x91, 0xC9, 0xBA, 0x02, 0x49, 0x1B, 0x3F, 0x7F, 0xF5, 0xF9,
- 0x3C, 0x8F, 0x49, 0x49, 0x3C, 0x80, 0x34, 0x6E, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x00, 0x3C, 0xD1,
- 0xBC, 0x8E, 0x7F, 0xF6, 0x3F, 0x7F, 0xF5, 0xF9, 0xBA, 0xF8, 0xE7, 0xDE, 0x3B, 0x98, 0xD4, 0x78,
- 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x28, 0x78, 0x3C, 0x8B, 0xFE, 0x3B, 0x3F, 0x7F, 0xF5, 0xF9,
- 0x3B, 0x76, 0x7B, 0x1C, 0x3B, 0x99, 0x6B, 0x76, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x1D, 0xFC,
-};
-#pragma pop
-
-/* 80527200-80527208 004028 0008+00 0/1 0/0 0/0 .data l_flowerColor2 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerColor2[8] = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xFF,
-};
-#pragma pop
-
-/* 80527208-80527338 004030 0120+10 0/1 0/0 0/0 .data l_flowerTexCoord2 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_flowerTexCoord2[] = {
- 0x3F, 0xF3, 0x6D, 0x11, 0x3F, 0x72, 0x0B, 0xA2, 0x3F, 0x80, 0x00, 0x00, 0x3C, 0xAB, 0xDC, 0x27,
- 0x3D, 0xC9, 0x2E, 0xE8, 0x3F, 0x72, 0x0B, 0xA2, 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x81, 0x7B, 0x96,
- 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x06, 0x1F, 0xCD, 0x3F, 0x7B, 0xB5, 0x18,
- 0x40, 0x06, 0x00, 0x47, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x06, 0x16, 0xBE, 0x3F, 0x81, 0x7B, 0x96,
- 0x40, 0x06, 0x09, 0x5B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x07, 0xBB, 0x1F, 0x3F, 0x7B, 0xB5, 0x18,
- 0x40, 0x07, 0xC2, 0xF8, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x07, 0xB8, 0xC3, 0x3F, 0x81, 0x7B, 0x96,
- 0x40, 0x07, 0xC5, 0x50, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x7B, 0xB5, 0x18,
- 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xA0, 0x9B, 0xA2,
- 0x40, 0x39, 0x01, 0x1D, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBE, 0x0D, 0xCC,
- 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x25, 0xD5, 0xA2, 0x3F, 0x7B, 0xB5, 0x18,
- 0x40, 0x25, 0xD9, 0x1F, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x25, 0xD4, 0x95, 0x3F, 0x81, 0x7B, 0x96,
- 0x40, 0x25, 0xDA, 0x2B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x7B, 0xB5, 0x18,
- 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x2F, 0xF0, 0x35, 0x3F, 0x81, 0x7B, 0x96,
- 0x40, 0x2F, 0xF8, 0x16, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x2F, 0xF2, 0x78, 0x3F, 0x7B, 0xB5, 0x18,
- 0x40, 0x2F, 0xF5, 0xCF, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x51, 0x10, 0x6F,
- 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x7C, 0x19, 0xB1, 0x3F, 0x80, 0x5E, 0x57,
- 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x04, 0x26, 0x74, 0x3F, 0x80, 0x3F, 0x79,
- 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x80, 0x3F, 0x79, 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x51, 0x10, 0x6F};
-#pragma pop
-
-/* 80527338-80527478 004160 0138+08 0/1 0/0 0/0 .data l_J_hana01DL */
-#include "assets/l_J_hana01DL.h" // ALIGN 32
-
-/* 80527478-80527558 0042A0 00DE+02 0/0 0/0 0/0 .data l_J_hana01_c_00DL */
-#include "assets/l_J_hana01_c_00DL.h" // ALIGN 32
-
-/* 80527558-80527698 004380 0128+18 0/1 0/0 0/0 .data l_J_hana01_c_01DL */
-#include "assets/l_J_hana01_c_01DL.h" // ALIGN 32
-
-/* 80527698-80527738 0044C0 0099+07 0/2 0/0 0/0 .data l_mat2DL */
-#include "assets/l_mat2DL__d_a_grass.h"
-l_mat2DL__d_a_grass(l_J_Ohana01_64128_0419TEX)
-
-/* 80527738-805277D4 004560 0099+03 0/2 0/0 0/0 .data l_mat2Light4DL */
-#include "assets/l_mat2Light4DL.h"
-l_mat2Light4DL(l_J_Ohana01_64128_0419TEX)
-
-/* 805277D4-805277E0 -00001 000C+00 1/1 0/0 0/0 .data @5875 */
-SECTION_DATA static void* lit_5875[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)deleteRoom__16dFlower_packet_cFi,
-};
-
-/* 805277E0-80527800 -00001 0020+00 1/1 0/0 0/0 .data @6092 */
-SECTION_DATA static void* lit_6092[8] = {
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x6EC),
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x708),
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x724),
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x740),
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x760),
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x780),
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x7A0),
- (void*)(((char*)draw__16dFlower_packet_cFv) + 0x7C0),
-};
-
-/* 80527800-80527840 -00001 0040+00 1/1 0/0 0/0 .data
- * l_offsetData$localstatic15$create__9daGrass_cFv */
-SECTION_DATA static void* data_80527800[16] = {
- (void*)0x03000000,
- (void*)(((char*)&struct_80528900) + 0x0) /* l_setType2$localstatic7$create__9daGrass_cFv */,
- (void*)0x07000000,
- (void*)(((char*)&struct_80528854) + 0x0) /* l_setType0$localstatic3$create__9daGrass_cFv */,
- (void*)0x15000000,
- (void*)(((char*)&struct_80528880) + 0x0) /* l_setType1$localstatic5$create__9daGrass_cFv */,
- (void*)0x07000000,
- (void*)(((char*)&struct_80528854) + 0x0) /* l_setType0$localstatic3$create__9daGrass_cFv */,
- (void*)0x07000000,
- (void*)(((char*)&struct_80528914) + 0x0) /* l_setType3$localstatic9$create__9daGrass_cFv */,
- (void*)0x11000000,
- (void*)(((char*)&struct_80528940) + 0x0) /* l_setType4$localstatic11$create__9daGrass_cFv */,
- (void*)0x07000000,
- (void*)&data_805289A8,
- (void*)0x07000000,
- (void*)(((char*)&struct_80528854) + 0x0) /* l_setType0$localstatic3$create__9daGrass_cFv */,
-};
-
-/* 80527840-80527860 -00001 0020+00 1/0 0/0 0/0 .data daGrass_METHODS */
-static actor_method_class daGrass_METHODS = {
- (process_method_func)daGrass_create__FP9daGrass_c,
- (process_method_func)daGrass_Delete__FP9daGrass_c,
- (process_method_func)daGrass_execute__FP9daGrass_c,
- 0,
- (process_method_func)daGrass_draw__FP9daGrass_c,
-};
-
-/* 80527860-80527890 -00001 0030+00 0/0 0/0 1/0 .data g_profile_GRASS */
-extern actor_process_profile_definition g_profile_GRASS = {
- fpcLy_CURRENT_e, // mLayerID
- 11, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_GRASS, // mProcName
- &g_fpcLf_Method.base, // sub_method
- 0x00000570, // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 8, // mPriority
- &daGrass_METHODS, // sub_method
- 0x00060000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_0_e, // cullType
-};
-
-/* 80527890-805278A4 0046B8 0014+00 2/2 0/0 0/0 .data __vt__16dFlower_packet_c */
-SECTION_DATA extern void* __vt__16dFlower_packet_c[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__16dFlower_packet_cFv,
- (void*)__dt__16dFlower_packet_cFv,
-};
-
-/* 805278A4-805278B8 0046CC 0014+00 2/2 0/0 0/0 .data __vt__15dGrass_packet_c */
-SECTION_DATA extern void* __vt__15dGrass_packet_c[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__15dGrass_packet_cFv,
- (void*)__dt__15dGrass_packet_cFv,
-};
-
-/* 805278D0-805278D4 000008 0001+03 4/4 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 805278D4-805278D8 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */
-#pragma push
-#pragma force_active on
-static u8 lit_1107[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278D8-805278DC 000010 0001+03 0/0 0/0 0/0 .bss @1105 */
-#pragma push
-#pragma force_active on
-static u8 lit_1105[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278DC-805278E0 000014 0001+03 0/0 0/0 0/0 .bss @1104 */
-#pragma push
-#pragma force_active on
-static u8 lit_1104[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278E0-805278E4 000018 0001+03 0/0 0/0 0/0 .bss @1099 */
-#pragma push
-#pragma force_active on
-static u8 lit_1099[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278E4-805278E8 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */
-#pragma push
-#pragma force_active on
-static u8 lit_1097[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278E8-805278EC 000020 0001+03 0/0 0/0 0/0 .bss @1095 */
-#pragma push
-#pragma force_active on
-static u8 lit_1095[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278EC-805278F0 000024 0001+03 0/0 0/0 0/0 .bss @1094 */
-#pragma push
-#pragma force_active on
-static u8 lit_1094[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278F0-805278F4 000028 0001+03 0/0 0/0 0/0 .bss @1057 */
-#pragma push
-#pragma force_active on
-static u8 lit_1057[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278F4-805278F8 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */
-#pragma push
-#pragma force_active on
-static u8 lit_1055[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278F8-805278FC 000030 0001+03 0/0 0/0 0/0 .bss @1053 */
-#pragma push
-#pragma force_active on
-static u8 lit_1053[1 + 3 /* padding */];
-#pragma pop
-
-/* 805278FC-80527900 000034 0001+03 0/0 0/0 0/0 .bss @1052 */
-#pragma push
-#pragma force_active on
-static u8 lit_1052[1 + 3 /* padding */];
-#pragma pop
-
-/* 80527900-80527904 000038 0001+03 0/0 0/0 0/0 .bss @1014 */
-#pragma push
-#pragma force_active on
-static u8 lit_1014[1 + 3 /* padding */];
-#pragma pop
-
-/* 80527904-80527908 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */
-#pragma push
-#pragma force_active on
-static u8 lit_1012[1 + 3 /* padding */];
-#pragma pop
-
-/* 80527908-8052790C 000040 0001+03 0/0 0/0 0/0 .bss @1010 */
-#pragma push
-#pragma force_active on
-static u8 lit_1010[1 + 3 /* padding */];
-#pragma pop
-
-/* 8052790C-80527910 000044 0001+03 0/0 0/0 0/0 .bss @1009 */
-#pragma push
-#pragma force_active on
-static u8 lit_1009[1 + 3 /* padding */];
-#pragma pop
-
-/* 80527910-80527920 000048 000C+04 0/1 0/0 0/0 .bss @4293 */
-#pragma push
-#pragma force_active on
-static u8 lit_4293[12 + 4 /* padding */];
-#pragma pop
-
-/* 80527920-80527930 -00001 000C+04 0/2 0/0 0/0 .bss None */
-#pragma push
-#pragma force_active on
-/* 80527920 0006+00 data_80527920 ang$4292 */
-/* 80527926 0002+02 data_80527926 exec_count_dammy$4868 */
-/* 8052792A 0002+00 data_8052792A exec_count_dammy2$4871 */
-static u8 struct_80527920[12 + 4 /* padding */];
-#pragma pop
-
-/* 80527930-805284E8 000068 0BB8+00 1/1 0/0 0/0 .bss mAngleZ$5046 */
-static s16 mAngleZ[1500];
-
-/* 805284E8-805284EC 000C20 0004+00 1/2 0/0 0/0 .bss None */
-static u8 data_805284E8[4];
-
-/* 805284EC-805284FC 000C24 000C+04 0/1 0/0 0/0 .bss @5442 */
-#pragma push
-#pragma force_active on
-static u8 lit_5442[12 + 4 /* padding */];
-#pragma pop
-
-/* 805284FC-80528504 000C34 0006+02 0/1 0/0 0/0 .bss ang$5441 */
-#pragma push
-#pragma force_active on
-static u8 ang[6 + 2 /* padding */];
-#pragma pop
-
-/* 80528504-80528510 000C3C 000C+00 0/1 0/0 0/0 .bss @6340 */
-#pragma push
-#pragma force_active on
-static u8 lit_6340[12];
-#pragma pop
-
-/* 80528510-8052851C 000C48 000C+00 0/1 0/0 0/0 .bss @6342 */
-#pragma push
-#pragma force_active on
-static u8 lit_6342[12];
-#pragma pop
-
-/* 8052851C-80528528 000C54 000C+00 0/1 0/0 0/0 .bss @6343 */
-#pragma push
-#pragma force_active on
-static u8 lit_6343[12];
-#pragma pop
-
-/* 80528528-80528534 000C60 000C+00 0/1 0/0 0/0 .bss @6344 */
-#pragma push
-#pragma force_active on
-static u8 lit_6344[12];
-#pragma pop
-
-/* 80528534-80528540 000C6C 000C+00 0/1 0/0 0/0 .bss @6345 */
-#pragma push
-#pragma force_active on
-static u8 lit_6345[12];
-#pragma pop
-
-/* 80528540-8052854C 000C78 000C+00 0/1 0/0 0/0 .bss @6346 */
-#pragma push
-#pragma force_active on
-static u8 lit_6346[12];
-#pragma pop
-
-/* 8052854C-80528558 000C84 000C+00 0/1 0/0 0/0 .bss @6347 */
-#pragma push
-#pragma force_active on
-static u8 lit_6347[12];
-#pragma pop
-
-/* 80528558-80528564 000C90 000C+00 0/1 0/0 0/0 .bss @6348 */
-#pragma push
-#pragma force_active on
-static u8 lit_6348[12];
-#pragma pop
-
-/* 80528564-80528570 000C9C 000C+00 0/1 0/0 0/0 .bss @6350 */
-#pragma push
-#pragma force_active on
-static u8 lit_6350[12];
-#pragma pop
-
-/* 80528570-8052857C 000CA8 000C+00 0/1 0/0 0/0 .bss @6351 */
-#pragma push
-#pragma force_active on
-static u8 lit_6351[12];
-#pragma pop
-
-/* 8052857C-80528588 000CB4 000C+00 0/1 0/0 0/0 .bss @6352 */
-#pragma push
-#pragma force_active on
-static u8 lit_6352[12];
-#pragma pop
-
-/* 80528588-80528594 000CC0 000C+00 0/1 0/0 0/0 .bss @6353 */
-#pragma push
-#pragma force_active on
-static u8 lit_6353[12];
-#pragma pop
-
-/* 80528594-805285A0 000CCC 000C+00 0/1 0/0 0/0 .bss @6354 */
-#pragma push
-#pragma force_active on
-static u8 lit_6354[12];
-#pragma pop
-
-/* 805285A0-805285AC 000CD8 000C+00 0/1 0/0 0/0 .bss @6355 */
-#pragma push
-#pragma force_active on
-static u8 lit_6355[12];
-#pragma pop
-
-/* 805285AC-805285B8 000CE4 000C+00 0/1 0/0 0/0 .bss @6356 */
-#pragma push
-#pragma force_active on
-static u8 lit_6356[12];
-#pragma pop
-
-/* 805285B8-805285C4 000CF0 000C+00 0/1 0/0 0/0 .bss @6357 */
-#pragma push
-#pragma force_active on
-static u8 lit_6357[12];
-#pragma pop
-
-/* 805285C4-805285D0 000CFC 000C+00 0/1 0/0 0/0 .bss @6358 */
-#pragma push
-#pragma force_active on
-static u8 lit_6358[12];
-#pragma pop
-
-/* 805285D0-805285DC 000D08 000C+00 0/1 0/0 0/0 .bss @6359 */
-#pragma push
-#pragma force_active on
-static u8 lit_6359[12];
-#pragma pop
-
-/* 805285DC-805285E8 000D14 000C+00 0/1 0/0 0/0 .bss @6360 */
-#pragma push
-#pragma force_active on
-static u8 lit_6360[12];
-#pragma pop
-
-/* 805285E8-805285F4 000D20 000C+00 0/1 0/0 0/0 .bss @6361 */
-#pragma push
-#pragma force_active on
-static u8 lit_6361[12];
-#pragma pop
-
-/* 805285F4-80528600 000D2C 000C+00 0/1 0/0 0/0 .bss @6362 */
-#pragma push
-#pragma force_active on
-static u8 lit_6362[12];
-#pragma pop
-
-/* 80528600-8052860C 000D38 000C+00 0/1 0/0 0/0 .bss @6363 */
-#pragma push
-#pragma force_active on
-static u8 lit_6363[12];
-#pragma pop
-
-/* 8052860C-80528618 000D44 000C+00 0/1 0/0 0/0 .bss @6364 */
-#pragma push
-#pragma force_active on
-static u8 lit_6364[12];
-#pragma pop
-
-/* 80528618-80528624 000D50 000C+00 0/1 0/0 0/0 .bss @6365 */
-#pragma push
-#pragma force_active on
-static u8 lit_6365[12];
-#pragma pop
-
-/* 80528624-80528630 000D5C 000C+00 0/1 0/0 0/0 .bss @6366 */
-#pragma push
-#pragma force_active on
-static u8 lit_6366[12];
-#pragma pop
-
-/* 80528630-8052863C 000D68 000C+00 0/1 0/0 0/0 .bss @6367 */
-#pragma push
-#pragma force_active on
-static u8 lit_6367[12];
-#pragma pop
-
-/* 8052863C-80528648 000D74 000C+00 0/1 0/0 0/0 .bss @6368 */
-#pragma push
-#pragma force_active on
-static u8 lit_6368[12];
-#pragma pop
-
-/* 80528648-80528654 000D80 000C+00 0/1 0/0 0/0 .bss @6369 */
-#pragma push
-#pragma force_active on
-static u8 lit_6369[12];
-#pragma pop
-
-/* 80528654-80528660 000D8C 000C+00 0/1 0/0 0/0 .bss @6370 */
-#pragma push
-#pragma force_active on
-static u8 lit_6370[12];
-#pragma pop
-
-/* 80528660-8052866C 000D98 000C+00 0/1 0/0 0/0 .bss @6372 */
-#pragma push
-#pragma force_active on
-static u8 lit_6372[12];
-#pragma pop
-
-/* 8052866C-80528678 000DA4 000C+00 0/1 0/0 0/0 .bss @6373 */
-#pragma push
-#pragma force_active on
-static u8 lit_6373[12];
-#pragma pop
-
-/* 80528678-80528684 000DB0 000C+00 0/1 0/0 0/0 .bss @6374 */
-#pragma push
-#pragma force_active on
-static u8 lit_6374[12];
-#pragma pop
-
-/* 80528684-80528690 000DBC 000C+00 0/1 0/0 0/0 .bss @6376 */
-#pragma push
-#pragma force_active on
-static u8 lit_6376[12];
-#pragma pop
-
-/* 80528690-8052869C 000DC8 000C+00 0/1 0/0 0/0 .bss @6377 */
-#pragma push
-#pragma force_active on
-static u8 lit_6377[12];
-#pragma pop
-
-/* 8052869C-805286A8 000DD4 000C+00 0/1 0/0 0/0 .bss @6378 */
-#pragma push
-#pragma force_active on
-static u8 lit_6378[12];
-#pragma pop
-
-/* 805286A8-805286B4 000DE0 000C+00 0/1 0/0 0/0 .bss @6379 */
-#pragma push
-#pragma force_active on
-static u8 lit_6379[12];
-#pragma pop
-
-/* 805286B4-805286C0 000DEC 000C+00 0/1 0/0 0/0 .bss @6380 */
-#pragma push
-#pragma force_active on
-static u8 lit_6380[12];
-#pragma pop
-
-/* 805286C0-805286CC 000DF8 000C+00 0/1 0/0 0/0 .bss @6381 */
-#pragma push
-#pragma force_active on
-static u8 lit_6381[12];
-#pragma pop
-
-/* 805286CC-805286D8 000E04 000C+00 0/1 0/0 0/0 .bss @6382 */
-#pragma push
-#pragma force_active on
-static u8 lit_6382[12];
-#pragma pop
-
-/* 805286D8-805286E4 000E10 000C+00 0/1 0/0 0/0 .bss @6384 */
-#pragma push
-#pragma force_active on
-static u8 lit_6384[12];
-#pragma pop
-
-/* 805286E4-805286F0 000E1C 000C+00 0/1 0/0 0/0 .bss @6385 */
-#pragma push
-#pragma force_active on
-static u8 lit_6385[12];
-#pragma pop
-
-/* 805286F0-805286FC 000E28 000C+00 0/1 0/0 0/0 .bss @6386 */
-#pragma push
-#pragma force_active on
-static u8 lit_6386[12];
-#pragma pop
-
-/* 805286FC-80528708 000E34 000C+00 0/1 0/0 0/0 .bss @6387 */
-#pragma push
-#pragma force_active on
-static u8 lit_6387[12];
-#pragma pop
-
-/* 80528708-80528714 000E40 000C+00 0/1 0/0 0/0 .bss @6388 */
-#pragma push
-#pragma force_active on
-static u8 lit_6388[12];
-#pragma pop
-
-/* 80528714-80528720 000E4C 000C+00 0/1 0/0 0/0 .bss @6389 */
-#pragma push
-#pragma force_active on
-static u8 lit_6389[12];
-#pragma pop
-
-/* 80528720-8052872C 000E58 000C+00 0/1 0/0 0/0 .bss @6390 */
-#pragma push
-#pragma force_active on
-static u8 lit_6390[12];
-#pragma pop
-
-/* 8052872C-80528738 000E64 000C+00 0/1 0/0 0/0 .bss @6391 */
-#pragma push
-#pragma force_active on
-static u8 lit_6391[12];
-#pragma pop
-
-/* 80528738-80528744 000E70 000C+00 0/1 0/0 0/0 .bss @6392 */
-#pragma push
-#pragma force_active on
-static u8 lit_6392[12];
-#pragma pop
-
-/* 80528744-80528750 000E7C 000C+00 0/1 0/0 0/0 .bss @6393 */
-#pragma push
-#pragma force_active on
-static u8 lit_6393[12];
-#pragma pop
-
-/* 80528750-8052875C 000E88 000C+00 0/1 0/0 0/0 .bss @6394 */
-#pragma push
-#pragma force_active on
-static u8 lit_6394[12];
-#pragma pop
-
-/* 8052875C-80528768 000E94 000C+00 0/1 0/0 0/0 .bss @6395 */
-#pragma push
-#pragma force_active on
-static u8 lit_6395[12];
-#pragma pop
-
-/* 80528768-80528774 000EA0 000C+00 0/1 0/0 0/0 .bss @6396 */
-#pragma push
-#pragma force_active on
-static u8 lit_6396[12];
-#pragma pop
-
-/* 80528774-80528780 000EAC 000C+00 0/1 0/0 0/0 .bss @6397 */
-#pragma push
-#pragma force_active on
-static u8 lit_6397[12];
-#pragma pop
-
-/* 80528780-8052878C 000EB8 000C+00 0/1 0/0 0/0 .bss @6398 */
-#pragma push
-#pragma force_active on
-static u8 lit_6398[12];
-#pragma pop
-
-/* 8052878C-80528798 000EC4 000C+00 0/1 0/0 0/0 .bss @6399 */
-#pragma push
-#pragma force_active on
-static u8 lit_6399[12];
-#pragma pop
-
-/* 80528798-805287A4 000ED0 000C+00 0/1 0/0 0/0 .bss @6400 */
-#pragma push
-#pragma force_active on
-static u8 lit_6400[12];
-#pragma pop
-
-/* 805287A4-805287B0 000EDC 000C+00 0/1 0/0 0/0 .bss @6402 */
-#pragma push
-#pragma force_active on
-static u8 lit_6402[12];
-#pragma pop
-
-/* 805287B0-805287BC 000EE8 000C+00 0/1 0/0 0/0 .bss @6403 */
-#pragma push
-#pragma force_active on
-static u8 lit_6403[12];
-#pragma pop
-
-/* 805287BC-805287C8 000EF4 000C+00 0/1 0/0 0/0 .bss @6404 */
-#pragma push
-#pragma force_active on
-static u8 lit_6404[12];
-#pragma pop
-
-/* 805287C8-805287D4 000F00 000C+00 0/1 0/0 0/0 .bss @6405 */
-#pragma push
-#pragma force_active on
-static u8 lit_6405[12];
-#pragma pop
-
-/* 805287D4-805287E0 000F0C 000C+00 0/1 0/0 0/0 .bss @6406 */
-#pragma push
-#pragma force_active on
-static u8 lit_6406[12];
-#pragma pop
-
-/* 805287E0-805287EC 000F18 000C+00 0/1 0/0 0/0 .bss @6407 */
-#pragma push
-#pragma force_active on
-static u8 lit_6407[12];
-#pragma pop
-
-/* 805287EC-805287F0 000F24 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_805287EC[4];
-#pragma pop
-
-/* 805287F0-805287F4 000F28 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_805287F0[4];
-#pragma pop
-
-/* 805287F4-805287F8 000F2C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805287F4[4];
-#pragma pop
-
-/* 805287F8-805287FC 000F30 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_805287F8[4];
-#pragma pop
-
-/* 805287FC-80528800 000F34 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_805287FC[4];
-#pragma pop
-
-/* 80528800-80528804 000F38 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80528800[4];
-#pragma pop
-
-/* 80528804-80528808 000F3C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80528804[4];
-#pragma pop
-
-/* 80528808-8052880C 000F40 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_80528808[4];
-#pragma pop
-
-/* 8052880C-80528810 000F44 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_8052880C[4];
-#pragma pop
-
-/* 80528810-80528814 000F48 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_80528810[4];
-#pragma pop
-
-/* 80528814-80528818 000F4C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80528814[4];
-#pragma pop
-
-/* 80528818-8052881C 000F50 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80528818[4];
-#pragma pop
-
-/* 8052881C-80528820 000F54 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8052881C[4];
-#pragma pop
-
-/* 80528820-80528824 000F58 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80528820[4];
-#pragma pop
-
-/* 80528824-80528828 000F5C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_80528824[4];
-#pragma pop
-
-/* 80528828-8052882C 000F60 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_80528828[4];
-#pragma pop
-
-/* 8052882C-80528830 000F64 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_8052882C[4];
-#pragma pop
-
-/* 80528830-80528834 000F68 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_80528830[4];
-#pragma pop
-
-/* 80528834-80528838 000F6C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80528834[4];
-#pragma pop
-
-/* 80528838-8052883C 000F70 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80528838[4];
-#pragma pop
-
-/* 8052883C-80528840 000F74 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8052883C[4];
-#pragma pop
-
-/* 80528840-80528844 000F78 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80528840[4];
-#pragma pop
-
-/* 80528844-80528848 000F7C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80528844[4];
-#pragma pop
-
-/* 80528848-8052884C 000F80 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80528848[4];
-#pragma pop
-
-/* 8052884C-80528850 000F84 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8052884C[4];
-#pragma pop
-
-/* 80528850-80528854 000F88 0004+00 1/1 0/0 0/0 .bss None */
-static u8 data_80528850[4];
-
-/* 80528854-80528880 -00001 002C+00 2/1 0/0 0/0 .bss None */
-/* 80528854 002A+00 data_80528854 l_setType0$localstatic3$create__9daGrass_cFv */
-/* 8052887E 0002+00 data_8052887E None */
-static u8 struct_80528854[44];
-
-/* 80528880-80528900 -00001 0080+00 2/1 0/0 0/0 .bss None */
-/* 80528880 007E+00 data_80528880 l_setType1$localstatic5$create__9daGrass_cFv */
-/* 805288FE 0002+00 data_805288FE None */
-static u8 struct_80528880[128];
-
-/* 80528900-80528914 -00001 0014+00 2/1 0/0 0/0 .bss None */
-/* 80528900 0012+00 data_80528900 l_setType2$localstatic7$create__9daGrass_cFv */
-/* 80528912 0002+00 data_80528912 None */
-static u8 struct_80528900[20];
-
-/* 80528914-80528940 -00001 002C+00 2/1 0/0 0/0 .bss None */
-/* 80528914 002A+00 data_80528914 l_setType3$localstatic9$create__9daGrass_cFv */
-/* 8052893E 0002+00 data_8052893E None */
-static u8 struct_80528914[44];
-
-/* 80528940-805289A8 -00001 0068+00 2/1 0/0 0/0 .bss None */
-/* 80528940 0066+00 data_80528940 l_setType4$localstatic11$create__9daGrass_cFv */
-/* 805289A6 0002+00 data_805289A6 None */
-static u8 struct_80528940[104];
-
-/* 805289A8-805289D2 0010E0 002A+00 2/1 0/0 0/0 .bss l_setType5$localstatic13$create__9daGrass_cFv
- */
-static u8 data_805289A8[42];
-
-/* 8051BFBC-8051C040 00035C 0084+00 1/0 0/0 0/0 .text __dt__15dGrass_packet_cFv */
-dGrass_packet_c::~dGrass_packet_c() {}
-
/* 8051C040-8051C074 0003E0 0034+00 1/1 0/0 0/0 .text executeGrass__9daGrass_cFv */
void daGrass_c::executeGrass() {
if (m_grass != NULL) {
@@ -2159,7 +108,7 @@ void daGrass_c::newGrassData(cXyz& i_pos, int i_roomNo, u8 i_itemNo, u8 i_itemBi
}
/* 8051C0D4-8051C140 000474 006C+00 1/1 0/0 0/0 .text createFlower__9daGrass_cFv */
-int daGrass_c::createFlower() {
+bool daGrass_c::createFlower() {
if (m_flower != NULL) {
return 1;
}
@@ -2198,8 +147,8 @@ void daGrass_c::drawFlower() {
}
/* 8051C280-8051C2AC 000620 002C+00 1/1 0/0 0/0 .text newFlowerData__9daGrass_cFScR4cXyziScs */
-void daGrass_c::newFlowerData(s8 param_0, cXyz& param_1, int param_2, s8 param_3, s16 param_4) {
- m_flower->newData(param_0, param_1, param_2, param_3, param_4);
+void daGrass_c::newFlowerData(s8 param_0, cXyz& i_pos, int i_roomNo, s8 i_tableNo, s16 i_addCol) {
+ m_flower->newData(param_0, i_pos, i_roomNo, i_tableNo, i_addCol);
}
/* 8051C2AC-8051C2B0 00064C 0004+00 1/1 0/0 0/0 .text dGrass_Tex_Change__Fv */
@@ -2211,87 +160,94 @@ static int daGrass_create(daGrass_c* i_this) {
return i_this->create();
}
-/* ############################################################################################## */
-/* 805231B0-805231B4 000188 0004+00 0/1 0/0 0/0 .rodata @6978 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6978 = 1200.0f;
-COMPILER_STRIP_GATE(0x805231B0, &lit_6978);
-#pragma pop
-
-/* 805231B4-805231B8 00018C 0004+00 0/1 0/0 0/0 .rodata @6979 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6979 = 75.0f;
-COMPILER_STRIP_GATE(0x805231B4, &lit_6979);
-#pragma pop
-
-/* 805231B8-805231BC 000190 0004+00 0/1 0/0 0/0 .rodata @6980 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6980 = 83.0f / 100.0f;
-COMPILER_STRIP_GATE(0x805231B8, &lit_6980);
-#pragma pop
-
-/* 805231BC-805231C0 000194 0004+00 0/1 0/0 0/0 .rodata @6981 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6981 = 23.0f / 10.0f;
-COMPILER_STRIP_GATE(0x805231BC, &lit_6981);
-#pragma pop
-
-/* 805231C0-805231C0 000198 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_805231C0 = "D_MN01";
-SECTION_DEAD static char const* const stringBase_805231C7 = "D_MN54";
-SECTION_DEAD static char const* const stringBase_805231CE = "D_MN07A";
-#pragma pop
-
/* 8051C304-8051D6CC 0006A4 13C8+00 1/1 0/0 0/0 .text create__9daGrass_cFv */
-// NONMATCHING - matches except for static data
int daGrass_c::create() {
static csXyz l_setType0[] = {
- csXyz(0, 0, 0), csXyz(3, 0, -50), csXyz(-2, 0, 50), csXyz(50, 0, 27),
- csXyz(52, 0, -25), csXyz(-50, 0, 22), csXyz(-50, 0, -29),
+ csXyz(0, 0, 0),
+ csXyz(3, 0, -50),
+ csXyz(-2, 0, 50),
+ csXyz(50, 0, 27),
+ csXyz(52, 0, -25),
+ csXyz(-50, 0, 22),
+ csXyz(-50, 0, -29)
};
static csXyz l_setType1[] = {
- csXyz(-18, 0, 76), csXyz(-15, 0, 26), csXyz(133, 0, 0), csXyz(80, 0, 23),
- csXyz(86, 0, -83), csXyz(33, 0, -56), csXyz(83, 0, -27), csXyz(-120, 0, -26),
- csXyz(-18, 0, -74), csXyz(-20, 0, -21), csXyz(-73, 0, 1), csXyz(-67, 0, -102),
- csXyz(-21, 0, 126), csXyz(-120, 0, -78), csXyz(-70, 0, -49), csXyz(32, 0, 103),
- csXyz(34, 0, 51), csXyz(-72, 0, 98), csXyz(-68, 0, 47), csXyz(33, 0, -5),
- csXyz(135, 0, -53),
+ csXyz(-18, 0, 76),
+ csXyz(-15, 0, 26),
+ csXyz(133, 0, 0),
+ csXyz(80, 0, 23),
+ csXyz(86, 0, -83),
+ csXyz(33, 0, -56),
+ csXyz(83, 0, -27),
+ csXyz(-120, 0, -26),
+ csXyz(-18, 0, -74),
+ csXyz(-20, 0, -21),
+ csXyz(-73, 0, 1),
+ csXyz(-67, 0, -102),
+ csXyz(-21, 0, 126),
+ csXyz(-120, 0, -78),
+ csXyz(-70, 0, -49),
+ csXyz(32, 0, 103),
+ csXyz(34, 0, 51),
+ csXyz(-72, 0, 98),
+ csXyz(-68, 0, 47),
+ csXyz(33, 0, -5),
+ csXyz(135, 0, -53)
};
- static csXyz l_setType2[] = {csXyz(25, 0, 25), csXyz(25, 0, -25), csXyz(-25, 0, 0)};
+ static csXyz l_setType2[] = {
+ csXyz(25, 0, 25),
+ csXyz(25, 0, -25),
+ csXyz(-25, 0, 0)
+ };
static csXyz l_setType3[] = {
- csXyz(-24, 0, -28), csXyz(27, 0, -28), csXyz(-21, 0, 33), csXyz(-18, 0, -34),
- csXyz(44, 0, -4), csXyz(41, 0, 10), csXyz(24, 0, 39),
+ csXyz(-24, 0, -28),
+ csXyz(27, 0, -28),
+ csXyz(-21, 0, 33),
+ csXyz(-18, 0, -34),
+ csXyz(44, 0, -4),
+ csXyz(41, 0, 10),
+ csXyz(24, 0, 39)
};
static csXyz l_setType4[] = {
- csXyz(-55, 0, -22), csXyz(-28, 0, -50), csXyz(-77, 0, 11), csXyz(55, 0, -44),
- csXyz(83, 0, -71), csXyz(11, 0, -48), csXyz(97, 0, -34), csXyz(-74, 0, -57),
- csXyz(31, 0, 58), csXyz(59, 0, 30), csXyz(13, 0, 23), csXyz(-12, 0, 54),
- csXyz(55, 0, 97), csXyz(10, 0, 92), csXyz(33, 0, -10), csXyz(-99, 0, -27),
- csXyz(40, 0, -87),
+ csXyz(-55, 0, -22),
+ csXyz(-28, 0, -50),
+ csXyz(-77, 0, 11),
+ csXyz(55, 0, -44),
+ csXyz(83, 0, -71),
+ csXyz(11, 0, -48),
+ csXyz(97, 0, -34),
+ csXyz(-74, 0, -57),
+ csXyz(31, 0, 58),
+ csXyz(59, 0, 30),
+ csXyz(13, 0, 23),
+ csXyz(-12, 0, 54),
+ csXyz(55, 0, 97),
+ csXyz(10, 0, 92),
+ csXyz(33, 0, -10),
+ csXyz(-99, 0, -27),
+ csXyz(40, 0, -87)
};
static csXyz l_setType5[] = {
- csXyz(0, 0, 3), csXyz(-26, 0, -29), csXyz(7, 0, -25), csXyz(31, 0, -5),
- csXyz(-7, 0, 40), csXyz(-35, 0, 15), csXyz(23, 0, 32),
+ csXyz(0, 0, 3),
+ csXyz(-26, 0, -29),
+ csXyz(7, 0, -25),
+ csXyz(31, 0, -5),
+ csXyz(-7, 0, 40),
+ csXyz(-35, 0, 15),
+ csXyz(23, 0, 32)
};
-
- static offset_data l_offsetData[] = {
+ static daGrass_offsetData l_offsetData[] = {
{3, l_setType2}, {7, l_setType0}, {21, l_setType1}, {7, l_setType0},
{7, l_setType3}, {17, l_setType4}, {7, l_setType5}, {7, l_setType0},
};
- offset_data* data = l_offsetData;
+ daGrass_offsetData* offset_data = l_offsetData;
int temp_r26 = current.angle.x & 0xFF;
u8 kind = daGrass_prm::getKind(this);
@@ -2300,13 +256,13 @@ int daGrass_c::create() {
int type;
if ((u32)temp_r26 >= 1 && kind == 0) {
type = ((temp_r26 - 1) % 3);
- data = &data[type];
+ offset_data = &offset_data[type];
} else {
type = daGrass_prm::getType(this);
- data = &data[type];
+ offset_data = &offset_data[type];
}
- csXyz* set_type = data->set_type;
+ csXyz* set_type = offset_data->set_type;
if (kind == 0) {
dGrass_Tex_Change();
@@ -2314,13 +270,12 @@ int daGrass_c::create() {
if (createGrass()) {
u8 itemNo = daGrass_prm::getItemNo(this);
u8 itemBitNo = daGrass_prm::getItemBitNo(this);
-
cXyz pos;
if (dKy_get_dayofweek() == 6 && strcmp(dComIfGp_getStartStageName(), "D_MN07A") == 0) {
- int var_r25 = 0;
- int var_r27 = 0;
- f32 var_f29 = 1200.0f;
+ int angle = 0;
+ int iterations = 0;
+ f32 size = 1200.0f;
for (int i = 0; i < 500; i++) {
add_col = current.angle.z;
@@ -2328,17 +283,17 @@ int daGrass_c::create() {
randam_addcol_set(&add_col);
}
- pos.x = var_f29 * cM_ssin(var_r25);
+ pos.x = size * cM_ssin(angle);
pos.y = 0.0f;
- pos.z = var_f29 * cM_scos(var_r25);
+ pos.z = size * cM_scos(angle);
- var_r25 += 0x157;
- if (var_r25 > 0xFFFF) {
- var_r25 += 0xFFFF0001;
- var_f29 += 75.0f;
- var_r27++;
+ angle += 0x157;
+ if (angle > 0xFFFF) {
+ angle += 0xFFFF0001;
+ size += 75.0f;
+ iterations++;
- if (var_r27 > 1000) {
+ if (iterations > 1000) {
break;
}
}
@@ -2351,7 +306,7 @@ int daGrass_c::create() {
}
}
} else {
- for (int i = 0; i < data->num; i++) {
+ for (int i = 0; i < offset_data->num; i++) {
add_col = current.angle.z;
if (i != 0) {
randam_addcol_set(&add_col);
@@ -2367,14 +322,14 @@ int daGrass_c::create() {
pos.z = current.pos.z + set_type->z * 2.3f;
}
- u8 num = data->num;
- if ((num == 3 && i != 0) || (num >= 16 && num <= 21 && i >= 16) ||
+ u8 num = offset_data->num;
+ if ((num == 3 && i != 0) ||
+ (num >= 16 && num <= 21 && i >= 16) ||
(num >= 4 && num <= 7 && i >= 4))
{
- newGrassData(pos, fopAcM_GetRoomNo(this), 0xFF, 0xFF, add_col, temp_r26);
+ newGrassData(pos, fopAcM_GetRoomNo(this), fpcNm_ITEM_NONE, 0xFF, add_col, temp_r26);
} else {
- newGrassData(pos, fopAcM_GetRoomNo(this), itemNo, itemBitNo, add_col,
- temp_r26);
+ newGrassData(pos, fopAcM_GetRoomNo(this), itemNo, itemBitNo, add_col, temp_r26);
}
set_type++;
@@ -2391,7 +346,7 @@ int daGrass_c::create() {
}
cXyz pos;
- for (int i = 0; i < data->num; i++) {
+ for (int i = 0; i < offset_data->num; i++) {
add_col = current.angle.z;
if (i != 0) {
randam_addcol_set(&add_col);
@@ -2431,7 +386,7 @@ static int daGrass_Delete(daGrass_c* i_this) {
}
int daGrass_c::execute() {
- // inlines save to register instead of reloading
+ // fake match, inlines save to register instead of reloading
// dComIfG_Ccsp()->PrepareMass();
g_dComIfG_gameInfo.play.mCcs.mMass_Mng.Prepare();
@@ -2459,20 +414,31 @@ static int daGrass_draw(daGrass_c* i_this) {
return i_this->draw();
}
-/* 8051D7B4-8051D7D0 001B54 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
-extern "C" void func_8051D7B4(void* _this, u8* param_0) {
- // NONMATCHING
-}
-
-/* 8051D7D0-8051D88C 001B70 00BC+00 0/0 1/0 0/0 .text __sinit_d_a_grass_cpp */
-/* void __sinit_d_a_grass_cpp(){// NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x8051D7D0, __sinit_d_a_grass_cpp);
-#pragma pop */
+/* 80527840-80527860 -00001 0020+00 1/0 0/0 0/0 .data daGrass_METHODS */
+static actor_method_class daGrass_METHODS = {
+ (process_method_func)daGrass_create,
+ (process_method_func)daGrass_Delete,
+ (process_method_func)daGrass_execute,
+ (process_method_func)NULL,
+ (process_method_func)daGrass_draw,
+};
-#include "d/actor/d_grass.inc"
+/* 80527860-80527890 -00001 0030+00 0/0 0/0 1/0 .data g_profile_GRASS */
+extern actor_process_profile_definition g_profile_GRASS = {
+ fpcLy_CURRENT_e, // mLayerID
+ 11, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_GRASS, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ 0x00000570, // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 8, // mPriority
+ &daGrass_METHODS, // sub_method
+ 0x00060000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_0_e, // cullType
+};
-#include "d/actor/d_flower.inc"
+AUDIO_INSTANCES;
diff --git a/src/d/actor/d_a_spinner.cpp b/src/d/actor/d_a_spinner.cpp
index 5036f1d0b8..2a7b372ef0 100644
--- a/src/d/actor/d_a_spinner.cpp
+++ b/src/d/actor/d_a_spinner.cpp
@@ -4,197 +4,18 @@
*/
#include "d/actor/d_a_spinner.h"
+#include "d/actor/d_a_tag_sppath.h"
#include "dol2asm.h"
#include "d/actor/d_a_alink.h"
+#include "d/actor/d_a_mirror.h"
+#include "Z2AudioLib/Z2Instances.h"
#include "SSystem/SComponent/c_math.h"
+#include "m_Do/m_Do_controller_pad.h"
-//
-// Forward References:
-//
-
-extern "C" void createHeap__11daSpinner_cFv();
-extern "C" static void daSpinner_createHeap__FP10fopAc_ac_c();
-extern "C" void create__11daSpinner_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __dt__13dBgS_LinkAcchFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" static void daSpinner_Create__FP10fopAc_ac_c();
-extern "C" void __dt__11daSpinner_cFv();
-extern "C" static void daSpinner_Delete__FP11daSpinner_c();
-extern "C" void setRoomInfo__11daSpinner_cFv();
-extern "C" void setMatrix__11daSpinner_cFv();
-extern "C" void setEffect__11daSpinner_cFv();
-extern "C" void posMove__11daSpinner_cFv();
-extern "C" void __dt__8cM3dGLinFv();
-extern "C" void setReflectAngle__11daSpinner_cFv();
-extern "C" void setWallHit__11daSpinner_cFsUl();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void setAnm__11daSpinner_cFv();
-extern "C" void setNextPathNum__11daSpinner_cFv();
-extern "C" void getPathNextPos__11daSpinner_cFv();
-extern "C" void checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz();
-extern "C" void checkPathMove__11daSpinner_cFv();
-extern "C" void setSpreadEffect__11daSpinner_cFv();
-extern "C" void clearSpreadEffect__11daSpinner_cFv();
-extern "C" void execute__11daSpinner_cFv();
-extern "C" static void daSpinner_Execute__FP11daSpinner_c();
-extern "C" void draw__11daSpinner_cFv();
-extern "C" static void daSpinner_Draw__FP11daSpinner_c();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" static void func_804D4D70();
-extern "C" static void func_804D4D78();
-extern "C" extern char const* const d_a_spinner__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
-extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
-extern "C" void mDoExt_modelEntryDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_setStageLayer__FPv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_getPolygonAngle__FRC13cBgS_PolyInfos();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void dComIfGs_isZoneSwitch__Fii();
-extern "C" void
-dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
-extern "C" void dComIfG_getTrigA__FUl();
-extern "C" void entry__10daMirror_cFP8J3DModel();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void getEmitter__Q213dPa_control_c7level_cFUl();
-extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl();
-extern "C" void
-setPoly__13dPa_control_cFUsR13cBgS_PolyInfoPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyziP18dPa_levelEcallBackScPC4cXyz();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void init__7dPaPo_cFP9dBgS_Acchff();
-extern "C" void setEffectCenter__7dPaPo_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC5csXyzPC4cXyzScff();
-extern "C" void StartShock__12dVibration_cFii4cXyz();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetSpecialCode__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetGroundCode__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void dBgS_CheckBWallPoly__FRC13cBgS_PolyInfo();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWallR__12dBgS_AcchCirFf();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP10fopAc_ac_ciP12dBgS_AcchCir();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-extern "C" void __ct__15dBgS_LinkLinChkFv();
-extern "C" void __dt__15dBgS_LinkLinChkFv();
-extern "C" void SetLink__16dBgS_PolyPassChkFv();
-extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void ChkAtHit__12dCcD_GObjInfFv();
-extern "C" void GetAtHitGObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void StartCAt__8dCcD_CylFR4cXyz();
-extern "C" void MoveCAt__8dCcD_CylFR4cXyz();
-extern "C" void Set__12dCcMassS_MngFP8cCcD_ObjUc();
-extern "C" void getAlinkArcName__9daAlink_cFv();
-extern "C" void checkStageName__9daAlink_cFPCc();
-extern "C" void getSpinnerGravity__9daAlink_cCFv();
-extern "C" void getSpinnerMaxFallSpeed__9daAlink_cCFv();
-extern "C" void getSpinnerJumpRate__9daAlink_cCFv();
-extern "C" void getSpinnerRideMoveTime__9daAlink_cFv();
-extern "C" void getSpinnerRideSpeedF__9daAlink_cFv();
-extern "C" void getSpinnerRideDecSpeedMax__9daAlink_cCFv();
-extern "C" void getSpinnerRideDecSpeedMin__9daAlink_cCFv();
-extern "C" void getSpinnerRideDecSpeedRate__9daAlink_cCFv();
-extern "C" void getSpinnerRideRotAngleMax__9daAlink_cCFv();
-extern "C" void getSpinnerRideRotAngleMin__9daAlink_cCFv();
-extern "C" void dCam_getControledAngleY__FP12camera_class();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void dKy_pol_sound_get__FPC13cBgS_PolyInfo();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void normalizeZP__4cXyzFv();
-extern "C" void atan2sX_Z__4cXyzCFv();
-extern "C" void atan2sY_XZ__4cXyzCFv();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndF__Ff();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void cM3d_Len3dSqPntAndSegLine__FPC8cM3dGLinPC3VecP3VecPf();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void SetStartEnd__8cM3dGLinFRC3VecRC3Vec();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void cLib_addCalcAngleS__FPsssss();
-extern "C" void cLib_chaseF__FPfff();
-extern "C" void cLib_chasePosXZ__FP4cXyzRC4cXyzf();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_distanceAngleS__Fss();
-extern "C" void func_802807E0();
-extern "C" void __dt__14Z2SoundObjBaseFv();
-extern "C" void deleteObject__14Z2SoundObjBaseFv();
-extern "C" void __ct__16Z2SoundObjSimpleFv();
-extern "C" void startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void _savegpr_21();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_21();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();;
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" extern void* __vt__16Z2SoundObjSimple[8];
-extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
/* 804D4D90-804D4D9C 000000 000C+00 9/9 0/0 0/0 .rodata @3768 */
-SECTION_RODATA static u8 const lit_3768[12] = {
+static u8 const lit_3768[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
-COMPILER_STRIP_GATE(0x804D4D90, &lit_3768);
-
-/* 804D4D9C-804D4DA0 00000C 0004+00 1/8 0/0 0/0 .rodata @4168 */
-SECTION_RODATA static f32 const lit_4168 = 1.0f;
-COMPILER_STRIP_GATE(0x804D4D9C, &lit_4168);
/* 804D198C-804D1A50 0000EC 00C4+00 1/1 0/0 0/0 .text createHeap__11daSpinner_cFv */
int daSpinner_c::createHeap() {
@@ -203,85 +24,20 @@ int daSpinner_c::createHeap() {
if (mpModel == NULL) {
return 0;
}
- field_0x588 = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x16);
- return mBck.init(field_0x588, 1, 2, 1.0f, 0, -1, false) != 0 ? 1 : 0;
-}
+ mpSpoutBck = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x16);
+ if (!mBck.init(mpSpoutBck, 1, 2, 1.0f, 0, -1, false)) {
+ return 0;
+ }
+
+ return 1;
+}
/* 804D1A50-804D1A70 0001B0 0020+00 1/1 0/0 0/0 .text daSpinner_createHeap__FP10fopAc_ac_c */
static int daSpinner_createHeap(fopAc_ac_c* i_this) {
- return static_cast<daSpinner_c*>(i_this)->createHeap();
+ return ((daSpinner_c*)i_this)->createHeap();
}
-/* ############################################################################################## */
-/* 804D4DA0-804D4DA4 000010 0004+00 0/1 0/0 0/0 .rodata @4241 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4241 = 10000.0f;
-COMPILER_STRIP_GATE(0x804D4DA0, &lit_4241);
-#pragma pop
-
-/* 804D4DA4-804D4DA8 000014 0004+00 0/1 0/0 0/0 .rodata @4242 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4242 = 0x42480A3D;
-COMPILER_STRIP_GATE(0x804D4DA4, &lit_4242);
-#pragma pop
-
-/* 804D4DA8-804D4DAC 000018 0004+00 0/4 0/0 0/0 .rodata @4243 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4243 = 58.0f;
-COMPILER_STRIP_GATE(0x804D4DA8, &lit_4243);
-#pragma pop
-
-/* 804D4DAC-804D4DB0 00001C 0004+00 0/1 0/0 0/0 .rodata @4244 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4244 = 0x4301FD71;
-COMPILER_STRIP_GATE(0x804D4DAC, &lit_4244);
-#pragma pop
-
-/* 804D4DB0-804D4DB4 000020 0004+00 0/1 0/0 0/0 .rodata @4245 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4245 = 35.0f;
-COMPILER_STRIP_GATE(0x804D4DB0, &lit_4245);
-#pragma pop
-
-/* 804D4DB4-804D4DB8 000024 0004+00 0/1 0/0 0/0 .rodata @4246 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4246 = 85.0f;
-COMPILER_STRIP_GATE(0x804D4DB4, &lit_4246);
-#pragma pop
-
-/* 804D4DB8-804D4DC0 000028 0004+04 0/9 0/0 0/0 .rodata @4247 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4247[4 + 4 /* padding */] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- /* padding */
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x804D4DB8, &lit_4247);
-#pragma pop
-
-/* 804D4DC0-804D4DC8 000030 0008+00 0/2 0/0 0/0 .rodata @4249 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4249[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D4DC0, &lit_4249);
-#pragma pop
-
/* 804D4EA8-804D4EEC 000000 0044+00 1/1 0/0 0/0 .data l_cylSrc */
static dCcD_SrcCyl l_cylSrc = {
{
@@ -297,157 +53,64 @@ static dCcD_SrcCyl l_cylSrc = {
}
};
-/* 804D4EEC-804D4F0C -00001 0020+00 1/0 0/0 0/0 .data l_daSpinner_Method */
-static actor_method_class l_daSpinner_Method = {
- (process_method_func)daSpinner_Create__FP10fopAc_ac_c,
- (process_method_func)daSpinner_Delete__FP11daSpinner_c,
- (process_method_func)daSpinner_Execute__FP11daSpinner_c,
- 0,
- (process_method_func)daSpinner_Draw__FP11daSpinner_c,
-};
-
-/* 804D4F0C-804D4F3C -00001 0030+00 0/0 0/0 1/0 .data g_profile_SPINNER */
-extern actor_process_profile_definition g_profile_SPINNER = {
- fpcLy_CURRENT_e, // mLayerID
- 4, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_SPINNER, // mProcName
- &g_fpcLf_Method.base, // sub_method
- 0x00000ABC, // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 687, // mPriority
- &l_daSpinner_Method, // sub_method
- 0x00060000, // mStatus
- fopAc_UNK_GROUP_5_e, // mActorType
- fopAc_CULLBOX_0_e, // cullType
-};
-
-/* 804D4F3C-804D4F48 000094 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
-};
-
-/* 804D4F48-804D4F54 0000A0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGLin */
-SECTION_DATA extern void* __vt__8cM3dGLin[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGLinFv,
-};
-
-/* 804D4F54-804D4F60 0000AC 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */
-SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_AcchCirFv,
-};
-
-/* 804D4F60-804D4F6C 0000B8 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
+/* 804D1A70-804D1D60 0001D0 02F0+00 1/1 0/0 0/0 .text create__11daSpinner_cFv */
+int daSpinner_c::create() {
+ fopAcM_SetupActor(this, daSpinner_c);
-/* 804D4F6C-804D4F78 0000C4 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
+ if (!fopAcM_entrySolidHeap(this, daSpinner_createHeap, 0x900)) {
+ return cPhs_ERROR_e;
+ }
-/* 804D4F78-804D4F84 0000D0 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
+ daAlink_c* player = daAlink_getAlinkActorClass();
+
+ mAcch.Set(this, 3, mAcchCir);
+ mAcch.SetWaterCheckOffset(10000.0f);
+ mAcch.OnLineCheck();
+ mAcch.SetWtrChkMode(2);
-/* 804D4F84-804D4F90 0000DC 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
+ mAcchCir[0].SetWall(50.01f, 58.0f);
+ mAcchCir[1].SetWall(129.99f, 35.0f);
+ mAcchCir[2].SetWall(player->field_0x598, 35.0f);
-/* 804D4F90-804D4FB4 0000E8 0024+00 3/3 0/0 0/0 .data __vt__13dBgS_LinkAcch */
-SECTION_DATA extern void* __vt__13dBgS_LinkAcch[9] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__13dBgS_LinkAcchFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804D4D78,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804D4D70,
-};
+ mPaPo.init(&mAcch, 85.0f, 85.0f);
-/* 804D4FB4-804D4FC0 00010C 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
+ mSound.init(&current.pos, 1);
-/* 804D1A70-804D1D60 0001D0 02F0+00 1/1 0/0 0/0 .text create__11daSpinner_cFv */
-int daSpinner_c::create() {
- // NONMATCHING
-}
+ mStts.Init(200, 0, this);
+ mCyl.Set(l_cylSrc);
+ mCyl.SetStts(&mStts);
+ mCyl.StartCAt(current.pos);
-/* 804D1D60-804D1DA8 0004C0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl()
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ this->model = mpModel;
-/* 804D1DA8-804D1DF0 000508 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab()
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ gravity = player->getSpinnerGravity();
+ maxFallSpeed = player->getSpinnerMaxFallSpeed();
+ field_0xa76 = 1;
-/* 804D1DF0-804D1E4C 000550 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts()
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
+ mAcch.CrrPos(dComIfG_Bgsp());
-/* 804D1E4C-804D1E88 0005AC 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz()
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
+ fopAcM_setStageLayer(this);
-/* 804D1E88-804D1EF8 0005E8 0070+00 3/2 0/0 0/0 .text __dt__13dBgS_LinkAcchFv */
-// dBgS_LinkAcch::~dBgS_LinkAcch()
-extern "C" void __dt__13dBgS_LinkAcchFv() {
- // NONMATCHING
-}
+ mBck.setFrame(mBck.getEndFrame());
+ mBck.setPlaySpeed(0.0f);
-/* 804D1EF8-804D1F68 000658 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir()
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
+ setMatrix();
+ setRoomInfo();
+ field_0xa82 = 0x82F;
-/* 804D1F68-804D1FB0 0006C8 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl()
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+ return cPhs_COMPLEATE_e;
}
/* 804D1FB0-804D1FD0 000710 0020+00 1/0 0/0 0/0 .text daSpinner_Create__FP10fopAc_ac_c */
static int daSpinner_Create(fopAc_ac_c* i_this) {
- return static_cast<daSpinner_c*>(i_this)->create();
+ return ((daSpinner_c*)i_this)->create();
}
/* 804D1FD0-804D21B8 000730 01E8+00 1/1 0/0 0/0 .text __dt__11daSpinner_cFv */
daSpinner_c::~daSpinner_c() {
- // NONMATCHING
+ mSound.deleteObject();
+ clearSpreadEffect();
+ clearPathMove();
}
/* 804D21B8-804D21E0 000918 0028+00 1/0 0/0 0/0 .text daSpinner_Delete__FP11daSpinner_c
@@ -465,10 +128,10 @@ void daSpinner_c::setRoomInfo() {
tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(mAcch.m_gnd);
} else {
roomNo = dComIfGp_roomControl_getStayNo();
-
}
+
tevStr.room_no = roomNo;
- field_0xa6e = dComIfGp_getReverb(roomNo);
+ mReverb = dComIfGp_getReverb(roomNo);
mStts.SetRoomId(roomNo);
fopAcM_SetRoomNo(this, roomNo);
}
@@ -477,233 +140,231 @@ void daSpinner_c::setRoomInfo() {
void daSpinner_c::setMatrix() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0xa84 + 90.0f, current.pos.z);
mDoMtx_stack_c::ZXYrotM(shape_angle);
- mDoMtx_stack_c::YrotM(field_0xa7e);
- MTXCopy(mDoMtx_stack_c::now, mpModel->mBaseTransformMtx);
+ mDoMtx_stack_c::YrotM(mRotY);
+
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
mBck.entry(mpModel->getModelData());
mpModel->calc();
}
-/* ############################################################################################## */
-/* 804D4DD0-804D4DD4 000040 0004+00 0/1 0/0 0/0 .rodata @4591 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4591 = 1.5f;
-COMPILER_STRIP_GATE(0x804D4DD0, &lit_4591);
-#pragma pop
-
-/* 804D4DD4-804D4DD8 000044 0004+00 0/2 0/0 0/0 .rodata @4592 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4592 = 3.0f;
-COMPILER_STRIP_GATE(0x804D4DD4, &lit_4592);
-#pragma pop
-
-/* 804D4DD8-804D4DDC 000048 0004+00 0/1 0/0 0/0 .rodata @4593 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4593 = 2.0f;
-COMPILER_STRIP_GATE(0x804D4DD8, &lit_4593);
-#pragma pop
-
-/* 804D4FC8-804D4FCC 000008 0001+03 1/1 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 804D4FCC-804D4FD0 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */
-#pragma push
-#pragma force_active on
-static u8 lit_1107[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FD0-804D4FD4 000010 0001+03 0/0 0/0 0/0 .bss @1105 */
-#pragma push
-#pragma force_active on
-static u8 lit_1105[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FD4-804D4FD8 000014 0001+03 0/0 0/0 0/0 .bss @1104 */
-#pragma push
-#pragma force_active on
-static u8 lit_1104[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FD8-804D4FDC 000018 0001+03 0/0 0/0 0/0 .bss @1099 */
-#pragma push
-#pragma force_active on
-static u8 lit_1099[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FDC-804D4FE0 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */
-#pragma push
-#pragma force_active on
-static u8 lit_1097[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FE0-804D4FE4 000020 0001+03 0/0 0/0 0/0 .bss @1095 */
-#pragma push
-#pragma force_active on
-static u8 lit_1095[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FE4-804D4FE8 000024 0001+03 0/0 0/0 0/0 .bss @1094 */
-#pragma push
-#pragma force_active on
-static u8 lit_1094[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FE8-804D4FEC 000028 0001+03 0/0 0/0 0/0 .bss @1057 */
-#pragma push
-#pragma force_active on
-static u8 lit_1057[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FEC-804D4FF0 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */
-#pragma push
-#pragma force_active on
-static u8 lit_1055[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FF0-804D4FF4 000030 0001+03 0/0 0/0 0/0 .bss @1053 */
-#pragma push
-#pragma force_active on
-static u8 lit_1053[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FF4-804D4FF8 000034 0001+03 0/0 0/0 0/0 .bss @1052 */
-#pragma push
-#pragma force_active on
-static u8 lit_1052[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FF8-804D4FFC 000038 0001+03 0/0 0/0 0/0 .bss @1014 */
-#pragma push
-#pragma force_active on
-static u8 lit_1014[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D4FFC-804D5000 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */
-#pragma push
-#pragma force_active on
-static u8 lit_1012[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D5000-804D5004 000040 0001+03 0/0 0/0 0/0 .bss @1010 */
-#pragma push
-#pragma force_active on
-static u8 lit_1010[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D5004-804D5008 000044 0001+03 0/0 0/0 0/0 .bss @1009 */
-#pragma push
-#pragma force_active on
-static u8 lit_1009[1 + 3 /* padding */];
-#pragma pop
-
-/* 804D5008-804D5014 000048 000C+00 0/1 0/0 0/0 .bss effDirection$4433 */
-#pragma push
-#pragma force_active on
-static u8 effDirection[12];
-#pragma pop
-
-/* 804D5014-804D5024 000054 000C+04 0/1 0/0 0/0 .bss @4437 */
-#pragma push
-#pragma force_active on
-static u8 lit_4437[12 + 4 /* padding */];
-#pragma pop
-
-/* 804D5024-804D5030 000064 000C+00 0/1 0/0 0/0 .bss particleScale$4436 */
-#pragma push
-#pragma force_active on
-static u8 particleScale[12];
-#pragma pop
+UNK_REL_BSS
/* 804D2320-804D25F4 000A80 02D4+00 1/1 0/0 0/0 .text setEffect__11daSpinner_cFv */
void daSpinner_c::setEffect() {
- // NONMATCHING
-}
+ static JGeometry::TVec3<f32> effDirection(0.0f, 1.0f, 0.0f);
+ static cXyz particleScale(1.5f, 1.5f, 1.5f);
-/* ############################################################################################## */
-/* 804D4DDC-804D4DE0 00004C 0004+00 0/2 0/0 0/0 .rodata @4930 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4930 = -20.0f;
-COMPILER_STRIP_GATE(0x804D4DDC, &lit_4930);
-#pragma pop
-
-/* 804D4DE0-804D4DE8 000050 0004+04 0/1 0/0 0/0 .rodata @4931 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4931[1 + 1 /* padding */] = {
- 0x4250CCCC,
- /* padding */
- 0x00000000,
-};
-COMPILER_STRIP_GATE(0x804D4DE0, &lit_4931);
-#pragma pop
-
-/* 804D4DE8-804D4DF0 000058 0008+00 0/3 0/0 0/0 .rodata @4932 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4932[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D4DE8, &lit_4932);
-#pragma pop
-
-/* 804D4DF0-804D4DF8 000060 0008+00 0/3 0/0 0/0 .rodata @4933 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4933[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D4DF0, &lit_4933);
-#pragma pop
-
-/* 804D4DF8-804D4E00 000068 0008+00 0/3 0/0 0/0 .rodata @4934 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4934[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D4DF8, &lit_4934);
-#pragma pop
-
-/* 804D4E00-804D4E04 000070 0004+00 0/1 0/0 0/0 .rodata @4935 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4935 = 0x3BB6365E;
-COMPILER_STRIP_GATE(0x804D4E00, &lit_4935);
-#pragma pop
-
-/* 804D4E04-804D4E08 000074 0004+00 0/1 0/0 0/0 .rodata @4936 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4936 = 0x4333D588;
-COMPILER_STRIP_GATE(0x804D4E04, &lit_4936);
-#pragma pop
-
-/* 804D4E08-804D4E0C 000078 0004+00 0/1 0/0 0/0 .rodata @4937 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4937 = 29.0f;
-COMPILER_STRIP_GATE(0x804D4E08, &lit_4937);
-#pragma pop
-
-/* 804D4E0C-804D4E10 00007C 0004+00 0/1 0/0 0/0 .rodata @4938 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4938 = 50.0f;
-COMPILER_STRIP_GATE(0x804D4E0C, &lit_4938);
-#pragma pop
+ cXyz effCenter(current.pos);
+ cXyz* sp24 = NULL;
+
+ if (mAcch.ChkWaterHit() && dComIfG_Bgsp().GetPolyAtt0(mAcch.m_wtr) != 6) {
+ if (mAcch.m_wtr.GetHeight() > mAcch.GetGroundH() && mAcch.m_wtr.GetHeight() > effCenter.y) {
+ effCenter.y = mAcch.m_wtr.GetHeight();
+ sp24 = &effCenter;
+ }
+ }
+
+ if (sp24 == NULL && mAcch.ChkGroundHit()) {
+ effCenter.y = mAcch.GetGroundH();
+
+ int sp20 = dComIfG_Bgsp().GetGroundCode(mAcch.m_gnd);
+ if (sp20 != 4 && sp20 != 10) {
+ sp24 = &effCenter;
+ }
+ }
+
+ mPaPo.setEffectCenter(&tevStr, &effCenter, 4, 0x60000, sp24, &current.angle, NULL, fopAcM_GetRoomNo(this), 0.0f, speedF);
+
+ for (int i = 0; i < 2; i++) {
+ u8 eff_type = mPaPo.getCenterEffType(i);
+ for (int j = 0; j < 4; j++) {
+ JPABaseEmitter* emitter = mPaPo.getCenterEmitter(i, j);
+
+ if (emitter != NULL) {
+ emitter->setDirection(effDirection);
+
+ if (eff_type == 0) {
+ emitter->setDirectionalSpeed(1.0f);
+ emitter->setGlobalParticleScale(particleScale);
+ } else if (eff_type == 1) {
+ emitter->setAwayFromCenterSpeed(3.0f);
+ emitter->setAwayFromAxisSpeed(3.0f);
+ emitter->setDirectionalSpeed(3.0f);
+ } else if (eff_type == 3) {
+ emitter->setRate(1.5f);
+ emitter->setAwayFromAxisSpeed(1.0f);
+ emitter->setGlobalParticleScale(particleScale);
+ } else if (eff_type == 4) {
+ emitter->setRate(1.5f);
+ emitter->setAwayFromCenterSpeed(2.0f);
+ emitter->setGlobalParticleScale(particleScale);
+ }
+ }
+ }
+ }
+}
/* 804D25F4-804D3048 000D54 0A54+00 1/1 0/0 0/0 .text posMove__11daSpinner_cFv */
int daSpinner_c::posMove() {
- // NONMATCHING
-}
+ daAlink_c* player = daAlink_getAlinkActorClass();
+
+ f32 move_speed;
+ if (!player->checkDemoSpinnerKeep()) {
+ if (player->checkDemoSpinnerKeepSpeed()) {
+ speedF = player->getSpinnerRideSpeedF();
+ }
+ move_speed = speedF * cM_scos(current.angle.x);
+ } else {
+ move_speed = 0.0f;
+ }
+
+ if (mpPathMove == NULL) {
+ speed.y += gravity;
+ if (speed.y < maxFallSpeed) {
+ speed.y = maxFallSpeed;
+ }
+ }
+
+ current.pos.x += move_speed * cM_ssin(current.angle.y);
+ current.pos.y += speed.y - (speedF * cM_ssin(current.angle.x));
+ current.pos.z += move_speed * cM_scos(current.angle.y);
+
+ if (mpPathMove != NULL) {
+ f32 var_f31 = speedF;
+ cM3dGLin sp60;
+ cXyz sp54;
+
+ while (var_f31 > 0.0f) {
+ Vec* curr_path_pos = &mpPathMove->m_points[mPathNo].m_position;
+ Vec* next_path_pos = getPathNextPos();
+
+ cXyz sp48(current.pos.x, current.pos.y - -20.0f, current.pos.z);
+ cXyz sp3C(curr_path_pos->x - next_path_pos->x, curr_path_pos->y - next_path_pos->y, curr_path_pos->z - next_path_pos->z);
+
+ int spC;
+ s16 spA = sp3C.atan2sX_Z();
+ sp3C.normalizeZP();
+ sp3C *= 58.0f;
+
+ sp3C.x += curr_path_pos->x;
+ sp3C.y += curr_path_pos->y;
+ sp3C.z += curr_path_pos->z;
+
+ sp60.set(sp3C, *next_path_pos);
+
+ f32 sp10;
+ if (!cM3d_Len3dSqPntAndSegLine(&sp60, &sp48, &sp54, &sp10)) {
+ if (setNextPathNum() && (mPathNo == 0 || mPathNo == mpPathMove->m_num - 1) && !dPath_ChkClose(mpPathMove)) {
+ var_f31 = 0.0f;
+ if (mpPathMove->m_points[mPathNo].mArg0 == 0) {
+ u8 sp8 = mPathNo;
+ setReflectAngle();
+ mPathNo = sp8;
+
+ if ((s16)(cM_atan2s(current.pos.x - next_path_pos->x, current.pos.z - next_path_pos->z) - spA) > 0) {
+ spA += 0x4000;
+ } else {
+ spA -= 0x4000;
+ }
+
+ field_0xab0.set(next_path_pos->x, next_path_pos->y, next_path_pos->z);
+ current.pos.set(next_path_pos->x + (52.199997f * cM_ssin(spA)), -20.0f + next_path_pos->y, next_path_pos->z + (52.199997f * cM_scos(spA)));
+ } else {
+ clearPathMove();
+ field_0xa74 = 1;
+ }
+ } else {
+ var_f31 -= field_0xab0.abs(*next_path_pos);
+ field_0xab0.set(next_path_pos->x, next_path_pos->y, next_path_pos->z);
+
+ sp3C = sp48 - field_0xab0;
+ if ((s16)(sp3C.atan2sX_Z() - current.angle.y) > 0) {
+ spC = 1;
+ } else {
+ spC = -1;
+ }
+ }
+
+ if (mpPathMove != NULL) {
+ curr_path_pos = &mpPathMove->m_points[mPathNo].m_position;
+ next_path_pos = getPathNextPos();
+ sp3C.set(next_path_pos->x - curr_path_pos->x, next_path_pos->y - curr_path_pos->y, next_path_pos->z - curr_path_pos->z);
+
+ spA = current.angle.y;
+ current.angle.y = sp3C.atan2sX_Z();
+ current.angle.x = sp3C.atan2sY_XZ();
+
+ if (var_f31 > 0.0f) {
+ spA = current.angle.y - spA;
+ var_f31 += 0.0055606803f * spA * spC;
+
+ if (var_f31 > 0.0f) {
+ sp3C.normalizeZP();
+ spA = current.angle.y + (spC << 0xE);
+ current.pos.set(curr_path_pos->x + (sp3C.x * var_f31), -20.0f + (curr_path_pos->y + (sp3C.y * var_f31)), curr_path_pos->z + (sp3C.z * var_f31));
+ } else {
+ spA = (spC << 0xE) + (current.angle.y + (spC * (179.8341f * fabsf(var_f31))));
+ current.pos.set(curr_path_pos->x, -20.0f + curr_path_pos->y, curr_path_pos->z);
+ }
+
+ current.pos.x += 29.0f * cM_ssin(spA);
+ current.pos.z += 29.0f * cM_scos(spA);
+ old.pos = current.pos;
+ }
+ }
+ } else {
+ var_f31 = 0.0f;
+ field_0xab0 = sp54;
+ }
+ }
+ } else if (mStts.GetCCMoveP() != NULL) {
+ current.pos += *mStts.GetCCMoveP();
+ }
+
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ if (mpPathMove == NULL) {
+ if (!mJumpFlg) {
+ if (!mAcch.ChkGroundHit()) {
+ if (current.angle.x < 0) {
+ mJumpFlg = true;
+ speed.y = speedF;
+ if (speed.y > player->getSpinnerRideSpeedF()) {
+ speed.y = player->getSpinnerRideSpeedF();
+ }
+ speed.y *= -player->getSpinnerJumpRate() * cM_ssin(current.angle.x);
+ } else {
+ f32 temp_f28 = mAcch.GetGroundH() - current.pos.y;
+ f32 var_f29 = current.pos.absXZ(old.pos) * cM_ssin(fopAcM_getPolygonAngle(mAcch.m_gnd, current.angle.y));
+ if (var_f29 < 0.0f) {
+ var_f29 = 0.0f;
+ }
+
+ if (temp_f28 < 0.0f && temp_f28 >= -mAcchCir[0].GetWallH() - var_f29) {
+ current.pos.y = mAcch.GetGroundH();
+ mAcch.SetGroundHit();
+ speed.y = 0.0f;
+ } else {
+ mJumpFlg = true;
+ }
+ }
+ }
+ } else if (mAcch.ChkGroundHit()) {
+ mJumpFlg = false;
+ } else {
+ mJumpFlg = true;
+ }
+ }
-/* 804D3048-804D3090 0017A8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */
-// cM3dGLin::~cM3dGLin()
-extern "C" void __dt__8cM3dGLinFv() {
- // NONMATCHING
+ if (mAcch.ChkWaterHit()) {
+ f32 temp_f27 = mAcch.m_wtr.GetHeight() - current.pos.y;
+ if ((temp_f27 > 50.0f || (dComIfG_Bgsp().GetPolyAtt0(mAcch.m_wtr) == 6 && temp_f27 >= 0.0f))) {
+ mDeleteFlg = true;
+ return 0;
+ }
+ }
+
+ return 1;
}
/* 804D3090-804D3174 0017F0 00E4+00 3/3 0/0 0/0 .text setReflectAngle__11daSpinner_cFv */
@@ -711,283 +372,557 @@ void daSpinner_c::setReflectAngle() {
if (mpPathMove != NULL) {
current.angle.y += 0x8000;
current.angle.x *= -1;
+
setNextPathNum();
- field_0xa73 *= -1;
+
+ mPathDirection *= -1;
field_0xa76 *= -1;
} else {
s16 angle = current.angle.y - field_0xa80;
- int l_abs = abs(angle);
- if (l_abs > 0x4800) {
+ if (abs(angle) > 0x4800) {
current.angle.y = (field_0xa80 << 1) - (current.angle.y + 0x8000);
- }
- else if (angle > 0x3800) {
+ } else if (angle > 0x3800) {
current.angle.y = field_0xa80 + 0x3800;
- }
- else if (angle < -0x3800) {
+ } else if (angle < -0x3800) {
current.angle.y = field_0xa80 - 0x3800;
}
}
}
-/* ############################################################################################## */
-/* 804D4E10-804D4E14 000080 0004+00 0/1 0/0 0/0 .rodata @5053 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5053 = -1.0f;
-COMPILER_STRIP_GATE(0x804D4E10, &lit_5053);
-#pragma pop
-
/* 804D3174-804D3468 0018D4 02F4+00 1/1 0/0 0/0 .text setWallHit__11daSpinner_cFsUl */
void daSpinner_c::setWallHit(s16 param_0, u32 param_1) {
- // NONMATCHING
-}
+ field_0xa80 = param_0;
+ setReflectAngle();
+
+ cXyz line_start(current.pos.x, current.pos.y + mAcchCir[0].GetWallH(), current.pos.z);
+ cXyz line_end(current.pos.x - (mAcchCir[0].GetWallR() * cM_ssin(param_0)), line_start.y, current.pos.z - (mAcchCir[0].GetWallR() * cM_scos(param_0)));
+ mLinChk.Set(&line_start, &line_end, this);
+
+ csXyz spC;
+ cXyz* var_r29;
+ if (dComIfG_Bgsp().LineCross(&mLinChk)) {
+ cM3dGPla plane;
+ dComIfG_Bgsp().GetTriPla(mLinChk, &plane);
+ var_r29 = mLinChk.GetCrossP();
+
+ spC.set(cM_atan2s(plane.mNormal.y, plane.mNormal.absXZ()), cM_atan2s(-plane.mNormal.x, -plane.mNormal.z), 0);
+ } else {
+ var_r29 = &line_end;
+ spC.set(0, param_0 + 0x8000, 0);
+ }
-/* 804D3468-804D34B0 001BC8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla()
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
-}
+ if (field_0xa78 == 0) {
+ daAlink_getAlinkActorClass()->itemHitSE(Z2SE_HIT_SPINNER, param_1, &mSound);
+ field_0xa78 = 10;
-/* ############################################################################################## */
-/* 804D4E14-804D4E18 000084 0004+00 0/1 0/0 0/0 .rodata @5091 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5091 = 20.0f;
-COMPILER_STRIP_GATE(0x804D4E14, &lit_5091);
-#pragma pop
+ if (field_0xa79 == 0) {
+ dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
+ dComIfGp_setHitMark(9, NULL, var_r29, &spC, NULL, 0);
+ }
+ }
+}
/* 804D34B0-804D3618 001C10 0168+00 1/1 0/0 0/0 .text setAnm__11daSpinner_cFv */
void daSpinner_c::setAnm() {
- if (mBck.isStop() && field_0xa75 != 0) {
- mBck.init(field_0x588, 1, -1, 1.0f, 0, -1, true);
+ if (mBck.isStop() && mTrigJump) {
+ mBck.init(mpSpoutBck, 1, -1, 1.0f, 0, -1, true);
daAlink_getAlinkActorClass()->seStartOnlyReverb(Z2SE_AL_SPINNER_EXTEND);
dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f));
- if (mJumpFlg == 0) {
+
+ if (!mJumpFlg) {
speed.y = 20.0f;
- mJumpFlg = 1;
- mButtonJump = 1;
+ mJumpFlg = true;
+ mButtonJump = true;
}
+
if (mpPathMove != NULL) {
- s16 targetAngle = cLib_targetAngleY(&mpPathMove->m_points[field_0xa72].m_position, &current.pos);
+ s16 targetAngle = cLib_targetAngleY(&mpPathMove->m_points[mPathNo].m_position, &current.pos);
if (s16(targetAngle - current.angle.y) > 0) {
current.angle.y += 0x3000;
} else {
current.angle.y -= 0x3000;
}
+
clearPathMove();
mAcch.ClrWallHit();
}
}
}
-
/* 804D3618-804D3694 001D78 007C+00 2/2 0/0 0/0 .text setNextPathNum__11daSpinner_cFv */
int daSpinner_c::setNextPathNum() {
- if (field_0xa72 == 0 && field_0xa73 == -1) {
- field_0xa72 = mpPathMove->m_num - 1;
- } else if (field_0xa72 == mpPathMove->m_num - 1 && field_0xa73 == 1) {
- field_0xa72 = 0;
+ if (mPathNo == 0 && mPathDirection == -1) {
+ mPathNo = mpPathMove->m_num - 1;
+ } else if (mPathNo == mpPathMove->m_num - 1 && mPathDirection == 1) {
+ mPathNo = 0;
} else {
- field_0xa72 += field_0xa73;
+ mPathNo += mPathDirection;
return 1;
}
+
return 0;
}
/* 804D3694-804D36F4 001DF4 0060+00 1/1 0/0 0/0 .text getPathNextPos__11daSpinner_cFv */
Vec* daSpinner_c::getPathNextPos() {
- s32 add = field_0xa72 + field_0xa73;
- if (add < 0) {
+ int next_point_no = mPathNo + mPathDirection;
+ if (next_point_no < 0) {
return &(mpPathMove->m_points + mpPathMove->m_num - 1)->m_position;
}
- if (add >= mpPathMove->m_num) {
- return &mpPathMove->m_points->m_position;
+
+ if (next_point_no >= mpPathMove->m_num) {
+ return &mpPathMove->m_points[0].m_position;
}
- return &mpPathMove->m_points[add].m_position;
+
+ return &mpPathMove->m_points[next_point_no].m_position;
}
/* 804D36F4-804D3774 001E54 0080+00 1/1 0/0 0/0 .text checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz
*/
int daSpinner_c::checkLineWallHit(cXyz* i_start, cXyz* i_end) {
mLinChk.Set(i_start, i_end, this);
- if (dComIfG_Bgsp().LineCross(&mLinChk) != 0) {
- if (dBgS_CheckBWallPoly(mLinChk) != 0 || daAlink_c::checkStageName("D_MN10A") != 0) {
+ if (dComIfG_Bgsp().LineCross(&mLinChk)) {
+ if (dBgS_CheckBWallPoly(mLinChk) || daAlink_c::checkStageName("D_MN10A")) {
return 1;
}
}
+
return 0;
}
-/* ############################################################################################## */
-/* 804D4E18-804D4E24 000088 000C+00 0/1 0/0 0/0 .rodata sideCheckVec0$5143 */
-#pragma push
-#pragma force_active on
-static const Vec sideCheckVec0 = {
- 30.0f, 10.0f, 5.0f,
-};
-#pragma pop
+/* 804D3774-804D3D60 001ED4 05EC+00 1/1 0/0 0/0 .text checkPathMove__11daSpinner_cFv */
+int daSpinner_c::checkPathMove() {
+ if (mpPathMove != NULL) {
+ return 1;
+ }
-/* 804D4E24-804D4E30 000094 000C+00 0/1 0/0 0/0 .rodata sideCheckVec1$5144 */
-#pragma push
-#pragma force_active on
-static const Vec sideCheckVec1 = {
- -30.0f, 10.0f, 5.0f,
-};
-#pragma pop
+ daTagSppath_c* sppath_tag = (daTagSppath_c*)mCyl.GetAtHitAc();
-/* 804D4E30-804D4E3C 0000A0 000C+00 0/1 0/0 0/0 .rodata initSide0$5145 */
-#pragma push
-#pragma force_active on
-static const Vec initSide0 = {
- 53.0f, 0.0f, 0.0f,
-};
-#pragma pop
+ if (mCyl.ChkAtHit() && mSpinnerTag == TAG_NONE && sppath_tag != NULL && fopAcM_GetName(sppath_tag) == PROC_Tag_Sppath) {
+ if (sppath_tag->getKeepPath() == field_0xa68) {
+ return 0;
+ }
-/* 804D4E3C-804D4E48 0000AC 000C+00 0/1 0/0 0/0 .rodata initSide1$5146 */
-#pragma push
-#pragma force_active on
-static const Vec initSide1 = {
- -53.0f, 0.0f, 0.0f,
-};
-#pragma pop
+ dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 1, cXyz(0.0f, 1.0f, 0.0f));
+ mpPathMove = sppath_tag->getKeepPath();
+ field_0xa68 = mpPathMove;
+ mJumpFlg = false;
+ speed.y = 0.0f;
+
+ int var_r27 = sppath_tag->getKeepPointNum();
+ int sp10;
+ if (var_r27 != mpPathMove->m_num - 1) {
+ sp10 = var_r27 + 1;
+ } else if (dPath_ChkClose(mpPathMove)) {
+ sp10 = 0;
+ } else {
+ sp10 = var_r27;
+ var_r27--;
+ }
-/* 804D4E48-804D4E54 0000B8 000C+00 0/1 0/0 0/0 .rodata initSideOld0$5147 */
-#pragma push
-#pragma force_active on
-static const Vec initSideOld0 = {
- 78.0f, 0.0f, 0.0f,
-};
-#pragma pop
+ dStage_dPnt_c* temp_r26 = &mpPathMove->m_points[var_r27];
+ dStage_dPnt_c* temp_r25 = &mpPathMove->m_points[sp10];
+ cXyz sp50(temp_r25->m_position.x - temp_r26->m_position.x,
+ temp_r25->m_position.y - temp_r26->m_position.y,
+ temp_r25->m_position.z - temp_r26->m_position.z);
+
+ s16 sp8 = sp50.atan2sX_Z();
+ cXyz sp44;
+ cXyz sp38;
+ cXyz sp2C;
+ cXyz sp20;
+
+ static const Vec sideCheckVec0 = {30.0f, 10.0f, 5.0f};
+ static const Vec sideCheckVec1 = {-30.0f, 10.0f, 5.0f};
+ static const Vec initSide0 = {53.0f, 0.0f, 0.0f};
+ static const Vec initSide1 = {-53.0f, 0.0f, 0.0f};
+ static const Vec initSideOld0 = {78.0f, 0.0f, 0.0f};
+ static const Vec initSideOld1 = {-78.0f, 0.0f, 0.0f};
+
+ mDoMtx_stack_c::transS(sppath_tag->current.pos);
+ mDoMtx_stack_c::YrotM(sp8);
+ mDoMtx_stack_c::multVec(&sideCheckVec0, &sp44);
+ mDoMtx_stack_c::multVec(&sideCheckVec1, &sp38);
+
+ int var_r24 = 0;
+ int spC = 1;
+ cM3dGPla sp5C;
+
+ if (checkLineWallHit(&sp44, &sp38)) {
+ var_r24 = 1;
+ mDoMtx_stack_c::multVec(&initSide0, &sp2C);
+ mDoMtx_stack_c::multVec(&initSideOld0, &sp20);
+ } else if (checkLineWallHit(&sp38, &sp44)) {
+ var_r24 = 1;
+ mDoMtx_stack_c::multVec(&initSide1, &sp2C);
+ mDoMtx_stack_c::multVec(&initSideOld1, &sp20);
+ spC = 0;
+ } else {
+ mDoMtx_stack_c::YrotM(-0x8000);
+ mDoMtx_stack_c::multVec(&sideCheckVec1, &sp44);
+ mDoMtx_stack_c::multVec(&sideCheckVec0, &sp38);
+
+ if (checkLineWallHit(&sp44, &sp38)) {
+ var_r24 = 1;
+ mDoMtx_stack_c::multVec(&initSide1, &sp2C);
+ mDoMtx_stack_c::multVec(&initSideOld1, &sp20);
+ } else if (checkLineWallHit(&sp38, &sp44)) {
+ var_r24 = 1;
+ mDoMtx_stack_c::multVec(&initSide0, &sp2C);
+ mDoMtx_stack_c::multVec(&initSideOld0, &sp20);
+ spC = 0;
+ }
+ }
-/* 804D4E54-804D4E60 0000C4 000C+00 0/1 0/0 0/0 .rodata initSideOld1$5148 */
-#pragma push
-#pragma force_active on
-static const Vec initSideOld1 = {
- -78.0f, 0.0f, 0.0f,
-};
-#pragma pop
+ if (sppath_tag->checkDirectionFront() || (sppath_tag->checkDirectionNone() && cLib_distanceAngleS(sp8, current.angle.y) < 0x4000)) {
+ current.angle.y = sp8;
+ current.angle.x = sp50.atan2sY_XZ();
+ mPathNo = var_r27;
+ mPathDirection = 1;
-/* 804D4E60-804D4E68 0000D0 0008+00 0/1 0/0 0/0 .rodata @5295 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5295[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D4E60, &lit_5295);
-#pragma pop
+ if (spC != 0) {
+ field_0xa76 = -1;
+ } else {
+ field_0xa76 = 1;
+ }
+ } else {
+ current.angle.y = sp8 + 0x8000;
+ current.angle.x = cM_atan2s(sp50.y, sp50.absXZ());
+ mPathNo = sp10;
+ mPathDirection = -1;
+
+ if (spC != 0) {
+ field_0xa76 = 1;
+ } else {
+ field_0xa76 = -1;
+ }
+ }
-/* 804D3774-804D3D60 001ED4 05EC+00 1/1 0/0 0/0 .text checkPathMove__11daSpinner_cFv */
-int daSpinner_c::checkPathMove() {
- // NONMATCHING
-}
+ if (var_r24 != 0) {
+ current.pos = sp2C;
+ old.pos = sp20;
+ old.pos.y += -20.0f;
+ } else {
+ current.pos = sppath_tag->current.pos;
+ }
-/* 804D4E68-804D4E6C 0000D8 0004+00 0/1 0/0 0/0 .rodata effName$5299 */
-#pragma push
-#pragma force_active on
-static const u16 effName[2] = {
- 2245,
- 2246,
-};
+ field_0xab0 = current.pos;
+ current.pos.y += -20.0f;
-#pragma pop
+ mAcchCir[0].SetWallR(58.0f);
+ mCyl.SetR(58.0f);
-/* 804D4E6C-804D4E70 0000DC 0004+00 0/1 0/0 0/0 .rodata @5361 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5361 = 10.0f;
-COMPILER_STRIP_GATE(0x804D4E6C, &lit_5361);
-#pragma pop
+ mRideMoveTime = daAlink_getAlinkActorClass()->getSpinnerRideMoveTime();
+
+ if (mpPathMove->field_0x7 == 0xFF) {
+ speedF = daAlink_getAlinkActorClass()->getSpinnerRideSpeedF();
+ } else {
+ speedF = mpPathMove->field_0x7;
+ }
+
+ return 1;
+ }
+
+ field_0xa68 = 0;
+ return 0;
+}
/* 804D3D60-804D3F14 0024C0 01B4+00 1/1 0/0 0/0 .text setSpreadEffect__11daSpinner_cFv */
void daSpinner_c::setSpreadEffect() {
- // NONMATCHING
+ u32* emitter_id = mSpreadEmitterIDs;
+
+ mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
+ if (field_0xa76 < 0) {
+ mDoMtx_stack_c::XrotM(0x7FFF);
+ }
+
+ mDoMtx_stack_c::get()[1][3] -= 10.0f;
+
+ for (int i = 0; i < 2; i++, emitter_id++) {
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(*emitter_id);
+
+ if (reflectAccept() || (emitter != NULL && !emitter->isEnableDeleteEmitter())) {
+ static const u16 effName[2] = {0x8C5, 0x8C6};
+ *emitter_id = dComIfGp_particle_set(*emitter_id, effName[i], &current.pos, &shape_angle, NULL);
+ }
+
+ emitter = dComIfGp_particle_getEmitter(*emitter_id);
+ if (emitter != NULL) {
+ emitter->setGlobalRTMatrix(mDoMtx_stack_c::get());
+ }
+ }
}
/* 804D3F14-804D3F8C 002674 0078+00 2/2 0/0 0/0 .text clearSpreadEffect__11daSpinner_cFv
*/
void daSpinner_c::clearSpreadEffect() {
for (int i = 0; i < 2; i++) {
- JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xa8c[i]);
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mSpreadEmitterIDs[i]);
if (emitter != NULL) {
emitter->stopDrawParticle();
}
}
}
-/* ############################################################################################## */
-/* 804D4E70-804D4E74 0000E0 0004+00 0/1 0/0 0/0 .rodata @5671 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5671 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x804D4E70, &lit_5671);
-#pragma pop
-
-/* 804D4E74-804D4E78 0000E4 0004+00 0/1 0/0 0/0 .rodata @5672 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5672 = 2330.0f;
-COMPILER_STRIP_GATE(0x804D4E74, &lit_5672);
-#pragma pop
-
-/* 804D4E78-804D4E7C 0000E8 0004+00 0/1 0/0 0/0 .rodata @5673 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5673 = 17.0f / 20.0f;
-COMPILER_STRIP_GATE(0x804D4E78, &lit_5673);
-#pragma pop
-
-/* 804D4E7C-804D4E80 0000EC 0004+00 0/1 0/0 0/0 .rodata @5674 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5674 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x804D4E7C, &lit_5674);
-#pragma pop
-
-/* 804D4E80-804D4E84 0000F0 0004+00 0/1 0/0 0/0 .rodata @5675 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5675 = 5.0f;
-COMPILER_STRIP_GATE(0x804D4E80, &lit_5675);
-#pragma pop
-
-/* 804D4E84-804D4E88 0000F4 0004+00 0/1 0/0 0/0 .rodata @5676 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5676 = 0.5f;
-COMPILER_STRIP_GATE(0x804D4E84, &lit_5676);
-#pragma pop
-
-/* 804D4E88-804D4E8C 0000F8 0004+00 0/1 0/0 0/0 .rodata @5677 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5677 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x804D4E88, &lit_5677);
-#pragma pop
-
-/* 804D4E8C-804D4E90 0000FC 0004+00 0/1 0/0 0/0 .rodata @5678 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5678 = 2000.0f;
-COMPILER_STRIP_GATE(0x804D4E8C, &lit_5678);
-#pragma pop
-
-/* 804D4E90-804D4E94 000100 0004+00 0/1 0/0 0/0 .rodata @5679 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5679 = 9.0f;
-COMPILER_STRIP_GATE(0x804D4E90, &lit_5679);
-#pragma pop
-
-/* 804D4E94-804D4E98 000104 0004+00 0/1 0/0 0/0 .rodata @5680 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5680 = 100.0f;
-COMPILER_STRIP_GATE(0x804D4E94, &lit_5680);
-#pragma pop
-
/* 804D3F8C-804D4B94 0026EC 0C08+00 1/1 0/0 0/0 .text execute__11daSpinner_cFv */
int daSpinner_c::execute() {
- // NONMATCHING
+ if (mDeleteFlg) {
+ clearSpreadEffect();
+ fopAcM_delete(this);
+ return 1;
+ }
+
+ int sp24 = 0;
+ mButtonJump = false;
+
+ daAlink_c* player = daAlink_getAlinkActorClass();
+ if (!player->checkGameOverWindow() && field_0xa78 != 0) {
+ field_0xa78--;
+ }
+
+ f32 pad_stick_value;
+ s16 move_angle;
+ if (dComIfGp_event_runCheck()) {
+ pad_stick_value = 0.0f;
+ move_angle = 0;
+ mTrigJump = false;
+ } else {
+ if (mSpinnerTag != TAG_NONE || mpPathMove != NULL || (mJumpFlg && daAlink_c::checkStageName("D_MN10A") && dComIfGs_isZoneSwitch(6, dComIfGp_roomControl_getStayNo()) && dComIfGs_isZoneSwitch(7, dComIfGp_roomControl_getStayNo()))) {
+ pad_stick_value = 0.0f;
+ } else {
+ pad_stick_value = mDoCPd_c::getStickValue(PAD_1);
+ }
+
+ move_angle = (mDoCPd_c::getStickAngle3D(PAD_1) + 0x10000 + dCam_getControledAngleY(dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)))) - 0x8000;
+
+#if VERSION == VERSION_SHIELD_DEBUG
+ if (dComIfG_getTrigB(PAD_1) && dComIfGp_getSelectItem(3) == fpcNm_ITEM_SPINNER) {
+#else
+ if (dComIfG_getTrigA(PAD_1)) {
+#endif
+ mTrigJump = true;
+ } else {
+ mTrigJump = false;
+ }
+
+ if (fopAcM_GetParam(this) != 0 && mSpinnerTag == TAG_NONE) {
+ setAnm();
+ }
+ }
+
+ if (mPathForceRemove) {
+ if (mpPathMove != NULL) {
+ clearPathMove();
+ mAcch.ClrWallHit();
+ }
+ mPathForceRemove = false;
+ }
+
+ bool sp10 = player->checkSpinnerRideOwn(this);
+ mRotY += field_0xa82 * field_0xa76;
+ if (reflectAccept()) {
+ mRotY += field_0xa76 * 2000;
+ }
+
+ mBck.play();
+
+ mSound.framework(0, mReverb);
+
+ if (fopAcM_GetParam(this) == 0) {
+ field_0xa7c += (int)(2330.0f * (0.85f + cM_rndF(0.3f)));
+ field_0xa84 = 5.0f * cM_ssin(field_0xa7c);
+ field_0xa98 = current.pos;
+
+ if (sp10 != 0) {
+ current.angle.y = player->current.angle.y;
+ } else if (!player->checkSpinnerReady()) {
+ clearSpreadEffect();
+ fopAcM_delete(this);
+ return 1;
+ }
+ } else if (mSpinnerTag != TAG_NONE) {
+ mRideMoveTime = player->getSpinnerRideMoveTime();
+ speedF = player->getSpinnerRideSpeedF();
+ mJumpFlg = false;
+ field_0xa76 = 1;
+
+ if (mSpinnerTag == TAG_START) {
+ clearPathMove();
+
+ f32 temp_f30 = current.pos.y;
+ if (cLib_chasePosXZ(&current.pos, field_0xaa4, speedF)) {
+ mSpinnerTag = 2;
+ speed.y = 0.0f;
+ field_0xa84 = 0.0f;
+ current.pos.y = temp_f30;
+ }
+ } else if (mSpinnerTag == 2) {
+ speed.y += gravity;
+ if (speed.y < maxFallSpeed) {
+ speed.y = maxFallSpeed;
+ }
+
+ if (cLib_chaseF(&current.pos.y, field_0xaa4.y, fabsf(speed.y))) {
+ mSpinnerTag = TAG_INTO;
+ field_0xa82 = 0x800;
+
+ dComIfGp_particle_setPolyColor(0xE7, mAcch.m_gnd, &player->current.pos, &tevStr, NULL, NULL, 0, NULL, -1, NULL);
+ dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 1, cXyz(0.0f, 1.0f, 0.0f));
+ }
+ } else {
+ current.pos = field_0xaa4;
+
+ if (mSpinnerTag != TAG_END) {
+ if (!dComIfGp_event_runCheck() && mTrigJump) {
+ field_0xa82 += 0x200;
+ if (field_0xa82 > 5000) {
+ field_0xa82 = 5000;
+ }
+ mSpinnerTag = TAG_INTO_INC_ROT;
+ } else {
+ field_0xa82 -= 0x40;
+ if (field_0xa82 < 0) {
+ field_0xa82 = 0;
+ }
+ mSpinnerTag = TAG_INTO;
+ }
+ }
+ }
+ } else {
+ field_0xa82 = 0x82F;
+ cLib_chaseF(&field_0xa84, 0.0f, 0.5f);
+
+ if (mRideMoveTime == 0) {
+ if (cLib_addCalc(&speedF, 0.0f, player->getSpinnerRideDecSpeedRate(), player->getSpinnerRideDecSpeedMax(), player->getSpinnerRideDecSpeedMin()) < 0.1f) {
+ mDeleteFlg = true;
+ return 1;
+ }
+ } else if (!player->checkDemoSpinnerKeep() && mpPathMove == NULL) {
+ mRideMoveTime--;
+ }
+
+ cM3dGPla tri;
+ s16 sp12;
+ if (mAcch.ChkGroundHit()) {
+ dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &tri);
+ sp12 = tri.mNormal.atan2sX_Z();
+ }
+
+ if (!checkPathMove()) {
+ if (mAcch.ChkWallHit() && field_0xa74 == 0) {
+ dBgS_AcchCir* acch_cir = mAcchCir;
+ for (int i = 0; i < 3; i++, acch_cir++) {
+ if (acch_cir->ChkWallHit()) {
+ setWallHit(acch_cir->GetWallAngleY(), dKy_pol_sound_get(acch_cir));
+ break;
+ }
+ }
+ } else if (mAcch.ChkGroundHit() && tri.mNormal.y < player->getSlideLimit() && dComIfG_Bgsp().GetSpecialCode(mAcch.m_gnd) != 2 && abs((s16)(sp12 - current.angle.y)) > 0x4000) {
+ setWallHit(sp12, dKy_pol_sound_get(&mAcch.m_gnd));
+ } else if (mCyl.ChkAtHit() && (mCyl.ChkAtShieldHit() || (mCyl.GetAtHitGObj() != NULL && ((dCcD_GObjInf*)mCyl.GetAtHitGObj())->ChkTgSpinnerReflect()))) {
+ cXyz sp58;
+ if (mCyl.GetAtHitAc() != NULL) {
+ sp58 = current.pos - mCyl.GetAtHitAc()->current.pos;
+ } else {
+ sp58 = current.pos - *mCyl.GetAtHitPosP();
+ }
+
+ field_0xa80 = sp58.atan2sX_Z();
+ setReflectAngle();
+ } else if (sp10 != 0 && pad_stick_value > 0.3f) {
+ cLib_addCalcAngleS(&current.angle.y, move_angle, 4, player->getSpinnerRideRotAngleMax(), player->getSpinnerRideRotAngleMin());
+ }
+ }
+
+ if (sp10 != 0) {
+ mCyl.OffCoSPrmBit(0x10);
+ } else {
+ mCyl.OnCoSPrmBit(0x10);
+ }
+
+ field_0xa74 = 0;
+ }
+
+ s16 var_r27;
+ if (mSpinnerTag != TAG_NONE || mpPathMove != NULL || sp24 != 0) {
+ var_r27 = 0;
+ } else {
+ var_r27 = ((shape_angle.y - current.angle.y) / player->getSpinnerRideRotAngleMax()) * 1500;
+ }
+
+ cLib_addCalcAngleS(&shape_angle.z, var_r27, 3, 300, 50);
+
+ if (mSpinnerTag != TAG_NONE || mpPathMove != NULL) {
+ var_r27 = 0;
+ } else {
+ var_r27 = 2000.0f * (speedF / player->getSpinnerRideSpeedF());
+ if (var_r27 > 2000) {
+ var_r27 = 2000;
+ }
+ }
+
+ cLib_addCalcAngleS(&shape_angle.x, var_r27, 3, 300, 50);
+ shape_angle.y = current.angle.y;
+
+ if (mSpinnerTag == TAG_NONE) {
+ if (!player->checkGameOverWindow() && !posMove()) {
+ return 1;
+ }
+
+ if (!dComIfGp_event_runCheck() && speedF > 3.0f && field_0xa98.abs2XZ(current.pos) < 9.0f) {
+ field_0xa79++;
+ if (field_0xa79 > 30) {
+ mDeleteFlg = true;
+ }
+ } else {
+ field_0xa79 = 0;
+ field_0xa98 = current.pos;
+ }
+ } else {
+ field_0xa79 = 0;
+ field_0xa98 = current.pos;
+ cXyz sp4C(speed);
+
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ current.pos = field_0xa98;
+ speed = sp4C;
+ }
+
+ setRoomInfo();
+ setMatrix();
+ setEffect();
+
+ if (mpPathMove == NULL) {
+ if (mAcch.ChkGroundHit()) {
+ current.angle.x = fopAcM_getPolygonAngle(mAcch.m_gnd, current.angle.y);
+ } else {
+ current.angle.x = 0;
+ }
+ }
+
+ mCyl.MoveCAt(current.pos);
+ dComIfG_Ccsp()->Set(&mCyl);
+ g_dComIfG_gameInfo.play.mCcs.mMass_Mng.Set(&mCyl, 1);
+
+ if (reflectAccept()) {
+ if (mpPathMove != NULL) {
+ mAcchCir[0].SetWallR(58.0f);
+ mCyl.SetR(58.0f);
+ } else {
+ mAcchCir[0].SetWallR(100.0f);
+ mCyl.SetR(100.0f);
+ }
+
+ mCyl.SetAtAtp(2);
+ } else {
+ mAcchCir[0].SetWallR(58.0f);
+ mCyl.SetR(58.0f);
+ mCyl.SetAtAtp(1);
+ }
+
+ setSpreadEffect();
+ return 1;
}
/* 804D4B94-804D4BB4 0032F4 0020+00 1/0 0/0 0/0 .text daSpinner_Execute__FP11daSpinner_c
@@ -996,224 +931,58 @@ static int daSpinner_Execute(daSpinner_c* i_this) {
return i_this->execute();
}
-/* ############################################################################################## */
-/* 804D4E98-804D4E9C 000108 0004+00 0/1 0/0 0/0 .rodata @5723 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5723 = 70.0f;
-COMPILER_STRIP_GATE(0x804D4E98, &lit_5723);
-#pragma pop
-
-/* 804D4E9C-804D4EA0 00010C 0004+00 0/1 0/0 0/0 .rodata @5724 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5724 = 300.0f;
-COMPILER_STRIP_GATE(0x804D4E9C, &lit_5724);
-#pragma pop
-
/* 804D4BB4-804D4D08 003314 0154+00 1/1 0/0 0/0 .text draw__11daSpinner_cFv */
int daSpinner_c::draw() {
- // NONMATCHING
-}
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
-/* 804D4D08-804D4D28 003468 0020+00 1/0 0/0 0/0 .text daSpinner_Draw__FP11daSpinner_c */
-static int daSpinner_Draw(daSpinner_c* i_this) {
- return i_this->draw();
-}
+ if ((daAlink_getAlinkActorClass()->checkSpinnerReady() && daAlink_getAlinkActorClass()->gravity >= 0.0f) || mDeleteFlg) {
+ return 1;
+ }
-/* 804D4D28-804D4D70 003488 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts()
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
+ mDoExt_modelEntryDL(mpModel);
+ daMirror_c::entry(mpModel);
-/* 804D4D70-804D4D78 0034D0 0008+00 1/0 0/0 0/0 .text @36@__dt__13dBgS_LinkAcchFv */
-static void func_804D4D70() {
- // NONMATCHING
-}
+ if (!daAlink_getAlinkActorClass()->checkSpinnerRideOwn(this)) {
+ cXyz sp8(current.pos.x, 70.0f + current.pos.y, current.pos.z);
+ field_0xa94 = dComIfGd_setShadow(field_0xa94, 1, mpModel, &sp8, 300.0f, 0.0f, sp8.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ }
-/* 804D4D78-804D4D80 0034D8 0008+00 1/0 0/0 0/0 .text @20@__dt__13dBgS_LinkAcchFv */
-static void func_804D4D78() {
- // NONMATCHING
+ return 1;
}
-/* ############################################################################################## */
-/* 804D5030-804D5034 000070 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5030[4];
-#pragma pop
-
-/* 804D5034-804D5038 000074 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5034[4];
-#pragma pop
-
-/* 804D5038-804D503C 000078 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5038[4];
-#pragma pop
-
-/* 804D503C-804D5040 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D503C[4];
-#pragma pop
-
-/* 804D5040-804D5044 000080 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5040[4];
-#pragma pop
-
-/* 804D5044-804D5048 000084 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5044[4];
-#pragma pop
-
-/* 804D5048-804D504C 000088 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5048[4];
-#pragma pop
-
-/* 804D504C-804D5050 00008C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_804D504C[4];
-#pragma pop
-
-/* 804D5050-804D5054 000090 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5050[4];
-#pragma pop
-
-/* 804D5054-804D5058 000094 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5054[4];
-#pragma pop
-
-/* 804D5058-804D505C 000098 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5058[4];
-#pragma pop
-
-/* 804D505C-804D5060 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D505C[4];
-#pragma pop
-
-/* 804D5060-804D5064 0000A0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5060[4];
-#pragma pop
-
-/* 804D5064-804D5068 0000A4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5064[4];
-#pragma pop
-
-/* 804D5068-804D506C 0000A8 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5068[4];
-#pragma pop
-
-/* 804D506C-804D5070 0000AC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804D506C[4];
-#pragma pop
-
-/* 804D5070-804D5074 0000B0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5070[4];
-#pragma pop
-
-/* 804D5074-804D5078 0000B4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5074[4];
-#pragma pop
-
-/* 804D5078-804D507C 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5078[4];
-#pragma pop
-
-/* 804D507C-804D5080 0000BC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D507C[4];
-#pragma pop
-
-/* 804D5080-804D5084 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5080[4];
-#pragma pop
+/* 804D4D08-804D4D28 003468 0020+00 1/0 0/0 0/0 .text daSpinner_Draw__FP11daSpinner_c */
+static int daSpinner_Draw(daSpinner_c* i_this) {
+ return i_this->draw();
+}
-/* 804D5084-804D5088 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5084[4];
-#pragma pop
+/* 804D4EEC-804D4F0C -00001 0020+00 1/0 0/0 0/0 .data l_daSpinner_Method */
+static actor_method_class l_daSpinner_Method = {
+ (process_method_func)daSpinner_Create,
+ (process_method_func)daSpinner_Delete,
+ (process_method_func)daSpinner_Execute,
+ (process_method_func)NULL,
+ (process_method_func)daSpinner_Draw,
+};
-/* 804D5088-804D508C 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D5088[4];
-#pragma pop
+/* 804D4F0C-804D4F3C -00001 0030+00 0/0 0/0 1/0 .data g_profile_SPINNER */
+extern actor_process_profile_definition g_profile_SPINNER = {
+ fpcLy_CURRENT_e, // mLayerID
+ 4, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_SPINNER, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daSpinner_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 687, // mPriority
+ &l_daSpinner_Method, // sub_method
+ 0x00060000, // mStatus
+ fopAc_UNK_GROUP_5_e, // mActorType
+ fopAc_CULLBOX_0_e, // cullType
+};
-/* 804D508C-804D5090 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D508C[4];
-#pragma pop
-
-/* 804D5090-804D5094 0000D0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5090[4];
-#pragma pop
-
-/* 804D5094-804D5098 0000D4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JAUSectionHeap> */
-#pragma push
-#pragma force_active on
-static u8 data_804D5094[4];
-#pragma pop
-
-/* 804D4EA0-804D4EA0 000110 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+AUDIO_INSTANCES
+struct JAUSectionHeap;
+JAUSectionHeap* JASGlobalInstance<JAUSectionHeap>::sInstance;
diff --git a/src/d/actor/d_flower.inc b/src/d/actor/d_flower.inc
index 6b484de8ae..e4362ca5a3 100644
--- a/src/d/actor/d_flower.inc
+++ b/src/d/actor/d_flower.inc
@@ -1,6 +1,326 @@
+#include "d/actor/d_a_grass.h"
+#include "d/d_com_inf_game.h"
+#include "d/actor/d_a_player.h"
+#include "d/d_s_play.h"
+#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
+#include "SSystem/SComponent/c_counter.h"
+
+/* 80524BD8-805253D8 001A00 0800+00 0/1 0/0 0/0 .data l_J_Ohana00_64TEX */
+const u16 l_J_Ohana00_64TEX__width = 63;
+const u16 l_J_Ohana00_64TEX__height = 63;
+#include "assets/l_J_Ohana00_64TEX.h"
+
+/* 805253D8-8052569C 002200 02C4+00 0/1 0/0 0/0 .data l_flowerPos */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerPos[708] = {
+ 0xC0, 0x8C, 0x2C, 0xF7, 0x42, 0x05, 0xBC, 0xDF, 0xC1, 0xA1, 0x00, 0x70, 0xBF, 0x50, 0x51, 0xB9,
+ 0x42, 0x12, 0x58, 0xAD, 0xC0, 0xDE, 0xCE, 0x40, 0xC1, 0x04, 0x67, 0x23, 0x41, 0xE5, 0x87, 0x25,
+ 0xC1, 0x1B, 0xF3, 0xF8, 0xC1, 0x8F, 0x17, 0x3E, 0x42, 0x05, 0x7F, 0xC6, 0xC1, 0x83, 0x9B, 0xFC,
+ 0xC1, 0x65, 0x1D, 0x1B, 0x42, 0x12, 0x1B, 0x94, 0xC0, 0x52, 0x78, 0xE2, 0x41, 0x4A, 0xF2, 0x65,
+ 0x41, 0xB8, 0x6D, 0xEC, 0xC1, 0x05, 0xB8, 0xB9, 0x41, 0x59, 0xA0, 0x35, 0x41, 0xC8, 0x8E, 0xEA,
+ 0x3F, 0xD7, 0x00, 0xBD, 0x40, 0xFD, 0x20, 0x08, 0x41, 0xA5, 0x7C, 0x50, 0xC0, 0x1A, 0x58, 0x21,
+ 0x40, 0x45, 0x4A, 0xF1, 0x41, 0xD5, 0xC3, 0x79, 0xC1, 0x03, 0x76, 0xC0, 0x40, 0x80, 0x01, 0x19,
+ 0x41, 0xE5, 0xE4, 0x79, 0x3F, 0xE9, 0x10, 0x80, 0xC0, 0xC5, 0xE3, 0xA8, 0x41, 0x8D, 0x10, 0xEF,
+ 0x41, 0x5D, 0x5E, 0x8F, 0xC1, 0x83, 0x4F, 0x3A, 0x41, 0x95, 0x37, 0x4A, 0x41, 0x13, 0xAB, 0xB0,
+ 0xC1, 0x0B, 0x2F, 0x13, 0x41, 0x82, 0x79, 0x28, 0x40, 0xBC, 0x27, 0x0F, 0xBF, 0xE5, 0x81, 0x9D,
+ 0x41, 0xBD, 0xAD, 0xB1, 0x40, 0xAD, 0xAF, 0x4F, 0xC1, 0x40, 0x5C, 0xAB, 0x41, 0xC5, 0xD4, 0x0B,
+ 0x3F, 0x52, 0x4A, 0x06, 0xC1, 0x92, 0x9C, 0x90, 0x41, 0x6B, 0x5E, 0x96, 0xC1, 0x70, 0xB5, 0x34,
+ 0x40, 0x09, 0xC7, 0xFC, 0x41, 0xA1, 0xD1, 0xA9, 0xC1, 0x99, 0xED, 0xD6, 0x40, 0x93, 0x3C, 0x3E,
+ 0x41, 0x91, 0x1A, 0x4B, 0xC0, 0xFD, 0x15, 0x96, 0xC1, 0x7E, 0x0D, 0x00, 0x41, 0x49, 0xEF, 0xDC,
+ 0xC0, 0x6D, 0x90, 0xAC, 0x40, 0x51, 0xDE, 0xF0, 0x40, 0x89, 0x1C, 0x93, 0xBE, 0xF1, 0xC4, 0x11,
+ 0xC1, 0x70, 0xB0, 0x8B, 0x40, 0xFE, 0x20, 0x45, 0x41, 0x30, 0xC6, 0x50, 0xC1, 0xA1, 0x7C, 0x11,
+ 0x41, 0x24, 0xCB, 0xE5, 0x3F, 0xE9, 0xDE, 0xBE, 0xBF, 0xEE, 0x7E, 0xD8, 0x40, 0xD4, 0x94, 0x18,
+ 0xC1, 0x1B, 0x18, 0xC1, 0xC1, 0x84, 0x20, 0x71, 0x40, 0xF3, 0x8A, 0x69, 0x40, 0x98, 0xEA, 0x1F,
+ 0x40, 0x97, 0xB4, 0x48, 0x41, 0x51, 0xF6, 0x25, 0x40, 0xA6, 0xAE, 0x30, 0x40, 0x5F, 0xA7, 0xB1,
+ 0x41, 0x89, 0x17, 0x78, 0x41, 0x75, 0xAC, 0x70, 0xC1, 0x8E, 0x18, 0x8E, 0x41, 0x39, 0xFE, 0x02,
+ 0x41, 0x6E, 0xCA, 0x67, 0x40, 0x9E, 0x6A, 0x68, 0x41, 0x10, 0x81, 0x11, 0x41, 0x1B, 0x6F, 0x7F,
+ 0x40, 0xAD, 0x4B, 0x29, 0x41, 0x3B, 0x3A, 0x41, 0xC1, 0x41, 0x4C, 0x98, 0x41, 0x7E, 0x28, 0x15,
+ 0x41, 0x6F, 0x56, 0x2E, 0xC1, 0x37, 0x57, 0x88, 0x41, 0x76, 0xB7, 0xB5, 0x41, 0x44, 0x9C, 0xFE,
+ 0x41, 0x25, 0x64, 0x90, 0x40, 0xE2, 0xFC, 0xE5, 0x41, 0xA7, 0xF4, 0x9C, 0xBF, 0xE7, 0xAE, 0x14,
+ 0x41, 0x0A, 0x36, 0x26, 0x41, 0xA4, 0x39, 0xDE, 0xC0, 0x24, 0xAB, 0x93, 0xBB, 0xF0, 0x06, 0x8E,
+ 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x16, 0x81, 0x13, 0xBD, 0x88, 0xA2, 0x66, 0xC1, 0x20, 0x00, 0x00,
+ 0x3F, 0x1D, 0xDC, 0x0E, 0x40, 0xF1, 0x74, 0x95, 0x41, 0xA6, 0x44, 0xA9, 0xC0, 0x36, 0xA5, 0x59,
+ 0x41, 0x02, 0xFB, 0x9C, 0x41, 0xA5, 0xE9, 0xDA, 0xBF, 0xC3, 0xB5, 0x4A, 0xBC, 0xD0, 0x6B, 0xBE,
+ 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x20, 0x46, 0x20, 0xBD, 0x47, 0x89, 0x61, 0xC1, 0x1F, 0xFF, 0xFF,
+ 0x3F, 0x14, 0x35, 0xDF, 0xC0, 0xFA, 0x9D, 0xC7, 0x41, 0x85, 0xC1, 0xB7, 0x40, 0xAA, 0xE7, 0x6F,
+ 0xC1, 0x10, 0x29, 0xEB, 0x41, 0x80, 0x9F, 0x20, 0x40, 0xD0, 0x7A, 0xD1, 0x3E, 0xC2, 0x2B, 0x7C,
+ 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x29, 0xC0, 0x01, 0x3F, 0x38, 0x85, 0x7F, 0xC1, 0x1F, 0xFF, 0xFF,
+ 0x3E, 0xAF, 0xF4, 0x56, 0xC0, 0xFD, 0x71, 0xD8, 0x41, 0x83, 0xAB, 0x96, 0x40, 0xCE, 0xD3, 0xB1,
+ 0xC1, 0x0E, 0xBE, 0xA4, 0x41, 0x82, 0xB5, 0x43, 0x40, 0xAC, 0x90, 0x1F, 0x3E, 0xD9, 0x21, 0x68,
+ 0xC1, 0x20, 0x00, 0x00, 0x3E, 0xBF, 0x6C, 0x48, 0x3F, 0x2D, 0xCF, 0xBC, 0xC1, 0x20, 0x00, 0x00,
+ 0x3F, 0x21, 0x31, 0x44, 0xC0, 0xF8, 0xE0, 0x22, 0x41, 0xE8, 0x4B, 0x4B, 0xC1, 0x14, 0x36, 0x1F,
+ 0xC1, 0x0C, 0x7F, 0xA6, 0x41, 0xE4, 0x93, 0x45, 0xC1, 0x24, 0x12, 0xDA, 0xC0, 0x01, 0x25, 0x39,
+ 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB5, 0xEB, 0x3A, 0xBF, 0xF6, 0x43, 0x3D, 0xC1, 0x1F, 0xFF, 0xFE,
+ 0x3F, 0xC2, 0x77, 0x2D, 0xC1, 0x0B, 0x64, 0x82, 0x41, 0xE6, 0x84, 0x99, 0xC1, 0x15, 0x34, 0xD0,
+ 0xC0, 0xFB, 0x14, 0x70, 0x41, 0xE6, 0x5A, 0x05, 0xC1, 0x23, 0x13, 0xB7, 0xBF, 0xF7, 0x6B, 0x09,
+ 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xB7, 0x60, 0x63, 0xC0, 0x00, 0x83, 0x99, 0xC1, 0x20, 0x00, 0x01,
+ 0x3F, 0xC1, 0x1A, 0x97, 0xC0, 0xCA, 0x0C, 0x4E, 0x41, 0x9A, 0x38, 0x78, 0xC0, 0xD2, 0x29, 0xBB,
+ 0xC0, 0xE2, 0xE4, 0x1F, 0x41, 0x97, 0x6E, 0x73, 0xC0, 0xEA, 0xBD, 0x92, 0xC0, 0xE1, 0x27, 0x37,
+ 0x41, 0x98, 0xE3, 0x73, 0xC0, 0xD3, 0xBD, 0x8E, 0xC0, 0xCB, 0xC6, 0x04, 0x41, 0x98, 0xC3, 0x84,
+ 0xC0, 0xE9, 0x27, 0x8D,
+};
+#pragma pop
+
+/* 8052569C-80525750 0024C4 00B4+00 0/1 0/0 0/0 .data l_flowerNormal */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerNormal[180] = {
+ 0x3C, 0x8D, 0x2C, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x46, 0xF7, 0xA1, 0x3C, 0x76, 0x83,
+ 0x7F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x12, 0x5F, 0xE9, 0xBB, 0xE5, 0xA3, 0x5D, 0x3F, 0x7F,
+ 0xF5, 0xF9, 0x3C, 0x83, 0x57, 0xA3, 0x3B, 0xF9, 0xB1, 0x31, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C,
+ 0x81, 0x0A, 0x57, 0xBC, 0x80, 0x86, 0x38, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xE2, 0xEF,
+ 0xBC, 0x43, 0xEB, 0x7D, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x4E, 0x3C, 0x3C, 0x4B, 0x2D,
+ 0x90, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x4A, 0x42, 0xAF, 0x3C, 0x4F, 0x0B, 0x6B, 0x3F, 0x7F,
+ 0xF5, 0xF9, 0xBC, 0x46, 0x4B, 0xA9, 0x3C, 0x4B, 0xF2, 0xB2, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C,
+ 0x49, 0x7D, 0x8D, 0x3C, 0x8D, 0x2A, 0x20, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0x47, 0x5C, 0x4B,
+ 0xBC, 0x80, 0x84, 0x1F, 0x3F, 0x7F, 0xF5, 0xF9, 0x3B, 0xFD, 0xF3, 0xB6, 0xBC, 0x43, 0xFC,
+ 0x44, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x51, 0x3D, 0x75, 0x3C, 0x4B, 0x3E, 0x57, 0x3F, 0x7F,
+ 0xF5, 0xF9, 0xBC, 0x4A, 0x31, 0xE8, 0x3C, 0x4F, 0x07, 0x3A, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC,
+ 0x46, 0x54, 0x0D, 0x3C, 0x4B, 0xEE, 0x80, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x49, 0x81, 0xBF,
+};
+#pragma pop
+
+/* 80525750-80525758 002578 0008+00 0/1 0/0 0/0 .data l_flowerColor */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerColor[8] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xB2, 0xB2, 0xFF,
+};
+#pragma pop
+
+/* 80525758-80525898 002580 0138+08 0/1 0/0 0/0 .data l_flowerTexCoord */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerTexCoord[] = {
+ 0x40, 0x40, 0xD0, 0xEA, 0x3D, 0x69, 0x70, 0x72, 0x40, 0x7D, 0xD8, 0x30, 0x3F, 0x81, 0x3D, 0xC9,
+ 0x40, 0x40, 0xCE, 0x85, 0x3F, 0x81, 0x3D, 0xC9, 0x40, 0x01, 0xDD, 0x33, 0x3F, 0x81, 0x3D, 0xC9,
+ 0x40, 0x40, 0xD0, 0xEA, 0x3F, 0xF9, 0x46, 0xD4, 0x40, 0x00, 0xCD, 0xB8, 0xBF, 0x7F, 0xD4, 0x39,
+ 0x40, 0x40, 0xC2, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0xC8, 0x3F, 0x3E, 0xFF, 0xD4, 0x39,
+ 0x3F, 0xC1, 0xA6, 0x61, 0xBE, 0xFF, 0xD4, 0x39, 0x40, 0x00, 0xCD, 0xB8, 0x3F, 0x7F, 0xD4, 0x39,
+ 0x3F, 0x81, 0xB1, 0x53, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x49, 0x75, 0x29, 0xBD, 0xFA, 0x4F, 0x87,
+ 0x3C, 0x54, 0x88, 0x83, 0xBD, 0xFA, 0x4F, 0x87, 0x3C, 0xF8, 0x85, 0x4D, 0xBF, 0x27, 0x85, 0x40,
+ 0x3D, 0x01, 0x8D, 0x69, 0xBF, 0x27, 0x98, 0x20, 0xBD, 0x44, 0x30, 0xB1, 0xBD, 0xFC, 0xC3, 0xA0,
+ 0xBB, 0xEE, 0x06, 0xD9, 0xBD, 0xFC, 0xC3, 0xA0, 0xBC, 0xF4, 0x1F, 0x21, 0xBF, 0x27, 0x90, 0xA8,
+ 0xBD, 0x00, 0x00, 0x00, 0xBF, 0x27, 0x92, 0x7D, 0xBE, 0x03, 0x5A, 0x86, 0xBD, 0x67, 0x4C, 0x0A,
+ 0xBE, 0x03, 0x5A, 0x86, 0xBC, 0x82, 0xCD, 0x3A, 0xBF, 0x25, 0x30, 0x59, 0xBD, 0x06, 0x8E, 0xC5,
+ 0xBF, 0x25, 0xFA, 0x66, 0xBD, 0x2F, 0x2B, 0x67, 0xBE, 0x03, 0x59, 0x79, 0x3D, 0x40, 0x8E, 0x9B,
+ 0xBE, 0x03, 0x59, 0x79, 0x3B, 0xAF, 0xE6, 0x0C, 0xBF, 0x25, 0xB3, 0x4A, 0x3C, 0x9E, 0x81, 0xCB,
+ 0xBF, 0x25, 0xD9, 0x3C, 0x3C, 0xF1, 0xE6, 0xCD, 0x3E, 0x1C, 0xD0, 0x78, 0x3D, 0x36, 0xDC, 0xA0,
+ 0x3E, 0x1C, 0xD0, 0x78, 0x3B, 0x48, 0x68, 0xBA, 0x3F, 0x59, 0x32, 0x61, 0x3C, 0xDD, 0x5F, 0x57,
+ 0x3F, 0x59, 0x61, 0xF6, 0x3C, 0xFB, 0x13, 0x9D, 0x3E, 0x1C, 0xD0, 0x78, 0xBB, 0xEB, 0xED, 0xFA,
+ 0x3E, 0x1C, 0xD0, 0x78, 0xBD, 0x47, 0xD3, 0xD4, 0x3F, 0x59, 0x49, 0x41, 0xBC, 0xCB, 0x3E, 0x57,
+ 0x3F, 0x59, 0x4B, 0x6A, 0xBC, 0xAD, 0x94, 0x8E, 0x3E, 0xA7, 0x7F, 0x28, 0x3D, 0x28, 0x87, 0xA9,
+ 0x3E, 0xA7, 0x67, 0x4D, 0x3C, 0x14, 0x46, 0x74, 0x3E, 0xA7, 0x73, 0xE2, 0xBC, 0x2F, 0x46, 0xAA,
+ 0x3E, 0xA7, 0x72, 0xD6, 0xBD, 0x2F, 0x46, 0xAA};
+#pragma pop
+
+/* 80525898-805259F8 0026C0 0150+10 0/1 0/0 0/0 .data l_J_hana00DL */
+#include "assets/l_J_hana00DL.h"
+
+/* 805259F8-80525AD8 002820 00DE+02 0/1 0/0 0/0 .data l_J_hana00_cDL */
+#include "assets/l_J_hana00_cDL.h"
+
+/* 80525AD8-80525B78 002900 0099+07 0/2 0/0 0/0 .data l_matDL */
+#include "assets/l_matDL__d_a_grass.h"
+l_matDL__d_a_grass(l_J_Ohana00_64TEX)
+
+/* 80525B78-80525C18 0029A0 0099+07 0/2 0/0 0/0 .data l_matLight4DL */
+#include "assets/l_matLight4DL.h"
+l_matLight4DL(l_J_Ohana00_64TEX)
+
+/* 80525C18-80526C18 002A40 1000+00 0/1 0/0 0/0 .data l_J_Ohana01_64128_0419TEX */
+const u16 l_J_Ohana01_64128_0419TEX__width = 63;
+const u16 l_J_Ohana01_64128_0419TEX__height = 127;
+#include "assets/l_J_Ohana01_64128_0419TEX.h"
+
+/* 80526C18-805270E0 003A40 04C8+00 0/1 0/0 0/0 .data l_flowerPos2 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerPos2[1224] = {
+ 0x40, 0x25, 0x9F, 0x34, 0x42, 0xC2, 0x95, 0x72, 0xC1, 0x22, 0x34, 0x78, 0x41, 0x4D, 0xF9, 0x63,
+ 0x43, 0x09, 0x35, 0x0D, 0x40, 0x97, 0xD7, 0x54, 0x41, 0x76, 0x80, 0x55, 0x42, 0xBA, 0x1C, 0xB4,
+ 0x41, 0x91, 0x3E, 0x0D, 0xC0, 0x99, 0x8D, 0x47, 0x42, 0xC2, 0x8D, 0xF5, 0x41, 0x12, 0xA1, 0x12,
+ 0x41, 0xB9, 0x1A, 0xFF, 0x42, 0xBA, 0x37, 0xE3, 0xBF, 0xBD, 0xD2, 0xA6, 0x41, 0x4D, 0xF9, 0x34,
+ 0x43, 0x09, 0x35, 0x0F, 0x40, 0x97, 0xD6, 0xB6, 0xC1, 0x07, 0x14, 0xD0, 0x42, 0xCC, 0x9E, 0xFD,
+ 0xC1, 0x42, 0x39, 0x8F, 0xC0, 0xC1, 0xA4, 0x94, 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0xE2,
+ 0x40, 0x32, 0xFE, 0x8B, 0x42, 0xC7, 0x29, 0xAC, 0x41, 0x9E, 0x0C, 0xC8, 0xC0, 0xC1, 0xA4, 0xE1,
+ 0x43, 0x14, 0xDF, 0xBB, 0x40, 0xD1, 0x75, 0x8E, 0xC1, 0x95, 0xAF, 0x93, 0x42, 0xC4, 0x31, 0xF1,
+ 0x41, 0x1A, 0xB9, 0x87, 0x41, 0x51, 0x09, 0xAB, 0x42, 0xCF, 0x96, 0xC1, 0xC0, 0x03, 0x66, 0x1F,
+ 0xC1, 0x01, 0x95, 0x6E, 0x42, 0xB3, 0x6A, 0x42, 0xC1, 0x8B, 0x4C, 0x1D, 0xC0, 0xD4, 0xA5, 0x9C,
+ 0x42, 0xFE, 0x7B, 0x90, 0xC1, 0x0A, 0x4F, 0x99, 0x40, 0x1C, 0xE1, 0x15, 0x42, 0xC2, 0x2D, 0x47,
+ 0x41, 0x06, 0xA6, 0x41, 0xC1, 0x7B, 0x73, 0x6E, 0x42, 0xB8, 0x6D, 0x93, 0x3F, 0x5A, 0xCC, 0xA3,
+ 0x41, 0x21, 0x15, 0xF4, 0x42, 0xBD, 0x29, 0xFE, 0xC1, 0x1D, 0x9F, 0x3A, 0xC0, 0xD4, 0xA5, 0xEC,
+ 0x42, 0xFE, 0x7B, 0x93, 0xC1, 0x0A, 0x4F, 0xE9, 0x41, 0x06, 0x70, 0xFC, 0x42, 0xC4, 0x24, 0x9D,
+ 0x40, 0x7C, 0x3E, 0xE6, 0x41, 0x24, 0x1D, 0x91, 0x42, 0xC3, 0xD6, 0x8C, 0x40, 0x7C, 0x3E, 0xE6,
+ 0x3F, 0xEA, 0x26, 0xBB, 0xC1, 0x20, 0x00, 0x00, 0x3E, 0x25, 0x61, 0x91, 0xBF, 0x8B, 0x0E, 0xC3,
+ 0xC1, 0x20, 0x00, 0x01, 0x3E, 0x1C, 0xD6, 0x80, 0x41, 0x15, 0x52, 0x2B, 0x42, 0xC4, 0x0E, 0x24,
+ 0x40, 0x40, 0xBB, 0xC3, 0x41, 0x15, 0x3C, 0x61, 0x42, 0xC3, 0xED, 0x00, 0x40, 0x9B, 0xE1, 0x05,
+ 0x3E, 0xBE, 0xC3, 0xFC, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0xCE, 0x28, 0xBB, 0x3E, 0xBE, 0xBA, 0x6B,
+ 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0xA5, 0xFF, 0xCE, 0xC0, 0x6B, 0x3A, 0x75, 0x42, 0xC1, 0x3D, 0x51,
+ 0xC0, 0xA0, 0xCD, 0x8E, 0xBF, 0xDC, 0xEC, 0x63, 0x42, 0xC1, 0x54, 0xB6, 0xC0, 0xA0, 0x6C, 0x42,
+ 0x3F, 0x88, 0xCC, 0x2D, 0xC1, 0x1F, 0xFF, 0xFF, 0xBF, 0x24, 0x6B, 0xBE, 0xBF, 0xC0, 0xE6, 0x08,
+ 0xC1, 0x20, 0x00, 0x01, 0xBF, 0x29, 0x08, 0x81, 0xC0, 0x2C, 0x6A, 0x66, 0x42, 0xC1, 0x36, 0x4D,
+ 0xC0, 0xBF, 0xC9, 0xD6, 0xC0, 0x2D, 0x46, 0x30, 0x42, 0xC1, 0x5B, 0xB5, 0xC0, 0x81, 0x6F, 0xF4,
+ 0xBE, 0x68, 0x6B, 0xDF, 0xC1, 0x20, 0x00, 0x00, 0x3F, 0x23, 0x29, 0xD4, 0xBE, 0x58, 0xD0, 0xCC,
+ 0xC1, 0x20, 0x00, 0x01, 0xBF, 0xF8, 0x39, 0x71, 0xC0, 0x79, 0x82, 0x0E, 0x42, 0xD0, 0x8E, 0xE6,
+ 0x40, 0x7C, 0x3E, 0xE6, 0xC0, 0x00, 0x2E, 0x23, 0x42, 0xD0, 0xA5, 0xB2, 0x40, 0x7C, 0x3E, 0xE6,
+ 0x3F, 0x2F, 0x08, 0x57, 0xC1, 0x1F, 0x8E, 0x06, 0xBB, 0xAE, 0xF2, 0xC7, 0xBF, 0xD7, 0xC7, 0x1D,
+ 0xC1, 0x20, 0x71, 0xFC, 0xBB, 0xAE, 0xF2, 0xC7, 0xC0, 0x3C, 0xE3, 0xDE, 0x42, 0xD0, 0xAB, 0x13,
+ 0x40, 0x3F, 0x99, 0x18, 0xC0, 0x3C, 0xCC, 0x57, 0x42, 0xD0, 0x89, 0x86, 0x40, 0x9C, 0x72, 0x58,
+ 0xBF, 0x00, 0x08, 0x31, 0xC1, 0x20, 0xA7, 0xBD, 0x3F, 0x96, 0xEC, 0x4A, 0xBF, 0x00, 0x7D, 0xB3,
+ 0xC1, 0x1F, 0x58, 0x45, 0xBF, 0x98, 0x4A, 0x30, 0x40, 0xBD, 0x8F, 0x9B, 0x42, 0x63, 0xF3, 0x30,
+ 0x40, 0x23, 0x56, 0x11, 0x41, 0x65, 0x2F, 0xC6, 0x42, 0xBB, 0x00, 0xB1, 0xC1, 0x8C, 0x12, 0x7A,
+ 0x41, 0xCA, 0x62, 0xA7, 0x42, 0xBB, 0x00, 0xB0, 0x41, 0x28, 0xB1, 0x15, 0xC1, 0x5B, 0xA6, 0x8E,
+ 0x42, 0xBB, 0x00, 0xAE, 0xC0, 0xD1, 0x1E, 0x86, 0xC0, 0x30, 0x44, 0xBF, 0x42, 0xBB, 0x00, 0xAD,
+ 0x41, 0xAC, 0x23, 0x4E, 0xBF, 0xAD, 0xFA, 0x8F, 0x41, 0xB0, 0x93, 0x1B, 0x3F, 0x85, 0x39, 0x9F,
+ 0x41, 0x9F, 0x2B, 0xD3, 0x42, 0x90, 0x9F, 0x64, 0xC1, 0x8A, 0x85, 0x5E, 0x41, 0x7B, 0x1C, 0x3E,
+ 0x42, 0x90, 0x9F, 0x63, 0x41, 0xA7, 0xF3, 0x96, 0xC1, 0x13, 0xCB, 0x32, 0x42, 0x90, 0x9F, 0x65,
+ 0xC1, 0x92, 0x20, 0x52, 0xC1, 0x7F, 0xDB, 0xED, 0x42, 0x90, 0x9F, 0x65, 0x41, 0x46, 0xD3, 0x80,
+ 0xBF, 0x24, 0xCA, 0xC5, 0x42, 0x44, 0xF1, 0x22, 0xC0, 0x3B, 0xEA, 0xC4, 0xC0, 0x35, 0x33, 0xCE,
+ 0x42, 0x44, 0xDE, 0xC0, 0xC0, 0x3C, 0xDA, 0x27, 0xBF, 0xDF, 0x4A, 0x77, 0x42, 0x44, 0xF6, 0xA3,
+ 0xBF, 0xEC, 0xBC, 0x8C, 0xBF, 0xDD, 0x8A, 0x1A, 0x42, 0x44, 0xD9, 0x3D, 0xC0, 0x81, 0x30, 0x55,
+ 0xBF, 0x4A, 0x36, 0xF4, 0x42, 0x56, 0x1A, 0x91, 0x40, 0x0B, 0xFC, 0x11, 0xC0, 0x3B, 0xC6, 0x93,
+ 0x42, 0x55, 0xE6, 0xFE, 0x40, 0x0B, 0xFC, 0x0D, 0xBF, 0xEE, 0x39, 0xBD, 0x42, 0x55, 0xDA, 0xD7,
+ 0x40, 0x50, 0x93, 0xC4, 0xBF, 0xEE, 0x6E, 0xEB, 0x42, 0x56, 0x26, 0xB9, 0x3F, 0x8E, 0xC8, 0xB4,
+ 0x40, 0xBF, 0xC7, 0x22, 0x42, 0x8E, 0x14, 0xBA, 0x40, 0x3F, 0x9A, 0x4E, 0x41, 0x03, 0x00, 0x18,
+ 0x42, 0x8D, 0xE7, 0xA4, 0x40, 0x3F, 0xCE, 0xF6, 0x40, 0xE2, 0xF3, 0x95, 0x42, 0x8E, 0x07, 0xC0,
+ 0x3F, 0xF2, 0xF4, 0xA5, 0x40, 0xE2, 0xDA, 0xA3, 0x42, 0x8D, 0xF4, 0x9D, 0x40, 0x82, 0xF4, 0x90,
+ 0xBE, 0x9C, 0x1E, 0xDE, 0x42, 0x00, 0x1D, 0x6A, 0xC0, 0xD3, 0x0E, 0xA8, 0x41, 0x2D, 0xDB, 0x19,
+ 0x42, 0x00, 0x1D, 0x68, 0xC0, 0xC8, 0xE4, 0xE0, 0x40, 0x17, 0x47, 0xAA, 0x41, 0x99, 0xE3, 0xCB,
+ 0x3F, 0x88, 0x3F, 0x79, 0x41, 0x12, 0xF6, 0x8B, 0x42, 0x00, 0x1D, 0x67, 0x41, 0x10, 0xBB, 0x1F,
+ 0xC0, 0x40, 0x6B, 0x66, 0x42, 0x00, 0x1D, 0x68, 0x40, 0xB5, 0xCE, 0x40, 0x40, 0xB0, 0x3B, 0xDA,
+ 0x42, 0x08, 0x7F, 0x60, 0x40, 0xB3, 0xDC, 0xD7, 0xC0, 0x7B, 0x9C, 0x13, 0x42, 0x08, 0x7F, 0x5F,
+ 0x41, 0x39, 0xAA, 0x67, 0xBF, 0x7D, 0x10, 0x1B, 0x41, 0xB4, 0xF6, 0xEB, 0x3F, 0x43, 0x3A, 0x04,
+ 0xC1, 0x31, 0xB5, 0x84, 0x42, 0x08, 0x7F, 0x5E, 0xC0, 0x02, 0x89, 0x9C, 0x3F, 0x61, 0xC2, 0x2B,
+ 0x42, 0x08, 0x7F, 0x5F, 0xC0, 0xC2, 0x2D, 0xCD, 0xC0, 0xB7, 0xA5, 0x40, 0x42, 0x03, 0xBD, 0x64,
+ 0xC0, 0xF9, 0x2E, 0x71, 0x40, 0x97, 0xF6, 0x62, 0x42, 0x03, 0xBD, 0x63, 0xC1, 0x3A, 0x58, 0x92,
+ 0xBE, 0xD3, 0x65, 0xED, 0x41, 0x99, 0xE3, 0xCC, 0xBF, 0xD5, 0x9D, 0xED, 0x41, 0x0E, 0x33, 0x4E,
+ 0x42, 0x03, 0xBD, 0x61, 0x40, 0x4C, 0xFD, 0x0D, 0xBE, 0x25, 0xBF, 0xF0, 0x42, 0x09, 0x9F, 0xF5,
+ 0xC0, 0x05, 0xBD, 0x6F, 0x3F, 0x87, 0x66, 0x17, 0xC1, 0x1E, 0x5D, 0x2E, 0xBF, 0x22, 0xBD, 0x5E,
+ 0xBF, 0xBE, 0xED, 0x1C, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0x27, 0x4E, 0x12, 0xC0, 0x0C, 0x84, 0x34,
+ 0x42, 0x09, 0x96, 0x95, 0xC0, 0x06, 0xA0, 0xBA, 0xBF, 0x97, 0xAF, 0xEA, 0x42, 0x09, 0xA2, 0xC4,
+ 0xBF, 0x8A, 0x29, 0x63, 0xBE, 0x66, 0x0B, 0x70, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0x21, 0x7E, 0xBB,
+ 0xBE, 0x56, 0x99, 0x42, 0xC1, 0x1E, 0x5D, 0x30, 0xBF, 0xF5, 0xAF, 0xB0, 0xBF, 0x96, 0x19, 0x3B,
+ 0x42, 0x09, 0x93, 0xC4, 0xC0, 0x47, 0x42, 0x91, 0xBE, 0xB2, 0xE9, 0xEE, 0x42, 0x09, 0x50, 0x68,
+ 0x3F, 0xB1, 0x1A, 0xCA, 0x3F, 0x2D, 0x3E, 0x2D, 0xC1, 0x1D, 0xEC, 0x5F, 0xBB, 0xAD, 0x2D, 0xCB,
+ 0xBF, 0xD5, 0x92, 0x4B, 0xC1, 0x1E, 0xCE, 0x00, 0xBB, 0xAD, 0x2D, 0xCB, 0xC0, 0x17, 0x75, 0x3A,
+ 0x42, 0x09, 0x1F, 0xE3, 0x3F, 0xB1, 0x1A, 0xCA, 0xBF, 0xAD, 0xB9, 0x73, 0x42, 0x09, 0x14, 0x75,
+ 0x40, 0x19, 0x14, 0xF9, 0xBE, 0xFD, 0x72, 0x15, 0xC1, 0x1F, 0x03, 0x34, 0x3F, 0x95, 0x61, 0x35,
+ 0xBE, 0xFE, 0x5A, 0xBC, 0xC1, 0x1D, 0xB7, 0x2A, 0xBF, 0x96, 0xBB, 0x88, 0xBF, 0xAD, 0xEB, 0x7D,
+ 0x42, 0x09, 0x5B, 0xD8, 0x3E, 0xC0, 0x2E, 0xA9, 0x40, 0x1E, 0x27, 0x67, 0x42, 0x02, 0x4C, 0x03,
+ 0x3F, 0xC0, 0x2D, 0xB6, 0x40, 0x94, 0xBE, 0xD1, 0x42, 0x02, 0x30, 0x38, 0x3F, 0xC0, 0xDA, 0xE4,
+ 0x3F, 0xE7, 0xC1, 0xCE, 0xC1, 0x1E, 0x5D, 0x2E, 0x3E, 0x23, 0xB0, 0x81, 0xBF, 0x89, 0xA2, 0xBE,
+ 0xC1, 0x1E, 0x5D, 0x30, 0x3E, 0x1B, 0x3B, 0xFB, 0x40, 0x63, 0xE5, 0x3F, 0x42, 0x02, 0x44, 0x03,
+ 0x3E, 0xD5, 0xAB, 0x19, 0x40, 0x63, 0xD6, 0x7C, 0x42, 0x02, 0x38, 0x37, 0x40, 0x25, 0xC5, 0x61,
+ 0x3E, 0xBC, 0xD0, 0x9A, 0xC1, 0x1E, 0x5D, 0x2E, 0x3F, 0xCC, 0x0D, 0x13, 0x3E, 0xBC, 0xC7, 0x2A,
+ 0xC1, 0x1E, 0x5D, 0x2D, 0xBF, 0xA4, 0x4D, 0x4D,
+};
+#pragma pop
+
+/* 805270E0-80527200 003F08 0120+00 0/1 0/0 0/0 .data l_flowerNormal2 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerNormal2[288] = {
+ 0xBB, 0xC4, 0x93, 0x42, 0x3F, 0x7F, 0xF6, 0x6F, 0xBC, 0x83, 0x0E, 0x3D, 0x3C, 0x83, 0x0C, 0x24,
+ 0x3F, 0x7F, 0xF5, 0x84, 0x3C, 0x03, 0x0E, 0x3D, 0xB8, 0x51, 0xB7, 0x17, 0x3F, 0x7F, 0xF5, 0xF9,
+ 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x38, 0x1F, 0x62, 0x30,
+ 0xBD, 0xB8, 0xC9, 0xFB, 0x3F, 0x7E, 0x68, 0x3C, 0xBD, 0x85, 0xBD, 0x94, 0xBD, 0xD9, 0x65, 0xB2,
+ 0x3F, 0x7E, 0x28, 0x13, 0xBD, 0x63, 0x62, 0xA6, 0xBD, 0xB8, 0x12, 0x7B, 0x3F, 0x7E, 0x6B, 0x0E,
+ 0xBD, 0x85, 0x62, 0x5A, 0xBD, 0xFD, 0x2D, 0x88, 0x3F, 0x7D, 0x58, 0x32, 0xBD, 0x95, 0xE3, 0x97,
+ 0xBD, 0xB5, 0xC6, 0x3B, 0x3F, 0x7E, 0xFB, 0x4C, 0x3C, 0x01, 0xC7, 0x15, 0xB8, 0xFF, 0xDA, 0x40,
+ 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0x37, 0x38, 0x8C, 0xA4, 0x3F, 0x7F, 0xF5, 0xF9,
+ 0xBC, 0x8F, 0x57, 0xF7, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB8, 0xBE, 0xD7, 0x41,
+ 0x38, 0x06, 0x37, 0xBD, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8F, 0x57, 0xF7, 0x37, 0x6A, 0xE1, 0x8B,
+ 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x8F, 0x57, 0xF7, 0xBC, 0x8E, 0xC7, 0x43, 0x3F, 0x7F, 0xF5, 0xF9,
+ 0x3A, 0xCB, 0xF2, 0xB2, 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0x00, 0x00, 0x00, 0x00,
+ 0xBC, 0x8F, 0x57, 0xF7, 0x3F, 0x7F, 0xF5, 0xF9, 0xB7, 0xD1, 0xB7, 0x17, 0xBC, 0x8F, 0x55, 0xDE,
+ 0x3F, 0x7F, 0xF5, 0xF9, 0x39, 0x4E, 0x91, 0xC9, 0xBA, 0x02, 0x49, 0x1B, 0x3F, 0x7F, 0xF5, 0xF9,
+ 0x3C, 0x8F, 0x49, 0x49, 0x3C, 0x80, 0x34, 0x6E, 0x3F, 0x7F, 0xF5, 0xF9, 0x3C, 0x00, 0x3C, 0xD1,
+ 0xBC, 0x8E, 0x7F, 0xF6, 0x3F, 0x7F, 0xF5, 0xF9, 0xBA, 0xF8, 0xE7, 0xDE, 0x3B, 0x98, 0xD4, 0x78,
+ 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x28, 0x78, 0x3C, 0x8B, 0xFE, 0x3B, 0x3F, 0x7F, 0xF5, 0xF9,
+ 0x3B, 0x76, 0x7B, 0x1C, 0x3B, 0x99, 0x6B, 0x76, 0x3F, 0x7F, 0xF5, 0xF9, 0xBC, 0x8A, 0x1D, 0xFC,
+};
+#pragma pop
+
+/* 80527200-80527208 004028 0008+00 0/1 0/0 0/0 .data l_flowerColor2 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerColor2[8] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xFF,
+};
+#pragma pop
+
+/* 80527208-80527338 004030 0120+10 0/1 0/0 0/0 .data l_flowerTexCoord2 */
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 l_flowerTexCoord2[] = {
+ 0x3F, 0xF3, 0x6D, 0x11, 0x3F, 0x72, 0x0B, 0xA2, 0x3F, 0x80, 0x00, 0x00, 0x3C, 0xAB, 0xDC, 0x27,
+ 0x3D, 0xC9, 0x2E, 0xE8, 0x3F, 0x72, 0x0B, 0xA2, 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x81, 0x7B, 0x96,
+ 0x40, 0x2B, 0x93, 0x9A, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x06, 0x1F, 0xCD, 0x3F, 0x7B, 0xB5, 0x18,
+ 0x40, 0x06, 0x00, 0x47, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x06, 0x16, 0xBE, 0x3F, 0x81, 0x7B, 0x96,
+ 0x40, 0x06, 0x09, 0x5B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x07, 0xBB, 0x1F, 0x3F, 0x7B, 0xB5, 0x18,
+ 0x40, 0x07, 0xC2, 0xF8, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x07, 0xB8, 0xC3, 0x3F, 0x81, 0x7B, 0x96,
+ 0x40, 0x07, 0xC5, 0x50, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x7B, 0xB5, 0x18,
+ 0x40, 0x03, 0xA9, 0x58, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xA0, 0x9B, 0xA2,
+ 0x40, 0x39, 0x01, 0x1D, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBE, 0x0D, 0xCC,
+ 0x40, 0x00, 0x7B, 0xB7, 0xC0, 0xBD, 0x25, 0x1C, 0x40, 0x25, 0xD5, 0xA2, 0x3F, 0x7B, 0xB5, 0x18,
+ 0x40, 0x25, 0xD9, 0x1F, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x25, 0xD4, 0x95, 0x3F, 0x81, 0x7B, 0x96,
+ 0x40, 0x25, 0xDA, 0x2B, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x7B, 0xB5, 0x18,
+ 0x40, 0x24, 0x06, 0x9E, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x2F, 0xF0, 0x35, 0x3F, 0x81, 0x7B, 0x96,
+ 0x40, 0x2F, 0xF8, 0x16, 0x3F, 0x7B, 0xB5, 0x18, 0x40, 0x2F, 0xF2, 0x78, 0x3F, 0x7B, 0xB5, 0x18,
+ 0x40, 0x2F, 0xF5, 0xCF, 0x3F, 0x81, 0x7B, 0x96, 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x51, 0x10, 0x6F,
+ 0x40, 0x66, 0xBD, 0x6A, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x7C, 0x19, 0xB1, 0x3F, 0x80, 0x5E, 0x57,
+ 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x97, 0xF6, 0xBA, 0x40, 0x04, 0x26, 0x74, 0x3F, 0x80, 0x3F, 0x79,
+ 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x80, 0x3F, 0x79, 0x40, 0x1B, 0x7D, 0x52, 0x3F, 0x51, 0x10, 0x6F};
+#pragma pop
+
+/* 80527338-80527478 004160 0138+08 0/1 0/0 0/0 .data l_J_hana01DL */
+#include "assets/l_J_hana01DL.h"
+
+/* 80527478-80527558 0042A0 00DE+02 0/0 0/0 0/0 .data l_J_hana01_c_00DL */
+#include "assets/l_J_hana01_c_00DL.h"
+
+/* 80527558-80527698 004380 0128+18 0/1 0/0 0/0 .data l_J_hana01_c_01DL */
+#include "assets/l_J_hana01_c_01DL.h"
+
+/* 80527698-80527738 0044C0 0099+07 0/2 0/0 0/0 .data l_mat2DL */
+#include "assets/l_mat2DL__d_a_grass.h"
+l_mat2DL__d_a_grass(l_J_Ohana01_64128_0419TEX)
+
+/* 80527738-805277D4 004560 0099+03 0/2 0/0 0/0 .data l_mat2Light4DL */
+#include "assets/l_mat2Light4DL.h"
+l_mat2Light4DL(l_J_Ohana01_64128_0419TEX)
+
/* 80520988-80520AD8 004D28 0150+00 1/1 0/0 0/0 .text WorkCo__14dFlower_data_cFP10fopAc_ac_cUli */
-void dFlower_data_c::WorkCo(fopAc_ac_c* param_0, u32 param_1, int param_2) {
- // NONMATCHING
+void dFlower_data_c::WorkCo(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo) {
+ cXyz sp8;
+ sp8.x = m_pos.x - i_hitActor->current.pos.x;
+ sp8.z = m_pos.z - i_hitActor->current.pos.z;
+
+ f32 temp_f1 = sp8.abs2XZ();
+ if (!(temp_f1 > 900.0f)) {
+ sp8.y = m_pos.y - i_hitActor->current.pos.y;
+
+ s16 temp_r26 = cM_atan2s(sp8.x, sp8.z);
+ f32 var_f31 = JMAFastSqrt(temp_f1);
+
+ dFlower_anm_c* var_r29;
+ if (field_0x01 < 8) {
+ int temp_r3_2 = daGrass_c::getFlower()->newAnm();
+ if (temp_r3_2 < 0) {
+ return;
+ }
+
+ field_0x01 = temp_r3_2;
+ var_r29 = daGrass_c::getFlower()->getAnm(field_0x01);
+ } else {
+ var_r29 = daGrass_c::getFlower()->getAnm(field_0x01);
+ }
+
+ var_r29->m_angY = temp_r26;
+ var_r29->m_angX = cM_atan2s(30.0f - var_f31, 65.0f);
+ }
}
/* 80520AD8-80520B34 004E78 005C+00 4/4 0/0 0/0 .text deleteAnm__14dFlower_data_cFv */
@@ -14,21 +334,198 @@ void dFlower_data_c::deleteAnm() {
/* 80520B34-80520CFC 004ED4 01C8+00 1/1 0/0 0/0 .text
* WorkAt_NoCutAnim__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInfP8cCcD_Obj */
-void dFlower_data_c::WorkAt_NoCutAnim(fopAc_ac_c* param_0, u32 param_1, int param_2,
- dCcMassS_HitInf* param_3, cCcD_Obj* param_4) {
- // NONMATCHING
+void dFlower_data_c::WorkAt_NoCutAnim(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo,
+ dCcMassS_HitInf* i_hitinf, cCcD_Obj* i_hitobj) {
+ dCcD_GObjInf* var_r26 = dCcD_GetGObjInf(i_hitobj);
+ cXyz sp14(*var_r26->GetAtVecP());
+
+ f32 temp_f31 = sp14.abs2XZ();
+ if (cM3d_IsZero(temp_f31) && fopAcM_GetName(i_hitActor) == PROC_ALINK) {
+ sp14.x = m_pos.x - i_hitActor->current.pos.x;
+ sp14.y = m_pos.y - i_hitActor->current.pos.y;
+ sp14.z = m_pos.z - i_hitActor->current.pos.z;
+ temp_f31 = sp14.abs2XZ();
+ }
+
+ temp_f31 = sp14.abs2XZ();
+
+ s16 temp_r25 = cM_atan2s(sp14.x, sp14.z);
+ temp_f31 = JMAFastSqrt(temp_f31);
+
+ dFlower_anm_c* var_r29;
+ if (field_0x01 < 8) {
+ int temp_r3_2 = daGrass_c::getFlower()->newAnm();
+ if (temp_r3_2 < 0) {
+ return;
+ }
+ field_0x01 = temp_r3_2;
+ var_r29 = daGrass_c::getFlower()->getAnm(field_0x01);
+ } else {
+ var_r29 = daGrass_c::getFlower()->getAnm(field_0x01);
+ }
+
+ var_r29->m_angY = temp_r25;
+ var_r29->m_angX = cM_atan2s(temp_f31, 220.0f);
}
+/* 805284E8-805284EC 000C20 0004+00 1/2 0/0 0/0 .bss None */
+static bool data_805284E8;
+
/* 80520CFC-80521A3C 00509C 0D40+00 1/1 0/0 0/0 .text
* WorkAt__14dFlower_data_cFP10fopAc_ac_cUliP15dCcMassS_HitInf */
-void dFlower_data_c::WorkAt(fopAc_ac_c* param_0, u32 param_1, int param_2,
- dCcMassS_HitInf* param_3) {
- // NONMATCHING
+void dFlower_data_c::WorkAt(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo, dCcMassS_HitInf* i_hitinf) {
+ cCcD_Obj* hitobj_p = i_hitinf->GetAtHitObj();
+
+ if (hitobj_p != NULL &&
+ (hitobj_p->ChkAtType(0) || hitobj_p->ChkAtType(AT_TYPE_ARROW) || hitobj_p->ChkAtType(AT_TYPE_SLINGSHOT) ||
+ hitobj_p->ChkAtType(AT_TYPE_20000000) || hitobj_p->ChkAtType(AT_TYPE_SHIELD_ATTACK) ||
+ hitobj_p->ChkAtType(AT_TYPE_BOOMERANG) || hitobj_p->ChkAtType(AT_TYPE_100) ||
+ hitobj_p->ChkAtType(AT_TYPE_LANTERN_SWING) || hitobj_p->ChkAtType(AT_TYPE_HOOKSHOT)))
+ {
+ WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p);
+ return;
+ }
+
+ if (field_0x03 == 0) {
+ fopAc_ac_c* temp_r26 = dComIfGp_getPlayer(0);
+ if (hitobj_p->ChkAtType(AT_TYPE_BOMB) || hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) ||
+ hitobj_p->ChkAtType(AT_TYPE_SPINNER) || hitobj_p->ChkAtType(AT_TYPE_WOLF_ATTACK) ||
+ hitobj_p->ChkAtType(AT_TYPE_WOLF_CUT_TURN))
+ {
+ if (i_hitActor != NULL && !hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) && m_pos.abs(i_hitActor->current.pos) > 200.0f) {
+ WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p);
+ return;
+ }
+ } else {
+ if (cLib_checkBit<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;
-} \ No newline at end of file
+}
diff --git a/src/d/actor/d_grass.inc b/src/d/actor/d_grass.inc
index 38033a4629..aaa6b1bb33 100644
--- a/src/d/actor/d_grass.inc
+++ b/src/d/actor/d_grass.inc
@@ -1,52 +1,327 @@
#include "d/actor/d_a_grass.h"
#include "d/d_com_inf_game.h"
#include "d/actor/d_a_player.h"
+#include "d/d_s_play.h"
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "SSystem/SComponent/c_lib.h"
#include "f_op/f_op_overlap_mng.h"
+#include <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;
+
+ 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);
+ }
-/* 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
+ 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;