summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2024-12-17 01:16:19 +0200
committerGitHub <noreply@github.com>2024-12-16 15:16:19 -0800
commitc5ab943cfc057be3c9310e93e27fc62a2be9cbeb (patch)
treec17725e2c7f4262e7a1fa4e15f2dde8a1129960e /src/d
parentee992eb80c798a3c3cec73fb785edf6852fbd259 (diff)
d_a_obj_cb almost matching (#2265)
* d_a_obj_cb almost matching * d_a_obj_bubblePillar OK * Work on d_a_obj_fchain * d_a_obj_gb OK * daTimeFire_c OK * d_a_obj_toaru_maki OK * d_a_obj_ten OK
Diffstat (limited to 'src/d')
-rw-r--r--src/d/actor/d_a_alink.cpp2
-rw-r--r--src/d/actor/d_a_obj_bubblePilar.cpp541
-rw-r--r--src/d/actor/d_a_obj_cb.cpp611
-rw-r--r--src/d/actor/d_a_obj_fchain.cpp682
-rw-r--r--src/d/actor/d_a_obj_gb.cpp438
-rw-r--r--src/d/actor/d_a_obj_ten.cpp1348
-rw-r--r--src/d/actor/d_a_obj_timeFire.cpp303
-rw-r--r--src/d/actor/d_a_obj_toaru_maki.cpp193
8 files changed, 1865 insertions, 2253 deletions
diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp
index 207c76cd6b..a244aa314f 100644
--- a/src/d/actor/d_a_alink.cpp
+++ b/src/d/actor/d_a_alink.cpp
@@ -14274,7 +14274,7 @@ void daAlink_c::posMove() {
}
setFootSpeed();
- if (checkEndResetFlg0(ERFLG0_UNK_10000000)) {
+ if (checkEndResetFlg0(ERFLG0_WOLF_FCHAIN_PULL)) {
speedF = 0.0f;
mNormalSpeed = 0.0f;
}
diff --git a/src/d/actor/d_a_obj_bubblePilar.cpp b/src/d/actor/d_a_obj_bubblePilar.cpp
index 6ac330aa5b..1333517565 100644
--- a/src/d/actor/d_a_obj_bubblePilar.cpp
+++ b/src/d/actor/d_a_obj_bubblePilar.cpp
@@ -4,116 +4,18 @@
*/
#include "d/actor/d_a_obj_bubblePilar.h"
-#include "dol2asm.h"
+#include "d/d_com_inf_game.h"
+#include "d/d_bg_w.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__17daBubbPilar_HIO_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__13daBubbPilar_cFv();
-extern "C" void CreateHeap__13daBubbPilar_cFv();
-extern "C" void create__13daBubbPilar_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void Execute__13daBubbPilar_cFPPA3_A4_f();
-extern "C" void initModeWait__13daBubbPilar_cFv();
-extern "C" void modeWait__13daBubbPilar_cFv();
-extern "C" void initModeEffOn__13daBubbPilar_cFv();
-extern "C" void modeEffOn__13daBubbPilar_cFv();
-extern "C" void Draw__13daBubbPilar_cFv();
-extern "C" void Delete__13daBubbPilar_cFv();
-extern "C" static void daBubbPilar_Draw__FP13daBubbPilar_c();
-extern "C" static void daBubbPilar_Execute__FP13daBubbPilar_c();
-extern "C" static void daBubbPilar_Delete__FP13daBubbPilar_c();
-extern "C" static void daBubbPilar_Create__FP10fopAc_ac_c();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void __dt__17daBubbPilar_HIO_cFv();
-extern "C" void __sinit_d_a_obj_bubblePilar_cpp();
-extern "C" u8 const mCcDObjInfo__13daBubbPilar_c[48];
-extern "C" extern char const* const d_a_obj_bubblePilar__stringBase0;
-extern "C" u8 mCcDCyl__13daBubbPilar_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 fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-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 getEmitter__Q213dPa_control_c7level_cFUl();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void __ct__16dBgS_MoveBgActorFv();
-extern "C" bool Create__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 Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitGObj__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 dKy_camera_water_in_status_check__Fv();
-extern "C" void dKy_bg_MAxx_proc__FPv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" 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" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
/* 80BC40BC-80BC40C8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
-SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
+static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80BC40C8-80BC40DC 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
#pragma push
#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
+static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
@@ -123,311 +25,260 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
};
#pragma pop
-/* 80BC40DC-80BC4120 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__13daBubbPilar_c */
-SECTION_DATA u8 daBubbPilar_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,
-};
-
-/* 80BC4120-80BC412C -00001 000C+00 0/1 0/0 0/0 .data @3843 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3843[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWait__13daBubbPilar_cFv,
-};
-#pragma pop
-
-/* 80BC412C-80BC4138 -00001 000C+00 0/1 0/0 0/0 .data @3844 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3844[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeEffOn__13daBubbPilar_cFv,
-};
-#pragma pop
-
-/* 80BC4138-80BC4150 00007C 0018+00 0/1 0/0 0/0 .data mode_proc$3842 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 mode_proc[24] = {
- 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
-
-/* 80BC4150-80BC4170 -00001 0020+00 1/0 0/0 0/0 .data l_daBubbPilar_Method */
-static actor_method_class l_daBubbPilar_Method = {
- (process_method_func)daBubbPilar_Create__FP10fopAc_ac_c,
- (process_method_func)daBubbPilar_Delete__FP13daBubbPilar_c,
- (process_method_func)daBubbPilar_Execute__FP13daBubbPilar_c,
- 0,
- (process_method_func)daBubbPilar_Draw__FP13daBubbPilar_c,
-};
-
-/* 80BC4170-80BC41A0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_awaPlar */
-extern actor_process_profile_definition g_profile_Obj_awaPlar = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_awaPlar, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daBubbPilar_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 659, // mPriority
- &l_daBubbPilar_Method, // sub_method
- 0x00044000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80BC41A0-80BC41AC 0000E4 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,
-};
-
-/* 80BC41AC-80BC41B8 0000F0 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,
-};
-
-/* 80BC41B8-80BC41C4 0000FC 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,
-};
-
-/* 80BC41C4-80BC41D0 000108 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,
-};
-
-/* 80BC41D0-80BC41F8 000114 0028+00 1/1 0/0 0/0 .data __vt__13daBubbPilar_c */
-SECTION_DATA extern void* __vt__13daBubbPilar_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__13daBubbPilar_cFv,
- (void*)Create__16dBgS_MoveBgActorFv,
- (void*)Execute__13daBubbPilar_cFPPA3_A4_f,
- (void*)Draw__13daBubbPilar_cFv,
- (void*)Delete__13daBubbPilar_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
-};
+/* 80BC4224-80BC422C 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */
+static daBubbPilar_HIO_c l_HIO;
-/* 80BC41F8-80BC4204 00013C 000C+00 2/2 0/0 0/0 .data __vt__17daBubbPilar_HIO_c */
-SECTION_DATA extern void* __vt__17daBubbPilar_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17daBubbPilar_HIO_cFv,
+/* 80BC4070-80BC40A0 000000 0030+00 3/3 0/0 0/0 .rodata mCcDObjInfo__13daBubbPilar_c */
+const dCcD_SrcGObjInf daBubbPilar_c::mCcDObjInfo = {
+ {0, {{0, 0, 0}, {0x20, 0x11}, {0}}},
+ {dCcD_SE_NONE, 0, 1, 0, 0},
+ {dCcD_SE_NONE, 0, 0, 0, 2},
+ {0},
};
-/* 80BC4204-80BC4210 000148 000C+00 3/3 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,
+/* 80BC40DC-80BC4120 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__13daBubbPilar_c */
+dCcD_SrcCyl daBubbPilar_c::mCcDCyl = {
+ daBubbPilar_c::mCcDObjInfo,
+ {{0.0f, 0.0f, 0.0f}, 0.0f, 0.0f}
};
/* 80BC33EC-80BC3418 0000EC 002C+00 1/1 0/0 0/0 .text __ct__17daBubbPilar_HIO_cFv */
daBubbPilar_HIO_c::daBubbPilar_HIO_c() {
- // NONMATCHING
+ field_0x4 = 20;
+ field_0x5 = 0;
}
-/* 80BC3418-80BC3460 000118 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
-}
-
-/* ############################################################################################## */
-/* 80BC4070-80BC40A0 000000 0030+00 3/3 0/0 0/0 .rodata mCcDObjInfo__13daBubbPilar_c */
-SECTION_RODATA u8 const daBubbPilar_c::mCcDObjInfo[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BC4070, &daBubbPilar_c::mCcDObjInfo);
-
-/* 80BC40A0-80BC40A4 000030 0004+00 1/3 0/0 0/0 .rodata @3654 */
-SECTION_RODATA static f32 const lit_3654 = 1.0f;
-COMPILER_STRIP_GATE(0x80BC40A0, &lit_3654);
-
/* 80BC3460-80BC3518 000160 00B8+00 2/2 0/0 0/0 .text setBaseMtx__13daBubbPilar_cFv */
void daBubbPilar_c::setBaseMtx() {
- // NONMATCHING
+ 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::scaleM(scale.x, scale.y, scale.z);
+ cXyz baseScale(1.0f, 1.0f, 1.0f);
+ mModels[mModelMode]->setBaseScale(baseScale);
+ mModels[mModelMode]->setBaseTRMtx(mDoMtx_stack_c::get());
}
-/* ############################################################################################## */
-/* 80BC40B4-80BC40B4 000044 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80BC40B4 = "M_Crack";
-#pragma pop
-
/* 80BC3518-80BC35D0 000218 00B8+00 1/0 0/0 0/0 .text CreateHeap__13daBubbPilar_cFv */
-void daBubbPilar_c::CreateHeap() {
- // NONMATCHING
+int daBubbPilar_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("M_Crack", 4);
+ JUT_ASSERT(226, modelData != 0);
+ mModels[MODE_WAIT] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mModels[MODE_WAIT] == NULL) {
+ return 0;
+ }
+ modelData = (J3DModelData*)dComIfG_getObjectRes("M_Crack", 5);
+ JUT_ASSERT(237, modelData != 0);
+ mModels[MODE_EFF_ON] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mModels[MODE_EFF_ON] == NULL) {
+ return 0;
+ }
+ return 1;
}
/* 80BC35D0-80BC3848 0002D0 0278+00 1/1 0/0 0/0 .text create__13daBubbPilar_cFv */
-void daBubbPilar_c::create() {
- // NONMATCHING
-}
-
-/* 80BC3848-80BC3890 000548 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
-
-/* 80BC3890-80BC38D8 000590 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
+int daBubbPilar_c::create() {
+ fopAcM_SetupActor(this, daBubbPilar_c);
+ int rv = dComIfG_resLoad(&mPhase, "M_Crack");
+ switch (rv) {
+ case cPhs_COMPLEATE_e:
+ if (MoveBGCreate("M_Crack", 8, dBgS_MoveBGProc_Typical, 0x1900, NULL) == cPhs_ERROR_e) {
+ return cPhs_ERROR_e;
+ }
+ mStts.Init(200, 0xff, this);
+ mCyl.Set(mCcDCyl);
+ mCyl.SetStts(&mStts);
+ mArg0 = getArg0();
+ mSw = getSw();
+ if (mArg0 != 0) {
+ if (mpBgW != NULL) {
+ dComIfG_Bgsp().Release(mpBgW);
+ }
+ mCyl.OffTgSetBit();
+ }
+ if (mSw == 0xff) {
+ initModeEffOn();
+ mModelMode = MODE_EFF_ON;
+ } else {
+ mIsSw = fopAcM_isSwitch(this, mSw);
+ if (mIsSw != 0) {
+ initModeEffOn();
+ mModelMode = MODE_EFF_ON;
+ } else {
+ initModeWait();
+ mModelMode = MODE_WAIT;
+ }
+ }
+ fopAcM_SetMtx(this, mModels[mModelMode]->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mModels[mModelMode]->getModelData());
+ setBaseMtx();
+ for (int i = 0; i < 4; i++) {
+ mEmitters[i] = NULL;
+ }
+ rv = cPhs_COMPLEATE_e;
+ break;
+ }
+ return rv;
}
-/* 80BC38D8-80BC3934 0005D8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80BC4218-80BC4224 000008 000C+00 1/1 0/0 0/0 .bss @3623 */
-static u8 lit_3623[12];
-
-/* 80BC4224-80BC422C 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[8];
-
-/* 80BC422C-80BC4230 00001C 0004+00 1/1 0/0 0/0 .bss None */
-static u8 data_80BC422C[4];
-
/* 80BC3934-80BC3AB8 000634 0184+00 1/0 0/0 0/0 .text Execute__13daBubbPilar_cFPPA3_A4_f
*/
-void daBubbPilar_c::Execute(f32 (**param_0)[3][4]) {
- // NONMATCHING
+int daBubbPilar_c::Execute(Mtx** param_1) {
+ static daBubbPilar_c::modeProc const mode_proc[2] = {
+ &daBubbPilar_c::modeWait,
+ &daBubbPilar_c::modeEffOn,
+ };
+ if (mSw != 0xff) {
+ u8 prevIsSw = mIsSw;
+ mIsSw = fopAcM_isSwitch(this, mSw);
+ if (prevIsSw != mIsSw) {
+ if (mIsSw != 0) {
+ initModeEffOn();
+ } else {
+ initModeWait();
+ }
+ }
+ }
+ (this->*(mode_proc[mMode]))();
+ if (dKy_camera_water_in_status_check()) {
+ for (int i = 0; i < 4; i++) {
+ if (mEmitters[i] != NULL) {
+ mEmitters[i]->setGlobalAlpha(0xff);
+ }
+ }
+ } else {
+ for (int i = 0; i < 4; i++) {
+ if (mEmitters[i] != NULL) {
+ mEmitters[i]->setGlobalAlpha(0x20);
+ }
+ }
+ }
+ *param_1 = &mModels[mModelMode]->getBaseTRMtx();
+ setBaseMtx();
+ return 1;
}
/* 80BC3AB8-80BC3AC4 0007B8 000C+00 2/2 0/0 0/0 .text initModeWait__13daBubbPilar_cFv */
void daBubbPilar_c::initModeWait() {
- // NONMATCHING
+ mMode = 0;
}
-/* ############################################################################################## */
-/* 80BC40A4-80BC40A8 000034 0004+00 0/2 0/0 0/0 .rodata @3939 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3939 = -1.0f;
-COMPILER_STRIP_GATE(0x80BC40A4, &lit_3939);
-#pragma pop
-
-/* 80BC40A8-80BC40AC 000038 0004+00 0/1 0/0 0/0 .rodata @3940 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3940 = 100.0f;
-COMPILER_STRIP_GATE(0x80BC40A8, &lit_3940);
-#pragma pop
-
/* 80BC3AC4-80BC3C74 0007C4 01B0+00 1/0 0/0 0/0 .text modeWait__13daBubbPilar_cFv */
void daBubbPilar_c::modeWait() {
- // NONMATCHING
+ if (mArg0 == 0) {
+ s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this));
+ mDoAud_seStartLevel(Z2SE_OBJ_WTR_STREAM_S, &current.pos, 0, reverb);
+ mEmitterId = dComIfGp_particle_set(mEmitterId, 0x88bd, &current.pos, &shape_angle, &scale);
+ mEmitters[3] = (JPABaseEmitter*)dComIfGp_particle_getEmitter(mEmitterId);
+ if (mCyl.ChkTgHit()) {
+ if ((mCyl.GetTgHitGObj()->GetAtType() & AT_TYPE_BOMB) != 0) {
+ mModelMode = MODE_EFF_ON;
+ fopAcM_SetMtx(this, mModels[mModelMode]->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mModels[mModelMode]->getModelData());
+ fopAcM_onSwitch(this, mSw);
+ }
+ }
+ mCyl.SetR(100.0f);
+ mCyl.SetH(100.0f);
+ mCyl.SetC(current.pos);
+ dComIfG_Ccsp()->Set(&mCyl);
+ }
}
/* 80BC3C74-80BC3C98 000974 0024+00 2/2 0/0 0/0 .text initModeEffOn__13daBubbPilar_cFv */
void daBubbPilar_c::initModeEffOn() {
- // NONMATCHING
+ if (mArg0 == 0) {
+ mCyl.OffTgSetBit();
+ }
+ mMode = 1;
}
-/* ############################################################################################## */
/* 80BC40AC-80BC40B4 00003C 0006+02 0/1 0/0 0/0 .rodata particle_id$3953 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const particle_id[6 + 2 /* padding */] = {
- 0x88,
- 0xBE,
- 0x88,
- 0xBF,
- 0x88,
- 0xC0,
- /* padding */
- 0x00,
- 0x00,
+static u16 const particle_id[3] = {
+ 0x88BE,
+ 0x88BF,
+ 0x88C0,
};
-COMPILER_STRIP_GATE(0x80BC40AC, &particle_id);
-#pragma pop
/* 80BC3C98-80BC3DB0 000998 0118+00 1/0 0/0 0/0 .text modeEffOn__13daBubbPilar_cFv */
void daBubbPilar_c::modeEffOn() {
- // NONMATCHING
+ s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this));
+ mDoAud_seStartLevel(Z2SE_OBJ_WTR_STREAM, &current.pos, 0, reverb);
+ for (int i = 0; i < 3; i = i + 1) {
+ mEmitterIds[i] = dComIfGp_particle_set(
+ mEmitterIds[i],
+ particle_id[i],
+ &current.pos, &shape_angle,
+ &scale);
+ mEmitters[i] = dComIfGp_particle_getEmitter(mEmitterIds[i]);
+ }
}
/* 80BC3DB0-80BC3E8C 000AB0 00DC+00 1/0 0/0 0/0 .text Draw__13daBubbPilar_cFv */
-void daBubbPilar_c::Draw() {
- // NONMATCHING
+int daBubbPilar_c::Draw() {
+ if (mArg0 == 0) {
+ g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModels[mModelMode], &tevStr);
+ dKy_bg_MAxx_proc(mModels[mModelMode]);
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(mModels[mModelMode]);
+ dComIfGd_setList();
+ }
+ return 1;
}
/* 80BC3E8C-80BC3EBC 000B8C 0030+00 1/0 0/0 0/0 .text Delete__13daBubbPilar_cFv */
-void daBubbPilar_c::Delete() {
- // NONMATCHING
+int daBubbPilar_c::Delete() {
+ dComIfG_resDelete(&mPhase, "M_Crack");
+ return 1;
}
/* 80BC3EBC-80BC3EE8 000BBC 002C+00 1/0 0/0 0/0 .text daBubbPilar_Draw__FP13daBubbPilar_c
*/
-static void daBubbPilar_Draw(daBubbPilar_c* param_0) {
- // NONMATCHING
+static int daBubbPilar_Draw(daBubbPilar_c* i_this) {
+ return i_this->MoveBGDraw();
}
/* 80BC3EE8-80BC3F08 000BE8 0020+00 1/0 0/0 0/0 .text daBubbPilar_Execute__FP13daBubbPilar_c */
-static void daBubbPilar_Execute(daBubbPilar_c* param_0) {
- // NONMATCHING
+static int daBubbPilar_Execute(daBubbPilar_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80BC3F08-80BC3F28 000C08 0020+00 1/0 0/0 0/0 .text daBubbPilar_Delete__FP13daBubbPilar_c */
-static void daBubbPilar_Delete(daBubbPilar_c* param_0) {
- // NONMATCHING
+static int daBubbPilar_Delete(daBubbPilar_c* i_this) {
+ return i_this->MoveBGDelete();
}
/* 80BC3F28-80BC3F48 000C28 0020+00 1/0 0/0 0/0 .text daBubbPilar_Create__FP10fopAc_ac_c
*/
-static void daBubbPilar_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80BC3F48-80BC3F90 000C48 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
+static int daBubbPilar_Create(fopAc_ac_c* i_this) {
+ return static_cast<daBubbPilar_c*>(i_this)->create();
}
-/* 80BC3F90-80BC3FEC 000C90 005C+00 2/1 0/0 0/0 .text __dt__17daBubbPilar_HIO_cFv */
-daBubbPilar_HIO_c::~daBubbPilar_HIO_c() {
- // NONMATCHING
-}
-
-/* 80BC3FEC-80BC405C 000CEC 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_bubblePilar_cpp */
-void __sinit_d_a_obj_bubblePilar_cpp() {
- // NONMATCHING
-}
+/* 80BC4150-80BC4170 -00001 0020+00 1/0 0/0 0/0 .data l_daBubbPilar_Method */
+static actor_method_class l_daBubbPilar_Method = {
+ (process_method_func)daBubbPilar_Create,
+ (process_method_func)daBubbPilar_Delete,
+ (process_method_func)daBubbPilar_Execute,
+ NULL,
+ (process_method_func)daBubbPilar_Draw,
+};
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80BC3FEC, __sinit_d_a_obj_bubblePilar_cpp);
-#pragma pop
+/* 80BC4170-80BC41A0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_awaPlar */
+extern actor_process_profile_definition g_profile_Obj_awaPlar = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_awaPlar, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daBubbPilar_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 659, // mPriority
+ &l_daBubbPilar_Method, // sub_method
+ 0x00044000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
/* 80BC40B4-80BC40B4 000044 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_cb.cpp b/src/d/actor/d_a_obj_cb.cpp
index 202bfdf537..cc0b52656b 100644
--- a/src/d/actor/d_a_obj_cb.cpp
+++ b/src/d/actor/d_a_obj_cb.cpp
@@ -4,431 +4,266 @@
*/
#include "d/actor/d_a_obj_cb.h"
-#include "dol2asm.h"
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__14daObj_Cb_HIO_cFv();
-extern "C" static void daObj_Cb_Draw__FP12obj_cb_class();
-extern "C" static void ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c();
-extern "C" static void action__FP12obj_cb_class();
-extern "C" static void daObj_Cb_Execute__FP12obj_cb_class();
-extern "C" static bool daObj_Cb_IsDelete__FP12obj_cb_class();
-extern "C" static void daObj_Cb_Delete__FP12obj_cb_class();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" static void daObj_Cb_Create__FP10fopAc_ac_c();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__14daObj_Cb_HIO_cFv();
-extern "C" void __sinit_d_a_obj_cb_cpp();
-extern "C" static void func_80BC57C0();
-extern "C" static void func_80BC57C8();
-extern "C" extern char const* const d_a_obj_cb__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transM__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_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
-extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
-extern "C" void __ct__4dBgWFv();
-extern "C" void Move__4dBgWFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void __ct__12dCcD_GObjInfFv();
-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 cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalc0__FPfff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void MtxPosition__FP4cXyzP4cXyz();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void deleteObject__14Z2SoundObjBaseFv();
-extern "C" void __ct__16Z2SoundObjSimpleFv();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__8dCcD_Sph[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern void* calc_mtx[1 + 1 /* padding */];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80BC5854-80BC5874 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Cb_Method */
-static actor_method_class l_daObj_Cb_Method = {
- (process_method_func)daObj_Cb_Create__FP10fopAc_ac_c,
- (process_method_func)daObj_Cb_Delete__FP12obj_cb_class,
- (process_method_func)daObj_Cb_Execute__FP12obj_cb_class,
- (process_method_func)daObj_Cb_IsDelete__FP12obj_cb_class,
- (process_method_func)daObj_Cb_Draw__FP12obj_cb_class,
-};
-
-/* 80BC5874-80BC58A4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_CB */
-extern actor_process_profile_definition g_profile_OBJ_CB = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_OBJ_CB, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(obj_cb_class), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 49, // mPriority
- &l_daObj_Cb_Method, // sub_method
- 0x00040100, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_0_e, // cullType
-};
-
-/* 80BC58A4-80BC58B0 000050 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
-
-/* 80BC58B0-80BC58BC 00005C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 80BC58BC-80BC58E0 000068 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */
-SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_ObjAcchFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80BC57C8,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80BC57C0,
-};
-
-/* 80BC58E0-80BC58EC 00008C 000C+00 2/2 0/0 0/0 .data __vt__14daObj_Cb_HIO_c */
-SECTION_DATA extern void* __vt__14daObj_Cb_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14daObj_Cb_HIO_cFv,
-};
+#include "SSystem/SComponent/c_lib.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/d_com_inf_game.h"
+#include "d/d_bg_w.h"
/* 80BC4B2C-80BC4B44 0000EC 0018+00 1/1 0/0 0/0 .text __ct__14daObj_Cb_HIO_cFv */
daObj_Cb_HIO_c::daObj_Cb_HIO_c() {
- // NONMATCHING
+ field_0x4 = -1;
}
/* 80BC4B44-80BC4BA8 000104 0064+00 1/0 0/0 0/0 .text daObj_Cb_Draw__FP12obj_cb_class */
-static void daObj_Cb_Draw(obj_cb_class* param_0) {
- // NONMATCHING
+static int daObj_Cb_Draw(obj_cb_class* i_this) {
+ g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->tevStr);
+ g_env_light.setLightTevColorType_MAJI(i_this->mModel, &i_this->tevStr);
+ mDoExt_modelUpdateDL(i_this->mModel);
+ return 1;
}
/* 80BC4BA8-80BC4BB4 000168 000C+00 1/1 0/0 0/0 .text
* ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
-static void ride_call_back(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
- // NONMATCHING
+static void ride_call_back(dBgW* param_0, fopAc_ac_c* i_this, fopAc_ac_c* param_2) {
+ static_cast<obj_cb_class*>(i_this)->field_0x59c = 3;
}
-/* ############################################################################################## */
-/* 80BC57E4-80BC57EC 000000 0004+04 1/1 0/0 0/0 .rodata @3882 */
-SECTION_RODATA static u8 const lit_3882[4 + 4 /* padding */] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- /* padding */
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80BC57E4, &lit_3882);
-
-/* 80BC57EC-80BC57F4 000008 0008+00 0/1 0/0 0/0 .rodata @3883 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3883[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BC57EC, &lit_3883);
-#pragma pop
-
-/* 80BC57F4-80BC57FC 000010 0008+00 0/1 0/0 0/0 .rodata @3884 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3884[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BC57F4, &lit_3884);
-#pragma pop
-
-/* 80BC57FC-80BC5804 000018 0008+00 0/1 0/0 0/0 .rodata @3885 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3885[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BC57FC, &lit_3885);
-#pragma pop
-
-/* 80BC5804-80BC5808 000020 0004+00 0/1 0/0 0/0 .rodata @3886 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3886 = 30.0f;
-COMPILER_STRIP_GATE(0x80BC5804, &lit_3886);
-#pragma pop
-
-/* 80BC5808-80BC580C 000024 0004+00 0/1 0/0 0/0 .rodata @3887 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3887 = 5.0f;
-COMPILER_STRIP_GATE(0x80BC5808, &lit_3887);
-#pragma pop
-
-/* 80BC580C-80BC5810 000028 0004+00 0/1 0/0 0/0 .rodata @3888 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3888 = 1.0f;
-COMPILER_STRIP_GATE(0x80BC580C, &lit_3888);
-#pragma pop
-
-/* 80BC5810-80BC5814 00002C 0004+00 0/1 0/0 0/0 .rodata @3889 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3889 = 0.5f;
-COMPILER_STRIP_GATE(0x80BC5810, &lit_3889);
-#pragma pop
-
-/* 80BC5814-80BC5818 000030 0004+00 0/1 0/0 0/0 .rodata @3890 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3890 = 60.0f;
-COMPILER_STRIP_GATE(0x80BC5814, &lit_3890);
-#pragma pop
-
-/* 80BC5818-80BC581C 000034 0004+00 0/1 0/0 0/0 .rodata @3891 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3891 = -1.0f;
-COMPILER_STRIP_GATE(0x80BC5818, &lit_3891);
-#pragma pop
-
-/* 80BC581C-80BC5820 000038 0004+00 0/1 0/0 0/0 .rodata @3892 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3892 = 90.0f;
-COMPILER_STRIP_GATE(0x80BC581C, &lit_3892);
-#pragma pop
-
-/* 80BC5820-80BC5824 00003C 0004+00 0/1 0/0 0/0 .rodata @3893 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3893 = 20.0f;
-COMPILER_STRIP_GATE(0x80BC5820, &lit_3893);
-#pragma pop
-
-/* 80BC5824-80BC5828 000040 0004+00 0/1 0/0 0/0 .rodata @3894 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3894 = -5.0f;
-COMPILER_STRIP_GATE(0x80BC5824, &lit_3894);
-#pragma pop
-
-/* 80BC5828-80BC582C 000044 0004+00 0/1 0/0 0/0 .rodata @3895 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3895 = -30.0f;
-COMPILER_STRIP_GATE(0x80BC5828, &lit_3895);
-#pragma pop
-
-/* 80BC582C-80BC5830 000048 0004+00 0/1 0/0 0/0 .rodata @3896 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3896 = 5000.0f;
-COMPILER_STRIP_GATE(0x80BC582C, &lit_3896);
-#pragma pop
-
-/* 80BC5830-80BC5834 00004C 0004+00 0/1 0/0 0/0 .rodata @3897 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3897 = 7000.0f;
-COMPILER_STRIP_GATE(0x80BC5830, &lit_3897);
-#pragma pop
-
-/* 80BC5834-80BC5838 000050 0004+00 0/1 0/0 0/0 .rodata @3898 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3898 = 15.0f;
-COMPILER_STRIP_GATE(0x80BC5834, &lit_3898);
-#pragma pop
-
-/* 80BC5838-80BC583C 000054 0004+00 0/1 0/0 0/0 .rodata @3899 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3899 = 10.0f;
-COMPILER_STRIP_GATE(0x80BC5838, &lit_3899);
-#pragma pop
-
-/* 80BC583C-80BC5840 000058 0004+00 0/1 0/0 0/0 .rodata @3900 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3900 = -3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80BC583C, &lit_3900);
-#pragma pop
-
-/* 80BC5840-80BC5844 00005C 0004+00 0/1 0/0 0/0 .rodata @3901 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3901 = 2.0f;
-COMPILER_STRIP_GATE(0x80BC5840, &lit_3901);
-#pragma pop
-
-/* 80BC5844-80BC5848 000060 0004+00 0/1 0/0 0/0 .rodata @3902 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3902 = -25.0f;
-COMPILER_STRIP_GATE(0x80BC5844, &lit_3902);
-#pragma pop
-
/* 80BC4BB4-80BC51B8 000174 0604+00 1/1 0/0 0/0 .text action__FP12obj_cb_class */
-static void action(obj_cb_class* param_0) {
- // NONMATCHING
+// NONMATCHING - i_this regalloc. Assigning i_this to a variable with a conversion
+// fixes the regalloc but the assignment is in wrong place
+static void action(obj_cb_class* i_this) {
+ cXyz local_60;
+ int local_78 = 0;
+ switch(i_this->field_0x596) {
+ case 0:
+ if (i_this->field_0x59c != 0) {
+ i_this->field_0x59c--;
+ i_this->field_0x59e++;
+ f32 dist = (i_this->home.pos - i_this->current.pos).abs();
+ if ((i_this->field_0x59e & 4) != 0) {
+ local_78 = 0x100;
+ } else {
+ local_78 = -0x100;
+ }
+ cMtx_YrotS(*calc_mtx, i_this->current.angle.y);
+ local_60.x = 0.0f;
+ local_60.y = 0.0f;
+ local_60.z = i_this->speedF;
+ MtxPosition(&local_60, &i_this->speed);
+ i_this->current.pos += i_this->speed;
+ if (dist > 30.0f) {
+ cLib_addCalcAngleS2(&i_this->shape_angle.x, 0x2000, 2, 0x200);
+ }
+ cLib_addCalc2(&i_this->speedF, 5.0f, 1.0f, 0.5f);
+ if (dist > 60.0f) {
+ i_this->field_0x596 = 10;
+ local_60.x = 0.0f;
+ local_60.y = 0.0f;
+ local_60.z = 5.0f;
+ MtxPosition(&local_60, &i_this->speed);
+ i_this->field_0x5a0.x = 0x900;
+ dComIfG_Bgsp().Release(i_this->mBgW);
+ i_this->mBgW = 0;
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_CTL_ROCK_FALL, &i_this->current.pos, 0, 0, 1.0f,
+ 1.0f, -1.0f, -1.0f, 0);
+ }
+ } else {
+ i_this->field_0x59e = 0;
+ cLib_addCalcAngleS2(&i_this->shape_angle.x, 0, 1, 0x1000);
+ }
+ break;
+ case 5:
+ if (fopAcM_searchPlayerDistanceXZ(i_this) < 90.0f) {
+ cMtx_YrotS(*calc_mtx, i_this->current.angle.y);
+ i_this->field_0x596 = 10;
+ local_60.x = 0.0;
+ local_60.y = 0.0;
+ local_60.z = 20.0f;
+ MtxPosition(&local_60, &i_this->speed);
+ i_this->field_0x5a0.x = 0x900;
+ i_this->field_0x598[0] = 20;
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_CTL_ROCK_FALL, &i_this->current.pos, 0, 0, 1.0f, 1.0f,
+ -1.0f, -1.0f, 0);
+ }
+ break;
+ case 10:
+ i_this->current.pos += i_this->speed;
+ i_this->speed.y += -5.0f;
+ i_this->shape_angle.x += i_this->field_0x5a0.x;
+ i_this->shape_angle.y += i_this->field_0x5a0.y;
+ f32 speedY = i_this->speed.y;
+ i_this->mAcch.CrrPos(dComIfG_Bgsp());
+ if (i_this->field_0x598[0] == 0 && i_this->mAcch.ChkGroundHit()) {
+ if (speedY <= -30.0f) {
+ i_this->field_0x5a0.y = cM_rndFX(5000.0f);
+ i_this->field_0x5a0.x = cM_rndFX(5000.0f);
+ cMtx_YrotS(*calc_mtx, i_this->current.angle.y + (s16)cM_rndFX(7000.0f));
+ local_60.x = 0.0f;
+ local_60.y = 0.0f;
+ local_60.z = 15.0f + cM_rndF(10.0f);
+ MtxPosition(&local_60, &i_this->speed);
+ i_this->speed.y = -0.3f * speedY;
+ fopAcM_effSmokeSet1(&i_this->field_0x970, &i_this->field_0x974,
+ &i_this->current.pos, 0, 2.0f, &i_this->tevStr, 1);
+ } else {
+ i_this->field_0x5a0.set(0, 0, 0);
+ cLib_addCalcAngleS2(&i_this->shape_angle.y, 0, 1, 0x1000);
+ cLib_addCalcAngleS2(&i_this->shape_angle.x, 0, 1, 0x1000);
+ i_this->speed.set(0.0f, -5.0f, 0.0f);
+ // !@bug field_0x594 is never initialized
+ i_this->field_0x594++;
+ if (i_this->field_0x594 > 150) {
+ fopAcM_delete(i_this);
+ }
+ }
+ cLib_addCalc0(&i_this->field_0x5a8, 1.0f, 5.0f);
+ } else {
+ cLib_addCalc2(&i_this->field_0x5a8, -25.0f, 1.0f, 1.0f);
+ }
+ break;
+ }
+
+ mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z);
+ mDoMtx_stack_c::YrotM(i_this->shape_angle.y);
+ mDoMtx_stack_c::XrotM(i_this->shape_angle.x);
+ mDoMtx_stack_c::transM(0.0f, i_this->field_0x5a8, 0.0f);
+ mDoMtx_stack_c::XrotM(local_78);
+ i_this->mModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ mDoMtx_stack_c::XrotM(-local_78);
+ if (i_this->mBgW != NULL) {
+ MTXCopy(mDoMtx_stack_c::get(), i_this->mBgMtx);
+ i_this->mBgW->Move();
+ }
}
/* 80BC51B8-80BC5240 000778 0088+00 2/1 0/0 0/0 .text daObj_Cb_Execute__FP12obj_cb_class
*/
-static void daObj_Cb_Execute(obj_cb_class* param_0) {
- // NONMATCHING
+static int daObj_Cb_Execute(obj_cb_class* i_this) {
+ for (int i = 0; i < 2; i++) {
+ if (i_this->field_0x598[i] != 0) {
+ i_this->field_0x598[i]--;
+ }
+ }
+ action(i_this);
+ s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(i_this));
+ i_this->mSoundObj.framework(0, reverb);
+ return 1;
}
/* 80BC5240-80BC5248 000800 0008+00 1/0 0/0 0/0 .text daObj_Cb_IsDelete__FP12obj_cb_class
*/
-static bool daObj_Cb_IsDelete(obj_cb_class* param_0) {
- return true;
+static int daObj_Cb_IsDelete(obj_cb_class* param_0) {
+ return 1;
}
-/* ############################################################################################## */
-/* 80BC584C-80BC584C 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80BC584C = "Obj_cb";
-#pragma pop
-
/* 80BC58F8-80BC58FC 000008 0004+00 2/2 0/0 0/0 .bss None */
-static u8 data_80BC58F8[4];
+static u8 data_80BC58F8;
/* 80BC5248-80BC52CC 000808 0084+00 1/0 0/0 0/0 .text daObj_Cb_Delete__FP12obj_cb_class
*/
-static void daObj_Cb_Delete(obj_cb_class* param_0) {
- // NONMATCHING
+static int daObj_Cb_Delete(obj_cb_class* i_this) {
+ fopAcM_GetID(i_this);
+ dComIfG_resDelete(&i_this->mPhase, "Obj_cb");
+ if (i_this->field_0x978 != 0) {
+ data_80BC58F8 = 0;
+ }
+ if (i_this->mBgW != NULL) {
+ dComIfG_Bgsp().Release(i_this->mBgW);
+ }
+ if (i_this->heap != NULL) {
+ i_this->mSoundObj.deleteObject();
+ }
+ return 1;
}
/* 80BC52CC-80BC5408 00088C 013C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int useHeapInit(fopAc_ac_c* actor) {
+ obj_cb_class* i_this = (obj_cb_class*)actor;
+ J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes("Obj_cb", 4);
+ JUT_ASSERT(502, modelData != 0);
+ i_this->mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (i_this->mModel == NULL) {
+ return 0;
+ }
+ if (i_this->home.angle.x == 0) {
+ i_this->mBgW = new dBgW();
+ if (i_this->mBgW == NULL) {
+ return 0;
+ }
+ cBgD_t* bGd = (cBgD_t*)dComIfG_getObjectRes("Obj_cb", 7);
+ if (i_this->mBgW->Set(bGd, 1, &i_this->mBgMtx) == 1) {
+ return 0;
+ }
+ i_this->mBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
+ i_this->mBgW->SetRideCallback(ride_call_back);
+ }
+ i_this->mSoundObj.init(&i_this->current.pos, 1);
+ return 1;
}
-/* ############################################################################################## */
-/* 80BC5848-80BC584C 000064 0004+00 1/1 0/0 0/0 .rodata @4038 */
-SECTION_RODATA static f32 const lit_4038 = 50.0f;
-COMPILER_STRIP_GATE(0x80BC5848, &lit_4038);
-
-/* 80BC58FC-80BC5908 00000C 000C+00 1/1 0/0 0/0 .bss @3763 */
-static u8 lit_3763[12];
-
/* 80BC5908-80BC5910 000018 0008+00 2/2 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[8];
+static daObj_Cb_HIO_c l_HIO;
/* 80BC5408-80BC563C 0009C8 0234+00 1/0 0/0 0/0 .text daObj_Cb_Create__FP10fopAc_ac_c */
-static void daObj_Cb_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80BC563C-80BC5684 000BFC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
-
-/* 80BC5684-80BC56CC 000C44 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 80BC56CC-80BC573C 000C8C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
+static int daObj_Cb_Create(fopAc_ac_c* actor) {
+ fopAcM_SetupActor(actor, obj_cb_class);
+ obj_cb_class* i_this = (obj_cb_class*)actor;
+ int rv = dComIfG_resLoad(&i_this->mPhase, "Obj_cb");
+ if (rv == cPhs_COMPLEATE_e) {
+ OS_REPORT("OBJ_CB PARAM %x\n", fopAcM_GetParam(i_this));
+ if (i_this->home.angle.x != 0) {
+ i_this->field_0x596 = 5;
+ }
+ OS_REPORT("OBJ_CB//////////////OBJ_CB SET 1 !!\n");
+ if (fopAcM_entrySolidHeap(i_this, useHeapInit, 0x800) == 0) {
+ OS_REPORT("//////////////OBJ_CB SET NON !!\n");
+ return cPhs_ERROR_e;
+ }
+ OS_REPORT("//////////////OBJ_CB SET 2 !!\n");
+ if (i_this->home.angle.x == 0 && i_this->mBgW != NULL) {
+ if (dComIfG_Bgsp().Regist(i_this->mBgW, i_this) != 0) {
+ return cPhs_ERROR_e;
+ }
+ }
+ if (data_80BC58F8 == 0) {
+ i_this->field_0x978 = 1;
+ data_80BC58F8 = 1;
+ l_HIO.field_0x4 = -1;
+ }
+ fopAcM_SetMtx(i_this, i_this->mModel->getBaseTRMtx());
+ i_this->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1,
+ &i_this->mAcchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL);
+ i_this->mAcchCir.SetWall(50.0f, 50.0f);
+ daObj_Cb_Execute(i_this);
+ }
+ return rv;
}
-/* 80BC573C-80BC5784 000CFC 0048+00 2/1 0/0 0/0 .text __dt__14daObj_Cb_HIO_cFv */
-daObj_Cb_HIO_c::~daObj_Cb_HIO_c() {
- // NONMATCHING
-}
-
-/* 80BC5784-80BC57C0 000D44 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_cb_cpp */
-void __sinit_d_a_obj_cb_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80BC5784, __sinit_d_a_obj_cb_cpp);
-#pragma pop
-
-/* 80BC57C0-80BC57C8 000D80 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80BC57C0() {
- // NONMATCHING
-}
+/* 80BC5854-80BC5874 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Cb_Method */
+static actor_method_class l_daObj_Cb_Method = {
+ (process_method_func)daObj_Cb_Create,
+ (process_method_func)daObj_Cb_Delete,
+ (process_method_func)daObj_Cb_Execute,
+ (process_method_func)daObj_Cb_IsDelete,
+ (process_method_func)daObj_Cb_Draw,
+};
-/* 80BC57C8-80BC57D0 000D88 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80BC57C8() {
- // NONMATCHING
-}
+/* 80BC5874-80BC58A4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_CB */
+extern actor_process_profile_definition g_profile_OBJ_CB = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_OBJ_CB, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(obj_cb_class), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 49, // mPriority
+ &l_daObj_Cb_Method, // sub_method
+ 0x00040100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_0_e, // cullType
+};
/* 80BC584C-80BC584C 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_fchain.cpp b/src/d/actor/d_a_obj_fchain.cpp
index 4bdf53cb1f..2f72392739 100644
--- a/src/d/actor/d_a_obj_fchain.cpp
+++ b/src/d/actor/d_a_obj_fchain.cpp
@@ -4,446 +4,354 @@
*/
#include "d/actor/d_a_obj_fchain.h"
-#include "dol2asm.h"
+#include "d/actor/d_a_player.h"
+#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/d_com_inf_game.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" void createHeap__13daObjFchain_cFv();
-extern "C" static void daObjFchain_createHeap__FP10fopAc_ac_c();
-extern "C" void create__13daObjFchain_cFv();
-extern "C" void __dt__5csXyzFv();
-extern "C" void __ct__5csXyzFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" static void daObjFchain_Create__FP10fopAc_ac_c();
-extern "C" void __dt__13daObjFchain_cFv();
-extern "C" static void daObjFchain_Delete__FP13daObjFchain_c();
-extern "C" void checkPlayerFoot__13daObjFchain_cFPC4cXyzPC4cXyzP4cXyz();
-extern "C" void setGroundVec__13daObjFchain_cFP4cXyzf();
-extern "C" void execute__13daObjFchain_cFv();
-extern "C" static void daObjFchain_Execute__FP13daObjFchain_c();
-extern "C" void draw__19daObjFchain_shape_cFv();
-extern "C" void draw__13daObjFchain_cFv();
-extern "C" static void daObjFchain_Draw__FP13daObjFchain_c();
-extern "C" void __dt__19daObjFchain_shape_cFv();
-extern "C" extern char const* const d_a_obj_fchain__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void transM__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void getRunEventName__16dEvent_manager_cFv();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void dKy_setLight_again__Fv();
-extern "C" void dKy_GxFog_tevstr_set__FP12dKy_tevstr_c();
-extern "C" void __pl__4cXyzCFRC3Vec();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void __ml__4cXyzCFf();
-extern "C" void normalizeZP__4cXyzFv();
-extern "C" void atan2sX_Z__4cXyzCFv();
-extern "C" void atan2sY_XZ__4cXyzCFv();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rnd__Fv();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void __dl__FPv();
-extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer();
-extern "C" void loadPreDrawSetting__8J3DShapeCFv();
-extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void _savegpr_23();
-extern "C" void _savegpr_24();
-extern "C" void _restgpr_23();
-extern "C" void _restgpr_24();
-extern "C" extern void* __vt__9J3DPacket[5];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" f32 Zero__4cXyz[3];
-extern "C" extern u32 g_whiteColor;
-extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
-extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
/* 80BE7438-80BE7440 000000 0007+01 6/6 0/0 0/0 .rodata l_arcName */
-SECTION_RODATA static u8 const l_arcName[7 + 1 /* padding */] = {
- 0x46,
- 0x63,
- 0x68,
- 0x61,
- 0x69,
- 0x6E,
- 0x00,
- /* padding */
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80BE7438, &l_arcName);
+static char const l_arcName[] = "Fchain";
/* 80BE5FF8-80BE6054 000078 005C+00 1/1 0/0 0/0 .text createHeap__13daObjFchain_cFv */
-void daObjFchain_c::createHeap() {
- // NONMATCHING
+int daObjFchain_c::createHeap() {
+ mModelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 3);
+ return mModelData != NULL ? 1 : 0;
}
/* 80BE6054-80BE6074 0000D4 0020+00 1/1 0/0 0/0 .text daObjFchain_createHeap__FP10fopAc_ac_c */
-static void daObjFchain_createHeap(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daObjFchain_createHeap(fopAc_ac_c* i_this) {
+ return static_cast<daObjFchain_c*>(i_this)->createHeap();
}
/* ############################################################################################## */
/* 80BE7440-80BE744C 000008 000C+00 0/1 0/0 0/0 .rodata localVec$3662 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const localVec[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x10, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BE7440, &localVec);
-#pragma pop
-
-/* 80BE744C-80BE7450 000014 0004+00 0/2 0/0 0/0 .rodata @3710 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3710 = 3.0f;
-COMPILER_STRIP_GATE(0x80BE744C, &lit_3710);
-#pragma pop
-
-/* 80BE7450-80BE7454 000018 0004+00 0/2 0/0 0/0 .rodata @3711 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3711 = 4096.0f;
-COMPILER_STRIP_GATE(0x80BE7450, &lit_3711);
-#pragma pop
-
-/* 80BE7454-80BE7458 00001C 0004+00 0/2 0/0 0/0 .rodata @3712 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3712 = 2048.0f;
-COMPILER_STRIP_GATE(0x80BE7454, &lit_3712);
-#pragma pop
-
-/* 80BE7458-80BE745C 000020 0004+00 0/2 0/0 0/0 .rodata @3713 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3713 = -4096.0f;
-COMPILER_STRIP_GATE(0x80BE7458, &lit_3713);
-#pragma pop
-
-/* 80BE745C-80BE7460 000024 0004+00 0/3 0/0 0/0 .rodata @3714 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3714 = 1.0f;
-COMPILER_STRIP_GATE(0x80BE745C, &lit_3714);
-#pragma pop
-
-/* 80BE7460-80BE7464 000028 0004+00 0/2 0/0 0/0 .rodata @3715 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3715 = -1.0f;
-COMPILER_STRIP_GATE(0x80BE7460, &lit_3715);
-#pragma pop
-
-/* 80BE7464-80BE7468 00002C 0004+00 0/2 0/0 0/0 .rodata @3716 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3716 = 0.5f;
-COMPILER_STRIP_GATE(0x80BE7464, &lit_3716);
-#pragma pop
-
-/* 80BE7468-80BE746C 000030 0004+00 0/1 0/0 0/0 .rodata @3717 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3717 = 1024.0f;
-COMPILER_STRIP_GATE(0x80BE7468, &lit_3717);
-#pragma pop
-
-/* 80BE746C-80BE7470 000034 0004+00 0/1 0/0 0/0 .rodata @3718 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3718 = 3072.0f;
-COMPILER_STRIP_GATE(0x80BE746C, &lit_3718);
-#pragma pop
-
-/* 80BE7470-80BE7478 000038 0008+00 0/2 0/0 0/0 .rodata @3720 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3720[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BE7470, &lit_3720);
-#pragma pop
-
-/* 80BE74D8-80BE74F8 -00001 0020+00 1/0 0/0 0/0 .data l_daObjFchain_Method */
-static actor_method_class l_daObjFchain_Method = {
- (process_method_func)daObjFchain_Create__FP10fopAc_ac_c,
- (process_method_func)daObjFchain_Delete__FP13daObjFchain_c,
- (process_method_func)daObjFchain_Execute__FP13daObjFchain_c,
- 0,
- (process_method_func)daObjFchain_Draw__FP13daObjFchain_c,
-};
-
-/* 80BE74F8-80BE7528 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Fchain */
-extern actor_process_profile_definition g_profile_Obj_Fchain = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_Fchain, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjFchain_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 246, // mPriority
- &l_daObjFchain_Method, // sub_method
- 0x00060000, // mStatus
- fopAc_ENV_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80BE7528-80BE753C 000050 0014+00 3/3 0/0 0/0 .data __vt__19daObjFchain_shape_c */
-SECTION_DATA extern void* __vt__19daObjFchain_shape_c[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__19daObjFchain_shape_cFv,
- (void*)__dt__19daObjFchain_shape_cFv,
+static Vec const localVec = {
+ 0.0f, 0.0f, -9.0f,
};
/* 80BE6074-80BE6328 0000F4 02B4+00 1/1 0/0 0/0 .text create__13daObjFchain_cFv */
-void daObjFchain_c::create() {
- // NONMATCHING
-}
-
-/* 80BE6328-80BE6364 0003A8 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */
-// csXyz::~csXyz() {
-extern "C" void __dt__5csXyzFv() {
- // NONMATCHING
-}
-
-/* 80BE6364-80BE6368 0003E4 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */
-// csXyz::csXyz() {
-extern "C" void __ct__5csXyzFv() {
- /* empty function */
-}
-
-/* 80BE6368-80BE63A4 0003E8 003C+00 2/2 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
-
-/* 80BE63A4-80BE63A8 000424 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
-// cXyz::cXyz() {
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
+int daObjFchain_c::create() {
+ fopAcM_SetupActor(this, daObjFchain_c);
+ int rv = dComIfG_resLoad(&mPhase, l_arcName);
+ switch (rv) {
+ case cPhs_COMPLEATE_e:
+ if (fopAcM_entrySolidHeap(this, daObjFchain_createHeap,
+ 0x10) == 0) {
+ return cPhs_ERROR_e;
+ }
+ tevStr.mRoomNo = dComIfGp_roomControl_getStayNo();
+ mShape.setUserArea((u32)this);
+ current.pos.y += 3.0f;
+ s16 local_58 = shape_angle.y;
+ cXyz* local_44 = &current.pos;
+ cXyz* local_48 = field_0x694;
+ csXyz* pdVar5 = field_0x8a4;
+ for (int i = 0; i < 22; i++) {
+ if ((i & 1) != 0) {
+ pdVar5->z = cM_rndFX(2048.0f) + 4096.0f;
+ } else {
+ pdVar5->z = cM_rndFX(2048.0f) + -4096.0f;
+ }
+ f32 fVar1;
+ if (cM_rnd() < 0.5f) {
+ fVar1 = 1.0f;
+ } else {
+ fVar1 = -1.0f;
+ }
+ pdVar5->y = local_58 + (fVar1 * (cM_rndF(3072.0f) + 1024.0f));
+ mDoMtx_stack_c::transS(*local_44);
+ mDoMtx_stack_c::YrotM(pdVar5->y);
+ mDoMtx_stack_c::multVec(&localVec, local_48);
+ local_58 = pdVar5->y;
+ local_44 = local_48;
+ pdVar5++;
+ local_48++;
+ }
+ rv = cPhs_COMPLEATE_e;
+ break;
+ }
+ return rv;
}
/* 80BE63A8-80BE63C8 000428 0020+00 1/0 0/0 0/0 .text daObjFchain_Create__FP10fopAc_ac_c
*/
-static void daObjFchain_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daObjFchain_Create(fopAc_ac_c* i_this) {
+ return static_cast<daObjFchain_c*>(i_this)->create();
}
/* 80BE63C8-80BE64B8 000448 00F0+00 1/1 0/0 0/0 .text __dt__13daObjFchain_cFv */
daObjFchain_c::~daObjFchain_c() {
- // NONMATCHING
+ dComIfG_resDelete(&mPhase,l_arcName);
}
/* 80BE64B8-80BE64E0 000538 0028+00 1/0 0/0 0/0 .text daObjFchain_Delete__FP13daObjFchain_c */
-static void daObjFchain_Delete(daObjFchain_c* param_0) {
- // NONMATCHING
+static int daObjFchain_Delete(daObjFchain_c* i_this) {
+ i_this->~daObjFchain_c();
+ return 1;
}
-/* ############################################################################################## */
-/* 80BE7478-80BE7480 000040 0004+04 0/3 0/0 0/0 .rodata @3809 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3809[4 + 4 /* padding */] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- /* padding */
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80BE7478, &lit_3809);
-#pragma pop
-
-/* 80BE7480-80BE7488 000048 0008+00 0/3 0/0 0/0 .rodata @3810 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3810[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BE7480, &lit_3810);
-#pragma pop
-
-/* 80BE7488-80BE7490 000050 0008+00 0/3 0/0 0/0 .rodata @3811 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3811[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BE7488, &lit_3811);
-#pragma pop
-
-/* 80BE7490-80BE7498 000058 0008+00 0/3 0/0 0/0 .rodata @3812 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3812[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BE7490, &lit_3812);
-#pragma pop
-
-/* 80BE7498-80BE749C 000060 0004+00 0/1 0/0 0/0 .rodata @3813 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3813 = 5.0f;
-COMPILER_STRIP_GATE(0x80BE7498, &lit_3813);
-#pragma pop
-
-/* 80BE749C-80BE74A0 000064 0004+00 0/1 0/0 0/0 .rodata @3814 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3814 = 20.0f;
-COMPILER_STRIP_GATE(0x80BE749C, &lit_3814);
-#pragma pop
-
/* 80BE64E0-80BE66B4 000560 01D4+00 1/1 0/0 0/0 .text
* checkPlayerFoot__13daObjFchain_cFPC4cXyzPC4cXyzP4cXyz */
-void daObjFchain_c::checkPlayerFoot(cXyz const* param_0, cXyz const* param_1, cXyz* param_2) {
- // NONMATCHING
+void daObjFchain_c::checkPlayerFoot(cXyz const* param_1, cXyz const* param_2, cXyz* param_3) {
+ cXyz local_24 = *param_1 - *param_2;
+ f32 dVar4 = local_24.absXZ();
+ if (fabsf(local_24.y) < 5.0f && dVar4 < 20.0f) {
+ local_24.y = 0.0f;
+ local_24.normalizeZP();
+ f32 fVar1 = 20.0f - dVar4;
+ param_3->x += local_24.x * fVar1;
+ param_3->z += local_24.z * fVar1;
+ }
}
-/* ############################################################################################## */
-/* 80BE74A0-80BE74A4 000068 0004+00 0/1 0/0 0/0 .rodata @3857 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3857 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80BE74A0, &lit_3857);
-#pragma pop
-
/* 80BE66B4-80BE6868 000734 01B4+00 1/1 0/0 0/0 .text setGroundVec__13daObjFchain_cFP4cXyzf */
-void daObjFchain_c::setGroundVec(cXyz* param_0, f32 param_1) {
- // NONMATCHING
+void daObjFchain_c::setGroundVec(cXyz* param_1, f32 param_2) {
+ f32 dVar6 = param_1->absXZ();
+ param_1->y += param_2;
+ if (dVar6 < 0.1f) {
+ param_1->z += param_2;
+ } else {
+ f32 fVar1 = (1.0f / dVar6);
+ param_1->x += fVar1 * (param_2 * param_1->x);
+ param_1->z += fVar1 * (param_2 * param_1->z);
+ }
+ param_1->normalizeZP();
}
-/* ############################################################################################## */
/* 80BE74A4-80BE74B0 00006C 000C+00 0/1 0/0 0/0 .rodata wolfChainBaseOffset$3862 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const wolfChainBaseOffset[12] = {
- 0x41, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x40, 0x00, 0x00,
+static Vec const wolfChainBaseOffset = {
+ 22.0f, 0.0f, -12.0f,
};
-COMPILER_STRIP_GATE(0x80BE74A4, &wolfChainBaseOffset);
-#pragma pop
-
-/* 80BE74B0-80BE74B4 000078 0004+00 0/1 0/0 0/0 .rodata @4159 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4159 = -1.5f;
-COMPILER_STRIP_GATE(0x80BE74B0, &lit_4159);
-#pragma pop
-
-/* 80BE74B4-80BE74B8 00007C 0004+00 0/1 0/0 0/0 .rodata @4160 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4160 = 9.0f;
-COMPILER_STRIP_GATE(0x80BE74B4, &lit_4160);
-#pragma pop
-
-/* 80BE74B8-80BE74BC 000080 0004+00 0/1 0/0 0/0 .rodata @4161 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4161 = 198.0f;
-COMPILER_STRIP_GATE(0x80BE74B8, &lit_4161);
-#pragma pop
-
-/* 80BE74BC-80BE74C0 000084 0004+00 0/1 0/0 0/0 .rodata @4162 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4162 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80BE74BC, &lit_4162);
-#pragma pop
-
-/* 80BE74C0-80BE74C4 000088 0004+00 0/1 0/0 0/0 .rodata @4163 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4163 = 3.5f;
-COMPILER_STRIP_GATE(0x80BE74C0, &lit_4163);
-#pragma pop
-
-/* 80BE74C4-80BE74C8 00008C 0004+00 0/1 0/0 0/0 .rodata @4164 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4164 = 1536.0f;
-COMPILER_STRIP_GATE(0x80BE74C4, &lit_4164);
-#pragma pop
-
-/* 80BE74C8-80BE74CC 000090 0004+00 0/1 0/0 0/0 .rodata @4165 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4165 = 2.0f;
-COMPILER_STRIP_GATE(0x80BE74C8, &lit_4165);
-#pragma pop
-
-/* 80BE74CC-80BE74CC 000094 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80BE74CC = "demo06_01";
-#pragma pop
/* 80BE6868-80BE7174 0008E8 090C+00 1/1 0/0 0/0 .text execute__13daObjFchain_cFv */
-void daObjFchain_c::execute() {
- // NONMATCHING
+// NONMATCHING - regalloc, stack
+int daObjFchain_c::execute() {
+ if (dComIfGp_event_runCheck()) {
+ if (dComIfGp_getEventManager().getRunEventName() != NULL) {
+ if (strcmp("demo06_01", dComIfGp_getEventManager().getRunEventName()) == 0 &&
+ field_0x588 >= 0)
+ {
+ field_0x588++;
+ if (field_0x588 > 310) {
+ field_0x588 = -1;
+ }
+ }
+ }
+ } else {
+ field_0x588 = 0;
+ }
+ cXyz* local_148 = &current.pos;
+ cXyz local_54;
+ cXyz cStack_60;
+ if (field_0x586 != 0) {
+ field_0x586--;
+ }
+ cXyz* pcVar12 = field_0x694;
+ cXyz* local_150 = field_0x79c;
+ u32 isWolf = daPy_py_c::i_checkNowWolf();
+ daPy_py_c* player = daPy_getLinkPlayerActorClass();
+ for (int i = 0; i < 22; i++) {
+ local_54 = (*pcVar12 - *local_148) + *local_150;
+ local_54.y += -1.5f;
+ if (dComIfGs_isEventBit(0x510)) {
+ if (isWolf) {
+ checkPlayerFoot(pcVar12, player->getLeftHandPosP(), &local_54);
+ checkPlayerFoot(pcVar12, player->getRightHandPosP(), &local_54);
+ }
+ checkPlayerFoot(pcVar12, player->getLeftFootPosP(), &local_54);
+ checkPlayerFoot(pcVar12, player->getRightFootPosP(), &local_54);
+ }
+ cStack_60 = local_54;
+ local_54.normalizeZP();
+ *pcVar12 = *local_148 + (local_54 * 9.0f);
+ if (pcVar12->y < current.pos.y) {
+ setGroundVec(&cStack_60, current.pos.y - pcVar12->y);
+ *pcVar12 = *local_148 + (cStack_60 * 9.0f);
+ }
+ local_150++;
+ local_148 = pcVar12;
+ pcVar12++;
+ }
+ if (isWolf && !dComIfGs_isEventBit(0x510)) {
+ mDoMtx_multVec(
+ player->getModelJointMtx(17), &wolfChainBaseOffset,
+ &field_0x694[21]);
+ cXyz diff = (field_0x694[21] - current.pos);
+ f32 dVar13 = diff.abs();
+ if (dVar13 > 198.0f) {
+ s16 sVar10 = cM_atan2s(-local_54.x, -local_54.z);
+ player->setOutPower(dVar13 - 198.0f, sVar10, 0);
+ player->onWolfFchainPull();
+ cXyz* pcVar8 = field_0x694;
+ local_148 = &current.pos;
+ local_54 *= 9.0f / dVar13;
+ for (int i = 0; pcVar12 = pcVar8, i < 22; i++) {
+ *pcVar8 = *local_148 + local_54;
+ local_148 = pcVar8;
+ pcVar8++;
+ }
+ field_0x584 = 0;
+ } else {
+ cXyz* pcVar8 = &field_0x694[20];
+ local_150 = &field_0x79c[20];
+ local_148 = pcVar8 + 1;
+ for (int i = 20; i >= 0; i--) {
+ local_54 = (*pcVar8 - *local_148) + *local_150;
+ local_54.y += -1.5f;
+ cStack_60 = local_54;
+ local_54.normalizeZP();
+ *pcVar8 = *local_148 + (local_54 * 9.0f);
+ if (pcVar8->y < current.pos.y) {
+ setGroundVec(&cStack_60, current.pos.y - pcVar8->y);
+ *pcVar8 = *local_148 + (cStack_60 * 9.0f);
+ }
+ local_150--;
+ local_148 = pcVar8;
+ pcVar8--;
+ }
+ }
+ }
+ local_148 = &current.pos;
+ local_150 = field_0x694;
+ cXyz* pcVar8 = field_0x79c;
+ csXyz* local_15c = field_0x8a4;
+ cXyz* local_160 = field_0x58c;
+ s16 local_178 = 0;
+ for (int i = 0; i < 22; i++) {
+ *local_150 = (*pcVar8 - *local_160) * 0.3f;
+ *local_160 = *pcVar8;
+ local_54 = *local_148 - *pcVar8;
+ local_15c->x = local_54.atan2sY_XZ();
+ if (!(local_54.absXZ() < 3.5f)) {
+ local_15c->y = local_54.atan2sX_Z();
+ }
+ if (local_150->abs2() > 3.0f && field_0x586 == 0) {
+ f32 fVar1;
+ if (cM_rnd() < 0.5f) {
+ fVar1 = 1.0f;
+ } else {
+ fVar1 = -1.0f;
+ }
+ local_15c->z = local_178 + 0x4000 +
+ (fVar1 * (cM_rndF(4096.0f) + 1536.0f));
+ if (pcVar8->y <= current.pos.y + 2.0f) {
+ if ((local_15c->z >= 0 && local_15c->z < 0x4000) ||
+ (local_15c->z > -0x7fff && local_15c->z < -0x4000))
+ {
+ local_15c->z = cM_rndFX(2048.0f) + 4096.0f;
+ } else {
+ local_15c->z = cM_rndFX(2048.0f) + -4096.0f;
+ }
+ }
+ }
+ local_178 = local_15c->z;
+ local_150++;
+ local_15c++;
+ local_160++;
+ local_148 = pcVar8;
+ pcVar8++;
+ }
+ if (field_0x584 == 0) {
+ field_0x584 = 1;
+ local_150 = field_0x79c;
+ for (int i = 0; i < 22; i++) {
+ *local_150 = cXyz::Zero;
+ local_150++;
+ }
+ field_0x586 = 5;
+ }
+ return 1;
}
/* 80BE7174-80BE7194 0011F4 0020+00 1/0 0/0 0/0 .text daObjFchain_Execute__FP13daObjFchain_c */
-static void daObjFchain_Execute(daObjFchain_c* param_0) {
- // NONMATCHING
+static int daObjFchain_Execute(daObjFchain_c* i_this) {
+ return static_cast<daObjFchain_c*>(i_this)->execute();
}
/* 80BE7194-80BE7324 001214 0190+00 1/0 0/0 0/0 .text draw__19daObjFchain_shape_cFv */
void daObjFchain_shape_c::draw() {
- // NONMATCHING
+ daObjFchain_c* i_this = (daObjFchain_c*)getUserArea();
+ cXyz* pPos = i_this->getPos();
+ csXyz* pAngle = i_this->getAngle();
+ J3DModelData* modelData = i_this->getModelData();
+ J3DMaterial* material = modelData->getMaterialNodePointer(0);
+ dKy_tevstr_c* tevStr = &i_this->tevStr;
+ j3dSys.setVtxPos(modelData->getVtxPosArray());
+ j3dSys.setVtxNrm(modelData->getVtxNrmArray());
+ j3dSys.setVtxCol(modelData->getVtxColorArray(0));
+ J3DShape::resetVcdVatCache();
+ material->loadSharedDL();
+ material->getShape()->loadPreDrawSetting();
+ GXColor ambColor;
+ ambColor.r = tevStr->mColorC0.r;
+ ambColor.g = tevStr->mColorC0.g;
+ ambColor.b = tevStr->mColorC0.b;
+ ambColor.a = tevStr->mColorC0.a;
+ GXSetChanAmbColor(GX_COLOR0A0, ambColor);
+ GXSetChanMatColor(GX_COLOR0A0, g_whiteColor);
+ dKy_setLight_again();
+ dKy_GxFog_tevstr_set(tevStr);
+ GXLoadLightObjImm(&tevStr->mLightObj.mLightObj, GX_LIGHT0);
+ int local_30;
+ if (dComIfGs_isEventBit(0x510)) {
+ local_30 = 17;
+ } else {
+ local_30 = 22;
+ }
+ for (int i = 0; i < local_30; i++, pPos++, pAngle++) {
+ mDoMtx_stack_c::copy(j3dSys.getViewMtx());
+ mDoMtx_stack_c::transM(*pPos);
+ mDoMtx_stack_c::ZXYrotM(*pAngle);
+ GXLoadPosMtxImm(mDoMtx_stack_c::get(), 0);
+ GXLoadNrmMtxImm(mDoMtx_stack_c::get(), 0);
+ material->getShape()->simpleDrawCache();
+ }
}
/* 80BE7324-80BE73B4 0013A4 0090+00 1/1 0/0 0/0 .text draw__13daObjFchain_cFv */
-void daObjFchain_c::draw() {
- // NONMATCHING
+int daObjFchain_c::draw() {
+ if (field_0x584 != 0) {
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModelData, &tevStr);
+ if (field_0x588 > 0) {
+ return 1;
+ }
+ dComIfGd_getOpaListDark()->entryImm(&mShape, 0);
+ }
+ return 1;
}
/* 80BE73B4-80BE73D4 001434 0020+00 1/0 0/0 0/0 .text daObjFchain_Draw__FP13daObjFchain_c
*/
-static void daObjFchain_Draw(daObjFchain_c* param_0) {
- // NONMATCHING
+static int daObjFchain_Draw(daObjFchain_c* i_this) {
+ return static_cast<daObjFchain_c*>(i_this)->draw();
}
-/* 80BE73D4-80BE7430 001454 005C+00 1/0 0/0 0/0 .text __dt__19daObjFchain_shape_cFv */
-daObjFchain_shape_c::~daObjFchain_shape_c() {
- // NONMATCHING
-}
+/* 80BE74D8-80BE74F8 -00001 0020+00 1/0 0/0 0/0 .data l_daObjFchain_Method */
+static actor_method_class l_daObjFchain_Method = {
+ (process_method_func)daObjFchain_Create,
+ (process_method_func)daObjFchain_Delete,
+ (process_method_func)daObjFchain_Execute,
+ NULL,
+ (process_method_func)daObjFchain_Draw,
+};
+
+/* 80BE74F8-80BE7528 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Fchain */
+extern actor_process_profile_definition g_profile_Obj_Fchain = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_Fchain, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjFchain_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 246, // mPriority
+ &l_daObjFchain_Method, // sub_method
+ 0x00060000, // mStatus
+ fopAc_ENV_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
/* 80BE74CC-80BE74CC 000094 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_gb.cpp b/src/d/actor/d_a_obj_gb.cpp
index 3de9012eea..417bb9e15d 100644
--- a/src/d/actor/d_a_obj_gb.cpp
+++ b/src/d/actor/d_a_obj_gb.cpp
@@ -4,170 +4,123 @@
*/
#include "d/actor/d_a_obj_gb.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void daObj_Gb_Draw__FP12obj_gb_class();
-extern "C" static void daObj_Gb_Execute__FP12obj_gb_class();
-extern "C" void __dt__4cXyzFv();
-extern "C" static bool daObj_Gb_IsDelete__FP12obj_gb_class();
-extern "C" static void daObj_Gb_Delete__FP12obj_gb_class();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" static void daObj_Gb_Create__FP10fopAc_ac_c();
-extern "C" void __ct__4cXyzFv();
-extern "C" extern char const* const d_a_obj_gb__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transM__14mDoMtx_stack_cFfff();
-extern "C" void scaleM__14mDoMtx_stack_cFfff();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
-extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
-extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
-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 dKy_bg_MAxx_proc__FPv();
-extern "C" void cM_rndF__Ff();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void MtxPosition__FP4cXyzP4cXyz();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void __construct_array();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern void* calc_mtx[1 + 1 /* padding */];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
+#include "SSystem/SComponent/c_lib.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/d_bg_w.h"
+#include "d/d_com_inf_game.h"
/* 80BF6318-80BF63F8 000078 00E0+00 1/0 0/0 0/0 .text daObj_Gb_Draw__FP12obj_gb_class */
-static void daObj_Gb_Draw(obj_gb_class* param_0) {
- // NONMATCHING
+static int daObj_Gb_Draw(obj_gb_class* i_this) {
+ g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->tevStr);
+ g_env_light.setLightTevColorType_MAJI(i_this->mModel, &i_this->tevStr);
+ J3DModelData* modelData = (J3DModelData*)i_this->mModel->getModelData();
+ for (u16 i = 0; i <= 1; i++) {
+ J3DMaterial* material = (J3DMaterial*)modelData->getMaterialNodePointer(i);
+ material->getTevKColor(1)->a = i_this->mColorAlpha;
+ }
+
+ dKy_bg_MAxx_proc(i_this->mModel);
+ i_this->mBtk->entry(modelData);
+ i_this->mBrk->entry(modelData);
+ mDoExt_modelUpdateDL(i_this->mModel);
+ return 1;
}
-/* ############################################################################################## */
-/* 80BF6DBC-80BF6DC0 000000 0004+00 2/2 0/0 0/0 .rodata @3890 */
-SECTION_RODATA static f32 const lit_3890 = 0.5f;
-COMPILER_STRIP_GATE(0x80BF6DBC, &lit_3890);
-
-/* 80BF6DC0-80BF6DC4 000004 0004+00 1/2 0/0 0/0 .rodata @3891 */
-SECTION_RODATA static f32 const lit_3891 = 1.0f;
-COMPILER_STRIP_GATE(0x80BF6DC0, &lit_3891);
-
-/* 80BF6DC4-80BF6DC8 000008 0004+00 0/1 0/0 0/0 .rodata @3892 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3892 = -1.0f;
-COMPILER_STRIP_GATE(0x80BF6DC4, &lit_3892);
-#pragma pop
-
-/* 80BF6DC8-80BF6DCC 00000C 0004+00 0/1 0/0 0/0 .rodata @3893 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3893 = 29.0f;
-COMPILER_STRIP_GATE(0x80BF6DC8, &lit_3893);
-#pragma pop
-
-/* 80BF6DCC-80BF6DD0 000010 0004+00 1/3 0/0 0/0 .rodata @3894 */
-SECTION_RODATA static u8 const lit_3894[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80BF6DCC, &lit_3894);
-
-/* 80BF6DD0-80BF6DD4 000014 0004+00 0/1 0/0 0/0 .rodata @3895 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3895 = -200.0f;
-COMPILER_STRIP_GATE(0x80BF6DD0, &lit_3895);
-#pragma pop
-
-/* 80BF6DEC-80BF6DEC 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80BF6DEC = "D_MN09B";
-#pragma pop
-
/* 80BF63F8-80BF678C 000158 0394+00 2/1 0/0 0/0 .text daObj_Gb_Execute__FP12obj_gb_class
*/
-static void daObj_Gb_Execute(obj_gb_class* param_0) {
- // NONMATCHING
-}
-
-/* 80BF678C-80BF67C8 0004EC 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
+static int daObj_Gb_Execute(obj_gb_class* i_this) {
+ fopAc_ac_c* player = dComIfGp_getPlayer(0);
+ cXyz acStack_30;
+ cXyz cStack_3c;
+ i_this->field_0x58e++;
+ for (int i = 0; i < 2; i++) {
+ if (i_this->field_0x58a[i] != 0) {
+ i_this->field_0x58a[i]--;
+ }
+ }
+ switch(i_this->mIsFinalBattle) {
+ case 0:
+ if (i_this->field_0x57c == 0) {
+ for (int i = 0; i < 20; i++) {
+ if (i_this->mBrkFrame < 0.5f) {
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_GANON_BARRIER_APPR, &i_this->field_0x594[i],
+ 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ }
+ Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_GANON_BARRIER, &i_this->field_0x594[i], 0, 0,
+ 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ }
+ } else {
+ if (i_this->mBrkFrame < 0.5f) {
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_GANON_BARRIER_APPR, &i_this->current.pos, 0, 0,
+ 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ }
+ Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_GANON_BARRIER, &i_this->current.pos, 0, 0, 1.0f,
+ 1.0f, -1.0f, -1.0f, 0);
+ }
+ cLib_addCalc2(&i_this->mBrkFrame, 29.0f, 1.0f, 1.0f);
+ if (strcmp(dComIfGp_getStartStageName(), "D_MN09B") != 0) {
+ if (dComIfGs_isSwitch(i_this->mSw2, fopAcM_GetRoomNo(i_this)) ||
+ !dComIfGs_isSwitch(i_this->mSw1, fopAcM_GetRoomNo(i_this)))
+ {
+ i_this->mIsFinalBattle = 1;
+ }
+ }
+ break;
+ case 1:
+ cLib_addCalc2(&i_this->mBrkFrame, 0, 1.0f, 1.0f);
+ if (!dComIfGs_isSwitch(i_this->mSw2, fopAcM_GetRoomNo(i_this)) &&
+ dComIfGs_isSwitch(i_this->mSw1, fopAcM_GetRoomNo(i_this)))
+ {
+ i_this->mIsFinalBattle = 0;
+ }
+ break;
+ }
+ mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z);
+ mDoMtx_stack_c::YrotM(i_this->current.angle.y);
+ if (i_this->field_0x57c == 0) {
+ mDoMtx_stack_c::scaleM(i_this->scale.x, i_this->scale.y, i_this->scale.x);
+ } else {
+ mDoMtx_stack_c::scaleM(i_this->scale.x, i_this->scale.y, 1.0f);
+ }
+ i_this->mModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ i_this->mBtk->play();
+ i_this->mBrk->setFrame(i_this->mBrkFrame);
+ if (i_this->mBrkFrame < 1.0f) {
+ mDoMtx_stack_c::transM(0.0f, -200.0f, 0.0f);
+ mDoMtx_stack_c::scaleM(1.0f, 0.0f, 1.0f);
+ }
+ MTXCopy(mDoMtx_stack_c::get(), i_this->mBgMtx);
+ i_this->mpBgW->Move();
+ return 1;
}
/* 80BF67C8-80BF67D0 000528 0008+00 1/0 0/0 0/0 .text daObj_Gb_IsDelete__FP12obj_gb_class
*/
-static bool daObj_Gb_IsDelete(obj_gb_class* param_0) {
- return true;
+static int daObj_Gb_IsDelete(obj_gb_class* param_0) {
+ return 1;
}
-/* ############################################################################################## */
-/* 80BF6DEC-80BF6DEC 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80BF6DF4 = "Obj_gb";
-#pragma pop
-
/* 80BF67D0-80BF682C 000530 005C+00 1/0 0/0 0/0 .text daObj_Gb_Delete__FP12obj_gb_class
*/
-static void daObj_Gb_Delete(obj_gb_class* param_0) {
- // NONMATCHING
+static int daObj_Gb_Delete(obj_gb_class* i_this) {
+ fopAcM_GetID(i_this);
+ dComIfG_resDelete(&i_this->mPhase, "Obj_gb");
+ if (i_this->mpBgW != NULL) {
+ dComIfG_Bgsp().Release(i_this->mpBgW);
+ }
+ return 1;
}
/* ############################################################################################## */
/* 80BF6DFC-80BF6E08 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
-SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
+static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80BF6E08-80BF6E1C 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
#pragma push
#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
+static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
@@ -178,44 +131,132 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
#pragma pop
/* 80BF6E1C-80BF6E24 000020 0008+00 0/1 0/0 0/0 .data bmd$3914 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 bmd[8] = {
- 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07,
+static int bmd[2] = {
+ 6, 7,
};
-#pragma pop
/* 80BF6E24-80BF6E2C 000028 0008+00 0/1 0/0 0/0 .data brk$3915 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 brk[8] = {
- 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B,
+static int brk[2] = {
+ 10, 11,
};
-#pragma pop
/* 80BF6E2C-80BF6E34 000030 0008+00 0/1 0/0 0/0 .data btk$3916 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 btk[8] = {
- 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F,
+static int btk[2] = {
+ 14, 15,
};
-#pragma pop
/* 80BF6E34-80BF6E3C 000038 0008+00 0/1 0/0 0/0 .data dzb$3917 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 dzb[8] = {
- 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13,
+static int dzb[2] = {
+ 18, 19,
};
-#pragma pop
+
+/* 80BF682C-80BF6A98 00058C 026C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
+static int useHeapInit(fopAc_ac_c* actor) {
+ obj_gb_class* i_this = (obj_gb_class*)actor;
+ J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes("Obj_gb", bmd[i_this->field_0x57c]);
+ JUT_ASSERT(324, modelData != 0);
+ i_this->mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
+ if (i_this->mModel == NULL) {
+ return 0;
+ }
+ i_this->mBtk = new mDoExt_btkAnm();
+ if (i_this->mBtk == NULL) {
+ return 0;
+ }
+ J3DAnmTextureSRTKey* anmTexture = (J3DAnmTextureSRTKey*) dComIfG_getObjectRes(
+ "Obj_gb", btk[i_this->field_0x57c]);
+ if (i_this->mBtk->init(i_this->mModel->getModelData(), anmTexture, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ i_this->mBrk = new mDoExt_brkAnm();
+ if (i_this->mBrk== NULL) {
+ return 0;
+ }
+ J3DAnmTevRegKey* anmTevKey = (J3DAnmTevRegKey*)dComIfG_getObjectRes(
+ "Obj_gb", brk[i_this->field_0x57c]);
+ if (i_this->mBrk->init(i_this->mModel->getModelData(), anmTevKey, 1, 2, 0.0f, 0, -1) == 0) {
+ return 0;
+ }
+ i_this->mpBgW = new dBgW();
+ if (i_this->mpBgW == NULL) {
+ return 0;
+ }
+ cBgD_t* pbGd = (cBgD_t*)dComIfG_getObjectRes(
+ "Obj_gb", dzb[i_this->field_0x57c]);
+ return i_this->mpBgW->Set(pbGd, 1, &i_this->mBgMtx) == 1 ? 0 : 1;
+}
+
+/* 80BF6AE0-80BF6DB0 000840 02D0+00 1/0 0/0 0/0 .text daObj_Gb_Create__FP10fopAc_ac_c */
+static int daObj_Gb_Create(fopAc_ac_c* actor) {
+ fopAcM_SetupActor(actor, obj_gb_class);
+ obj_gb_class* i_this = (obj_gb_class*)actor;
+ int rv = dComIfG_resLoad(&i_this->mPhase, "Obj_gb");
+
+ if (rv == cPhs_COMPLEATE_e) {
+ OS_REPORT("OBJ_GB PARAM %x\n", fopAcM_GetParam(i_this));
+ i_this->field_0x57c = fopAcM_GetParam(i_this);
+ if (i_this->field_0x57c == 0xff) {
+ i_this->field_0x57c = 0;
+ }
+ u8 local_47 = (fopAcM_GetParam(i_this) >> 8) & 0xff;
+ if (local_47 == 0xff) {
+ if (i_this->field_0x57c == 0) {
+ local_47 = 100;
+ } else {
+ local_47 = 10;
+ }
+ }
+ if (i_this->field_0x57c == 0) {
+ i_this->scale.x = local_47 * 0.01f;
+ } else {
+ i_this->scale.x = local_47 * 0.5f;
+ }
+ i_this->scale.y = ((fopAcM_GetParam(i_this) >> 16) & 0xff) * 0.333333f * 0.5f;
+ i_this->mColorAlpha = fopAcM_GetParam(i_this) >> 24;
+ i_this->mSw1 = i_this->current.angle.x & 0xff;
+ i_this->mSw2 = (i_this->current.angle.x & 0xff00) >> 8;
+ i_this->shape_angle.x = 0;
+ i_this->current.angle.x = 0;
+ OS_REPORT("OBJ_GB//////////////OBJ_GB SET 1 !!\n");
+ int heapSize;
+ if (i_this->field_0x57c == 0) {
+ heapSize = 0x1c40;
+ } else {
+ heapSize = 0x1320;
+ }
+ if (fopAcM_entrySolidHeap(i_this, useHeapInit, heapSize) == 0) {
+ OS_REPORT("//////////////OBJ_GB SET NON !!\n");
+ return cPhs_ERROR_e;
+ }
+ OS_REPORT("//////////////OBJ_GB SET 2 !!\n");
+ if (i_this->mpBgW != NULL) {
+ if (dComIfG_Bgsp().Regist(i_this->mpBgW, i_this) != 0) {
+ return cPhs_ERROR_e;
+ }
+ }
+ i_this->field_0x58e = cM_rndF(65536.0f);
+ if (strcmp(dComIfGp_getStartStageName(), "D_MN09B") != 0) {
+ i_this->mIsFinalBattle = 1;
+ }
+ s16 local_44 = 0;
+ cXyz cStack_30(0.0f, 0.0f, i_this->scale.x * 1000.0f);
+ for (int i = 0; i < 20; i++, local_44 += 0xccc) {
+ cMtx_YrotS(*calc_mtx, local_44);
+ MtxPosition(&cStack_30, &i_this->field_0x594[i]);
+ i_this->field_0x594[i] += i_this->current.pos;
+ }
+ daObj_Gb_Execute(i_this);
+ }
+ return rv;
+}
/* 80BF6E3C-80BF6E5C -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Gb_Method */
static actor_method_class l_daObj_Gb_Method = {
- (process_method_func)daObj_Gb_Create__FP10fopAc_ac_c,
- (process_method_func)daObj_Gb_Delete__FP12obj_gb_class,
- (process_method_func)daObj_Gb_Execute__FP12obj_gb_class,
- (process_method_func)daObj_Gb_IsDelete__FP12obj_gb_class,
- (process_method_func)daObj_Gb_Draw__FP12obj_gb_class,
+ (process_method_func)daObj_Gb_Create,
+ (process_method_func)daObj_Gb_Delete,
+ (process_method_func)daObj_Gb_Execute,
+ (process_method_func)daObj_Gb_IsDelete,
+ (process_method_func)daObj_Gb_Draw,
};
/* 80BF6E5C-80BF6E8C -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_GB */
@@ -236,71 +277,4 @@ extern actor_process_profile_definition g_profile_OBJ_GB = {
fopAc_CULLBOX_CUSTOM_e, // cullType
};
-/* 80BF6E8C-80BF6E98 000090 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80BF682C-80BF6A98 00058C 026C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80BF6A98-80BF6AE0 0007F8 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80BF6DD4-80BF6DD8 000018 0004+00 0/1 0/0 0/0 .rodata @4083 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4083 = 1.0f / 100.0f;
-COMPILER_STRIP_GATE(0x80BF6DD4, &lit_4083);
-#pragma pop
-
-/* 80BF6DD8-80BF6DDC 00001C 0004+00 0/1 0/0 0/0 .rodata @4084 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4084 = 0x3EAAAA9F;
-COMPILER_STRIP_GATE(0x80BF6DD8, &lit_4084);
-#pragma pop
-
-/* 80BF6DDC-80BF6DE0 000020 0004+00 0/1 0/0 0/0 .rodata @4085 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4085 = 65536.0f;
-COMPILER_STRIP_GATE(0x80BF6DDC, &lit_4085);
-#pragma pop
-
-/* 80BF6DE0-80BF6DE4 000024 0004+00 0/1 0/0 0/0 .rodata @4086 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4086 = 1000.0f;
-COMPILER_STRIP_GATE(0x80BF6DE0, &lit_4086);
-#pragma pop
-
-/* 80BF6DE4-80BF6DEC 000028 0008+00 0/1 0/0 0/0 .rodata @4088 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4088[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80BF6DE4, &lit_4088);
-#pragma pop
-
-/* 80BF6AE0-80BF6DB0 000840 02D0+00 1/0 0/0 0/0 .text daObj_Gb_Create__FP10fopAc_ac_c */
-static void daObj_Gb_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80BF6DB0-80BF6DB4 000B10 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
-// cXyz::cXyz() {
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
-}
-
/* 80BF6DEC-80BF6DEC 000030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_ten.cpp b/src/d/actor/d_a_obj_ten.cpp
index a137e9794e..c5e545d81a 100644
--- a/src/d/actor/d_a_obj_ten.cpp
+++ b/src/d/actor/d_a_obj_ten.cpp
@@ -4,259 +4,28 @@
*/
#include "d/actor/d_a_obj_ten.h"
+#include "d/actor/d_a_player.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/d_com_inf_game.h"
+#include "f_op//f_op_actor_mng.h"
#include "d/d_cc_d.h"
-#include "dol2asm.h"
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__14daObj_TenHIO_cFv();
-extern "C" void InitCcSph__10daObjTEN_cFv();
-extern "C" void SetCcSph__10daObjTEN_cFv();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" static void daObjTEN_Create__FP10fopAc_ac_c();
-extern "C" static void daObjTEN_Delete__FP10daObjTEN_c();
-extern "C" void WaitAction__10daObjTEN_cFv();
-extern "C" void WallCheck__10daObjTEN_cFv();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void SpeedSet__10daObjTEN_cFv();
-extern "C" void WallWalk__10daObjTEN_cFv();
-extern "C" void WalkAction__10daObjTEN_cFv();
-extern "C" void MoveAction__10daObjTEN_cFv();
-extern "C" void Action__10daObjTEN_cFv();
-extern "C" void ShopAction__10daObjTEN_cFv();
-extern "C" void checkGroundPos__10daObjTEN_cFv();
-extern "C" void Insect_Release__10daObjTEN_cFv();
-extern "C" void ParticleSet__10daObjTEN_cFv();
-extern "C" void BoomChk__10daObjTEN_cFv();
-extern "C" void Execute__10daObjTEN_cFv();
-extern "C" void ObjHit__10daObjTEN_cFv();
-extern "C" void Z_BufferChk__10daObjTEN_cFv();
-extern "C" void Delete__10daObjTEN_cFv();
-extern "C" void setBaseMtx__10daObjTEN_cFv();
-extern "C" static void daObjTEN_Draw__FP10daObjTEN_c();
-extern "C" static void daObjTEN_Execute__FP10daObjTEN_c();
-extern "C" void CreateChk__10daObjTEN_cFv();
-extern "C" void create__10daObjTEN_cFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" static bool daObjTEN_IsDelete__FP10daObjTEN_c();
-extern "C" void __dt__14daObj_TenHIO_cFv();
-extern "C" void __sinit_d_a_obj_ten_cpp();
-extern "C" static void func_80D0B8CC();
-extern "C" static void func_80D0B8D4();
-extern "C" extern char const* const d_a_obj_ten__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotS__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
-extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
-extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
-extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff();
-extern "C" void play__16mDoExt_McaMorfSOFUlSc();
-extern "C" void entryDL__16mDoExt_McaMorfSOFv();
-extern "C" void modelCalc__16mDoExt_McaMorfSOFv();
-extern "C" void mDoLib_project__FP3VecP3Vec();
-extern "C" void mDoLib_pos2camera__FP3VecP3Vec();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void getEmitter__Q213dPa_control_c7level_cFUl();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void newData__13dDlst_peekZ_cFssPUl();
-extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
-extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-extern "C" void __ct__12dBgS_AcchCirFv();
-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 __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
-extern "C" void GetTgHitGObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void __ct__9dInsect_cFv();
-extern "C" void Insect_GetDemoMain__9dInsect_cFv();
-extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs();
-extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void isCatchNotGiveInsect__14dMenu_Insect_cFUc();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void SetR__8cM3dGSphFf();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void cLib_chaseAngleS__FPsss();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz();
-extern "C" void __ct__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Sph[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80D0B8F0-80D0B8F4 000000 0004+00 14/14 0/0 0/0 .rodata @3775 */
-SECTION_RODATA static f32 const lit_3775 = 1.0f;
-COMPILER_STRIP_GATE(0x80D0B8F0, &lit_3775);
-
-/* 80D0B9F4-80D0BA14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjTEN_Method */
-static actor_method_class l_daObjTEN_Method = {
- (process_method_func)daObjTEN_Create__FP10fopAc_ac_c,
- (process_method_func)daObjTEN_Delete__FP10daObjTEN_c,
- (process_method_func)daObjTEN_Execute__FP10daObjTEN_c,
- (process_method_func)daObjTEN_IsDelete__FP10daObjTEN_c,
- (process_method_func)daObjTEN_Draw__FP10daObjTEN_c,
-};
-
-/* 80D0BA14-80D0BA44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Ten */
-extern actor_process_profile_definition g_profile_Obj_Ten = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_Ten, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjTEN_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 483, // mPriority
- &l_daObjTEN_Method, // sub_method
- 0x000C0120, // mStatus
- fopAc_ENV_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80D0BA44-80D0BA68 000050 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_80D0B8D4,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D0B8CC,
-};
-
-/* 80D0BA68-80D0BA74 000074 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
-
-/* 80D0BA74-80D0BA80 000080 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,
-};
-
-/* 80D0BA80-80D0BA8C 00008C 000C+00 1/1 0/0 0/0 .data __vt__10daObjTEN_c */
-SECTION_DATA extern void* __vt__10daObjTEN_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)Insect_Release__10daObjTEN_cFv,
-};
-
-/* 80D0BA8C-80D0BA98 000098 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
-};
-
-/* 80D0BA98-80D0BAA4 0000A4 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80D0BAA4-80D0BAB0 0000B0 000C+00 2/2 0/0 0/0 .data __vt__14daObj_TenHIO_c */
-SECTION_DATA extern void* __vt__14daObj_TenHIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14daObj_TenHIO_cFv,
-};
+#include "SSystem/SComponent/c_lib.h"
+#include "m_Do/m_Do_lib.h"
+#include "d/d_menu_insect.h"
/* 80D087CC-80D087F4 0000EC 0028+00 1/1 0/0 0/0 .text __ct__14daObj_TenHIO_cFv */
daObj_TenHIO_c::daObj_TenHIO_c() {
- // NONMATCHING
+ field_0x4 = -1;
+ field_0xc = 1.0f;
+ field_0x8 = 1.0f;
}
/* ############################################################################################## */
/* 80D0B8F4-80D0B8F8 000004 0002+02 1/2 0/0 0/0 .rodata l_ten_itemno */
-SECTION_RODATA static u16 const l_ten_itemno[1 + 1 /* padding */] = {
- 0xCECF,
- /* padding */
- 0x0000,
+static u8 const l_ten_itemno[2] = {
+ 0xCE,
+ 0xCF,
};
-COMPILER_STRIP_GATE(0x80D0B8F4, &l_ten_itemno);
/* 80D0B8F8-80D0B938 000008 0040+00 1/1 0/0 0/0 .rodata ccSphSrc$3779 */
const static dCcD_SrcSph ccSphSrc = {
@@ -273,493 +42,820 @@ const static dCcD_SrcSph ccSphSrc = {
/* 80D087F4-80D08860 000114 006C+00 1/1 0/0 0/0 .text InitCcSph__10daObjTEN_cFv */
void daObjTEN_c::InitCcSph() {
- // NONMATCHING
+ mStts.Init(1, 0, this);
+ mSph.Set(ccSphSrc);
+ mSph.SetStts(&mStts);
+ mSph.SetC(current.pos);
+ mSph.OnTgNoHitMark();
}
-/* ############################################################################################## */
-/* 80D0B938-80D0B93C 000048 0004+00 1/3 0/0 0/0 .rodata @3788 */
-SECTION_RODATA static f32 const lit_3788 = 20.0f;
-COMPILER_STRIP_GATE(0x80D0B938, &lit_3788);
-
/* 80D08860-80D088B8 000180 0058+00 1/1 0/0 0/0 .text SetCcSph__10daObjTEN_cFv */
void daObjTEN_c::SetCcSph() {
- // NONMATCHING
+ mSph.SetC(current.pos);
+ mSph.SetR(20.0f);
+ dComIfG_Ccsp()->Set(&mSph);
}
-/* ############################################################################################## */
-/* 80D0B9E4-80D0B9E4 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D0B9E4 = "I_Ten";
-#pragma pop
-
/* 80D088B8-80D08B84 0001D8 02CC+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D08B84-80D08BCC 0004A4 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+static int useHeapInit(fopAc_ac_c* actor) {
+ daObjTEN_c* i_this = static_cast<daObjTEN_c*>(actor);
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("I_Ten", 10);
+ JUT_ASSERT(246, modelData != 0);
+ i_this->mMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, 2, 1.0f, 0, -1,
+ &i_this->mCreature, 0, 0x11000284);
+ if (i_this->mMorf == NULL || i_this->mMorf->getModel() == NULL) {
+ return 0;
+ }
+ J3DModel* model = i_this->mMorf->getModel();
+ i_this->mBrk = new mDoExt_brkAnm();
+ if (i_this->mBrk == NULL) {
+ return 0;
+ }
+ if (i_this->mSex == 1) {
+ J3DAnmTevRegKey* anmKey = (J3DAnmTevRegKey*)dComIfG_getObjectRes("I_Ten", 13);
+ if (i_this->mBrk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ }
+ else {
+ J3DAnmTevRegKey* anmKey = (J3DAnmTevRegKey*)dComIfG_getObjectRes("I_Ten", 14);
+ if (i_this->mBrk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ }
+ i_this->mBtk = new mDoExt_btkAnm();
+ if (i_this->mBtk == NULL) {
+ return 0;
+ }
+ if (i_this->mSex == 1) {
+ J3DAnmTextureSRTKey* anmKey = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("I_Ten", 17);
+ if (i_this->mBtk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ } else {
+ J3DAnmTextureSRTKey* anmKey = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("I_Ten", 18);
+ if (i_this->mBtk->init(model->getModelData(), anmKey, 1, 2, 1.0f, 0, -1) == 0) {
+ return 0;
+ }
+ }
+ return 1;
}
/* 80D08BCC-80D08BEC 0004EC 0020+00 1/0 0/0 0/0 .text daObjTEN_Create__FP10fopAc_ac_c */
-static void daObjTEN_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daObjTEN_Create(fopAc_ac_c* i_this) {
+ return static_cast<daObjTEN_c*>(i_this)->create();
}
/* 80D08BEC-80D08C10 00050C 0024+00 1/0 0/0 0/0 .text daObjTEN_Delete__FP10daObjTEN_c */
-static void daObjTEN_Delete(daObjTEN_c* param_0) {
- // NONMATCHING
+static int daObjTEN_Delete(daObjTEN_c* i_this) {
+ static_cast<daObjTEN_c*>(i_this)->Delete();
+ return 1;
}
-/* ############################################################################################## */
-/* 80D0B93C-80D0B940 00004C 0004+00 1/12 0/0 0/0 .rodata @3939 */
-SECTION_RODATA static u8 const lit_3939[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80D0B93C, &lit_3939);
-
-/* 80D0B940-80D0B944 000050 0004+00 0/5 0/0 0/0 .rodata @3940 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3940 = 5.0f;
-COMPILER_STRIP_GATE(0x80D0B940, &lit_3940);
-#pragma pop
-
-/* 80D0B944-80D0B948 000054 0004+00 0/5 0/0 0/0 .rodata @3941 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3941 = -1.0f;
-COMPILER_STRIP_GATE(0x80D0B944, &lit_3941);
-#pragma pop
-
-/* 80D0B948-80D0B94C 000058 0004+00 0/5 0/0 0/0 .rodata @3942 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3942 = 50.0f;
-COMPILER_STRIP_GATE(0x80D0B948, &lit_3942);
-#pragma pop
-
-/* 80D0B94C-80D0B950 00005C 0004+00 0/1 0/0 0/0 .rodata @3943 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3943 = 1500.0f;
-COMPILER_STRIP_GATE(0x80D0B94C, &lit_3943);
-#pragma pop
-
-/* 80D0B950-80D0B958 000060 0004+04 0/4 0/0 0/0 .rodata @3944 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3944[1 + 1 /* padding */] = {
- 100.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80D0B950, &lit_3944);
-#pragma pop
-
/* 80D08C10-80D08D94 000530 0184+00 2/2 0/0 0/0 .text WaitAction__10daObjTEN_cFv */
void daObjTEN_c::WaitAction() {
- // NONMATCHING
+ switch (field_0x5e9) {
+ case 0:
+ speedF = 0.0f;
+ J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 7);
+ mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f,
+ -1.0f);
+ field_0x5e9++;
+ field_0x5ea[0] = cM_rndF(50.0f) + 50.0f;
+ break;
+ case 1:
+ if (fopAcM_searchPlayerDistance(this) < 1500.0f) {
+ field_0x5ea[0]--;
+ if (field_0x5ea[0] <= 0) {
+ field_0x5ea[0]= 0;
+ }
+ if (field_0x5ea[0] == 0) {
+ int rnd = cM_rndF(100.0f);
+ if (rnd < 40) {
+ mAction = ACTION_WALK;
+ field_0x5e9 = 0;
+ } else if (rnd < 70) {
+ mAction = ACTION_MOVE;
+ field_0x5e9 = 0;
+ } else {
+ field_0x5ea[0] = cM_rndF(50.0f) + 50.0f;
+ }
+ }
+ }
+ break;
+ }
}
-/* ############################################################################################## */
-/* 80D0B958-80D0B960 000068 0008+00 0/5 0/0 0/0 .rodata @3997 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3997[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D0B958, &lit_3997);
-#pragma pop
-
-/* 80D0B960-80D0B968 000070 0008+00 0/5 0/0 0/0 .rodata @3998 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3998[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D0B960, &lit_3998);
-#pragma pop
-
-/* 80D0B968-80D0B970 000078 0008+00 0/5 0/0 0/0 .rodata @3999 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3999[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D0B968, &lit_3999);
-#pragma pop
-
/* 80D08D94-80D08FC0 0006B4 022C+00 1/1 0/0 0/0 .text WallCheck__10daObjTEN_cFv */
-void daObjTEN_c::WallCheck() {
- // NONMATCHING
+BOOL daObjTEN_c::WallCheck() {
+ dBgS_LinChk linChk;
+ linChk.SetObj();
+ linChk.Set(&old.pos, &current.pos, NULL);
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla acStack_b0;
+ dComIfG_Bgsp().GetTriPla(linChk, &acStack_b0);
+ cXyz* pfVar4 = acStack_b0.GetNP();
+ current.pos = linChk.i_GetCross();
+ cXyz cStack_bc(0.0f, 0.0f, 0.0f);
+ cXyz cStack_c8(0.0f, pfVar4->y, pfVar4->z);
+ field_0x602.z = -cM_atan2s(pfVar4->x, cStack_bc.abs(cStack_c8));
+ field_0x602.x = cM_atan2s(pfVar4->z, pfVar4->y);
+ field_0x60a = cM_atan2s(pfVar4->x, pfVar4->z);
+ return 1;
+ }
+ return 0;
}
-/* 80D08FC0-80D09008 0008E0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla() {
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80D0B970-80D0B974 000080 0004+00 0/1 0/0 0/0 .rodata @4023 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4023 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80D0B970, &lit_4023);
-#pragma pop
-
-/* 80D0B974-80D0B978 000084 0004+00 0/3 0/0 0/0 .rodata @4024 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4024 = 10.0f;
-COMPILER_STRIP_GATE(0x80D0B974, &lit_4024);
-#pragma pop
-
-/* 80D0B978-80D0B97C 000088 0004+00 0/1 0/0 0/0 .rodata @4025 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4025 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80D0B978, &lit_4025);
-#pragma pop
-
-/* 80D0B97C-80D0B980 00008C 0004+00 0/3 0/0 0/0 .rodata @4026 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4026 = 0.5f;
-COMPILER_STRIP_GATE(0x80D0B97C, &lit_4026);
-#pragma pop
-
/* 80D09008-80D09114 000928 010C+00 1/1 0/0 0/0 .text SpeedSet__10daObjTEN_cFv */
void daObjTEN_c::SpeedSet() {
- // NONMATCHING
+ speed.y += gravity;
+ cXyz speedAmp(0.0f, speed.y, speedF);
+ cXyz speedRes(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::ZXYrotS(field_0x602);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ mDoMtx_stack_c::multVec(&speedAmp, &speedRes);
+ current.pos.x += speedRes.x;
+ current.pos.y += speedRes.y;
+ current.pos.z += speedRes.z;
+ cLib_addCalc2(&speedF, field_0x5f0, 0.4f, 10.0f);
+ cLib_addCalc2(&speed.y, field_0x5f4, 0.1f, 0.5f);
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5f8, 0x10, 0x100);
+ shape_angle.y = current.angle.y;
}
-/* ############################################################################################## */
-/* 80D0B980-80D0B984 000090 0004+00 0/2 0/0 0/0 .rodata @4124 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4124 = 3.0f;
-COMPILER_STRIP_GATE(0x80D0B980, &lit_4124);
-#pragma pop
-
-/* 80D0B984-80D0B988 000094 0004+00 0/1 0/0 0/0 .rodata @4125 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4125 = -100.0f;
-COMPILER_STRIP_GATE(0x80D0B984, &lit_4125);
-#pragma pop
-
-/* 80D0B988-80D0B98C 000098 0004+00 0/2 0/0 0/0 .rodata @4126 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4126 = 40.0f;
-COMPILER_STRIP_GATE(0x80D0B988, &lit_4126);
-#pragma pop
-
-/* 80D0B98C-80D0B990 00009C 0004+00 0/1 0/0 0/0 .rodata @4127 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4127 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80D0B98C, &lit_4127);
-#pragma pop
-
/* 80D09114-80D09548 000A34 0434+00 1/1 0/0 0/0 .text WallWalk__10daObjTEN_cFv */
void daObjTEN_c::WallWalk() {
- // NONMATCHING
+ cXyz cStack_138(0.0f, -100.0f, 3.0f * speedF);
+ cXyz cStack_144(0.0f, 40.0f, 0.0f);
+ cXyz cStack_150;
+ dBgS_LinChk adStack_a8;
+ dBgS_LinChk adStack_118;
+ adStack_a8.SetObj();
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(field_0x602);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ mDoMtx_stack_c::multVec(&cStack_138, &cStack_138);
+ mDoMtx_stack_c::multVec(&cStack_144, &cStack_144);
+ adStack_a8.Set(&cStack_144, &cStack_138, NULL);
+ if (dComIfG_Bgsp().LineCross(&adStack_a8) != 0) {
+ speedF = 0.3f;
+ cM3dGPla acStack_12c;
+ dComIfG_Bgsp().GetTriPla(adStack_a8, &acStack_12c);
+ cXyz* pfVar5 = acStack_12c.GetNP();
+ s16 sVar7 = cM_atan2s(pfVar5->x, pfVar5->z);
+ cXyz cStack_15c(0.0f, 0.0f, 0.0f);
+ cXyz cStack_168(0.0f, pfVar5->y, pfVar5->z);
+ f32 uVar11 = cStack_15c.abs(cStack_168);
+ cStack_150 = adStack_a8.i_GetCross();
+ if (0x1000 > sVar7 - field_0x60a && sVar7 - field_0x60a > -0x1000 &&
+ cStack_150.abs(current.pos) < speedF * 3.0f)
+ {
+ current.pos = cStack_150;
+ field_0x602.z = -cM_atan2s(pfVar5->x, uVar11);
+ field_0x602.x = cM_atan2s(pfVar5->z, pfVar5->y);
+ field_0x60a = sVar7;
+ } else {
+ field_0x5f8 += 0x100;
+ }
+ } else {
+ field_0x5f8 += 0x100;
+ }
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5f8, 0x10, 0x50);
+ shape_angle.y = current.angle.y;
}
/* 80D09548-80D09748 000E68 0200+00 2/2 0/0 0/0 .text WalkAction__10daObjTEN_cFv */
void daObjTEN_c::WalkAction() {
- // NONMATCHING
+ for (int i = 0; i < 3; i++) {
+ field_0x5ea[i]--;
+ if (field_0x5ea[i] <= 0) {
+ field_0x5ea[i] = 0;
+ }
+ }
+ J3DAnmTransform* anmTransform;
+ switch (field_0x5e9) {
+ case 0:
+ anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 7);
+ mMorf->setAnm(anmTransform, 2, 5.0f, 1.0f, 0.0f, -1.0f);
+ field_0x5f0 = 0.5f;
+ speed.y = 0.0f;
+ field_0x5f4 = 0;
+ field_0x5e9++;
+ field_0x5ea[1] = cM_rndF(50.0f) + 50.0f;
+ break;
+ case 1:
+ if (field_0x5ea[0] == 0) {
+ cXyz local_48(cM_rndFX(100.0f), 0.0f, cM_rndFX(100.0f));
+ field_0x5f8 = cM_atan2s(local_48.x, local_48.z);
+ field_0x5ea[0] = cM_rndF(50.0f) + 50.0f;
+ }
+ if (field_0x5ea[1] == 0) {
+ int rnd = cM_rndF(100.0f);
+ if (rnd < 30) {
+ mAction = ACTION_MOVE;
+ field_0x5e9 = 0;
+ } else if (rnd < 60) {
+ mAction = ACTION_WAIT;
+ field_0x5e9 = 0;
+ } else {
+ field_0x5ea[1] = cM_rndF(50.0f) + 50.0f;
+ }
+ }
+ break;
+ }
+ WallWalk();
}
-/* ############################################################################################## */
-/* 80D0B990-80D0B994 0000A0 0004+00 0/1 0/0 0/0 .rodata @4311 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4311 = 30.0f;
-COMPILER_STRIP_GATE(0x80D0B990, &lit_4311);
-#pragma pop
-
-/* 80D0B994-80D0B998 0000A4 0004+00 0/1 0/0 0/0 .rodata @4312 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4312 = 80.0f;
-COMPILER_STRIP_GATE(0x80D0B994, &lit_4312);
-#pragma pop
-
-/* 80D0B998-80D0B99C 0000A8 0004+00 0/3 0/0 0/0 .rodata @4313 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4313 = 8.0f;
-COMPILER_STRIP_GATE(0x80D0B998, &lit_4313);
-#pragma pop
-
-/* 80D0B99C-80D0B9A0 0000AC 0004+00 0/1 0/0 0/0 .rodata @4314 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4314 = 200.0f;
-COMPILER_STRIP_GATE(0x80D0B99C, &lit_4314);
-#pragma pop
-
-/* 80D0B9A0-80D0B9A4 0000B0 0004+00 0/1 0/0 0/0 .rodata @4315 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4315 = 11.0f;
-COMPILER_STRIP_GATE(0x80D0B9A0, &lit_4315);
-#pragma pop
-
-/* 80D0B9A4-80D0B9A8 0000B4 0004+00 0/1 0/0 0/0 .rodata @4316 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4316 = 1050.0f;
-COMPILER_STRIP_GATE(0x80D0B9A4, &lit_4316);
-#pragma pop
-
-/* 80D0B9A8-80D0B9AC 0000B8 0004+00 0/1 0/0 0/0 .rodata @4317 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4317 = 64000.0f;
-COMPILER_STRIP_GATE(0x80D0B9A8, &lit_4317);
-#pragma pop
-
/* 80D09748-80D09F58 001068 0810+00 2/2 0/0 0/0 .text MoveAction__10daObjTEN_cFv */
void daObjTEN_c::MoveAction() {
- // NONMATCHING
+ for (int i = 0; i < 3; i++) {
+ field_0x5ea[i]--;
+ if (field_0x5ea[i] <= 0) {
+ field_0x5ea[i] = 0;
+ }
+ }
+ cXyz cStack_b0;
+ cXyz cStack_bc(0.0f, 1.0f, 0.0f);
+ dBgS_LinChk linkchk;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ linkchk.SetObj();
+ cXyz cStack_c8;
+ cXyz cStack_d4;
+
+ switch (field_0x5e9) {
+ case 0:
+ {
+ J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6);
+ mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, -1.0f);
+ field_0x5e9++;
+ field_0x5ea[0] = 20;
+ }
+ break;
+ case 1:
+ if (field_0x5ea[0] == 10) {
+ mMorf->setPlaySpeed(1.0f);
+ }
+ if (field_0x5ea[0] == 0) {
+ field_0x5e9++;
+ mDoMtx_stack_c::ZXYrotS(field_0x602);
+ mDoMtx_stack_c::multVec(&cStack_bc, &cStack_bc);
+ field_0x5ea[0] = cM_rndF(10.0f) + 30.0f;
+ if (field_0x624 == 0) {
+ field_0x5ea[1] = cM_rndF(80.0f) + 80.0f;
+ } else {
+ field_0x5ea[1] = cM_rndF(40.0f) + 40.0f;
+ }
+ field_0x5f0 = cM_rndF(5.0f) + 8.0f;
+ field_0x5f8 = field_0x60a;
+ field_0x5f4 = 3.0f;
+ speed.y = 5.0f;
+ }
+ break;
+ case 2:
+ {
+ cXyz local_e0;
+ cXyz* flamePos = player->getKandelaarFlamePos();
+ if (flamePos != NULL) {
+ field_0x5f8 = cLib_targetAngleY(&current.pos, flamePos);
+ if ((flamePos->abs(current.pos) < 200.0f) && speed.y < 0.0f) {
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5f8, 2,
+ 0x500);
+ } else {
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5f8, 0x10,
+ 0x200);
+ }
+ if (flamePos->abs(current.pos) < 11.0f &&
+ fopAcM_GetSpeedF(player) < 1.0f)
+ {
+ local_e0.set(0.0f, 0.0f, 10.0f);
+ if (field_0x60d == 0) {
+ field_0x60a = cLib_targetAngleY(&current.pos, flamePos);
+ }
+ cLib_offsetPos(&cStack_d4, flamePos, field_0x60a, &local_e0);
+ current.pos = cStack_d4;
+ shape_angle.x = 0x4000;
+ shape_angle.y = field_0x60a;
+ speedF = 0.0f;
+ field_0x5f0 = 0;
+ speed.y = 0;
+ field_0x5f4 = 0;
+ mMorf->setPlaySpeed(0.0f);
+ field_0x5f8 = 0;
+ current.angle.y = field_0x60a;
+ field_0x60d = 1;
+ J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 7);
+ mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, -1.0f);
+ } else {
+ if (field_0x60d != 0) {
+ field_0x60d = 0;
+ field_0x5f4 = 3.0f;
+ speed.y = 3.0f;
+ speedF = 8.0f;
+ field_0x5f0 = 8.0f;
+ mMorf->setPlaySpeed(1.0f);
+ field_0x60a = 0;
+ J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6);
+ mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, -1.0f);
+ }
+ }
+ }
+ if (field_0x5ea[0] == 0) {
+ if (flamePos == NULL) {
+ if (field_0x624 == 0) {
+ local_e0 = home.pos - current.pos;
+ local_e0.x += cM_rndFX(1050.0f);
+ local_e0.z += cM_rndFX(1050.0f);
+ field_0x5f8 = cM_atan2s(local_e0.x, local_e0.z);
+ } else {
+ field_0x5f8 = cM_rndF(64000.0f);
+ }
+ }
+ field_0x5ea[0] = cM_rndF(20.0f) + 20.0f;
+ field_0x5f0 = cM_rndF(5.0f) + 8.0f;
+ }
+ if (field_0x5ea[1] == 0) {
+ field_0x5f4 = -cM_rndF(3.0f);
+ field_0x5ea[1] = cM_rndF(20.0f) + 20.0f;
+ }
+ mMorf->getFrame();
+ SpeedSet();
+ if (field_0x624 == 0) {
+ cLib_addCalcAngleS2(&field_0x602.x, 0, 0x10, 0x1000);
+ cLib_addCalcAngleS2(&field_0x602.z, 0, 0x10, 0x1000);
+ } else {
+ cLib_addCalcAngleS2(&field_0x602.x, 0, 0x10, 0x100);
+ cLib_addCalcAngleS2(&field_0x602.z, 0, 0x10, 0x100);
+ }
+ if (WallCheck()) {
+ mAction = ACTION_WAIT;
+ field_0x5e9 = 0;
+ speedF = 0;
+ speed.y = 0;
+ shape_angle.x = 0;
+ shape_angle.z = 0;
+ }
+ if (field_0x624 == 1) {
+ cLib_addCalcAngleS2(&current.angle.y, field_0x5f8, 0x10,
+ 0x100);
+ }
+ if (field_0x60d == 0) {
+ cLib_chaseAngleS(&shape_angle.x, 0, 0x400);
+ }
+ }
+ break;
+ }
+ if (mMorf->getPlaySpeed() == 1.0f) {
+ mCreature.startCreatureSoundLevel(Z2SE_INSCT_BTBT, 0, -1);
+ }
}
/* 80D09F58-80D0A01C 001878 00C4+00 1/1 0/0 0/0 .text Action__10daObjTEN_cFv */
void daObjTEN_c::Action() {
- // NONMATCHING
+ switch (mAction) {
+ case ACTION_WAIT:
+ WaitAction();
+ break;
+ case ACTION_WALK:
+ WalkAction();
+ mCreature.startCreatureSoundLevel(Z2SE_INSCT_KSKS, 0, -1);
+ break;
+ case ACTION_MOVE:
+ MoveAction();
+ break;
+ }
+ Insect_GetDemoMain();
+ mCreature.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1);
}
/* 80D0A01C-80D0A0D8 00193C 00BC+00 1/1 0/0 0/0 .text ShopAction__10daObjTEN_cFv */
void daObjTEN_c::ShopAction() {
- // NONMATCHING
+ switch (mAction) {
+ case ACTION_WAIT:
+ WaitAction();
+ break;
+ case ACTION_WALK:
+ WalkAction();
+ mCreature.startCreatureSoundLevel(Z2SE_INSCT_KSKS, 0, -1);
+ break;
+ case ACTION_MOVE:
+ MoveAction();
+ break;
+ }
+ mCreature.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1);
}
/* 80D0A0D8-80D0A13C 0019F8 0064+00 1/1 0/0 0/0 .text checkGroundPos__10daObjTEN_cFv */
void daObjTEN_c::checkGroundPos() {
- // NONMATCHING
+ cXyz acStack_28(current.pos);
+ mGndChk.SetPos(&acStack_28);
+ field_0x5e4 = dComIfG_Bgsp().GroundCross(&mGndChk);
}
/* 80D0A13C-80D0A154 001A5C 0018+00 1/0 0/0 0/0 .text Insect_Release__10daObjTEN_cFv */
void daObjTEN_c::Insect_Release() {
- // NONMATCHING
+ field_0x56C = 1;
+ field_0x624 = 2;
+ mAction = ACTION_MOVE;
}
-/* ############################################################################################## */
-/* 80D0B9AC-80D0B9B0 0000BC 0004+00 0/0 0/0 0/0 .rodata @4423 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4423 = -9.0f;
-COMPILER_STRIP_GATE(0x80D0B9AC, &lit_4423);
-#pragma pop
-
-/* 80D0B9B0-80D0B9B8 0000C0 0008+00 1/2 0/0 0/0 .rodata @4458 */
-SECTION_RODATA static u8 const lit_4458[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D0B9B0, &lit_4458);
+static f32 dummyLiteral() { return -9.0f; }
/* 80D0A154-80D0A278 001A74 0124+00 1/1 0/0 0/0 .text ParticleSet__10daObjTEN_cFv */
void daObjTEN_c::ParticleSet() {
- // NONMATCHING
+ if (field_0x618 > field_0x61c) {
+ cLib_addCalc2(&mParticleScale, 0.0f, 1.0f, 1.0f);
+ } else {
+ cLib_addCalc2(&mParticleScale, 1.0f, 1.0f, 1.0f);
+ }
+ mParticleKey1 = dComIfGp_particle_set(mParticleKey1, 0xa1b, &current.pos, &tevStr,
+ &shape_angle, 0, 0xff, 0, -1, 0, 0, 0);
+ f32 partScale = mParticleScale;
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mParticleKey1);
+ if (emitter != NULL) {
+ emitter->setGlobalParticleScale(partScale, partScale);
+ }
}
/* 80D0A278-80D0A644 001B98 03CC+00 1/1 0/0 0/0 .text BoomChk__10daObjTEN_cFv */
void daObjTEN_c::BoomChk() {
- // NONMATCHING
+ if (field_0x7a8 != 0) {
+ cXyz* playerPos = &fopAcM_GetPosition(daPy_getPlayerActorClass());
+ home.pos = current.pos;
+ cXyz cStack_cc(*playerPos);
+ cStack_cc.y += 100.0f;
+ if (mBoomerang.posMove(&current.pos, &shape_angle.y, NULL,
+ 0x1c00) != 0) {
+ mBoomerang.bgCheckAfterOffset(&current.pos);
+ current.pos.y += 0.5f;
+ } else {
+ dBgS_LinChk linChk;
+ linChk.SetObj();
+ linChk.Set(&cStack_cc, &current.pos, NULL);
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla acStack_c0;
+ dComIfG_Bgsp().GetTriPla(linChk, &acStack_c0);
+ current.pos = old.pos = linChk.i_GetCross();
+ mAction = ACTION_WAIT;
+ field_0x5e9 = 0;
+ cXyz* pfVar7 = acStack_c0.GetNP();
+ current.pos = linChk.i_GetCross();
+ cXyz cStack_d8(0.0f, 0.0f, 0.0f);
+ cXyz cStack_e4(0.0f, pfVar7->y, pfVar7->z);
+ field_0x602.z = -cM_atan2s(pfVar7->x, cStack_d8.abs(cStack_e4));
+ field_0x602.x = cM_atan2s(pfVar7->z, pfVar7->y);
+ field_0x60a = cM_atan2s(pfVar7->x, pfVar7->z);
+ } else {
+ mAction = 1;
+ field_0x5e9 = 2;
+ J3DAnmTransform* anmTransform =
+ (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6);
+ mMorf->setAnm(anmTransform, 2, 5.0f, 1.0f,
+ 0.0f, -1.0f);
+ speedF = 8.0f;
+ field_0x5f0 = cM_rndF(5.0f) + 8.0f;
+ home.pos = current.pos;
+ field_0x5f4 = 5.0f;
+ speed.y = 5.0f;
+ field_0x5ea[0] = 50;
+ current.pos.y += 50.0f;
+ field_0x5ea[1] = cM_rndF(5.0f) + 5.0f;
+ current.pos.y = old.pos.y = playerPos->y + 100.0f;
+ }
+ field_0x7a8 = 0;
+ }
+ }
}
-/* ############################################################################################## */
-/* 80D0B9B8-80D0B9BC 0000C8 0004+00 0/1 0/0 0/0 .rodata @4604 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4604 = 10000.0f;
-COMPILER_STRIP_GATE(0x80D0B9B8, &lit_4604);
-#pragma pop
-
/* 80D0A644-80D0A8C8 001F64 0284+00 1/1 0/0 0/0 .text Execute__10daObjTEN_cFv */
-void daObjTEN_c::Execute() {
- // NONMATCHING
+int daObjTEN_c::Execute() {
+ if (ChkGetDemo()) {
+ field_0x618 = field_0x61c + 10000.0f;
+ mCreature.startCreatureSoundLevel(Z2SE_INSCT_KIRA, 0, -1);
+ Insect_GetDemoMain();
+ ParticleSet();
+ return 1;
+ } else {
+ daPy_getPlayerActorClass();
+ checkGroundPos();
+ attention_info.position = current.pos;
+ eyePos = current.pos;
+ eyePos.y += 10.0f;
+ switch(field_0x624) {
+ case 0:
+ if (!fopAcM_checkHookCarryNow(this)) {
+ Action();
+ } else {
+ home.pos = current.pos;
+ }
+ mParticleKey2 = dComIfGp_particle_set(mParticleKey2, 0xa1c,
+ &current.pos, &tevStr, &shape_angle, 0,
+ 0xff, 0, -1, 0, 0, 0);
+ SetCcSph();
+ ObjHit();
+ BoomChk();
+ eyePos = current.pos;
+ eyePos.y += 10.0f;
+ attention_info.position = eyePos;
+ attention_info.position.y += 10.0f;
+ ParticleSet();
+ break;
+ case 1:
+ ShopAction();
+ break;
+ }
+
+ if (mAction == ACTION_MOVE && field_0x5e9 == 2 &&
+ speed.y < 0.0f)
+ {
+ mAcch.CrrPos(dComIfG_Bgsp());
+ }
+ s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this));
+ mMorf->play(0, reverb);
+ mBtk->play();
+ mBrk->play();
+ setBaseMtx();
+ }
+ return 1;
}
/* 80D0A8C8-80D0AA50 0021E8 0188+00 1/1 0/0 0/0 .text ObjHit__10daObjTEN_cFv */
void daObjTEN_c::ObjHit() {
- // NONMATCHING
+ if (mSph.ChkTgHit()) {
+ cCcD_Obj* hitObj = mSph.GetTgHitObj();
+ if (hitObj->ChkAtType(AT_TYPE_BOOMERANG)) {
+ if (field_0x7a8 == 0) {
+ field_0x7a8 = 1;
+ mSph.GetTgHitGObj();
+ mBoomerang.initOffset(&current.pos);
+ }
+ } else {
+ if (!hitObj->ChkAtType(AT_TYPE_NORMAL_SWORD) && hitObj->ChkAtType(AT_TYPE_HOOKSHOT)) {
+ cXyz cStack_38(0.0f, 0.0f, 0.0f);
+ fpc_ProcID id = fopAcM_GetID(this);
+ daPy_getPlayerActorClass()->setHookshotCarryOffset(id, &cStack_38);
+ mAction = ACTION_MOVE;
+ field_0x5e9 = 2;
+ field_0x7a8 = 0;
+ J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 6);
+ mMorf->setAnm(anmTransform, 2, 5.0f, 1.0f, 0.0f, -1.0f);
+ speedF = 8.0f;
+ field_0x5f0 = cM_rndF(5.0f) + 8.0f;
+ field_0x5ea[1] = cM_rndF(5.0f) + 5.0f;
+ }
+ }
+ mSph.ClrTgHit();
+ }
}
-/* ############################################################################################## */
-/* 80D0B9BC-80D0B9C0 0000CC 0004+00 0/1 0/0 0/0 .rodata @4673 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4673 = 608.0f;
-COMPILER_STRIP_GATE(0x80D0B9BC, &lit_4673);
-#pragma pop
-
-/* 80D0B9C0-80D0B9C4 0000D0 0004+00 0/1 0/0 0/0 .rodata @4674 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4674 = 448.0f;
-COMPILER_STRIP_GATE(0x80D0B9C0, &lit_4674);
-#pragma pop
-
-/* 80D0B9C4-80D0B9C8 0000D4 0004+00 0/1 0/0 0/0 .rodata @4675 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4675 = 16777215.0f;
-COMPILER_STRIP_GATE(0x80D0B9C4, &lit_4675);
-#pragma pop
-
/* 80D0AA50-80D0ABCC 002370 017C+00 1/1 0/0 0/0 .text Z_BufferChk__10daObjTEN_cFv */
void daObjTEN_c::Z_BufferChk() {
- // NONMATCHING
+ cXyz local_5c;
+ cXyz cStack_68;
+ cStack_68 = current.pos;
+ cStack_68.y += 20.0f;
+ mDoLib_project(&cStack_68, &local_5c);
+ camera_class* camera = dComIfGp_getCamera(0);
+ f32 trimHeight;
+ if (camera != NULL) {
+ trimHeight = camera->mCamera.TrimHeight();
+ } else {
+ trimHeight = 0.0f;
+ }
+ if (local_5c.x > 0.0f && local_5c.x < 608.0f && local_5c.y > trimHeight &&
+ local_5c.y < 448.0f - trimHeight)
+ {
+ dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x61c);
+ }
+ f32 near = dComIfGd_getView()->near;
+ f32 far = dComIfGd_getView()->far;
+ mDoLib_pos2camera(&cStack_68, &local_5c);
+ local_5c.z += 50.0f;
+ if (local_5c.z > 0.0f) {
+ local_5c.z = 0.0f;
+ }
+ field_0x618 = ((near + ((far * near) / local_5c.z)) / (far - near) + 1.0f) * 16777215.0f;
}
/* ############################################################################################## */
/* 80D0BAB8-80D0BABC 000008 0004+00 2/2 0/0 0/0 .bss None */
-static u8 data_80D0BAB8[4];
+static u8 data_80D0BAB8;
/* 80D0ABCC-80D0AC34 0024EC 0068+00 1/1 0/0 0/0 .text Delete__10daObjTEN_cFv */
-void daObjTEN_c::Delete() {
- // NONMATCHING
+int daObjTEN_c::Delete() {
+ dComIfG_resDelete(&mPhase, "I_Ten");
+ if (field_0xa64 != 0) {
+ data_80D0BAB8 = 0;
+ }
+ mCreature.deleteObject();
+ return 1;
}
/* 80D0AC34-80D0AC9C 002554 0068+00 1/1 0/0 0/0 .text setBaseMtx__10daObjTEN_cFv */
void daObjTEN_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(field_0x602);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::scaleM(scale);
+ mMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ mMorf->modelCalc();
}
-/* ############################################################################################## */
-/* 80D0B9C8-80D0B9CC 0000D8 0004+00 1/1 0/0 0/0 .rodata @4738 */
-SECTION_RODATA static f32 const lit_4738 = 15.0f;
-COMPILER_STRIP_GATE(0x80D0B9C8, &lit_4738);
-
-/* 80D0B9CC-80D0B9D0 0000DC 0004+00 1/1 0/0 0/0 .rodata @4739 */
-SECTION_RODATA static f32 const lit_4739 = -3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80D0B9CC, &lit_4739);
-
/* 80D0AC9C-80D0AD7C 0025BC 00E0+00 1/0 0/0 0/0 .text daObjTEN_Draw__FP10daObjTEN_c */
-static void daObjTEN_Draw(daObjTEN_c* param_0) {
- // NONMATCHING
+static int daObjTEN_Draw(daObjTEN_c* i_this) {
+ if (i_this->mDraw) {
+ i_this->Z_BufferChk();
+ J3DModel* model = i_this->mMorf->getModel();
+ g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->tevStr);
+ g_env_light.setLightTevColorType_MAJI(model, &i_this->tevStr);
+ i_this->mBtk->entry(model->getModelData());
+ i_this->mBrk->entry(model->getModelData());
+ i_this->mMorf->entryDL();
+ if (i_this->field_0x624 == 0) {
+ dComIfGd_setSimpleShadow(&i_this->current.pos, i_this->mAcch.GetGroundH(), 15.0f,
+ i_this->mAcch.m_gnd, 0, -0.6f,
+ dDlst_shadowControl_c::getSimpleTex());
+ }
+ }
+ return 1;
}
/* 80D0AD7C-80D0AD9C 00269C 0020+00 2/1 0/0 0/0 .text daObjTEN_Execute__FP10daObjTEN_c */
-static void daObjTEN_Execute(daObjTEN_c* param_0) {
- // NONMATCHING
+static int daObjTEN_Execute(daObjTEN_c* i_this) {
+ return i_this->Execute();
}
/* ############################################################################################## */
/* 80D0B9D0-80D0B9D4 0000E0 0004+00 1/2 0/0 0/0 .rodata l_musiya_num */
-SECTION_RODATA static u32 const l_musiya_num = 0x019F01A0;
-COMPILER_STRIP_GATE(0x80D0B9D0, &l_musiya_num);
-
-/* 80D0B9E4-80D0B9E4 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D0B9EA = "R_SP160";
-#pragma pop
+static u16 const l_musiya_num[2] = { 0x19F, 0x1A0};
/* 80D0AD9C-80D0AF48 0026BC 01AC+00 1/1 0/0 0/0 .text CreateChk__10daObjTEN_cFv */
-void daObjTEN_c::CreateChk() {
- // NONMATCHING
+bool daObjTEN_c::CreateChk() {
+ u8 uVar1 = (fopAcM_GetParam(this) & 0xf00) >> 8;
+ if (uVar1 == 15) {
+ uVar1 = 0;
+ }
+ if (field_0x624 != 2) {
+ if (uVar1 != 0) {
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[0]]) || !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[1]])) {
+ return 0;
+ }
+ } else {
+ if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0 &&
+ dComIfGp_getStartStageRoomNo() == 3)
+ {
+ if (dMenu_Insect_c::isCatchNotGiveInsect(l_ten_itemno[mSex])) {
+ return 0;
+ }
+ if ((mSex == 0 &&
+ !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[mSex]])) ||
+ (mSex == 1 &&
+ !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[l_musiya_num[mSex]])))
+ {
+ return 0;
+ }
+ }
+ }
+ }
+ return 1;
}
-/* ############################################################################################## */
-/* 80D0B9D4-80D0B9D8 0000E4 0004+00 0/1 0/0 0/0 .rodata @5101 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5101 = 500.0f;
-COMPILER_STRIP_GATE(0x80D0B9D4, &lit_5101);
-#pragma pop
-
-/* 80D0B9D8-80D0B9DC 0000E8 0004+00 0/1 0/0 0/0 .rodata @5102 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5102 = -200.0f;
-COMPILER_STRIP_GATE(0x80D0B9D8, &lit_5102);
-#pragma pop
-
-/* 80D0B9DC-80D0B9E0 0000EC 0004+00 0/1 0/0 0/0 .rodata @5103 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5103 = -1000.0f;
-COMPILER_STRIP_GATE(0x80D0B9DC, &lit_5103);
-#pragma pop
-
-/* 80D0B9E0-80D0B9E4 0000F0 0004+00 0/1 0/0 0/0 .rodata @5104 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5104 = -50.0f;
-COMPILER_STRIP_GATE(0x80D0B9E0, &lit_5104);
-#pragma pop
-
-/* 80D0BABC-80D0BAC8 00000C 000C+00 1/1 0/0 0/0 .bss @3770 */
-static u8 lit_3770[12];
-
/* 80D0BAC8-80D0BAD8 000018 0010+00 2/2 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[16];
+static daObj_TenHIO_c l_HIO;
/* 80D0AF48-80D0B740 002868 07F8+00 1/1 0/0 0/0 .text create__10daObjTEN_cFv */
-void daObjTEN_c::create() {
- // NONMATCHING
-}
-
-/* 80D0B740-80D0B7B0 003060 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 80D0B7B0-80D0B7F8 0030D0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
-
-/* 80D0B7F8-80D0B840 003118 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
+int daObjTEN_c::create() {
+ fopAcM_SetupActor(this, daObjTEN_c);
+ int rv = dComIfG_resLoad(&mPhase, "I_Ten");
+ if (rv == cPhs_COMPLEATE_e) {
+ field_0x624 = fopAcM_GetParam(this) & 0xf;
+ if (field_0x624 == 2) {
+ field_0x56C = 0;
+ shape_angle.x -= 0x2000;
+ fopAcM_OnStatus(this, fopAcM_STATUS_UNK_004000);
+ } else {
+ mDraw = true;
+ }
+ attention_info.distances[4] = 0x5d;
+ mSex = (fopAcM_GetParam(this) & 0x10) >> 4;
+ setItemNo(l_ten_itemno[mSex]);
+ setSaveBitNo(l_musiya_num[mSex]);
+ if (mSex == 1) {
+ scale.set(l_HIO.field_0x8, l_HIO.field_0x8, l_HIO.field_0x8);
+ } else if (mSex == 0) {
+ scale.set(l_HIO.field_0xc, l_HIO.field_0xc, l_HIO.field_0xc);
+ }
+ if (CreateChk() == 0) {
+ return cPhs_ERROR_e;
+ }
+ OS_REPORT("TEN PARAM %x\n", fopAcM_GetParam(this));
+ if (fopAcM_entrySolidHeap(this, useHeapInit, 0xbc0) == 0) {
+ return cPhs_ERROR_e;
+ }
+ if (data_80D0BAB8 == 0) {
+ data_80D0BAB8 = 1;
+ field_0xa64 = 1;
+ l_HIO.field_0x4 = -1;
+ }
+ cXyz cStack_f0(current.pos.x, current.pos.y + 100.0f, current.pos.z);
+ if (fopAcM_gc_c::gndCheck(&cStack_f0)) {
+ current.pos.y = fopAcM_gc_c::getGroundY();
+ }
+ gravity = 0.0f;
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1,
+ &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
+ bool bVar3 = false;
+ cXyz cStack_fc(0.0f, 0.0f, 500.0f);
+ cXyz cStack_108(0.0f, 0.0f, -200.0f);
+ cXyz cStack_114;
+ cXyz cStack_120;
+ dBgS_LinChk linChk;
+ linChk.SetObj();
+ for (int i = 0; i < 4; i++) {
+ cLib_offsetPos(&cStack_114, &current.pos, shape_angle.y + (i << 14), &cStack_fc);
+ cLib_offsetPos(&cStack_120, &current.pos, shape_angle.y + (i << 14), &cStack_108);
+ linChk.Set(&cStack_120, &cStack_114, NULL);
+ linChk.SetObj();
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla acStack_d0;
+ dComIfG_Bgsp().GetTriPla(linChk, &acStack_d0);
+ cXyz* pfVar13 = acStack_d0.GetNP();
+ current.pos = linChk.i_GetCross();
+ cXyz cStack_12c(0.0f, 0.0f, 0.0f);
+ cXyz cStack_138(0.0f, pfVar13->y, pfVar13->z);
+ field_0x602.z = -cM_atan2s(pfVar13->x, cStack_12c.abs(cStack_138));
+ field_0x602.x = cM_atan2s(pfVar13->z, pfVar13->y);
+ field_0x60a = cM_atan2s(pfVar13->x, pfVar13->z);
+ bVar3 = true;
+ break;
+ }
+ }
+ if (!bVar3) {
+ cStack_fc.set(0.0f, 500.0f, 0.0f);
+ cStack_114.set(0.0f, -1000.0f, 0.0f);
+ linChk.Set(&cStack_fc, &cStack_114, NULL);
+ linChk.SetObj();
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ cM3dGPla acStack_e4;
+ dComIfG_Bgsp().GetTriPla(linChk, &acStack_e4);
+ cXyz* pfVar13 = acStack_e4.GetNP();
+ current.pos = linChk.i_GetCross();
+ cXyz cStack_144(0.0f, 0.0f, 0.0f);
+ cXyz cStack_150(0.0f, pfVar13->y, pfVar13->z);
+ field_0x602.z = -cM_atan2s(pfVar13->x, cStack_144.abs(cStack_150));
+ field_0x602.x = cM_atan2s(pfVar13->z, pfVar13->y);
+ field_0x60a = cM_atan2s(pfVar13->x, pfVar13->z);
+ }
+ }
+ if (field_0x624 == 0) {
+ InitCcSph();
+ }
+ if (field_0x624 == 2) {
+ if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0 &&
+ dComIfGp_getStartStageRoomNo() == 3)
+ {
+ field_0x624 = 3;
+ }
+ }
+ fopAcM_SetMtx(this, mMorf->getModel()->getBaseTRMtx());
+ fopAcM_SetMin(this, -50.0f, -50.0f, -50.0f);
+ fopAcM_SetMax(this, 50.0f, 50.0f, 50.0f);
+ mCreature.init(&current.pos, &eyePos, 3, 1);
+ daObjTEN_Execute(this);
+ }
+ return rv;
}
/* 80D0B840-80D0B848 003160 0008+00 1/0 0/0 0/0 .text daObjTEN_IsDelete__FP10daObjTEN_c
*/
-static bool daObjTEN_IsDelete(daObjTEN_c* param_0) {
- return true;
+static int daObjTEN_IsDelete(daObjTEN_c* param_0) {
+ return 1;
}
-/* 80D0B848-80D0B890 003168 0048+00 2/1 0/0 0/0 .text __dt__14daObj_TenHIO_cFv */
-daObj_TenHIO_c::~daObj_TenHIO_c() {
- // NONMATCHING
-}
-
-/* 80D0B890-80D0B8CC 0031B0 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_ten_cpp */
-void __sinit_d_a_obj_ten_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80D0B890, __sinit_d_a_obj_ten_cpp);
-#pragma pop
-
-/* 80D0B8CC-80D0B8D4 0031EC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80D0B8CC() {
- // NONMATCHING
-}
+/* 80D0B9F4-80D0BA14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjTEN_Method */
+static actor_method_class l_daObjTEN_Method = {
+ (process_method_func)daObjTEN_Create,
+ (process_method_func)daObjTEN_Delete,
+ (process_method_func)daObjTEN_Execute,
+ (process_method_func)daObjTEN_IsDelete,
+ (process_method_func)daObjTEN_Draw,
+};
-/* 80D0B8D4-80D0B8DC 0031F4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80D0B8D4() {
- // NONMATCHING
-}
+/* 80D0BA14-80D0BA44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Ten */
+extern actor_process_profile_definition g_profile_Obj_Ten = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_Ten, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjTEN_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 483, // mPriority
+ &l_daObjTEN_Method, // sub_method
+ 0x000C0120, // mStatus
+ fopAc_ENV_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
/* 80D0B9E4-80D0B9E4 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_obj_timeFire.cpp b/src/d/actor/d_a_obj_timeFire.cpp
index 93de7a0a7d..51ccec3f70 100644
--- a/src/d/actor/d_a_obj_timeFire.cpp
+++ b/src/d/actor/d_a_obj_timeFire.cpp
@@ -4,231 +4,188 @@
*/
#include "d/actor/d_a_obj_timeFire.h"
+#include "d/d_com_inf_game.h"
#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__16daTimeFire_HIO_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__12daTimeFire_cFv();
-extern "C" void create__12daTimeFire_cFv();
-extern "C" void lightInit__12daTimeFire_cFv();
-extern "C" void setLight__12daTimeFire_cFv();
-extern "C" void cutLight__12daTimeFire_cFv();
-extern "C" void Execute__12daTimeFire_cFv();
-extern "C" void fireCheck__12daTimeFire_cFUc();
-extern "C" bool Draw__12daTimeFire_cFv();
-extern "C" void Delete__12daTimeFire_cFv();
-extern "C" static void daTimeFire_Draw__FP12daTimeFire_c();
-extern "C" static void daTimeFire_Execute__FP12daTimeFire_c();
-extern "C" static void daTimeFire_Delete__FP12daTimeFire_c();
-extern "C" static void daTimeFire_Create__FP10fopAc_ac_c();
-extern "C" void __dt__16daTimeFire_HIO_cFv();
-extern "C" void __sinit_d_a_obj_timeFire_cpp();
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void
-set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void dKy_getdaytime_hour__Fv();
-extern "C" void dKy_getdaytime_minute__Fv();
-extern "C" void dKy_plight_set__FP15LIGHT_INFLUENCE();
-extern "C" void dKy_plight_cut__FP15LIGHT_INFLUENCE();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void _savegpr_28();
-extern "C" void _restgpr_28();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80D0F100-80D0F120 -00001 0020+00 1/0 0/0 0/0 .data l_daTimeFire_Method */
-static actor_method_class l_daTimeFire_Method = {
- (process_method_func)daTimeFire_Create__FP10fopAc_ac_c,
- (process_method_func)daTimeFire_Delete__FP12daTimeFire_c,
- (process_method_func)daTimeFire_Execute__FP12daTimeFire_c,
- 0,
- (process_method_func)daTimeFire_Draw__FP12daTimeFire_c,
-};
-
-/* 80D0F120-80D0F150 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TimeFire */
-extern actor_process_profile_definition g_profile_Obj_TimeFire = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_TimeFire, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daTimeFire_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 661, // mPriority
- &l_daTimeFire_Method, // sub_method
- 0x00060000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80D0F150-80D0F15C 000050 000C+00 2/2 0/0 0/0 .data __vt__16daTimeFire_HIO_c */
-SECTION_DATA extern void* __vt__16daTimeFire_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__16daTimeFire_HIO_cFv,
-};
-
-/* 80D0F15C-80D0F168 00005C 000C+00 3/3 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,
-};
-
/* 80D0E8EC-80D0E910 0000EC 0024+00 1/1 0/0 0/0 .text __ct__16daTimeFire_HIO_cFv */
daTimeFire_HIO_c::daTimeFire_HIO_c() {
- // NONMATCHING
-}
-
-/* 80D0E910-80D0E958 000110 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
+ field_0x4 = 20;
}
/* 80D0E958-80D0E9B0 000158 0058+00 1/1 0/0 0/0 .text setBaseMtx__12daTimeFire_cFv */
void daTimeFire_c::setBaseMtx() {
- // NONMATCHING
+ 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);
}
-/* ############################################################################################## */
-/* 80D0F0E4-80D0F0EC 000000 0004+04 2/2 0/0 0/0 .rodata @3686 */
-SECTION_RODATA static f32 const lit_3686[1 + 1 /* padding */] = {
- 10.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80D0F0E4, &lit_3686);
-
-/* 80D0F0EC-80D0F0F4 000008 0008+00 1/1 0/0 0/0 .rodata @3688 */
-SECTION_RODATA static u8 const lit_3688[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D0F0EC, &lit_3688);
-
/* 80D0E9B0-80D0EACC 0001B0 011C+00 1/1 0/0 0/0 .text create__12daTimeFire_cFv */
-void daTimeFire_c::create() {
- // NONMATCHING
+int daTimeFire_c::create() {
+ fopAcM_SetupActor(this, daTimeFire_c);
+ setBaseMtx();
+ field_0x570 = current.pos;
+ lightInit();
+ mStartTime = getStartTime();
+ mEndTime = getEndTime();
+ int scaleParam = getScale();
+ f32 fVar1 = scaleParam / 10.0f;
+ mParticleScale.set(fVar1, fVar1, fVar1);
+ field_0x56c = fireCheck(1);
+ if (!field_0x56c) {
+ cutLight();
+ field_0x56d = false;
+ } else {
+ setLight();
+ field_0x56d = true;
+ }
+ field_0x568 = 0;
+ field_0x569 = 0;
+ return cPhs_COMPLEATE_e;
}
-/* ############################################################################################## */
-/* 80D0F0F4-80D0F0F8 000010 0004+00 0/1 0/0 0/0 .rodata @3707 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3707 = 500.0f;
-COMPILER_STRIP_GATE(0x80D0F0F4, &lit_3707);
-#pragma pop
-
-/* 80D0F0F8-80D0F0FC 000014 0004+00 2/3 0/0 0/0 .rodata @3708 */
-SECTION_RODATA static f32 const lit_3708 = 1.0f;
-COMPILER_STRIP_GATE(0x80D0F0F8, &lit_3708);
-
/* 80D0EACC-80D0EB40 0002CC 0074+00 1/1 0/0 0/0 .text lightInit__12daTimeFire_cFv */
void daTimeFire_c::lightInit() {
- // NONMATCHING
+ field_0x594 = field_0x570;
+ field_0x594.y += 10.0f;
+ mLightInfluence.mPosition = field_0x594;
+ mLightInfluence.mColor.r = 0xbc;
+ mLightInfluence.mColor.g = 0x66;
+ mLightInfluence.mColor.b = 0x42;
+ mLightInfluence.mPow = 500.0f;
+ mLightInfluence.mFluctuation = 1.0f;
}
/* 80D0EB40-80D0EB64 000340 0024+00 2/2 0/0 0/0 .text setLight__12daTimeFire_cFv */
void daTimeFire_c::setLight() {
- // NONMATCHING
+ dKy_plight_set(&mLightInfluence);
}
/* 80D0EB64-80D0EB88 000364 0024+00 2/2 0/0 0/0 .text cutLight__12daTimeFire_cFv */
void daTimeFire_c::cutLight() {
- // NONMATCHING
+ dKy_plight_cut(&mLightInfluence);
}
-/* ############################################################################################## */
-/* 80D0F0FC-80D0F100 000018 0004+00 2/2 0/0 0/0 .rodata @3757 */
-SECTION_RODATA static f32 const lit_3757 = -1.0f;
-COMPILER_STRIP_GATE(0x80D0F0FC, &lit_3757);
-
/* 80D0EB88-80D0ED68 000388 01E0+00 1/1 0/0 0/0 .text Execute__12daTimeFire_cFv */
-void daTimeFire_c::Execute() {
- // NONMATCHING
+int daTimeFire_c::Execute() {
+ bool prevFireCheck = field_0x56c;
+ field_0x56c = fireCheck(0);
+ if (prevFireCheck != field_0x56c) {
+ if (field_0x56c == 0) {
+ cutLight();
+ field_0x56d = false;
+ } else {
+ setLight();
+ field_0x56d = true;
+ }
+ }
+ if (field_0x56d) {
+ mParticleId1 = dComIfGp_particle_set(mParticleId1, 0x3ad, &field_0x570, NULL, &mParticleScale);
+ mParticleId2 = dComIfGp_particle_set(mParticleId2, 0x3af, &field_0x570, NULL, &mParticleScale);
+ mParticleId3 = dComIfGp_particle_set(mParticleId3, 0x3ae, &field_0x570, NULL, &mParticleScale);
+ s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this));
+ mDoAud_seStartLevel(Z2SE_OBJ_FIRE_BURNING, &field_0x570, 0, reverb);
+ }
+ return 1;
}
/* 80D0ED68-80D0EF88 000568 0220+00 2/2 0/0 0/0 .text fireCheck__12daTimeFire_cFUc */
-void daTimeFire_c::fireCheck(u8 param_0) {
- // NONMATCHING
+bool daTimeFire_c::fireCheck(u8 param_1) {
+ bool inTime = false;
+ BOOL isSw;
+ if (getSw() == 0xff) {
+ isSw = 1;
+ } else {
+ isSw = fopAcM_isSwitch(this, getSw()) & 0xff;
+ }
+ if (mStartTime > mEndTime) {
+ if (dKy_getdaytime_hour() >= mStartTime || dKy_getdaytime_hour() <= mEndTime) {
+ inTime = true;
+ }
+ } else {
+ if (dKy_getdaytime_hour() >= mStartTime && dKy_getdaytime_hour() <= mEndTime) {
+ inTime = true;
+ }
+ }
+ if (inTime && (isSw & 0xff) && dKy_getdaytime_hour() == mStartTime && dKy_getdaytime_minute() == 0 &&
+ field_0x569 == 0 && param_1 == 0)
+ {
+ s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this));
+ mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &field_0x570, 0, reverb);
+ field_0x569 = 1;
+ }
+ if (inTime && (isSw & 0xff) && dKy_getdaytime_hour() == mEndTime && dKy_getdaytime_minute() == 0 &&
+ field_0x569 == 1 && param_1 == 0)
+ {
+ s8 reverb = dComIfGp_getReverb(fopAcM_GetRoomNo(this));
+ mDoAud_seStart(Z2SE_OBJ_FIRE_OFF, &field_0x570, 0, reverb);
+ field_0x569 = 2;
+ }
+ if (inTime && (isSw & 0xff)) {
+ return 1;
+ }
+ field_0x569 = 0;
+ return 0;
}
/* 80D0EF88-80D0EF90 000788 0008+00 1/1 0/0 0/0 .text Draw__12daTimeFire_cFv */
-bool daTimeFire_c::Draw() {
- return true;
+int daTimeFire_c::Draw() {
+ return 1;
}
/* 80D0EF90-80D0EFB8 000790 0028+00 1/1 0/0 0/0 .text Delete__12daTimeFire_cFv */
-void daTimeFire_c::Delete() {
- // NONMATCHING
+int daTimeFire_c::Delete() {
+ dKy_plight_cut(&mLightInfluence);
+ return 1;
}
/* 80D0EFB8-80D0EFD8 0007B8 0020+00 1/0 0/0 0/0 .text daTimeFire_Draw__FP12daTimeFire_c
*/
-static void daTimeFire_Draw(daTimeFire_c* param_0) {
- // NONMATCHING
+static int daTimeFire_Draw(daTimeFire_c* i_this) {
+ return i_this->Draw();
}
/* 80D0EFD8-80D0EFF8 0007D8 0020+00 1/0 0/0 0/0 .text daTimeFire_Execute__FP12daTimeFire_c */
-static void daTimeFire_Execute(daTimeFire_c* param_0) {
- // NONMATCHING
+static int daTimeFire_Execute(daTimeFire_c* i_this) {
+ return i_this->Execute();
}
/* 80D0EFF8-80D0F018 0007F8 0020+00 1/0 0/0 0/0 .text daTimeFire_Delete__FP12daTimeFire_c
*/
-static void daTimeFire_Delete(daTimeFire_c* param_0) {
- // NONMATCHING
+static int daTimeFire_Delete(daTimeFire_c* i_this) {
+ return i_this->Delete();
}
/* 80D0F018-80D0F038 000818 0020+00 1/0 0/0 0/0 .text daTimeFire_Create__FP10fopAc_ac_c
*/
-static void daTimeFire_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D0F038-80D0F094 000838 005C+00 2/1 0/0 0/0 .text __dt__16daTimeFire_HIO_cFv */
-daTimeFire_HIO_c::~daTimeFire_HIO_c() {
- // NONMATCHING
+static int daTimeFire_Create(fopAc_ac_c* i_this) {
+ return static_cast<daTimeFire_c*>(i_this)->create();
}
-/* ############################################################################################## */
-/* 80D0F170-80D0F17C 000008 000C+00 1/1 0/0 0/0 .bss @3621 */
-static u8 lit_3621[12];
-
/* 80D0F17C-80D0F184 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[8];
+static daTimeFire_HIO_c l_HIO;
-/* 80D0F094-80D0F0D0 000894 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_timeFire_cpp */
-void __sinit_d_a_obj_timeFire_cpp() {
- // NONMATCHING
-}
+/* 80D0F100-80D0F120 -00001 0020+00 1/0 0/0 0/0 .data l_daTimeFire_Method */
+static actor_method_class l_daTimeFire_Method = {
+ (process_method_func)daTimeFire_Create,
+ (process_method_func)daTimeFire_Delete,
+ (process_method_func)daTimeFire_Execute,
+ NULL,
+ (process_method_func)daTimeFire_Draw,
+};
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80D0F094, __sinit_d_a_obj_timeFire_cpp);
-#pragma pop
+/* 80D0F120-80D0F150 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TimeFire */
+extern actor_process_profile_definition g_profile_Obj_TimeFire = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_TimeFire, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daTimeFire_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 661, // mPriority
+ &l_daTimeFire_Method, // sub_method
+ 0x00060000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
diff --git a/src/d/actor/d_a_obj_toaru_maki.cpp b/src/d/actor/d_a_obj_toaru_maki.cpp
index ba7bfdc033..9816752210 100644
--- a/src/d/actor/d_a_obj_toaru_maki.cpp
+++ b/src/d/actor/d_a_obj_toaru_maki.cpp
@@ -4,112 +4,26 @@
*/
#include "d/actor/d_a_obj_toaru_maki.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void daObjToaruMaki_c_createHeap__FP10fopAc_ac_c();
-extern "C" void __ct__16daObjToaruMaki_cFv();
-extern "C" void __dt__16daObjToaruMaki_cFv();
-extern "C" void createHeap__16daObjToaruMaki_cFv();
-extern "C" void create__16daObjToaruMaki_cFv();
-extern "C" void Delete__16daObjToaruMaki_cFv();
-extern "C" void setModelMtx__16daObjToaruMaki_cFv();
-extern "C" void draw__16daObjToaruMaki_cFv();
-extern "C" void execute__16daObjToaruMaki_cFv();
-extern "C" static void daObjToaruMaki_create__FP16daObjToaruMaki_c();
-extern "C" static void daObjToaruMaki_Delete__FP16daObjToaruMaki_c();
-extern "C" static void daObjToaruMaki_execute__FP16daObjToaruMaki_c();
-extern "C" static void daObjToaruMaki_draw__FP16daObjToaruMaki_c();
-extern "C" extern char const* const d_a_obj_toaru_maki__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_setupStageTexture__FP12J3DModelData();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
-extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
-extern "C" void __ct__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 ChkUsed__9cBgW_BgIdCFv();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-
-//
-// Declarations:
-//
+#include "d/d_bg_w.h"
/* 80D13078-80D13098 000078 0020+00 1/1 0/0 0/0 .text daObjToaruMaki_c_createHeap__FP10fopAc_ac_c
*/
static int daObjToaruMaki_c_createHeap(fopAc_ac_c* i_this) {
- // NONMATCHING
+ return static_cast<daObjToaruMaki_c*>(i_this)->createHeap();
}
/* 80D13624-80D1362C -00001 0008+00 3/3 0/0 0/0 .data l_arcName */
static char* l_arcName[2] = {"T_Maki1", "T_Maki2"};
-/* 80D1362C-80D1364C -00001 0020+00 1/0 0/0 0/0 .data daObjToaruMaki_METHODS */
-static actor_method_class daObjToaruMaki_METHODS = {
- (process_method_func)daObjToaruMaki_create__FP16daObjToaruMaki_c,
- (process_method_func)daObjToaruMaki_Delete__FP16daObjToaruMaki_c,
- (process_method_func)daObjToaruMaki_execute__FP16daObjToaruMaki_c,
- 0,
- (process_method_func)daObjToaruMaki_draw__FP16daObjToaruMaki_c,
-};
-
-/* 80D1364C-80D1367C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_ToaruMaki */
-extern actor_process_profile_definition g_profile_Obj_ToaruMaki = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_ToaruMaki, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjToaruMaki_c),// mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 749, // mPriority
- &daObjToaruMaki_METHODS, // sub_method
- 0x00040000, // mStatus
- fopAc_ENV_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80D1367C-80D13688 000058 000C+00 2/2 0/0 0/0 .data __vt__16daObjToaruMaki_c */
-SECTION_DATA extern void* __vt__16daObjToaruMaki_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__16daObjToaruMaki_cFv,
-};
-
/* 80D13098-80D130E0 000098 0048+00 2/2 0/0 0/0 .text __ct__16daObjToaruMaki_cFv */
daObjToaruMaki_c::daObjToaruMaki_c() {
- // NONMATCHING
+ mpBgW = NULL;
+ mpModel = NULL;
}
/* 80D130E0-80D1316C 0000E0 008C+00 1/0 0/0 0/0 .text __dt__16daObjToaruMaki_cFv */
daObjToaruMaki_c::~daObjToaruMaki_c() {
- // NONMATCHING
+ dComIfG_resDelete(this, l_arcName[getNameArg_0()]);
}
/* 80D13604-80D1360C 000000 0008+00 1/1 0/0 0/0 .rodata l_bmdIdx */
@@ -117,7 +31,28 @@ static const u32 l_bmdIdx[2] = {4, 3};
/* 80D1316C-80D132B4 00016C 0148+00 1/1 0/0 0/0 .text createHeap__16daObjToaruMaki_cFv */
int daObjToaruMaki_c::createHeap() {
- // NONMATCHING
+ u32 nameArg = getNameArg_0();
+ J3DModelData* a_model_data_p =
+ (J3DModelData*)dComIfG_getObjectRes(l_arcName[nameArg], l_bmdIdx[nameArg]);
+ JUT_ASSERT(101, a_model_data_p != 0);
+ mpModel = mDoExt_J3DModel__create(a_model_data_p, 0x80000, 0x11000084);
+ if (mpModel == NULL) {
+ return 0;
+ }
+ if (nameArg == 0) {
+ mpBgW = new dBgW();
+ if (mpBgW == NULL) {
+ return 0;
+ }
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ MTXCopy(mDoMtx_stack_c::get(), mMtx);
+ cBgD_t* cBgD = (cBgD_t*)dComIfG_getObjectRes(l_arcName[nameArg], 7);
+ if (mpBgW->Set(cBgD, 1, &mMtx) == 1) {
+ return 0;
+ }
+ }
+ return 1;
}
/* 80D1360C-80D13614 000008 0008+00 1/1 0/0 0/0 .rodata l_heapSize */
@@ -128,49 +63,105 @@ static const u32 l_heapSize[2] = {
/* 80D132B4-80D133C0 0002B4 010C+00 1/1 0/0 0/0 .text create__16daObjToaruMaki_cFv */
int daObjToaruMaki_c::create() {
- // NONMATCHING
+ fopAcM_SetupActor(this, daObjToaruMaki_c);
+ u32 nameArg = getNameArg_0();
+ int rv = dComIfG_resLoad(this, l_arcName[nameArg]);
+ if (rv == cPhs_COMPLEATE_e) {
+ if (fopAcM_entrySolidHeap(this, daObjToaruMaki_c_createHeap, l_heapSize[nameArg]) == 0) {
+ return cPhs_ERROR_e;
+ }
+ mDoExt_setupStageTexture(mpModel->getModelData());
+ if (nameArg == 0) {
+ if (dComIfG_Bgsp().Regist(mpBgW, this) != 0) {
+ return cPhs_ERROR_e;
+ }
+ }
+ setModelMtx();
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+ }
+ return rv;
}
/* 80D133C0-80D1343C 0003C0 007C+00 1/1 0/0 0/0 .text Delete__16daObjToaruMaki_cFv */
int daObjToaruMaki_c::Delete() {
- // NONMATCHING
+ if (getNameArg_0() == 0 && mpBgW != NULL && mpBgW->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgW);
+ }
+ this->~daObjToaruMaki_c();
+ return 1;
}
/* 80D1343C-80D134A0 00043C 0064+00 2/2 0/0 0/0 .text setModelMtx__16daObjToaruMaki_cFv
*/
void daObjToaruMaki_c::setModelMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 80D134A0-80D13524 0004A0 0084+00 1/1 0/0 0/0 .text draw__16daObjToaruMaki_cFv */
int daObjToaruMaki_c::draw() {
- // NONMATCHING
+ g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
+ dComIfGd_setList();
+ mDoExt_modelUpdateDL(mpModel);
+ return 1;
}
/* 80D13524-80D13548 000524 0024+00 1/1 0/0 0/0 .text execute__16daObjToaruMaki_cFv */
int daObjToaruMaki_c::execute() {
- // NONMATCHING
+ setModelMtx();
+ return 1;
}
/* 80D13548-80D1359C 000548 0054+00 1/0 0/0 0/0 .text daObjToaruMaki_create__FP16daObjToaruMaki_c
*/
static int daObjToaruMaki_create(daObjToaruMaki_c* i_this) {
- // NONMATCHING
+ // !@bug this setup is called twice. No adverse effects though.
+ fopAcM_SetupActor(i_this, daObjToaruMaki_c);
+ return i_this->create();
}
/* 80D1359C-80D135BC 00059C 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_Delete__FP16daObjToaruMaki_c
*/
static int daObjToaruMaki_Delete(daObjToaruMaki_c* i_this) {
- // NONMATCHING
+ return i_this->Delete();
}
/* 80D135BC-80D135DC 0005BC 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_execute__FP16daObjToaruMaki_c
*/
static int daObjToaruMaki_execute(daObjToaruMaki_c* i_this) {
- // NONMATCHING
+ return i_this->execute();;
}
/* 80D135DC-80D135FC 0005DC 0020+00 1/0 0/0 0/0 .text daObjToaruMaki_draw__FP16daObjToaruMaki_c */
static int daObjToaruMaki_draw(daObjToaruMaki_c* i_this) {
- // NONMATCHING
+ return i_this->draw();
}
+
+/* 80D1362C-80D1364C -00001 0020+00 1/0 0/0 0/0 .data daObjToaruMaki_METHODS */
+static actor_method_class daObjToaruMaki_METHODS = {
+ (process_method_func)daObjToaruMaki_create,
+ (process_method_func)daObjToaruMaki_Delete,
+ (process_method_func)daObjToaruMaki_execute,
+ NULL,
+ (process_method_func)daObjToaruMaki_draw,
+};
+
+/* 80D1364C-80D1367C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_ToaruMaki */
+extern actor_process_profile_definition g_profile_Obj_ToaruMaki = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_ToaruMaki, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjToaruMaki_c),// mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 749, // mPriority
+ &daObjToaruMaki_METHODS, // sub_method
+ 0x00040000, // mStatus
+ fopAc_ENV_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};