summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-11-09 01:20:51 -0800
committerGitHub <noreply@github.com>2025-11-09 11:20:51 +0200
commit4b5277295ed47d4c83105d06af6df49cfcfafd56 (patch)
tree14c243e4df362ddf63f86a62bf9dc18ce1ade4bb
parente49519229cd6b3974739f6e789f3bccb7ef302a3 (diff)
npcinko / myna2 done (#2780)
* npcinko done * myna2 done * Use sound enum * Use FALSE instead of false when returning BOOL * Use look mode enum * TRUE instead of true when returning bool --------- Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
-rwxr-xr-xconfigure.py4
-rw-r--r--include/d/actor/d_a_npc_inko.h41
-rw-r--r--include/d/actor/d_a_npc_myna2.h110
-rw-r--r--include/d/d_com_inf_game.h4
-rw-r--r--include/d/d_save.h5
-rw-r--r--src/d/actor/d_a_npc_inko.cpp866
-rw-r--r--src/d/actor/d_a_npc_myna2.cpp2748
7 files changed, 1749 insertions, 2029 deletions
diff --git a/configure.py b/configure.py
index 1b390be3cd..78cdb7cb49 100755
--- a/configure.py
+++ b/configure.py
@@ -1876,7 +1876,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_henna0"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_hoz"),
ActorRel(NonMatching, "d_a_npc_impal", extra_cflags=[DANPCF_C_HACK]),
- ActorRel(NonMatching, "d_a_npc_inko"),
+ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_inko"),
ActorRel(Equivalent, "d_a_npc_ins", extra_cflags=[DANPCF_C_HACK]), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_jagar"),
ActorRel(NonMatching, "d_a_npc_kasi_hana", extra_cflags=[DANPCF_C_HACK]),
@@ -1895,7 +1895,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_mk"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_moi"),
ActorRel(NonMatching, "d_a_npc_moir", extra_cflags=[DANPCF_C_HACK]),
- ActorRel(NonMatching, "d_a_npc_myna2"),
+ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_myna2", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_ne"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_p2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_pachi_besu"),
diff --git a/include/d/actor/d_a_npc_inko.h b/include/d/actor/d_a_npc_inko.h
index ae0991908c..3b5358f1f2 100644
--- a/include/d/actor/d_a_npc_inko.h
+++ b/include/d/actor/d_a_npc_inko.h
@@ -1,7 +1,8 @@
#ifndef D_A_NPC_INKO_H
#define D_A_NPC_INKO_H
-#include "d/actor/d_a_npc.h"
+#include "f_op/f_op_actor_mng.h"
+#include "d/d_msg_flow.h"
/**
* @ingroup actors-npcs
@@ -11,9 +12,41 @@
* @details
*
*/
-class npc_inko_class : public fopAc_ac_c {
-private:
- /* 0x568 */ u8 field_0x568[0x648 - 0x568];
+class npc_inko_class {
+public:
+ /* 0x000 */ fopAc_ac_c actor;
+ /* 0x568 */ request_of_phase_process_class phase;
+ /* 0x570 */ u8 field_0x570;
+ /* 0x574 */ Z2SoundObjSimple sound;
+ /* 0x594 */ u8 field_0x594[0x596 - 0x594];
+ /* 0x596 */ s16 field_0x596;
+ /* 0x598 */ s8 field_0x598;
+ /* 0x59A */ s16 field_0x59a;
+ /* 0x59C */ s16 field_0x59c[4];
+ /* 0x5A4 */ int anmId;
+ /* 0x5A8 */ f32 field_0x5a8;
+ /* 0x5AC */ f32 field_0x5ac;
+ /* 0x5B0 */ f32 field_0x5b0;
+ /* 0x5B4 */ cXyz field_0x5b4;
+ /* 0x5C0 */ csXyz field_0x5c0;
+ /* 0x5C6 */ s8 field_0x5c6;
+ /* 0x5C8 */ csXyz field_0x5c8;
+ /* 0x5CE */ csXyz field_0x5ce;
+ /* 0x5D4 */ s16 field_0x5d4[2];
+ /* 0x5D8 */ s16 field_0x5d8[2];
+ /* 0x5DC */ s8 field_0x5dc[2];
+ /* 0x5DE */ u8 field_0x5DE[0x5E0 - 0x5DE];
+ /* 0x5E0 */ s16 field_0x5e0;
+ /* 0x5E2 */ s16 field_0x5e2;
+ /* 0x5E4 */ s8 field_0x5e4;
+ /* 0x5E6 */ s16 field_0x5e6;
+ /* 0x5E8 */ f32 field_0x5e8;
+ /* 0x5EC */ s16 field_0x5ec;
+ /* 0x5F0 */ mDoExt_McaMorf* anm_p;
+ /* 0x5F4 */ u8 field_0x5f4;
+ /* 0x5F5 */ u8 field_0x5f5;
+ /* 0x5F8 */ dMsgFlow_c msgflow;
+ /* 0x644 */ u8 field_0x644[0x648 - 0x644];
};
STATIC_ASSERT(sizeof(npc_inko_class) == 0x648);
diff --git a/include/d/actor/d_a_npc_myna2.h b/include/d/actor/d_a_npc_myna2.h
index 01dc6db10f..2c47c65aa6 100644
--- a/include/d/actor/d_a_npc_myna2.h
+++ b/include/d/actor/d_a_npc_myna2.h
@@ -6,65 +6,99 @@
/**
* @ingroup actors-npcs
* @class daNpc_myna2_c
- * @brief PLumm
+ * @brief Plumm
*
* @details
*
*/
-class daNpc_myna2_c : public fopAc_ac_c {
+class daNpc_myna2_c : public daNpcF_c {
public:
+ typedef BOOL (daNpc_myna2_c::*ActionFn)(void*);
+ typedef BOOL (daNpc_myna2_c::*EventFn)(int);
+
/* 80A83E8C */ daNpc_myna2_c();
- /* 80A840A0 */ ~daNpc_myna2_c();
- /* 80A842C8 */ void create();
- /* 80A845AC */ void CreateHeap();
- /* 80A846E0 */ void Delete();
- /* 80A84714 */ void Execute();
- /* 80A84734 */ void Draw();
- /* 80A847A8 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80A847C8 */ void setParam();
- /* 80A848B4 */ void main();
- /* 80A84B64 */ void setAttnPos();
- /* 80A84DAC */ void setExpressionBtp(int);
- /* 80A84EAC */ bool setMotionAnm(int, f32);
- /* 80A84FEC */ void setMotion(int, f32, int);
- /* 80A85030 */ bool drawDbgInfo();
- /* 80A85038 */ void drawOtherMdls();
- /* 80A8503C */ void getTypeFromParam();
- /* 80A85094 */ void isDelete();
+ /* 80A840A0 */ virtual ~daNpc_myna2_c();
+ /* 80A842C8 */ int create();
+ /* 80A845AC */ int CreateHeap();
+ /* 80A846E0 */ int Delete();
+ /* 80A84714 */ int Execute();
+ /* 80A84734 */ int Draw();
+ /* 80A847A8 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80A8503C */ u8 getTypeFromParam();
+ /* 80A85094 */ int isDelete();
/* 80A85160 */ void reset();
/* 80A85358 */ void playMotion();
- /* 80A855E8 */ void chkAction(int (daNpc_myna2_c::*)(void*));
- /* 80A85614 */ void setAction(int (daNpc_myna2_c::*)(void*));
- /* 80A856BC */ void selectAction();
+ /* 80A855E8 */ int chkAction(int (daNpc_myna2_c::*)(void*));
+ /* 80A85614 */ int setAction(int (daNpc_myna2_c::*)(void*));
+ /* 80A856BC */ int selectAction();
/* 80A857B0 */ void doNormalAction(int);
- /* 80A85894 */ void doEvent();
+ /* 80A85894 */ BOOL doEvent();
/* 80A85BA4 */ void setLookMode(int);
- /* 80A85BC8 */ void wait(void*);
- /* 80A85C60 */ void waitHovering(void*);
- /* 80A86194 */ void waitFailure(void*);
- /* 80A862BC */ void waitGoal(void*);
- /* 80A86400 */ void talk(void*);
- /* 80A865FC */ void test(void*);
- /* 80A866B0 */ void ECut_firstTalk(int);
- /* 80A8684C */ void ECut_gameFailure(int);
- /* 80A86A0C */ void ECut_gameGoal(int);
- /* 80A86BEC */ void ECut_gameGoalSuccess(int);
+ /* 80A85BC8 */ int wait(void*);
+ /* 80A85C60 */ int waitHovering(void*);
+ /* 80A86194 */ int waitFailure(void*);
+ /* 80A862BC */ int waitGoal(void*);
+ /* 80A86400 */ int talk(void*);
+ /* 80A865FC */ int test(void*);
+ /* 80A866B0 */ int ECut_firstTalk(int);
+ /* 80A8684C */ int ECut_gameFailure(int);
+ /* 80A86A0C */ int ECut_gameGoal(int);
+ /* 80A86BEC */ int ECut_gameGoalSuccess(int);
/* 80A86E8C */ void calcHovering(int, int);
+ /* 80A847C8 */ virtual void setParam();
+ /* 80A848B4 */ virtual BOOL main();
+ /* 80A84B64 */ virtual void setAttnPos();
+ /* 80A84DAC */ virtual bool setExpressionBtp(int);
+ /* 80A84EAC */ virtual void setMotionAnm(int, f32);
+ /* 80A84FEC */ virtual void setMotion(int, f32, int);
+ /* 80A85030 */ virtual BOOL drawDbgInfo();
+ /* 80A85038 */ virtual void drawOtherMdls();
+
+ int getType() { return mType; }
+
static char* mEvtCutNameList[5];
- static u8 mEvtCutList[60];
+ static EventFn mEvtCutList[];
-private:
- /* 0x568 */ u8 field_0x568[0xe34 - 0x568];
+ /* 0xB48 */ u8 field_0xB48[0xB4C - 0xB48];
+ /* 0xB4C */ daNpcF_Lookat_c mLookat;
+ /* 0xBE8 */ Z2CreatureSumomo mSound;
+ /* 0xC78 */ daNpcF_ActorMngr_c mActorMgrs[1];
+ /* 0xC80 */ u8 field_0xC80[0xC84 - 0xC80];
+ /* 0xC84 */ dCcD_Cyl mCyl;
+ /* 0xDC0 */ ActionFn mNextAction;
+ /* 0xDCC */ ActionFn mAction;
+ /* 0xDD8 */ request_of_phase_process_class mPhase[3];
+ /* 0xDF0 */ fpc_ProcID mItemPid;
+ /* 0xDF4 */ int field_0xdf4;
+ /* 0xDF8 */ int field_0xdf8;
+ /* 0xDFC */ int field_0xdfc;
+ /* 0xE00 */ int field_0xe00;
+ /* 0xE04 */ int field_0xe04;
+ /* 0xE08 */ s16 mLookMode;
+ /* 0xE0A */ u16 mMode;
+ /* 0xE0C */ u8 mType;
+ /* 0xE0D */ u8 field_0xe0d;
+ /* 0xE10 */ cXyz field_0xe10;
+ /* 0xE1C */ cXyz field_0xe1c;
+ /* 0xE28 */ int field_0xe28;
+ /* 0xE2C */ int field_0xe2c;
+ /* 0xE30 */ f32 field_0xe30;
};
STATIC_ASSERT(sizeof(daNpc_myna2_c) == 0xe34);
+struct daNpc_myna2_HIOParam {
+ /* 0x00 */ daNpcF_HIOParam common;
+ /* 0x6C */ f32 field_0x6c;
+ /* 0x70 */ f32 field_0x70;
+};
+
class daNpc_myna2_Param_c {
public:
- /* 80A883C8 */ ~daNpc_myna2_Param_c();
+ /* 80A883C8 */ virtual ~daNpc_myna2_Param_c() {}
- static u8 const m[116];
+ static const daNpc_myna2_HIOParam m;
};
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index 5401dfdb45..448495a1d8 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -1784,6 +1784,10 @@ inline u32 dComIfGs_getBalloonScore() {
return g_dComIfG_gameInfo.info.getMiniGame().getBalloonScore();
}
+inline void dComIfGs_setBalloonScore(u32 i_score) {
+ g_dComIfG_gameInfo.info.getMiniGame().setBalloonScore(i_score);
+}
+
inline u8 dComIfGs_getTransformStatus() {
return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getTransformStatus();
}
diff --git a/include/d/d_save.h b/include/d/d_save.h
index d83a7e35d9..bd1b360abb 100644
--- a/include/d/d_save.h
+++ b/include/d/d_save.h
@@ -674,11 +674,12 @@ class dSv_MiniGame_c {
public:
void init();
+ void setBalloonScore(u32 i_score) { mBalloonScore = i_score; }
+ void setRaceGameTime(u32 i_time) { mRaceGameTime = i_time; }
+
u32 getRaceGameTime() const { return mRaceGameTime; }
u32 getBalloonScore() const { return mBalloonScore; }
- void setRaceGameTime(u32 i_time) { mRaceGameTime = i_time; }
-
private:
/* 0x00 */ u8 unk0[1][4];
/* 0x04 */ u32 mStarTime;
diff --git a/src/d/actor/d_a_npc_inko.cpp b/src/d/actor/d_a_npc_inko.cpp
index b9079b61df..73e098e4bf 100644
--- a/src/d/actor/d_a_npc_inko.cpp
+++ b/src/d/actor/d_a_npc_inko.cpp
@@ -6,455 +6,481 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_inko.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void nodeCallBack__FP8J3DJointi();
-extern "C" static void daNpc_Inko_Draw__FP14npc_inko_class();
-extern "C" static void anm_init__FP14npc_inko_classifUcf();
-extern "C" static void daNpc_Inko_Execute__FP14npc_inko_class();
-extern "C" static bool daNpc_Inko_IsDelete__FP14npc_inko_class();
-extern "C" static void daNpc_Inko_Delete__FP14npc_inko_class();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" static void daNpc_Inko_Create__FP10fopAc_ac_c();
-extern "C" extern char const* const d_a_npc_inko__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void
-__ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl();
-extern "C" void setAnm__14mDoExt_McaMorfFP15J3DAnmTransformiffffPv();
-extern "C" void play__14mDoExt_McaMorfFP3VecUlSc();
-extern "C" void entryDL__14mDoExt_McaMorfFv();
-extern "C" void modelCalc__14mDoExt_McaMorfFv();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
-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 fpcSch_JudgeForPName__FPvPv();
-extern "C" void fpcSch_JudgeByID__FPvPv();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void reset__14dEvt_control_cFv();
-extern "C" void setLookPos__9daPy_py_cFP4cXyz();
-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__10dMsgFlow_cFv();
-extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c();
-extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void deleteObject__14Z2SoundObjBaseFv();
-extern "C" void __ct__16Z2SoundObjSimpleFv();
-extern "C" void* __nw__FUl();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" extern u8 cDmr_SkipInfo[4];
-
-//
-// Declarations:
-//
+#include "d/actor/d_a_obj_kage.h"
+#include "d/actor/d_a_npc_henna.h"
+#include "d/actor/d_a_player.h"
+#include "d/d_s_play.h"
+#include "c/c_damagereaction.h"
/* 80A0C998-80A0CBB0 000078 0218+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */
-static void nodeCallBack(J3DJoint* param_0, int param_1) {
- // NONMATCHING
+static int nodeCallBack(J3DJoint* i_joint, int param_1) {
+ if (param_1 == 0) {
+ int jnt_no = i_joint->getJntNo();
+ J3DModel* model = j3dSys.getModel();
+ npc_inko_class* i_this = (npc_inko_class*)model->getUserArea();
+
+ if (i_this != NULL) {
+ MTXCopy(model->getAnmMtx(jnt_no), *calc_mtx);
+ if (jnt_no == 1) {
+ cMtx_YrotM(*calc_mtx, i_this->field_0x5c8.y);
+ cMtx_XrotM(*calc_mtx, i_this->field_0x5c8.x);
+ cMtx_ZrotM(*calc_mtx, i_this->field_0x5c8.z);
+ } else if (jnt_no == 2) {
+ cMtx_ZrotM(*calc_mtx, i_this->field_0x5e6);
+ } else if (jnt_no == 3) {
+ cMtx_ZrotM(*calc_mtx, i_this->field_0x5e0);
+ } else if (jnt_no == 4) {
+ cMtx_ZrotM(*calc_mtx, -i_this->field_0x5e0);
+ } else if (jnt_no == 5 || jnt_no == 6) {
+ cMtx_XrotM(*calc_mtx, i_this->field_0x5d4[jnt_no - 5]);
+ }
+
+ model->setAnmMtx(jnt_no, *calc_mtx);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
+
+ if (jnt_no == TREG_S(0)) {
+ MTXCopy(model->getAnmMtx(jnt_no), *calc_mtx);
+ cMtx_YrotM(*calc_mtx, TREG_S(1));
+ cMtx_XrotM(*calc_mtx, TREG_S(2));
+ cMtx_ZrotM(*calc_mtx, TREG_S(3));
+ model->setAnmMtx(jnt_no, *calc_mtx);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
+ }
+ }
+ }
+
+ return 1;
}
/* 80A0CBB0-80A0CC18 000290 0068+00 1/0 0/0 0/0 .text daNpc_Inko_Draw__FP14npc_inko_class
*/
-static void daNpc_Inko_Draw(npc_inko_class* param_0) {
- // NONMATCHING
+static int daNpc_Inko_Draw(npc_inko_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+ g_env_light.settingTevStruct(0, &actor->current.pos, &actor->tevStr);
+ g_env_light.setLightTevColorType_MAJI(i_this->anm_p->getModel(), &actor->tevStr);
+ i_this->anm_p->entryDL();
+ return 1;
}
-/* ############################################################################################## */
-/* 80A0E014-80A0E018 000000 0004+00 3/3 0/0 0/0 .rodata @3849 */
-SECTION_RODATA static u8 const lit_3849[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80A0E014, &lit_3849);
-
-/* 80A0E018-80A0E01C 000004 0004+00 1/2 0/0 0/0 .rodata @3850 */
-SECTION_RODATA static f32 const lit_3850 = -1.0f;
-COMPILER_STRIP_GATE(0x80A0E018, &lit_3850);
-
-/* 80A0E0CC-80A0E0CC 0000B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80A0E0CC = "Npc_inko";
-#pragma pop
-
/* 80A0CC18-80A0CCC8 0002F8 00B0+00 1/1 0/0 0/0 .text anm_init__FP14npc_inko_classifUcf
*/
-static void anm_init(npc_inko_class* param_0, int param_1, f32 param_2, u8 param_3,
- f32 param_4) {
- // NONMATCHING
+static void anm_init(npc_inko_class* i_this, int i_anmId, f32 i_morf, u8 i_mode, f32 i_speed) {
+ i_this->anm_p->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("Npc_inko", i_anmId), i_mode, i_morf, i_speed, 0.0f, -1.0f, NULL);
+ i_this->anmId = i_anmId;
}
-/* ############################################################################################## */
-/* 80A0E01C-80A0E020 000008 0004+00 0/1 0/0 0/0 .rodata @4329 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4329 = -78.0f;
-COMPILER_STRIP_GATE(0x80A0E01C, &lit_4329);
-#pragma pop
-
-/* 80A0E020-80A0E024 00000C 0004+00 0/1 0/0 0/0 .rodata @4330 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4330 = -5.0f;
-COMPILER_STRIP_GATE(0x80A0E020, &lit_4330);
-#pragma pop
-
-/* 80A0E024-80A0E028 000010 0004+00 0/1 0/0 0/0 .rodata @4331 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4331 = 40.0f;
-COMPILER_STRIP_GATE(0x80A0E024, &lit_4331);
-#pragma pop
-
-/* 80A0E028-80A0E02C 000014 0004+00 0/1 0/0 0/0 .rodata @4332 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4332 = 30.0f;
-COMPILER_STRIP_GATE(0x80A0E028, &lit_4332);
-#pragma pop
-
-/* 80A0E02C-80A0E030 000018 0004+00 0/1 0/0 0/0 .rodata @4333 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4333 = 70.0f;
-COMPILER_STRIP_GATE(0x80A0E02C, &lit_4333);
-#pragma pop
-
-/* 80A0E030-80A0E034 00001C 0004+00 0/1 0/0 0/0 .rodata @4334 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4334 = 10.0f;
-COMPILER_STRIP_GATE(0x80A0E030, &lit_4334);
-#pragma pop
-
-/* 80A0E034-80A0E038 000020 0004+00 1/2 0/0 0/0 .rodata @4335 */
-SECTION_RODATA static f32 const lit_4335 = 1.0f;
-COMPILER_STRIP_GATE(0x80A0E034, &lit_4335);
-
-/* 80A0E038-80A0E03C 000024 0004+00 0/1 0/0 0/0 .rodata @4336 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4336 = 1.5f;
-COMPILER_STRIP_GATE(0x80A0E038, &lit_4336);
-#pragma pop
-
-/* 80A0E03C-80A0E040 000028 0004+00 0/1 0/0 0/0 .rodata @4337 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4337 = 2.0f;
-COMPILER_STRIP_GATE(0x80A0E03C, &lit_4337);
-#pragma pop
-
-/* 80A0E040-80A0E044 00002C 0004+00 0/1 0/0 0/0 .rodata @4338 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4338 = 1300.0f;
-COMPILER_STRIP_GATE(0x80A0E040, &lit_4338);
-#pragma pop
-
-/* 80A0E044-80A0E048 000030 0004+00 0/1 0/0 0/0 .rodata @4339 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4339 = 1000.0f;
-COMPILER_STRIP_GATE(0x80A0E044, &lit_4339);
-#pragma pop
-
-/* 80A0E048-80A0E04C 000034 0004+00 0/1 0/0 0/0 .rodata @4340 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4340 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80A0E048, &lit_4340);
-#pragma pop
-
-/* 80A0E04C-80A0E050 000038 0004+00 0/1 0/0 0/0 .rodata @4341 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4341 = 6.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80A0E04C, &lit_4341);
-#pragma pop
-
-/* 80A0E050-80A0E054 00003C 0004+00 0/1 0/0 0/0 .rodata @4342 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4342 = 3.0f;
-COMPILER_STRIP_GATE(0x80A0E050, &lit_4342);
-#pragma pop
-
-/* 80A0E054-80A0E058 000040 0004+00 0/1 0/0 0/0 .rodata @4343 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4343 = 100.0f;
-COMPILER_STRIP_GATE(0x80A0E054, &lit_4343);
-#pragma pop
-
-/* 80A0E058-80A0E05C 000044 0004+00 0/1 0/0 0/0 .rodata @4344 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4344 = 7000.0f;
-COMPILER_STRIP_GATE(0x80A0E058, &lit_4344);
-#pragma pop
-
-/* 80A0E05C-80A0E060 000048 0004+00 0/1 0/0 0/0 .rodata @4345 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4345 = 0.5f;
-COMPILER_STRIP_GATE(0x80A0E05C, &lit_4345);
-#pragma pop
-
-/* 80A0E060-80A0E064 00004C 0004+00 0/1 0/0 0/0 .rodata @4346 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4346 = 8.0f;
-COMPILER_STRIP_GATE(0x80A0E060, &lit_4346);
-#pragma pop
-
-/* 80A0E064-80A0E068 000050 0004+00 0/1 0/0 0/0 .rodata @4347 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4347 = 41.0f;
-COMPILER_STRIP_GATE(0x80A0E064, &lit_4347);
-#pragma pop
-
-/* 80A0E068-80A0E06C 000054 0004+00 0/1 0/0 0/0 .rodata @4348 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4348 = 14.0f;
-COMPILER_STRIP_GATE(0x80A0E068, &lit_4348);
-#pragma pop
-
-/* 80A0E06C-80A0E070 000058 0004+00 0/1 0/0 0/0 .rodata @4349 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4349 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x80A0E06C, &lit_4349);
-#pragma pop
-
-/* 80A0E070-80A0E074 00005C 0004+00 0/1 0/0 0/0 .rodata @4350 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4350 = 20.0f;
-COMPILER_STRIP_GATE(0x80A0E070, &lit_4350);
-#pragma pop
-
-/* 80A0E074-80A0E078 000060 0004+00 0/2 0/0 0/0 .rodata @4351 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4351 = 200.0f;
-COMPILER_STRIP_GATE(0x80A0E074, &lit_4351);
-#pragma pop
-
-/* 80A0E078-80A0E07C 000064 0004+00 0/1 0/0 0/0 .rodata @4352 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4352 = 32768.0f;
-COMPILER_STRIP_GATE(0x80A0E078, &lit_4352);
-#pragma pop
-
-/* 80A0E07C-80A0E080 000068 0004+00 0/1 0/0 0/0 .rodata @4353 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4353 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80A0E07C, &lit_4353);
-#pragma pop
-
-/* 80A0E080-80A0E084 00006C 0004+00 0/1 0/0 0/0 .rodata @4354 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4354 = 5.0f;
-COMPILER_STRIP_GATE(0x80A0E080, &lit_4354);
-#pragma pop
-
-/* 80A0E084-80A0E08C 000070 0008+00 0/1 0/0 0/0 .rodata @4355 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4355[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A0E084, &lit_4355);
-#pragma pop
-
-/* 80A0E08C-80A0E094 000078 0008+00 0/1 0/0 0/0 .rodata @4356 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4356[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A0E08C, &lit_4356);
-#pragma pop
-
-/* 80A0E094-80A0E09C 000080 0008+00 0/1 0/0 0/0 .rodata @4357 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4357[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A0E094, &lit_4357);
-#pragma pop
-
-/* 80A0E09C-80A0E0A0 000088 0004+00 0/1 0/0 0/0 .rodata @4358 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4358 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80A0E09C, &lit_4358);
-#pragma pop
-
-/* 80A0E0A0-80A0E0A4 00008C 0004+00 0/1 0/0 0/0 .rodata @4359 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4359 = 300.0f;
-COMPILER_STRIP_GATE(0x80A0E0A0, &lit_4359);
-#pragma pop
-
-/* 80A0E0A4-80A0E0A8 000090 0004+00 0/1 0/0 0/0 .rodata @4360 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4360 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80A0E0A4, &lit_4360);
-#pragma pop
-
-/* 80A0E0A8-80A0E0AC 000094 0004+00 0/1 0/0 0/0 .rodata @4361 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4361 = 2.5f;
-COMPILER_STRIP_GATE(0x80A0E0A8, &lit_4361);
-#pragma pop
-
-/* 80A0E0AC-80A0E0B0 000098 0004+00 0/1 0/0 0/0 .rodata @4362 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4362 = 3000.0f;
-COMPILER_STRIP_GATE(0x80A0E0AC, &lit_4362);
-#pragma pop
-
-/* 80A0E0B0-80A0E0B4 00009C 0004+00 0/1 0/0 0/0 .rodata @4363 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4363 = 90.0f;
-COMPILER_STRIP_GATE(0x80A0E0B0, &lit_4363);
-#pragma pop
-
-/* 80A0E0B4-80A0E0B8 0000A0 0004+00 0/1 0/0 0/0 .rodata @4364 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4364 = 500.0f;
-COMPILER_STRIP_GATE(0x80A0E0B4, &lit_4364);
-#pragma pop
-
-/* 80A0E0B8-80A0E0BC 0000A4 0004+00 0/1 0/0 0/0 .rodata @4365 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4365 = -2.0f;
-COMPILER_STRIP_GATE(0x80A0E0B8, &lit_4365);
-#pragma pop
-
-/* 80A0E0BC-80A0E0C0 0000A8 0004+00 0/1 0/0 0/0 .rodata @4366 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4366 = 23000.0f;
-COMPILER_STRIP_GATE(0x80A0E0BC, &lit_4366);
-#pragma pop
-
-/* 80A0E0C0-80A0E0C4 0000AC 0004+00 0/1 0/0 0/0 .rodata @4367 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4367 = 150.0f;
-COMPILER_STRIP_GATE(0x80A0E0C0, &lit_4367);
-#pragma pop
-
-/* 80A0E0D8-80A0E0E8 000000 0010+00 1/1 0/0 0/0 .data mes_0$3966 */
-SECTION_DATA static u8 mes_0[16] = {
- 0x00, 0x00, 0x03, 0x57, 0x00, 0x00, 0x03, 0x58, 0x00, 0x00, 0x03, 0x59, 0x00, 0x00, 0x03, 0x5A,
-};
-
-/* 80A0E0E8-80A0E0F8 000010 0010+00 1/1 0/0 0/0 .data mes_1$3967 */
-SECTION_DATA static u8 mes_1[16] = {
- 0x00, 0x00, 0x03, 0x5B, 0x00, 0x00, 0x03, 0x5C, 0x00, 0x00, 0x03, 0x5D, 0x00, 0x00, 0x03, 0x5E,
-};
-
/* 80A0CCC8-80A0DD70 0003A8 10A8+00 2/1 0/0 0/0 .text daNpc_Inko_Execute__FP14npc_inko_class */
-static void daNpc_Inko_Execute(npc_inko_class* param_0) {
- // NONMATCHING
+static int daNpc_Inko_Execute(npc_inko_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)i_this;
+ cXyz sp78;
+ cXyz sp6C;
+
+ i_this->field_0x596++;
+
+ for (int i = 0; i < 4; i++) {
+ if (i_this->field_0x59c[i] != 0) {
+ i_this->field_0x59c[i]--;
+ }
+ }
+
+ obj_kage_class* kage = (obj_kage_class*)fopAcM_SearchByID(actor->parentActorID);
+ if (kage == NULL) {
+ return 1;
+ }
+
+ s16 sp1A = 0;
+ s16 sp18 = 0;
+ MTXCopy(kage->model->getBaseTRMtx(), mDoMtx_stack_c::get());
+ i_this->field_0x5c0 = kage->actor.shape_angle;
+
+ if (i_this->field_0x598 <= 2) {
+ mDoMtx_stack_c::transM(i_this->field_0x5a8, -78.0f + TREG_F(1), -5.0f + TREG_F(2));
+ mDoMtx_stack_c::multVecZero(&i_this->field_0x5b4);
+ cLib_addCalcAngleS2(&actor->shape_angle.y, i_this->field_0x59a, 1, 0xC00);
+ cLib_addCalcAngleS2(&actor->shape_angle.x, 0, 1, 0xA00);
+ } else {
+ mDoMtx_stack_c::YrotM(i_this->field_0x59a);
+ mDoMtx_stack_c::transM(0.0f, i_this->field_0x5e8, 40.0f + JREG_F(2));
+ mDoMtx_stack_c::multVecZero(&i_this->field_0x5b4);
+ cLib_addCalcAngleS2(&actor->shape_angle.y, (i_this->field_0x5c0.y + i_this->field_0x59a), 1, 0xA00);
+ cLib_addCalcAngleS2(&actor->shape_angle.x, i_this->field_0x5ec, 1, 0xA00);
+ }
+
+ f32 var_f31;
+ if (i_this->field_0x598 == 0) {
+ if (i_this->field_0x59c[1] == 0) {
+ i_this->field_0x59c[1] = 30.0f + cM_rndF(70.0f);
+ i_this->field_0x5ac = cM_rndFX(30.0f);
+
+ for (int i = 0; i < 10; i++) {
+ i_this->field_0x5ac = cM_rndFX(30.0f);
+ if (fabsf(i_this->field_0x5a8 - i_this->field_0x5ac) >= 10.0f) {
+ break;
+ }
+ }
+ }
+
+ cLib_addCalc2(&i_this->field_0x5a8, i_this->field_0x5ac, 1.0f, 1.5f + TREG_F(3));
+ i_this->field_0x5e0 = 0;
+
+ if (fabsf(i_this->field_0x5a8 - i_this->field_0x5ac) > 1.0f) {
+ s16 sp16 = i_this->field_0x596 * (TREG_S(1) + 8000);
+ var_f31 = (2.0f + TREG_F(4)) * cM_ssin(sp16);
+ if (var_f31 < 0.0f) {
+ var_f31 *= -1.0f;
+ }
+
+ if ((u16)sp16 < 0x4000) {
+ i_this->field_0x5e0 = 10000;
+ } else if ((u16)sp16 > 0x8000 && (u16)sp16 < 0xC000) {
+ i_this->field_0x5e0 = 10000;
+ }
+
+ sp1A = (1300.0f + TREG_F(8)) * cM_ssin(sp16);
+ if (sp1A < 0) {
+ sp1A *= -1;
+ }
+
+ sp18 = (1000.0f + TREG_F(9)) * cM_ssin(sp16);
+ } else {
+ var_f31 = 0.0f;
+ }
+
+ actor->current.pos = i_this->field_0x5b4;
+
+ u8 spA = 0;
+ s16 sp14 = fopAcM_searchPlayerAngleY(actor);
+ s16 sp12 = sp14 - actor->shape_angle.y;
+
+ if (i_this->field_0x59c[2] == 0) {
+ if (cM_rndF(1.0f) < 0.3f && sp12 < 0x3000 && sp12 > -0x3000) {
+ i_this->field_0x598 = 3;
+ anm_init(i_this, 4, 1.0f, 2, 1.2f + cM_rndF(3.0f));
+ i_this->sound.startSound(Z2SE_LINKBIRD_WING, 0, -1);
+
+ i_this->field_0x59c[0] = 40.0f + cM_rndF(100.0f);
+ i_this->field_0x59a = (sp14 - i_this->field_0x5c0.y) + (s16)cM_rndFX(7000.0f);
+
+ u16 sp10 = i_this->field_0x59a;
+ if (cM_rndF(1.0f) < 0.5f && ((sp10 < 0x5000 && sp10 > 0xA000) || sp10 < 0x3000 || sp10 > 0xD000)) {
+ i_this->field_0x5e8 = -(70.0f + cM_rndF(8.0f));
+ i_this->field_0x5ec = -8000;
+ } else {
+ i_this->field_0x5e8 = -(41.0f + cM_rndF(14.0f));
+ i_this->field_0x5ec = -10000;
+ }
+ } else {
+ i_this->field_0x598 = 2;
+ anm_init(i_this, 4, 1.0f, 2, 1.2f + cM_rndF(3.0f));
+ i_this->sound.startSound(Z2SE_LINKBIRD_WING, 0, -1);
+ i_this->field_0x5b0 = i_this->field_0x5a8;
+
+ for (int i = 0; i < 10; i++) {
+ i_this->field_0x5ac = cM_rndFX(30.0f);
+ if (fabsf(i_this->field_0x5a8 - i_this->field_0x5ac) >= 10.0f) {
+ break;
+ }
+ }
+
+ if (cM_rndF(1.0f) < 0.5f) {
+ i_this->field_0x59a = i_this->field_0x5c0.y + 0x8000;
+ } else {
+ i_this->field_0x59a = (s16)i_this->field_0x5c0.y;
+ }
+ }
+ }
+ } else if (i_this->field_0x598 == 2) {
+ i_this->field_0x5e0 = 0;
+ cLib_addCalc2(&i_this->field_0x5a8, i_this->field_0x5ac, 1.0f, 2.0f + TREG_F(7));
+
+ if (fabsf(i_this->field_0x5a8 - i_this->field_0x5ac) <= 0.01f) {
+ i_this->field_0x598 = 0;
+ i_this->field_0x59c[2] = 30.0f + cM_rndF(100.0f);
+ i_this->field_0x59c[1] = 20.0f + cM_rndF(20.0f);
+ anm_init(i_this, 5, 3.0f, 2, 1.0f);
+ kage->field_0x5a8 = 200.0f + KREG_F(11);
+ }
+
+ f32 temp_f30 = fabsf(i_this->field_0x5ac - i_this->field_0x5b0);
+ f32 temp_f26 = fabsf(i_this->field_0x5ac - i_this->field_0x5a8);
+ f32 temp_f25 = temp_f30 * (1.5f + BREG_F(19));
+ var_f31 = temp_f25 * cM_ssin(32768.0f * (temp_f26 / temp_f30));
+ if (var_f31 > 30.0f + BREG_F(18)) {
+ var_f31 = 30.0f + BREG_F(18);
+ }
+
+ actor->current.pos = i_this->field_0x5b4;
+ } else if (i_this->field_0x598 == 3) {
+ i_this->field_0x5e0 = 0;
+ cLib_addCalc2(&actor->current.pos.x, i_this->field_0x5b4.x, 0.8f, 5.0f);
+ cLib_addCalc2(&actor->current.pos.y, i_this->field_0x5b4.y, 0.8f, 5.0f);
+ cLib_addCalc2(&actor->current.pos.z, i_this->field_0x5b4.z, 0.8f, 5.0f);
+
+ bool sp9 = (actor->current.pos - i_this->field_0x5b4).abs() < 0.1f;
+ if (sp9 && i_this->anmId == 4) {
+ anm_init(i_this, 5, 3.0f, 2, 1.0f);
+ kage->field_0x5a8 = 300.0f + KREG_F(12);
+ }
+
+ i_this->field_0x5ce.z = 13000;
+
+ if (i_this->field_0x59c[0] == 0) {
+ anm_init(i_this, 4, 1.0f, 2, 1.2f + cM_rndF(3.0f));
+ i_this->sound.startSound(Z2SE_LINKBIRD_WING, 0, -1);
+ i_this->field_0x598 = 1;
+
+ if (cM_rndF(1.0f) < 0.5f) {
+ i_this->field_0x59a = i_this->field_0x5c0.y + 0x8000;
+ } else {
+ i_this->field_0x59a = (s16)i_this->field_0x5c0.y;
+ }
+ }
+ } else if (i_this->field_0x598 == 1) {
+ cLib_addCalc2(&actor->current.pos.x, i_this->field_0x5b4.x, 0.9f, 5.0f);
+ cLib_addCalc2(&actor->current.pos.y, i_this->field_0x5b4.y, 0.9f, 2.5f);
+ cLib_addCalc2(&actor->current.pos.z, i_this->field_0x5b4.z, 0.9f, 5.0f);
+
+ bool sp8 = (actor->current.pos - i_this->field_0x5b4).abs() < 0.1f;
+ if (sp8) {
+ i_this->field_0x598 = 0;
+ i_this->field_0x59c[2] = 30.0f + cM_rndF(100.0f);
+ i_this->field_0x59c[1] = 20.0f + cM_rndF(20.0f);
+ anm_init(i_this, 5, 3.0f, 2, 1.0f);
+ i_this->field_0x5ce.z = 0;
+ kage->field_0x5a8 = 200.0f + KREG_F(11);
+ }
+ }
+
+ if (i_this->field_0x5c6 != 0) {
+ i_this->field_0x5c6--;
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0x5c8.x, i_this->field_0x5ce.x, 2, 3000);
+ cLib_addCalcAngleS2(&i_this->field_0x5c8.y, i_this->field_0x5ce.y, 2, 3000);
+ cLib_addCalcAngleS2(&i_this->field_0x5c8.z, i_this->field_0x5ce.z, 2, 3000);
+
+ if (i_this->field_0x5c6 == 0) {
+ i_this->field_0x5c6 = 10.0f + cM_rndF(30.0f);
+ i_this->field_0x5ce.x = cM_rndFX(3000.0f + BREG_F(1));
+ i_this->field_0x5ce.y = cM_rndFX(3000.0f + BREG_F(1));
+ i_this->field_0x5ce.z = cM_rndFX(3000.0f + BREG_F(1));
+ }
+
+ if (i_this->field_0x5e2 != 0) {
+ i_this->field_0x5e2--;
+ }
+
+ if (i_this->field_0x5e2 == 5) {
+ i_this->field_0x5e4 = 10.0f + cM_rndF(10.0f);
+ }
+
+ if (i_this->field_0x5e2 == 0) {
+ i_this->field_0x5e2 = (s8)(30.0f + cM_rndF(90.0f));
+ i_this->sound.startSound(Z2SE_LINKBIRD_CRY, 0, -1);
+ }
+
+ s16 spE = 0;
+ if (i_this->field_0x5e4 != 0) {
+ i_this->field_0x5e4--;
+ spE = 10000;
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0x5e6, spE, 1, 4000);
+
+ for (int i = 0; i < 2; i++) {
+ if (i_this->field_0x5dc[i] != 0) {
+ i_this->field_0x5dc[i]--;
+ }
+
+ if (i_this->field_0x5dc[i] == 0) {
+ i_this->field_0x5d8[i] = cM_rndFX(500.0f + BREG_F(0));
+ i_this->field_0x5dc[i] = 5.0f + cM_rndF(10.0f);
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0x5d4[i], i_this->field_0x5d8[i], 2, 0x1F4);
+ }
+
+ mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y + var_f31, actor->current.pos.z);
+ mDoMtx_stack_c::YrotM(BREG_S(0) + (actor->shape_angle.y + sp18));
+ mDoMtx_stack_c::XrotM(BREG_S(1) + (actor->shape_angle.x + sp1A));
+ mDoMtx_stack_c::ZrotM(actor->shape_angle.z);
+ mDoMtx_stack_c::transM(0.0f, 0.0f, BREG_F(4) + -2.0f);
+
+ i_this->anm_p->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ i_this->anm_p->play(NULL, 0, 0);
+ i_this->anm_p->modelCalc();
+
+ i_this->sound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
+
+ f32 temp_f1 = fopAcM_searchPlayerDistanceXZ(actor);
+ if (temp_f1 < (100.0f + KREG_F(15))) {
+ daPy_py_c::setLookPos(&actor->current.pos);
+ }
+
+ if (daPy_getPlayerActorClass()->checkFrontRollCrash() && temp_f1 < 200.0f) {
+ i_this->field_0x59c[2] = 0;
+
+ npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
+ if (henna != NULL) {
+ henna->field_0x7b5 = 40;
+ data_80450C9D |= 0x40;
+ }
+ }
+
+ if (i_this->field_0x5f4 != 0) {
+ if (i_this->msgflow.doFlow(actor, NULL, 0)) {
+ dComIfGp_event_reset();
+ i_this->field_0x5f4 = 0;
+ }
+ return 1;
+ }
+
+ if (dComIfGp_event_runCheck() && actor->eventInfo.checkCommandTalk() && i_this->field_0x5f4 == 0) {
+ int flowId;
+ if (cM_rndF(1.0f) < 0.1f) {
+ flowId = 0x361;
+ npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
+ if (henna != NULL) {
+ henna->field_0x7ba = 2;
+ }
+ } else {
+ static u32 mes_0[] = {
+ 0x357,
+ 0x358,
+ 0x359,
+ 0x35A,
+ };
+
+ static u32 mes_1[] = {
+ 0x35B,
+ 0x35C,
+ 0x35D,
+ 0x35E,
+ };
+
+ int sp30 = (data_80450C9D & 3);
+ if (data_80450C9D & 0x40) {
+ flowId = mes_1[sp30];
+ } else {
+ flowId = mes_0[sp30];
+ }
+ }
+
+ i_this->msgflow.init(actor, flowId, 0, NULL);
+ i_this->field_0x5f4 = 1;
+
+ data_80450C9D++;
+ data_80450C9D &= 0xC3;
+ }
+
+ fopAc_ac_c* player = dComIfGp_getPlayer(0);
+ f32 temp_f28 = kage->actor.current.pos.x - player->current.pos.x;
+ f32 temp_f27 = kage->actor.current.pos.z - player->current.pos.z;
+
+ if ((data_80450C9D & 0x80) && i_this->field_0x59c[3] < 15 && (SQUARE(temp_f28) + SQUARE(temp_f27)) < 23000.0f) {
+ s16 spC = fopAcM_searchPlayerAngleY(actor);
+ spC = (spC - player->shape_angle.y) + 0x8000;
+ if (spC < 0x1800 && spC > -0x1800) {
+ i_this->field_0x5f5 = 5;
+ }
+ }
+
+ if (i_this->field_0x59c[3] == 0 || mDoCPd_c::getTrigA(PAD_1)) {
+ i_this->field_0x59c[3] = 150.0f + cM_rndF(200.0f);
+ }
+
+ if (i_this->field_0x5f5 != 0) {
+ i_this->field_0x5f5--;
+
+ actor->eyePos = actor->current.pos;
+ actor->eyePos.y += 20.0f;
+ actor->attention_info.position = actor->eyePos;
+ actor->attention_info.position.y += 20.0f;
+ fopAcM_OnStatus(actor, 0);
+ cLib_onBit<u32>(actor->attention_info.flags, fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
+ actor->eventInfo.onCondition(1);
+ } else {
+ fopAcM_OffStatus(actor, 0);
+ cLib_offBit<u32>(actor->attention_info.flags, fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
+ }
+
+ return 1;
}
/* 80A0DD70-80A0DD78 001450 0008+00 1/0 0/0 0/0 .text daNpc_Inko_IsDelete__FP14npc_inko_class */
-static bool daNpc_Inko_IsDelete(npc_inko_class* param_0) {
- return true;
+static int daNpc_Inko_IsDelete(npc_inko_class* i_this) {
+ return 1;
}
/* 80A0DD78-80A0DDC8 001458 0050+00 1/0 0/0 0/0 .text daNpc_Inko_Delete__FP14npc_inko_class */
-static void daNpc_Inko_Delete(npc_inko_class* param_0) {
- // NONMATCHING
+static int daNpc_Inko_Delete(npc_inko_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)i_this;
+ fpc_ProcID id = fopAcM_GetID(i_this);
+ dComIfG_resDelete(&i_this->phase, "Npc_inko");
+
+ if (actor->heap != NULL) {
+ i_this->sound.deleteObject();
+ }
+
+ return 1;
}
/* 80A0DDC8-80A0DF08 0014A8 0140+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* actor) {
+ npc_inko_class* i_this = (npc_inko_class*)actor;
+ i_this->anm_p = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("Npc_inko", 8), NULL, NULL, NULL, 0, 1.0f, 0, -1, 1, 0, 0x80000, 0x11000084);
+ if (i_this->anm_p == NULL || i_this->anm_p->getModel() == NULL) {
+ return 0;
+ }
+
+ J3DModel* model = i_this->anm_p->getModel();
+ model->setUserArea((uintptr_t)i_this);
+
+ for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) {
+ model->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack);
+ }
+
+ fopAcM_SetMtx(actor, model->getBaseTRMtx());
+ i_this->sound.init(&actor->current.pos, 2);
+ return 1;
}
-/* ############################################################################################## */
-/* 80A0E0C4-80A0E0C8 0000B0 0004+00 0/1 0/0 0/0 .rodata @4461 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4461 = 65536.0f;
-COMPILER_STRIP_GATE(0x80A0E0C4, &lit_4461);
-#pragma pop
-
-/* 80A0E0C8-80A0E0CC 0000B4 0004+00 0/1 0/0 0/0 .rodata @4462 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4462 = -200.0f;
-COMPILER_STRIP_GATE(0x80A0E0C8, &lit_4462);
-#pragma pop
-
/* 80A0DF08-80A0E00C 0015E8 0104+00 1/0 0/0 0/0 .text daNpc_Inko_Create__FP10fopAc_ac_c
*/
-static void daNpc_Inko_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daNpc_Inko_Create(fopAc_ac_c* actor) {
+ npc_inko_class* i_this = (npc_inko_class*)actor;
+ fopAcM_ct(actor, npc_inko_class);
+
+ int phase_state = dComIfG_resLoad(&i_this->phase, "Npc_inko");
+ if (phase_state == cPhs_COMPLEATE_e) {
+ OS_REPORT("NPC_INKO PARAM %x\n", fopAcM_GetParam(actor));
+ i_this->field_0x570 = fopAcM_GetParam(actor);
+
+ OS_REPORT("NPC_INKO//////////////NPC_INKO SET 1 !!\n");
+
+ if (!fopAcM_entrySolidHeap(actor, useHeapInit, 0xC00)) {
+ OS_REPORT("//////////////NPC_INKO SET NON !!\n");
+ return cPhs_ERROR_e;
+ }
+
+ OS_REPORT("//////////////NPC_INKO SET 2 !!\n");
+
+ i_this->field_0x596 = cM_rndF(65536.0f);
+ fopAcM_SetMin(actor, -200.0f, -200.0f, -200.0f);
+ fopAcM_SetMax(actor, 200.0f, 200.0f, 200.0f);
+ daNpc_Inko_Execute(i_this);
+ }
+
+ return phase_state;
}
-/* ############################################################################################## */
/* 80A0E0F8-80A0E118 -00001 0020+00 1/0 0/0 0/0 .data l_daNpc_Inko_Method */
static actor_method_class l_daNpc_Inko_Method = {
- (process_method_func)daNpc_Inko_Create__FP10fopAc_ac_c,
- (process_method_func)daNpc_Inko_Delete__FP14npc_inko_class,
- (process_method_func)daNpc_Inko_Execute__FP14npc_inko_class,
- (process_method_func)daNpc_Inko_IsDelete__FP14npc_inko_class,
- (process_method_func)daNpc_Inko_Draw__FP14npc_inko_class,
+ (process_method_func)daNpc_Inko_Create,
+ (process_method_func)daNpc_Inko_Delete,
+ (process_method_func)daNpc_Inko_Execute,
+ (process_method_func)daNpc_Inko_IsDelete,
+ (process_method_func)daNpc_Inko_Draw,
};
/* 80A0E118-80A0E148 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_INKO */
@@ -474,5 +500,3 @@ extern actor_process_profile_definition g_profile_NPC_INKO = {
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
-
-/* 80A0E0CC-80A0E0CC 0000B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_npc_myna2.cpp b/src/d/actor/d_a_npc_myna2.cpp
index af2b5b81d3..9361c1bd5d 100644
--- a/src/d/actor/d_a_npc_myna2.cpp
+++ b/src/d/actor/d_a_npc_myna2.cpp
@@ -6,275 +6,53 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_myna2.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__13daNpc_myna2_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__13daNpc_myna2_cFv();
-extern "C" void create__13daNpc_myna2_cFv();
-extern "C" void CreateHeap__13daNpc_myna2_cFv();
-extern "C" void Delete__13daNpc_myna2_cFv();
-extern "C" void Execute__13daNpc_myna2_cFv();
-extern "C" void Draw__13daNpc_myna2_cFv();
-extern "C" void createHeapCallBack__13daNpc_myna2_cFP10fopAc_ac_c();
-extern "C" void setParam__13daNpc_myna2_cFv();
-extern "C" void main__13daNpc_myna2_cFv();
-extern "C" void setAttnPos__13daNpc_myna2_cFv();
-extern "C" void setExpressionBtp__13daNpc_myna2_cFi();
-extern "C" void setMotionAnm__13daNpc_myna2_cFif();
-extern "C" void setMotion__13daNpc_myna2_cFifi();
-extern "C" bool drawDbgInfo__13daNpc_myna2_cFv();
-extern "C" void drawOtherMdls__13daNpc_myna2_cFv();
-extern "C" void getTypeFromParam__13daNpc_myna2_cFv();
-extern "C" void isDelete__13daNpc_myna2_cFv();
-extern "C" void reset__13daNpc_myna2_cFv();
-extern "C" void playMotion__13daNpc_myna2_cFv();
-extern "C" void chkAction__13daNpc_myna2_cFM13daNpc_myna2_cFPCvPvPv_i();
-extern "C" void setAction__13daNpc_myna2_cFM13daNpc_myna2_cFPCvPvPv_i();
-extern "C" void selectAction__13daNpc_myna2_cFv();
-extern "C" void doNormalAction__13daNpc_myna2_cFi();
-extern "C" void doEvent__13daNpc_myna2_cFv();
-extern "C" void setLookMode__13daNpc_myna2_cFi();
-extern "C" void wait__13daNpc_myna2_cFPv();
-extern "C" void waitHovering__13daNpc_myna2_cFPv();
-extern "C" static void s_sub__FPvPv();
-extern "C" void waitFailure__13daNpc_myna2_cFPv();
-extern "C" void waitGoal__13daNpc_myna2_cFPv();
-extern "C" void talk__13daNpc_myna2_cFPv();
-extern "C" void test__13daNpc_myna2_cFPv();
-extern "C" void ECut_firstTalk__13daNpc_myna2_cFi();
-extern "C" void ECut_gameFailure__13daNpc_myna2_cFi();
-extern "C" void ECut_gameGoal__13daNpc_myna2_cFi();
-extern "C" void ECut_gameGoalSuccess__13daNpc_myna2_cFi();
-extern "C" void calcHovering__13daNpc_myna2_cFii();
-extern "C" static void daNpc_myna2_Create__FPv();
-extern "C" static void daNpc_myna2_Delete__FPv();
-extern "C" static void daNpc_myna2_Execute__FPv();
-extern "C" static void daNpc_myna2_Draw__FPv();
-extern "C" static bool daNpc_myna2_IsDelete__FPv();
-extern "C" void __dt__18daNpcF_ActorMngr_cFv();
-extern "C" void __ct__18daNpcF_ActorMngr_cFv();
-extern "C" void __dt__15daNpcF_Lookat_cFv();
-extern "C" void __dt__5csXyzFv();
-extern "C" void __ct__5csXyzFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" void __dt__8daNpcF_cFv();
-extern "C" void __ct__8daNpcF_cFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" bool ctrlBtk__8daNpcF_cFv();
-extern "C" void adjustShapeAngle__8daNpcF_cFv();
-extern "C" void setCollisions__8daNpcF_cFv();
-extern "C" bool setExpressionAnm__8daNpcF_cFib();
-extern "C" void setExpression__8daNpcF_cFif();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void func_80A88220(void* _this, int*);
-extern "C" void func_80A8823C(void* _this, f32, f32);
-extern "C" void func_80A88278(void* _this, int, int);
-extern "C" void __sinit_d_a_npc_myna2_cpp();
-extern "C" void __dt__19daNpc_myna2_Param_cFv();
-extern "C" static void func_80A88410();
-extern "C" static void func_80A88418();
-extern "C" u8 const m__19daNpc_myna2_Param_c[116];
-extern "C" extern char const* const d_a_npc_myna2__stringBase0;
-extern "C" void* mEvtCutNameList__13daNpc_myna2_c[5];
-extern "C" u8 mEvtCutList__13daNpc_myna2_c[60];
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAc_IsActor__FPv();
-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 fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz();
-extern "C" void fpcEx_Search__FPFPvPv_PvPv();
-extern "C" void dStage_changeScene__FifUlScsi();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void dComIfGs_wolfeye_effect_check__Fv();
-extern "C" void onSwitch__10dSv_info_cFii();
-extern "C" void offSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void reset__14dEvt_control_cFv();
-extern "C" void setPtI_Id__14dEvt_control_cFUi();
-extern "C" void endCheck__16dEvent_manager_cFs();
-extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void getIsAddvance__16dEvent_manager_cFi();
-extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
-extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
-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_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-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 ChkCoHit__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void initialize__18daNpcF_ActorMngr_cFv();
-extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
-extern "C" void initialize__15daNpcF_Lookat_cFv();
-extern "C" void execute__8daNpcF_cFv();
-extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i();
-extern "C" void tgHitCallBack__8daNpcF_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
-extern "C" void setMtx__8daNpcF_cFv();
-extern "C" void setMtx2__8daNpcF_cFv();
-extern "C" void initialize__8daNpcF_cFv();
-extern "C" void getTrnsfrmKeyAnmP__8daNpcF_cFPci();
-extern "C" void getTexPtrnAnmP__8daNpcF_cFPci();
-extern "C" void setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii();
-extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi();
-extern "C" void setEnvTevColor__8daNpcF_cFv();
-extern "C" void setRoomNo__8daNpcF_cFv();
-extern "C" void playMotionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData();
-extern "C" void hitChk2__8daNpcF_cFP8dCcD_Cylii();
-extern "C" void ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci();
-extern "C" void orderEvent__8daNpcF_cFiPcUsUsUcUs();
-extern "C" void initTalk__8daNpcF_cFiPP10fopAc_ac_c();
-extern "C" void talkProc__8daNpcF_cFPiiPP10fopAc_ac_c();
-extern "C" void step__8daNpcF_cFsiii();
-extern "C" void daNpcF_getGroundAngle__FP13cBgS_PolyInfos();
-extern "C" void daNpcF_chkEvtBit__FUl();
-extern "C" void daNpcF_onTmpBit__FUl();
-extern "C" void daNpcF_offTmpBit__FUl();
-extern "C" void dKy_pol_sound_get__FPC13cBgS_PolyInfo();
-extern "C" void __ct__10dMsgFlow_cFv();
-extern "C" void __dt__10dMsgFlow_cFv();
-extern "C" void getEventId__10dMsgFlow_cFPi();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void normalizeZP__4cXyzFv();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndF__Ff();
-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 SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void cLib_addCalcPos2__FP4cXyzRC4cXyzff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
-extern "C" void __dt__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void __ct__16Z2CreatureSumomoFv();
-extern "C" void playSumomoBgm__16Z2CreatureSumomoFUl();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_cmpr();
-extern "C" void __ptmf_scall();
-extern "C" void __cvt_fp2unsigned();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" u8 mCcDCyl__8daNpcF_c[68];
-extern "C" extern void* __vt__8daNpcF_c[18];
-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__16Z2CreatureSumomo[12];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80A88654-80A88654 000220 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80A88654 = "FIRST_TALK";
-SECTION_DEAD static char const* const stringBase_80A8865F = "GAME_FAILURE";
-SECTION_DEAD static char const* const stringBase_80A8866C = "GAME_GOAL";
-SECTION_DEAD static char const* const stringBase_80A88676 = "GAME_GOAL_SUCCESS";
-SECTION_DEAD static char const* const stringBase_80A88688 = "MYNA_b";
-SECTION_DEAD static char const* const stringBase_80A8868F = "MYNA_b_f";
-SECTION_DEAD static char const* const stringBase_80A88698 = "MYNA_b_g";
-SECTION_DEAD static char const* const stringBase_80A886A1 = "myna2";
-SECTION_DEAD static char const* const stringBase_80A886A7 = "";
-#pragma pop
+#include "d/actor/d_a_player.h"
+#include "Z2AudioLib/Z2Instances.h"
+
+enum {
+ NUM_EVT_CUTS_e = 5,
+};
+
+/* 80A88B44-80A88B48 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
+static daNpc_myna2_Param_c l_HIO;
/* 80A886D4-80A886DC 000020 0008+00 1/1 0/0 0/0 .data l_bmdGetParamList */
-SECTION_DATA static u8 l_bmdGetParamList[8] = {
- 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam1 l_bmdGetParamList[] = {
+ {0x17, 0},
};
/* 80A886DC-80A88754 000028 0078+00 1/1 0/0 0/0 .data l_bckGetParamList */
-SECTION_DATA static u8 l_bckGetParamList[120] = {
- 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam1 l_bckGetParamList[] = {
+ {17, 0},
+ {10, 0},
+ {11, 0},
+ {9, 0},
+ {13, 0},
+ {12, 0},
+ {8, 0},
+ {7, 0},
+ {6, 0},
+ {14, 0},
+ {15, 0},
+ {16, 0},
+ {18, 0},
+ {19, 0},
+ {20, 0},
};
/* 80A88754-80A8875C 0000A0 0008+00 1/1 0/0 0/0 .data l_btpGetParamList */
-SECTION_DATA static u8 l_btpGetParamList[8] = {
- 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam1 l_btpGetParamList[] = {
+ {26, 0},
};
/* 80A8875C-80A88784 0000A8 0028+00 0/1 0/0 0/0 .data l_evtGetParamList */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_evtGetParamList[40] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02,
+static daNpc_GetParam1 l_evtGetParamList[] = {
+ {0, 0},
+ {1, 0},
+ {2, 1},
+ {3, 2},
+ {4, 2},
};
-#pragma pop
/* 80A88784-80A88798 -00001 0014+00 0/1 0/0 0/0 .data l_evtNames */
static char* l_evtNames[5] = {
@@ -286,32 +64,32 @@ static char* l_evtNames[5] = {
};
/* 80A88798-80A887A4 0000E4 000C+00 1/0 0/0 0/0 .data l_loadRes_MYNA2a */
-SECTION_DATA static u8 l_loadRes_MYNA2a[12] = {
- 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+static int l_loadRes_MYNA2a[] = {
+ 0, -1, -1,
};
/* 80A887A4-80A887B0 0000F0 000C+00 1/0 0/0 0/0 .data l_loadRes_MYNA2_GAME_FAILURE */
-SECTION_DATA static u8 l_loadRes_MYNA2_GAME_FAILURE[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF,
+static int l_loadRes_MYNA2_GAME_FAILURE[] = {
+ 0, 1, -1,
};
/* 80A887B0-80A887BC 0000FC 000C+00 1/0 0/0 0/0 .data l_loadRes_MYNA2_GAME_GOAL */
-SECTION_DATA static u8 l_loadRes_MYNA2_GAME_GOAL[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
+static int l_loadRes_MYNA2_GAME_GOAL[] = {
+ 0, 2, -1,
};
/* 80A887BC-80A887C8 000108 000C+00 1/0 0/0 0/0 .data l_loadRes_MYNA20 */
-SECTION_DATA static u8 l_loadRes_MYNA20[12] = {
- 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+static int l_loadRes_MYNA20[] = {
+ 0, -1, -1,
};
/* 80A887C8-80A887DC -00001 0014+00 2/2 0/0 0/0 .data l_loadRes_list */
-SECTION_DATA static void* l_loadRes_list[5] = {
- (void*)&l_loadRes_MYNA2a,
- (void*)&l_loadRes_MYNA2a,
- (void*)&l_loadRes_MYNA2_GAME_FAILURE,
- (void*)&l_loadRes_MYNA2_GAME_GOAL,
- (void*)&l_loadRes_MYNA20,
+static int* l_loadRes_list[5] = {
+ l_loadRes_MYNA2a,
+ l_loadRes_MYNA2a,
+ l_loadRes_MYNA2_GAME_FAILURE,
+ l_loadRes_MYNA2_GAME_GOAL,
+ l_loadRes_MYNA20,
};
/* 80A887DC-80A887E8 -00001 000C+00 5/6 0/0 0/0 .data l_resNames */
@@ -333,1461 +111,1307 @@ char* daNpc_myna2_c::mEvtCutNameList[5] = {
"GAME_GOAL_SUCCESS",
};
-/* 80A88800-80A8880C -00001 000C+00 0/1 0/0 0/0 .data @4033 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4033[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)ECut_firstTalk__13daNpc_myna2_cFi,
-};
-#pragma pop
-
-/* 80A8880C-80A88818 -00001 000C+00 0/1 0/0 0/0 .data @4034 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4034[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)ECut_gameFailure__13daNpc_myna2_cFi,
-};
-#pragma pop
-
-/* 80A88818-80A88824 -00001 000C+00 0/1 0/0 0/0 .data @4035 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4035[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)ECut_gameGoal__13daNpc_myna2_cFi,
-};
-#pragma pop
-
-/* 80A88824-80A88830 -00001 000C+00 0/1 0/0 0/0 .data @4036 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4036[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)ECut_gameGoalSuccess__13daNpc_myna2_cFi,
-};
-#pragma pop
-
/* 80A88830-80A8886C 00017C 003C+00 0/2 0/0 0/0 .data mEvtCutList__13daNpc_myna2_c */
-#pragma push
-#pragma force_active on
-SECTION_DATA u8 daNpc_myna2_c::mEvtCutList[60] = {
- 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,
+daNpc_myna2_c::EventFn daNpc_myna2_c::mEvtCutList[] = {
+ NULL,
+ &daNpc_myna2_c::ECut_firstTalk,
+ &daNpc_myna2_c::ECut_gameFailure,
+ &daNpc_myna2_c::ECut_gameGoal,
+ &daNpc_myna2_c::ECut_gameGoalSuccess,
};
-#pragma pop
-/* 80A8886C-80A88878 -00001 000C+00 1/1 0/0 0/0 .data @4477 */
-SECTION_DATA static void* lit_4477[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)test__13daNpc_myna2_cFPv,
-};
+/* 80A83E8C-80A84010 0000EC 0184+00 1/1 0/0 0/0 .text __ct__13daNpc_myna2_cFv */
+daNpc_myna2_c::daNpc_myna2_c() {}
-/* 80A88878-80A88884 -00001 000C+00 0/1 0/0 0/0 .data @4868 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4868[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)test__13daNpc_myna2_cFPv,
-};
-#pragma pop
-
-/* 80A88884-80A88890 -00001 000C+00 0/1 0/0 0/0 .data @4872 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4872[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)waitHovering__13daNpc_myna2_cFPv,
-};
-#pragma pop
-
-/* 80A88890-80A8889C -00001 000C+00 0/1 0/0 0/0 .data @4874 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4874[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)waitFailure__13daNpc_myna2_cFPv,
-};
-#pragma pop
-
-/* 80A8889C-80A888A8 -00001 000C+00 0/1 0/0 0/0 .data @4876 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4876[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)waitGoal__13daNpc_myna2_cFPv,
-};
-#pragma pop
-
-/* 80A888A8-80A888B4 -00001 000C+00 0/1 0/0 0/0 .data @4878 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4878[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)wait__13daNpc_myna2_cFPv,
-};
-#pragma pop
-
-/* 80A888B4-80A888C0 -00001 000C+00 0/1 0/0 0/0 .data @4918 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4918[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)talk__13daNpc_myna2_cFPv,
-};
-#pragma pop
-
-/* 80A888C0-80A888CC -00001 000C+00 0/1 0/0 0/0 .data @4926 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4926[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)talk__13daNpc_myna2_cFPv,
-};
-#pragma pop
-
-/* 80A888CC-80A88948 -00001 007C+00 1/1 0/0 0/0 .data @5498 */
-SECTION_DATA static void* lit_5498[31] = {
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x15C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x190),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x1C4),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x1E4),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x280),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x248),
-};
+/* 80A840A0-80A842C8 000300 0228+00 1/0 0/0 0/0 .text __dt__13daNpc_myna2_cFv */
+daNpc_myna2_c::~daNpc_myna2_c() {
+ OS_REPORT("|%06d:%x|daNpc_myna2_c -> デストラクト%d\n", g_Counter.mCounter0, mType);
-/* 80A88948-80A889C4 -00001 007C+00 1/1 0/0 0/0 .data @5497 */
-SECTION_DATA static void* lit_5497[31] = {
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0xA0),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0xD0),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0xE4),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x12C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
- (void*)(((char*)ECut_gameGoalSuccess__13daNpc_myna2_cFi) + 0x13C),
-};
+ if (mType == 1) {
+ daNpcF_offTmpBit(0x4A);
+ }
-/* 80A889C4-80A889E4 -00001 0020+00 1/0 0/0 0/0 .data daNpc_myna2_MethodTable */
-static actor_method_class daNpc_myna2_MethodTable = {
- (process_method_func)daNpc_myna2_Create__FPv,
- (process_method_func)daNpc_myna2_Delete__FPv,
- (process_method_func)daNpc_myna2_Execute__FPv,
- (process_method_func)daNpc_myna2_IsDelete__FPv,
- (process_method_func)daNpc_myna2_Draw__FPv,
-};
+ for (int i = 0; l_loadRes_list[mType][i] >= 0; i++) {
+ dComIfG_resDelete(&mPhase[i], l_resNames[l_loadRes_list[mType][i]]);
+ }
-/* 80A889E4-80A88A14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_MYNA2 */
-extern actor_process_profile_definition g_profile_MYNA2 = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_MYNA2, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daNpc_myna2_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 393, // mPriority
- &daNpc_myna2_MethodTable, // sub_method
- 0x08044100, // mStatus
- fopAc_NPC_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
+ if (heap != NULL) {
+ mpMorf->stopZelAnime();
+ }
+}
-/* 80A88A14-80A88A5C 000360 0048+00 2/2 0/0 0/0 .data __vt__13daNpc_myna2_c */
-SECTION_DATA extern void* __vt__13daNpc_myna2_c[18] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__13daNpc_myna2_cFv,
- (void*)setParam__13daNpc_myna2_cFv,
- (void*)main__13daNpc_myna2_cFv,
- (void*)ctrlBtk__8daNpcF_cFv,
- (void*)adjustShapeAngle__8daNpcF_cFv,
- (void*)setMtx__8daNpcF_cFv,
- (void*)setMtx2__8daNpcF_cFv,
- (void*)setAttnPos__13daNpc_myna2_cFv,
- (void*)setCollisions__8daNpcF_cFv,
- (void*)setExpressionAnm__8daNpcF_cFib,
- (void*)setExpressionBtp__13daNpc_myna2_cFi,
- (void*)setExpression__8daNpcF_cFif,
- (void*)setMotionAnm__13daNpc_myna2_cFif,
- (void*)setMotion__13daNpc_myna2_cFifi,
- (void*)drawDbgInfo__13daNpc_myna2_cFv,
- (void*)drawOtherMdls__13daNpc_myna2_cFv,
+/* 80A88434-80A884A8 000000 0074+00 14/14 0/0 0/0 .rodata m__19daNpc_myna2_Param_c */
+const daNpc_myna2_HIOParam daNpc_myna2_Param_c::m = {
+ 60.0f,
+ 0.0f,
+ 1.0f,
+ 600.0f,
+ 0.0f,
+ 50.0f,
+ 35.0f,
+ 40.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 12.0f,
+ 3,
+ 6,
+ 5,
+ 6,
+ 180.0f,
+ 500.0f,
+ 300.0f,
+ -300.0f,
+ 60,
+ 8,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 700.0f,
+ 2500.0f,
};
-/* 80A88A5C-80A88A68 0003A8 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,
-};
+/* 80A842C8-80A845AC 000528 02E4+00 1/1 0/0 0/0 .text create__13daNpc_myna2_cFv */
+int daNpc_myna2_c::create() {
+ fopAcM_ct(this, daNpc_myna2_c);
-/* 80A88A68-80A88A8C 0003B4 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_80A88418,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80A88410,
-};
+ mType = getTypeFromParam();
+ field_0xe0d = (fopAcM_GetParam(this) & 0xFF00) >> 8;
-/* 80A88A8C-80A88A98 0003D8 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,
-};
+ if (home.angle.x != 0xFFFF) {
+ field_0xe04 = home.angle.x;
+ } else {
+ field_0xe04 = -1;
+ }
-/* 80A88A98-80A88AA4 0003E4 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 (isDelete()) {
+ return 5;
+ }
-/* 80A88AA4-80A88AB0 0003F0 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,
-};
+ int var_r26 = 0;
+ int i;
+ for (i = 0; l_loadRes_list[mType][i] >= 0; i++) {
+ int phase = dComIfG_resLoad(&mPhase[i], l_resNames[l_loadRes_list[mType][i]]);
+ if (phase == cPhs_ERROR_e || phase == cPhs_UNK3_e) {
+ return cPhs_ERROR_e;
+ }
-/* 80A88AB0-80A88ABC 0003FC 000C+00 4/4 0/0 0/0 .data __vt__18daNpcF_ActorMngr_c */
-SECTION_DATA extern void* __vt__18daNpcF_ActorMngr_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18daNpcF_ActorMngr_cFv,
-};
+ if (phase == cPhs_COMPLEATE_e) {
+ var_r26++;
+ }
+ }
-/* 80A88ABC-80A88AC8 000408 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,
-};
+ if (var_r26 == i) {
+ static const u32 heapSize[5] = {
+ 0x0, 0x2450, 0x2440, 0x2450, 0x0,
+ };
-/* 80A88AC8-80A88AD4 000414 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 (!fopAcM_entrySolidHeap(this, createHeapCallBack, heapSize[mType])) {
+ return cPhs_ERROR_e;
+ }
-/* 80A88AD4-80A88AE0 000420 000C+00 3/3 0/0 0/0 .data __vt__15daNpcF_Lookat_c */
-SECTION_DATA extern void* __vt__15daNpcF_Lookat_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__15daNpcF_Lookat_cFv,
-};
+ J3DModelData* model_data = mpMorf->getModel()->getModelData();
+ fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
+ fopAcM_setCullSizeBox(this, -300.0f, -50.0f, -300.0f, 300.0f, 450.0f, 300.0f);
+ mSound.init(&current.pos, &eyePos, 3, 1);
-/* 80A83E8C-80A84010 0000EC 0184+00 1/1 0/0 0/0 .text __ct__13daNpc_myna2_cFv */
-daNpc_myna2_c::daNpc_myna2_c() {
- // NONMATCHING
-}
+ mAcchCir.SetWall(daNpc_myna2_Param_c::m.common.width, daNpc_myna2_Param_c::m.common.knee_length);
+ 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));
-/* 80A84010-80A84058 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ mCcStts.Init(daNpc_myna2_Param_c::m.common.weight, 0, this);
+ mCyl.Set(mCcDCyl);
+ mCyl.SetStts(&mCcStts);
+ mCyl.SetTgHitCallback(tgHitCallBack);
-/* 80A84058-80A840A0 0002B8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ mAcch.CrrPos(dComIfG_Bgsp());
+ mGndChk = mAcch.m_gnd;
+ mGroundH = mAcch.GetGroundH();
-/* 80A840A0-80A842C8 000300 0228+00 1/0 0/0 0/0 .text __dt__13daNpc_myna2_cFv */
-daNpc_myna2_c::~daNpc_myna2_c() {
- // NONMATCHING
-}
+ setEnvTevColor();
+ setRoomNo();
-/* ############################################################################################## */
-/* 80A88434-80A884A8 000000 0074+00 14/14 0/0 0/0 .rodata m__19daNpc_myna2_Param_c */
-SECTION_RODATA u8 const daNpc_myna2_Param_c::m[116] = {
- 0x42, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x44, 0x16, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x42, 0x20,
- 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, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00,
- 0x06, 0x00, 0x05, 0x00, 0x06, 0x43, 0x34, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0x96,
- 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, 0x45, 0x1C, 0x40, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88434, &daNpc_myna2_Param_c::m);
-
-/* 80A884A8-80A884BC 000074 0014+00 0/1 0/0 0/0 .rodata heapSize$4340 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const heapSize[20] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x50, 0x00, 0x00,
- 0x24, 0x40, 0x00, 0x00, 0x24, 0x50, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A884A8, &heapSize);
-#pragma pop
-
-/* 80A884BC-80A884C0 000088 0004+00 0/1 0/0 0/0 .rodata @4428 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4428 = -300.0f;
-COMPILER_STRIP_GATE(0x80A884BC, &lit_4428);
-#pragma pop
-
-/* 80A884C0-80A884C4 00008C 0004+00 0/1 0/0 0/0 .rodata @4429 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4429 = -50.0f;
-COMPILER_STRIP_GATE(0x80A884C0, &lit_4429);
-#pragma pop
-
-/* 80A884C4-80A884C8 000090 0004+00 0/1 0/0 0/0 .rodata @4430 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4430 = 300.0f;
-COMPILER_STRIP_GATE(0x80A884C4, &lit_4430);
-#pragma pop
-
-/* 80A884C8-80A884CC 000094 0004+00 0/1 0/0 0/0 .rodata @4431 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4431 = 450.0f;
-COMPILER_STRIP_GATE(0x80A884C8, &lit_4431);
-#pragma pop
+ reset();
+ Execute();
-/* 80A842C8-80A845AC 000528 02E4+00 1/1 0/0 0/0 .text create__13daNpc_myna2_cFv */
-void daNpc_myna2_c::create() {
- // NONMATCHING
-}
+ return cPhs_COMPLEATE_e;
+ }
-/* ############################################################################################## */
-/* 80A884CC-80A884D0 000098 0004+00 4/5 0/0 0/0 .rodata @4462 */
-SECTION_RODATA static f32 const lit_4462 = 1.0f;
-COMPILER_STRIP_GATE(0x80A884CC, &lit_4462);
-
-/* 80A884D0-80A884D4 00009C 0004+00 2/9 0/0 0/0 .rodata @4463 */
-SECTION_RODATA static u8 const lit_4463[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80A884D0, &lit_4463);
+ return cPhs_INIT_e;
+}
/* 80A845AC-80A846E0 00080C 0134+00 1/1 0/0 0/0 .text CreateHeap__13daNpc_myna2_cFv */
-void daNpc_myna2_c::CreateHeap() {
- // NONMATCHING
+int daNpc_myna2_c::CreateHeap() {
+ J3DModelData* mdlData_p = NULL;
+
+ if (l_bmdGetParamList[0].fileIdx >= 0) {
+ mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_resNames[l_bmdGetParamList[0].arcIdx], l_bmdGetParamList[0].fileIdx);
+ }
+
+ JUT_ASSERT(476, NULL != mdlData_p);
+
+ mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, 0x11020284);
+ if (mpMorf != NULL && mpMorf->getModel() == NULL) {
+ mpMorf->stopZelAnime();
+ mpMorf = NULL;
+ }
+
+ if (mpMorf == NULL) {
+ return 0;
+ }
+
+ mpMorf->getModel()->setUserArea((uintptr_t)this);
+
+ setMotionAnm(0, 0.0f);
+ return 1;
}
/* 80A846E0-80A84714 000940 0034+00 1/1 0/0 0/0 .text Delete__13daNpc_myna2_cFv */
-void daNpc_myna2_c::Delete() {
- // NONMATCHING
+int daNpc_myna2_c::Delete() {
+ fpc_ProcID id = fopAcM_GetID(this);
+ this->~daNpc_myna2_c();
+ return 1;
}
/* 80A84714-80A84734 000974 0020+00 2/2 0/0 0/0 .text Execute__13daNpc_myna2_cFv */
-void daNpc_myna2_c::Execute() {
- // NONMATCHING
+int daNpc_myna2_c::Execute() {
+ return execute();
}
/* 80A84734-80A847A8 000994 0074+00 1/1 0/0 0/0 .text Draw__13daNpc_myna2_cFv */
-void daNpc_myna2_c::Draw() {
- // NONMATCHING
+int daNpc_myna2_c::Draw() {
+ return draw(chkAction(&daNpc_myna2_c::test), FALSE, daNpc_myna2_Param_c::m.common.real_shadow_size, NULL, 0);
}
/* 80A847A8-80A847C8 000A08 0020+00 1/1 0/0 0/0 .text
* createHeapCallBack__13daNpc_myna2_cFP10fopAc_ac_c */
-void daNpc_myna2_c::createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+int daNpc_myna2_c::createHeapCallBack(fopAc_ac_c* actor) {
+ return ((daNpc_myna2_c*)actor)->CreateHeap();
}
/* 80A847C8-80A848B4 000A28 00EC+00 1/0 0/0 0/0 .text setParam__13daNpc_myna2_cFv */
void daNpc_myna2_c::setParam() {
- // NONMATCHING
-}
+ ActionFn action = mNextAction;
+
+ selectAction();
-/* ############################################################################################## */
-/* 80A884D4-80A884D8 0000A0 0004+00 0/1 0/0 0/0 .rodata @4577 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4577 = 3.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80A884D4, &lit_4577);
-#pragma pop
-
-/* 80A884D8-80A884DC 0000A4 0004+00 0/1 0/0 0/0 .rodata @4578 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4578 = -G_CM3D_F_INF;
-COMPILER_STRIP_GATE(0x80A884D8, &lit_4578);
-#pragma pop
+ if (mNextAction != action) {
+ for (int i = 1; i < 1; i++) {
+ mActorMgrs[i].initialize();
+ }
+ }
+
+ field_0xdf4 = 0;
+ field_0xdf8 = 0;
+
+ attention_info.distances[fopAc_attn_LOCK_e] = 0x51;
+ attention_info.distances[fopAc_attn_TALK_e] = 0x51;
+ attention_info.distances[fopAc_attn_SPEAK_e] = 0x50;
+ attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
+
+ scale.set(daNpc_myna2_Param_c::m.common.scale, daNpc_myna2_Param_c::m.common.scale, daNpc_myna2_Param_c::m.common.scale);
+ mAcchCir.SetWallR(daNpc_myna2_Param_c::m.common.width);
+ mAcchCir.SetWallH(daNpc_myna2_Param_c::m.common.knee_length);
+ gravity = daNpc_myna2_Param_c::m.common.gravity;
+}
/* 80A848B4-80A84B64 000B14 02B0+00 1/0 0/0 0/0 .text main__13daNpc_myna2_cFv */
-void daNpc_myna2_c::main() {
- // NONMATCHING
+BOOL daNpc_myna2_c::main() {
+ if (!doEvent()) {
+ doNormalAction(1);
+ }
+
+ if (checkHide()) {
+ attention_info.flags = 0;
+ }
+
+ if (!daNpc_myna2_Param_c::m.common.debug_mode_ON && (!dComIfGp_event_runCheck() || (mOrderNewEvt && dComIfGp_getEvent().isOrderOK()))) {
+ if (mOrderEvtNo != 0) {
+ eventInfo.setArchiveName(l_resNames[l_evtGetParamList[mOrderEvtNo].arcIdx]);
+ }
+
+ orderEvent(mOrderSpeakEvt, l_evtNames[l_evtGetParamList[mOrderEvtNo].fileIdx], 0xFFFF, 0x28, 0xFF, 1);
+ }
+
+ if (field_0x9ee) {
+ mMotionMorfOverride = 0.0f;
+ field_0x9ee = false;
+ }
+
+ playMotion();
+
+ if (mType == 0) {
+ return 1;
+ }
+
+ cXyz* cc_move_p = mCcStts.GetCCMoveP();
+ if (cc_move_p != NULL) {
+ *cc_move_p *= 0.15f;
+ }
+ fopAcM_posMoveF(this, cc_move_p);
+ mAcch.CrrPos(dComIfG_Bgsp());
+ mGndChk = mAcch.m_gnd;
+ mGroundH = mAcch.GetGroundH();
+
+ if (-G_CM3D_F_INF != mGroundH) {
+ field_0x998 = daNpcF_getGroundAngle(&mGndChk, mCurAngle.y);
+ setEnvTevColor();
+ setRoomNo();
+
+ mPolySound = dKy_pol_sound_get(&mAcch.m_gnd);
+ mReverb = dComIfGp_getReverb(mCcStts.GetRoomId());
+
+ if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > mGroundH) {
+ mPolySound = dKy_pol_sound_get(&mAcch.m_wtr);
+ }
+ }
+
+ return 0;
}
-/* ############################################################################################## */
-/* 80A884DC-80A884E0 0000A8 0004+00 0/1 0/0 0/0 .rodata @4644 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4644 = 30.0f;
-COMPILER_STRIP_GATE(0x80A884DC, &lit_4644);
-#pragma pop
+/* 80A84B64-80A84DAC 000DC4 0248+00 1/0 0/0 0/0 .text setAttnPos__13daNpc_myna2_cFv */
+void daNpc_myna2_c::setAttnPos() {
+ static cXyz eyeOffset(30.0f, 10.0f, 0.0f);
-/* 80A884E0-80A884E4 0000AC 0004+00 0/1 0/0 0/0 .rodata @4645 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4645 = 10.0f;
-COMPILER_STRIP_GATE(0x80A884E0, &lit_4645);
-#pragma pop
+ cXyz sp2C, sp20, sp14, sp18;
+ f32 attention_offset = daNpc_myna2_Param_c::m.common.attention_offset;
-/* 80A88B38-80A88B44 000048 000C+00 1/1 0/0 0/0 .bss @4032 */
-static u8 lit_4032[12];
+ setMtx();
-/* 80A88B44-80A88B48 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[4];
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(15));
+ mDoMtx_stack_c::multVecZero(&mHeadPos);
+ mDoMtx_stack_c::multVec(&eyeOffset, &eyePos);
+ eyeOffset.y = 0.0f;
+ mDoMtx_stack_c::multVec(&eyeOffset, &sp14);
-/* 80A88B48-80A88B58 000058 000C+04 0/1 0/0 0/0 .bss @4583 */
-#pragma push
-#pragma force_active on
-static u8 lit_4583[12 + 4 /* padding */];
-#pragma pop
+ mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &sp14);
+ mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &sp14);
-/* 80A88B58-80A88B64 000068 000C+00 0/1 0/0 0/0 .bss eyeOffset$4582 */
-#pragma push
-#pragma force_active on
-static u8 eyeOffset[12];
-#pragma pop
+ f32 var_f30 = 0.0f;
+ f32 var_f29 = 0.0f;
-/* 80A84B64-80A84DAC 000DC4 0248+00 1/0 0/0 0/0 .text setAttnPos__13daNpc_myna2_cFv */
-void daNpc_myna2_c::setAttnPos() {
- // NONMATCHING
+ sp20.set(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(mCurAngle.x, mCurAngle.y, mCurAngle.z);
+ mDoMtx_stack_c::multVec(&sp20, &sp2C);
+
+ attention_info.position.set(sp2C.x, sp2C.y + attention_offset, sp2C.z);
+
+ if (!mHide && !mTwilight) {
+ if (!mIsDamaged) {
+ mCyl.SetTgType(0xD8FBFDFF);
+ mCyl.SetTgSPrm(0x1F);
+ mCyl.OnTgNoHitMark();
+ } else {
+ mCyl.SetTgType(0);
+ mCyl.SetTgSPrm(0);
+ }
+
+ mCyl.SetC(sp2C);
+ mCyl.SetH(daNpc_myna2_Param_c::m.common.height + var_f30);
+ mCyl.SetR(daNpc_myna2_Param_c::m.common.width + var_f29);
+ dComIfG_Ccsp()->Set(&mCyl);
+ }
+
+ mCyl.ClrTgHit();
}
/* 80A84DAC-80A84EAC 00100C 0100+00 1/0 0/0 0/0 .text setExpressionBtp__13daNpc_myna2_cFi
*/
-void daNpc_myna2_c::setExpressionBtp(int param_0) {
- // NONMATCHING
+bool daNpc_myna2_c::setExpressionBtp(int i_index) {
+ J3DAnmTexPattern* btp_p = NULL;
+ int mode = 0;
+
+ mAnmFlags &= ~0xA80;
+ if (l_btpGetParamList[i_index].fileIdx >= 0) {
+ btp_p = getTexPtrnAnmP(l_resNames[l_btpGetParamList[i_index].arcIdx], l_btpGetParamList[i_index].fileIdx);
+ }
+
+ switch (i_index) {
+ case 0:
+ mode = 2;
+ break;
+ default:
+ btp_p = NULL;
+ }
+
+ if (btp_p == NULL) {
+ return 1;
+ }
+
+ if (setBtpAnm(btp_p, mpMorf->getModel()->getModelData(), 1.0f, mode)) {
+ mAnmFlags |= 0x280;
+ if (i_index == 0) {
+ mAnmFlags |= 0x800;
+ }
+ return 1;
+ }
+
+ OS_REPORT("%s: 表情Btpアニメーションの登録に失敗しました!\n", __FILE__);
+ return 0;
}
/* 80A84EAC-80A84FEC 00110C 0140+00 1/0 0/0 0/0 .text setMotionAnm__13daNpc_myna2_cFif */
-bool daNpc_myna2_c::setMotionAnm(int param_0, f32 param_1) {
- // NONMATCHING
+void daNpc_myna2_c::setMotionAnm(int i_index, f32 i_morf) {
+ J3DAnmTransformKey* bck_p = NULL;
+ int i_attr = J3DFrameCtrl::EMode_LOOP;
+ mAnmFlags &= ~ANM_MOTION_FLAGS;
+
+ if (l_bckGetParamList[i_index].fileIdx >= 0) {
+ bck_p = getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[i_index].arcIdx], l_bckGetParamList[i_index].fileIdx);
+ }
+
+ setExpressionBtp(0);
+
+ switch (i_index) {
+ case 0:
+ case 6:
+ case 7:
+ case 12:
+ case 13:
+ case 14:
+ break;
+ case 1:
+ case 2:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ i_attr = 0;
+ break;
+ default:
+ bck_p = NULL;
+ }
+
+ if (bck_p != NULL && setMcaMorfAnm(bck_p, 1.0f, i_morf, i_attr, 0, -1)) {
+ mAnmFlags |= ANM_PLAY_MORF | ANM_PAUSE_MORF;
+ mMotionLoops = 0;
+ }
}
/* 80A84FEC-80A85030 00124C 0044+00 1/0 0/0 0/0 .text setMotion__13daNpc_myna2_cFifi */
-void daNpc_myna2_c::setMotion(int param_0, f32 param_1, int param_2) {
- // NONMATCHING
+void daNpc_myna2_c::setMotion(int i_motion, f32 i_morf, int param_2) {
+ s16 motion = i_motion;
+
+ if ((param_2 != 0 || mMotion != motion) && i_motion >= 0 && i_motion < 8) {
+ mMotion = motion;
+ mMotionMorfOverride = i_morf;
+ mMotionPrevPhase = -1;
+ mMotionPhase = 0;
+ }
}
/* 80A85030-80A85038 001290 0008+00 1/0 0/0 0/0 .text drawDbgInfo__13daNpc_myna2_cFv */
-bool daNpc_myna2_c::drawDbgInfo() {
- return false;
+BOOL daNpc_myna2_c::drawDbgInfo() {
+ return FALSE;
}
/* 80A85038-80A8503C 001298 0004+00 1/0 0/0 0/0 .text drawOtherMdls__13daNpc_myna2_cFv */
-void daNpc_myna2_c::drawOtherMdls() {
- /* empty function */
-}
+void daNpc_myna2_c::drawOtherMdls() {}
/* 80A8503C-80A85094 00129C 0058+00 1/1 0/0 0/0 .text getTypeFromParam__13daNpc_myna2_cFv
*/
-void daNpc_myna2_c::getTypeFromParam() {
- // NONMATCHING
+u8 daNpc_myna2_c::getTypeFromParam() {
+ switch (fopAcM_GetParam(this) & 0xFF) {
+ case 0:
+ return 0;
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 3:
+ return 3;
+ default:
+ return 4;
+ }
}
-/* ############################################################################################## */
-/* 80A88654-80A88654 000220 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80A886A8 = "F_SP115";
-#pragma pop
-
/* 80A85094-80A85160 0012F4 00CC+00 1/1 0/0 0/0 .text isDelete__13daNpc_myna2_cFv */
-void daNpc_myna2_c::isDelete() {
- // NONMATCHING
-}
+int daNpc_myna2_c::isDelete() {
+ if (mType == 4 || mType == 0 || mType == 1) {
+ return FALSE;
+ }
-/* ############################################################################################## */
-/* 80A884E4-80A884E8 0000B0 0004+00 0/1 0/0 0/0 .rodata @4806 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4806 = 3000.0f;
-COMPILER_STRIP_GATE(0x80A884E4, &lit_4806);
-#pragma pop
-
-/* 80A884E8-80A884EC 0000B4 0004+00 0/1 0/0 0/0 .rodata @4807 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4807 = 2000.0f;
-COMPILER_STRIP_GATE(0x80A884E8, &lit_4807);
-#pragma pop
-
-/* 80A884EC-80A884F0 0000B8 0004+00 0/2 0/0 0/0 .rodata @4808 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4808 = 50.0f;
-COMPILER_STRIP_GATE(0x80A884EC, &lit_4808);
-#pragma pop
+ if (mType == 2) {
+ if (strcmp(dComIfGp_getStartStageName(), "F_SP115") == 0 && fopAcM_GetRoomNo(this) == 0 && dComIfGs_getStartPoint() == 20) {
+ return FALSE;
+ }
+ } else if (mType == 3) {
+ if (daPy_py_c::checkWolfCargoCarrySceneChange()) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
/* 80A85160-80A85358 0013C0 01F8+00 1/1 0/0 0/0 .text reset__13daNpc_myna2_cFv */
void daNpc_myna2_c::reset() {
- // NONMATCHING
-}
+ initialize();
+ mLookat.initialize();
-/* ############################################################################################## */
-/* 80A884F0-80A884FC 0000BC 000C+00 0/1 0/0 0/0 .rodata @4812 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4812[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A884F0, &lit_4812);
-#pragma pop
-
-/* 80A884FC-80A88500 0000C8 0004+00 0/1 0/0 0/0 .rodata @4813 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4813[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80A884FC, &lit_4813);
-#pragma pop
-
-/* 80A88500-80A8850C 0000CC 000C+00 0/1 0/0 0/0 .rodata @4814 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4814[12] = {
- 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88500, &lit_4814);
-#pragma pop
-
-/* 80A8850C-80A88510 0000D8 0004+00 0/1 0/0 0/0 .rodata @4815 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4815[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80A8850C, &lit_4815);
-#pragma pop
-
-/* 80A88510-80A8851C 0000DC 000C+00 0/1 0/0 0/0 .rodata @4816 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4816[12] = {
- 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88510, &lit_4816);
-#pragma pop
-
-/* 80A8851C-80A88520 0000E8 0004+00 0/1 0/0 0/0 .rodata @4817 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4817[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80A8851C, &lit_4817);
-#pragma pop
-
-/* 80A88520-80A8852C 0000EC 000C+00 0/1 0/0 0/0 .rodata @4818 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4818[12] = {
- 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x80A88520, &lit_4818);
-#pragma pop
-
-/* 80A8852C-80A88538 0000F8 000C+00 0/1 0/0 0/0 .rodata @4819 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4819[12] = {
- 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A8852C, &lit_4819);
-#pragma pop
-
-/* 80A88538-80A88540 000104 0008+00 0/1 0/0 0/0 .rodata @4820 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4820[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88538, &lit_4820);
-#pragma pop
-
-/* 80A88540-80A8854C 00010C 000C+00 0/1 0/0 0/0 .rodata @4821 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4821[12] = {
- 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x80A88540, &lit_4821);
-#pragma pop
-
-/* 80A8854C-80A88558 000118 000C+00 0/1 0/0 0/0 .rodata @4822 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4822[12] = {
- 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A8854C, &lit_4822);
-#pragma pop
-
-/* 80A88558-80A88560 000124 0008+00 0/1 0/0 0/0 .rodata @4823 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4823[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88558, &lit_4823);
-#pragma pop
-
-/* 80A88560-80A8856C 00012C 000C+00 0/1 0/0 0/0 .rodata @4824 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4824[12] = {
- 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x80A88560, &lit_4824);
-#pragma pop
-
-/* 80A8856C-80A88578 000138 000C+00 0/1 0/0 0/0 .rodata @4825 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4825[12] = {
- 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A8856C, &lit_4825);
-#pragma pop
-
-/* 80A88578-80A88580 000144 0008+00 0/1 0/0 0/0 .rodata @4826 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4826[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88578, &lit_4826);
-#pragma pop
-
-/* 80A88580-80A8858C 00014C 000C+00 0/1 0/0 0/0 .rodata @4827 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4827[12] = {
- 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88580, &lit_4827);
-#pragma pop
-
-/* 80A8858C-80A88590 000158 0004+00 0/1 0/0 0/0 .rodata @4828 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4828[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80A8858C, &lit_4828);
-#pragma pop
-
-/* 80A88590-80A8859C 00015C 000C+00 0/1 0/0 0/0 .rodata @4829 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4829[12] = {
- 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A88590, &lit_4829);
-#pragma pop
-
-/* 80A8859C-80A885A0 000168 0004+00 0/1 0/0 0/0 .rodata @4830 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4830[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80A8859C, &lit_4830);
-#pragma pop
+ for (int i = 0; i < 1; i++) {
+ mActorMgrs[i].initialize();
+ }
+
+ mNextAction = NULL;
+ mAction = NULL;
+
+ field_0xdf4 = 0;
+ field_0xdf8 = 0;
+ field_0xdfc = 0;
+ field_0xe00 = 0;
+ mLookMode = -1;
+ mMode = 0;
+ mItemPid = fpcM_ERROR_PROCESS_ID_e;
+
+ current.pos = home.pos;
+ old.pos = current.pos;
+
+ current.angle.set(0, home.angle.y, 0);
+ old.angle = current.angle;
+ shape_angle = current.angle;
+ mCurAngle = current.angle;
+ mOldAngle = mCurAngle;
+
+ speedF = 0.0f;
+ speed.setall(0.0f);
+
+ if (mType == 1) {
+ current.pos.y += 3000.0f;
+ } else if (mType == 2 || mType == 3) {
+ current.pos.y += 2000.0f;
+ }
+
+ field_0xe10.set(0.0f, 0.0f, 0.0f);
+ field_0xe1c.set(0.0f, 0.0f, 0.0f);
+ field_0xe28 = 50;
+ field_0xe30 = 50.0f;
+
+ if (mType == 1) {
+ daNpcF_offTmpBit(0x4A);
+ } else if (mType == 3) {
+ daNpcF_offTmpBit(0x4B);
+ }
+
+ field_0x9ee = true;
+}
/* 80A85358-80A855E8 0015B8 0290+00 1/1 0/0 0/0 .text playMotion__13daNpc_myna2_cFv */
void daNpc_myna2_c::playMotion() {
- // NONMATCHING
+ daNpcF_anmPlayData dat0 = {0, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat0[] = {&dat0};
+
+ daNpcF_anmPlayData dat1 = {12, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat1[] = {&dat1};
+
+ daNpcF_anmPlayData dat2a = {13, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat2[] = {&dat2a};
+
+ daNpcF_anmPlayData dat3a = {9, daNpc_myna2_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3b = {12, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat3[] = {&dat3a, &dat3b};
+
+ daNpcF_anmPlayData dat4a = {10, daNpc_myna2_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat4b = {13, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat4[] = {&dat4a, &dat4b};
+
+ daNpcF_anmPlayData dat5a = {11, daNpc_myna2_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat5b = {14, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat5[] = {&dat5a, &dat5b};
+
+ daNpcF_anmPlayData dat6 = {14, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat6[] = {&dat6};
+
+ daNpcF_anmPlayData dat7 = {7, daNpc_myna2_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat7[] = {&dat7};
+
+ daNpcF_anmPlayData** ppDat[8] = {
+ pDat0,
+ pDat1,
+ pDat2,
+ pDat3,
+ pDat4,
+ pDat5,
+ pDat6,
+ pDat7,
+ };
+
+ if (mMotion >= 0 && mMotion < 8) {
+ playMotionAnm(ppDat);
+ }
}
/* 80A855E8-80A85614 001848 002C+00 2/2 0/0 0/0 .text
* chkAction__13daNpc_myna2_cFM13daNpc_myna2_cFPCvPvPv_i */
-void daNpc_myna2_c::chkAction(int (daNpc_myna2_c::*param_0)(void*)) {
- // NONMATCHING
+int daNpc_myna2_c::chkAction(int (daNpc_myna2_c::*i_action)(void*)) {
+ return mAction == i_action;
}
/* 80A85614-80A856BC 001874 00A8+00 2/2 0/0 0/0 .text
* setAction__13daNpc_myna2_cFM13daNpc_myna2_cFPCvPvPv_i */
-void daNpc_myna2_c::setAction(int (daNpc_myna2_c::*param_0)(void*)) {
- // NONMATCHING
+int daNpc_myna2_c::setAction(int (daNpc_myna2_c::*i_action)(void*)) {
+ mMode = 3;
+
+ if (mAction) {
+ (this->*mAction)(NULL);
+ }
+
+ mMode = 0;
+ mAction = i_action;
+
+ if (mAction) {
+ (this->*mAction)(NULL);
+ }
+
+ return TRUE;
}
/* 80A856BC-80A857B0 00191C 00F4+00 1/1 0/0 0/0 .text selectAction__13daNpc_myna2_cFv */
-void daNpc_myna2_c::selectAction() {
- // NONMATCHING
+int daNpc_myna2_c::selectAction() {
+ mNextAction = NULL;
+
+ if (daNpc_myna2_Param_c::m.common.debug_mode_ON) {
+ mNextAction = &daNpc_myna2_c::test;
+ } else {
+ switch (mType) {
+ case 1:
+ mNextAction = &daNpc_myna2_c::waitHovering;
+ break;
+ case 2:
+ mNextAction = &daNpc_myna2_c::waitFailure;
+ break;
+ case 3:
+ mNextAction = &daNpc_myna2_c::waitGoal;
+ break;
+ default:
+ mNextAction = &daNpc_myna2_c::wait;
+ break;
+ }
+ }
+
+ return TRUE;
}
/* 80A857B0-80A85894 001A10 00E4+00 1/1 0/0 0/0 .text doNormalAction__13daNpc_myna2_cFi
*/
void daNpc_myna2_c::doNormalAction(int param_0) {
- // NONMATCHING
+ if (param_0 != 0 && hitChk2(&mCyl, TRUE, FALSE)) {
+ int damage_time;
+ if (mCutType == daPy_py_c::CUT_TYPE_TURN_RIGHT) {
+ damage_time = 20;
+ } else {
+ damage_time = daNpc_myna2_Param_c::m.common.damage_time;
+ }
+
+ setLookMode(LOOK_RESET);
+ } else if (mIsDamaged && mDamageTimer == 0) {
+ mMode = 0;
+ mIsDamaged = false;
+ }
+
+ mOrderEvtNo = 0;
+
+ if (mNextAction) {
+ if (mAction == mNextAction) {
+ (this->*mAction)(NULL);
+ } else {
+ setAction(mNextAction);
+ }
+ }
}
-/* ############################################################################################## */
-/* 80A885A0-80A885C0 00016C 0020+00 0/0 0/0 0/0 .rodata @4831 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4831[32] = {
- 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,
-};
-COMPILER_STRIP_GATE(0x80A885A0, &lit_4831);
-#pragma pop
-
-/* 80A885C0-80A885C4 00018C 0004+00 4/6 0/0 0/0 .rodata @4982 */
-SECTION_RODATA static f32 const lit_4982 = -1.0f;
-COMPILER_STRIP_GATE(0x80A885C0, &lit_4982);
-
/* 80A85894-80A85BA4 001AF4 0310+00 1/1 0/0 0/0 .text doEvent__13daNpc_myna2_cFv */
-void daNpc_myna2_c::doEvent() {
- // NONMATCHING
+BOOL daNpc_myna2_c::doEvent() {
+ BOOL rv = FALSE;
+
+ if (dComIfGp_event_runCheck() != FALSE) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+
+ if (eventInfo.checkCommandTalk() || eventInfo.checkCommandDemoAccrpt()) {
+ mOrderNewEvt = false;
+ }
+
+ if (eventInfo.checkCommandTalk()) {
+ if (chkAction(&daNpc_myna2_c::talk)) {
+ (this->*mAction)(NULL);
+ } else if (dComIfGp_event_chkTalkXY() == FALSE || dComIfGp_evmng_ChkPresentEnd()) {
+ setAction(&daNpc_myna2_c::talk);
+ }
+
+ rv = TRUE;
+ } else {
+ if (mItemPid != fpcM_ERROR_PROCESS_ID_e) {
+ dComIfGp_event_setItemPartnerId(mItemPid);
+ mItemPid = fpcM_ERROR_PROCESS_ID_e;
+ }
+
+ int staffId = eventManager.getMyStaffId(l_myName, NULL, 0);
+ if (staffId != -1) {
+ mStaffID = staffId;
+
+ int evtCutNo = eventManager.getMyActIdx(staffId, mEvtCutNameList, 5, FALSE, FALSE);
+
+ JUT_ASSERT(1540, (0 <= evtCutNo) && (evtCutNo < NUM_EVT_CUTS_e));
+ JUT_ASSERT(1541, NULL != mEvtCutList[evtCutNo]);
+
+ if ((this->*mEvtCutList[evtCutNo])(staffId)) {
+ eventManager.cutEnd(staffId);
+ }
+
+ rv = TRUE;
+ }
+
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx)) {
+ switch (mOrderEvtNo) {
+ case 2:
+ dComIfGp_event_reset();
+ mOrderEvtNo = 0;
+ mEventIdx = -1;
+ dComIfGs_offSwitch(field_0xe0d, fopAcM_GetRoomNo(this));
+ fopAcM_delete(this);
+ break;
+ case 3:
+ case 4:
+ dComIfGp_event_reset();
+ mOrderEvtNo = 0;
+ mEventIdx = -1;
+ fopAcM_delete(this);
+ break;
+ default:
+ dComIfGp_event_reset();
+ mOrderEvtNo = 0;
+ mEventIdx = -1;
+ break;
+ }
+ }
+ }
+
+ int i_expression, i_motion;
+ if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) && !field_0x9eb) {
+ setMotion(i_motion, -1.0f, 0);
+ }
+ } else {
+ mMsgTimer = 0;
+
+ if (mStaffID != -1) {
+ mAction = NULL;
+ mStaffID = -1;
+ }
+ }
+
+ return rv;
}
/* 80A85BA4-80A85BC8 001E04 0024+00 7/7 0/0 0/0 .text setLookMode__13daNpc_myna2_cFi */
-void daNpc_myna2_c::setLookMode(int param_0) {
- // NONMATCHING
+void daNpc_myna2_c::setLookMode(int i_lookMode) {
+ if (i_lookMode >= 0 && i_lookMode < 4 && i_lookMode != mLookMode) {
+ mLookMode = i_lookMode;
+ }
}
/* 80A85BC8-80A85C60 001E28 0098+00 1/0 0/0 0/0 .text wait__13daNpc_myna2_cFPv */
-void daNpc_myna2_c::wait(void* param_0) {
- // NONMATCHING
+int daNpc_myna2_c::wait(void* param_0) {
+ switch (mMode) {
+ case 0:
+ setMotion(0, -1.0f, 0);
+ setLookMode(LOOK_NONE);
+ mTurnMode = 0;
+ mMode = 2;
+ /* fallthrough */
+ case 2:
+ fopAcM_delete(this);
+ return 1;
+ case 3:
+ break;
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80A885C4-80A885CC 000190 0008+00 0/2 0/0 0/0 .rodata @5186 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5186[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A885C4, &lit_5186);
-#pragma pop
-
-/* 80A885CC-80A885D4 000198 0008+00 0/2 0/0 0/0 .rodata @5187 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5187[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A885CC, &lit_5187);
-#pragma pop
-
-/* 80A885D4-80A885DC 0001A0 0008+00 0/2 0/0 0/0 .rodata @5188 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5188[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80A885D4, &lit_5188);
-#pragma pop
-
-/* 80A885DC-80A885E0 0001A8 0004+00 0/2 0/0 0/0 .rodata @5189 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5189 = 100.0f;
-COMPILER_STRIP_GATE(0x80A885DC, &lit_5189);
-#pragma pop
-
/* 80A85C60-80A8613C 001EC0 04DC+00 1/0 0/0 0/0 .text waitHovering__13daNpc_myna2_cFPv */
-void daNpc_myna2_c::waitHovering(void* param_0) {
- // NONMATCHING
+int daNpc_myna2_c::waitHovering(void* param_0) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz sp2C(player->current.pos);
+
+ switch (mMode) {
+ case 0:
+ setMotion(7, -1.0f, 0);
+ setLookMode(LOOK_NONE);
+ mTurnMode = 0;
+ field_0x9ea = 1;
+ mMode = 2;
+ /* fallthrough */
+ case 2: {
+ mSound.playSumomoBgm((sp2C - current.pos).abs());
+ calcHovering(0, 0);
+
+ if ((sp2C - current.pos).absXZ() >= daNpc_myna2_Param_c::m.field_0x70 && fopAcM_CheckCondition(this, 4)) {
+ dComIfGs_offSwitch(field_0xe0d, fopAcM_GetRoomNo(this));
+ daNpcF_offTmpBit(0x4A);
+ fopAcM_delete(this);
+ return 1;
+ }
+
+ if (!daNpcF_chkEvtBit(0x11D) && daPy_py_c::checkNowWolf()) {
+ if (((sp2C - current.pos).absXZ() <= daNpc_myna2_Param_c::m.field_0x6c && (home.pos.y - sp2C.y) < 100.0f) && !player->checkPlayerFly() && daPy_getPlayerActorClass()->checkSwimUp()) {
+ mOrderEvtNo = 1;
+ }
+ }
+ break;
+ }
+ case 3:
+ break;
+ }
+
+ return 1;
}
/* 80A8613C-80A86194 00239C 0058+00 1/1 0/0 0/0 .text s_sub__FPvPv */
-static void s_sub(void* param_0, void* param_1) {
- // NONMATCHING
+static void* s_sub(void* i_actor, void* i_data) {
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_MYNA2 && ((daNpc_myna2_c*)i_actor)->getType() == 1) {
+ return i_actor;
+ }
+
+ return NULL;
}
/* 80A86194-80A862BC 0023F4 0128+00 1/0 0/0 0/0 .text waitFailure__13daNpc_myna2_cFPv */
-void daNpc_myna2_c::waitFailure(void* param_0) {
- // NONMATCHING
+int daNpc_myna2_c::waitFailure(void* param_0) {
+ switch (mMode) {
+ case 0:
+ setMotion(7, -1.0f, 0);
+ setLookMode(LOOK_NONE);
+ mTurnMode = 0;
+ mMode = 2;
+ break;
+ case 2: {
+ mSound.playSumomoBgm(0);
+
+ if (!dComIfGs_isSwitch(field_0xe0d, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(field_0xe0d, fopAcM_GetRoomNo(this));
+ }
+
+ daNpc_myna2_c* myna = (daNpc_myna2_c*)fpcM_Search(s_sub, this);
+ if (myna != NULL) {
+ fopAcM_delete(myna);
+ }
+
+ if (dComIfGp_getEvent().isOrderOK()) {
+ mOrderEvtNo = 2;
+ mOrderNewEvt = 1;
+ }
+ break;
+ }
+ case 3:
+ break;
+ }
+
+ return 1;
}
/* 80A862BC-80A86400 00251C 0144+00 1/0 0/0 0/0 .text waitGoal__13daNpc_myna2_cFPv */
-void daNpc_myna2_c::waitGoal(void* param_0) {
- // NONMATCHING
+int daNpc_myna2_c::waitGoal(void* param_0) {
+ switch (mMode) {
+ case 0:
+ setMotion(7, -1.0f, 0);
+ setLookMode(0);
+ mTurnMode = 0;
+ mMode = 2;
+ break;
+ case 2:
+ mSound.playSumomoBgm(0);
+
+ if (!daPy_getPlayerActorClass()->checkCargoCarry() && dComIfGp_getEvent().isOrderOK()) {
+ if (dComIfGp_getMessageCountNumber() >= 10000 && (!daNpcF_chkEvtBit(0x11E) || dComIfGp_getMessageCountNumber() > dComIfGs_getBalloonScore() || (dComIfGp_getMessageCountNumber() >= 0xF00E))) {
+ mOrderEvtNo = 4;
+ } else {
+ mOrderEvtNo = 3;
+ }
+
+ mOrderNewEvt = 1;
+ }
+ break;
+ case 3:
+ break;
+ }
+
+ return 1;
}
/* 80A86400-80A865FC 002660 01FC+00 2/0 0/0 0/0 .text talk__13daNpc_myna2_cFPv */
-void daNpc_myna2_c::talk(void* param_0) {
- // NONMATCHING
+int daNpc_myna2_c::talk(void* param_0) {
+ int var_r30 = 0;
+ int var_r29 = 0;
+
+ switch (mMode) {
+ case 0:
+ if (!mIsDamaged) {
+ initTalk(field_0xe04, NULL);
+ mTurnMode = 0;
+ mpMorf->setPlaySpeed(1.0f);
+ mMode = 2;
+ case 2:
+ mSound.playSumomoBgm(0);
+
+ if (field_0x9ea != 0) {
+ var_r29 = 1;
+ if (mType != 0) {
+ cLib_addCalcAngleS2(&current.angle.z, 0, 0x10, 0x200);
+ cLib_addCalcAngleS2(&current.angle.x, 0, 0x10, 0x200);
+ shape_angle = mCurAngle = current.angle;
+ calcHovering(0, 1);
+ }
+ } else {
+ setLookMode(LOOK_PLAYER_TALK);
+ mActorMgrs[0].entry(daPy_getPlayerActorClass());
+
+ if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) {
+ var_r29 = 1;
+ } else if (step(fopAcM_searchPlayerAngleY(this), -1, -1, 0xF)) {
+ mTurnMode = 0;
+ }
+ }
+
+ if (var_r29 && talkProc(NULL, 1, NULL)) {
+ var_r30 = 1;
+ }
+
+ if (var_r30 != 0) {
+ mMode = 3;
+ if (field_0x9ec == 0) {
+ dComIfGp_event_reset();
+ }
+ field_0x9ec = 0;
+ }
+ }
+ break;
+ case 3:
+ break;
+ }
+
+ return var_r30;
}
/* 80A865FC-80A866B0 00285C 00B4+00 2/0 0/0 0/0 .text test__13daNpc_myna2_cFPv */
-void daNpc_myna2_c::test(void* param_0) {
- // NONMATCHING
+int daNpc_myna2_c::test(void* param_0) {
+ switch (mMode) {
+ case 0:
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ mMode = 2;
+ /* fallthrough */
+ case 2:
+ setMotion(daNpc_myna2_Param_c::m.common.motion, daNpc_myna2_Param_c::m.common.morf_frame, 0);
+ setLookMode(daNpc_myna2_Param_c::m.common.look_mode);
+ mOrderEvtNo = 0;
+ attention_info.flags = 0;
+ break;
+ case 3:
+ break;
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80A885E0-80A885E4 0001AC 0004+00 1/2 0/0 0/0 .rodata @5358 */
-SECTION_RODATA static f32 const lit_5358 = 160.0f;
-COMPILER_STRIP_GATE(0x80A885E0, &lit_5358);
-
-/* 80A88654-80A88654 000220 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80A886B0 = "prm";
-#pragma pop
-
/* 80A866B0-80A8684C 002910 019C+00 1/0 0/0 0/0 .text ECut_firstTalk__13daNpc_myna2_cFi
*/
-void daNpc_myna2_c::ECut_firstTalk(int param_0) {
- // NONMATCHING
+int daNpc_myna2_c::ECut_firstTalk(int i_staffId) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ int rt = 0;
+ int prm = -1;
+
+ mSound.playSumomoBgm(0);
+
+ int* idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "prm");
+ if (idata != NULL) {
+ prm = *idata;
+ }
+
+ if (eventManager.getIsAddvance(i_staffId)) {
+ switch (prm) {
+ case 0:
+ daPy_getPlayerActorClass()->changeDemoMoveAngle(fopAcM_searchPlayerAngleY(this) + 0x8000);
+ break;
+ case 10:
+ break;
+ case 20:
+ initTalk(field_0xe04, NULL);
+ break;
+ }
+ }
+
+ switch (prm) {
+ case 0:
+ rt = 1;
+ calcHovering(0, 1);
+ break;
+ case 10:
+ calcHovering(0, 1);
+
+ if (current.pos.y <= 160.0f + home.pos.y) {
+ rt = 1;
+ }
+ break;
+ case 20:
+ calcHovering(0, 1);
+ if (talkProc(NULL, 1, NULL)) {
+ rt = 1;
+ }
+ break;
+ default:
+ rt = 1;
+ break;
+ }
+
+ return rt;
}
-/* ############################################################################################## */
-/* 80A885E4-80A885E8 0001B0 0004+00 0/3 0/0 0/0 .rodata @5391 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5391 = 500.0f;
-COMPILER_STRIP_GATE(0x80A885E4, &lit_5391);
-#pragma pop
-
/* 80A8684C-80A86A0C 002AAC 01C0+00 1/0 0/0 0/0 .text ECut_gameFailure__13daNpc_myna2_cFi
*/
-void daNpc_myna2_c::ECut_gameFailure(int param_0) {
- // NONMATCHING
+int daNpc_myna2_c::ECut_gameFailure(int i_staffId) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ int rt = 0;
+ int prm = -1;
+
+ mSound.playSumomoBgm(0);
+
+ int* idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "prm");
+ if (idata != NULL) {
+ prm = *idata;
+ }
+
+ if (eventManager.getIsAddvance(i_staffId)) {
+ switch (prm) {
+ case 0:
+ case 20:
+ break;
+ case 10:
+ initTalk(field_0xe04, NULL);
+ break;
+ }
+ }
+
+ switch (prm) {
+ case 0:
+ calcHovering(0, 1);
+ if (current.pos.y <= 160.0f + home.pos.y) {
+ rt = 1;
+ }
+ break;
+ case 10:
+ calcHovering(0, 1);
+ if (talkProc(NULL, 1, NULL)) {
+ if (mFlow.getChoiceNo() == 0) {
+ dStage_changeScene(6, 0.0f, 10, fopAcM_GetRoomNo(this), 0, -1);
+ } else {
+ rt = 1;
+ }
+ }
+ break;
+ case 20:
+ if (current.pos.y > 500.0f + home.pos.y) {
+ rt = 1;
+ }
+ calcHovering(1, 0);
+ break;
+ default:
+ rt = 1;
+ break;
+ }
+
+ return rt;
}
-/* ############################################################################################## */
-/* 80A885E8-80A885EC 0001B4 0004+00 0/1 0/0 0/0 .rodata @5440 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5440 = 150.0f;
-COMPILER_STRIP_GATE(0x80A885E8, &lit_5440);
-#pragma pop
-
/* 80A86A0C-80A86BEC 002C6C 01E0+00 1/0 0/0 0/0 .text ECut_gameGoal__13daNpc_myna2_cFi */
-void daNpc_myna2_c::ECut_gameGoal(int param_0) {
- // NONMATCHING
+int daNpc_myna2_c::ECut_gameGoal(int i_staffId) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ int rt = 0;
+ int prm = -1;
+
+ mSound.playSumomoBgm(0);
+
+ int* idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "prm");
+ if (idata != NULL) {
+ prm = *idata;
+ }
+
+ if (eventManager.getIsAddvance(i_staffId)) {
+ switch (prm) {
+ case 0:
+ if (dComIfGp_getMessageCountNumber() > dComIfGs_getBalloonScore()) {
+ dComIfGs_setBalloonScore(dComIfGp_getMessageCountNumber());
+ }
+ break;
+ case 10:
+ initTalk(field_0xe04, NULL);
+ break;
+ case 20:
+ break;
+ }
+ }
+
+ switch (prm) {
+ case 0:
+ calcHovering(0, 1);
+ if (current.pos.y <= 150.0f + home.pos.y) {
+ rt = 1;
+ }
+ break;
+ case 10:
+ calcHovering(0, 1);
+ if (talkProc(NULL, 1, NULL)) {
+ if (mFlow.getChoiceNo() == 0) {
+ dStage_changeScene(11, 0.0f, 10, fopAcM_GetRoomNo(this), 0, -1);
+ } else {
+ rt = 1;
+ }
+ }
+ break;
+ case 20:
+ if (current.pos.y > 500.0f + home.pos.y) {
+ rt = 1;
+ }
+ calcHovering(1, 0);
+ break;
+ default:
+ rt = 1;
+ break;
+ }
+
+ return rt;
}
/* 80A86BEC-80A86E8C 002E4C 02A0+00 3/0 0/0 0/0 .text ECut_gameGoalSuccess__13daNpc_myna2_cFi */
-void daNpc_myna2_c::ECut_gameGoalSuccess(int param_0) {
- // NONMATCHING
+int daNpc_myna2_c::ECut_gameGoalSuccess(int i_staffId) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ int rt = 0;
+ int prm = -1;
+
+ mSound.playSumomoBgm(0);
+
+ int* idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "prm");
+ if (idata != NULL) {
+ prm = *idata;
+ }
+
+ if (eventManager.getIsAddvance(i_staffId)) {
+ switch (prm) {
+ case 0:
+ daNpcF_offTmpBit(0xF);
+ if (dComIfGp_getMessageCountNumber() > dComIfGs_getBalloonScore()) {
+ dComIfGs_setBalloonScore(dComIfGp_getMessageCountNumber());
+ daNpcF_onTmpBit(0x4B);
+ }
+ break;
+ case 10:
+ initTalk(field_0xe04, NULL);
+ break;
+ case 20: {
+ int itemNo = 0;
+ if (mFlow.getEventId(&itemNo) == 1) {
+ mItemPid = fopAcM_createItemForPresentDemo(&current.pos, itemNo, 0, -1, -1, NULL, NULL);
+ }
+ break;
+ }
+ case 25:
+ initTalk(field_0xe04, NULL);
+ break;
+ case 30:
+ break;
+ default:
+ break;
+ }
+ }
+
+ switch (prm) {
+ case 0:
+ calcHovering(0, 1);
+ if (current.pos.y <= 150.0f + home.pos.y) {
+ rt = 1;
+ }
+ break;
+ case 10:
+ calcHovering(0, 1);
+ if (talkProc(NULL, 1, NULL)) {
+ rt = 1;
+ }
+ break;
+ case 20:
+ field_0x9eb = 1;
+ calcHovering(0, 1);
+ rt = 1;
+ break;
+ case 25:
+ calcHovering(0, 1);
+ if (talkProc(NULL, 1, NULL)) {
+ if (mFlow.getChoiceNo() == 0) {
+ dStage_changeScene(11, 0.0f, 10, fopAcM_GetRoomNo(this), 0, -1);
+ } else {
+ rt = 1;
+ }
+ }
+ break;
+ case 30:
+ field_0x9eb = 1;
+ if (current.pos.y > 500.0f + home.pos.y) {
+ rt = 1;
+ }
+ calcHovering(1, 0);
+ break;
+ default:
+ rt = 1;
+ break;
+ }
+
+ return rt;
}
-/* ############################################################################################## */
-/* 80A885EC-80A885F0 0001B8 0004+00 0/1 0/0 0/0 .rodata @5799 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5799 = 5.0f;
-COMPILER_STRIP_GATE(0x80A885EC, &lit_5799);
-#pragma pop
-
-/* 80A885F0-80A885F4 0001BC 0004+00 0/1 0/0 0/0 .rodata @5800 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5800 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80A885F0, &lit_5800);
-#pragma pop
-
-/* 80A885F4-80A885F8 0001C0 0004+00 0/1 0/0 0/0 .rodata @5801 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5801 = 1.5f;
-COMPILER_STRIP_GATE(0x80A885F4, &lit_5801);
-#pragma pop
-
-/* 80A885F8-80A885FC 0001C4 0004+00 0/1 0/0 0/0 .rodata @5802 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5802 = -25.0f;
-COMPILER_STRIP_GATE(0x80A885F8, &lit_5802);
-#pragma pop
-
-/* 80A885FC-80A88600 0001C8 0004+00 0/1 0/0 0/0 .rodata @5803 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5803 = 0.5f;
-COMPILER_STRIP_GATE(0x80A885FC, &lit_5803);
-#pragma pop
-
-/* 80A88600-80A88604 0001CC 0004+00 0/1 0/0 0/0 .rodata @5804 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5804 = 120.0f;
-COMPILER_STRIP_GATE(0x80A88600, &lit_5804);
-#pragma pop
-
-/* 80A88604-80A88608 0001D0 0004+00 0/1 0/0 0/0 .rodata @5805 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5805 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80A88604, &lit_5805);
-#pragma pop
-
-/* 80A88608-80A8860C 0001D4 0004+00 0/1 0/0 0/0 .rodata @5806 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5806 = -1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80A88608, &lit_5806);
-#pragma pop
-
-/* 80A8860C-80A88610 0001D8 0004+00 0/1 0/0 0/0 .rodata @5807 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5807 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80A8860C, &lit_5807);
-#pragma pop
-
-/* 80A88610-80A88614 0001DC 0004+00 0/1 0/0 0/0 .rodata @5808 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5808 = -1.5f;
-COMPILER_STRIP_GATE(0x80A88610, &lit_5808);
-#pragma pop
-
-/* 80A88614-80A88618 0001E0 0004+00 0/1 0/0 0/0 .rodata @5809 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5809 = 3.0f;
-COMPILER_STRIP_GATE(0x80A88614, &lit_5809);
-#pragma pop
-
-/* 80A88618-80A8861C 0001E4 0004+00 0/1 0/0 0/0 .rodata @5810 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5810 = 40.0f;
-COMPILER_STRIP_GATE(0x80A88618, &lit_5810);
-#pragma pop
-
-/* 80A8861C-80A88620 0001E8 0004+00 0/1 0/0 0/0 .rodata @5811 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5811 = 20.0f;
-COMPILER_STRIP_GATE(0x80A8861C, &lit_5811);
-#pragma pop
-
-/* 80A88620-80A88624 0001EC 0004+00 0/1 0/0 0/0 .rodata @5812 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5812 = 70.0f;
-COMPILER_STRIP_GATE(0x80A88620, &lit_5812);
-#pragma pop
-
-/* 80A88624-80A88628 0001F0 0004+00 0/1 0/0 0/0 .rodata @5813 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5813 = -7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80A88624, &lit_5813);
-#pragma pop
-
-/* 80A88628-80A8862C 0001F4 0004+00 0/1 0/0 0/0 .rodata @5814 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5814 = 7.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80A88628, &lit_5814);
-#pragma pop
-
-/* 80A8862C-80A88634 0001F8 0004+04 0/1 0/0 0/0 .rodata @5815 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5815[1 + 1 /* padding */] = {
- 2.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80A8862C, &lit_5815);
-#pragma pop
-
-/* 80A88634-80A8863C 000200 0008+00 0/1 0/0 0/0 .rodata @5816 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5816[8] = {
- 0x3F, 0xB9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A,
-};
-COMPILER_STRIP_GATE(0x80A88634, &lit_5816);
-#pragma pop
-
-/* 80A8863C-80A88640 000208 0004+00 0/1 0/0 0/0 .rodata @5817 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5817 = 6.0f;
-COMPILER_STRIP_GATE(0x80A8863C, &lit_5817);
-#pragma pop
-
-/* 80A88640-80A88644 00020C 0004+00 0/1 0/0 0/0 .rodata @5818 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5818 = 4096.0f;
-COMPILER_STRIP_GATE(0x80A88640, &lit_5818);
-#pragma pop
-
-/* 80A88644-80A8864C 000210 0004+04 0/1 0/0 0/0 .rodata @5819 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5819[1 + 1 /* padding */] = {
- 6144.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80A88644, &lit_5819);
-#pragma pop
-
/* 80A86E8C-80A879A0 0030EC 0B14+00 6/6 0/0 0/0 .text calcHovering__13daNpc_myna2_cFii */
void daNpc_myna2_c::calcHovering(int param_0, int param_1) {
- // NONMATCHING
+ if (param_0 != 0) {
+ field_0xe1c.set(0.0f, 5.0f, 0.0f);
+ cLib_addCalcPos2(&field_0xe10, field_0xe1c, 0.1f, 0.1f);
+ mpMorf->setPlaySpeed(1.5f);
+ } else if (current.pos.y > 500.0f + home.pos.y) {
+ field_0xe10.y = -25.0f;
+ mpMorf->setPlaySpeed(0.5f);
+ } else {
+ cXyz sp78(home.pos);
+ sp78.y += 120.0f;
+
+ if (param_1 == 1) {
+ cXyz sp6C = current.pos - sp78;
+ if (fabsf(sp6C.y) > field_0xe30) {
+ if (sp6C.y > 0.0f) {
+ field_0xe1c.y = -cLib_getRndValue<f32>(0.5f, 1.0f);
+ } else {
+ field_0xe1c.y = cLib_getRndValue<f32>(0.5f, 1.0f);
+ }
+ field_0xe28 = cLib_getRndValue<int>(20, 20);
+ } else if (sp6C.absXZ() > 50.0f) {
+ sp6C.y = 0.0f;
+ sp6C.normalizeZP();
+ sp6C *= cLib_getRndValue<f32>(0.2f, 0.2f);
+
+ field_0xe1c.x = -sp6C.x;
+ field_0xe1c.z = -sp6C.z;
+ field_0xe28 = cLib_getRndValue<int>(20, 20);
+ } else if (cLib_calcTimer<int>(&field_0xe28) == 0) {
+ field_0xe1c.x = cLib_getRndValue<f32>(-0.2f, 0.4f);
+ field_0xe1c.y = cLib_getRndValue<f32>(0.5f, 0.5f);
+ field_0xe1c.z = cLib_getRndValue<f32>(-0.2f, 0.4f);
+
+ field_0xe1c.normalizeZP();
+ field_0xe1c *= cLib_getRndValue<f32>(-1.5f, 3.0f);
+ field_0xe28 = cLib_getRndValue<int>(20, 20);
+ field_0xe30 = cLib_getRndValue<f32>(40.0f, 20.0f);
+ }
+ } else {
+ if ((sp78 - current.pos).abs() > 70.0f) {
+ field_0xe1c = sp78 - current.pos;
+ field_0xe1c.normalizeZP();
+ field_0xe1c *= 3.0f;
+
+ field_0xe28 = cLib_getRndValue<int>(20, 20);
+ field_0xe2c = 0;
+ } else if (cLib_calcTimer<int>(&field_0xe28) == 0) {
+ field_0xe1c.x = cLib_getRndValue<f32>(-0.7f, 1.4f);
+ field_0xe1c.y = cLib_getRndValue<f32>(-1.0f, 2.0f);
+ field_0xe1c.z = cLib_getRndValue<f32>(-0.7f, 1.4f);
+ field_0xe1c.normalizeZP();
+ field_0xe1c *= cLib_getRndValue<f32>(0.0f, 3.0f);
+ field_0xe28 = cLib_getRndValue<int>(30, 120);
+ }
+
+ if (((daPy_getPlayerActorClass()->current.pos - current.pos).abs() < 100.0f || mCyl.ChkCoHit()) && field_0xe1c.y < 0.1) {
+ field_0xe1c.y = cLib_getRndValue<f32>(0.1f, 1.5f);
+ field_0xe28 = cLib_getRndValue<int>(20, 20);
+ field_0xe2c = 10;
+ }
+ }
+
+ cLib_calcTimer<int>(&field_0xe2c);
+
+ if (field_0xe10.abs() > 3.0f || field_0xe2c != 0) {
+ cLib_addCalcPos2(&field_0xe10, field_0xe1c, 0.5f, 1.0f);
+ } else {
+ cLib_addCalcPos2(&field_0xe10, field_0xe1c, 0.1f, 0.1f);
+ }
+
+ mpMorf->setPlaySpeed(0.5f + ((3.0f + field_0xe1c.y) / 6.0f));
+ }
+
+ current.pos += field_0xe10;
+ cLib_addCalcAngleS2(&current.angle.y, fopAcM_searchPlayerAngleY(this), 0x10, 0x200);
+
+ s16 sp14 = (current.angle.y + cM_atan2s(field_0xe10.x, field_0xe10.z));
+ f32 temp_f30 = field_0xe10.absXZ() * cM_scos(sp14);
+ f32 temp_f29 = field_0xe10.absXZ() * cM_ssin(sp14);
+
+ cLib_addCalcAngleS2(&current.angle.z, (4096.0f * temp_f30) / 3.0f, 0x10, 0x200);
+ cLib_addCalcAngleS2(&current.angle.x, (6144.0f * temp_f29) / 3.0f, 0x10, 0x200);
+ shape_angle = mCurAngle = current.angle;
}
/* 80A879A0-80A879C0 003C00 0020+00 1/0 0/0 0/0 .text daNpc_myna2_Create__FPv */
-static void daNpc_myna2_Create(void* param_0) {
- // NONMATCHING
+static int daNpc_myna2_Create(void* i_this) {
+ return ((daNpc_myna2_c*)i_this)->create();
}
/* 80A879C0-80A879E0 003C20 0020+00 1/0 0/0 0/0 .text daNpc_myna2_Delete__FPv */
-static void daNpc_myna2_Delete(void* param_0) {
- // NONMATCHING
+static int daNpc_myna2_Delete(void* i_this) {
+ return ((daNpc_myna2_c*)i_this)->Delete();
}
/* 80A879E0-80A87A00 003C40 0020+00 1/0 0/0 0/0 .text daNpc_myna2_Execute__FPv */
-static void daNpc_myna2_Execute(void* param_0) {
- // NONMATCHING
+static int daNpc_myna2_Execute(void* i_this) {
+ return ((daNpc_myna2_c*)i_this)->Execute();
}
/* 80A87A00-80A87A20 003C60 0020+00 1/0 0/0 0/0 .text daNpc_myna2_Draw__FPv */
-static void daNpc_myna2_Draw(void* param_0) {
- // NONMATCHING
+static int daNpc_myna2_Draw(void* i_this) {
+ return ((daNpc_myna2_c*)i_this)->Draw();
}
/* 80A87A20-80A87A28 003C80 0008+00 1/0 0/0 0/0 .text daNpc_myna2_IsDelete__FPv */
-static bool daNpc_myna2_IsDelete(void* param_0) {
- return true;
-}
-
-/* 80A87A28-80A87A70 003C88 0048+00 5/4 0/0 0/0 .text __dt__18daNpcF_ActorMngr_cFv */
-// daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() {
-extern "C" void __dt__18daNpcF_ActorMngr_cFv() {
- // NONMATCHING
-}
-
-/* 80A87A70-80A87AAC 003CD0 003C+00 2/2 0/0 0/0 .text __ct__18daNpcF_ActorMngr_cFv */
-// daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() {
-extern "C" void __ct__18daNpcF_ActorMngr_cFv() {
- // NONMATCHING
-}
-
-/* 80A87AAC-80A87B7C 003D0C 00D0+00 1/0 0/0 0/0 .text __dt__15daNpcF_Lookat_cFv */
-// daNpcF_Lookat_c::~daNpcF_Lookat_c() {
-extern "C" void __dt__15daNpcF_Lookat_cFv() {
- // NONMATCHING
-}
-
-/* 80A87B7C-80A87BB8 003DDC 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */
-// csXyz::~csXyz() {
-extern "C" void __dt__5csXyzFv() {
- // NONMATCHING
-}
-
-/* 80A87BB8-80A87BBC 003E18 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */
-// csXyz::csXyz() {
-extern "C" void __ct__5csXyzFv() {
- /* empty function */
-}
-
-/* 80A87BBC-80A87BF8 003E1C 003C+00 6/6 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
-
-/* 80A87BF8-80A87BFC 003E58 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */
-// cXyz::cXyz() {
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
-}
-
-/* 80A87BFC-80A87E48 003E5C 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */
-// daNpcF_c::~daNpcF_c() {
-extern "C" void __dt__8daNpcF_cFv() {
- // NONMATCHING
-}
-
-/* 80A87E48-80A88038 0040A8 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */
-// daNpcF_c::daNpcF_c() {
-extern "C" void __ct__8daNpcF_cFv() {
- // NONMATCHING
-}
-
-/* 80A88038-80A880A8 004298 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
-
-/* 80A880A8-80A88104 004308 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
+static int daNpc_myna2_IsDelete(void* i_this) {
+ return TRUE;
}
-/* 80A88104-80A88174 004364 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 80A88174-80A881BC 0043D4 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
-}
-
-/* 80A881BC-80A881C4 00441C 0008+00 1/0 0/0 0/0 .text ctrlBtk__8daNpcF_cFv */
-// bool daNpcF_c::ctrlBtk() {
-extern "C" bool ctrlBtk__8daNpcF_cFv() {
- return false;
-}
-
-/* 80A881C4-80A881C8 004424 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__8daNpcF_cFv */
-// void daNpcF_c::adjustShapeAngle() {
-extern "C" void adjustShapeAngle__8daNpcF_cFv() {
- /* empty function */
-}
-
-/* 80A881C8-80A881CC 004428 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */
-// void daNpcF_c::setCollisions() {
-extern "C" void setCollisions__8daNpcF_cFv() {
- /* empty function */
-}
-
-/* 80A881CC-80A881D4 00442C 0008+00 1/0 0/0 0/0 .text setExpressionAnm__8daNpcF_cFib */
-// bool daNpcF_c::setExpressionAnm(int param_0, bool param_1) {
-extern "C" bool setExpressionAnm__8daNpcF_cFib() {
- return true;
-}
-
-/* 80A881D4-80A881D8 004434 0004+00 1/0 0/0 0/0 .text setExpression__8daNpcF_cFif */
-// void daNpcF_c::setExpression(int param_0, f32 param_1) {
-extern "C" void setExpression__8daNpcF_cFif() {
- /* empty function */
-}
-
-/* 80A881D8-80A88220 004438 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 80A88220-80A8823C 004480 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<i>__FPi */
-extern "C" void func_80A88220(void* _this, int* param_0) {
- // NONMATCHING
-}
-
-/* 80A8823C-80A88278 00449C 003C+00 1/1 0/0 0/0 .text cLib_getRndValue<f>__Fff */
-extern "C" void func_80A8823C(void* _this, f32 param_0, f32 param_1) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80A8864C-80A88654 000218 0008+00 1/1 0/0 0/0 .rodata @5872 */
-SECTION_RODATA static u8 const lit_5872[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+/* 80A889C4-80A889E4 -00001 0020+00 1/0 0/0 0/0 .data daNpc_myna2_MethodTable */
+static actor_method_class daNpc_myna2_MethodTable = {
+ (process_method_func)daNpc_myna2_Create,
+ (process_method_func)daNpc_myna2_Delete,
+ (process_method_func)daNpc_myna2_Execute,
+ (process_method_func)daNpc_myna2_IsDelete,
+ (process_method_func)daNpc_myna2_Draw,
};
-COMPILER_STRIP_GATE(0x80A8864C, &lit_5872);
-
-/* 80A88278-80A882F4 0044D8 007C+00 1/1 0/0 0/0 .text cLib_getRndValue<i>__Fii */
-extern "C" void func_80A88278(void* _this, int param_0, int param_1) {
- // NONMATCHING
-}
-/* ############################################################################################## */
-/* 80A88AE0-80A88AEC 00042C 000C+00 2/2 0/0 0/0 .data __vt__19daNpc_myna2_Param_c */
-SECTION_DATA extern void* __vt__19daNpc_myna2_Param_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__19daNpc_myna2_Param_cFv,
+/* 80A889E4-80A88A14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_MYNA2 */
+extern actor_process_profile_definition g_profile_MYNA2 = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_MYNA2, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daNpc_myna2_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 393, // mPriority
+ &daNpc_myna2_MethodTable, // sub_method
+ 0x08044100, // mStatus
+ fopAc_NPC_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
};
-/* 80A882F4-80A883C8 004554 00D4+00 0/0 1/0 0/0 .text __sinit_d_a_npc_myna2_cpp */
-void __sinit_d_a_npc_myna2_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80A882F4, __sinit_d_a_npc_myna2_cpp);
-#pragma pop
-
-/* 80A883C8-80A88410 004628 0048+00 2/1 0/0 0/0 .text __dt__19daNpc_myna2_Param_cFv */
-daNpc_myna2_Param_c::~daNpc_myna2_Param_c() {
- // NONMATCHING
-}
-
-/* 80A88410-80A88418 004670 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80A88410() {
- // NONMATCHING
-}
-
-/* 80A88418-80A88420 004678 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80A88418() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80A88B64-80A88B68 000074 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B64[4];
-#pragma pop
-
-/* 80A88B68-80A88B6C 000078 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B68[4];
-#pragma pop
-
-/* 80A88B6C-80A88B70 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B6C[4];
-#pragma pop
-
-/* 80A88B70-80A88B74 000080 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B70[4];
-#pragma pop
-
-/* 80A88B74-80A88B78 000084 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B74[4];
-#pragma pop
-
-/* 80A88B78-80A88B7C 000088 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B78[4];
-#pragma pop
-
-/* 80A88B7C-80A88B80 00008C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B7C[4];
-#pragma pop
-
-/* 80A88B80-80A88B84 000090 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B80[4];
-#pragma pop
-
-/* 80A88B84-80A88B88 000094 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B84[4];
-#pragma pop
-
-/* 80A88B88-80A88B8C 000098 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B88[4];
-#pragma pop
-
-/* 80A88B8C-80A88B90 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B8C[4];
-#pragma pop
-
-/* 80A88B90-80A88B94 0000A0 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B90[4];
-#pragma pop
-
-/* 80A88B94-80A88B98 0000A4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B94[4];
-#pragma pop
-
-/* 80A88B98-80A88B9C 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B98[4];
-#pragma pop
-
-/* 80A88B9C-80A88BA0 0000AC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88B9C[4];
-#pragma pop
-
-/* 80A88BA0-80A88BA4 0000B0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BA0[4];
-#pragma pop
-
-/* 80A88BA4-80A88BA8 0000B4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BA4[4];
-#pragma pop
-
-/* 80A88BA8-80A88BAC 0000B8 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BA8[4];
-#pragma pop
-
-/* 80A88BAC-80A88BB0 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BAC[4];
-#pragma pop
-
-/* 80A88BB0-80A88BB4 0000C0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BB0[4];
-#pragma pop
-
-/* 80A88BB4-80A88BB8 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BB4[4];
-#pragma pop
-
-/* 80A88BB8-80A88BBC 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BB8[4];
-#pragma pop
-
-/* 80A88BBC-80A88BC0 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BBC[4];
-#pragma pop
-
-/* 80A88BC0-80A88BC4 0000D0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BC0[4];
-#pragma pop
-
-/* 80A88BC4-80A88BC8 0000D4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80A88BC4[4];
-#pragma pop
-
-/* 80A88654-80A88654 000220 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+AUDIO_INSTANCES