summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2025-03-10 01:05:03 +0200
committerGitHub <noreply@github.com>2025-03-09 16:05:03 -0700
commit763400c4c0e2536bbfe2dd3032905dde8db031ca (patch)
tree66c2efbf5d524ec7361f34a6dc267668d2c7df95 /src
parent800049a811ee5ecacd480f25014aa8c160878429 (diff)
daObjNAN_c equivalent (#2320)
* daObjNAN_c equivalent * Remove padding
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_e_ba.cpp2
-rw-r--r--src/d/actor/d_a_e_fs.cpp2
-rw-r--r--src/d/actor/d_a_e_fz.cpp2
-rw-r--r--src/d/actor/d_a_e_oct_bg.cpp2
-rw-r--r--src/d/actor/d_a_e_ot.cpp2
-rw-r--r--src/d/actor/d_a_e_yk.cpp2
-rw-r--r--src/d/actor/d_a_e_ym.cpp2
-rw-r--r--src/d/actor/d_a_obj_nan.cpp1490
-rw-r--r--src/d/d_cc_uty.cpp8
9 files changed, 661 insertions, 851 deletions
diff --git a/src/d/actor/d_a_e_ba.cpp b/src/d/actor/d_a_e_ba.cpp
index ac6b0050fc..3e785beb61 100644
--- a/src/d/actor/d_a_e_ba.cpp
+++ b/src/d/actor/d_a_e_ba.cpp
@@ -146,7 +146,7 @@ static void damage_check(e_ba_class* i_this) {
i_this->mIFrames = 10;
}
i_this->mKnockbackSpeed = 80.0f;
- i_this->mKnockbackAngle = i_this->mAtInfo.mHitDirection;
+ i_this->mKnockbackAngle = i_this->mAtInfo.mHitDirection.y;
if (i_this->health <= 0) {
i_this->mCreatureSound.startCreatureVoice(Z2SE_EN_BA_V_DEATH, -1);
i_this->mpMorf->setPlaySpeed(0.2f);
diff --git a/src/d/actor/d_a_e_fs.cpp b/src/d/actor/d_a_e_fs.cpp
index 59ecda6ee1..4eb8a9fe9b 100644
--- a/src/d/actor/d_a_e_fs.cpp
+++ b/src/d/actor/d_a_e_fs.cpp
@@ -438,7 +438,7 @@ static void damage_check(e_fs_class* i_this) {
} else {
i_this->mIFrameTimer = 10;
}
- i_this->current.angle.y = i_this->mAtInfo.mHitDirection;
+ i_this->current.angle.y = i_this->mAtInfo.mHitDirection.y;
if (i_this->health <= 0) {
i_this->mAction = e_fs_class::ACT_END;
diff --git a/src/d/actor/d_a_e_fz.cpp b/src/d/actor/d_a_e_fz.cpp
index 9df52ec5d1..df9ecdedeb 100644
--- a/src/d/actor/d_a_e_fz.cpp
+++ b/src/d/actor/d_a_e_fz.cpp
@@ -253,7 +253,7 @@ void daE_FZ_c::damage_check() {
dComIfGp_setHitMark(3,this,&pos3,&s_pos,0,AT_TYPE_0);
}
- mLastWallHitAngle = mAtInfo.mHitDirection;
+ mLastWallHitAngle = mAtInfo.mHitDirection.y;
setReflectAngle();
current.angle.y += -32768;
field_0x712 = 10;
diff --git a/src/d/actor/d_a_e_oct_bg.cpp b/src/d/actor/d_a_e_oct_bg.cpp
index ba57c225e4..74ce2928d6 100644
--- a/src/d/actor/d_a_e_oct_bg.cpp
+++ b/src/d/actor/d_a_e_oct_bg.cpp
@@ -740,7 +740,7 @@ void daE_OctBg_c::damage() {
field_0x8c0.OffTgSetBit();
field_0x9f8.OffAtSetBit();
attention_info.flags = 0;
- current.angle.y = field_0xb30.mHitDirection + 0x8000;
+ current.angle.y = field_0xb30.mHitDirection.y + 0x8000;
speedF = 10.0f;
field_0xb96 = 0x1000;
speed.y = 0.0f;
diff --git a/src/d/actor/d_a_e_ot.cpp b/src/d/actor/d_a_e_ot.cpp
index f97a78dc40..cd492703e6 100644
--- a/src/d/actor/d_a_e_ot.cpp
+++ b/src/d/actor/d_a_e_ot.cpp
@@ -550,7 +550,7 @@ void daE_OT_c::executeDamage() {
mMode = 1;
mAnmSpeed = 1.0f;
gravity = -5.0f;
- current.angle.y = mAtInfo.mHitDirection + 0x8000 + cM_rndFX(0x2000);
+ current.angle.y = mAtInfo.mHitDirection.y + 0x8000 + cM_rndFX(0x2000);
break;
case 1:
diff --git a/src/d/actor/d_a_e_yk.cpp b/src/d/actor/d_a_e_yk.cpp
index 580bf47208..48f7d1dde9 100644
--- a/src/d/actor/d_a_e_yk.cpp
+++ b/src/d/actor/d_a_e_yk.cpp
@@ -175,7 +175,7 @@ static void damage_check(e_yk_class* i_this) {
}
i_this->field_0x694 = cM_rndF(10.0f) + 70.0f;
- i_this->field_0x698 = i_this->mAtColliderInfo.mHitDirection;
+ i_this->field_0x698 = i_this->mAtColliderInfo.mHitDirection.y;
// If keese is dead, play death sound
if (i_this->health <= 0) {
diff --git a/src/d/actor/d_a_e_ym.cpp b/src/d/actor/d_a_e_ym.cpp
index 2ec51c5ba3..1a2db9de0d 100644
--- a/src/d/actor/d_a_e_ym.cpp
+++ b/src/d/actor/d_a_e_ym.cpp
@@ -964,7 +964,7 @@ void daE_YM_c::executeDown() {
field_0x668.set(0, 0, 0);
speedF = cM_rndF(5.0f) + 15.0f;
speed.y = cM_rndF(5.0f) + 40.0f;
- shape_angle.y = mAtInfo.mHitDirection + 0x8000;
+ shape_angle.y = mAtInfo.mHitDirection.y + 0x8000;
shape_angle.x = 0;
mAcch.ClrGroundHit();
mAcchCir.SetWall(40.0f, 60.0f);
diff --git a/src/d/actor/d_a_obj_nan.cpp b/src/d/actor/d_a_obj_nan.cpp
index 6e0fe5183f..c58572c91d 100644
--- a/src/d/actor/d_a_obj_nan.cpp
+++ b/src/d/actor/d_a_obj_nan.cpp
@@ -4,962 +4,772 @@
*/
#include "d/actor/d_a_obj_nan.h"
-#include "dol2asm.h"
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__14daObj_NanHIO_cFv();
-extern "C" void setAction__10daObjNAN_cFM10daObjNAN_cFPCvPv_v();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" static void daObjNAN_Create__FP10fopAc_ac_c();
-extern "C" static void daObjNAN_Delete__FP10daObjNAN_c();
-extern "C" void nan_posMove__10daObjNAN_cFv();
-extern "C" void turn__10daObjNAN_cFv();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void nan_WalkAnm__10daObjNAN_cFv();
-extern "C" void wait__10daObjNAN_cFv();
-extern "C" void walk__10daObjNAN_cFv();
-extern "C" void bin_wait__10daObjNAN_cFv();
-extern "C" void bin_action__10daObjNAN_cFv();
-extern "C" void nan_setParticle__10daObjNAN_cFv();
-extern "C" void hook__10daObjNAN_cFv();
-extern "C" void boomerang__10daObjNAN_cFv();
-extern "C" void drop__10daObjNAN_cFv();
-extern "C" void hit_check__10daObjNAN_cFv();
-extern "C" void action__10daObjNAN_cFv();
-extern "C" void execute__10daObjNAN_cFv();
-extern "C" void _delete__10daObjNAN_cFv();
-extern "C" void setBaseMtx__10daObjNAN_cFv();
-extern "C" static void daObjNAN_Draw__FP10daObjNAN_c();
-extern "C" static void daObjNAN_Execute__FP10daObjNAN_c();
-extern "C" void create__10daObjNAN_cFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" static bool daObjNAN_IsDelete__FP10daObjNAN_c();
-extern "C" void __dt__14daObj_NanHIO_cFv();
-extern "C" void __sinit_d_a_obj_nan_cpp();
-extern "C" void Insect_Release__9dInsect_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" extern char const* const d_a_obj_nan__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotS__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
-extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
-extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff();
-extern "C" void play__16mDoExt_McaMorfSOFUlSc();
-extern "C" void entryDL__16mDoExt_McaMorfSOFv();
-extern "C" void modelCalc__16mDoExt_McaMorfSOFv();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
-extern "C" void fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData();
-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 dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void getEmitter__Q213dPa_control_c7level_cFUl();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-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 Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Move__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
-extern "C" void GetTgHitGObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void __ct__9dInsect_cFv();
-extern "C" void Insect_GetDemoMain__9dInsect_cFv();
-extern "C" void CalcZBuffer__9dInsect_cFf();
-extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs();
-extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void isCatchNotGiveInsect__14dMenu_Insect_cFUc();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void SetR__8cM3dGSphFf();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_chaseF__FPfff();
-extern "C" void cLib_chaseAngleS__FPsss();
-extern "C" void __ct__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_scall();
-extern "C" void __cvt_fp2unsigned();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Sph[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
+#include "SSystem/SComponent/c_xyz.h"
+#include "d/d_menu_insect.h"
+#include "d/d_cc_uty.h"
+#include "d/d_com_inf_game.h"
-/* ############################################################################################## */
-/* 80CA31BC-80CA31C0 000000 0004+00 12/12 0/0 0/0 .rodata @3774 */
-SECTION_RODATA static f32 const lit_3774 = 6.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CA31BC, &lit_3774);
-
-/* 80CA32B0-80CA32BC 000000 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */
-SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-/* 80CA32BC-80CA32D0 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
- 0x02000201,
- /* padding */
- 0x40080000,
- 0x00000000,
- 0x3FE00000,
- 0x00000000,
-};
-#pragma pop
+UNK_REL_DATA
/* 80CA32D0-80CA3310 000020 0040+00 0/1 0/0 0/0 .data cc_sph_src__25@unnamed@d_a_obj_nan_cpp@ */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 data_80CA32D0[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x40, 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80CA3310-80CA331C -00001 000C+00 1/1 0/0 0/0 .data @3924 */
-SECTION_DATA static void* lit_3924[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)walk__10daObjNAN_cFv,
-};
-
-/* 80CA331C-80CA3328 -00001 000C+00 1/1 0/0 0/0 .data @4034 */
-SECTION_DATA static void* lit_4034[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)walk__10daObjNAN_cFv,
-};
-
-/* 80CA3328-80CA3334 -00001 000C+00 0/1 0/0 0/0 .data @4126 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4126[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)turn__10daObjNAN_cFv,
-};
-#pragma pop
-
-/* 80CA3334-80CA3340 -00001 000C+00 0/1 0/0 0/0 .data @4129 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4129[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)turn__10daObjNAN_cFv,
-};
-#pragma pop
-
-/* 80CA3340-80CA334C -00001 000C+00 0/1 0/0 0/0 .data @4133 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4133[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)turn__10daObjNAN_cFv,
-};
-#pragma pop
-
-/* 80CA334C-80CA3358 -00001 000C+00 0/1 0/0 0/0 .data @4138 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4138[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)turn__10daObjNAN_cFv,
-};
-#pragma pop
-
-/* 80CA3358-80CA3364 -00001 000C+00 1/1 0/0 0/0 .data @4318 */
-SECTION_DATA static void* lit_4318[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)drop__10daObjNAN_cFv,
-};
-
-/* 80CA3364-80CA3370 -00001 000C+00 1/1 0/0 0/0 .data @4321 */
-SECTION_DATA static void* lit_4321[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)bin_action__10daObjNAN_cFv,
-};
-
-/* 80CA3370-80CA337C -00001 000C+00 1/1 0/0 0/0 .data @4444 */
-SECTION_DATA static void* lit_4444[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)drop__10daObjNAN_cFv,
-};
-
-/* 80CA337C-80CA3388 -00001 000C+00 1/1 0/0 0/0 .data @4509 */
-SECTION_DATA static void* lit_4509[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)walk__10daObjNAN_cFv,
-};
-
-/* 80CA3388-80CA3394 -00001 000C+00 1/1 0/0 0/0 .data @4512 */
-SECTION_DATA static void* lit_4512[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)drop__10daObjNAN_cFv,
-};
-
-/* 80CA3394-80CA33A0 -00001 000C+00 1/1 0/0 0/0 .data @4614 */
-SECTION_DATA static void* lit_4614[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)walk__10daObjNAN_cFv,
-};
-
-/* 80CA33A0-80CA33AC -00001 000C+00 1/1 0/0 0/0 .data @4680 */
-SECTION_DATA static void* lit_4680[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)hook__10daObjNAN_cFv,
-};
-
-/* 80CA33AC-80CA33B8 -00001 000C+00 1/1 0/0 0/0 .data @4683 */
-SECTION_DATA static void* lit_4683[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)boomerang__10daObjNAN_cFv,
-};
-
-/* 80CA33B8-80CA33C4 -00001 000C+00 0/1 0/0 0/0 .data @4938 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4938[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)bin_wait__10daObjNAN_cFv,
-};
-#pragma pop
-
-/* 80CA33C4-80CA33D0 -00001 000C+00 0/1 0/0 0/0 .data @4941 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4941[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)wait__10daObjNAN_cFv,
-};
-#pragma pop
-
-/* 80CA33D0-80CA33F0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjNAN_Method */
-static actor_method_class l_daObjNAN_Method = {
- (process_method_func)daObjNAN_Create__FP10fopAc_ac_c,
- (process_method_func)daObjNAN_Delete__FP10daObjNAN_c,
- (process_method_func)daObjNAN_Execute__FP10daObjNAN_c,
- (process_method_func)daObjNAN_IsDelete__FP10daObjNAN_c,
- (process_method_func)daObjNAN_Draw__FP10daObjNAN_c,
-};
-
-/* 80CA33F0-80CA3420 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Nan */
-extern actor_process_profile_definition g_profile_Obj_Nan = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_Nan, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjNAN_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 480, // mPriority
- &l_daObjNAN_Method, // sub_method
- 0x000C0120, // mStatus
- fopAc_ENV_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80CA3420-80CA342C 000170 000C+00 0/0 0/0 0/0 .data __vt__9dInsect_c */
-SECTION_DATA extern void* __vt__9dInsect_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)Insect_Release__9dInsect_cFv,
-};
-
-/* 80CA342C-80CA3438 00017C 000C+00 2/2 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,
-};
-
-/* 80CA3438-80CA3444 000188 000C+00 1/1 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,
-};
-
-/* 80CA3444-80CA3450 000194 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
-
-/* 80CA3450-80CA345C 0001A0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 80CA345C-80CA3468 0001AC 000C+00 1/1 0/0 0/0 .data __vt__10daObjNAN_c */
-SECTION_DATA extern void* __vt__10daObjNAN_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)Insect_Release__9dInsect_cFv,
-};
-
-/* 80CA3468-80CA3474 0001B8 000C+00 7/7 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
-};
-
-/* 80CA3474-80CA3480 0001C4 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80CA3480-80CA348C 0001D0 000C+00 2/2 0/0 0/0 .data __vt__14daObj_NanHIO_c */
-SECTION_DATA extern void* __vt__14daObj_NanHIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14daObj_NanHIO_cFv,
+static dCcD_SrcSph cc_sph_src = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x014040, 0x43}, 0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 20.0f} // mSph
+ } // mSphAttr
};
/* 80CA05AC-80CA05D4 0000EC 0028+00 1/1 0/0 0/0 .text __ct__14daObj_NanHIO_cFv */
daObj_NanHIO_c::daObj_NanHIO_c() {
- // NONMATCHING
+ field_0x4 = -1;
+ field_0xc = 1.2f;
+ field_0x8 = 1.2f;
}
/* 80CA05D4-80CA0678 000114 00A4+00 9/9 0/0 0/0 .text
* setAction__10daObjNAN_cFM10daObjNAN_cFPCvPv_v */
-void daObjNAN_c::setAction(void (daObjNAN_c::*param_0)()) {
- // NONMATCHING
+void daObjNAN_c::setAction(actionFunc action) {
+ if (mAction != NULL) {
+ field_0x7d0 = -1;
+ (this->*mAction)();
+ }
+ mPrevAction = mAction;
+ mAction = action;
+ field_0x7d0 = 0;
+ (this->*mAction)();
}
/* ############################################################################################## */
/* 80CA31C0-80CA31C8 000004 0008+00 0/1 0/0 0/0 .rodata l_nan_brk_index */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_nan_brk_index[8] = {
- 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0C,
+static int const l_nan_brk_index[2] = {
+ 13, 12,
};
-COMPILER_STRIP_GATE(0x80CA31C0, &l_nan_brk_index);
-#pragma pop
/* 80CA31C8-80CA31D0 00000C 0008+00 0/1 0/0 0/0 .rodata l_nan_btk_index */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_nan_btk_index[8] = {
- 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10,
-};
-COMPILER_STRIP_GATE(0x80CA31C8, &l_nan_btk_index);
-#pragma pop
-
-/* 80CA31D0-80CA31D4 000014 0004+00 1/3 0/0 0/0 .rodata @3868 */
-SECTION_RODATA static f32 const lit_3868 = 1.0f;
-COMPILER_STRIP_GATE(0x80CA31D0, &lit_3868);
-
-/* 80CA31D4-80CA31D8 000018 0004+00 0/1 0/0 0/0 .rodata @3869 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3869 = 5.0f;
-COMPILER_STRIP_GATE(0x80CA31D4, &lit_3869);
-#pragma pop
-
-/* 80CA31D8-80CA31DC 00001C 0004+00 2/12 0/0 0/0 .rodata @3870 */
-SECTION_RODATA static u8 const lit_3870[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80CA31D8, &lit_3870);
-
-/* 80CA31DC-80CA31E0 000020 0004+00 0/1 0/0 0/0 .rodata @3871 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3871 = -1.0f;
-COMPILER_STRIP_GATE(0x80CA31DC, &lit_3871);
-#pragma pop
-
-/* 80CA32A0-80CA32A0 0000E4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80CA32A0 = "I_Nan";
-#pragma pop
-
-/* 80CA0678-80CA08EC 0001B8 0274+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int const l_nan_btk_index[2] = {
+ 17, 16,
+};
+
+inline int daObjNAN_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("I_Nan", 9);
+ JUT_ASSERT(254, modelData != 0);
+ mMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL,
+ (J3DAnmTransform*)dComIfG_getObjectRes("I_Nan", 6), 2, 1.0f,
+ 0, -1, &mCreatureSound, 0, 0x11000284);
+ if (mMorf == NULL || mMorf->getModel() == NULL) {
+ return 0;
+ }
+ J3DModel* model = mMorf->getModel();
+ mBrk = new mDoExt_brkAnm();
+ if (mBrk == NULL) {
+ return 0;
+ }
+ J3DAnmTevRegKey* anmRegKey =
+ (J3DAnmTevRegKey*)dComIfG_getObjectRes("I_Nan", l_nan_brk_index[field_0x7fb]);
+ if (mBrk->init(model->getModelData(), anmRegKey, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ mBtk = new mDoExt_btkAnm();
+ if (mBtk == NULL) {
+ return 0;
+ }
+ J3DAnmTextureSRTKey* anmTexture =
+ (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("I_Nan", l_nan_btk_index[field_0x7fb]);
+ if (mBtk->init(model->getModelData(), anmTexture, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ mMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("I_Nan", 6), 2, 5.0f, 1.0f, 0.0f, -1.0f);
+ return 1;
}
-/* 80CA08EC-80CA0934 00042C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+/* 80CA0678-80CA08EC 0001B8 0274+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
+static int useHeapInit(fopAc_ac_c* i_this) {
+ return static_cast<daObjNAN_c*>(i_this)->CreateHeap();
}
/* 80CA0934-80CA0954 000474 0020+00 1/0 0/0 0/0 .text daObjNAN_Create__FP10fopAc_ac_c */
-static void daObjNAN_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daObjNAN_Create(fopAc_ac_c* i_this) {
+ fopAcM_GetID(i_this);
+ return static_cast<daObjNAN_c*>(i_this)->create();
}
/* 80CA0954-80CA0978 000494 0024+00 1/0 0/0 0/0 .text daObjNAN_Delete__FP10daObjNAN_c */
-static void daObjNAN_Delete(daObjNAN_c* param_0) {
- // NONMATCHING
+static int daObjNAN_Delete(daObjNAN_c* i_this) {
+ fopAcM_GetID(i_this);
+ static_cast<daObjNAN_c*>(i_this)->_delete();
+ return 1;
}
/* 80CA0978-80CA0A2C 0004B8 00B4+00 1/1 0/0 0/0 .text nan_posMove__10daObjNAN_cFv */
void daObjNAN_c::nan_posMove() {
- // NONMATCHING
+ if (field_0x7fc == 0) {
+ cLib_chaseAngleS(&field_0x7d4.x, field_0x7da.x, 0x100);
+ cLib_chaseAngleS(&field_0x7d4.z, field_0x7da.z, 0x100);
+ }
+ cXyz zSpeed(0.0f, 0.0f, speedF);
+ cXyz posOffset(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::ZXYrotS(field_0x7d4);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mDoMtx_stack_c::multVec(&zSpeed, &posOffset);
+ current.pos += posOffset;
}
-/* ############################################################################################## */
-/* 80CA31E0-80CA31E4 000024 0004+00 1/6 0/0 0/0 .rodata @3985 */
-SECTION_RODATA static f32 const lit_3985 = 20.0f;
-COMPILER_STRIP_GATE(0x80CA31E0, &lit_3985);
-
-/* 80CA31E4-80CA31EC 000028 0004+04 0/2 0/0 0/0 .rodata @3986 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3986[1 + 1 /* padding */] = {
- -20.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80CA31E4, &lit_3986);
-#pragma pop
-
-/* 80CA31EC-80CA31F4 000030 0008+00 0/5 0/0 0/0 .rodata @3987 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3987[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CA31EC, &lit_3987);
-#pragma pop
-
-/* 80CA31F4-80CA31FC 000038 0008+00 0/5 0/0 0/0 .rodata @3988 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3988[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CA31F4, &lit_3988);
-#pragma pop
-
-/* 80CA31FC-80CA3204 000040 0008+00 0/5 0/0 0/0 .rodata @3989 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3989[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CA31FC, &lit_3989);
-#pragma pop
-
/* 80CA0A2C-80CA0D54 00056C 0328+00 4/0 0/0 0/0 .text turn__10daObjNAN_cFv */
void daObjNAN_c::turn() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ speedF = 0.0f;
+ field_0x7d0++;
+ } else if (field_0x7d0 != -1) {
+ dBgS_LinChk linChk;
+ cXyz cStack_b8(0.0f, 20.0f, 0.0f);
+ cXyz cStack_c4(0.0f, -20.0f, 0.0f);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(field_0x7d4);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ mDoMtx_stack_c::multVec(&cStack_b8, &cStack_b8);
+ mDoMtx_stack_c::multVec(&cStack_c4, &cStack_c4);
+ linChk.SetObj();
+ linChk.Set(&cStack_b8, &cStack_c4, NULL);
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla plane;
+ dComIfG_Bgsp().GetTriPla(linChk, &plane);
+ const cXyz* normal = plane.GetNP();
+ cXyz cStack_d0(0.0f, 0.0f, 0.0f);
+ cXyz cStack_dc(0.0f, normal->y, normal->z);
+ f32 uVar9 = cStack_d0.abs(cStack_dc);
+ current.pos = linChk.GetCross();
+ s16 uVar6 = cM_atan2s(normal->z, normal->y);
+ field_0x7da.x = uVar6;
+ field_0x7d4.x = uVar6;
+ s16 sVar7 = -cM_atan2s(normal->x, uVar9);
+ field_0x7da.z = sVar7;
+ field_0x7d4.z = sVar7;
+ }
+ field_0x7fc = nan_WalkAnm();
+ if (field_0x7fc == 0 &&
+ cLib_chaseAngleS(&current.angle.y, field_0x7e4, 0x40) != 0)
+ {
+ setAction(&daObjNAN_c::walk);
+ }
+ if (mDraw) {
+ nan_setParticle();
+ }
+ }
}
-/* 80CA0D54-80CA0D9C 000894 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla() {
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80CA3204-80CA3208 000048 0004+00 0/1 0/0 0/0 .rodata @4018 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4018 = 39.0f;
-COMPILER_STRIP_GATE(0x80CA3204, &lit_4018);
-#pragma pop
-
-/* 80CA3208-80CA320C 00004C 0004+00 0/1 0/0 0/0 .rodata @4019 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4019 = 79.0f;
-COMPILER_STRIP_GATE(0x80CA3208, &lit_4019);
-#pragma pop
-
-/* 80CA320C-80CA3210 000050 0004+00 0/2 0/0 0/0 .rodata @4020 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4020 = 18.0f;
-COMPILER_STRIP_GATE(0x80CA320C, &lit_4020);
-#pragma pop
-
-/* 80CA3210-80CA3214 000054 0004+00 0/2 0/0 0/0 .rodata @4021 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4021 = 30.0f;
-COMPILER_STRIP_GATE(0x80CA3210, &lit_4021);
-#pragma pop
-
/* 80CA0D9C-80CA0E7C 0008DC 00E0+00 2/2 0/0 0/0 .text nan_WalkAnm__10daObjNAN_cFv */
-void daObjNAN_c::nan_WalkAnm() {
- // NONMATCHING
+u8 daObjNAN_c::nan_WalkAnm() {
+ if (mMorf->getFrame() == 39.0f ||
+ mMorf->getFrame() == 79.0f)
+ {
+ if (field_0x7e2 != 0) {
+ field_0x7e2--;
+ mMorf->setPlaySpeed(0.0f);
+ return 1;
+ }
+ field_0x7e2 = (u8)(cM_rndF(30.0f) + 18.0f);
+ mMorf->setPlaySpeed(1.0f);
+ mCreatureSound.startCreatureSoundLevel(Z2SE_INSCT_KSKS, 0, -1);
+ }
+ return 0;
}
-/* ############################################################################################## */
-/* 80CA3214-80CA3218 000058 0004+00 0/1 0/0 0/0 .rodata @4100 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4100 = -1000.0f;
-COMPILER_STRIP_GATE(0x80CA3214, &lit_4100);
-#pragma pop
-
/* 80CA0E7C-80CA1184 0009BC 0308+00 1/0 0/0 0/0 .text wait__10daObjNAN_cFv */
void daObjNAN_c::wait() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ field_0x7d0++;
+ } else if (field_0x7d0 == -1) {
+ home.pos = current.pos;
+ } else {
+ dBgS_LinChk linChk;
+ cXyz cStack_b8;
+ cXyz cStack_c4;
+ cStack_b8.set(0.0f, 20.0f, 0.0f);
+ cStack_c4.set(0.0f, -1000.0f, 0.0f);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(current.angle);
+ mDoMtx_stack_c::multVec(&cStack_b8, &cStack_b8);
+ mDoMtx_stack_c::multVec(&cStack_c4, &cStack_c4);
+ linChk.SetObj();
+ linChk.Set(&cStack_b8, &cStack_c4, NULL);
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla plane;
+ dComIfG_Bgsp().GetTriPla(linChk, &plane);
+ const cXyz* normal = plane.GetNP();
+ cXyz cStack_d0(0.0f, 0.0f, 0.0f);
+ cXyz cStack_dc(0.0f, normal->y, normal->z);
+ f32 uVar8 = cStack_d0.abs(cStack_dc);
+ current.pos = old.pos = linChk.GetCross();
+ s16 uVar6 = cM_atan2s(normal->z, normal->y);
+ field_0x7da.x = uVar6;
+ field_0x7d4.x = uVar6;
+ s16 sVar7 = -cM_atan2s(normal->x, uVar8);
+ field_0x7da.z = sVar7;
+ field_0x7d4.z = sVar7;
+ current.angle.z = 0;
+ current.angle.x = 0;
+ setAction(&daObjNAN_c::walk);
+ }
+ }
}
-/* ############################################################################################## */
-/* 80CA3218-80CA321C 00005C 0004+00 0/1 0/0 0/0 .rodata @4292 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4292 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CA3218, &lit_4292);
-#pragma pop
-
-/* 80CA321C-80CA3220 000060 0004+00 0/1 0/0 0/0 .rodata @4293 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4293 = 60.0f;
-COMPILER_STRIP_GATE(0x80CA321C, &lit_4293);
-#pragma pop
-
-/* 80CA3220-80CA3224 000064 0004+00 0/1 0/0 0/0 .rodata @4294 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4294 = 40.0f;
-COMPILER_STRIP_GATE(0x80CA3220, &lit_4294);
-#pragma pop
-
-/* 80CA3224-80CA3228 000068 0004+00 0/1 0/0 0/0 .rodata @4295 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4295 = 1.0f / 50.0f;
-COMPILER_STRIP_GATE(0x80CA3224, &lit_4295);
-#pragma pop
-
-/* 80CA3228-80CA322C 00006C 0004+00 0/1 0/0 0/0 .rodata @4296 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4296 = 12.0f;
-COMPILER_STRIP_GATE(0x80CA3228, &lit_4296);
-#pragma pop
-
-/* 80CA322C-80CA3230 000070 0004+00 0/1 0/0 0/0 .rodata @4297 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4297 = 6144.0f;
-COMPILER_STRIP_GATE(0x80CA322C, &lit_4297);
-#pragma pop
-
-/* 80CA3230-80CA3234 000074 0004+00 0/2 0/0 0/0 .rodata @4298 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4298 = 32768.0f;
-COMPILER_STRIP_GATE(0x80CA3230, &lit_4298);
-#pragma pop
-
-/* 80CA3234-80CA3238 000078 0004+00 0/2 0/0 0/0 .rodata @4299 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4299 = 200.0f;
-COMPILER_STRIP_GATE(0x80CA3234, &lit_4299);
-#pragma pop
-
-/* 80CA3238-80CA323C 00007C 0004+00 0/1 0/0 0/0 .rodata @4300 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4300 = 1050.0f;
-COMPILER_STRIP_GATE(0x80CA3238, &lit_4300);
-#pragma pop
-
-/* 80CA323C-80CA3244 000080 0008+00 0/1 0/0 0/0 .rodata @4302 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4302[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CA323C, &lit_4302);
-#pragma pop
-
/* 80CA1184-80CA1904 000CC4 0780+00 4/0 0/0 0/0 .text walk__10daObjNAN_cFv */
void daObjNAN_c::walk() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ field_0x7e0 = 180;
+ field_0x7e2 = (u8)(cM_rndF(30.0f) + 18.0f);
+ field_0x7f8 = 600;
+ field_0x7fc = 0;
+ speedF = 0.0f;
+ field_0x7d0++;
+ } else if (field_0x7d0 == -1) {
+ speedF = 0.0f;
+ } else {
+ field_0x7fc = nan_WalkAnm();
+ f32 dVar15;
+ if (field_0x7fc != 0) {
+ dVar15 = 0.0f;
+ speedF = 0;
+ } else {
+ dVar15 = 0.2f;
+ if (60.0f < mMorf->getFrame() ||
+ (30.0f < mMorf->getFrame() && mMorf->getFrame() < 40.0f))
+ {
+ dVar15 = 0.0f;
+ }
+ }
+ if (field_0x7da.x != field_0x7d4.x ||
+ field_0x7da.z != field_0x7d4.z)
+ {
+ dVar15 = 0.0f;
+ speedF = 0;
+ }
+ cLib_chaseF(&speedF, dVar15, 0.02f);
+ nan_posMove();
+ if (mDraw) {
+ nan_setParticle();
+ }
+ dBgS_LinChk adStack_c8;
+ dBgS_LinChk adStack_138;
+ cXyz cStack_170(0.0f, 20.0f, 0.0f);
+ cXyz cStack_17c(0.0f, -20.0f, 0.0f);
+ cXyz cStack_188(0.0f, 20.0f, 12.0f);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(field_0x7d4);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ mDoMtx_stack_c::multVec(&cStack_170, &cStack_170);
+ mDoMtx_stack_c::multVec(&cStack_17c, &cStack_17c);
+ mDoMtx_stack_c::multVec(&cStack_188, &cStack_188);
+ adStack_c8.SetObj();
+ adStack_138.SetObj();
+ adStack_c8.Set(&cStack_170, &cStack_17c, NULL);
+ adStack_138.Set(&cStack_170, &cStack_188, NULL);
+ if (dComIfG_Bgsp().LineCross(&adStack_c8)) {
+ cM3dGPla plane1;
+ dComIfG_Bgsp().GetTriPla(adStack_c8, &plane1);
+ const cXyz* normal = plane1.GetNP();
+ cXyz cStack_194(0.0f, 0.0f, 0.0f);
+ cXyz cStack_1a0(0.0f, normal->y, normal->z);
+ f32 uVar14 = cStack_194.abs(cStack_1a0);
+ current.pos = adStack_c8.GetCross();
+ field_0x7da.x = cM_atan2s(normal->z, normal->y);
+ field_0x7da.z = -cM_atan2s(normal->x, uVar14);
+ if (dComIfG_Bgsp().LineCross(&adStack_138)) {
+ cM3dGPla plane2;
+ dComIfG_Bgsp().GetTriPla(adStack_138, &plane2);
+ normal = plane2.GetNP();
+ current.pos = old.pos;
+ field_0x7e4 = cM_atan2s(normal->x, normal->z) + cM_rndFX(6144.0f);
+ setAction(&daObjNAN_c::turn);
+ return;
+ } else {
+
+ }
+ } else {
+ current.pos = old.pos;
+ field_0x7e4 = current.angle.y - 0x8000 + cM_rndFX(6144.0f);
+ setAction(&daObjNAN_c::turn);
+ return;
+ }
+
+ if (field_0x7f8 == 0) {
+ field_0x7e4 = cM_rndFX(32768.0f);
+ setAction(&daObjNAN_c::turn);
+ return;
+ } else if (field_0x7e0 == 0 && home.pos.abs(current.pos) > 200.0f) {
+ cXyz local_1ac;
+ local_1ac = home.pos - current.pos;
+ local_1ac.x += cM_rndFX(1050.0f);
+ local_1ac.z += cM_rndFX(1050.0f);
+ field_0x7e4 = cM_atan2s(local_1ac.x, local_1ac.z);
+ setAction(&daObjNAN_c::turn);
+ return;
+ } else {
+ return;
+ }
+ }
}
-/* ############################################################################################## */
-/* 80CA32A0-80CA32A0 0000E4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80CA32A6 = "R_SP160";
-#pragma pop
-
/* 80CA1904-80CA1A20 001444 011C+00 1/0 0/0 0/0 .text bin_wait__10daObjNAN_cFv */
void daObjNAN_c::bin_wait() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ fopAcM_OnStatus(this, 0x4000);
+ mDraw = false;
+ field_0x7d0++;
+ } else if (field_0x7d0 != -1 && field_0x56C != 0) {
+ current.angle.y = daPy_getPlayerActorClass()->current.angle.y - 0x4000;
+ if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0 &&
+ dComIfGp_getStartStageRoomNo() == 3)
+ {
+ field_0x7fa = 1;
+ mDraw = true;
+ setAction(&daObjNAN_c::drop);
+ } else {
+ setAction(&daObjNAN_c::bin_action);
+ }
+ }
}
-/* ############################################################################################## */
-/* 80CA3244-80CA3248 000088 0004+00 0/1 0/0 0/0 .rodata @4362 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4362 = -2.0f;
-COMPILER_STRIP_GATE(0x80CA3244, &lit_4362);
-#pragma pop
-
-/* 80CA3248-80CA324C 00008C 0004+00 0/1 0/0 0/0 .rodata @4363 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4363 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CA3248, &lit_4363);
-#pragma pop
-
-/* 80CA324C-80CA3250 000090 0004+00 0/1 0/0 0/0 .rodata @4364 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4364 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CA324C, &lit_4364);
-#pragma pop
-
-/* 80CA3250-80CA3254 000094 0004+00 0/1 0/0 0/0 .rodata @4365 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4365 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CA3250, &lit_4365);
-#pragma pop
-
-/* 80CA3254-80CA3258 000098 0004+00 0/1 0/0 0/0 .rodata @4366 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4366 = 62.0f;
-COMPILER_STRIP_GATE(0x80CA3254, &lit_4366);
-#pragma pop
-
-/* 80CA3258-80CA325C 00009C 0004+00 0/1 0/0 0/0 .rodata @4367 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4367 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80CA3258, &lit_4367);
-#pragma pop
-
-/* 80CA325C-80CA3264 0000A0 0008+00 0/1 0/0 0/0 .rodata @4368 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4368[8] = {
- 0x3F, 0xB9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A,
-};
-COMPILER_STRIP_GATE(0x80CA325C, &lit_4368);
-#pragma pop
-
/* 80CA1A20-80CA1B50 001560 0130+00 1/0 0/0 0/0 .text bin_action__10daObjNAN_cFv */
void daObjNAN_c::bin_action() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ mDraw = true;
+ gravity = -2.0f;
+ maxFallSpeed = gravity;
+ scale.setall(0.4f);
+ field_0x7e0 = 10.0f;
+ field_0x7d0++;
+ } else if (field_0x7d0 == -1) {
+ gravity = 0.0f;
+ maxFallSpeed = 0.0f;
+ } else {
+ f32 newScale = scale.x;
+ if (mDraw) {
+ nan_setParticle();
+ }
+ fopAcM_posMoveF(this, 0);
+ if (field_0x7e0 != 0) {
+ cLib_chaseF(&newScale, 0.6f, 0.1f);
+ } else {
+ cLib_addCalc2(&newScale, 0.0f, 62.0f, 0.05f);
+ scale.setall(newScale);
+ if (newScale < 0.1) {
+ fopAcM_delete(this);
+ return;
+ }
+ }
+ scale.setall(newScale);
+ }
}
/* 80CA1B50-80CA1D5C 001690 020C+00 6/6 0/0 0/0 .text nan_setParticle__10daObjNAN_cFv */
void daObjNAN_c::nan_setParticle() {
- // NONMATCHING
+ if (CheckZ()) {
+ cLib_chaseF(&field_0x7e8, 0.0f, 1.0f);
+ } else {
+ cLib_chaseF(&field_0x7e8, 1.0f, 1.0f);
+ }
+ if (field_0x7fa != 2) {
+ if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0) {
+ if (strcmp("R_SP160", dComIfGp_getStartStageName()) != 0) {
+ return;
+ }
+ if (dComIfGp_getStartStageRoomNo() == 3) {
+ return;
+ }
+ }
+ mParticleKey1 = dComIfGp_particle_set(mParticleKey1, 0xa1b, &current.pos, &tevStr,
+ &shape_angle, 0, 0xff, 0, -1, 0, 0, 0);
+ JPABaseEmitter* pEmitter = (JPABaseEmitter*)dComIfGp_particle_getEmitter(mParticleKey1);
+ if (pEmitter != NULL) {
+ pEmitter->setGlobalParticleScale(field_0x7e8 * scale.x, field_0x7e8 * scale.x);
+ }
+ mParticleKey2 = dComIfGp_particle_set(mParticleKey2, 0xa1c, &current.pos, &tevStr,
+ &shape_angle, 0, 0xff, 0, -1, 0, 0, 0);
+ pEmitter = dComIfGp_particle_getEmitter(mParticleKey2);
+ if (pEmitter != NULL) {
+ pEmitter->setGlobalParticleScale(field_0x7e8 * scale.x, field_0x7e8 * scale.x);
+ }
+ mCreatureSound.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1);
+ }
}
-/* ############################################################################################## */
-/* 80CA3264-80CA3268 0000A8 0004+00 0/2 0/0 0/0 .rodata @4491 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4491 = -5.0f;
-COMPILER_STRIP_GATE(0x80CA3264, &lit_4491);
-#pragma pop
-
/* 80CA1D5C-80CA1F60 00189C 0204+00 1/0 0/0 0/0 .text hook__10daObjNAN_cFv */
void daObjNAN_c::hook() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz cStack_b0(0.0f, -5.0f, 0.0f);
+ mSph.SetTgType(0);
+ player->setHookshotCarryOffset(fopAcM_GetID(this), &cStack_b0);
+ field_0x7d0++;
+ } else if (field_0x7d0 == -1) {
+ mSph.SetTgType(0x14040);
+ home.pos = current.pos;
+ } else {
+ if (mDraw) {
+ nan_setParticle();
+ }
+ if (!fopAcM_checkStatus(this, 0x100000)) {
+ setAction(&daObjNAN_c::drop);
+ }
+ dBgS_LinChk linkChk;
+ linkChk.SetObj();
+ linkChk.Set(&old.pos, &current.pos, NULL);
+ if (dComIfG_Bgsp().LineCross(&linkChk)) {
+ cM3dGPla plane;
+ cXyz local_bc;
+ dComIfG_Bgsp().GetTriPla(linkChk, &plane);
+ const cXyz* normal = plane.GetNP();
+ local_bc = linkChk.GetCross();
+ local_bc.x += normal->x * 20.0f;
+ local_bc.y += normal->y * 20.0f;
+ local_bc.z += normal->z * 20.0f;
+ current.pos = old.pos = local_bc;
+ }
+ }
}
-/* ############################################################################################## */
-/* 80CA3268-80CA326C 0000AC 0004+00 0/1 0/0 0/0 .rodata @4601 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4601 = 100.0f;
-COMPILER_STRIP_GATE(0x80CA3268, &lit_4601);
-#pragma pop
-
/* 80CA1F60-80CA2368 001AA0 0408+00 1/0 0/0 0/0 .text boomerang__10daObjNAN_cFv */
void daObjNAN_c::boomerang() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ mSph.SetTgType(0);
+ mSph.GetTgHitGObj();
+ mBoomerangMove.initOffset(&current.pos);
+ field_0x7d4.setall(0);
+ field_0x7da.setall(0);
+ field_0x7d0++;
+ } else if (field_0x7d0 == -1) {
+ mSph.SetTgType(0x14040);
+ home.pos = current.pos;
+ } else {
+ daPy_getPlayerActorClass();
+ if (mDraw) {
+ nan_setParticle();
+ }
+ if (mBoomerangMove.posMove(&current.pos, &current.angle.y, NULL, 0x1c00) == 0) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ dBgS_LinChk linChk;
+ cXyz cStack_cc;
+ cXyz cStack_d8(0.0f, 0.0f, 100.0f);
+ cStack_cc = player->current.pos;
+ cStack_cc.y += 200.0f;
+ mDoMtx_stack_c::transS(cStack_cc);
+ mDoMtx_stack_c::YrotM(cM_rndFX(32768.0f));
+ mDoMtx_stack_c::multVec(&cStack_d8, &cStack_d8);
+ linChk.SetObj();
+ linChk.Set(&cStack_cc, &cStack_d8, NULL);
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla plane;
+ dComIfG_Bgsp().GetTriPla(linChk, &plane);
+ const cXyz* normal = plane.GetNP();
+ cXyz cStack_e4(0.0f, 0.0f, 0.0f);
+ cXyz cStack_f0(0.0f, normal->y, normal->z);
+ f32 uVar11 = cStack_e4.abs(cStack_f0);
+ current.pos = old.pos = linChk.GetCross();
+ s16 uVar7 = cM_atan2s(normal->z, normal->y);
+ field_0x7da.x = uVar7;
+ field_0x7d4.x = uVar7;
+ s16 sVar8 = -cM_atan2s(normal->x, uVar11);
+ field_0x7da.z = sVar8;
+ field_0x7d4.z = sVar8;
+ setAction(&daObjNAN_c::walk);
+ } else {
+ current.pos = old.pos = cStack_cc;
+ setAction(&daObjNAN_c::drop);
+ }
+ } else {
+ mBoomerangMove.bgCheckAfterOffset(&current.pos);
+ }
+ }
}
-/* ############################################################################################## */
-/* 80CA326C-80CA3270 0000B0 0004+00 0/1 0/0 0/0 .rodata @4672 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4672 = -30.0f;
-COMPILER_STRIP_GATE(0x80CA326C, &lit_4672);
-#pragma pop
-
/* 80CA2368-80CA2658 001EA8 02F0+00 3/0 0/0 0/0 .text drop__10daObjNAN_cFv */
void daObjNAN_c::drop() {
- // NONMATCHING
+ if (field_0x7d0 == 0) {
+ speedF = 0.0f;
+ gravity = -5.0f;
+ maxFallSpeed = -30.0f;
+ field_0x7d4.setall(0);
+ field_0x7da.setall(0);
+ field_0x7d0++;
+ } else if (field_0x7d0 == -1) {
+ gravity = 0.0f;
+ maxFallSpeed = 0.0f;
+ home.pos = current.pos;
+ } else {
+ dBgS_LinChk linChk;
+ fopAcM_posMoveF(this, NULL);
+ linChk.SetObj();
+ linChk.Set(&old.pos, &current.pos, NULL);
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla plane;
+ dComIfG_Bgsp().GetTriPla(linChk, &plane);
+ const cXyz* normal = plane.GetNP();
+ cXyz cStack_e4(0.0f, 0.0f, 0.0f);
+ cXyz cStack_f0(0.0f, normal->y, normal->z);
+ f32 uVar11 = cStack_e4.abs(cStack_f0);
+ current.pos = old.pos = linChk.GetCross();
+ s16 uVar7 = cM_atan2s(normal->z, normal->y);
+ field_0x7da.x = uVar7;
+ field_0x7d4.x = uVar7;
+ s16 sVar8 = -cM_atan2s(normal->x, uVar11);
+ field_0x7da.z = sVar8;
+ field_0x7d4.z = sVar8;
+ setAction(&daObjNAN_c::walk);
+ }
+
+ }
}
/* 80CA2658-80CA270C 002198 00B4+00 1/1 0/0 0/0 .text hit_check__10daObjNAN_cFv */
void daObjNAN_c::hit_check() {
- // NONMATCHING
+ dCcU_AtInfo local_40;
+ mStts.Move();
+ if (mSph.ChkTgHit()) {
+ local_40.mpCollider = mSph.GetTgHitObj();
+ if (local_40.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) {
+ setAction(&daObjNAN_c::hook);
+ } else {
+ setAction(&daObjNAN_c::boomerang);
+ }
+ }
}
/* 80CA270C-80CA276C 00224C 0060+00 1/1 0/0 0/0 .text action__10daObjNAN_cFv */
void daObjNAN_c::action() {
- // NONMATCHING
+ (this->*mAction)();
+ shape_angle = current.angle;
+ if (field_0x7fa == 0) {
+ Insect_GetDemoMain();
+ }
}
/* ############################################################################################## */
/* 80CA3270-80CA3274 0000B4 0002+02 0/1 0/0 0/0 .rodata l_nan_itemno */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u16 const l_nan_itemno[1 + 1 /* padding */] = {
- 0xC8C9,
- /* padding */
- 0x0000,
+static u8 const l_nan_itemno[2] = {
+ 0xC8, 0xC9,
};
-COMPILER_STRIP_GATE(0x80CA3270, &l_nan_itemno);
-#pragma pop
-
-/* 80CA3274-80CA327C 0000B8 0004+04 1/1 0/0 0/0 .rodata @4742 */
-SECTION_RODATA static f32 const lit_4742[1 + 1 /* padding */] = {
- 10000.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80CA3274, &lit_4742);
-
-/* 80CA327C-80CA3284 0000C0 0008+00 1/1 0/0 0/0 .rodata @4744 */
-SECTION_RODATA static u8 const lit_4744[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CA327C, &lit_4744);
/* 80CA276C-80CA2904 0022AC 0198+00 1/1 0/0 0/0 .text execute__10daObjNAN_cFv */
-void daObjNAN_c::execute() {
- // NONMATCHING
+int daObjNAN_c::execute() {
+ if (ChkGetDemo()) {
+ field_0x57C = field_0x578 + 10000.0f;
+ mCreatureSound.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1);
+ Insect_GetDemoMain();
+ nan_setParticle();
+ return 1;
+ }
+ if (field_0x7e0 != 0) {
+ field_0x7e0--;
+ }
+ if (field_0x7f8 != 0) {
+ field_0x7f8--;
+ }
+
+ if (field_0x7fa == 0) {
+ hit_check();
+ }
+ action();
+ mBrk->play();
+ mBtk->play();
+ mMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ setBaseMtx();
+ if (field_0x7fa == 0) {
+ mSph.SetC(current.pos);
+ mSph.SetR(scale.x * 20.0f);
+ dComIfG_Ccsp()->Set(&mSph);
+ eyePos = current.pos;
+ attention_info.position = eyePos;
+ }
+ return 1;
}
/* ############################################################################################## */
/* 80CA3498-80CA349C 000008 0004+00 2/2 0/0 0/0 .bss None */
-static u8 data_80CA3498[4];
+static u8 l_hio_init;
/* 80CA2904-80CA296C 002444 0068+00 1/1 0/0 0/0 .text _delete__10daObjNAN_cFv */
-void daObjNAN_c::_delete() {
- // NONMATCHING
+int daObjNAN_c::_delete() {
+ dComIfG_resDelete(&mPhase, "I_Nan");
+ if (field_0x7fd != 0) {
+ l_hio_init = 0;
+ }
+ if (heap != NULL) {
+ mMorf->stopZelAnime();
+ }
+ return 1;
}
/* 80CA296C-80CA29EC 0024AC 0080+00 1/1 0/0 0/0 .text setBaseMtx__10daObjNAN_cFv */
void daObjNAN_c::setBaseMtx() {
- // NONMATCHING
+ J3DModel* model = mMorf->getModel();
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(field_0x7d4);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ model->setBaseScale(scale);
+ model->setBaseTRMtx(mDoMtx_stack_c::get());
+ mMorf->modelCalc();
+}
+
+inline int daObjNAN_c::draw() {
+ if (mDraw) {
+ CalcZBuffer(50.0f);
+ J3DModel* model = mMorf->getModel();
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(model, &tevStr);
+ mBtk->entry(model->getModelData());
+ mBrk->entry(model->getModelData());
+ if (field_0x7fa != 2) {
+ fopAcM_setEffectMtx(this, model->getModelData());
+ mMorf->entryDL();
+ if (field_0x7fa != 1) {
+ dBgS_GndChk gndChk;
+ cXyz cStack_88(current.pos);
+ cStack_88.y += 20.0f;
+ gndChk.SetPos(&cStack_88);
+ f32 groundCross = dComIfG_Bgsp().GroundCross(&gndChk);
+ if (groundCross != 1000000000.0f) {
+ dComIfGd_setSimpleShadow(&current.pos, groundCross, 15.0f, gndChk, 0, -0.6f,
+ dDlst_shadowControl_c::getSimpleTex());
+ }
+ }
+ }
+ }
+ return 1;
}
-/* ############################################################################################## */
-/* 80CA3284-80CA3288 0000C8 0004+00 0/2 0/0 0/0 .rodata @4823 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4823 = 50.0f;
-COMPILER_STRIP_GATE(0x80CA3284, &lit_4823);
-#pragma pop
-
-/* 80CA3288-80CA328C 0000CC 0004+00 0/1 0/0 0/0 .rodata @4824 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4824 = 1000000000.0f;
-COMPILER_STRIP_GATE(0x80CA3288, &lit_4824);
-#pragma pop
-
-/* 80CA328C-80CA3290 0000D0 0004+00 0/1 0/0 0/0 .rodata @4825 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4825 = 15.0f;
-COMPILER_STRIP_GATE(0x80CA328C, &lit_4825);
-#pragma pop
-
-/* 80CA3290-80CA3294 0000D4 0004+00 0/1 0/0 0/0 .rodata @4826 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4826 = -3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80CA3290, &lit_4826);
-#pragma pop
-
/* 80CA29EC-80CA2B48 00252C 015C+00 1/0 0/0 0/0 .text daObjNAN_Draw__FP10daObjNAN_c */
-static void daObjNAN_Draw(daObjNAN_c* param_0) {
- // NONMATCHING
+static int daObjNAN_Draw(daObjNAN_c* i_this) {
+ return i_this->draw();
}
/* 80CA2B48-80CA2B68 002688 0020+00 2/1 0/0 0/0 .text daObjNAN_Execute__FP10daObjNAN_c */
-static void daObjNAN_Execute(daObjNAN_c* param_0) {
- // NONMATCHING
+static int daObjNAN_Execute(daObjNAN_c* i_this) {
+ return i_this->execute();
}
/* ############################################################################################## */
/* 80CA3294-80CA3298 0000D8 0004+00 0/1 0/0 0/0 .rodata l_musiya_num */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const l_musiya_num = 0x0199019A;
-COMPILER_STRIP_GATE(0x80CA3294, &l_musiya_num);
-#pragma pop
+static u16 const l_musiya_num[2] = {0x0199, 0x019A};
/* 80CA3298-80CA329C 0000DC 0004+00 0/1 0/0 0/0 .rodata l_heapsize */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const l_heapsize = 0x0EE00EC0;
-COMPILER_STRIP_GATE(0x80CA3298, &l_heapsize);
-#pragma pop
-
-/* 80CA329C-80CA32A0 0000E0 0004+00 0/1 0/0 0/0 .rodata @5034 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5034 = -50.0f;
-COMPILER_STRIP_GATE(0x80CA329C, &lit_5034);
-#pragma pop
-
-/* 80CA349C-80CA34A8 00000C 000C+00 1/1 0/0 0/0 .bss @3769 */
-static u8 lit_3769[12];
+static u16 const l_heapsize[2] = {0x0EE0, 0x0EC0};
/* 80CA34A8-80CA34B8 000018 0010+00 2/2 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[16];
+static daObj_NanHIO_c l_HIO;
/* 80CA2B68-80CA2FDC 0026A8 0474+00 1/1 0/0 0/0 .text create__10daObjNAN_cFv */
-void daObjNAN_c::create() {
- // NONMATCHING
-}
-
-/* 80CA2FDC-80CA3024 002B1C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
-
-/* 80CA3024-80CA306C 002B64 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 80CA306C-80CA30C8 002BAC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
+int daObjNAN_c::create() {
+ u8 uVar6 = (fopAcM_GetParam(this) & 0xf00) >> 8;
+ fopAcM_SetupActor(this, daObjNAN_c);
+ int rv = dComIfG_resLoad(&mPhase, "I_Nan");
+ if (rv == cPhs_COMPLEATE_e) {
+ OS_REPORT("NAN PARAM %x\n", fopAcM_GetParam(this));
+ field_0x7fa = fopAcM_GetParam(this) & 3;
+ if (field_0x7fa == 3) {
+ field_0x7fa = 0;
+ }
+ field_0x7fb = (fopAcM_GetParam(this) & 0x10) >> 4;
+ if (field_0x7fb != 0) {
+ scale.setall(l_HIO.field_0x8);
+ } else {
+ scale.setall(l_HIO.field_0xc);
+ }
+ if (uVar6 == 15) {
+ uVar6 = 0;
+ }
+ setItemNo(l_nan_itemno[field_0x7fb]);
+ setSaveBitNo(l_musiya_num[field_0x7fb]);
+ if (field_0x7fa != 2) {
+ if (uVar6 != 0) {
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[0]]) || !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[1]])) {
+ return cPhs_ERROR_e;
+ }
+ } else {
+ if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0 &&
+ dComIfGp_getStartStageRoomNo() == 3)
+ {
+ if (dMenu_Insect_c::isCatchNotGiveInsect(m_itemNo)) {
+ return cPhs_ERROR_e;
+ }
+ if ((field_0x7fb == 0 && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[0]])) ||
+ (field_0x7fb != 0 && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[1]])))
+ {
+ return cPhs_ERROR_e;
+ }
+ }
+ }
+ }
+ OS_REPORT("/////////////// I_NAN /////////////////\n");
+ if (fopAcM_entrySolidHeap(this, useHeapInit, l_heapsize[field_0x7fb]) == 0) {
+ return cPhs_ERROR_e;
+ }
+ OS_REPORT("/////////////// I_NAN SET OK //////////\n");
+ if (l_hio_init == 0) {
+ l_hio_init = 1;
+ field_0x7fd = 1;
+ l_HIO.field_0x4 = -1;
+ }
+ gravity = 0.0f;
+ fopAcM_SetMtx(this, mMorf->getModel()->getBaseTRMtx());
+ fopAcM_SetMin(this, -50.0f, -50.0f, -50.0f);
+ fopAcM_SetMax(this, 50.0f, 50.0f, 50.0f);
+ attention_info.flags = 0;
+ health = 10;
+ field_0x560 = 10;
+ mCreatureSound.init(&current.pos, &eyePos, 3, 1);
+ if (field_0x7fa == 0) {
+ attention_info.distances[fopAc_attn_CARRY_e] = 93;
+ mStts.Init(100, 0, this);
+ mSph.Set(cc_sph_src);
+ mSph.SetStts(&mStts);
+ }
+ if (field_0x7fa == 2) {
+ setAction(&daObjNAN_c::bin_wait);
+ } else {
+ setAction(&daObjNAN_c::wait);
+ }
+ daObjNAN_Execute(this);
+ }
+ return rv;
}
/* 80CA30C8-80CA30D0 002C08 0008+00 1/0 0/0 0/0 .text daObjNAN_IsDelete__FP10daObjNAN_c
*/
-static bool daObjNAN_IsDelete(daObjNAN_c* param_0) {
- return true;
+static int daObjNAN_IsDelete(daObjNAN_c* i_this) {
+ return 1;
}
-/* 80CA30D0-80CA3118 002C10 0048+00 2/1 0/0 0/0 .text __dt__14daObj_NanHIO_cFv */
-daObj_NanHIO_c::~daObj_NanHIO_c() {
- // NONMATCHING
-}
-
-/* 80CA3118-80CA3154 002C58 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_nan_cpp */
-void __sinit_d_a_obj_nan_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80CA3118, __sinit_d_a_obj_nan_cpp);
-#pragma pop
-
-/* 80CA3154-80CA3160 002C94 000C+00 2/0 0/0 0/0 .text Insect_Release__9dInsect_cFv */
-// void dInsect_c::Insect_Release() {
-extern "C" void Insect_Release__9dInsect_cFv() {
- // NONMATCHING
-}
+/* 80CA33D0-80CA33F0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjNAN_Method */
+static actor_method_class l_daObjNAN_Method = {
+ (process_method_func)daObjNAN_Create,
+ (process_method_func)daObjNAN_Delete,
+ (process_method_func)daObjNAN_Execute,
+ (process_method_func)daObjNAN_IsDelete,
+ (process_method_func)daObjNAN_Draw,
+};
-/* 80CA3160-80CA31A8 002CA0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
+/* 80CA33F0-80CA3420 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Nan */
+extern actor_process_profile_definition g_profile_Obj_Nan = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_Nan, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjNAN_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 480, // mPriority
+ &l_daObjNAN_Method, // sub_method
+ 0x000C0120, // mStatus
+ fopAc_ENV_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
/* 80CA32A0-80CA32A0 0000E4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/d_cc_uty.cpp b/src/d/d_cc_uty.cpp
index 317be039d7..2038a6a293 100644
--- a/src/d/d_cc_uty.cpp
+++ b/src/d/d_cc_uty.cpp
@@ -390,23 +390,23 @@ fopAc_ac_c* cc_at_check(fopAc_ac_c* i_enemy, dCcU_AtInfo* i_AtInfo) {
if (tmp.abs() > 100.0f) {
f32 x = i_AtInfo->mpActor->speed.x;
f32 z = i_AtInfo->mpActor->speed.z;
- i_AtInfo->mHitDirection = cM_atan2s(-x, -z) + (s16)cM_rndFX(4000.0f);
+ i_AtInfo->mHitDirection.y = cM_atan2s(-x, -z) + (s16)cM_rndFX(4000.0f);
} else {
if (fopAcM_GetName(i_AtInfo->mpActor) == PROC_BOOMERANG) {
x_diff = i_enemy->current.pos.x - player_p->current.pos.x;
z_diff = i_enemy->current.pos.z - player_p->current.pos.z;
- i_AtInfo->mHitDirection = cM_atan2s(-x_diff, -z_diff) + (s16)cM_rndFX(10000.0f);
+ i_AtInfo->mHitDirection.y = cM_atan2s(-x_diff, -z_diff) + (s16)cM_rndFX(10000.0f);
} else {
x_diff = i_enemy->current.pos.x - i_AtInfo->mpActor->current.pos.x;
z_diff = i_enemy->current.pos.z - i_AtInfo->mpActor->current.pos.z;
- i_AtInfo->mHitDirection = cM_atan2s(-x_diff, -z_diff);
+ i_AtInfo->mHitDirection.y = cM_atan2s(-x_diff, -z_diff);
}
}
if (i_AtInfo->mHitType == HIT_TYPE_LINK_NORMAL_ATTACK &&
player_p->getCutType() == daPy_py_c::CUT_TYPE_HEAD_JUMP)
{
- i_AtInfo->mHitDirection = player_p->shape_angle.y;
+ i_AtInfo->mHitDirection.y = player_p->shape_angle.y;
}
if (i_AtInfo->mpCollider->ChkAtType(AT_TYPE_HOOKSHOT) &&