summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-09-16 07:31:37 -0700
committerGitHub <noreply@github.com>2025-09-16 17:31:37 +0300
commite931b1fb7967ef3419945c1d7a327c8be3879f50 (patch)
tree1a5435bf365540747ad43718617c5537d91396bd
parenta8136496c7c0e35daf5e320eceb6ad745df1068a (diff)
swpush5 / bhashi done (#2663)
* swpush5 done * bhashi done * gptaru done
-rwxr-xr-xconfigure.py6
-rw-r--r--include/JSystem/J3DGraphAnimator/J3DModel.h6
-rw-r--r--include/d/actor/d_a_b_mgn.h1
-rw-r--r--include/d/actor/d_a_obj_bhashi.h65
-rw-r--r--include/d/actor/d_a_obj_gpTaru.h65
-rw-r--r--include/d/actor/d_a_obj_swpush5.h43
-rw-r--r--src/d/actor/d_a_obj_bhashi.cpp1073
-rw-r--r--src/d/actor/d_a_obj_gpTaru.cpp1382
-rw-r--r--src/d/actor/d_a_obj_swpush5.cpp947
9 files changed, 1431 insertions, 2157 deletions
diff --git a/configure.py b/configure.py
index 400f69e83a..e7ae78bef3 100755
--- a/configure.py
+++ b/configure.py
@@ -1615,14 +1615,14 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_maro"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_taro"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_tkj"),
- ActorRel(NonMatching, "d_a_obj_bhashi"),
+ ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_bhashi"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_bkdoor"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_bosswarp"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_cboard"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_digplace"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_eff"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_fmobj"),
- ActorRel(NonMatching, "d_a_obj_gpTaru"),
+ ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_gpTaru"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_hhashi"),
ActorRel(NonMatching, "d_a_obj_kanban2"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_kbacket"),
@@ -1641,7 +1641,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_stick"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_stoneMark"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_swpropeller"),
- ActorRel(NonMatching, "d_a_obj_swpush5"),
+ ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_swpush5"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_yobikusa"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_scene_exit2"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_shop_item"),
diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h
index b21abd212f..fadafe7768 100644
--- a/include/JSystem/J3DGraphAnimator/J3DModel.h
+++ b/include/JSystem/J3DGraphAnimator/J3DModel.h
@@ -98,8 +98,8 @@ public:
Mtx33* getNrmMtxPtr() { return mMtxBuffer->getNrmMtxPtr(); }
Mtx* getDrawMtxPtr() { return mMtxBuffer->getDrawMtxPtr(); }
void setBaseScale(const Vec& scale) { mBaseScale = scale; }
- void setUserArea(u32 area) { mUserArea = area; }
- u32 getUserArea() const { return mUserArea; }
+ void setUserArea(uintptr_t area) { mUserArea = area; }
+ uintptr_t getUserArea() const { return mUserArea; }
Vec* getBaseScale() { return &mBaseScale; }
void setAnmMtx(int jointNo, Mtx m) { mMtxBuffer->setAnmMtx(jointNo, m); }
MtxP getAnmMtx(int jointNo) { return mMtxBuffer->getAnmMtx(jointNo); }
@@ -110,7 +110,7 @@ public:
/* 0x08 */ u32 mFlags;
/* 0x0C */ u32 mDiffFlag;
/* 0x10 */ J3DCalcCallBack mCalcCallBack;
- /* 0x14 */ u32 mUserArea;
+ /* 0x14 */ uintptr_t mUserArea;
/* 0x18 */ Vec mBaseScale;
/* 0x24 */ Mtx mBaseTransformMtx;
/* 0x54 */ Mtx mInternalView;
diff --git a/include/d/actor/d_a_b_mgn.h b/include/d/actor/d_a_b_mgn.h
index 192f2cf98b..2727b6977e 100644
--- a/include/d/actor/d_a_b_mgn.h
+++ b/include/d/actor/d_a_b_mgn.h
@@ -90,6 +90,7 @@ public:
/* 8060F0D0 */ int create();
bool isDown() { return field_0xb01 != 0; }
+ bool isAppear() { return field_0xb05 != 0; }
private:
/* 0x05AC */ request_of_phase_process_class mMgnPhase;
diff --git a/include/d/actor/d_a_obj_bhashi.h b/include/d/actor/d_a_obj_bhashi.h
index 96466edbc3..6c05dac0b9 100644
--- a/include/d/actor/d_a_obj_bhashi.h
+++ b/include/d/actor/d_a_obj_bhashi.h
@@ -2,6 +2,27 @@
#define D_A_OBJ_BHASHI_H
#include "f_op/f_op_actor_mng.h"
+#include "d/d_bg_s_movebg_actor.h"
+#include "d/d_cc_d.h"
+#include "d/d_cc_uty.h"
+
+class Hahen_c {
+public:
+ /* 80577794 */ Hahen_c();
+ /* 805777A4 */ void Wall_Check();
+ /* 80577868 */ void HahenMotion();
+ /* 80577C1C */ bool CheckCull();
+ /* 80577DA4 */ bool checkViewArea();
+ /* 80577FE0 */ void Roll_Set(cXyz*, f32, s16);
+
+ /* 0x00 */ cXyz pos;
+ /* 0x0C */ cXyz speed;
+ /* 0x18 */ cXyz scale;
+ /* 0x24 */ csXyz rotation;
+ /* 0x2A */ csXyz rot_speed;
+ /* 0x30 */ u8 status;
+ /* 0x31 */ u8 field_0x31;
+};
/**
* @ingroup actors-objects
@@ -11,7 +32,7 @@
* @details
*
*/
-class daObjBHASHI_c : public fopAc_ac_c {
+class daObjBHASHI_c : public dBgS_MoveBgActor {
public:
/* 80576A58 */ void initCcCylinder();
/* 80576AC4 */ void setCcCylinder();
@@ -21,29 +42,33 @@ public:
/* 805771EC */ void Obj_Damage();
/* 80577E24 */ void Rolling(cXyz*, f32, f32);
/* 805781FC */ void setBaseMtx();
- /* 80578330 */ void CreateHeap();
- /* 8057842C */ void create();
- /* 80578788 */ void Create();
- /* 805787CC */ void Execute(Mtx**);
- /* 805788EC */ void Draw();
- /* 805789E8 */ void Delete();
+ /* 8057842C */ int create();
+
+ /* 80578330 */ virtual int CreateHeap();
+ /* 80578788 */ virtual int Create();
+ /* 805787CC */ virtual int Execute(Mtx**);
+ /* 805788EC */ virtual int Draw();
+ /* 805789E8 */ virtual int Delete();
private:
- /* 0x568 */ u8 field_0x568[0x1464 - 0x568];
+ /* 0x05A0 */ u8 field_0x5A0[0x05A4 - 0x05A0];
+ /* 0x05A4 */ int mMode;
+ /* 0x05A8 */ s16 field_0x5a8;
+ /* 0x05AC */ Hahen_c mHahen[60];
+ /* 0x11DC */ f32 field_0x11dc;
+ /* 0x11E0 */ s16 field_0x11e0;
+ /* 0x11E2 */ u8 mSwbit;
+ /* 0x11E4 */ s16 mDamageTimer;
+ /* 0x11E6 */ u8 field_0x11E6[0x11EC - 0x11E6];
+ /* 0x11EC */ J3DModel* mpPillarMdl;
+ /* 0x11F0 */ J3DModel* mpHahenMdls[60];
+ /* 0x12E0 */ request_of_phase_process_class mPhase;
+ /* 0x12E8 */ dCcD_Stts mCcStts;
+ /* 0x1324 */ dCcD_Cyl mCcCyl;
+ /* 0x1460 */ u8 field_0x1460;
+ /* 0x1461 */ u8 mIsHahenSimpleEntry;
};
STATIC_ASSERT(sizeof(daObjBHASHI_c) == 0x1464);
-class Hahen_c {
-public:
- /* 80577794 */ Hahen_c();
- /* 805777A4 */ void Wall_Check();
- /* 80577868 */ void HahenMotion();
- /* 80577C1C */ void CheckCull();
- /* 80577DA4 */ void checkViewArea();
- /* 80577FE0 */ void Roll_Set(cXyz*, f32, s16);
- /* 80578744 */ ~Hahen_c();
-};
-
-
#endif /* D_A_OBJ_BHASHI_H */
diff --git a/include/d/actor/d_a_obj_gpTaru.h b/include/d/actor/d_a_obj_gpTaru.h
index 271c94dbfc..448dd389dd 100644
--- a/include/d/actor/d_a_obj_gpTaru.h
+++ b/include/d/actor/d_a_obj_gpTaru.h
@@ -2,6 +2,8 @@
#define D_A_OBJ_GPTARU_H
#include "f_op/f_op_actor_mng.h"
+#include "d/d_bg_s_acch.h"
+#include "d/d_cc_d.h"
/**
* @ingroup actors-objects
@@ -14,13 +16,11 @@
class daGpTaru_c : public fopAc_ac_c {
public:
/* 8057D1F8 */ void setBaseMtx();
- /* 8057D2D0 */ void CreateHeap();
- /* 8057D33C */ void create();
- /* 8057D7CC */ void createHeapCallBack(fopAc_ac_c*);
- /* 8057DB3C */ void chkSinkAll();
- /* 8057DB60 */ void chkWaterLineIn();
+ /* 8057D33C */ int create();
+ /* 8057D7CC */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 8057DB3C */ BOOL chkSinkAll();
+ /* 8057DB60 */ BOOL chkWaterLineIn();
/* 8057DB84 */ void bgCheck();
- /* 8057E224 */ void Execute();
/* 8057E494 */ void mode_proc_call();
/* 8057E5DC */ void mode_init_wait();
/* 8057E618 */ void mode_proc_wait();
@@ -37,22 +37,61 @@ public:
/* 8057EFFC */ void mode_init_sink();
/* 8057F014 */ void mode_proc_sink();
/* 8057F104 */ void breakEffSet();
- /* 8057F284 */ void Draw();
- /* 8057F328 */ void Delete();
- static u8 const mCcDObjInfo[48];
- static u8 mCcDCyl[68];
+ /* 8057D2D0 */ virtual int CreateHeap();
+ /* 8057E224 */ virtual int Execute();
+ /* 8057F284 */ virtual int Draw();
+ /* 8057F328 */ virtual int Delete();
+
+ static const dCcD_SrcGObjInf mCcDObjInfo;
+ static dCcD_SrcCyl mCcDCyl;
private:
- /* 0x568 */ u8 field_0x568[0x9ac - 0x568];
+ /* 0x56C */ request_of_phase_process_class mPhase;
+ /* 0x574 */ J3DModel* mpModel;
+ /* 0x578 */ u8 mMode;
+ /* 0x579 */ u8 mIsPrevCarry;
+ /* 0x57C */ cXyz field_0x57c;
+ /* 0x588 */ cXyz field_0x588;
+ /* 0x594 */ cXyz field_0x594;
+ /* 0x5A0 */ u8 mIsPrevInWater;
+ /* 0x5A4 */ dBgS_ObjAcch mAcch;
+ /* 0x77C */ dBgS_AcchCir mAcchCir;
+ /* 0x7BC */ dCcD_Stts mCcStts;
+ /* 0x7F8 */ dCcD_Cyl mCcCyl;
+ /* 0x934 */ u8 mExploTimer;
+ /* 0x938 */ f32 field_0x938;
+ /* 0x93C */ csXyz field_0x93c;
+ /* 0x944 */ int field_0x944;
+ /* 0x948 */ f32 mExplosionRange;
+ /* 0x94C */ u32 mSmokeEmtID;
+ /* 0x950 */ u32 field_0x950;
+ /* 0x954 */ u8 field_0x954;
+ /* 0x955 */ u8 field_0x955;
+ /* 0x958 */ WIND_INFLUENCE mWind;
+ /* 0x984 */ LIGHT_INFLUENCE mLight;
+ /* 0x9A4 */ f32 mExploWindStrength;
+ /* 0x9A8 */ u8 field_0x9a8;
};
STATIC_ASSERT(sizeof(daGpTaru_c) == 0x9ac);
-class daGpTaru_HIO_c {
+class daGpTaru_HIO_c : public fOpAcm_HIO_entry_c {
public:
/* 8057D0CC */ daGpTaru_HIO_c();
- /* 8057F458 */ ~daGpTaru_HIO_c();
+ /* 8057F458 */ virtual ~daGpTaru_HIO_c() {}
+
+ void genMessage(JORMContext*);
+
+ /* 0x04 */ f32 weight;
+ /* 0x08 */ f32 shake;
+ /* 0x0C */ f32 explosion_range;
+ /* 0x10 */ u8 explosion_wait_time;
+ /* 0x11 */ u8 vibration;
+ /* 0x14 */ cXyz effect_scale;
+ /* 0x20 */ cXyz pre_smoke_scale;
+ /* 0x2C */ f32 smoke_scale;
+ /* 0x30 */ cXyz barrel_scale;
};
diff --git a/include/d/actor/d_a_obj_swpush5.h b/include/d/actor/d_a_obj_swpush5.h
index 39fd0f515e..391c78f4c6 100644
--- a/include/d/actor/d_a_obj_swpush5.h
+++ b/include/d/actor/d_a_obj_swpush5.h
@@ -2,6 +2,7 @@
#define D_A_OBJ_SWPUSH5_H
#include "f_op/f_op_actor_mng.h"
+#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,16 +12,13 @@
* @details Mutli-purpose heavy switch actor. (Iron Boots switch)
*
*/
-class daObjSw5_c : public fopAc_ac_c {
+class daObjSw5_c : public dBgS_MoveBgActor {
public:
/* 8059B804 */ void initBaseMtx();
/* 8059B88C */ void setBaseMtx();
- /* 8059B920 */ void Create();
- /* 8059BA1C */ void CreateHeap();
- /* 8059BB1C */ void create();
- /* 8059BBD4 */ void Execute(Mtx**);
+ /* 8059BB1C */ int create();
/* 8059BC70 */ void setting_ride_flag();
- /* 8059BD24 */ bool checkPushable();
+ /* 8059BD24 */ BOOL checkPushable();
/* 8059BD2C */ void event_proc_call();
/* 8059BE18 */ void actionPauseNoneInit();
/* 8059BE24 */ void actionPauseNone();
@@ -41,11 +39,36 @@ public:
/* 8059C370 */ void modeWaitUpper();
/* 8059C3C4 */ void modeUpperInit();
/* 8059C454 */ void modeUpper();
- /* 8059C4BC */ void Draw();
- /* 8059C560 */ void Delete();
-private:
- /* 0x568 */ u8 field_0x568[0x600 - 0x568];
+ /* 8059BA1C */ virtual int CreateHeap();
+ /* 8059B920 */ virtual int Create();
+ /* 8059BBD4 */ virtual int Execute(Mtx**);
+ /* 8059C4BC */ virtual int Draw();
+ /* 8059C560 */ virtual int Delete();
+
+ u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
+ u8 getSwNo2() { return 0xFF; }
+
+ /* 0x5A0 */ request_of_phase_process_class mPhase;
+ /* 0x5A8 */ J3DModel* mpModel;
+ /* 0x5AC */ u8 mUnkRideTimer;
+ /* 0x5AD */ u8 field_0x5ad;
+ /* 0x5AE */ u8 field_0x5ae;
+ /* 0x5AF */ u8 field_0x5af;
+ /* 0x5B0 */ u8 field_0x5b0;
+ /* 0x5B1 */ u8 field_0x5b1;
+ /* 0x5B2 */ u8 mIsPlayerRideHvy;
+ /* 0x5B3 */ u8 mIsPlayerRideHvyPrev;
+ /* 0x5B4 */ int mCounter;
+ /* 0x5B8 */ dBgW* mpBgW2;
+ /* 0x5BC */ Mtx mMtx;
+ /* 0x5EC */ u8 field_0x5EC[0x5EE - 0x5EC];
+ /* 0x5EE */ u8 mMode;
+ /* 0x5EF */ u8 mAction;
+ /* 0x5F0 */ u8 mPauseTimer;
+ /* 0x5F4 */ f32 mTopPos;
+ /* 0x5F8 */ f32 field_0x5f8;
+ /* 0x5FC */ f32 field_0x5fc;
};
STATIC_ASSERT(sizeof(daObjSw5_c) == 0x600);
diff --git a/src/d/actor/d_a_obj_bhashi.cpp b/src/d/actor/d_a_obj_bhashi.cpp
index bc63c33ecd..dbf37aae61 100644
--- a/src/d/actor/d_a_obj_bhashi.cpp
+++ b/src/d/actor/d_a_obj_bhashi.cpp
@@ -6,613 +6,531 @@
#include "d/dolzel_rel.h"
#include "d/actor/d_a_obj_bhashi.h"
-#include "d/d_cc_d.h"
-#include "dol2asm.h"
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void initCcCylinder__13daObjBHASHI_cFv();
-extern "C" void setCcCylinder__13daObjBHASHI_cFv();
-extern "C" static void daObjBHASHI_Create__FP10fopAc_ac_c();
-extern "C" static void daObjBHASHI_Delete__FP13daObjBHASHI_c();
-extern "C" void Set_Hahen__13daObjBHASHI_cFv();
-extern "C" void Set_Speed__13daObjBHASHI_cFssff();
-extern "C" void Obj_Damage__13daObjBHASHI_cFv();
-extern "C" void Obj_Damage__13daObjBHASHI_cF4cXyz();
-extern "C" void __ct__7Hahen_cFv();
-extern "C" void Wall_Check__7Hahen_cFv();
-extern "C" void HahenMotion__7Hahen_cFv();
-extern "C" void CheckCull__7Hahen_cFv();
-extern "C" void checkViewArea__7Hahen_cFv();
-extern "C" void Rolling__13daObjBHASHI_cFP4cXyzff();
-extern "C" void Roll_Set__7Hahen_cFP4cXyzfs();
-extern "C" void setBaseMtx__13daObjBHASHI_cFv();
-extern "C" static void daObjBHASHI_Draw__FP13daObjBHASHI_c();
-extern "C" static void daObjBHASHI_Execute__FP13daObjBHASHI_c();
-extern "C" void CreateHeap__13daObjBHASHI_cFv();
-extern "C" void create__13daObjBHASHI_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__7Hahen_cFv();
-extern "C" static bool daObjBHASHI_IsDelete__FP13daObjBHASHI_c();
-extern "C" void Create__13daObjBHASHI_cFv();
-extern "C" void Execute__13daObjBHASHI_cFPPA3_A4_f();
-extern "C" void Draw__13daObjBHASHI_cFv();
-extern "C" void Delete__13daObjBHASHI_cFv();
-extern "C" extern char const* const d_a_obj_bhashi__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void mDoLib_project__FP3VecP3Vec();
-extern "C" void fopAcM_SearchByName__FsPP10fopAc_ac_c();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
-extern "C" void addSimpleModel__14dComIfG_play_cFP12J3DModelDataiUc();
-extern "C" void removeSimpleModel__14dComIfG_play_cFP12J3DModelDatai();
-extern "C" void entrySimpleModel__14dComIfG_play_cFP8J3DModeli();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void onSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
-extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc();
-extern "C" void
-set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void StartShock__12dVibration_cFii4cXyz();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-extern "C" void __ct__16dBgS_MoveBgActorFv();
-extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
-extern "C" bool ToFore__16dBgS_MoveBgActorFv();
-extern "C" bool ToBack__16dBgS_MoveBgActorFv();
-extern "C" void
-MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
-extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
-extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
-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 ResetTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void GetAc__8cCcD_ObjFv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __ct__5csXyzFsss();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void ChkUsed__9cBgW_BgIdCFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void __construct_array();
-extern "C" void _savegpr_23();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_23();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80578A88-80578ACC 000000 0044+00 11/11 0/0 0/0 .rodata ccCylSrc$3780 */
-const static dCcD_SrcCyl ccCylSrc = {
- {
- {0x0, {{0x0, 0x0, 0x0}, {0x100000, 0x1f}, 0x0}}, // 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}, // mCenter
- 300.0f, // mRadius
- 2200.0f // mHeight
- } // mCyl
-};
+#include "d/actor/d_a_player.h"
+#include "d/actor/d_a_b_mgn.h"
+#include "d/d_s_play.h"
/* 80576A58-80576AC4 000078 006C+00 1/1 0/0 0/0 .text initCcCylinder__13daObjBHASHI_cFv
*/
void daObjBHASHI_c::initCcCylinder() {
- // NONMATCHING
+ const static dCcD_SrcCyl ccCylSrc = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x100000, 0x1f}, 0x0}}, // 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}, // mCenter
+ 300.0f, // mRadius
+ 2200.0f // mHeight
+ } // mCyl
+ };
+
+ mCcStts.Init(0xFF, 0xFF, this);
+ mCcCyl.Set(ccCylSrc);
+ mCcCyl.SetStts(&mCcStts);
+ mCcCyl.SetC(current.pos);
+ mCcCyl.OnTgShield();
}
-/* ############################################################################################## */
-/* 80578ACC-80578AD0 000044 0004+00 2/2 0/0 0/0 .rodata @3795 */
-SECTION_RODATA static f32 const lit_3795 = -1100.0f;
-COMPILER_STRIP_GATE(0x80578ACC, &lit_3795);
-
/* 80576AC4-80576B34 0000E4 0070+00 1/1 0/0 0/0 .text setCcCylinder__13daObjBHASHI_cFv */
void daObjBHASHI_c::setCcCylinder() {
- // NONMATCHING
+ cXyz pos;
+ pos = current.pos;
+ pos.y += -1100.0f;
+ mCcCyl.SetC(pos);
+ dComIfG_Ccsp()->Set(&mCcCyl);
}
/* 80576B34-80576B54 000154 0020+00 1/0 0/0 0/0 .text daObjBHASHI_Create__FP10fopAc_ac_c
*/
-static void daObjBHASHI_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daObjBHASHI_Create(fopAc_ac_c* i_this) {
+ return ((daObjBHASHI_c*)i_this)->create();
}
/* 80576B54-80576B78 000174 0024+00 1/0 0/0 0/0 .text daObjBHASHI_Delete__FP13daObjBHASHI_c */
-static void daObjBHASHI_Delete(daObjBHASHI_c* param_0) {
- // NONMATCHING
+static int daObjBHASHI_Delete(daObjBHASHI_c* i_this) {
+ i_this->MoveBGDelete();
+ return 1;
}
-/* ############################################################################################## */
-/* 80578AD0-80578AD4 000048 0004+00 1/5 0/0 0/0 .rodata @3829 */
-SECTION_RODATA static f32 const lit_3829 = 1100.0f;
-COMPILER_STRIP_GATE(0x80578AD0, &lit_3829);
-
-/* 80578AD4-80578AD8 00004C 0004+00 1/1 0/0 0/0 .rodata @3830 */
-SECTION_RODATA static f32 const lit_3830 = 50.0f;
-COMPILER_STRIP_GATE(0x80578AD4, &lit_3830);
-
/* 80576B78-80576C50 000198 00D8+00 2/2 0/0 0/0 .text Set_Hahen__13daObjBHASHI_cFv */
void daObjBHASHI_c::Set_Hahen() {
- // NONMATCHING
+ csXyz sp8(0, 0, 0);
+
+ if (mMode == 0) {
+ cXyz sp10(current.pos.x, current.pos.y - 1100.0f, current.pos.z);
+ sp8.y = field_0x11dc;
+ Set_Speed(0, 60, 50.0f, 50.0f);
+ mMode = 2;
+ field_0x11e0 = 1000;
+
+ if (mpBgW != NULL && mpBgW->ChkUsed() && dComIfG_Bgsp().Release(mpBgW)) {
+ OS_REPORT("Release Error\n");
+ }
+ }
}
-/* ############################################################################################## */
-/* 80578AD8-80578ADC 000050 0004+00 0/1 0/0 0/0 .rodata @3922 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3922 = 80.0f;
-COMPILER_STRIP_GATE(0x80578AD8, &lit_3922);
-#pragma pop
-
-/* 80578ADC-80578AE0 000054 0004+00 0/1 0/0 0/0 .rodata @3923 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3923 = 350.0f;
-COMPILER_STRIP_GATE(0x80578ADC, &lit_3923);
-#pragma pop
-
-/* 80578AE0-80578AE4 000058 0004+00 0/1 0/0 0/0 .rodata @3924 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3924 = 2.5f;
-COMPILER_STRIP_GATE(0x80578AE0, &lit_3924);
-#pragma pop
-
-/* 80578AE4-80578AE8 00005C 0004+00 0/1 0/0 0/0 .rodata @3925 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3925 = 5.5f;
-COMPILER_STRIP_GATE(0x80578AE4, &lit_3925);
-#pragma pop
-
-/* 80578AE8-80578AEC 000060 0004+00 0/1 0/0 0/0 .rodata @3926 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3926 = 31.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80578AE8, &lit_3926);
-#pragma pop
-
-/* 80578AEC-80578AF0 000064 0004+00 0/1 0/0 0/0 .rodata @3927 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3927 = 4.5f;
-COMPILER_STRIP_GATE(0x80578AEC, &lit_3927);
-#pragma pop
-
-/* 80578AF0-80578AF4 000068 0004+00 0/2 0/0 0/0 .rodata @3928 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3928 = 2.0f;
-COMPILER_STRIP_GATE(0x80578AF0, &lit_3928);
-#pragma pop
-
-/* 80578AF4-80578AF8 00006C 0004+00 0/1 0/0 0/0 .rodata @3929 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3929 = 30.0f;
-COMPILER_STRIP_GATE(0x80578AF4, &lit_3929);
-#pragma pop
-
-/* 80578AF8-80578AFC 000070 0004+00 0/1 0/0 0/0 .rodata @3930 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3930 = 8192.0f;
-COMPILER_STRIP_GATE(0x80578AF8, &lit_3930);
-#pragma pop
-
-/* 80578AFC-80578B00 000074 0004+00 1/9 0/0 0/0 .rodata @3931 */
-SECTION_RODATA static u8 const lit_3931[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80578AFC, &lit_3931);
-
-/* 80578B00-80578B04 000078 0004+00 0/1 0/0 0/0 .rodata @3932 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3932 = 15000.0f;
-COMPILER_STRIP_GATE(0x80578B00, &lit_3932);
-#pragma pop
-
-/* 80578B04-80578B08 00007C 0004+00 0/1 0/0 0/0 .rodata @3933 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3933 = 65536.0f;
-COMPILER_STRIP_GATE(0x80578B04, &lit_3933);
-#pragma pop
-
-/* 80578B08-80578B0C 000080 0004+00 0/1 0/0 0/0 .rodata @3934 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3934 = 1050.0f;
-COMPILER_STRIP_GATE(0x80578B08, &lit_3934);
-#pragma pop
-
-/* 80578B0C-80578B10 000084 0004+00 0/1 0/0 0/0 .rodata @3935 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3935 = 60.0f;
-COMPILER_STRIP_GATE(0x80578B0C, &lit_3935);
-#pragma pop
-
-/* 80578B10-80578B14 000088 0004+00 0/1 0/0 0/0 .rodata @3936 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3936 = 10.0f;
-COMPILER_STRIP_GATE(0x80578B10, &lit_3936);
-#pragma pop
-
-/* 80578B14-80578B18 00008C 0004+00 0/1 0/0 0/0 .rodata @3937 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3937 = 20.0f;
-COMPILER_STRIP_GATE(0x80578B14, &lit_3937);
-#pragma pop
-
-/* 80578B18-80578B1C 000090 0004+00 0/1 0/0 0/0 .rodata @3938 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3938 = 1750.0f;
-COMPILER_STRIP_GATE(0x80578B18, &lit_3938);
-#pragma pop
-
-/* 80578B1C-80578B20 000094 0004+00 0/1 0/0 0/0 .rodata @3939 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3939 = 32000.0f;
-COMPILER_STRIP_GATE(0x80578B1C, &lit_3939);
-#pragma pop
-
-/* 80578B20-80578B28 000098 0008+00 0/3 0/0 0/0 .rodata @3942 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3942[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80578B20, &lit_3942);
-#pragma pop
-
/* 80576C50-805771EC 000270 059C+00 1/1 0/0 0/0 .text Set_Speed__13daObjBHASHI_cFssff */
-void daObjBHASHI_c::Set_Speed(s16 param_0, s16 param_1, f32 param_2, f32 param_3) {
- // NONMATCHING
+void daObjBHASHI_c::Set_Speed(s16 param_0, s16 i_hahenNum, f32 param_2, f32 param_3) {
+ csXyz sp24;
+ f32 var_f31;
+ f32 var_f30;
+ s16 rot_y;
+
+ for (int i = param_0; i < i_hahenNum - 40; i++) {
+ mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f),
+ 350.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f),
+ current.pos.z + cM_rndFX(80.0f));
+
+ mHahen[i].scale.set((1.0f + XREG_F(0)) * (2.0f + cM_rndF(5.5f)),
+ (1.0f + XREG_F(0)) * (3.1f + cM_rndF(4.5f)),
+ (1.0f + XREG_F(0)) * (2.5f + cM_rndF(5.5f)));
+
+ var_f30 = nREG_F(1) + (60.0f + (param_2 + cM_rndFX(param_3)));
+ var_f31 = 30.0f + cM_rndFX(30.0f + nREG_F(2));
+ rot_y = nREG_S(0) + (field_0x11dc + (s16)cM_rndFX(8192.0f));
+
+ mHahen[i].speed.set(0.0f, 0.0f, var_f31);
+ mDoMtx_stack_c::YrotS(rot_y);
+ mDoMtx_stack_c::multVec(&mHahen[i].speed, &mHahen[i].speed);
+ mHahen[i].speed.y = var_f31;
+
+ mHahen[i].rot_speed.x = cM_rndFX(15000.0f);
+ mHahen[i].rot_speed.y = cM_rndFX(15000.0f);
+ mHahen[i].rotation.x = cM_rndFX(65536.0f);
+ mHahen[i].rotation.y = cM_rndFX(65536.0f);
+ }
+
+ for (int i = i_hahenNum - 40; i < i_hahenNum - 20; i++) {
+ mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f),
+ 1050.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f),
+ current.pos.z + cM_rndFX(80.0f));
+
+ mHahen[i].scale.set((1.0f + XREG_F(0)) * (2.0f + cM_rndF(5.5f)),
+ (1.0f + XREG_F(0)) * (3.1f + cM_rndF(4.5f)),
+ (1.0f + XREG_F(0)) * (2.5f + cM_rndF(5.5f)));
+
+ var_f30 = nREG_F(3) + (50.0f + cM_rndFX(60.0f));
+ var_f31 = nREG_F(4) + (10.0f + cM_rndFX(20.0f));
+ rot_y = nREG_S(0) + (field_0x11dc + (s16)cM_rndFX(8192.0f));
+
+ mHahen[i].speed.set(0.0f, 0.0f, var_f31);
+ mDoMtx_stack_c::YrotS(rot_y);
+ mDoMtx_stack_c::multVec(&mHahen[i].speed, &mHahen[i].speed);
+ mHahen[i].speed.y = var_f31;
+
+ mHahen[i].rot_speed.x = cM_rndFX(15000.0f);
+ mHahen[i].rot_speed.y = cM_rndFX(15000.0f);
+ mHahen[i].rotation.x = cM_rndFX(65536.0f);
+ mHahen[i].rotation.y = cM_rndFX(65536.0f);
+ }
+
+ for (int i = i_hahenNum - 20; i < i_hahenNum; i++) {
+ mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f),
+ 1750.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f),
+ current.pos.z + cM_rndFX(80.0f));
+
+ mHahen[i].scale.set(2.0f + cM_rndF(5.5f),
+ 3.1f + cM_rndF(4.5f),
+ 2.5f + cM_rndF(5.5f));
+
+ var_f30 = nREG_F(3) + (20.0f + cM_rndFX(20.0f));
+ var_f31 = nREG_F(4) + (10.0f + cM_rndFX(20.0f));
+ rot_y = (s16)cM_rndFX(32000.0f);
+
+ f32 var_f29 = var_f30 * cM_ssin(rot_y);
+ f32 var_f28 = var_f31 + gravity;
+ f32 var_f27 = var_f30 * cM_scos(rot_y);
+
+ mHahen[i].speed.set(var_f29, var_f28, var_f27);
+
+ mHahen[i].rot_speed.x = cM_rndFX(15000.0f);
+ mHahen[i].rot_speed.y = cM_rndFX(15000.0f);
+ mHahen[i].rotation.x = cM_rndFX(65536.0f);
+ mHahen[i].rotation.y = cM_rndFX(65536.0f);
+ }
}
-/* ############################################################################################## */
-/* 80578B28-80578B2C 0000A0 0004+00 0/3 0/0 0/0 .rodata @4028 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4028 = 1.0f;
-COMPILER_STRIP_GATE(0x80578B28, &lit_4028);
-#pragma pop
-
-/* 80578B2C-80578B30 0000A4 0004+00 0/3 0/0 0/0 .rodata @4029 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4029 = -1.0f;
-COMPILER_STRIP_GATE(0x80578B2C, &lit_4029);
-#pragma pop
-
/* 805771EC-80577500 00080C 0314+00 1/1 0/0 0/0 .text Obj_Damage__13daObjBHASHI_cFv */
void daObjBHASHI_c::Obj_Damage() {
- // NONMATCHING
+ if (mDamageTimer == 0) {
+ mCcStts.Move();
+
+ if (mCcCyl.ChkTgHit()) {
+ cXyz& player_pos = fopAcM_GetPosition(daPy_getPlayerActorClass());
+ mDamageTimer = 10;
+
+ fopAc_ac_c* tg_hit_obj = dCc_GetAc(mCcCyl.GetTgHitObj()->GetAc());
+ cXyz* tg_hit_pos = mCcCyl.GetTgHitPosP();
+ s16 rot_y = cLib_targetAngleY(&current.pos, tg_hit_pos);
+ if (fopAcM_GetName(tg_hit_obj) == PROC_B_MGN) {
+ field_0x5a8++;
+
+ fpc_ProcID tg_hit_id = fopAcM_GetID(tg_hit_obj);
+ fopAc_ac_c* mgn_p;
+ if (fopAcM_SearchByName(PROC_B_MGN, &mgn_p) && mgn_p != NULL) {
+ field_0x11dc = cLib_targetAngleY(&fopAcM_GetPosition(mgn_p), &current.pos);
+ }
+
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_MGN_BREAK_PILLAR, &current.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Set_Hahen();
+ dComIfGp_getVibration().StartShock(7, 1, cXyz(0.0f, 1.0f, 0.0f));
+
+ if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this));
+ }
+
+ csXyz eff_rot(0, rot_y, 0);
+ cXyz eff_pos(current.pos.x, current.pos.y - 1100.0f, current.pos.z);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_A), &eff_pos, &tevStr, &eff_rot, NULL);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_B), &eff_pos, &tevStr, &eff_rot, NULL);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_C), &eff_pos, &tevStr, &eff_rot, NULL);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_D), &eff_pos, &tevStr, &eff_rot, NULL);
+ }
+
+ mCcCyl.ResetTgHit();
+ fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x100);
+ }
+ }
}
/* 80577500-80577794 000B20 0294+00 0/0 0/0 1/1 .text Obj_Damage__13daObjBHASHI_cF4cXyz
*/
void daObjBHASHI_c::Obj_Damage(cXyz param_0) {
- // NONMATCHING
+ field_0x11dc = cLib_targetAngleY(&param_0, &current.pos);
+
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_MGN_BREAK_PILLAR, &current.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Set_Hahen();
+ dComIfGp_getVibration().StartShock(7, 1, cXyz(0.0f, 1.0f, 0.0f));
+
+ if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this));
+ }
+
+ csXyz eff_rot(0, field_0x11dc, 0);
+ cXyz eff_pos(current.pos.x, current.pos.y - 1100.0f, current.pos.z);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_A), &eff_pos, &tevStr, &eff_rot, NULL);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_B), &eff_pos, &tevStr, &eff_rot, NULL);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_C), &eff_pos, &tevStr, &eff_rot, NULL);
+ dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_D), &eff_pos, &tevStr, &eff_rot, NULL);
+
+ fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x100);
}
/* 80577794-805777A4 000DB4 0010+00 1/1 0/0 0/0 .text __ct__7Hahen_cFv */
Hahen_c::Hahen_c() {
- // NONMATCHING
+ field_0x31 = 0;
+ status = 0;
}
-/* ############################################################################################## */
-/* 80578B30-80578B34 0000A8 0004+00 1/1 0/0 0/0 .rodata @4114 */
-SECTION_RODATA static f32 const lit_4114 = -1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80578B30, &lit_4114);
-
/* 805777A4-80577868 000DC4 00C4+00 1/1 0/0 0/0 .text Wall_Check__7Hahen_cFv */
void Hahen_c::Wall_Check() {
- // NONMATCHING
+ dBgS_LinChk line_chk;
+ cXyz end_pos(pos.x + speed.x, pos.y, pos.z + speed.z);
+ cXyz start_pos(pos.x, pos.y, pos.z);
+
+ line_chk.Set(&start_pos, &end_pos, NULL);
+ if (dComIfG_Bgsp().LineCross(&line_chk) == true) {
+ speed.x = -(0.05f + nREG_F(18)) * speed.x;
+ speed.z = -(0.05f + nREG_F(18)) * speed.z;
+ }
}
-/* ############################################################################################## */
-/* 80578B34-80578B38 0000AC 0004+00 0/1 0/0 0/0 .rodata @4185 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4185 = 15.0f;
-COMPILER_STRIP_GATE(0x80578B34, &lit_4185);
-#pragma pop
-
-/* 80578B38-80578B40 0000B0 0004+04 0/2 0/0 0/0 .rodata @4186 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4186[1 + 1 /* padding */] = {
- -9.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80578B38, &lit_4186);
-#pragma pop
-
-/* 80578B40-80578B48 0000B8 0008+00 0/4 0/0 0/0 .rodata @4187 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4187[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80578B40, &lit_4187);
-#pragma pop
-
-/* 80578B48-80578B50 0000C0 0008+00 0/4 0/0 0/0 .rodata @4188 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4188[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80578B48, &lit_4188);
-#pragma pop
-
-/* 80578B50-80578B58 0000C8 0008+00 0/4 0/0 0/0 .rodata @4189 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4189[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80578B50, &lit_4189);
-#pragma pop
-
-/* 80578B58-80578B5C 0000D0 0004+00 0/1 0/0 0/0 .rodata @4190 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4190 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80578B58, &lit_4190);
-#pragma pop
-
-/* 80578B5C-80578B60 0000D4 0004+00 0/1 0/0 0/0 .rodata @4191 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4191 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80578B5C, &lit_4191);
-#pragma pop
-
-/* 80578B60-80578B64 0000D8 0004+00 0/1 0/0 0/0 .rodata @4192 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4192 = 4.0f;
-COMPILER_STRIP_GATE(0x80578B60, &lit_4192);
-#pragma pop
-
-/* 80578B64-80578B68 0000DC 0004+00 0/2 0/0 0/0 .rodata @4193 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4193 = 5000.0f;
-COMPILER_STRIP_GATE(0x80578B64, &lit_4193);
-#pragma pop
-
-/* 80578B68-80578B6C 0000E0 0004+00 0/1 0/0 0/0 .rodata @4194 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4194 = 8.0f;
-COMPILER_STRIP_GATE(0x80578B68, &lit_4194);
-#pragma pop
-
-/* 80578B6C-80578B70 0000E4 0004+00 0/1 0/0 0/0 .rodata @4195 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4195 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80578B6C, &lit_4195);
-#pragma pop
-
/* 80577868-80577C1C 000E88 03B4+00 1/1 0/0 0/0 .text HahenMotion__7Hahen_cFv */
void Hahen_c::HahenMotion() {
- // NONMATCHING
+ if (status == 0) {
+ f32 temp_f31 = 5.0f + nREG_F(16);
+ Wall_Check();
+
+ if (pos.y >= 10.0f + temp_f31) {
+ speed.y += -9.0f;
+
+ pos.x += speed.x;
+ pos.y += speed.y;
+ pos.z += speed.z;
+
+ rotation.x += rot_speed.x;
+ rotation.y += rot_speed.y;
+ }
+
+ if (pos.y < 10.0f + temp_f31) {
+ f32 temp_f30 = speed.y;
+ pos.y = 10.0f + temp_f31;
+
+ speed.y = temp_f30 * -(1.0f - (scale.abs() / (15.0f + XREG_F(10))));
+ speed.x *= 0.7f + cM_rndF(0.3f);
+ speed.z *= 0.7f + cM_rndF(0.3f);
+
+ if (speed.y < 4.0f) {
+ status = 1;
+ }
+
+ rot_speed.x = cM_rndFX(5000.0f);
+ rot_speed.y = cM_rndFX(5000.0f);
+ }
+ } else if (status == 1) {
+ if (field_0x31 != 0) {
+ status = 2;
+ }
+
+ if (CheckCull()) {
+ status = 2;
+
+ if (scale.abs() > 8.0f + XREG_F(11)) {
+ scale *= 0.6f + XREG_F(9);
+ }
+
+ field_0x31 = 1;
+ }
+ }
}
-/* ############################################################################################## */
-/* 80578B70-80578B74 0000E8 0004+00 0/2 0/0 0/0 .rodata @4258 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4258 = 1000.0f;
-COMPILER_STRIP_GATE(0x80578B70, &lit_4258);
-#pragma pop
-
/* 80577C1C-80577DA4 00123C 0188+00 1/1 0/0 0/0 .text CheckCull__7Hahen_cFv */
-void Hahen_c::CheckCull() {
- // NONMATCHING
-}
+bool Hahen_c::CheckCull() {
+ if (pos.absXZ(fopAcM_GetPosition(daPy_getPlayerActorClass())) > 1000.0f && !checkViewArea()) {
+ return false;
+ }
-/* ############################################################################################## */
-/* 80578B74-80578B78 0000EC 0004+00 0/1 0/0 0/0 .rodata @4271 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4271 = -50.0f;
-COMPILER_STRIP_GATE(0x80578B74, &lit_4271);
-#pragma pop
-
-/* 80578B78-80578B7C 0000F0 0004+00 0/1 0/0 0/0 .rodata @4272 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4272 = 658.0f;
-COMPILER_STRIP_GATE(0x80578B78, &lit_4272);
-#pragma pop
-
-/* 80578B7C-80578B80 0000F4 0004+00 0/1 0/0 0/0 .rodata @4273 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4273 = 498.0f;
-COMPILER_STRIP_GATE(0x80578B7C, &lit_4273);
-#pragma pop
+ return true;
+}
/* 80577DA4-80577E24 0013C4 0080+00 1/1 0/0 0/0 .text checkViewArea__7Hahen_cFv */
-void Hahen_c::checkViewArea() {
- // NONMATCHING
+bool Hahen_c::checkViewArea() {
+ Vec proj;
+ mDoLib_project(&pos, &proj);
+ return (proj.x >= -50.0f && proj.x <= 658.0f) && (proj.y >= -50.0f && proj.y <= 498.0f);
}
/* 80577E24-80577FE0 001444 01BC+00 1/1 0/0 0/0 .text Rolling__13daObjBHASHI_cFP4cXyzff
*/
-void daObjBHASHI_c::Rolling(cXyz* param_0, f32 param_1, f32 param_2) {
- // NONMATCHING
+void daObjBHASHI_c::Rolling(cXyz* i_pos, f32 i_range, f32 param_2) {
+ fopAcM_GetPosition(daPy_getPlayerActorClass());
+ if (mMode == 2) {
+ for (s16 i = 0; i < 60; i++) {
+ if (i_pos->abs(mHahen[i].pos) < i_range) {
+ mHahen[i].Roll_Set(i_pos, param_2, i);
+ mHahen[i].status = 0;
+ }
+ }
+ }
}
-/* ############################################################################################## */
-/* 80578B80-80578B84 0000F8 0004+00 0/1 0/0 0/0 .rodata @4345 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4345 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80578B80, &lit_4345);
-#pragma pop
-
-/* 80578B84-80578B88 0000FC 0004+00 0/1 0/0 0/0 .rodata @4346 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4346 = 3.0f;
-COMPILER_STRIP_GATE(0x80578B84, &lit_4346);
-#pragma pop
-
-/* 80578B88-80578B8C 000100 0004+00 0/1 0/0 0/0 .rodata @4347 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4347 = 9.0f;
-COMPILER_STRIP_GATE(0x80578B88, &lit_4347);
-#pragma pop
-
/* 80577FE0-805781FC 001600 021C+00 1/1 0/0 0/0 .text Roll_Set__7Hahen_cFP4cXyzfs */
-void Hahen_c::Roll_Set(cXyz* param_0, f32 param_1, s16 param_2) {
- // NONMATCHING
+void Hahen_c::Roll_Set(cXyz* i_pos, f32 param_1, s16 i_no) {
+ f32 temp_f30 = param_1 * (2.0f + nREG_F(10) + cM_rndFX(0.2f));
+ s16 angle = cLib_targetAngleY(&pos, i_pos);
+
+ f32 speed_x = (-1.0f + nREG_F(12)) * param_1 * cM_ssin(angle);
+ f32 temp_f31 = scale.abs();
+ temp_f31 = 3.0f / temp_f31;
+
+ f32 speed_y = temp_f30 - 9.0f;
+ f32 speed_z = (-1.0f + nREG_F(13)) * param_1 * cM_scos(angle);
+
+ speed.set(temp_f31 * speed_x, temp_f31 * speed_y, temp_f31 * speed_z);
+
+ rot_speed.x = cM_rndFX(5000.0f + nREG_F(6));
+ rot_speed.y = cM_rndFX(5000.0f + nREG_F(6));
+ rotation.x += (s16)0x1000;
+ rotation.y += (s16)0x1000;
}
/* 805781FC-805782E4 00181C 00E8+00 1/1 0/0 0/0 .text setBaseMtx__13daObjBHASHI_cFv */
void daObjBHASHI_c::setBaseMtx() {
- // NONMATCHING
+ if (mMode == 2) {
+ for (s16 i = 0; i < 60; i++) {
+ mDoMtx_stack_c::transS(mHahen[i].pos);
+ mDoMtx_stack_c::ZXYrotM(mHahen[i].rotation);
+ mDoMtx_stack_c::scaleM(mHahen[i].scale);
+ mpHahenMdls[i]->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
+ } else {
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mpPillarMdl->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
+
+ mDoMtx_stack_c::transM(0.0f, -1100.0f + yREG_F(10), 0.0f);
+ cMtx_copy(mDoMtx_stack_c::get(), mBgMtx);
}
/* 805782E4-80578310 001904 002C+00 1/0 0/0 0/0 .text daObjBHASHI_Draw__FP13daObjBHASHI_c
*/
-static void daObjBHASHI_Draw(daObjBHASHI_c* param_0) {
- // NONMATCHING
+static int daObjBHASHI_Draw(daObjBHASHI_c* i_this) {
+ return i_this->MoveBGDraw();
}
/* 80578310-80578330 001930 0020+00 2/1 0/0 0/0 .text daObjBHASHI_Execute__FP13daObjBHASHI_c */
-static void daObjBHASHI_Execute(daObjBHASHI_c* param_0) {
- // NONMATCHING
+static int daObjBHASHI_Execute(daObjBHASHI_c* i_this) {
+ return i_this->MoveBGExecute();
}
-/* ############################################################################################## */
-/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80578BA8 = "B_Hashi";
-SECTION_DEAD static char const* const stringBase_80578BB0 = "Lv9_R07_pillar.bmd";
-SECTION_DEAD static char const* const stringBase_80578BC3 = "Lv9_R07_pillar_hahen.bmd";
-#pragma pop
-
/* 80578BF0-80578BF4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_bhashi__stringBase0;
+static char* l_arcName = "B_Hashi";
/* 80578330-8057842C 001950 00FC+00 1/0 0/0 0/0 .text CreateHeap__13daObjBHASHI_cFv */
-void daObjBHASHI_c::CreateHeap() {
- // NONMATCHING
+int daObjBHASHI_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar.bmd");
+ JUT_ASSERT(98, modelData != 0);
+
+ J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd");
+ JUT_ASSERT(102, modelData2 != 0);
+
+ for (int i = 0; i < 60; i++) {
+ mpHahenMdls[i] = mDoExt_J3DModel__create(modelData2, J3DMdlFlag_UseSharedDL, BMD_DEFAULT_DIFF_FLAGS);
+ if (mpHahenMdls[i] == NULL) {
+ return 0;
+ }
+ }
+
+ mpPillarMdl = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS);
+ if (mpPillarMdl == NULL) {
+ return 0;
+ }
+
+ return 1;
+}
+
+/* 8057842C-805786B4 001A4C 0288+00 1/1 0/0 0/0 .text create__13daObjBHASHI_cFv */
+int daObjBHASHI_c::create() {
+ fopAcM_SetupActor(this, daObjBHASHI_c);
+
+ int phase_state = dComIfG_resLoad(&mPhase, l_arcName);
+ if (phase_state == cPhs_COMPLEATE_e) {
+ gravity = -9.0f + nREG_F(0);
+
+ int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "Lv9_R07_pillar.dzb");
+ if (dzb_id == -1) {
+ // "dzb data not found!<%s>"
+ OS_REPORT("dzbデータが見つかりませんでした!<%s>\n\n", l_arcName);
+ }
+
+ JUT_ASSERT(1192, dzb_id != -1);
+ phase_state = MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x8DA0, NULL);
+ if (phase_state == cPhs_ERROR_e) {
+ return phase_state;
+ }
+
+ initCcCylinder();
+ mMode = 0;
+ fopAcM_SetMtx(this, mpPillarMdl->getBaseTRMtx());
+
+ cXyz sp8(current.pos.x, 100.0f + current.pos.y, current.pos.z);
+ if (fopAcM_gc_c::gndCheck(&sp8)) {
+ current.pos.y = fopAcM_gc_c::getGroundY();
+ current.pos.y += 1100.0f;
+ }
+
+ fopAcM_setCullSizeBox(this, -500.0f, 0.0f, -500.0f, 500.0f, 3000.0f, 500.0f);
+
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd");
+ JUT_ASSERT(1219, modelData != 0);
+
+ if (dComIfGp_addSimpleModel(modelData, fopAcM_GetRoomNo(this), 0) == -1) {
+ // "Fire Demon Room Pillar Fragment: simple model entry failed."
+ OS_REPORT("\x1B[43;30m火魔神部屋の柱の破片:シンプルモデル登録失敗しました。\n\x1B[m");
+ }
+
+ mIsHahenSimpleEntry = TRUE;
+ daObjBHASHI_Execute(this);
+ }
+
+ return phase_state;
+}
+
+/* 80578780-80578788 001DA0 0008+00 1/0 0/0 0/0 .text daObjBHASHI_IsDelete__FP13daObjBHASHI_c */
+static int daObjBHASHI_IsDelete(daObjBHASHI_c* i_this) {
+ return 1;
+}
+
+/* 80578788-805787CC 001DA8 0044+00 1/0 0/0 0/0 .text Create__13daObjBHASHI_cFv */
+int daObjBHASHI_c::Create() {
+ fopAcM_setCullSizeBox(this, -1000.0f, -500.0f, -1000.0f, 1000.0f, 500.0f, 1000.0f);
+ return cPhs_COMPLEATE_e;
+}
+
+/* 805787CC-805788EC 001DEC 0120+00 1/0 0/0 0/0 .text Execute__13daObjBHASHI_cFPPA3_A4_f
+ */
+int daObjBHASHI_c::Execute(Mtx** param_0) {
+ if (mMode != 2) {
+ Obj_Damage();
+ }
+
+ if (mMode == 2) {
+ fopAcM_GetPosition(daPy_getPlayerActorClass());
+
+ field_0x11e0--;
+ if (field_0x11e0 <= 0) {
+ field_0x11e0 = 0;
+ }
+
+ for (s16 i = 0; i < 60; i++) {
+ mHahen[i].HahenMotion();
+ }
+
+ fopAc_ac_c* mgn_p;
+ if (fopAcM_SearchByName(PROC_B_MGN, &mgn_p) && mgn_p != NULL && ((daB_MGN_c*)mgn_p)->isAppear()) {
+ Rolling(&fopAcM_GetPosition(mgn_p), 400.0f, 90.0f + yREG_F(0));
+ }
+ }
+
+ *param_0 = &mBgMtx;
+ setBaseMtx();
+
+ if (mMode != 2) {
+ setCcCylinder();
+ }
+
+ if (mDamageTimer != 0) {
+ mDamageTimer--;
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80578B8C-80578B90 000104 0004+00 0/1 0/0 0/0 .rodata @4515 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4515 = 100.0f;
-COMPILER_STRIP_GATE(0x80578B8C, &lit_4515);
-#pragma pop
-
-/* 80578B90-80578B94 000108 0004+00 0/2 0/0 0/0 .rodata @4516 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4516 = -500.0f;
-COMPILER_STRIP_GATE(0x80578B90, &lit_4516);
-#pragma pop
-
-/* 80578B94-80578B98 00010C 0004+00 0/2 0/0 0/0 .rodata @4517 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4517 = 500.0f;
-COMPILER_STRIP_GATE(0x80578B94, &lit_4517);
-#pragma pop
-
-/* 80578B98-80578B9C 000110 0004+00 0/1 0/0 0/0 .rodata @4518 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4518 = 3000.0f;
-COMPILER_STRIP_GATE(0x80578B98, &lit_4518);
-#pragma pop
-
-/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80578BDC = "Lv9_R07_pillar.dzb";
-#pragma pop
+/* 805788EC-805789E8 001F0C 00FC+00 1/0 0/0 0/0 .text Draw__13daObjBHASHI_cFv */
+int daObjBHASHI_c::Draw() {
+ g_env_light.settingTevStruct(8, &current.pos, &tevStr);
+
+ if (mMode == 0) {
+ g_env_light.setLightTevColorType_MAJI(mpPillarMdl, &tevStr);
+ }
+
+ dComIfGd_setListBG();
+
+ if (mMode == 0) {
+ mDoExt_modelUpdateDL(mpPillarMdl);
+ } else {
+ int roomNo = fopAcM_GetRoomNo(this);
+ for (int i = 0; i < 60; i++) {
+ dComIfGp_entrySimpleModel(mpHahenMdls[i], roomNo);
+ }
+ }
+
+ dComIfGd_setList();
+ return 1;
+}
+
+/* 805789E8-80578A80 002008 0098+00 1/0 0/0 0/0 .text Delete__13daObjBHASHI_cFv */
+int daObjBHASHI_c::Delete() {
+ if (mIsHahenSimpleEntry) {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd");
+ dComIfGp_removeSimpleModel(modelData, fopAcM_GetRoomNo(this));
+ }
+
+ dComIfG_resDelete(&mPhase, l_arcName);
+ return 1;
+}
/* 80578BF4-80578C14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjBHASHI_Method */
static actor_method_class l_daObjBHASHI_Method = {
- (process_method_func)daObjBHASHI_Create__FP10fopAc_ac_c,
- (process_method_func)daObjBHASHI_Delete__FP13daObjBHASHI_c,
- (process_method_func)daObjBHASHI_Execute__FP13daObjBHASHI_c,
- (process_method_func)daObjBHASHI_IsDelete__FP13daObjBHASHI_c,
- (process_method_func)daObjBHASHI_Draw__FP13daObjBHASHI_c,
+ (process_method_func)daObjBHASHI_Create,
+ (process_method_func)daObjBHASHI_Delete,
+ (process_method_func)daObjBHASHI_Execute,
+ (process_method_func)daObjBHASHI_IsDelete,
+ (process_method_func)daObjBHASHI_Draw,
};
/* 80578C14-80578C44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_BHASHI */
@@ -632,98 +550,3 @@ extern actor_process_profile_definition g_profile_Obj_BHASHI = {
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
-
-/* 80578C44-80578C50 000054 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 80578C50-80578C5C 000060 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,
-};
-
-/* 80578C5C-80578C84 00006C 0028+00 1/1 0/0 0/0 .data __vt__13daObjBHASHI_c */
-SECTION_DATA extern void* __vt__13daObjBHASHI_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__13daObjBHASHI_cFv,
- (void*)Create__13daObjBHASHI_cFv,
- (void*)Execute__13daObjBHASHI_cFPPA3_A4_f,
- (void*)Draw__13daObjBHASHI_cFv,
- (void*)Delete__13daObjBHASHI_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
-
-/* 8057842C-805786B4 001A4C 0288+00 1/1 0/0 0/0 .text create__13daObjBHASHI_cFv */
-void daObjBHASHI_c::create() {
- // NONMATCHING
-}
-
-/* 805786B4-805786FC 001CD4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
-
-/* 805786FC-80578744 001D1C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 80578744-80578780 001D64 003C+00 1/1 0/0 0/0 .text __dt__7Hahen_cFv */
-Hahen_c::~Hahen_c() {
- // NONMATCHING
-}
-
-/* 80578780-80578788 001DA0 0008+00 1/0 0/0 0/0 .text daObjBHASHI_IsDelete__FP13daObjBHASHI_c */
-static bool daObjBHASHI_IsDelete(daObjBHASHI_c* param_0) {
- return true;
-}
-
-/* ############################################################################################## */
-/* 80578B9C-80578BA0 000114 0004+00 0/1 0/0 0/0 .rodata @4606 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4606 = -1000.0f;
-COMPILER_STRIP_GATE(0x80578B9C, &lit_4606);
-#pragma pop
-
-/* 80578788-805787CC 001DA8 0044+00 1/0 0/0 0/0 .text Create__13daObjBHASHI_cFv */
-void daObjBHASHI_c::Create() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80578BA0-80578BA4 000118 0004+00 1/1 0/0 0/0 .rodata @4626 */
-SECTION_RODATA static f32 const lit_4626 = 400.0f;
-COMPILER_STRIP_GATE(0x80578BA0, &lit_4626);
-
-/* 80578BA4-80578BA8 00011C 0004+00 1/1 0/0 0/0 .rodata @4627 */
-SECTION_RODATA static f32 const lit_4627 = 90.0f;
-COMPILER_STRIP_GATE(0x80578BA4, &lit_4627);
-
-/* 805787CC-805788EC 001DEC 0120+00 1/0 0/0 0/0 .text Execute__13daObjBHASHI_cFPPA3_A4_f
- */
-void daObjBHASHI_c::Execute(Mtx** param_0) {
- // NONMATCHING
-}
-
-/* 805788EC-805789E8 001F0C 00FC+00 1/0 0/0 0/0 .text Draw__13daObjBHASHI_cFv */
-void daObjBHASHI_c::Draw() {
- // NONMATCHING
-}
-
-/* 805789E8-80578A80 002008 0098+00 1/0 0/0 0/0 .text Delete__13daObjBHASHI_cFv */
-void daObjBHASHI_c::Delete() {
- // NONMATCHING
-}
-
-/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_gpTaru.cpp b/src/d/actor/d_a_obj_gpTaru.cpp
index 9e715f1b35..43ebbce7e1 100644
--- a/src/d/actor/d_a_obj_gpTaru.cpp
+++ b/src/d/actor/d_a_obj_gpTaru.cpp
@@ -6,1010 +6,642 @@
#include "d/dolzel_rel.h"
#include "d/actor/d_a_obj_gpTaru.h"
-#include "dol2asm.h"
-
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__14daGpTaru_HIO_cFv();
-extern "C" void __dt__18fOpAcm_HIO_entry_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__10daGpTaru_cFv();
-extern "C" void CreateHeap__10daGpTaru_cFv();
-extern "C" void create__10daGpTaru_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void createHeapCallBack__10daGpTaru_cFP10fopAc_ac_c();
-extern "C" static void bound__FP4cXyzRC13cBgS_PolyInfof();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void chkSinkAll__10daGpTaru_cFv();
-extern "C" void chkWaterLineIn__10daGpTaru_cFv();
-extern "C" void bgCheck__10daGpTaru_cFv();
-extern "C" void Execute__10daGpTaru_cFv();
-extern "C" void mode_proc_call__10daGpTaru_cFv();
-extern "C" void mode_init_wait__10daGpTaru_cFv();
-extern "C" void mode_proc_wait__10daGpTaru_cFv();
-extern "C" void mode_init_carry__10daGpTaru_cFv();
-extern "C" void mode_proc_carry__10daGpTaru_cFv();
-extern "C" void mode_init_drop__10daGpTaru_cFv();
-extern "C" void mode_proc_drop__10daGpTaru_cFv();
-extern "C" void mode_init_roll__10daGpTaru_cFv();
-extern "C" void mode_proc_roll__10daGpTaru_cFv();
-extern "C" void __dt__14dBgS_ObjGndChkFv();
-extern "C" void mode_init_exploInit__10daGpTaru_cFv();
-extern "C" void mode_proc_exploInit__10daGpTaru_cFv();
-extern "C" void mode_init_explosion__10daGpTaru_cFv();
-extern "C" void mode_proc_explosion__10daGpTaru_cFv();
-extern "C" void mode_init_sink__10daGpTaru_cFv();
-extern "C" void mode_proc_sink__10daGpTaru_cFv();
-extern "C" void breakEffSet__10daGpTaru_cFv();
-extern "C" void Draw__10daGpTaru_cFv();
-extern "C" void Delete__10daGpTaru_cFv();
-extern "C" static void daGpTaru_Draw__FP10daGpTaru_c();
-extern "C" static void daGpTaru_Execute__FP10daGpTaru_c();
-extern "C" static void daGpTaru_Delete__FP10daGpTaru_c();
-extern "C" static void daGpTaru_Create__FP10fopAc_ac_c();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void __dt__14daGpTaru_HIO_cFv();
-extern "C" void __sinit_d_a_obj_gpTaru_cpp();
-extern "C" static void func_8057F534();
-extern "C" static void func_8057F53C();
-extern "C" static void func_8057F544();
-extern "C" static void func_8057F54C();
-extern "C" static void func_8057F554();
-extern "C" u8 const mCcDObjInfo__10daGpTaru_c[48];
-extern "C" extern char const* const d_a_obj_gpTaru__stringBase0;
-extern "C" u8 mCcDCyl__10daGpTaru_c[68];
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void scaleM__14mDoMtx_stack_cFfff();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
-extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff();
-extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
-extern "C" void fopKyM_createWpillar__FPC4cXyzfi();
-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 onSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
-extern "C" void
-setModel__18dPa_modelEcallBackFP14JPABaseEmitterP12J3DModelDataRC12dKy_tevstr_cUcPvUcUc();
-extern "C" void
-set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void dKyw_pntwind_set__FP14WIND_INFLUENCE();
-extern "C" void dKyw_pntwind_cut__FP14WIND_INFLUENCE();
-extern "C" void StartShock__12dVibration_cFii4cXyz();
-extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-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 ChkCoHit__12dCcD_GObjInfFv();
-extern "C" void GetCoHitObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void GetAc__8cCcD_ObjFv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void __ml__4cXyzCFf();
-extern "C" void cM_atan2s__Fff();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-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_addCalc__FPfffff();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void seStop__7Z2SeMgrF10JAISoundIDUl();
-extern "C" void __dl__FPv();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_28();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_28();
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mGndCheck__11fopAcM_gc_c[84];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" u8 mEcallback__18dPa_modelEcallBack[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 8057F570-8057F574 000000 0004+00 10/10 0/0 0/0 .rodata @3656 */
-SECTION_RODATA static f32 const lit_3656 = 200.0f;
-COMPILER_STRIP_GATE(0x8057F570, &lit_3656);
-
-/* 8057F574-8057F578 000004 0004+00 0/1 0/0 0/0 .rodata @3657 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3657 = 3.0f;
-COMPILER_STRIP_GATE(0x8057F574, &lit_3657);
-#pragma pop
-
-/* 8057F578-8057F57C 000008 0004+00 0/1 0/0 0/0 .rodata @3658 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3658 = 6.0f;
-COMPILER_STRIP_GATE(0x8057F578, &lit_3658);
-#pragma pop
-
-/* 8057F57C-8057F580 00000C 0004+00 0/1 0/0 0/0 .rodata @3659 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3659 = 8.0f / 5.0f;
-COMPILER_STRIP_GATE(0x8057F57C, &lit_3659);
-#pragma pop
-
-/* 8057F580-8057F584 000010 0004+00 2/10 0/0 0/0 .rodata @3660 */
-SECTION_RODATA static f32 const lit_3660 = 1.0f;
-COMPILER_STRIP_GATE(0x8057F580, &lit_3660);
+#include "d/actor/d_a_obj_eff.h"
+#include "d/actor/d_a_player.h"
+#include "d/d_s_play.h"
+#include "d/d_cc_uty.h"
+#include "f_op/f_op_kankyo_mng.h"
-/* 8057F6A8-8057F6EC 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__10daGpTaru_c */
-SECTION_DATA u8 daGpTaru_c::mCcDCyl[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-/* 8057F6EC-8057F6F8 -00001 000C+00 0/1 0/0 0/0 .data @4338 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4338[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)mode_proc_wait__10daGpTaru_cFv,
-};
-#pragma pop
-
-/* 8057F6F8-8057F704 -00001 000C+00 0/1 0/0 0/0 .data @4339 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4339[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)mode_proc_carry__10daGpTaru_cFv,
-};
-#pragma pop
-
-/* 8057F704-8057F710 -00001 000C+00 0/1 0/0 0/0 .data @4340 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4340[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)mode_proc_drop__10daGpTaru_cFv,
-};
-#pragma pop
-
-/* 8057F710-8057F71C -00001 000C+00 0/1 0/0 0/0 .data @4341 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4341[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)mode_proc_roll__10daGpTaru_cFv,
-};
-#pragma pop
-
-/* 8057F71C-8057F728 -00001 000C+00 0/1 0/0 0/0 .data @4342 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4342[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)mode_proc_exploInit__10daGpTaru_cFv,
-};
-#pragma pop
-
-/* 8057F728-8057F734 -00001 000C+00 0/1 0/0 0/0 .data @4343 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4343[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)mode_proc_explosion__10daGpTaru_cFv,
-};
-#pragma pop
-
-/* 8057F734-8057F740 -00001 000C+00 0/1 0/0 0/0 .data @4344 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_4344[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)mode_proc_sink__10daGpTaru_cFv,
-};
-#pragma pop
-
-/* 8057F740-8057F794 0000B8 0054+00 0/1 0/0 0/0 .data l_mode_func$4337 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_mode_func[84] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 8057F794-8057F7A4 00010C 0010+00 1/1 0/0 0/0 .data effName$4666 */
-SECTION_DATA static u8 effName[16] = {
- 0x87, 0x45, 0x87, 0x47, 0x87, 0x48, 0x87, 0x49, 0x87, 0x4A, 0x87, 0x4B, 0x87, 0x4C, 0x87, 0x4D,
-};
-
-/* 8057F7A4-8057F7C4 -00001 0020+00 1/0 0/0 0/0 .data l_daGpTaru_Method */
-static actor_method_class l_daGpTaru_Method = {
- (process_method_func)daGpTaru_Create__FP10fopAc_ac_c,
- (process_method_func)daGpTaru_Delete__FP10daGpTaru_c,
- (process_method_func)daGpTaru_Execute__FP10daGpTaru_c,
- 0,
- (process_method_func)daGpTaru_Draw__FP10daGpTaru_c,
-};
-
-/* 8057F7C4-8057F7F4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GpTaru */
-extern actor_process_profile_definition g_profile_Obj_GpTaru = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_GpTaru, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daGpTaru_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 509, // mPriority
- &l_daGpTaru_Method, // sub_method
- 0x00044000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 8057F7F4-8057F824 00016C 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */
-SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14dBgS_ObjGndChkFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_8057F544,
- (void*)NULL,
- (void*)NULL,
- (void*)func_8057F554,
- (void*)NULL,
- (void*)NULL,
- (void*)func_8057F54C,
-};
-
-/* 8057F824-8057F830 00019C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
-};
+/* 8057F8E4-8057F920 000014 003C+00 8/8 0/0 0/0 .bss l_HIO */
+static daGpTaru_HIO_c l_HIO;
-/* 8057F830-8057F83C 0001A8 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */
-SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_AcchCirFv,
-};
+/* 8057D0CC-8057D154 0000EC 0088+00 1/1 0/0 0/0 .text __ct__14daGpTaru_HIO_cFv */
+daGpTaru_HIO_c::daGpTaru_HIO_c() {
+ weight = 200.0f;
+ explosion_wait_time = 15;
+ shake = 200.0f;
+ explosion_range = 200.0f;
+ effect_scale.x = 3.0f;
+ effect_scale.y = 3.0f;
+ effect_scale.z = 3.0f;
+ pre_smoke_scale.x = 6.0f;
+ pre_smoke_scale.y = 6.0f;
+ pre_smoke_scale.z = 6.0f;
+ barrel_scale.x = 1.6f;
+ barrel_scale.y = 1.6f;
+ barrel_scale.z = 1.6f;
+ vibration = 5;
+ smoke_scale = 1.0f;
+}
-/* 8057F83C-8057F848 0001B4 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,
-};
+/* 8057D1F8-8057D2D0 000218 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daGpTaru_cFv */
+void daGpTaru_c::setBaseMtx() {
+ scale.x = l_HIO.barrel_scale.x;
+ scale.y = l_HIO.barrel_scale.y;
+ scale.z = l_HIO.barrel_scale.z;
-/* 8057F848-8057F854 0001C0 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,
-};
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
+ mDoMtx_stack_c::ZXYrotM(field_0x93c.x, field_0x93c.y, field_0x93c.z);
+ mDoMtx_stack_c::scaleM(scale.x, scale.y, scale.z);
-/* 8057F854-8057F860 0001CC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
+ cXyz bmd_scale(1.0f, 1.0f, 1.0f);
+ mpModel->setBaseScale(bmd_scale);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
+}
-/* 8057F860-8057F86C 0001D8 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,
-};
+/* 8057D2D0-8057D33C 0002F0 006C+00 1/0 0/0 0/0 .text CreateHeap__10daGpTaru_cFv */
+int daGpTaru_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("K_ktar00", 3);
+ JUT_ASSERT(295, modelData != 0);
-/* 8057F86C-8057F890 0001E4 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */
-SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_ObjAcchFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_8057F53C,
- (void*)NULL,
- (void*)NULL,
- (void*)func_8057F534,
-};
+ mpModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS);
+ if (mpModel == NULL) {
+ return 0;
+ }
-/* 8057F890-8057F8A8 000208 0018+00 1/1 0/0 0/0 .data __vt__10daGpTaru_c */
-SECTION_DATA extern void* __vt__10daGpTaru_c[6] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__10daGpTaru_cFv,
- (void*)Execute__10daGpTaru_cFv,
- (void*)Draw__10daGpTaru_cFv,
- (void*)Delete__10daGpTaru_cFv,
-};
+ return 1;
+}
-/* 8057F8A8-8057F8B4 000220 000C+00 2/2 0/0 0/0 .data __vt__14daGpTaru_HIO_c */
-SECTION_DATA extern void* __vt__14daGpTaru_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14daGpTaru_HIO_cFv,
+/* 8057F6A8-8057F6EC 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__10daGpTaru_c */
+dCcD_SrcCyl daGpTaru_c::mCcDCyl = {
+ daGpTaru_c::mCcDObjInfo,
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 0.0f, // mRadius
+ 0.0f // mHeight
+ } // mCyl
};
-/* 8057F8B4-8057F8C0 00022C 000C+00 3/3 0/0 0/0 .data __vt__18fOpAcm_HIO_entry_c */
-SECTION_DATA extern void* __vt__18fOpAcm_HIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18fOpAcm_HIO_entry_cFv,
+/* 8057F584-8057F5B4 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daGpTaru_c */
+const dCcD_SrcGObjInf daGpTaru_c::mCcDObjInfo = {
+ {0, {{0, 0, 0x1F}, {0xD8FAFDBF, 0x11}, {0x79}}},
+ {dCcD_SE_NONE, 0, 1, 0, 0},
+ {dCcD_SE_NONE, 0, 0, 0, 2},
+ {0},
};
-/* 8057F8C0-8057F8CC 000238 000C+00 4/4 0/0 0/0 .data __vt__14mDoHIO_entry_c */
-SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14mDoHIO_entry_cFv,
-};
+/* 8057D33C-8057D600 00035C 02C4+00 1/1 0/0 0/0 .text create__10daGpTaru_cFv */
+int daGpTaru_c::create() {
+ fopAcM_SetupActor(this, daGpTaru_c);
-/* 8057D0CC-8057D154 0000EC 0088+00 1/1 0/0 0/0 .text __ct__14daGpTaru_HIO_cFv */
-daGpTaru_HIO_c::daGpTaru_HIO_c() {
- // NONMATCHING
-}
+ if (fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF)) {
+ return cPhs_ERROR_e;
+ }
-/* 8057D154-8057D1B0 000174 005C+00 1/0 0/0 0/0 .text __dt__18fOpAcm_HIO_entry_cFv */
-// fOpAcm_HIO_entry_c::~fOpAcm_HIO_entry_c() {
-extern "C" void __dt__18fOpAcm_HIO_entry_cFv() {
- // NONMATCHING
-}
+ int phase_state = dComIfG_resLoad(&mPhase, "K_ktar00");
+ if (phase_state == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x820)) {
+ return cPhs_ERROR_e;
+ }
-/* 8057D1B0-8057D1F8 0001D0 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */
-// mDoHIO_entry_c::~mDoHIO_entry_c() {
-extern "C" void __dt__14mDoHIO_entry_cFv() {
- // NONMATCHING
-}
+ setBaseMtx();
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mpModel->getModelData());
-/* ############################################################################################## */
-/* 8057F8D8-8057F8E4 000008 000C+00 1/1 0/0 0/0 .bss @3645 */
-static u8 lit_3645[12];
+ mAcchCir.SetWall(160.0f, 80.0f);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
-/* 8057F8E4-8057F920 000014 003C+00 8/8 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[60];
+ fopAcM_SetGravity(this, -7.0f);
+ fopAcM_SetMaxFallSpeed(this, -100.0f);
+ fopAcM_SetModel(this, mpModel);
-/* 8057D1F8-8057D2D0 000218 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daGpTaru_cFv */
-void daGpTaru_c::setBaseMtx() {
- // NONMATCHING
-}
+ mCcStts.Init(0xFE, 0xFF, this);
+ mCcCyl.Set(mCcDCyl);
+ mCcCyl.SetStts(&mCcStts);
-/* ############################################################################################## */
-/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8057F664 = "K_ktar00";
-#pragma pop
+ field_0x954 = fopAcM_GetParam(this);
+ fopAcM_OnCarryType(this, fopAcM_CARRY_TYPE_1);
-/* 8057D2D0-8057D33C 0002F0 006C+00 1/0 0/0 0/0 .text CreateHeap__10daGpTaru_cFv */
-void daGpTaru_c::CreateHeap() {
- // NONMATCHING
-}
+ if (field_0x954 == 0) {
+ cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ attention_info.distances[fopAc_attn_CARRY_e] = 42;
+ } else {
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ }
-/* ############################################################################################## */
-/* 8057F584-8057F5B4 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daGpTaru_c */
-SECTION_RODATA u8 const daGpTaru_c::mCcDObjInfo[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,
- 0xD8, 0xFA, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8057F584, &daGpTaru_c::mCcDObjInfo);
-
-/* 8057F5B4-8057F5B8 000044 0004+00 0/1 0/0 0/0 .rodata @3803 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3803 = 160.0f;
-COMPILER_STRIP_GATE(0x8057F5B4, &lit_3803);
-#pragma pop
-
-/* 8057F5B8-8057F5BC 000048 0004+00 0/1 0/0 0/0 .rodata @3804 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3804 = 80.0f;
-COMPILER_STRIP_GATE(0x8057F5B8, &lit_3804);
-#pragma pop
-
-/* 8057F5BC-8057F5C0 00004C 0004+00 1/2 0/0 0/0 .rodata @3805 */
-SECTION_RODATA static f32 const lit_3805 = -7.0f;
-COMPILER_STRIP_GATE(0x8057F5BC, &lit_3805);
-
-/* 8057F5C0-8057F5C4 000050 0004+00 0/1 0/0 0/0 .rodata @3806 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3806 = -100.0f;
-COMPILER_STRIP_GATE(0x8057F5C0, &lit_3806);
-#pragma pop
-
-/* 8057F5C4-8057F5C8 000054 0004+00 3/10 0/0 0/0 .rodata @3807 */
-SECTION_RODATA static u8 const lit_3807[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x8057F5C4, &lit_3807);
+ mIsPrevCarry = fopAcM_checkCarryNow(this) != 0;
+ mode_init_wait();
-/* 8057D33C-8057D600 00035C 02C4+00 1/1 0/0 0/0 .text create__10daGpTaru_cFv */
-void daGpTaru_c::create() {
- // NONMATCHING
-}
+ field_0x93c.x = 0;
+ field_0x93c.y = 0;
+ field_0x93c.z = 0;
-/* 8057D600-8057D648 000620 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ field_0x944 = 0;
+ field_0x938 = 0.0f;
+ mExplosionRange = 80.0f;
+ field_0x955 = 1;
-/* 8057D648-8057D690 000668 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ #ifdef DEBUG
+ l_HIO.entryHIO("火薬樽");
+ #endif
+ }
-/* 8057D690-8057D6EC 0006B0 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 8057D6EC-8057D75C 00070C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
-
-/* 8057D75C-8057D7CC 00077C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
+ return phase_state;
}
/* 8057D7CC-8057D7F8 0007EC 002C+00 1/1 0/0 0/0 .text
* createHeapCallBack__10daGpTaru_cFP10fopAc_ac_c */
-void daGpTaru_c::createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+int daGpTaru_c::createHeapCallBack(fopAc_ac_c* i_this) {
+ return ((daGpTaru_c*)i_this)->CreateHeap();
}
-/* ############################################################################################## */
-/* 8057F5C8-8057F5D0 000058 0008+00 0/3 0/0 0/0 .rodata @3992 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3992[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8057F5C8, &lit_3992);
-#pragma pop
-
-/* 8057F5D0-8057F5D8 000060 0008+00 0/3 0/0 0/0 .rodata @3993 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3993[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8057F5D0, &lit_3993);
-#pragma pop
-
-/* 8057F5D8-8057F5E0 000068 0008+00 0/3 0/0 0/0 .rodata @3994 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3994[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8057F5D8, &lit_3994);
-#pragma pop
-
/* 8057D7F8-8057DAF4 000818 02FC+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */
-static void bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) {
- // NONMATCHING
-}
+static f32 bound(cXyz* param_0, const cBgS_PolyInfo& param_1, f32 param_2) {
+ cM3dGPla plane;
-/* 8057DAF4-8057DB3C 000B14 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla() {
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
-}
+ bool var_r29 = dComIfG_Bgsp().GetTriPla(param_1, &plane);
+ if (var_r29) {
+ cXyz pos;
+ f32 abs = param_0->absXZ();
-/* ############################################################################################## */
-/* 8057F5E0-8057F5E4 000070 0004+00 1/2 0/0 0/0 .rodata @4078 */
-SECTION_RODATA static f32 const lit_4078 = 100.0f;
-COMPILER_STRIP_GATE(0x8057F5E0, &lit_4078);
+ VECReflect(param_0, &plane.mNormal, &pos);
+ *param_0 = (pos * abs) * param_2;
+ return param_0->absXZ();
+ } else {
+ return 0.0f;
+ }
+}
/* 8057DB3C-8057DB60 000B5C 0024+00 1/1 0/0 0/0 .text chkSinkAll__10daGpTaru_cFv */
-void daGpTaru_c::chkSinkAll() {
- // NONMATCHING
+BOOL daGpTaru_c::chkSinkAll() {
+ return mAcch.m_wtr.GetHeight() > 100.0f + current.pos.y;
}
-/* ############################################################################################## */
-/* 8057F5E4-8057F5E8 000074 0004+00 1/1 0/0 0/0 .rodata @4084 */
-SECTION_RODATA static f32 const lit_4084 = 40.0f;
-COMPILER_STRIP_GATE(0x8057F5E4, &lit_4084);
-
/* 8057DB60-8057DB84 000B80 0024+00 3/3 0/0 0/0 .text chkWaterLineIn__10daGpTaru_cFv */
-void daGpTaru_c::chkWaterLineIn() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8057F5E8-8057F5EC 000078 0004+00 0/1 0/0 0/0 .rodata @4268 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4268 = 8.0f;
-COMPILER_STRIP_GATE(0x8057F5E8, &lit_4268);
-#pragma pop
-
-/* 8057F5EC-8057F5F0 00007C 0004+00 0/1 0/0 0/0 .rodata @4269 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4269 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x8057F5EC, &lit_4269);
-#pragma pop
-
-/* 8057F5F0-8057F5F4 000080 0004+00 0/1 0/0 0/0 .rodata @4270 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4270 = 5.0f;
-COMPILER_STRIP_GATE(0x8057F5F0, &lit_4270);
-#pragma pop
-
-/* 8057F5F4-8057F5F8 000084 0004+00 0/2 0/0 0/0 .rodata @4271 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4271 = -15.0f;
-COMPILER_STRIP_GATE(0x8057F5F4, &lit_4271);
-#pragma pop
-
-/* 8057F5F8-8057F5FC 000088 0004+00 0/1 0/0 0/0 .rodata @4272 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4272 = 2.0f;
-COMPILER_STRIP_GATE(0x8057F5F8, &lit_4272);
-#pragma pop
-
-/* 8057F5FC-8057F600 00008C 0004+00 0/4 0/0 0/0 .rodata @4273 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4273 = -1.0f;
-COMPILER_STRIP_GATE(0x8057F5FC, &lit_4273);
-#pragma pop
-
-/* 8057F600-8057F604 000090 0004+00 0/1 0/0 0/0 .rodata @4274 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4274 = 5.0f / 3.0f;
-COMPILER_STRIP_GATE(0x8057F600, &lit_4274);
-#pragma pop
-
-/* 8057F604-8057F608 000094 0004+00 0/3 0/0 0/0 .rodata @4275 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4275 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x8057F604, &lit_4275);
-#pragma pop
+BOOL daGpTaru_c::chkWaterLineIn() {
+ return mAcch.m_wtr.GetHeight() > 40.0f + current.pos.y;
+}
/* 8057DB84-8057E224 000BA4 06A0+00 1/1 0/0 0/0 .text bgCheck__10daGpTaru_cFv */
void daGpTaru_c::bgCheck() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8057F608-8057F60C 000098 0004+00 0/1 0/0 0/0 .rodata @4331 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4331 = 50.0f;
-COMPILER_STRIP_GATE(0x8057F608, &lit_4331);
-#pragma pop
-
-/* 8057F60C-8057F610 00009C 0004+00 0/1 0/0 0/0 .rodata @4332 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4332 = 7.0f;
-COMPILER_STRIP_GATE(0x8057F60C, &lit_4332);
-#pragma pop
-
-/* 8057F610-8057F614 0000A0 0004+00 0/1 0/0 0/0 .rodata @4333 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4333 = 170.0f;
-COMPILER_STRIP_GATE(0x8057F610, &lit_4333);
-#pragma pop
+ bool is_roof_hit = mAcch.ChkRoofHit();
+ bool is_wall_hit = mAcch.ChkWallHit() != 0;
+ bool is_gnd_land = mAcch.ChkGroundLanding();
+ bool is_gnd_hit = mAcch.ChkGroundHit();
+ bool is_water_hit = mAcch.ChkWaterHit();
+ bool is_water_in = mAcch.ChkWaterIn();
+
+ if (is_wall_hit && speed.abs() > 8.0f) {
+ cXyz sp2C(speed);
+ cXyz sp20(speed);
+ bound(&sp2C, mAcchCir, 0.6f);
+
+ speed.set(sp2C);
+ speed.y = sp20.y;
+ speedF = sp2C.absXZ();
+ current.angle.y = cM_atan2s(sp2C.x, sp2C.z);
+ }
+
+ if (is_gnd_land && speed.abs() > 8.0f) {
+ f32 temp_f30 = field_0x594.y;
+ bound(&speed, mAcch.m_gnd, 0.6f);
+
+ speed.y = 0.6f * -temp_f30;
+ if (std::fabs(speed.y) < 5.0f) {
+ speed.y = 0.0f;
+ }
+ }
+
+ if (is_roof_hit) {
+ f32 temp_f31 = field_0x594.y;
+ bound(&speed, mAcch.m_gnd, 0.6f);
+
+ speed.y -= 0.6f * -temp_f31;
+ OS_REPORT("HIT ROOF!!!!spdy<%f>spdy<%f>\n", temp_f31, speed.y);
+ }
+
+ if (is_gnd_land && mMode == 2) {
+ mode_init_roll();
+ }
+
+ if (mMode == 0 || mMode == 2 || mMode == 1) {
+ f32 wtr_height = mAcch.m_wtr.GetHeight();
+ if (is_water_hit) {
+ f32 spd_y = speed.y;
+
+ if (chkWaterLineIn() && mMode != 1) {
+ mode_init_sink();
+ }
+
+ if (is_water_in && !mIsPrevInWater) {
+ cXyz pos(current.pos);
+ pos.y = wtr_height;
+
+ if (spd_y < -15.0f) {
+ fopKyM_createWpillar(&pos, 2.0f, 0);
+ fopAcM_seStart(this, Z2SE_OBJ_FALL_WATER_M, 0);
+ }
+ }
+ }
+ }
+
+ if (is_gnd_hit && (mMode == 2 || mMode == 3) && !is_water_hit) {
+ daObjEff::Act_c::make_land_smoke(&current.pos, l_HIO.smoke_scale);
+ fopAcM_seStart(this, JA_SE_OBJ_PUT_WBOX_S, 0);
+ }
+
+ cXyz hamon_pos(current.pos);
+ hamon_pos.y = mAcch.m_wtr.GetHeight();
+ if (hamon_pos.y > current.pos.y && ((mMode == 6 && !chkSinkAll()) || (mMode == 0 && is_gnd_hit) || (mMode == 1 && is_water_in && !chkSinkAll()))) {
+ fopAcM_effHamonSet(&field_0x950, &hamon_pos, 1.0f, 0.1f);
+ }
+}
/* 8057E224-8057E494 001244 0270+00 1/0 0/0 0/0 .text Execute__10daGpTaru_cFv */
-void daGpTaru_c::Execute() {
- // NONMATCHING
+int daGpTaru_c::Execute() {
+ field_0x594 = speed;
+
+ mode_proc_call();
+
+ field_0x588 = current.pos;
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ field_0x57c = current.pos - field_0x588;
+
+ if (mMode == 1) {
+ current.pos = field_0x588;
+ }
+
+ bgCheck();
+
+ attention_info.position.x = current.pos.x;
+ attention_info.position.y = 50.0f + current.pos.y;
+ attention_info.position.z = current.pos.z;
+ eyePos = attention_info.position;
+
+ mIsPrevInWater = mAcch.ChkWaterIn() != 0;
+
+ setBaseMtx();
+
+ if (mCcCyl.ChkTgHit()) {
+ if (mCcCyl.GetTgHitGObj()->GetAtType() & 0xD8FAFDBF) {
+ if (field_0x955 != 0) {
+ mDoAud_seStart(Z2SE_OBJ_BOMBBARREL_HIT, &current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mode_init_exploInit();
+ field_0x955 = 0;
+ }
+ } else {
+ fopAc_ac_c* tg_hit_actor = dCc_GetAc(mCcCyl.GetTgHitObj()->GetAc());
+ if (tg_hit_actor != NULL && fopAcM_GetName(tg_hit_actor) == PROC_E_WB) {
+ mode_init_explosion();
+ }
+ }
+ }
+
+ if (mCcCyl.ChkCoHit()) {
+ fopAc_ac_c* co_hit_actor = dCc_GetAc(mCcCyl.GetCoHitObj()->GetAc());
+ if (co_hit_actor != NULL && fopAcM_GetName(co_hit_actor) == PROC_E_WB) {
+ if (co_hit_actor->speedF >= 7.0f) {
+ mode_init_explosion();
+ }
+ }
+ }
+
+ mCcCyl.SetR(mExplosionRange + oREG_F(2));
+ mCcCyl.SetH(170.0f + oREG_F(3));
+ mCcCyl.SetC(current.pos);
+ dComIfG_Ccsp()->Set(&mCcCyl);
+ mCcStts.Move();
+ return 1;
}
-/* ############################################################################################## */
-/* 8057F920-8057F924 000050 0004+00 1/1 0/0 0/0 .bss None */
-static u8 data_8057F920[4];
-
/* 8057E494-8057E5DC 0014B4 0148+00 1/1 0/0 0/0 .text mode_proc_call__10daGpTaru_cFv */
void daGpTaru_c::mode_proc_call() {
- // NONMATCHING
+ static void (daGpTaru_c::*l_mode_func[])() = {
+ &daGpTaru_c::mode_proc_wait,
+ &daGpTaru_c::mode_proc_carry,
+ &daGpTaru_c::mode_proc_drop,
+ &daGpTaru_c::mode_proc_roll,
+ &daGpTaru_c::mode_proc_exploInit,
+ &daGpTaru_c::mode_proc_explosion,
+ &daGpTaru_c::mode_proc_sink,
+ };
+
+ if (fopAcM_checkCarryNow(this) && !mIsPrevCarry) {
+ mode_init_carry();
+ }
+
+ (this->*l_mode_func[mMode])();
+
+ mIsPrevCarry = fopAcM_checkCarryNow(this) != 0;
}
/* 8057E5DC-8057E618 0015FC 003C+00 2/2 0/0 0/0 .text mode_init_wait__10daGpTaru_cFv */
void daGpTaru_c::mode_init_wait() {
- // NONMATCHING
+ if (field_0x954 == 0) {
+ cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ }
+
+ speedF = 0.0f;
+ gravity = -7.0f;
+ mMode = 0;
}
/* 8057E618-8057E63C 001638 0024+00 1/0 0/0 0/0 .text mode_proc_wait__10daGpTaru_cFv */
void daGpTaru_c::mode_proc_wait() {
- // NONMATCHING
+ fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
}
/* 8057E63C-8057E660 00165C 0024+00 1/1 0/0 0/0 .text mode_init_carry__10daGpTaru_cFv */
void daGpTaru_c::mode_init_carry() {
- // NONMATCHING
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ speedF = 0.0f;
+ mMode = 1;
}
/* 8057E660-8057E700 001680 00A0+00 1/0 0/0 0/0 .text mode_proc_carry__10daGpTaru_cFv */
void daGpTaru_c::mode_proc_carry() {
- // NONMATCHING
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ player->setGrabCollisionOffset(field_0x57c.x, field_0x57c.z, NULL);
+
+ if (!fopAcM_checkCarryNow(this)) {
+ if (chkWaterLineIn()) {
+ mode_init_sink();
+ } else if (fopAcM_GetSpeedF(this) != 0.0f) {
+ mode_init_drop();
+ } else {
+ mode_init_roll();
+ }
+ }
}
/* 8057E700-8057E72C 001720 002C+00 1/1 0/0 0/0 .text mode_init_drop__10daGpTaru_cFv */
void daGpTaru_c::mode_init_drop() {
- // NONMATCHING
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ gravity = -l_HIO.weight;
+ mMode = 2;
}
/* 8057E72C-8057E750 00174C 0024+00 1/0 0/0 0/0 .text mode_proc_drop__10daGpTaru_cFv */
void daGpTaru_c::mode_proc_drop() {
- // NONMATCHING
+ fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
}
/* 8057E750-8057E768 001770 0018+00 2/2 0/0 0/0 .text mode_init_roll__10daGpTaru_cFv */
void daGpTaru_c::mode_init_roll() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8057F614-8057F618 0000A4 0004+00 0/1 0/0 0/0 .rodata @4521 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4521 = 4.0f;
-COMPILER_STRIP_GATE(0x8057F614, &lit_4521);
-#pragma pop
-
-/* 8057F618-8057F61C 0000A8 0004+00 0/1 0/0 0/0 .rodata @4522 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4522 = -1000000000.0f;
-COMPILER_STRIP_GATE(0x8057F618, &lit_4522);
-#pragma pop
-
-/* 8057F61C-8057F620 0000AC 0004+00 0/1 0/0 0/0 .rodata @4523 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4523 = 0x4645B05B;
-COMPILER_STRIP_GATE(0x8057F61C, &lit_4523);
-#pragma pop
-
-/* 8057F620-8057F624 0000B0 0004+00 0/1 0/0 0/0 .rodata @4524 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4524 = 10.0f;
-COMPILER_STRIP_GATE(0x8057F620, &lit_4524);
-#pragma pop
-
-/* 8057F624-8057F628 0000B4 0004+00 0/1 0/0 0/0 .rodata @4525 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4525 = 0x3C23D70B;
-COMPILER_STRIP_GATE(0x8057F624, &lit_4525);
-#pragma pop
-
-/* 8057F628-8057F62C 0000B8 0004+00 0/2 0/0 0/0 .rodata @4526 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4526 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x8057F628, &lit_4526);
-#pragma pop
-
-/* 8057F62C-8057F630 0000BC 0004+00 0/1 0/0 0/0 .rodata @4527 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4527 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x8057F62C, &lit_4527);
-#pragma pop
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ mMode = 3;
+}
/* 8057E768-8057EB2C 001788 03C4+00 1/0 0/0 0/0 .text mode_proc_roll__10daGpTaru_cFv */
void daGpTaru_c::mode_proc_roll() {
- // NONMATCHING
+ f32 temp_f30 = 70.0f;
+ fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
+
+ dBgS_ObjGndChk gnd_chk;
+ cXyz sp38(current.pos);
+ sp38.y += 4.0f;
+
+ gnd_chk.SetPos(&sp38);
+ f32 gnd_height = dComIfG_Bgsp().GroundCross(&gnd_chk);
+
+ cXyz sp2C;
+ f32 temp_f27 = 0.1f;
+
+ cM3dGPla tripla;
+ bool var_r26 = fopAcM_gc_c::gndCheck(&sp38);
+ bool found_tripla = fopAcM_gc_c::getTriPla(&tripla);
+
+ if (-1000000000.0f != gnd_height && found_tripla) {
+ f32 temp_f28 = cM_scos(cM_deg2s(temp_f30 - 0.5f));
+ sp2C = tripla.mNormal;
+ if (sp2C.y < temp_f28) {
+ cXyz sp20(sp2C);
+ s16 temp_r28 = cM_atan2s(sp20.x, sp20.z);
+
+ f32 var_f31 = 10.0f;
+ var_f31 *= 1.0f - sp2C.y;
+ if (var_f31 < 0.1f) {
+ var_f31 = 0.1f;
+ } else if (var_f31 > 1.0f) {
+ var_f31 = 1.0f;
+ }
+
+ cXyz sp14(speedF * cM_ssin(current.angle.y), 0.0f, speedF * cM_scos(current.angle.y));
+ cXyz sp8(var_f31 * cM_ssin(temp_r28), 0.0f, var_f31 * cM_scos(temp_r28));
+ sp14 += sp8;
+ speedF = std::sqrt(SQUARE(sp14.x) + SQUARE(sp14.z));
+ current.angle.y = cM_atan2s(sp14.x, sp14.z);
+ }
+ }
+
+ speedF *= temp_f27;
+ if (mCcStts.GetCCMoveP()->abs2XZ() > SQUARE(0.1f)) {
+ speedF *= 0.9f;
+ }
+
+ if (mAcch.ChkGroundHit()) {
+ if (speedF < 0.3f) {
+ mode_init_wait();
+ }
+ } else {
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ }
}
-/* 8057EB2C-8057EBA4 001B4C 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */
-// dBgS_ObjGndChk::~dBgS_ObjGndChk() {
-extern "C" void __dt__14dBgS_ObjGndChkFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8057F630-8057F634 0000C0 0004+00 0/1 0/0 0/0 .rodata @4538 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4538 = 500.0f;
-COMPILER_STRIP_GATE(0x8057F630, &lit_4538);
-#pragma pop
-
-/* 8057F634-8057F638 0000C4 0004+00 0/2 0/0 0/0 .rodata @4539 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4539 = 0.5f;
-COMPILER_STRIP_GATE(0x8057F634, &lit_4539);
-#pragma pop
-
/* 8057EBA4-8057EC60 001BC4 00BC+00 1/1 0/0 0/0 .text mode_init_exploInit__10daGpTaru_cFv
*/
void daGpTaru_c::mode_init_exploInit() {
- // NONMATCHING
-}
+ mExploTimer = l_HIO.explosion_wait_time;
+ field_0x938 = l_HIO.shake;
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+
+ mWind.position = current.pos;
+ mWind.mDirection.x = 0.0f;
+ mWind.mDirection.y = 1.0f;
+ mWind.mDirection.z = 0.0f;
+ mWind.mRadius = 500.0f;
+ mWind.field_0x20 = 0.0f;
+ mWind.mStrength = 0.5f;
+ dKyw_pntwind_set(&mWind);
-/* ############################################################################################## */
-/* 8057F638-8057F63C 0000C8 0004+00 0/1 0/0 0/0 .rodata @4574 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4574 = 20.0f;
-COMPILER_STRIP_GATE(0x8057F638, &lit_4574);
-#pragma pop
+ field_0x9a8 = 0;
+ mExploWindStrength = 0.0f;
+ mMode = 4;
+}
/* 8057EC60-8057EE2C 001C80 01CC+00 1/0 0/0 0/0 .text mode_proc_exploInit__10daGpTaru_cFv
*/
void daGpTaru_c::mode_proc_exploInit() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8057F63C-8057F640 0000CC 0004+00 0/1 0/0 0/0 .rodata @4604 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4604 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x8057F63C, &lit_4604);
-#pragma pop
-
-/* 8057F640-8057F644 0000D0 0004+00 0/2 0/0 0/0 .rodata @4605 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4605 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x8057F640, &lit_4605);
-#pragma pop
-
-/* 8057F644-8057F648 0000D4 0004+00 0/1 0/0 0/0 .rodata @4606 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4606 = 99.0f / 100.0f;
-COMPILER_STRIP_GATE(0x8057F644, &lit_4606);
-#pragma pop
-
-/* 8057F648-8057F64C 0000D8 0004+00 0/2 0/0 0/0 .rodata @4607 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4607 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x8057F648, &lit_4607);
-#pragma pop
-
-/* 8057F64C-8057F650 0000DC 0004+00 0/1 0/0 0/0 .rodata @4608 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4608 = 1.0f / 25.0f;
-COMPILER_STRIP_GATE(0x8057F64C, &lit_4608);
-#pragma pop
-
-/* 8057F650-8057F654 0000E0 0004+00 0/1 0/0 0/0 .rodata @4609 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4609 = 0x3A83126F;
-COMPILER_STRIP_GATE(0x8057F650, &lit_4609);
-#pragma pop
+ if (mExploTimer != 0) {
+ mDoAud_seStartLevel(Z2SE_OBJ_BOMBBARREL_IGNITION, &current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mExploTimer--;
+ } else {
+ mDoAud_seStop(Z2SE_OBJ_BOMBBARREL_IGNITION, 0);
+ mode_init_explosion();
+ }
+
+ cXyz sp18(current.pos);
+ sp18.x -= 20.0f;
+ sp18.y += 100.0f * l_HIO.barrel_scale.y;
+
+ mSmokeEmtID = dComIfGp_particle_set(mSmokeEmtID, ID_ZI_J_ARWB_SMOKE_A, &sp18, &tevStr, NULL, &l_HIO.pre_smoke_scale, 0xFF, NULL, -1, NULL, NULL, NULL);
+
+ field_0x93c.x = field_0x938 * cM_scos(field_0x944 * 0x3000);
+ field_0x93c.z = field_0x938 * cM_ssin(field_0x944 * 0x3000);
+ field_0x944++;
+}
/* 8057EE2C-8057EFB0 001E4C 0184+00 2/2 0/0 0/0 .text mode_init_explosion__10daGpTaru_cFv
*/
void daGpTaru_c::mode_init_explosion() {
- // NONMATCHING
+ mWind.mStrength = mExploWindStrength;
+
+ switch (field_0x9a8) {
+ case 0:
+ cLib_addCalc(&mExploWindStrength, 1.0f, 0.5f, 0.4f, 0.01f);
+ if (mExploWindStrength >= 0.99f) {
+ field_0x9a8++;
+ }
+ break;
+ case 1:
+ cLib_addCalc(&mExploWindStrength, 0.0f, 0.05f, 0.04f, 0.001f);
+ if (mExploWindStrength <= 0.01f) {
+ field_0x9a8++;
+ }
+ break;
+ }
+
+ mDoAud_seStart(Z2SE_OBJ_BOMBBARREL_BREAK, &current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ dComIfGp_getVibration().StartShock(l_HIO.vibration, 0xF, cXyz(0.0f, 1.0f, 0.0f));
+ breakEffSet();
+
+ mCcCyl.SetAtType(AT_TYPE_BOMB);
+ mCcCyl.SetAtAtp(4);
+ mExplosionRange = l_HIO.explosion_range;
+ mMode = 5;
}
/* 8057EFB0-8057EFFC 001FD0 004C+00 1/0 0/0 0/0 .text mode_proc_explosion__10daGpTaru_cFv
*/
void daGpTaru_c::mode_proc_explosion() {
- // NONMATCHING
+ fopAcM_onSwitch(this, fopAcM_GetParam(this) & 0xFF);
+ fopAcM_delete(this);
}
/* 8057EFFC-8057F014 00201C 0018+00 2/2 0/0 0/0 .text mode_init_sink__10daGpTaru_cFv */
void daGpTaru_c::mode_init_sink() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8057F654-8057F658 0000E4 0004+00 0/1 0/0 0/0 .rodata @4660 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4660 = 13.0f;
-COMPILER_STRIP_GATE(0x8057F654, &lit_4660);
-#pragma pop
-
-/* 8057F658-8057F65C 0000E8 0004+00 0/1 0/0 0/0 .rodata @4661 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4661 = -10.0f;
-COMPILER_STRIP_GATE(0x8057F658, &lit_4661);
-#pragma pop
-
-/* 8057F65C-8057F660 0000EC 0004+00 0/1 0/0 0/0 .rodata @4662 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4662 = -20.0f;
-COMPILER_STRIP_GATE(0x8057F65C, &lit_4662);
-#pragma pop
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ mMode = 6;
+}
/* 8057F014-8057F104 002034 00F0+00 1/0 0/0 0/0 .text mode_proc_sink__10daGpTaru_cFv */
void daGpTaru_c::mode_proc_sink() {
- // NONMATCHING
-}
+ cLib_addCalc(&speedF, 0.0f, 0.05f, 0.1f, 0.01f);
+ speed.y = cLib_minMaxLimit<f32>(speed.y, -15.0f, 13.0f);
-/* ############################################################################################## */
-/* 8057F660-8057F664 0000F0 0004+00 1/1 0/0 0/0 .rodata @4697 */
-SECTION_RODATA static f32 const lit_4697 = 0.75f;
-COMPILER_STRIP_GATE(0x8057F660, &lit_4697);
+ if (mAcch.ChkGroundHit()) {
+ speedF *= 0.9f;
+ }
-/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8057F66D = "Always";
-SECTION_DEAD static char const* const stringBase_8057F674 = "BreakWoodBox.bmd";
-#pragma pop
+ if (chkWaterLineIn()) {
+ gravity = -10.0f;
+ } else {
+ gravity = -20.0f;
+ }
-/* 8057F104-8057F284 002124 0180+00 1/1 0/0 0/0 .text breakEffSet__10daGpTaru_cFv */
-void daGpTaru_c::breakEffSet() {
- // NONMATCHING
-}
+ fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
-/* 8057F284-8057F328 0022A4 00A4+00 1/0 0/0 0/0 .text Draw__10daGpTaru_cFv */
-void daGpTaru_c::Draw() {
- // NONMATCHING
-}
-
-/* 8057F328-8057F36C 002348 0044+00 1/0 0/0 0/0 .text Delete__10daGpTaru_cFv */
-void daGpTaru_c::Delete() {
- // NONMATCHING
+ if (mAcch.ChkGroundHit()) {
+ cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ } else {
+ cLib_offBit<u32>(attention_info.flags, fopAc_AttnFlag_CARRY_e);
+ }
}
-/* 8057F36C-8057F398 00238C 002C+00 1/0 0/0 0/0 .text daGpTaru_Draw__FP10daGpTaru_c */
-static void daGpTaru_Draw(daGpTaru_c* param_0) {
- // NONMATCHING
-}
+/* 8057F104-8057F284 002124 0180+00 1/1 0/0 0/0 .text breakEffSet__10daGpTaru_cFv */
+void daGpTaru_c::breakEffSet() {
+ cXyz pos(current.pos);
+ cXyz size(0.75f, 0.75f, 0.75f);
-/* 8057F398-8057F3C4 0023B8 002C+00 1/0 0/0 0/0 .text daGpTaru_Execute__FP10daGpTaru_c */
-static void daGpTaru_Execute(daGpTaru_c* param_0) {
- // NONMATCHING
-}
+ J3DModelData* kibako_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", "BreakWoodBox.bmd");
+ JUT_ASSERT(1259, kibako_bmd != 0);
-/* 8057F3C4-8057F3F0 0023E4 002C+00 1/0 0/0 0/0 .text daGpTaru_Delete__FP10daGpTaru_c */
-static void daGpTaru_Delete(daGpTaru_c* param_0) {
- // NONMATCHING
-}
+ JPABaseEmitter* emt_p = dComIfGp_particle_set(dPa_RM(ID_ZF_S_M_EXBARREL00BOARD), &pos, NULL, NULL, 0xFF, &dPa_modelEcallBack::getEcallback(), fopAcM_GetRoomNo(this), NULL, NULL, &size);
+ dPa_modelEcallBack::setModel(emt_p, kibako_bmd, tevStr, 3, NULL, 0, 0);
-/* 8057F3F0-8057F410 002410 0020+00 1/0 0/0 0/0 .text daGpTaru_Create__FP10fopAc_ac_c */
-static void daGpTaru_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
+ for (int i = 0; i < 8; i++) {
+ static u16 effName[] = {
+ dPa_RM(ID_ZF_S_EXBARREL01BOARD),
+ dPa_RM(ID_ZF_S_EXBARREL_B),
+ dPa_RM(ID_ZF_S_EXBARREL_C),
+ dPa_RM(ID_ZF_S_EXBARREL_E),
+ dPa_RM(ID_ZF_S_EXBARREL_F),
+ dPa_RM(ID_ZF_S_EXBARREL_G),
+ dPa_RM(ID_ZF_S_EXBARREL_H),
+ dPa_RM(ID_ZF_S_EXBARREL_I),
+ };
-/* 8057F410-8057F458 002430 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
+ dComIfGp_particle_set(effName[i], &pos, &tevStr, NULL, &l_HIO.barrel_scale);
+ }
}
-/* 8057F458-8057F4C4 002478 006C+00 2/1 0/0 0/0 .text __dt__14daGpTaru_HIO_cFv */
-daGpTaru_HIO_c::~daGpTaru_HIO_c() {
- // NONMATCHING
-}
+/* 8057F284-8057F328 0022A4 00A4+00 1/0 0/0 0/0 .text Draw__10daGpTaru_cFv */
+int daGpTaru_c::Draw() {
+ g_env_light.settingTevStruct(16, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
-/* 8057F4C4-8057F534 0024E4 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_gpTaru_cpp */
-void __sinit_d_a_obj_gpTaru_cpp() {
- // NONMATCHING
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(mpModel);
+ dComIfGd_setList();
+ return 1;
}
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x8057F4C4, __sinit_d_a_obj_gpTaru_cpp);
-#pragma pop
+/* 8057F328-8057F36C 002348 0044+00 1/0 0/0 0/0 .text Delete__10daGpTaru_cFv */
+int daGpTaru_c::Delete() {
+ dKyw_pntwind_cut(&mWind);
+ dComIfG_resDelete(&mPhase, "K_ktar00");
-/* 8057F534-8057F53C 002554 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_8057F534() {
- // NONMATCHING
+ #ifdef DEBUG
+ l_HIO.removeHIO(this);
+ #endif
+ return 1;
}
-/* 8057F53C-8057F544 00255C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_8057F53C() {
- // NONMATCHING
+/* 8057F36C-8057F398 00238C 002C+00 1/0 0/0 0/0 .text daGpTaru_Draw__FP10daGpTaru_c */
+static int daGpTaru_Draw(daGpTaru_c* i_this) {
+ return i_this->Draw();
}
-/* 8057F544-8057F54C 002564 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */
-static void func_8057F544() {
- // NONMATCHING
+/* 8057F398-8057F3C4 0023B8 002C+00 1/0 0/0 0/0 .text daGpTaru_Execute__FP10daGpTaru_c */
+static int daGpTaru_Execute(daGpTaru_c* i_this) {
+ return i_this->Execute();
}
-/* 8057F54C-8057F554 00256C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */
-static void func_8057F54C() {
- // NONMATCHING
+/* 8057F3C4-8057F3F0 0023E4 002C+00 1/0 0/0 0/0 .text daGpTaru_Delete__FP10daGpTaru_c */
+static int daGpTaru_Delete(daGpTaru_c* i_this) {
+ return i_this->Delete();
}
-/* 8057F554-8057F55C 002574 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */
-static void func_8057F554() {
- // NONMATCHING
+/* 8057F3F0-8057F410 002410 0020+00 1/0 0/0 0/0 .text daGpTaru_Create__FP10fopAc_ac_c */
+static int daGpTaru_Create(fopAc_ac_c* i_this) {
+ return ((daGpTaru_c*)i_this)->create();
}
-/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 8057F7A4-8057F7C4 -00001 0020+00 1/0 0/0 0/0 .data l_daGpTaru_Method */
+static actor_method_class l_daGpTaru_Method = {
+ (process_method_func)daGpTaru_Create,
+ (process_method_func)daGpTaru_Delete,
+ (process_method_func)daGpTaru_Execute,
+ 0,
+ (process_method_func)daGpTaru_Draw,
+};
+
+/* 8057F7C4-8057F7F4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GpTaru */
+extern actor_process_profile_definition g_profile_Obj_GpTaru = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_GpTaru, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daGpTaru_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 509, // mPriority
+ &l_daGpTaru_Method, // sub_method
+ 0x00044000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
diff --git a/src/d/actor/d_a_obj_swpush5.cpp b/src/d/actor/d_a_obj_swpush5.cpp
index c94dcb11cb..393a257893 100644
--- a/src/d/actor/d_a_obj_swpush5.cpp
+++ b/src/d/actor/d_a_obj_swpush5.cpp
@@ -6,746 +6,477 @@
#include "d/dolzel_rel.h"
#include "d/actor/d_a_obj_swpush5.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c();
-extern "C" static void nodeCallBack__FP8J3DJointi();
-extern "C" void initBaseMtx__10daObjSw5_cFv();
-extern "C" void setBaseMtx__10daObjSw5_cFv();
-extern "C" void Create__10daObjSw5_cFv();
-extern "C" void CreateHeap__10daObjSw5_cFv();
-extern "C" void create__10daObjSw5_cFv();
-extern "C" void Execute__10daObjSw5_cFPPA3_A4_f();
-extern "C" void setting_ride_flag__10daObjSw5_cFv();
-extern "C" bool checkPushable__10daObjSw5_cFv();
-extern "C" void event_proc_call__10daObjSw5_cFv();
-extern "C" void actionPauseNoneInit__10daObjSw5_cFv();
-extern "C" void actionPauseNone__10daObjSw5_cFv();
-extern "C" void actionPauseOrderInit__10daObjSw5_cFv();
-extern "C" void actionPauseOrder__10daObjSw5_cFv();
-extern "C" void actionPauseInit__10daObjSw5_cFv();
-extern "C" void actionPause__10daObjSw5_cFv();
-extern "C" void actionWait__10daObjSw5_cFv();
-extern "C" void actionOrder__10daObjSw5_cFv();
-extern "C" void actionEvent__10daObjSw5_cFv();
-extern "C" void calc_top_pos__10daObjSw5_cFv();
-extern "C" void mode_proc_call__10daObjSw5_cFv();
-extern "C" void modeWaitLowerInit__10daObjSw5_cFv();
-extern "C" void modeWaitLower__10daObjSw5_cFv();
-extern "C" void modeLowerInit__10daObjSw5_cFv();
-extern "C" void modeLower__10daObjSw5_cFv();
-extern "C" void modeWaitUpperInit__10daObjSw5_cFv();
-extern "C" void modeWaitUpper__10daObjSw5_cFv();
-extern "C" void modeUpperInit__10daObjSw5_cFv();
-extern "C" void modeUpper__10daObjSw5_cFv();
-extern "C" void Draw__10daObjSw5_cFv();
-extern "C" void Delete__10daObjSw5_cFv();
-extern "C" static void daObjSw5_Draw__FP10daObjSw5_c();
-extern "C" static void daObjSw5_Execute__FP10daObjSw5_c();
-extern "C" static void daObjSw5_Delete__FP10daObjSw5_c();
-extern "C" static void daObjSw5_Create__FP10fopAc_ac_c();
-extern "C" void __dt__4cXyzFv();
-extern "C" extern char const* const d_a_obj_swpush5__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs();
-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 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 StartShock__12dVibration_cFii4cXyz();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
-extern "C" void __ct__16dBgS_MoveBgActorFv();
-extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
-extern "C" bool ToFore__16dBgS_MoveBgActorFv();
-extern "C" bool ToBack__16dBgS_MoveBgActorFv();
-extern "C" void
-MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
-extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
-extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
-extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
-extern "C" void __ct__4dBgWFv();
-extern "C" void Move__4dBgWFv();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void ChkUsed__9cBgW_BgIdCFv();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void __ptmf_scall();
-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 now__14mDoMtx_stack_c[48];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
+#include "d/actor/d_a_player.h"
+#include "d/d_s_play.h"
+#include "Z2AudioLib/Z2Instances.h"
+
/* 8059C6A4-8059C6AC 000000 0008+00 7/7 0/0 0/0 .rodata l_dzbIdx */
-SECTION_RODATA static u8 const l_dzbIdx[8] = {
- 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08,
-};
-COMPILER_STRIP_GATE(0x8059C6A4, &l_dzbIdx);
-
-/* 8059C6AC-8059C6B0 000008 0004+00 0/1 0/0 0/0 .rodata @3718 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3718 = -50.0f;
-COMPILER_STRIP_GATE(0x8059C6AC, &lit_3718);
-#pragma pop
-
-/* 8059C6B0-8059C6B4 00000C 0004+00 3/7 0/0 0/0 .rodata @3719 */
-SECTION_RODATA static u8 const lit_3719[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x8059C6B0, &lit_3719);
-
-/* 8059C6B4-8059C6B8 000010 0004+00 0/1 0/0 0/0 .rodata @3720 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3720 = 50.0f;
-COMPILER_STRIP_GATE(0x8059C6B4, &lit_3720);
-#pragma pop
-
-/* 8059C8B0-8059C8C0 000048 000C+04 0/1 0/0 0/0 .bss @3654 */
-#pragma push
-#pragma force_active on
-static u8 lit_3654[12 + 4 /* padding */];
-#pragma pop
-
-/* 8059C8C0-8059C8CC 000058 000C+00 0/1 0/0 0/0 .bss @3657 */
-#pragma push
-#pragma force_active on
-static u8 lit_3657[12];
-#pragma pop
-
-/* 8059C8CC-8059C8D8 000064 000C+00 0/1 0/0 0/0 .bss @3658 */
-#pragma push
-#pragma force_active on
-static u8 lit_3658[12];
-#pragma pop
-
-/* 8059C8D8-8059C8E4 000070 000C+00 0/1 0/0 0/0 .bss @3659 */
-#pragma push
-#pragma force_active on
-static u8 lit_3659[12];
-#pragma pop
-
-/* 8059C8E4-8059C914 00007C 0030+00 0/1 0/0 0/0 .bss l_push_check_pos$3653 */
-#pragma push
-#pragma force_active on
-static u8 l_push_check_pos[48];
-#pragma pop
+static const int l_dzbIdx[] = {7, 8};
/* 8059B4EC-8059B754 0000EC 0268+00 1/1 0/0 0/0 .text
* rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
-static void rideCallBack(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
- // NONMATCHING
+static void rideCallBack(dBgW* i_bgw, fopAc_ac_c* i_bgActor, fopAc_ac_c* i_rideActor) {
+ daObjSw5_c* i_this = (daObjSw5_c*)i_bgActor;
+ daPy_py_c* player_p = daPy_getPlayerActorClass();
+
+ if (i_this->checkPushable() && fopAcM_CheckStatus(i_rideActor, fopAcM_STATUS_UNK_0x400) && fopAcM_GetName(i_rideActor) == PROC_ALINK) {
+ static cXyz l_push_check_pos[4] = {
+ cXyz(-50.0f, 0.0f, -50.0f),
+ cXyz(50.0f, 0.0f, -50.0f),
+ cXyz(50.0f, 0.0f, 50.0f),
+ cXyz(-50.0f, 0.0f, 50.0f),
+ };
+
+ cXyz local_rideActor_pos = i_rideActor->current.pos - i_bgActor->current.pos;
+ mDoMtx_stack_c::YrotS(-i_bgActor->current.angle.y);
+ mDoMtx_stack_c::multVec(&local_rideActor_pos, &local_rideActor_pos);
+
+ if (l_push_check_pos[0].x <= local_rideActor_pos.x && l_push_check_pos[2].x >= local_rideActor_pos.x &&
+ l_push_check_pos[0].z <= local_rideActor_pos.z && l_push_check_pos[2].z >= local_rideActor_pos.z)
+ {
+ i_this->mUnkRideTimer = 6;
+ if (player_p->checkBootsOrArmorHeavy()) {
+ i_this->mIsPlayerRideHvy = TRUE;
+ } else {
+ i_this->mIsPlayerRideHvy = FALSE;
+ }
+
+ if (fopAcM_CheckCarryType(i_rideActor, fopAcM_CARRY_TYPE_1)) {
+ i_this->field_0x5ae = 2;
+ } else {
+ i_this->field_0x5ae = 1;
+ }
+ }
+ }
}
/* 8059B754-8059B804 000354 00B0+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_p = j3dSys.getModel();
+ daObjSw5_c* i_this = (daObjSw5_c*)model_p->getUserArea();
+
+ cMtx_copy(model_p->getAnmMtx(jnt_no), mDoMtx_stack_c::get());
+
+ if (jnt_no == 1) {
+ mDoMtx_stack_c::transM(i_this->mTopPos, 0.0f, 0.0f);
+ }
+
+ model_p->setAnmMtx(jnt_no, mDoMtx_stack_c::get());
+ mDoMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+ }
+
+ return 1;
}
/* 8059B804-8059B88C 000404 0088+00 1/1 0/0 0/0 .text initBaseMtx__10daObjSw5_cFv */
void daObjSw5_c::initBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), mMtx);
+ mpModel->setBaseScale(scale);
+ setBaseMtx();
}
/* 8059B88C-8059B920 00048C 0094+00 2/2 0/0 0/0 .text setBaseMtx__10daObjSw5_cFv */
void daObjSw5_c::setBaseMtx() {
- // NONMATCHING
-}
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
-/* ############################################################################################## */
-/* 8059C6B8-8059C6BC 000014 0004+00 1/3 0/0 0/0 .rodata @3815 */
-SECTION_RODATA static f32 const lit_3815 = -25.0f;
-COMPILER_STRIP_GATE(0x8059C6B8, &lit_3815);
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y + mTopPos, current.pos.z);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
+}
/* 8059B920-8059BA1C 000520 00FC+00 1/0 0/0 0/0 .text Create__10daObjSw5_cFv */
-void daObjSw5_c::Create() {
- // NONMATCHING
-}
+int daObjSw5_c::Create() {
+ if (dComIfG_Bgsp().Regist(mpBgW2, this)) {
+ return 0;
+ }
+
+ initBaseMtx();
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mpModel->getModelData());
+
+ mpBgW->SetRideCallback(rideCallBack);
+
+ J3DJoint* sw_jnt = mpModel->getModelData()->getJointNodePointer(1);
+ JUT_ASSERT(276, sw_jnt != 0);
+
+ sw_jnt->setCallBack(nodeCallBack);
+ mpModel->setUserArea((uintptr_t)this);
-/* ############################################################################################## */
-/* 8059C6D0-8059C6D0 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8059C6D0 = "D_Hfsw00";
-#pragma pop
+ if (fopAcM_isSwitch(this, getSwNo())) {
+ mTopPos = -25.0f;
+ modeWaitUpperInit();
+ }
+
+ mpBgW2->Move();
+ mpBgW2->SetLock();
+ return 1;
+}
/* 8059C6FC-8059C700 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_swpush5__stringBase0;
+static char* l_arcName = "D_Hfsw00";
/* 8059BA1C-8059BB1C 00061C 0100+00 1/0 0/0 0/0 .text CreateHeap__10daObjSw5_cFv */
-void daObjSw5_c::CreateHeap() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8059C700-8059C70C -00001 000C+00 0/1 0/0 0/0 .data @3907 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3907[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionPauseNone__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C70C-8059C718 -00001 000C+00 0/1 0/0 0/0 .data @3908 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3908[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionPauseOrder__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C718-8059C724 -00001 000C+00 0/1 0/0 0/0 .data @3909 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3909[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionPause__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C724-8059C730 -00001 000C+00 0/1 0/0 0/0 .data @3910 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3910[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionWait__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C730-8059C73C -00001 000C+00 0/1 0/0 0/0 .data @3911 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3911[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionOrder__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C73C-8059C748 -00001 000C+00 0/1 0/0 0/0 .data @3912 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3912[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)actionEvent__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C748-8059C790 00006C 0048+00 0/1 0/0 0/0 .data l_func$3906 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_func[72] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 8059C790-8059C79C -00001 000C+00 0/1 0/0 0/0 .data @3993 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3993[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWaitLower__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C79C-8059C7A8 -00001 000C+00 0/1 0/0 0/0 .data @3994 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3994[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeLower__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C7A8-8059C7B4 -00001 000C+00 0/1 0/0 0/0 .data @3995 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3995[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWaitUpper__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C7B4-8059C7C0 -00001 000C+00 0/1 0/0 0/0 .data @3996 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3996[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeUpper__10daObjSw5_cFv,
-};
-#pragma pop
-
-/* 8059C7C0-8059C7F0 0000E4 0030+00 0/1 0/0 0/0 .data l_mode_func$3992 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_mode_func[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
+int daObjSw5_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
+ JUT_ASSERT(308, modelData != 0);
-/* 8059C7F0-8059C810 -00001 0020+00 1/0 0/0 0/0 .data l_daObjSw5_Method */
-static actor_method_class l_daObjSw5_Method = {
- (process_method_func)daObjSw5_Create__FP10fopAc_ac_c,
- (process_method_func)daObjSw5_Delete__FP10daObjSw5_c,
- (process_method_func)daObjSw5_Execute__FP10daObjSw5_c,
- 0,
- (process_method_func)daObjSw5_Draw__FP10daObjSw5_c,
-};
+ mpModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS);
+ if (mpModel == NULL) {
+ return 0;
+ }
-/* 8059C810-8059C840 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Swpush5 */
-extern actor_process_profile_definition g_profile_Obj_Swpush5 = {
- fpcLy_CURRENT_e, // mLayerID
- 2, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_Swpush5, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjSw5_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 13, // mPriority
- &l_daObjSw5_Method, // sub_method
- 0x00040100, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
+ mpBgW2 = new dBgW();
+ if (mpBgW2 == NULL || mpBgW2->Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, l_dzbIdx[0]), 1, &mMtx)) {
+ mpBgW2 = NULL;
+ return 0;
+ }
-/* 8059C840-8059C868 000164 0028+00 1/1 0/0 0/0 .data __vt__10daObjSw5_c */
-SECTION_DATA extern void* __vt__10daObjSw5_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__10daObjSw5_cFv,
- (void*)Create__10daObjSw5_cFv,
- (void*)Execute__10daObjSw5_cFPPA3_A4_f,
- (void*)Draw__10daObjSw5_cFv,
- (void*)Delete__10daObjSw5_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
+ return 1;
+}
/* 8059BB1C-8059BBD4 00071C 00B8+00 1/1 0/0 0/0 .text create__10daObjSw5_cFv */
-void daObjSw5_c::create() {
- // NONMATCHING
+int daObjSw5_c::create() {
+ fopAcM_SetupActor(this, daObjSw5_c);
+
+ int phase_state = dComIfG_resLoad(&mPhase, l_arcName);
+ if (phase_state == cPhs_COMPLEATE_e) {
+ phase_state = MoveBGCreate(l_arcName, l_dzbIdx[1], NULL, 0x1060, NULL);
+ if (phase_state == cPhs_ERROR_e) {
+ return phase_state;
+ }
+ }
+
+ return phase_state;
}
/* 8059BBD4-8059BC70 0007D4 009C+00 1/0 0/0 0/0 .text Execute__10daObjSw5_cFPPA3_A4_f */
-void daObjSw5_c::Execute(Mtx** param_0) {
- // NONMATCHING
+int daObjSw5_c::Execute(Mtx** param_0) {
+ setting_ride_flag();
+ mCounter++;
+
+ event_proc_call();
+ mode_proc_call();
+ calc_top_pos();
+
+ mpBgW2->Move();
+
+ *param_0 = &mBgMtx;
+ setBaseMtx();
+
+ field_0x5af = field_0x5ae;
+ field_0x5ad = mUnkRideTimer;
+ field_0x5ae = 0;
+ mIsPlayerRideHvyPrev = mIsPlayerRideHvy;
+ mIsPlayerRideHvy = FALSE;
+ return 1;
}
/* 8059BC70-8059BD24 000870 00B4+00 1/1 0/0 0/0 .text setting_ride_flag__10daObjSw5_cFv
*/
void daObjSw5_c::setting_ride_flag() {
- // NONMATCHING
+ if (mUnkRideTimer != 0) {
+ mUnkRideTimer--;
+ }
+
+ if (field_0x5ae != 0) {
+ if (field_0x5b1 != 0) {
+ field_0x5b0 = 8;
+ } else {
+ field_0x5b0++;
+ if (field_0x5b0 > 8) {
+ field_0x5b1 = 1;
+ }
+ }
+
+ if (mIsPlayerRideHvyPrev != mIsPlayerRideHvy) {
+ field_0x5b1 = 0;
+ field_0x5b0 = 0;
+ }
+ } else if (field_0x5b1 != 0) {
+ field_0x5b0--;
+ if (field_0x5b0 == 0) {
+ field_0x5b1 = 0;
+ }
+ } else {
+ field_0x5b0 = 0;
+ }
}
/* 8059BD24-8059BD2C 000924 0008+00 1/1 0/0 0/0 .text checkPushable__10daObjSw5_cFv */
-bool daObjSw5_c::checkPushable() {
- return true;
-}
+// getSwNo2 always returns 0xFF, so this function always returns true
+BOOL daObjSw5_c::checkPushable() {
+ u8 swbit2 = getSwNo2();
+ if (swbit2 == 0xFF) {
+ return true;
+ }
-/* ############################################################################################## */
-/* 8059C914-8059C918 -00001 0004+00 2/2 0/0 0/0 .bss None */
-/* 8059C914 0001+00 data_8059C914 None */
-/* 8059C915 0003+00 data_8059C915 None */
-static u8 struct_8059C914[4];
+ if (swbit2 != 0xFF && fopAcM_isSwitch(this, swbit2)) {
+ return true;
+ }
+
+ return false;
+}
/* 8059BD2C-8059BE18 00092C 00EC+00 1/1 0/0 0/0 .text event_proc_call__10daObjSw5_cFv */
void daObjSw5_c::event_proc_call() {
- // NONMATCHING
+ static void (daObjSw5_c::*l_func[])() = {
+ &daObjSw5_c::actionPauseNone,
+ &daObjSw5_c::actionPauseOrder,
+ &daObjSw5_c::actionPause,
+ &daObjSw5_c::actionWait,
+ &daObjSw5_c::actionOrder,
+ &daObjSw5_c::actionEvent,
+ };
+
+ (this->*l_func[mAction])();
}
/* 8059BE18-8059BE24 000A18 000C+00 2/2 0/0 0/0 .text actionPauseNoneInit__10daObjSw5_cFv
*/
void daObjSw5_c::actionPauseNoneInit() {
- // NONMATCHING
+ mAction = 0;
}
/* 8059BE24-8059BE28 000A24 0004+00 1/0 0/0 0/0 .text actionPauseNone__10daObjSw5_cFv */
-void daObjSw5_c::actionPauseNone() {
- /* empty function */
-}
+void daObjSw5_c::actionPauseNone() {}
/* 8059BE28-8059BE80 000A28 0058+00 1/1 0/0 0/0 .text actionPauseOrderInit__10daObjSw5_cFv */
void daObjSw5_c::actionPauseOrderInit() {
- // NONMATCHING
+ if (mAction != 1) {
+ mAction = 1;
+ fopAcM_orderPotentialEvent(this, 2, 0, 0);
+ eventInfo.onCondition(dEvtCnd_CANDEMO_e);
+ }
}
/* 8059BE80-8059BEB4 000A80 0034+00 1/0 0/0 0/0 .text actionPauseOrder__10daObjSw5_cFv */
void daObjSw5_c::actionPauseOrder() {
- // NONMATCHING
+ if (eventInfo.checkCommandDemoAccrpt()) {
+ actionPauseInit();
+ } else {
+ actionPauseNoneInit();
+ }
}
/* 8059BEB4-8059BEE0 000AB4 002C+00 1/1 0/0 0/0 .text actionPauseInit__10daObjSw5_cFv */
void daObjSw5_c::actionPauseInit() {
- // NONMATCHING
+ daPy_getPlayerActorClass()->onWolfEyeKeep();
+ mPauseTimer = 10;
+ mAction = 2;
}
/* 8059BEE0-8059BF48 000AE0 0068+00 1/0 0/0 0/0 .text actionPause__10daObjSw5_cFv */
void daObjSw5_c::actionPause() {
- // NONMATCHING
+ daPy_getPlayerActorClass()->onWolfEyeKeep();
+
+ mPauseTimer--;
+ if (mPauseTimer == 0) {
+ dComIfGp_event_reset();
+ actionPauseNoneInit();
+ }
}
/* 8059BF48-8059BF4C 000B48 0004+00 1/0 0/0 0/0 .text actionWait__10daObjSw5_cFv */
-void daObjSw5_c::actionWait() {
- /* empty function */
-}
+void daObjSw5_c::actionWait() {}
/* 8059BF4C-8059BF50 000B4C 0004+00 1/0 0/0 0/0 .text actionOrder__10daObjSw5_cFv */
-void daObjSw5_c::actionOrder() {
- /* empty function */
-}
+void daObjSw5_c::actionOrder() {}
/* 8059BF50-8059BF54 000B50 0004+00 1/0 0/0 0/0 .text actionEvent__10daObjSw5_cFv */
-void daObjSw5_c::actionEvent() {
- /* empty function */
-}
-
-/* ############################################################################################## */
-/* 8059C6BC-8059C6C0 000018 0004+00 0/1 0/0 0/0 .rodata @3986 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3986 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x8059C6BC, &lit_3986);
-#pragma pop
-
-/* 8059C6C0-8059C6C4 00001C 0004+00 0/1 0/0 0/0 .rodata @3987 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3987 = 0.5f;
-COMPILER_STRIP_GATE(0x8059C6C0, &lit_3987);
-#pragma pop
-
-/* 8059C6C4-8059C6C8 000020 0004+00 2/6 0/0 0/0 .rodata @3988 */
-SECTION_RODATA static f32 const lit_3988 = 1.0f;
-COMPILER_STRIP_GATE(0x8059C6C4, &lit_3988);
+void daObjSw5_c::actionEvent() {}
/* 8059BF54-8059BFE4 000B54 0090+00 1/1 0/0 0/0 .text calc_top_pos__10daObjSw5_cFv */
void daObjSw5_c::calc_top_pos() {
- // NONMATCHING
+ speed.y -= (field_0x5f8 - field_0x5fc) * (0.9f + KREG_F(1));
+ speed.y -= speed.y * (0.5f + KREG_F(0));
+ field_0x5f8 += speed.y;
+
+ mTopPos = -25.0f * (1.0f - field_0x5f8);
+ mTopPos = cLib_minMaxLimit<f32>(mTopPos, -25.0f, 0.0f);
}
/* 8059BFE4-8059C0A0 000BE4 00BC+00 1/1 0/0 0/0 .text mode_proc_call__10daObjSw5_cFv */
void daObjSw5_c::mode_proc_call() {
- // NONMATCHING
+ static void (daObjSw5_c::*l_mode_func[])() = {
+ &daObjSw5_c::modeWaitLower,
+ &daObjSw5_c::modeLower,
+ &daObjSw5_c::modeWaitUpper,
+ &daObjSw5_c::modeUpper,
+ };
+
+ (this->*l_mode_func[mMode])();
}
/* 8059C0A0-8059C0C8 000CA0 0028+00 1/1 0/0 0/0 .text modeWaitLowerInit__10daObjSw5_cFv
*/
void daObjSw5_c::modeWaitLowerInit() {
- // NONMATCHING
+ speed.y = 0.0f;
+ field_0x5f8 = 1.0f;
+ field_0x5fc = 1.0f;
+ mMode = 0;
}
-/* ############################################################################################## */
-/* 8059C6C8-8059C6CC 000024 0004+00 1/3 0/0 0/0 .rodata @4041 */
-SECTION_RODATA static f32 const lit_4041 = -1.0f;
-COMPILER_STRIP_GATE(0x8059C6C8, &lit_4041);
-
-/* 8059C6CC-8059C6D0 000028 0004+00 0/1 0/0 0/0 .rodata @4042 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4042 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x8059C6CC, &lit_4042);
-#pragma pop
-
/* 8059C0C8-8059C23C 000CC8 0174+00 1/0 0/0 0/0 .text modeWaitLower__10daObjSw5_cFv */
void daObjSw5_c::modeWaitLower() {
- // NONMATCHING
+ bool var_r30 = false;
+ bool do_pause = false;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ if (field_0x5b1 != 0) {
+ var_r30 = true;
+ }
+
+ if (field_0x5ae != 0 && field_0x5af == 0) {
+ do_pause = true;
+ }
+
+ if (var_r30) {
+ if (mIsPlayerRideHvy) {
+ mPauseTimer += 30;
+ modeLowerInit();
+ } else {
+ if (field_0x5fc == 1.0f) {
+ fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_RIDE, 0);
+ }
+ field_0x5fc = 0.8f;
+ }
+ } else {
+ if (field_0x5fc != 1.0f) {
+ fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_DROP, 0);
+ }
+ field_0x5fc = 1.0f;
+ }
+
+ if (do_pause) {
+ actionPauseOrderInit();
+ }
}
/* 8059C23C-8059C2D0 000E3C 0094+00 1/1 0/0 0/0 .text modeLowerInit__10daObjSw5_cFv */
void daObjSw5_c::modeLowerInit() {
- // NONMATCHING
+ fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_ON, 0);
+ field_0x5fc = 0.0f;
+ mMode = 1;
}
/* 8059C2D0-8059C364 000ED0 0094+00 1/0 0/0 0/0 .text modeLower__10daObjSw5_cFv */
void daObjSw5_c::modeLower() {
- // NONMATCHING
+ daPy_getPlayerActorClass();
+ if (-25.0f == mTopPos) {
+ dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
+ modeWaitUpperInit();
+
+ fopAcM_onSwitch(this, getSwNo());
+ OS_REPORT("ヘビー踏みスイッチ:スイッチONしました<%d>\n", getSwNo());
+ }
}
/* 8059C364-8059C370 000F64 000C+00 2/2 0/0 0/0 .text modeWaitUpperInit__10daObjSw5_cFv
*/
void daObjSw5_c::modeWaitUpperInit() {
- // NONMATCHING
+ mMode = 2;
}
/* 8059C370-8059C3C4 000F70 0054+00 1/0 0/0 0/0 .text modeWaitUpper__10daObjSw5_cFv */
void daObjSw5_c::modeWaitUpper() {
- // NONMATCHING
+ if (!fopAcM_isSwitch(this, getSwNo())) {
+ modeUpperInit();
+ }
}
/* 8059C3C4-8059C454 000FC4 0090+00 1/1 0/0 0/0 .text modeUpperInit__10daObjSw5_cFv */
void daObjSw5_c::modeUpperInit() {
- // NONMATCHING
+ fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_OFF, 0);
+ field_0x5fc = 1.0f;
+ mMode = 3;
}
/* 8059C454-8059C4BC 001054 0068+00 1/0 0/0 0/0 .text modeUpper__10daObjSw5_cFv */
void daObjSw5_c::modeUpper() {
- // NONMATCHING
+ if (mTopPos == 0.0f) {
+ modeWaitLowerInit();
+
+ fopAcM_offSwitch(this, getSwNo());
+ OS_REPORT("ヘビー踏みスイッチ:スイッチOFFしました<%d>\n", getSwNo());
+
+ field_0x5b1 = 0;
+ field_0x5b0 = 0;
+ }
}
/* 8059C4BC-8059C560 0010BC 00A4+00 1/0 0/0 0/0 .text Draw__10daObjSw5_cFv */
-void daObjSw5_c::Draw() {
- // NONMATCHING
+int daObjSw5_c::Draw() {
+ g_env_light.settingTevStruct(16, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
+
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(mpModel);
+ dComIfGd_setList();
+ return 1;
}
/* 8059C560-8059C5CC 001160 006C+00 1/0 0/0 0/0 .text Delete__10daObjSw5_cFv */
-void daObjSw5_c::Delete() {
- // NONMATCHING
+int daObjSw5_c::Delete() {
+ if (mpBgW2 != NULL && mpBgW2->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgW2);
+ }
+
+ dComIfG_resDelete(&mPhase, l_arcName);
+ return 1;
}
/* 8059C5CC-8059C5F8 0011CC 002C+00 1/0 0/0 0/0 .text daObjSw5_Draw__FP10daObjSw5_c */
-static void daObjSw5_Draw(daObjSw5_c* param_0) {
- // NONMATCHING
+static int daObjSw5_Draw(daObjSw5_c* i_this) {
+ return i_this->MoveBGDraw();
}
/* 8059C5F8-8059C618 0011F8 0020+00 1/0 0/0 0/0 .text daObjSw5_Execute__FP10daObjSw5_c */
-static void daObjSw5_Execute(daObjSw5_c* param_0) {
- // NONMATCHING
+static int daObjSw5_Execute(daObjSw5_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 8059C618-8059C638 001218 0020+00 1/0 0/0 0/0 .text daObjSw5_Delete__FP10daObjSw5_c */
-static void daObjSw5_Delete(daObjSw5_c* param_0) {
- // NONMATCHING
+static int daObjSw5_Delete(daObjSw5_c* i_this) {
+ return i_this->MoveBGDelete();
}
/* 8059C638-8059C658 001238 0020+00 1/0 0/0 0/0 .text daObjSw5_Create__FP10fopAc_ac_c */
-static void daObjSw5_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 8059C658-8059C694 001258 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 8059C918-8059C91C 0000B0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C918[4];
-#pragma pop
-
-/* 8059C91C-8059C920 0000B4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C91C[4];
-#pragma pop
-
-/* 8059C920-8059C924 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C920[4];
-#pragma pop
-
-/* 8059C924-8059C928 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C924[4];
-#pragma pop
-
-/* 8059C928-8059C92C 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C928[4];
-#pragma pop
-
-/* 8059C92C-8059C930 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C92C[4];
-#pragma pop
-
-/* 8059C930-8059C934 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C930[4];
-#pragma pop
-
-/* 8059C934-8059C938 0000CC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C934[4];
-#pragma pop
-
-/* 8059C938-8059C93C 0000D0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C938[4];
-#pragma pop
-
-/* 8059C93C-8059C940 0000D4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C93C[4];
-#pragma pop
-
-/* 8059C940-8059C944 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C940[4];
-#pragma pop
-
-/* 8059C944-8059C948 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C944[4];
-#pragma pop
-
-/* 8059C948-8059C94C 0000E0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C948[4];
-#pragma pop
-
-/* 8059C94C-8059C950 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C94C[4];
-#pragma pop
-
-/* 8059C950-8059C954 0000E8 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C950[4];
-#pragma pop
-
-/* 8059C954-8059C958 0000EC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C954[4];
-#pragma pop
-
-/* 8059C958-8059C95C 0000F0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C958[4];
-#pragma pop
-
-/* 8059C95C-8059C960 0000F4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C95C[4];
-#pragma pop
-
-/* 8059C960-8059C964 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C960[4];
-#pragma pop
-
-/* 8059C964-8059C968 0000FC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C964[4];
-#pragma pop
-
-/* 8059C968-8059C96C 000100 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C968[4];
-#pragma pop
+static int daObjSw5_Create(fopAc_ac_c* i_this) {
+ return ((daObjSw5_c*)i_this)->create();
+}
-/* 8059C96C-8059C970 000104 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C96C[4];
-#pragma pop
+/* 8059C7F0-8059C810 -00001 0020+00 1/0 0/0 0/0 .data l_daObjSw5_Method */
+static actor_method_class l_daObjSw5_Method = {
+ (process_method_func)daObjSw5_Create,
+ (process_method_func)daObjSw5_Delete,
+ (process_method_func)daObjSw5_Execute,
+ 0,
+ (process_method_func)daObjSw5_Draw,
+};
-/* 8059C970-8059C974 000108 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C970[4];
-#pragma pop
+/* 8059C810-8059C840 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Swpush5 */
+extern actor_process_profile_definition g_profile_Obj_Swpush5 = {
+ fpcLy_CURRENT_e, // mLayerID
+ 2, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_Swpush5, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjSw5_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 13, // mPriority
+ &l_daObjSw5_Method, // sub_method
+ 0x00040100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
-/* 8059C974-8059C978 00010C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_8059C974[4];
-#pragma pop
-
-/* 8059C978-8059C97C 000110 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_8059C978[4];
-#pragma pop
-
-/* 8059C6D0-8059C6D0 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+AUDIO_INSTANCES