summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-05-08 04:30:05 -0700
committerGitHub <noreply@github.com>2025-05-08 14:30:05 +0300
commit5eeb1ef50e732e7cbd32d8a13779a95417e5907a (patch)
treecded87408481ecb6d60dca6d85cfc04de23f6d99
parenteddbe739280043241a2b9362be02d388cf92174d (diff)
obj_yousei equivalent / bullet done (#2426)
* obj_yousei equivalent * d_a_bullet done
-rwxr-xr-xconfigure.py4
-rw-r--r--include/d/actor/d_a_bullet.h68
-rw-r--r--include/d/actor/d_a_obj_yousei.h57
-rw-r--r--include/d/actor/d_a_player.h1
-rw-r--r--src/d/actor/d_a_bullet.cpp586
-rw-r--r--src/d/actor/d_a_obj_yousei.cpp1776
6 files changed, 1103 insertions, 1389 deletions
diff --git a/configure.py b/configure.py
index 8a822f562e..04967656f7 100755
--- a/configure.py
+++ b/configure.py
@@ -1517,7 +1517,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_midna"),
ActorRel(Equivalent, "d_a_nbomb"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_life_container"),
- ActorRel(NonMatching, "d_a_obj_yousei"),
+ ActorRel(Equivalent, "d_a_obj_yousei"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_spinner"),
ActorRel(MatchingFor("GZ2E01"), "d_a_suspend"),
ActorRel(MatchingFor("GZ2E01"), "d_a_tag_attention"),
@@ -1623,7 +1623,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_b_zant_mobile"),
ActorRel(MatchingFor("GZ2E01"), "d_a_b_zant_sima"),
ActorRel(NonMatching, "d_a_balloon_2D"),
- ActorRel(NonMatching, "d_a_bullet"),
+ ActorRel(MatchingFor("GZ2E01"), "d_a_bullet"),
ActorRel(Equivalent, "d_a_coach_2D"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_coach_fire"),
ActorRel(Equivalent, "d_a_cow"),
diff --git a/include/d/actor/d_a_bullet.h b/include/d/actor/d_a_bullet.h
index ff475943e3..6dde5f7148 100644
--- a/include/d/actor/d_a_bullet.h
+++ b/include/d/actor/d_a_bullet.h
@@ -1,8 +1,9 @@
#ifndef D_A_BULLET_H
#define D_A_BULLET_H
-#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
+#include "d/d_bg_s_acch.h"
+#include "d/d_cc_d.h"
/**
* @ingroup actors-unsorted
@@ -12,37 +13,60 @@
* @details
*
*/
-class daBullet_c : public fopEn_enemy_c {
+class daBullet_c : public fopAc_ac_c {
public:
- /* 8065594C */ ~daBullet_c();
- /* 80655B08 */ void create();
- /* 80655E5C */ void CreateHeap();
- /* 80655EDC */ void Delete();
- /* 80655F10 */ void Execute();
- /* 806560FC */ void Draw();
- /* 80656160 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80656180 */ void getResName();
- /* 80656198 */ void getBmdName();
- /* 806561B0 */ void getTypeFromParam();
- /* 806561D0 */ void initialize();
- /* 80656378 */ void setProcess(int (daBullet_c::*)(void*));
- /* 80656420 */ void wait(void*);
- /* 806564B8 */ void move(void*);
+ typedef int (daBullet_c::*processFn)(void*);
+
+ /* 0x568 */ request_of_phase_process_class mPhase;
+ /* 0x570 */ J3DModel* mpModel;
+ /* 0x574 */ dBgS_ObjAcch mAcch;
+ /* 0x74C */ dCcD_Stts mCcStts;
+ /* 0x788 */ dBgS_AcchCir mAcchCir;
+ /* 0x7C8 */ dCcD_Sph mCcSph;
+ /* 0x900 */ cBgS_GndChk mGndChk;
+ /* 0x93C */ u8 field_0x93C[0x940 - 0x93C];
+ /* 0x940 */ f32 mGroundY;
+ /* 0x944 */ processFn mProcess;
+ /* 0x950 */ int mLifetime;
+ /* 0x954 */ u16 mMode;
+ /* 0x956 */ u8 mType;
+ /* 0x957 */ u8 field_0x957;
- static u8 const mCcDObjInfo[48];
- static u8 mCcDSph[64];
+ /* 8065594C */ virtual ~daBullet_c();
+ /* 80655B08 */ int create();
+ /* 80655E5C */ BOOL CreateHeap();
+ /* 80655EDC */ int Delete();
+ /* 80655F10 */ int Execute();
+ /* 806560FC */ int Draw();
+ /* 80656160 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80656180 */ const char* getResName();
+ /* 80656198 */ const char* getBmdName();
+ /* 806561B0 */ int getTypeFromParam();
+ /* 806561D0 */ void initialize();
+ /* 80656378 */ int setProcess(processFn);
+ /* 80656420 */ int wait(void*);
+ /* 806564B8 */ int move(void*);
-private:
- /* 0x5ac */ u8 field_0x5ac[0x95c - 0x5ac];
+ static dCcD_SrcGObjInf const mCcDObjInfo;
+ static dCcD_SrcSph mCcDSph;
};
STATIC_ASSERT(sizeof(daBullet_c) == 0x95c);
+struct daBullet_HIOParam {
+ /* 0x00 */ f32 gravity;
+ /* 0x04 */ f32 weight;
+ /* 0x08 */ f32 height;
+ /* 0x0C */ f32 knee_height;
+ /* 0x10 */ f32 width;
+ /* 0x14 */ s16 lifetime;
+};
+
class daBullet_Param_c {
public:
- /* 806566A8 */ ~daBullet_Param_c();
+ /* 806566A8 */ virtual ~daBullet_Param_c() {}
- static u8 const m[24];
+ static daBullet_HIOParam const m;
};
diff --git a/include/d/actor/d_a_obj_yousei.h b/include/d/actor/d_a_obj_yousei.h
index b2d0a659e3..edec4b6a87 100644
--- a/include/d/actor/d_a_obj_yousei.h
+++ b/include/d/actor/d_a_obj_yousei.h
@@ -2,6 +2,7 @@
#define D_A_OBJ_YOUSEI_H
#include "f_op/f_op_actor_mng.h"
+#include "d/actor/d_a_player.h"
/**
* @ingroup actors-objects
@@ -11,7 +12,7 @@
* @details
*
*/
-class daObjYOUSEI_c : public fopAc_ac_c {
+class daObjYOUSEI_c : public fopEn_enemy_c {
public:
/* 804CE738 */ void InitCcSph();
/* 804CE7A4 */ void SetCcSph();
@@ -21,20 +22,58 @@ public:
/* 804CF098 */ void LinkChk();
/* 804CF6C4 */ void WaitAction();
/* 804CFCE8 */ void LinkAction();
- /* 804D057C */ void LinkSearch();
- /* 804D065C */ void WayBgCheck(f32, f32, s16);
+ /* 804D057C */ bool LinkSearch();
+ /* 804D065C */ bool WayBgCheck(f32, f32, s16);
/* 804D0780 */ void CareAction();
/* 804D080C */ void CheckGround();
- /* 804D0988 */ void CheckWater();
+ /* 804D0988 */ bool CheckWater();
/* 804D0AD0 */ void Action();
/* 804D0CCC */ void ObjHit();
- /* 804D0DF0 */ void Execute();
- /* 804D0F98 */ void Delete();
+ /* 804D0DF0 */ int Execute();
+ /* 804D0F98 */ int Delete();
/* 804D0FCC */ void setBaseMtx();
- /* 804D111C */ void create();
+ /* 804D111C */ int create();
-private:
- /* 0x568 */ u8 field_0x568[0xa4c - 0x568];
+ inline int CreateHeap();
+ inline int Draw();
+
+ /* 0x5AC */ u8 field_0x5ac;
+ /* 0x5AD */ u8 field_0x5ad;
+ /* 0x5AE */ u8 field_0x5ae;
+ /* 0x5AF */ u8 field_0x5af;
+ /* 0x5B0 */ cXyz field_0x5b0;
+ /* 0x5BC */ daPy_boomerangMove_c mBoomerangMove;
+ /* 0x5C8 */ u8 mPrm;
+ /* 0x5CA */ s16 mAction;
+ /* 0x5CC */ s16 mMode;
+ /* 0x5CE */ s16 mTimers[4];
+ /* 0x5D6 */ s16 field_0x5d6;
+ /* 0x5D8 */ u8 field_0x5D8[0x5DA - 0x5D8];
+ /* 0x5DA */ s16 mAngleTarget;
+ /* 0x5DC */ s16 field_0x5dc;
+ /* 0x5E0 */ f32 mSpeedVTarget;
+ /* 0x5E4 */ f32 mSpeedFTarget;
+ /* 0x5E8 */ f32 field_0x5e8;
+ /* 0x5EC */ f32 field_0x5ec;
+ /* 0x5F0 */ f32 mAnmSpeed;
+ /* 0x5F4 */ u8 field_0x5F4[0x5F8 - 0x5F4];
+ /* 0x5F8 */ cXyz field_0x5f8;
+ /* 0x604 */ u32 field_0x604;
+ /* 0x608 */ u32 field_0x608;
+ /* 0x60C */ u32 field_0x60c;
+ /* 0x610 */ u32 field_0x610;
+ /* 0x614 */ f32 mDistToPlayer;
+ /* 0x618 */ s16 mAngleToPlayer;
+ /* 0x61A */ s16 field_0x61a;
+ /* 0x61C */ Z2Creature mSound;
+ /* 0x6AC */ u8 field_0x6AC[0x6B0 - 0x6AC];
+ /* 0x6B0 */ mDoExt_McaMorfSO* mpModelMorf;
+ /* 0x6B4 */ u8 field_0x6B4[0x6BC - 0x6B4];
+ /* 0x6BC */ dBgS_AcchCir mAcchCir;
+ /* 0x6FC */ dBgS_ObjAcch mAcch;
+ /* 0x8D4 */ dCcD_Stts mCcStts;
+ /* 0x910 */ dCcD_Sph mCcSph;
+ /* 0xA48 */ u8 field_0xa48[0xA4C - 0xA48];
};
STATIC_ASSERT(sizeof(daObjYOUSEI_c) == 0xa4c);
diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h
index 340638859c..78a1434530 100644
--- a/include/d/actor/d_a_player.h
+++ b/include/d/actor/d_a_player.h
@@ -920,6 +920,7 @@ public:
bool checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); }
bool checkMidnaAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_ATN_POS); }
bool checkMidnaHairAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_HAIR_ATN_POS); }
+ bool checkAttentionLock() const { return checkResetFlg0(RFLG0_UNK_10000); }
void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); }
void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); }
diff --git a/src/d/actor/d_a_bullet.cpp b/src/d/actor/d_a_bullet.cpp
index ba13c10409..dd96a50299 100644
--- a/src/d/actor/d_a_bullet.cpp
+++ b/src/d/actor/d_a_bullet.cpp
@@ -4,460 +4,292 @@
*/
#include "d/actor/d_a_bullet.h"
-#include "dol2asm.h"
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __dt__10daBullet_cFv();
-extern "C" void create__10daBullet_cFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void CreateHeap__10daBullet_cFv();
-extern "C" void Delete__10daBullet_cFv();
-extern "C" void Execute__10daBullet_cFv();
-extern "C" void Draw__10daBullet_cFv();
-extern "C" void createHeapCallBack__10daBullet_cFP10fopAc_ac_c();
-extern "C" void getResName__10daBullet_cFv();
-extern "C" void getBmdName__10daBullet_cFv();
-extern "C" void getTypeFromParam__10daBullet_cFv();
-extern "C" void initialize__10daBullet_cFv();
-extern "C" void setProcess__10daBullet_cFM10daBullet_cFPCvPvPv_i();
-extern "C" void wait__10daBullet_cFPv();
-extern "C" void move__10daBullet_cFPv();
-extern "C" static void daBullet_Create__FPv();
-extern "C" static void daBullet_Delete__FPv();
-extern "C" static void daBullet_Execute__FPv();
-extern "C" static void daBullet_Draw__FPv();
-extern "C" static bool daBullet_IsDelete__FPv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void func_80656618(void* _this, int*);
-extern "C" void __sinit_d_a_bullet_cpp();
-extern "C" void __dt__16daBullet_Param_cFv();
-extern "C" static void func_806566F0();
-extern "C" static void func_806566F8();
-extern "C" u8 const mCcDObjInfo__10daBullet_c[48];
-extern "C" u8 const m__16daBullet_Param_c[24];
-extern "C" extern char const* const d_a_bullet__stringBase0;
-extern "C" u8 mCcDSph__10daBullet_c[64];
-
-//
-// External References:
-//
-
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void mDoExt_modelUpdateDL__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_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
-extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-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 Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void __ct__11cBgS_GndChkFv();
-extern "C" void __dt__11cBgS_GndChkFv();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void __dl__FPv();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__8dCcD_Sph[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80656774-80656774 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80656774 = "Hanjo1";
-SECTION_DEAD static char const* const stringBase_8065677B = "hanjo_stone.bmd";
-#pragma pop
+#include "d/d_com_inf_game.h"
/* 8065678C-80656790 -00001 0004+00 1/1 0/0 0/0 .data l_resFileNameList */
-SECTION_DATA static void* l_resFileNameList = (void*)&d_a_bullet__stringBase0;
+static char* l_resFileNameList[] = {"Hanjo1"};
/* 80656790-80656794 -00001 0004+00 1/2 0/0 0/0 .data l_bmdFileNameList */
-SECTION_DATA static void* l_bmdFileNameList = (void*)(((char*)&d_a_bullet__stringBase0) + 0x7);
+static char* l_bmdFileNameList[] = {"hanjo_stone.bmd"};
-/* 80656794-806567D4 000008 0040+00 2/2 0/0 0/0 .data mCcDSph__10daBullet_c */
-SECTION_DATA u8 daBullet_c::mCcDSph[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-/* 806567D4-806567E0 -00001 000C+00 1/1 0/0 0/0 .data @3878 */
-SECTION_DATA static void* lit_3878[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)wait__10daBullet_cFPv,
-};
-
-/* 806567E0-806567EC -00001 000C+00 1/1 0/0 0/0 .data @3933 */
-SECTION_DATA static void* lit_3933[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)move__10daBullet_cFPv,
-};
-
-/* 806567EC-8065680C -00001 0020+00 1/0 0/0 0/0 .data daBullet_MethodTable */
-static actor_method_class daBullet_MethodTable = {
- (process_method_func)daBullet_Create__FPv,
- (process_method_func)daBullet_Delete__FPv,
- (process_method_func)daBullet_Execute__FPv,
- (process_method_func)daBullet_IsDelete__FPv,
- (process_method_func)daBullet_Draw__FPv,
-};
-
-/* 8065680C-8065683C -00001 0030+00 0/0 0/0 1/0 .data g_profile_BULLET */
-extern actor_process_profile_definition g_profile_BULLET = {
- fpcLy_CURRENT_e, // mLayerID
- 8, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_BULLET, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daBullet_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 751, // mPriority
- &daBullet_MethodTable, // sub_method
- 0x00044000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 8065683C-80656860 0000B0 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_806566F8,
- (void*)NULL,
- (void*)NULL,
- (void*)func_806566F0,
-};
-
-/* 80656860-8065686C 0000D4 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,
-};
-
-/* 8065686C-80656878 0000E0 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,
-};
-
-/* 80656878-80656884 0000EC 000C+00 2/2 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,
-};
-
-/* 80656884-80656890 0000F8 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,
-};
+/* 806568CC-806568D0 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
+static daBullet_Param_c l_HIO;
-/* 80656890-8065689C 000104 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
+/* 80656714-80656744 000000 0030+00 2/2 0/0 0/0 .rodata mCcDObjInfo__10daBullet_c */
+const dCcD_SrcGObjInf daBullet_c::mCcDObjInfo = {
+ {0, {{0, 0, 0}, {0x0, 0x0}, {0x79}}},
+ {dCcD_SE_NONE, 0, 0, 0, 0},
+ {dCcD_SE_NONE, 0, 0, 0, 0},
+ {0},
};
-/* 8065689C-806568A8 000110 000C+00 2/2 0/0 0/0 .data __vt__10daBullet_c */
-SECTION_DATA extern void* __vt__10daBullet_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10daBullet_cFv,
+/* 80656794-806567D4 000008 0040+00 2/2 0/0 0/0 .data mCcDSph__10daBullet_c */
+dCcD_SrcSph daBullet_c::mCcDSph = {
+ daBullet_c::mCcDObjInfo,
+ {
+ {{0.0f, 0.0f, 0.0f}, 0.0f} // mSph
+ } // mSphAttr
};
/* 8065594C-80655B08 0000EC 01BC+00 1/0 0/0 0/0 .text __dt__10daBullet_cFv */
daBullet_c::~daBullet_c() {
- // NONMATCHING
+ dComIfG_resDelete(&mPhase, getResName());
}
/* 80655B08-80655C90 0002A8 0188+00 1/1 0/0 0/0 .text create__10daBullet_cFv */
-void daBullet_c::create() {
- // NONMATCHING
-}
+int daBullet_c::create() {
+ fopAcM_SetupActor(this, daBullet_c);
+ mType = getTypeFromParam();
-/* 80655C90-80655CD8 000430 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
-
-/* 80655CD8-80655D20 000478 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 80655D20-80655D90 0004C0 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
+ int phase_state = dComIfG_resLoad(&mPhase, getResName());
+ if (phase_state == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x810)) {
+ return cPhs_ERROR_e;
+ }
-/* 80655D90-80655DEC 000530 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
+ initialize();
+ }
-/* 80655DEC-80655E5C 00058C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
+ return phase_state;
}
/* 80655E5C-80655EDC 0005FC 0080+00 1/1 0/0 0/0 .text CreateHeap__10daBullet_cFv */
-void daBullet_c::CreateHeap() {
- // NONMATCHING
+BOOL daBullet_c::CreateHeap() {
+ void* mdlData_p = dComIfG_getObjectRes(getResName(), getBmdName());
+ JUT_ASSERT(273, 0 != mdlData_p);
+ mpModel = mDoExt_J3DModel__create((J3DModelData*)mdlData_p, 0x80000, 0x11000084);
+ return mpModel != NULL;
}
/* 80655EDC-80655F10 00067C 0034+00 1/1 0/0 0/0 .text Delete__10daBullet_cFv */
-void daBullet_c::Delete() {
- // NONMATCHING
+int daBullet_c::Delete() {
+ fopAcM_GetID(this);
+ this->~daBullet_c();
+ return 1;
}
-/* ############################################################################################## */
-/* 80656714-80656744 000000 0030+00 2/2 0/0 0/0 .rodata mCcDObjInfo__10daBullet_c */
-SECTION_RODATA u8 const daBullet_c::mCcDObjInfo[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80656714, &daBullet_c::mCcDObjInfo);
-
/* 80656744-8065675C 000030 0018+00 1/2 0/0 0/0 .rodata m__16daBullet_Param_c */
-SECTION_RODATA u8 const daBullet_Param_c::m[24] = {
- 0xC0, 0x40, 0x00, 0x00, 0x43, 0x7F, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00,
- 0x3F, 0xC0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00,
+daBullet_HIOParam const daBullet_Param_c::m = {
+ -3.0f,
+ 255.0f,
+ 3.0f,
+ 1.5f,
+ 3.0f,
+ 0x708,
};
-COMPILER_STRIP_GATE(0x80656744, &daBullet_Param_c::m);
-
-/* 8065675C-80656760 000048 0004+00 1/1 0/0 0/0 .rodata @3824 */
-SECTION_RODATA static f32 const lit_3824 = -1000000000.0f;
-COMPILER_STRIP_GATE(0x8065675C, &lit_3824);
/* 80655F10-806560FC 0006B0 01EC+00 2/2 0/0 0/0 .text Execute__10daBullet_cFv */
-void daBullet_c::Execute() {
- // NONMATCHING
+int daBullet_c::Execute() {
+ gravity = daBullet_Param_c::m.gravity;
+
+ if (field_0x957 == 0) {
+ if (mProcess != NULL) {
+ (this->*mProcess)(NULL);
+ }
+
+ fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
+ mAcch.CrrPos(dComIfG_Bgsp());
+ mGndChk = mAcch.m_gnd;
+ mGroundY = mAcch.GetGroundH();
+ } else {
+ mGroundY = -1000000000.0f;
+ }
+
+ int room_no;
+ if (mGroundY != -1000000000.0f) {
+ room_no = dComIfG_Bgsp().GetRoomId(mGndChk);
+ tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(mGndChk);
+ } else {
+ room_no = dComIfGp_roomControl_getStayNo();
+ }
+
+ tevStr.room_no = room_no;
+ fopAcM_SetRoomNo(this, tevStr.room_no);
+ attention_info.flags = 0;
+ attention_info.position = current.pos;
+ eyePos = attention_info.position;
+
+ if (field_0x957 == 0) {
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::scaleM(scale);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
+
+ field_0x957 = 0;
+ return 1;
}
/* 806560FC-80656160 00089C 0064+00 1/1 0/0 0/0 .text Draw__10daBullet_cFv */
-void daBullet_c::Draw() {
- // NONMATCHING
+int daBullet_c::Draw() {
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
+ mDoExt_modelUpdateDL(mpModel);
+ return 1;
}
/* 80656160-80656180 000900 0020+00 1/1 0/0 0/0 .text
* createHeapCallBack__10daBullet_cFP10fopAc_ac_c */
-void daBullet_c::createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+int daBullet_c::createHeapCallBack(fopAc_ac_c* i_this) {
+ return ((daBullet_c*)i_this)->CreateHeap();
}
/* 80656180-80656198 000920 0018+00 3/3 0/0 0/0 .text getResName__10daBullet_cFv */
-void daBullet_c::getResName() {
- // NONMATCHING
+const char* daBullet_c::getResName() {
+ return l_resFileNameList[mType];
}
/* 80656198-806561B0 000938 0018+00 1/1 0/0 0/0 .text getBmdName__10daBullet_cFv */
-void daBullet_c::getBmdName() {
- // NONMATCHING
+const char* daBullet_c::getBmdName() {
+ return l_bmdFileNameList[mType];
}
/* 806561B0-806561D0 000950 0020+00 1/1 0/0 0/0 .text getTypeFromParam__10daBullet_cFv */
-void daBullet_c::getTypeFromParam() {
- // NONMATCHING
+int daBullet_c::getTypeFromParam() {
+ u8 prm = fopAcM_GetParam(this);
+ switch (prm) {
+ case 0:
+ return 0;
+ }
+
+ return 0;
}
-/* ############################################################################################## */
-/* 80656760-80656764 00004C 0004+00 0/0 0/0 0/0 .rodata @3843 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3843 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80656760, &lit_3843);
-#pragma pop
-
-/* 80656764-80656768 000050 0004+00 0/0 0/0 0/0 .rodata @3844 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3844 = 0.5f;
-COMPILER_STRIP_GATE(0x80656764, &lit_3844);
-#pragma pop
-
-/* 80656768-8065676C 000054 0004+00 0/0 0/0 0/0 .rodata @3845 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3845[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80656768, &lit_3845);
-#pragma pop
-
-/* 8065676C-80656770 000058 0004+00 0/1 0/0 0/0 .rodata @3908 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3908 = -10.0f;
-COMPILER_STRIP_GATE(0x8065676C, &lit_3908);
-#pragma pop
-
-/* 80656770-80656774 00005C 0004+00 0/1 0/0 0/0 .rodata @3909 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3909 = 10.0f;
-COMPILER_STRIP_GATE(0x80656770, &lit_3909);
-#pragma pop
+static f32 dummyLiteral() {
+ f32 rt = 0.1f;
+ rt += 0.5f;
+ return rt;
+}
+
+static f32 dummyLiteral2() {
+ return 0.0f;
+}
/* 806561D0-80656378 000970 01A8+00 1/1 0/0 0/0 .text initialize__10daBullet_cFv */
void daBullet_c::initialize() {
- // NONMATCHING
+ mpModel->getModelData();
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+ fopAcM_setCullSizeBox(this, -10.0f, -10.0f, -10.0f, 10.0f, 10.0f, 10.0f);
+
+ mAcchCir.SetWall(daBullet_Param_c::m.width, daBullet_Param_c::m.knee_height);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
+
+ mCcStts.Init(daBullet_Param_c::m.weight, 0, this);
+ mCcSph.Set(mCcDSph);
+ mCcSph.SetStts(&mCcStts);
+ mAcch.CrrPos(dComIfG_Bgsp());
+ mGndChk = mAcch.m_gnd;
+ mGroundY = mAcch.GetGroundH();
+
+ setProcess(&daBullet_c::wait);
+ mLifetime = daBullet_Param_c::m.lifetime;
+ Execute();
}
/* 80656378-80656420 000B18 00A8+00 2/2 0/0 0/0 .text
* setProcess__10daBullet_cFM10daBullet_cFPCvPvPv_i */
-void daBullet_c::setProcess(int (daBullet_c::*param_0)(void*)) {
- // NONMATCHING
+int daBullet_c::setProcess(daBullet_c::processFn i_process) {
+ mMode = 2;
+ if (mProcess != NULL) {
+ (this->*mProcess)(NULL);
+ }
+
+ mMode = 0;
+ mProcess = i_process;
+
+ if (mProcess != NULL) {
+ (this->*mProcess)(NULL);
+ }
+
+ return 1;
}
/* 80656420-806564B8 000BC0 0098+00 1/0 0/0 0/0 .text wait__10daBullet_cFPv */
-void daBullet_c::wait(void* param_0) {
- // NONMATCHING
+int daBullet_c::wait(void*) {
+ switch (mMode) {
+ case 0:
+ mMode = 1;
+ break;
+ case 1:
+ if (cM3d_IsZero(speedF) == false) {
+ setProcess(&daBullet_c::move);
+ }
+ break;
+ case 2:
+ break;
+ }
+
+ return 1;
}
/* 806564B8-80656548 000C58 0090+00 1/0 0/0 0/0 .text move__10daBullet_cFPv */
-void daBullet_c::move(void* param_0) {
- // NONMATCHING
+int daBullet_c::move(void*) {
+ switch (mMode) {
+ case 0:
+ mMode = 1;
+ break;
+ case 1:
+ if (cLib_calcTimer<int>(&mLifetime) == 0) {
+ fopAcM_delete(this);
+ } else if (mAcch.ChkGroundHit() || mAcch.ChkWallHit()) {
+ fopAcM_delete(this);
+ }
+ break;
+ case 2:
+ break;
+ }
+
+ return 1;
}
/* 80656548-80656568 000CE8 0020+00 1/0 0/0 0/0 .text daBullet_Create__FPv */
-static void daBullet_Create(void* param_0) {
- // NONMATCHING
+static int daBullet_Create(void* i_this) {
+ return ((daBullet_c*)i_this)->create();
}
/* 80656568-80656588 000D08 0020+00 1/0 0/0 0/0 .text daBullet_Delete__FPv */
-static void daBullet_Delete(void* param_0) {
- // NONMATCHING
+static int daBullet_Delete(void* i_this) {
+ return ((daBullet_c*)i_this)->Delete();
}
/* 80656588-806565A8 000D28 0020+00 1/0 0/0 0/0 .text daBullet_Execute__FPv */
-static void daBullet_Execute(void* param_0) {
- // NONMATCHING
+static int daBullet_Execute(void* i_this) {
+ return ((daBullet_c*)i_this)->Execute();
}
/* 806565A8-806565C8 000D48 0020+00 1/0 0/0 0/0 .text daBullet_Draw__FPv */
-static void daBullet_Draw(void* param_0) {
- // NONMATCHING
+static int daBullet_Draw(void* i_this) {
+ return ((daBullet_c*)i_this)->Draw();
}
/* 806565C8-806565D0 000D68 0008+00 1/0 0/0 0/0 .text daBullet_IsDelete__FPv */
-static bool daBullet_IsDelete(void* param_0) {
- return true;
+static int daBullet_IsDelete(void* i_this) {
+ return 1;
}
-/* 806565D0-80656618 000D70 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 80656618-80656634 000DB8 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<i>__FPi */
-extern "C" void func_80656618(void* _this, int* param_0) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 806568A8-806568B4 00011C 000C+00 2/2 0/0 0/0 .data __vt__16daBullet_Param_c */
-SECTION_DATA extern void* __vt__16daBullet_Param_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__16daBullet_Param_cFv,
+/* 806567EC-8065680C -00001 0020+00 1/0 0/0 0/0 .data daBullet_MethodTable */
+static actor_method_class daBullet_MethodTable = {
+ (process_method_func)daBullet_Create,
+ (process_method_func)daBullet_Delete,
+ (process_method_func)daBullet_Execute,
+ (process_method_func)daBullet_IsDelete,
+ (process_method_func)daBullet_Draw,
};
-/* 806568C0-806568CC 000008 000C+00 1/1 0/0 0/0 .bss @3619 */
-static u8 lit_3619[12];
-
-/* 806568CC-806568D0 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[4];
-
-/* 80656634-806566A8 000DD4 0074+00 0/0 1/0 0/0 .text __sinit_d_a_bullet_cpp */
-void __sinit_d_a_bullet_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80656634, __sinit_d_a_bullet_cpp);
-#pragma pop
-
-/* 806566A8-806566F0 000E48 0048+00 2/1 0/0 0/0 .text __dt__16daBullet_Param_cFv */
-daBullet_Param_c::~daBullet_Param_c() {
- // NONMATCHING
-}
-
-/* 806566F0-806566F8 000E90 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_806566F0() {
- // NONMATCHING
-}
-
-/* 806566F8-80656700 000E98 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_806566F8() {
- // NONMATCHING
-}
-
-/* 80656774-80656774 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 8065680C-8065683C -00001 0030+00 0/0 0/0 1/0 .data g_profile_BULLET */
+extern actor_process_profile_definition g_profile_BULLET = {
+ fpcLy_CURRENT_e, // mLayerID
+ 8, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_BULLET, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daBullet_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 751, // mPriority
+ &daBullet_MethodTable, // sub_method
+ 0x00044000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
diff --git a/src/d/actor/d_a_obj_yousei.cpp b/src/d/actor/d_a_obj_yousei.cpp
index e60c5c4edc..ef620658d3 100644
--- a/src/d/actor/d_a_obj_yousei.cpp
+++ b/src/d/actor/d_a_obj_yousei.cpp
@@ -4,1088 +4,906 @@
*/
#include "d/actor/d_a_obj_yousei.h"
-#include "d/d_cc_d.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" void InitCcSph__13daObjYOUSEI_cFv();
-extern "C" void SetCcSph__13daObjYOUSEI_cFv();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" static void daObjYOUSEI_Create__FP10fopAc_ac_c();
-extern "C" static void daObjYOUSEI_Delete__FP13daObjYOUSEI_c();
-extern "C" void SpeedSet__13daObjYOUSEI_cFv();
-extern "C" void MoveAction__13daObjYOUSEI_cFv();
-extern "C" void BinAction__13daObjYOUSEI_cFv();
-extern "C" void LinkChk__13daObjYOUSEI_cFv();
-extern "C" void WaitAction__13daObjYOUSEI_cFv();
-extern "C" void LinkAction__13daObjYOUSEI_cFv();
-extern "C" void LinkSearch__13daObjYOUSEI_cFv();
-extern "C" void WayBgCheck__13daObjYOUSEI_cFffs();
-extern "C" void CareAction__13daObjYOUSEI_cFv();
-extern "C" void CheckGround__13daObjYOUSEI_cFv();
-extern "C" void __dt__14dBgS_ObjGndChkFv();
-extern "C" void CheckWater__13daObjYOUSEI_cFv();
-extern "C" void Action__13daObjYOUSEI_cFv();
-extern "C" void ObjHit__13daObjYOUSEI_cFv();
-extern "C" void Execute__13daObjYOUSEI_cFv();
-extern "C" void Delete__13daObjYOUSEI_cFv();
-extern "C" void setBaseMtx__13daObjYOUSEI_cFv();
-extern "C" static void daObjYOUSEI_Draw__FP13daObjYOUSEI_c();
-extern "C" static void daObjYOUSEI_Execute__FP13daObjYOUSEI_c();
-extern "C" void create__13daObjYOUSEI_cFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" static bool daObjYOUSEI_IsDelete__FP13daObjYOUSEI_c();
-extern "C" static void func_804D15A4();
-extern "C" static void func_804D15AC();
-extern "C" static void func_804D15B4();
-extern "C" static void func_804D15BC();
-extern "C" static void func_804D15C4();
-extern "C" void getHeadTopPos__9daPy_py_cCFv();
-extern "C" extern char const* const d_a_obj_yousei__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void play__16mDoExt_McaMorfSOFUlSc();
-extern "C" void entryDL__16mDoExt_McaMorfSOFv();
-extern "C" void modelCalc__16mDoExt_McaMorfSOFv();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj();
-extern "C" void dComIfGs_getMaxLifeGauge__Fv();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void forceOnEventMove__Q213dPa_control_c7level_cFUl();
-extern "C" void getEmitter__Q213dPa_control_c7level_cFUl();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void request__11dAttCatch_cFP10fopAc_ac_cUcfffsi();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
-extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void ClrMoveBGOnly__9dBgS_AcchFv();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __dt__18dBgS_ObjGndChk_AllFv();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-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 ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
-extern "C" void GetTgHitGObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void execItemGet__FUc();
-extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs();
-extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void SetR__8cM3dGSphFf();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalcPos2__FP4cXyzRC4cXyzff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void MtxPosition__FP4cXyzP4cXyz();
-extern "C" void deleteAllParticle__14JPABaseEmitterFv();
-extern "C" void __ct__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void checkPass__12J3DFrameCtrlFf();
-extern "C" void __cvt_fp2unsigned();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
-extern "C" extern void* __vt__18dBgS_ObjGndChk_All[12];
-extern "C" extern void* __vt__8dCcD_Sph[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" extern void* calc_mtx[1 + 1 /* padding */];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 804D15F0-804D1630 000000 0040+00 11/11 0/0 0/0 .rodata ccSphSrc$3652 */
-const static dCcD_SrcSph ccSphSrc = {
- {
- {0x0, {{0x0, 0x0, 0x0}, {0x14002, 0x11}, 0x75}}, // mObj
- {dCcD_SE_STONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
- } // mSphAttr
-};
+#include "d/d_com_inf_game.h"
+#include "d/d_s_play.h"
+#include "d/d_item.h"
+#include "Z2AudioLib/Z2Instances.h"
/* 804CE738-804CE7A4 000078 006C+00 1/1 0/0 0/0 .text InitCcSph__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::InitCcSph() {
- // NONMATCHING
+ const static dCcD_SrcSph ccSphSrc = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x14002, 0x11}, 0x75}}, // mObj
+ {dCcD_SE_STONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
+ } // mSphAttr
+ };
+
+ mCcStts.Init(1, 0, this);
+ mCcSph.Set(ccSphSrc);
+ mCcSph.SetStts(&mCcStts);
+ mCcSph.SetC(current.pos);
+ mCcSph.OnTgNoHitMark();
}
-/* ############################################################################################## */
-/* 804D1630-804D1634 000040 0004+00 1/2 0/0 0/0 .rodata @3661 */
-SECTION_RODATA static f32 const lit_3661 = 40.0f;
-COMPILER_STRIP_GATE(0x804D1630, &lit_3661);
-
/* 804CE7A4-804CE7FC 0000E4 0058+00 1/1 0/0 0/0 .text SetCcSph__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::SetCcSph() {
- // NONMATCHING
+ mCcSph.SetC(current.pos);
+ mCcSph.SetR(40.0f);
+ dComIfG_Ccsp()->Set(&mCcSph);
}
-/* ############################################################################################## */
-/* 804D1634-804D1638 000044 0004+00 1/2 0/0 0/0 .rodata @3680 */
-SECTION_RODATA static f32 const lit_3680 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804D1634, &lit_3680);
+int daObjYOUSEI_c::CreateHeap() {
+ void* modelData = dComIfG_getObjectRes("Always", 0x21);
+ JUT_ASSERT(177, modelData != 0);
-/* 804D1720-804D1720 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_804D1720 = "Always";
-#pragma pop
+ mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("Always", 0xF), 2, 0.4f, 0, -1, &mSound, 0x80000, 0x11000084);
+ if (mpModelMorf == NULL) {
+ return 0;
+ }
+
+ return 1;
+}
/* 804CE7FC-804CE8DC 00013C 00E0+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int useHeapInit(fopAc_ac_c* i_this) {
+ daObjYOUSEI_c* a_this = (daObjYOUSEI_c*)i_this;
+ return a_this->CreateHeap();
}
/* 804CE8DC-804CE8FC 00021C 0020+00 1/0 0/0 0/0 .text daObjYOUSEI_Create__FP10fopAc_ac_c
*/
-static void daObjYOUSEI_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daObjYOUSEI_Create(fopAc_ac_c* i_this) {
+ daObjYOUSEI_c* a_this = (daObjYOUSEI_c*)i_this;
+ fpc_ProcID id = fopAcM_GetID(i_this);
+ return a_this->create();
}
/* 804CE8FC-804CE920 00023C 0024+00 1/0 0/0 0/0 .text daObjYOUSEI_Delete__FP13daObjYOUSEI_c */
-static void daObjYOUSEI_Delete(daObjYOUSEI_c* param_0) {
- // NONMATCHING
+static int daObjYOUSEI_Delete(daObjYOUSEI_c* i_this) {
+ fpc_ProcID id = fopAcM_GetID(i_this);
+ i_this->Delete();
+ return 1;
}
-/* ############################################################################################## */
-/* 804D1638-804D163C 000048 0004+00 2/10 0/0 0/0 .rodata @3708 */
-SECTION_RODATA static u8 const lit_3708[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x804D1638, &lit_3708);
-
/* 804CE920-804CE9D0 000260 00B0+00 1/1 0/0 0/0 .text SpeedSet__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::SpeedSet() {
- // NONMATCHING
+ speed.y += gravity;
+ current.pos.y += speed.y;
+
+ cXyz mae(0.0f, 0.0f, speedF);
+ cXyz ato(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::YrotS(current.angle.y);
+ mDoMtx_stack_c::multVec(&mae, &ato);
+ current.pos.x += ato.x;
+ current.pos.z += ato.z;
}
-/* ############################################################################################## */
-/* 804D163C-804D1640 00004C 0004+00 0/4 0/0 0/0 .rodata @3790 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3790 = 25.0f;
-COMPILER_STRIP_GATE(0x804D163C, &lit_3790);
-#pragma pop
-
-/* 804D1640-804D1644 000050 0004+00 1/6 0/0 0/0 .rodata @3791 */
-SECTION_RODATA static f32 const lit_3791 = 1.0f;
-COMPILER_STRIP_GATE(0x804D1640, &lit_3791);
-
-/* 804D1644-804D1648 000054 0004+00 0/1 0/0 0/0 .rodata @3792 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3792 = 120.0f;
-COMPILER_STRIP_GATE(0x804D1644, &lit_3792);
-#pragma pop
-
-/* 804D1648-804D164C 000058 0004+00 0/1 0/0 0/0 .rodata @3793 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3793 = 3.0f / 100.0f;
-COMPILER_STRIP_GATE(0x804D1648, &lit_3793);
-#pragma pop
-
-/* 804D164C-804D1650 00005C 0004+00 0/4 0/0 0/0 .rodata @3794 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3794 = 10.0f;
-COMPILER_STRIP_GATE(0x804D164C, &lit_3794);
-#pragma pop
-
-/* 804D1650-804D1654 000060 0004+00 1/3 0/0 0/0 .rodata @3795 */
-SECTION_RODATA static f32 const lit_3795 = 130.0f;
-COMPILER_STRIP_GATE(0x804D1650, &lit_3795);
-
-/* 804D1654-804D1658 000064 0004+00 0/1 0/0 0/0 .rodata @3796 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3796 = 600.0f;
-COMPILER_STRIP_GATE(0x804D1654, &lit_3796);
-#pragma pop
-
-/* 804D1658-804D165C 000068 0004+00 0/1 0/0 0/0 .rodata @3797 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3797 = 3.0f / 50.0f;
-COMPILER_STRIP_GATE(0x804D1658, &lit_3797);
-#pragma pop
-
-/* 804D165C-804D1660 00006C 0004+00 1/6 0/0 0/0 .rodata @3798 */
-SECTION_RODATA static f32 const lit_3798 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804D165C, &lit_3798);
-
-/* 804D1660-804D1664 000070 0004+00 0/1 0/0 0/0 .rodata @3799 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3799 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804D1660, &lit_3799);
-#pragma pop
-
-/* 804D1664-804D1668 000074 0004+00 0/3 0/0 0/0 .rodata @3800 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3800 = 3.0f;
-COMPILER_STRIP_GATE(0x804D1664, &lit_3800);
-#pragma pop
-
-/* 804D1668-804D166C 000078 0004+00 0/3 0/0 0/0 .rodata @3801 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3801 = 2.0f;
-COMPILER_STRIP_GATE(0x804D1668, &lit_3801);
-#pragma pop
-
-/* 804D166C-804D1670 00007C 0004+00 1/7 0/0 0/0 .rodata @3802 */
-SECTION_RODATA static f32 const lit_3802 = 100.0f;
-COMPILER_STRIP_GATE(0x804D166C, &lit_3802);
-
-/* 804D1670-804D1674 000080 0004+00 0/3 0/0 0/0 .rodata @3803 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3803 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x804D1670, &lit_3803);
-#pragma pop
-
-/* 804D1674-804D1678 000084 0004+00 0/5 0/0 0/0 .rodata @3804 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3804 = 30.0f;
-COMPILER_STRIP_GATE(0x804D1674, &lit_3804);
-#pragma pop
-
-/* 804D1678-804D1680 000088 0004+04 0/3 0/0 0/0 .rodata @3805 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3805[1 + 1 /* padding */] = {
- 7.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x804D1678, &lit_3805);
-#pragma pop
-
-/* 804D1680-804D1688 000090 0008+00 0/2 0/0 0/0 .rodata @3807 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3807[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D1680, &lit_3807);
-#pragma pop
-
-/* 804D17E8-804D17EC 000000 0001+03 1/1 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 804D17EC-804D17F0 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
-
-/* 804D17F0-804D17F4 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
-
-/* 804D17F4-804D17F8 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
-
-/* 804D17F8-804D17FC 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
-
-/* 804D17FC-804D1800 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
-
-/* 804D1800-804D1804 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
-
-/* 804D1804-804D1808 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
-
-/* 804D1808-804D180C 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
-
-/* 804D180C-804D1810 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
-
-/* 804D1810-804D1814 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
-
-/* 804D1814-804D1818 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
-
-/* 804D1818-804D181C 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
-
-/* 804D181C-804D1820 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
-
-/* 804D1820-804D1824 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
-
-/* 804D1824-804D1828 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
+UNK_REL_BSS
/* 804D1828-804D182C 000040 0004+00 0/0 0/0 0/0 .bss s_dis */
-#pragma push
-#pragma force_active on
-static u8 s_dis[4];
-#pragma pop
+static f32 s_dis;
/* 804D182C-804D1830 000044 0004+00 4/5 0/0 0/0 .bss sLink_Pos */
-static u8 sLink_Pos[4];
+static cXyz* sLink_Pos;
/* 804CE9D0-804CEE50 000310 0480+00 1/1 0/0 0/0 .text MoveAction__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::MoveAction() {
- // NONMATCHING
+ switch (mMode) {
+ case 0:
+ mMode++;
+ field_0x5dc = -0x1CB8;
+ mSpeedVTarget = 0.0f;
+ field_0x5d6 = 120.0f + yREG_F(18);
+ mAngleTarget = yREG_F(17) + (f32)(cLib_targetAngleY(sLink_Pos, &current.pos) - 0x3000);
+ break;
+ case 1:
+ if (field_0x5d6 == 100 && mPrm != 0) {
+ execItemGet(fpcNm_ITEM_RECOVERY_FAILY);
+ }
+
+ f32 var_f31 = (25.0f + yREG_F(16)) / field_0x5d6;
+ if (var_f31 > 1.0f) {
+ var_f31 = 1.0f;
+ }
+
+ cXyz sp30;
+ cXyz sp24;
+ f32 temp_f30 = field_0x5d6 / 120.0f;
+
+ if ((fopAcM_GetParam(this) & 0xFF) == 0 && field_0x5d6 > 110) {
+ if (field_0x5d6 > 115) {
+ var_f31 = 0.03f + BREG_F(1);
+ sp30.set(0.0f, 600.0f + BREG_F(3), (10.0f / field_0x5e8) + (130.0f * temp_f30));
+ } else if (field_0x5d6 > 110) {
+ var_f31 = 0.06f + BREG_F(2);
+ sp30.set(0.0f, BREG_F(4), (10.0f / field_0x5e8) + (130.0f * temp_f30));
+ }
+
+ cXyz sp18(1.0f, 1.0f, 1.0f);
+ cLib_addCalcPos2(&scale, sp18, 0.2f + nREG_F(16), 10.0f);
+ mpModelMorf->setPlaySpeed(0.6f);
+ } else {
+ mAngleTarget += field_0x5dc * var_f31;
+ sp30.set(0.0f, mSpeedVTarget, (10.0f / field_0x5e8) + (130.0f * temp_f30));
+ mpModelMorf->setPlaySpeed((3.0f + yREG_F(9)) * field_0x5ec);
+ }
+
+ current.angle.y = mAngleTarget - 0x4000;
+ cLib_addCalc2(&field_0x5ec, var_f31, 0.2f + BREG_F(5), 10.0f);
+
+ mDoMtx_stack_c::transS(*sLink_Pos);
+ mDoMtx_stack_c::YrotM(mAngleTarget);
+ mDoMtx_stack_c::multVec(&sp30, &sp24);
+ mSpeedVTarget += (2.0f + yREG_F(19)) * field_0x5e8;
+
+ cLib_addCalc(&current.pos.x, sp24.x, field_0x5ec, 100.0f, 0.0f);
+ cLib_addCalc(&current.pos.y, sp24.y, field_0x5ec * (0.3f + yREG_F(10)), 30.0f, 0.0f);
+ cLib_addCalc(&current.pos.z, sp24.z, field_0x5ec, 100.0f, 0.0f);
+ break;
+ }
+
+ if (mpModelMorf->checkFrame(7.0f)) {
+ mpModelMorf->setFrame(0.0f);
+ }
+
+ if (field_0x5d6 == 0) {
+ fopAcM_delete(this);
+ }
+
+ field_0x604 = dComIfGp_particle_set(field_0x604, 0x72F, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ field_0x60c = dComIfGp_particle_set(field_0x60c, 0x730, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ field_0x610 = dComIfGp_particle_set(field_0x610, 0x732, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
}
-/* ############################################################################################## */
-/* 804D1688-804D168C 000098 0004+00 0/1 0/0 0/0 .rodata @3849 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3849 = 1.5f;
-COMPILER_STRIP_GATE(0x804D1688, &lit_3849);
-#pragma pop
-
-/* 804D168C-804D1690 00009C 0004+00 0/2 0/0 0/0 .rodata @3850 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3850 = 4.5f;
-COMPILER_STRIP_GATE(0x804D168C, &lit_3850);
-#pragma pop
-
-/* 804D1690-804D1694 0000A0 0004+00 0/2 0/0 0/0 .rodata @3851 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3851 = -2.0f;
-COMPILER_STRIP_GATE(0x804D1690, &lit_3851);
-#pragma pop
-
-/* 804D1694-804D1698 0000A4 0004+00 0/2 0/0 0/0 .rodata @3852 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3852 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x804D1694, &lit_3852);
-#pragma pop
-
-/* 804D1698-804D169C 0000A8 0004+00 0/2 0/0 0/0 .rodata @3853 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3853 = 1.0f / 50.0f;
-COMPILER_STRIP_GATE(0x804D1698, &lit_3853);
-#pragma pop
-
-/* 804D169C-804D16A0 0000AC 0004+00 0/4 0/0 0/0 .rodata @3854 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3854 = 5.0f;
-COMPILER_STRIP_GATE(0x804D169C, &lit_3854);
-#pragma pop
-
/* 804CEE50-804CF098 000790 0248+00 1/1 0/0 0/0 .text BinAction__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::BinAction() {
- // NONMATCHING
+ switch (mMode) {
+ case 0:
+ mAngleTarget = yREG_F(17) + (f32)(cLib_targetAngleY(sLink_Pos, &current.pos) - 0x3000);
+ mSpeedVTarget = 1.5f + nREG_F(18);
+ speedF = 2.0f;
+ mSpeedFTarget = 10.0f;
+ mMode++;
+ mpModelMorf->setPlaySpeed(0.4f);
+ mTimers[0] = 7.0f + nREG_F(12);
+ break;
+ case 1:
+ if (mpModelMorf->checkFrame(7.0f)) {
+ mpModelMorf->setFrame(0.0f);
+ mSpeedVTarget = 1.0f;
+ }
+
+ if (mpModelMorf->checkFrame(4.5f + yREG_F(12))) {
+ mSpeedVTarget = -2.0f + BREG_F(6);
+ }
+
+ if (mTimers[0] == 0) {
+ CareAction();
+ }
+ break;
+ }
+
+ cXyz sp18(1.0f, 1.0f, 1.0f);
+ cLib_addCalcPos2(&scale, sp18, 0.05f + nREG_F(16), 10.0f);
+ cLib_addCalc(&speed.y, mSpeedVTarget, 0.2f, 25.0f + yREG_F(11), 0.0f);
+ cLib_addCalc(&speedF, mSpeedFTarget, 0.02f + yREG_F(7), 5.0f, 0.0f);
+ cLib_addCalcAngleS2(&current.angle.y, mAngleTarget, 3, 0x1000);
+
+ field_0x604 = dComIfGp_particle_set(field_0x604, 0x72F, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ field_0x608 = dComIfGp_particle_set(field_0x608, 0x731, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
}
-/* ############################################################################################## */
-/* 804D16A0-804D16A8 0000B0 0008+00 0/2 0/0 0/0 .rodata @3996 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3996[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D16A0, &lit_3996);
-#pragma pop
-
-/* 804D16A8-804D16B0 0000B8 0008+00 0/2 0/0 0/0 .rodata @3997 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3997[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D16A8, &lit_3997);
-#pragma pop
-
-/* 804D16B0-804D16B8 0000C0 0008+00 0/2 0/0 0/0 .rodata @3998 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3998[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x804D16B0, &lit_3998);
-#pragma pop
-
-/* 804D16B8-804D16BC 0000C8 0004+00 0/1 0/0 0/0 .rodata @3999 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3999 = 500.0f;
-COMPILER_STRIP_GATE(0x804D16B8, &lit_3999);
-#pragma pop
-
-/* 804D16BC-804D16C0 0000CC 0004+00 0/3 0/0 0/0 .rodata @4000 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4000 = 80.0f;
-COMPILER_STRIP_GATE(0x804D16BC, &lit_4000);
-#pragma pop
-
-/* 804D16C0-804D16C4 0000D0 0004+00 0/2 0/0 0/0 .rodata @4001 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4001 = 29.0f / 50.0f;
-COMPILER_STRIP_GATE(0x804D16C0, &lit_4001);
-#pragma pop
-
-/* 804D16C4-804D16C8 0000D4 0004+00 0/2 0/0 0/0 .rodata @4002 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4002 = 7.0f / 20.0f;
-COMPILER_STRIP_GATE(0x804D16C4, &lit_4002);
-#pragma pop
-
-/* 804D16C8-804D16CC 0000D8 0004+00 1/4 0/0 0/0 .rodata @4003 */
-SECTION_RODATA static f32 const lit_4003 = 200.0f;
-COMPILER_STRIP_GATE(0x804D16C8, &lit_4003);
-
-/* 804D16CC-804D16D0 0000DC 0004+00 0/1 0/0 0/0 .rodata @4004 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4004 = 51.0f / 100.0f;
-COMPILER_STRIP_GATE(0x804D16CC, &lit_4004);
-#pragma pop
-
-/* 804D16D0-804D16D4 0000E0 0004+00 2/7 0/0 0/0 .rodata @4005 */
-SECTION_RODATA static f32 const lit_4005 = 50.0f;
-COMPILER_STRIP_GATE(0x804D16D0, &lit_4005);
-
/* 804D1830-804D1834 -00001 0004+00 2/3 0/0 0/0 .bss None */
/* 804D1830 0001+00 data_804D1830 None */
+static u8 data_804D1830;
+
/* 804D1831 0003+00 data_804D1831 None */
-static u8 struct_804D1830[4];
+static u8 data_804D1831;
/* 804CF098-804CF6C4 0009D8 062C+00 1/1 0/0 0/0 .text LinkChk__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::LinkChk() {
- // NONMATCHING
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz& player_pos = fopAcM_GetPosition(player);
+ cXyz sp20;
+ cXyz sp14;
+
+ if (current.pos.abs(player_pos) < 500.0f && 0.0f == fopAcM_GetSpeedF(player)) {
+ if (player->checkItemSwordEquip() && current.pos.y - player_pos.y < 130.0f && !player->checkAttentionLock() && (data_804D1830 == 0 || field_0x5ac != 0)) {
+ data_804D1830 = 1;
+ field_0x5ac = 1;
+
+ sp20.set(30.0f + yREG_F(8), 80.0f + yREG_F(9), yREG_F(10));
+ MTXCopy(daPy_getLinkPlayerActorClass()->getModelJointMtx(9), *calc_mtx);
+ MtxPosition(&sp20, &sp14);
+
+ mAngleTarget = cLib_targetAngleY(&current.pos, &sp14);
+ cLib_addCalcAngleS2(&current.angle.y, mAngleTarget, 10, 0x500);
+
+ if (current.pos.y - sp14.y < 0.0f) {
+ mAnmSpeed = 0.58f;
+ } else {
+ mAnmSpeed = 0.35f;
+ }
+
+ if (current.pos.abs(sp14) < 30.0f + TREG_F(2)) {
+ mAction = 3;
+ mMode = 0;
+ }
+
+ field_0x5f8 = sp14;
+ } else if ((data_804D1831 == 0 || field_0x5ad != 0) && current.pos.y - player_pos.y > 130.0f && current.pos.y - player_pos.y < 200.0f) {
+ data_804D1831 = 1;
+ field_0x5ad = 1;
+ mAnmSpeed = 0.50999999f;
+ sp14 = player->getHeadTopPos();
+ mAngleTarget = cLib_targetAngleY(&current.pos, &sp14);
+ field_0x61a = -0xE90;
+
+ if (current.pos.y > 5.0f + sp14.y && current.pos.y < 50.0f + sp14.y) {
+ cLib_addCalcAngleS2(&current.angle.y, mAngleTarget, 2, 0x600);
+ }
+
+ if (current.pos.abs(sp14) < 50.0f + TREG_F(2) && current.pos.y > sp14.y && (current.angle.y - mAngleTarget) < 0x2000 && (current.angle.y - mAngleTarget) > -0x2000) {
+ mAction = 3;
+ mMode = 2;
+ }
+
+ field_0x5f8 = sp14;
+ } else if (field_0x5ac != 0) {
+ data_804D1830 = 0;
+ field_0x5ac = 0;
+ } else if (field_0x5ad != 0) {
+ data_804D1831 = 0;
+ field_0x5ad = 0;
+ }
+ } else {
+ if (field_0x5ac != 0) {
+ data_804D1830 = 0;
+ field_0x5ac = 0;
+ } else if (field_0x5ad != 0) {
+ data_804D1831 = 0;
+ field_0x5ad = 0;
+ }
+ }
}
-/* ############################################################################################## */
-/* 804D16D4-804D16D8 0000E4 0004+00 0/1 0/0 0/0 .rodata @4187 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4187 = 15.0f;
-COMPILER_STRIP_GATE(0x804D16D4, &lit_4187);
-#pragma pop
-
-/* 804D16D8-804D16DC 0000E8 0004+00 0/2 0/0 0/0 .rodata @4188 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4188 = 6.0f;
-COMPILER_STRIP_GATE(0x804D16D8, &lit_4188);
-#pragma pop
-
-/* 804D16DC-804D16E0 0000EC 0004+00 0/1 0/0 0/0 .rodata @4189 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4189 = 0.25f;
-COMPILER_STRIP_GATE(0x804D16DC, &lit_4189);
-#pragma pop
-
-/* 804D16E0-804D16E4 0000F0 0004+00 0/1 0/0 0/0 .rodata @4190 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4190 = 13.0f;
-COMPILER_STRIP_GATE(0x804D16E0, &lit_4190);
-#pragma pop
-
-/* 804D16E4-804D16E8 0000F4 0004+00 0/2 0/0 0/0 .rodata @4191 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4191 = 150.0f;
-COMPILER_STRIP_GATE(0x804D16E4, &lit_4191);
-#pragma pop
-
-/* 804D16E8-804D16EC 0000F8 0004+00 0/1 0/0 0/0 .rodata @4192 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4192 = 2.5f;
-COMPILER_STRIP_GATE(0x804D16E8, &lit_4192);
-#pragma pop
-
-/* 804D16EC-804D16F0 0000FC 0004+00 0/1 0/0 0/0 .rodata @4193 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4193 = 0x3F666667;
-COMPILER_STRIP_GATE(0x804D16EC, &lit_4193);
-#pragma pop
-
-/* 804D16F0-804D16F4 000100 0004+00 0/1 0/0 0/0 .rodata @4194 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4194 = 250.0f;
-COMPILER_STRIP_GATE(0x804D16F0, &lit_4194);
-#pragma pop
-
-/* 804D16F4-804D16F8 000104 0004+00 0/1 0/0 0/0 .rodata @4195 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4195 = 13.0f / 20.0f;
-COMPILER_STRIP_GATE(0x804D16F4, &lit_4195);
-#pragma pop
-
-/* 804D16F8-804D16FC 000108 0004+00 0/1 0/0 0/0 .rodata @4196 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4196 = 20.0f;
-COMPILER_STRIP_GATE(0x804D16F8, &lit_4196);
-#pragma pop
-
-/* 804D16FC-804D1700 00010C 0004+00 0/2 0/0 0/0 .rodata @4197 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4197 = -100.0f;
-COMPILER_STRIP_GATE(0x804D16FC, &lit_4197);
-#pragma pop
-
-/* 804D1700-804D1704 000110 0004+00 0/1 0/0 0/0 .rodata @4198 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4198 = 26.0f;
-COMPILER_STRIP_GATE(0x804D1700, &lit_4198);
-#pragma pop
-
/* 804CF6C4-804CFCE8 001004 0624+00 1/1 0/0 0/0 .text WaitAction__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::WaitAction() {
- // NONMATCHING
+ u8 sp18 = 0;
+ f32 var_f30 = 0.0f;
+ f32 anm_frame = mpModelMorf->getFrame();
+ f32 var_f28 = 0.0f;
+ f32 var_f29 = 0.0f;
+ f32 var_f31 = 0.0f;
+
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ if (dComIfGs_getLife() != dComIfGs_getMaxLifeGauge() && 0.0f != fopAcM_GetSpeedF(player) && LinkSearch()) {
+ var_f30 = 1.0f + nREG_F(1);
+ var_f28 = 50.0f + nREG_F(3);
+ mTimers[0] = 150;
+ var_f31 = 15.0f;
+ var_f29 = 5.0f;
+ }
+
+ cXyz sp40;
+ cXyz sp34;
+ switch (mMode) {
+ case 0:
+ mMode++;
+ mSpeedFTarget = 5.0f;
+ mTimers[1] = 30;
+ break;
+ case 1:
+ if (mpModelMorf->checkFrame(7.0f)) {
+ mpModelMorf->setFrame(0.0f);
+
+ if (mTimers[0] == 0) {
+ mTimers[0] = 30.0f + cM_rndF(40.0f);
+ mAnmSpeed = 0.3f + var_f30 + yREG_F(6) + cM_rndF((0.3f - var_f30) + yREG_F(5));
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+ }
+
+ mSpeedVTarget = (6.0f + yREG_F(1)) * ((mAnmSpeed - 0.25f) + yREG_F(13));
+ mSpeedFTarget = (13.0f + yREG_F(8)) * ((mAnmSpeed - 0.25f) + yREG_F(14));
+
+ if (current.pos.y > 150.0f + home.pos.y + var_f28) {
+ mAnmSpeed = 0.35f;
+ mTimers[0] = 30;
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+ } else if (current.pos.y < 80.0f + home.pos.y) {
+ mAnmSpeed = 0.58f;
+ mTimers[0] = 30;
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+ }
+ }
+
+ if (mpModelMorf->checkFrame(4.5f + yREG_F(12))) {
+ mSpeedVTarget = -2.0f + yREG_F(3);
+ }
+
+ if (field_0x5d6 == 0 && mPrm == 5) {
+ mMode++;
+ field_0x5d6 = 100;
+ mSpeedVTarget = 2.5f;
+ mSpeedFTarget = 6.0f;
+ mAnmSpeed = 0.90000004f;
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+ }
+ break;
+ case 2:
+ if (field_0x5d6 == 0 && current.pos.y - sLink_Pos->y > 250.0f) {
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x604);
+ emitter->deleteAllParticle();
+ dComIfGp_particle_levelEmitterOnEventMove(field_0x604);
+ sp18 = 1;
+ fopAcM_delete(this);
+ }
+
+ if (mpModelMorf->checkFrame(7.0f)) {
+ mpModelMorf->setFrame(0.0f);
+ mSpeedVTarget = 3.0f + yREG_F(4);
+ }
+
+ if (mpModelMorf->checkFrame(4.5f + yREG_F(12))) {
+ mSpeedVTarget = -2.0f + yREG_F(3);
+ }
+ break;
+ }
+
+ if (mTimers[2] > 0) {
+ var_f31 = 15.0f;
+ var_f29 = 10.0f + TREG_F(0);
+ mAnmSpeed = 0.65f + TREG_F(1);
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+ }
+
+ if (mTimers[1] == 0) {
+ mTimers[1] = (30.0f + nREG_F(2) + cM_rndF(20.0f - var_f31)) - var_f31;
+
+ sp40 = home.pos - current.pos;
+ sp40.x += cM_rndFX(200.0f + nREG_F(10));
+ sp40.z += cM_rndFX(200.0f + nREG_F(10));
+ mAngleTarget = cM_atan2s(sp40.x, sp40.z);
+ }
+
+ cLib_addCalc(&speed.y, mSpeedVTarget, 0.2f, 25.0f + yREG_F(11), 0.0f);
+ cLib_addCalc(&speedF, mSpeedFTarget, 0.02f + yREG_F(7), 5.0f, 0.0f);
+
+ if (eventInfo.checkCommandCatch()) {
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x604);
+ emitter->deleteAllParticle();
+ dComIfGp_particle_levelEmitterOnEventMove(field_0x604);
+
+ emitter = dComIfGp_particle_getEmitter(field_0x608);
+ emitter->deleteAllParticle();
+ dComIfGp_particle_levelEmitterOnEventMove(field_0x608);
+
+ sp18 = 1;
+ data_804D1831 = 0;
+ data_804D1830 = 0;
+ fopAcM_delete(this);
+ } else {
+ dComIfGp_att_CatchRequest(this, fpcNm_ITEM_FAIRY, 150.0f, 50.0f, -100.0f, 0x5000, 1);
+ eventInfo.onCondition(0x40);
+ }
+
+ if (sp18 == 0) {
+ field_0x604 = dComIfGp_particle_set(field_0x604, 0x72F, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ field_0x608 = dComIfGp_particle_set(field_0x608, 0x731, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ }
+
+ if (mTimers[3] == 0) {
+ if (dComIfGs_getLife() == dComIfGs_getMaxLifeGauge()) {
+ if (field_0x5d6 != 0 && mPrm == 5) {
+ LinkChk();
+ } else {
+ LinkChk();
+ }
+ }
+ }
+
+ cLib_addCalcAngleS2(&current.angle.y, mAngleTarget, (26.0f - var_f29) + nREG_S(0), (field_0x61a + 0x1000));
}
-/* ############################################################################################## */
-/* 804D1704-804D1708 000114 0004+00 0/1 0/0 0/0 .rodata @4394 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4394 = 0.5f;
-COMPILER_STRIP_GATE(0x804D1704, &lit_4394);
-#pragma pop
-
-/* 804D1708-804D170C 000118 0004+00 0/1 0/0 0/0 .rodata @4395 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4395 = 0x3A83126F;
-COMPILER_STRIP_GATE(0x804D1708, &lit_4395);
-#pragma pop
-
/* 804CFCE8-804D057C 001628 0894+00 1/1 0/0 0/0 .text LinkAction__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::LinkAction() {
- // NONMATCHING
+ u8 sp18 = 0;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz& player_pos = fopAcM_GetPosition(player);
+ cXyz sp44(30.0f + yREG_F(8), 80.0f + yREG_F(9), yREG_F(10));
+ cXyz sp38;
+
+ MTXCopy(daPy_getLinkPlayerActorClass()->getModelJointMtx(9), *calc_mtx);
+ MtxPosition(&sp44, &sp38);
+
+ switch (mMode) {
+ case 0:
+ sp38.y += 5.0f;
+ mAngleTarget = cLib_targetAngleY(&current.pos, &sp38);
+ mAnmSpeed = 0.5f;
+
+ if (cLib_chasePos(&current.pos, sp38, speedF)) {
+ speedF = 0.0f;
+ mSpeedFTarget = 0.0f;
+ mTimers[0] = 200;
+ mMode++;
+ }
+
+ if (!player->checkItemSwordEquip() || sp38.abs(field_0x5f8) > 6.0f) {
+ mAction = 0;
+ mMode = 0;
+ mTimers[2] = 80.0f + TREG_F(3);
+ mTimers[3] = 100;
+ mTimers[1] = 0;
+ data_804D1830 = 0;
+ field_0x5ac = 0;
+ }
+
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+ break;
+ case 1:
+ sp38.y += 5.0f;
+
+ if (mTimers[0] < 100) {
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mAnmSpeed = 0.0f;
+ }
+ } else {
+ cLib_addCalc2(&mAnmSpeed, 0.3f, 0.05f, 0.001f);
+ }
+
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+
+ if (mTimers[0] == 0) {
+ mAction = 0;
+ mMode = 0;
+ mTimers[2] = 80.0f + TREG_F(3);
+ mTimers[3] = 100;
+ mTimers[1] = 0;
+ data_804D1830 = 0;
+ field_0x5ac = 0;
+ }
+
+ cLib_chasePos(&current.pos, sp38, 3.0f);
+
+ if (!player->checkItemSwordEquip() || sp38.abs(field_0x5f8) > 2.0f) {
+ mAction = 0;
+ mMode = 0;
+ mTimers[2] = 80.0f + TREG_F(3);
+ mTimers[3] = 100;
+ mTimers[1] = 0;
+ data_804D1830 = 0;
+ field_0x5ac = 0;
+ }
+ break;
+ case 2:
+ mAnmSpeed = 0.5f;
+ sp38 = player->getHeadTopPos();
+ sp38.y += 5.0f;
+
+ mAngleTarget = cLib_targetAngleY(&current.pos, &sp38);
+ mSpeedFTarget = 2.0f;
+ cLib_addCalc2(&speedF, mSpeedFTarget, 0.2f + yREG_F(7), 5.0f);
+
+ if (cLib_chasePos(&current.pos, sp38, speedF)) {
+ speedF = 0.0f;
+ mSpeedFTarget = 0.0f;
+ mTimers[0] = 200;
+ mMode++;
+ }
+
+ cLib_addCalcAngleS2(&current.angle.y, mAngleTarget, 2, 0x400);
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+ break;
+ case 3:
+ if (mTimers[0] < 100) {
+ if (mpModelMorf->checkFrame(0.0f)) {
+ mAnmSpeed = 0.0f;
+ }
+ } else {
+ cLib_addCalc2(&mAnmSpeed, 0.3f, 0.05f, 0.001f);
+ }
+
+ sp38 = player->getHeadTopPos();
+ sp38.y += 5.0f;
+ mpModelMorf->setPlaySpeed(mAnmSpeed);
+
+ if (mTimers[0] == 0) {
+ mAction = 0;
+ mMode = 0;
+ mTimers[2] = 80.0f + TREG_F(3);
+ mTimers[3] = 100;
+ mTimers[1] = 0;
+ data_804D1831 = 0;
+ field_0x5ad = 0;
+ }
+
+ cLib_chasePos(&current.pos, sp38, 3.0f);
+
+ if (sp38.abs(field_0x5f8) > 2.0f) {
+ mAction = 0;
+ mMode = 0;
+ mTimers[2] = 80.0f + TREG_F(3);
+ mTimers[3] = 100;
+ mTimers[1] = 0;
+ data_804D1831 = 0;
+ field_0x5ad = 0;
+ }
+ break;
+ }
+
+ if (eventInfo.checkCommandCatch()) {
+ dComIfGp_particle_getEmitter(field_0x604)->deleteAllParticle();
+ dComIfGp_particle_levelEmitterOnEventMove(field_0x604);
+ dComIfGp_particle_getEmitter(field_0x608)->deleteAllParticle();
+ dComIfGp_particle_levelEmitterOnEventMove(field_0x608);
+ sp18 = 1;
+ data_804D1831 = 0;
+ data_804D1830 = 0;
+ fopAcM_delete(this);
+ } else {
+ dComIfGp_att_CatchRequest(this, fpcNm_ITEM_FAIRY, 150.0f, 50.0f, -100.0f, 0x5000, 1);
+ eventInfo.onCondition(0x40);
+ }
+
+ if (sp18 == 0) {
+ field_0x604 = dComIfGp_particle_set(field_0x604, 0x72F, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ field_0x608 = dComIfGp_particle_set(field_0x608, 0x731, &current.pos, &tevStr, &shape_angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
+ }
+
+ field_0x5f8 = sp38;
}
-/* ############################################################################################## */
-/* 804D170C-804D1710 00011C 0004+00 0/1 0/0 0/0 .rodata @4419 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4419 = -200.0f;
-COMPILER_STRIP_GATE(0x804D170C, &lit_4419);
-#pragma pop
-
/* 804D057C-804D065C 001EBC 00E0+00 1/1 0/0 0/0 .text LinkSearch__13daObjYOUSEI_cFv */
-void daObjYOUSEI_c::LinkSearch() {
- // NONMATCHING
+bool daObjYOUSEI_c::LinkSearch() {
+ if (mDistToPlayer < 200.0f) {
+ f32 var_f31;
+ if (WayBgCheck(200.0f, 100.0f, mAngleToPlayer + 0x8000)) {
+ var_f31 = -200.0f;
+ } else {
+ var_f31 = 100.0f;
+ }
+
+ cXyz sp14(0.0f, 0.0f, var_f31);
+ mDoMtx_stack_c::YrotS(mAngleToPlayer + 0x8000);
+ cXyz sp8;
+ mDoMtx_stack_c::multVec(&sp14, &sp8);
+ home.pos.set(current.pos.x + sp8.x, home.pos.y, current.pos.z + sp8.z);
+ return true;
+ }
+
+ return false;
}
/* 804D065C-804D0780 001F9C 0124+00 1/1 0/0 0/0 .text WayBgCheck__13daObjYOUSEI_cFffs */
-void daObjYOUSEI_c::WayBgCheck(f32 param_0, f32 param_1, s16 param_2) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 804D1710-804D1714 000120 0004+00 1/1 0/0 0/0 .rodata @4462 */
-SECTION_RODATA static f32 const lit_4462 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x804D1710, &lit_4462);
-
-/* 804D0780-804D080C 0020C0 008C+00 4/4 0/0 0/0 .text CareAction__13daObjYOUSEI_cFv */
-void daObjYOUSEI_c::CareAction() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 804D1714-804D1718 000124 0004+00 1/2 0/0 0/0 .rodata @4482 */
-SECTION_RODATA static f32 const lit_4482 = -1000000000.0f;
-COMPILER_STRIP_GATE(0x804D1714, &lit_4482);
-
-/* 804D1728-804D1748 -00001 0020+00 1/0 0/0 0/0 .data l_daObjYOUSEI_Method */
-static actor_method_class l_daObjYOUSEI_Method = {
- (process_method_func)daObjYOUSEI_Create__FP10fopAc_ac_c,
- (process_method_func)daObjYOUSEI_Delete__FP13daObjYOUSEI_c,
- (process_method_func)daObjYOUSEI_Execute__FP13daObjYOUSEI_c,
- (process_method_func)daObjYOUSEI_IsDelete__FP13daObjYOUSEI_c,
- (process_method_func)daObjYOUSEI_Draw__FP13daObjYOUSEI_c,
-};
+bool daObjYOUSEI_c::WayBgCheck(f32 param_0, f32 param_1, s16 param_2) {
+ dBgS_LinChk line_chk;
+ cXyz sp2C;
+ cXyz sp20;
+ cXyz sp14;
-/* 804D1748-804D1778 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Yousei */
-extern actor_process_profile_definition g_profile_Obj_Yousei = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_Yousei, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjYOUSEI_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 475, // mPriority
- &l_daObjYOUSEI_Method, // sub_method
- 0x000C0100, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
+ sp20 = current.pos;
+ sp20.y += param_1;
+ cMtx_YrotS(*calc_mtx, param_2);
+ sp2C.x = 0.0f;
+ sp2C.y = 50.0f;
+ sp2C.z = param_0;
+ MtxPosition(&sp2C, &sp14);
+ sp14 += current.pos;
+ line_chk.Set(&sp20, &sp14, NULL);
-/* 804D1778-804D1784 000050 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
+ if (dComIfG_Bgsp().LineCross(&line_chk)) {
+ return true;
+ }
-/* 804D1784-804D1790 00005C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
+ return false;
+}
-/* 804D1790-804D17B4 000068 0024+00 2/2 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_804D15C4,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804D15BC,
-};
+/* 804D0780-804D080C 0020C0 008C+00 4/4 0/0 0/0 .text CareAction__13daObjYOUSEI_cFv */
+void daObjYOUSEI_c::CareAction() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ if (player->checkNowWolf()) {
+ field_0x5e8 = 0.7f + yREG_F(18);
+ } else {
+ field_0x5e8 = 1.0f;
+ }
-/* 804D17B4-804D17E4 00008C 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_804D15A4,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804D15B4,
- (void*)NULL,
- (void*)NULL,
- (void*)func_804D15AC,
-};
+ mAction = 1;
+ mMode = 0;
+ field_0x5ae = 1;
+ mSound.startCreatureSound(Z2SE_FAIRY_S_FLY_RTT, 0, -1);
+}
/* 804D080C-804D0910 00214C 0104+00 2/2 0/0 0/0 .text CheckGround__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::CheckGround() {
- // NONMATCHING
-}
+ dBgS_ObjGndChk_All gnd_chk;
+ cXyz pos(current.pos.x, 100.0f + current.pos.y, current.pos.z);
+ gnd_chk.SetPos(&pos);
-/* 804D0910-804D0988 002250 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */
-// dBgS_ObjGndChk::~dBgS_ObjGndChk() {
-extern "C" void __dt__14dBgS_ObjGndChkFv() {
- // NONMATCHING
+ pos.y = dComIfG_Bgsp().GroundCross(&gnd_chk);
+ if (pos.y != -1000000000.0f) {
+ home.pos.y = pos.y;
+ }
}
/* 804D0988-804D0AD0 0022C8 0148+00 1/1 0/0 0/0 .text CheckWater__13daObjYOUSEI_cFv */
-void daObjYOUSEI_c::CheckWater() {
- // NONMATCHING
+bool daObjYOUSEI_c::CheckWater() {
+ dBgS_ObjGndChk_All gnd_chk;
+ cXyz pos(current.pos.x, 100.0f + current.pos.y, current.pos.z);
+ gnd_chk.SetPos(&pos);
+ pos.y = dComIfG_Bgsp().GroundCross(&gnd_chk);
+
+ if (-1000000000.0f != pos.y && dComIfG_Bgsp().GetPolyAtt0(gnd_chk) == 7 && current.pos.y - pos.y < 50.0f+ yREG_F(0)) {
+ return true;
+ }
+
+ return false;
}
/* 804D0AD0-804D0CCC 002410 01FC+00 1/1 0/0 0/0 .text Action__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::Action() {
- // NONMATCHING
+ switch (mAction) {
+ case 0:
+ field_0x61a = 0;
+ WaitAction();
+ SpeedSet();
+ SetCcSph();
+ ObjHit();
+
+ if (field_0x5af != 0) {
+ if (mBoomerangMove.posMove(&current.pos, &shape_angle.y, NULL, 0x1C00)) {
+ mBoomerangMove.bgCheckAfterOffset(&current.pos);
+ } else {
+ field_0x5af = 0;
+ if (dComIfGs_getLife() != dComIfGs_getMaxLifeGauge()) {
+ CareAction();
+ }
+ home.pos = current.pos;
+ CheckGround();
+ }
+ }
+
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ if (mDistToPlayer < 50.0f && current.pos.y - sLink_Pos->y < 200.0f) {
+ if (dComIfGs_getLife() != dComIfGs_getMaxLifeGauge()) {
+ CareAction();
+ field_0x5af = 0;
+ }
+ }
+
+ if (fopAcM_checkHookCarryNow(this)) {
+ if (CheckWater()) {
+ fopAcM_cancelHookCarryNow(this);
+ }
+ home.pos = current.pos;
+ CheckGround();
+ }
+ break;
+ case 1:
+ MoveAction();
+ break;
+ case 2:
+ BinAction();
+ SpeedSet();
+ break;
+ case 3:
+ LinkAction();
+ break;
+ }
+
+ shape_angle.y = current.angle.y;
}
/* 804D0CCC-804D0DF0 00260C 0124+00 1/1 0/0 0/0 .text ObjHit__13daObjYOUSEI_cFv */
void daObjYOUSEI_c::ObjHit() {
- // NONMATCHING
+ if (mCcSph.ChkTgHit()) {
+ cCcD_Obj* hit_obj = mCcSph.GetTgHitObj();
+ if (hit_obj->ChkAtType(AT_TYPE_BOOMERANG)) {
+ if (field_0x5af == 0) {
+ field_0x5af = 1;
+ mAcch.ClrMoveBGOnly();
+ mAcch.ClrGrndNone();
+ mCcSph.GetTgHitGObj();
+ mBoomerangMove.initOffset(&current.pos);
+ }
+ } else if (hit_obj->ChkAtType(AT_TYPE_NORMAL_SWORD)) {
+ if (mDistToPlayer < 130.0f + TREG_F(5) && dComIfGs_getLife() != dComIfGs_getMaxLifeGauge()) {
+ CareAction();
+ } else {
+ mTimers[2] = 80.0f + TREG_F(3);
+ }
+ } else {
+ if (dComIfGs_getLife() != dComIfGs_getMaxLifeGauge()) {
+ CareAction();
+ }
+ }
+
+ mCcSph.ClrTgHit();
+ }
}
/* 804D0DF0-804D0F98 002730 01A8+00 1/1 0/0 0/0 .text Execute__13daObjYOUSEI_cFv */
-void daObjYOUSEI_c::Execute() {
- // NONMATCHING
-}
+int daObjYOUSEI_c::Execute() {
+ sLink_Pos = &fopAcM_GetPosition(daPy_getPlayerActorClass());
+ mDistToPlayer = fopAcM_searchPlayerDistanceXZ(this);
+ mAngleToPlayer = fopAcM_searchPlayerAngleY(this);
+ attention_info.position = current.pos;
+ eyePos = current.pos;
+ eyePos.y += 10.0f;
-/* 804D0F98-804D0FCC 0028D8 0034+00 1/1 0/0 0/0 .text Delete__13daObjYOUSEI_cFv */
-void daObjYOUSEI_c::Delete() {
- // NONMATCHING
-}
+ mSound.startCreatureSoundLevel(Z2SE_FAIRY_S_LV, 0, -1);
-/* 804D0FCC-804D1040 00290C 0074+00 1/1 0/0 0/0 .text setBaseMtx__13daObjYOUSEI_cFv */
-void daObjYOUSEI_c::setBaseMtx() {
- // NONMATCHING
-}
+ if (mpModelMorf->checkFrame(1.0f) && mAnmSpeed > 0.0f) {
+ mSound.startCreatureSound(Z2SE_FAIRY_S_FLY, 100.0f * mAnmSpeed, -1);
+ }
-/* ############################################################################################## */
-/* 804D1718-804D171C 000128 0004+00 0/1 0/0 0/0 .rodata @4682 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4682 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x804D1718, &lit_4682);
-#pragma pop
+ for (int i = 0; i < 4; i++) {
+ if (mTimers[i] != 0) {
+ mTimers[i]--;
+ }
+ }
-/* 804D1040-804D10FC 002980 00BC+00 1/0 0/0 0/0 .text daObjYOUSEI_Draw__FP13daObjYOUSEI_c
- */
-static void daObjYOUSEI_Draw(daObjYOUSEI_c* param_0) {
- // NONMATCHING
-}
-
-/* 804D10FC-804D111C 002A3C 0020+00 2/1 0/0 0/0 .text daObjYOUSEI_Execute__FP13daObjYOUSEI_c */
-static void daObjYOUSEI_Execute(daObjYOUSEI_c* param_0) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 804D171C-804D1720 00012C 0004+00 0/1 0/0 0/0 .rodata @4796 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4796 = -50.0f;
-COMPILER_STRIP_GATE(0x804D171C, &lit_4796);
-#pragma pop
-
-/* 804D111C-804D149C 002A5C 0380+00 1/1 0/0 0/0 .text create__13daObjYOUSEI_cFv */
-void daObjYOUSEI_c::create() {
- // NONMATCHING
-}
+ if (field_0x5d6 != 0) {
+ field_0x5d6--;
+ }
-/* 804D149C-804D14E4 002DDC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
+ Action();
+ mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ setBaseMtx();
+ return 1;
}
-/* 804D14E4-804D152C 002E24 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+/* 804D0F98-804D0FCC 0028D8 0034+00 1/1 0/0 0/0 .text Delete__13daObjYOUSEI_cFv */
+int daObjYOUSEI_c::Delete() {
+ if (heap != NULL) {
+ mpModelMorf->stopZelAnime();
+ }
-/* 804D152C-804D159C 002E6C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
+ return 1;
}
-/* 804D159C-804D15A4 002EDC 0008+00 1/0 0/0 0/0 .text daObjYOUSEI_IsDelete__FP13daObjYOUSEI_c */
-static bool daObjYOUSEI_IsDelete(daObjYOUSEI_c* param_0) {
- return true;
+/* 804D0FCC-804D1040 00290C 0074+00 1/1 0/0 0/0 .text setBaseMtx__13daObjYOUSEI_cFv */
+void daObjYOUSEI_c::setBaseMtx() {
+ cXyz sp8(0.2f, 0.2f, 0.2f);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::scaleM(scale);
+ mpModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ mpModelMorf->modelCalc();
}
-/* 804D15A4-804D15AC 002EE4 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */
-static void func_804D15A4() {
- // NONMATCHING
-}
+int daObjYOUSEI_c::Draw() {
+ J3DModel* model = mpModelMorf->getModel();
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(model, &tevStr);
+ mpModelMorf->entryDL();
-/* 804D15AC-804D15B4 002EEC 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */
-static void func_804D15AC() {
- // NONMATCHING
+ cXyz sp8;
+ sp8.set(current.pos.x, 100.0f + current.pos.y, current.pos.z);
+ dComIfGd_setSimpleShadow(&current.pos, mAcch.GetGroundH(), 25.0f, mAcch.m_gnd, 0, 0.8f, dDlst_shadowControl_c::getSimpleTex());
+ return 1;
}
-/* 804D15B4-804D15BC 002EF4 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */
-static void func_804D15B4() {
- // NONMATCHING
+/* 804D1040-804D10FC 002980 00BC+00 1/0 0/0 0/0 .text daObjYOUSEI_Draw__FP13daObjYOUSEI_c
+ */
+static int daObjYOUSEI_Draw(daObjYOUSEI_c* i_this) {
+ return i_this->Draw();
}
-/* 804D15BC-804D15C4 002EFC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_804D15BC() {
- // NONMATCHING
+/* 804D10FC-804D111C 002A3C 0020+00 2/1 0/0 0/0 .text daObjYOUSEI_Execute__FP13daObjYOUSEI_c */
+static int daObjYOUSEI_Execute(daObjYOUSEI_c* i_this) {
+ return i_this->Execute();
}
-/* 804D15C4-804D15CC 002F04 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_804D15C4() {
- // NONMATCHING
+/* 804D111C-804D149C 002A5C 0380+00 1/1 0/0 0/0 .text create__13daObjYOUSEI_cFv */
+int daObjYOUSEI_c::create() {
+ fopAcM_SetupActor(this, daObjYOUSEI_c);
+
+ OS_REPORT("YOUSEI PARAM %x\n", fopAcM_GetParam());
+ if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x1100)) {
+ return cPhs_ERROR_e;
+ }
+
+ mPrm = fopAcM_GetParam(this);
+ switch (mPrm) {
+ case 0:
+ mPrm = 0;
+ break;
+ case 1:
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[501])) {
+ return cPhs_ERROR_e;
+ }
+ mPrm = 1;
+ break;
+ case 2:
+ mPrm = 2;
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[502])) {
+ return cPhs_ERROR_e;
+ }
+ break;
+ case 3:
+ mPrm = 3;
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[503])) {
+ return cPhs_ERROR_e;
+ }
+ break;
+ case 4:
+ mPrm = 4;
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[504])) {
+ return cPhs_ERROR_e;
+ }
+ break;
+ default:
+ mPrm = 5;
+ break;
+ }
+
+ gravity = nREG_F(0);
+ mAction = 0;
+ mMode = 0;
+
+ mTimers[2] = 80.0f + TREG_F(3);
+ mAcchCir.SetWall(100.0f, 30.0f);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
+
+ fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx());
+ fopAcM_SetMin(this, -50.0f, -50.0f, -50.0f);
+ fopAcM_SetMax(this, 50.0f, 50.0f, 50.0f);
+
+ InitCcSph();
+ mSound.init(&current.pos, &eyePos, 3, 1);
+
+ if (mPrm == 0) {
+ execItemGet(fpcNm_ITEM_RECOVERY_FAILY);
+ CareAction();
+ scale.set(0.2f, 0.2f, 0.2f);
+ } else {
+ current.pos.y += 50.0f;
+ field_0x5d6 = 1500;
+ }
+
+ CheckGround();
+ field_0x61a = 0;
+ daObjYOUSEI_Execute(this);
+ return cPhs_COMPLEATE_e;
}
-/* 804D15CC-804D15E8 002F0C 001C+00 2/2 0/0 0/0 .text getHeadTopPos__9daPy_py_cCFv */
-// void daPy_py_c::getHeadTopPos() const {
-extern "C" void getHeadTopPos__9daPy_py_cCFv() {
- // NONMATCHING
+/* 804D159C-804D15A4 002EDC 0008+00 1/0 0/0 0/0 .text daObjYOUSEI_IsDelete__FP13daObjYOUSEI_c */
+static int daObjYOUSEI_IsDelete(daObjYOUSEI_c* i_this) {
+ return 1;
}
-/* ############################################################################################## */
-/* 804D1834-804D1838 00004C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1834[4];
-#pragma pop
-
-/* 804D1838-804D183C 000050 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1838[4];
-#pragma pop
-
-/* 804D183C-804D1840 000054 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D183C[4];
-#pragma pop
-
-/* 804D1840-804D1844 000058 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1840[4];
-#pragma pop
-
-/* 804D1844-804D1848 00005C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D1844[4];
-#pragma pop
-
-/* 804D1848-804D184C 000060 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D1848[4];
-#pragma pop
-
-/* 804D184C-804D1850 000064 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D184C[4];
-#pragma pop
-
-/* 804D1850-804D1854 000068 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1850[4];
-#pragma pop
-
-/* 804D1854-804D1858 00006C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1854[4];
-#pragma pop
-
-/* 804D1858-804D185C 000070 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1858[4];
-#pragma pop
-
-/* 804D185C-804D1860 000074 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D185C[4];
-#pragma pop
-
-/* 804D1860-804D1864 000078 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1860[4];
-#pragma pop
-
-/* 804D1864-804D1868 00007C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1864[4];
-#pragma pop
-
-/* 804D1868-804D186C 000080 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D1868[4];
-#pragma pop
-
-/* 804D186C-804D1870 000084 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_804D186C[4];
-#pragma pop
-
-/* 804D1870-804D1874 000088 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1870[4];
-#pragma pop
-
-/* 804D1874-804D1878 00008C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1874[4];
-#pragma pop
-
-/* 804D1878-804D187C 000090 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1878[4];
-#pragma pop
-
-/* 804D187C-804D1880 000094 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D187C[4];
-#pragma pop
-
-/* 804D1880-804D1884 000098 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1880[4];
-#pragma pop
-
-/* 804D1884-804D1888 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D1884[4];
-#pragma pop
-
-/* 804D1888-804D188C 0000A0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D1888[4];
-#pragma pop
+/* 804D1728-804D1748 -00001 0020+00 1/0 0/0 0/0 .data l_daObjYOUSEI_Method */
+static actor_method_class l_daObjYOUSEI_Method = {
+ (process_method_func)daObjYOUSEI_Create,
+ (process_method_func)daObjYOUSEI_Delete,
+ (process_method_func)daObjYOUSEI_Execute,
+ (process_method_func)daObjYOUSEI_IsDelete,
+ (process_method_func)daObjYOUSEI_Draw,
+};
-/* 804D188C-804D1890 0000A4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D188C[4];
-#pragma pop
+/* 804D1748-804D1778 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Yousei */
+extern actor_process_profile_definition g_profile_Obj_Yousei = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_Yousei, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjYOUSEI_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 475, // mPriority
+ &l_daObjYOUSEI_Method, // sub_method
+ 0x000C0100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
-/* 804D1890-804D1894 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_804D1890[4];
-#pragma pop
-
-/* 804D1894-804D1898 0000AC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_804D1894[4];
-#pragma pop
-
-/* 804D1720-804D1720 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+AUDIO_INSTANCES