summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHoward Luck <pheenoh@gmail.com>2025-10-14 19:38:32 -0600
committerGitHub <noreply@github.com>2025-10-15 04:38:32 +0300
commitda605fd79248c70a75b1ddb69c51ed9dd6782cb8 (patch)
treed91f9ad21957d336bd418d52b59ef51accc31733 /src
parente5377068fc6938e15ad6ebdcac625aa85c779902 (diff)
d_a_obj_swchain WIP (#2737)
* checkpoint * WIP * clang format * Missing new line * Remove unnecessary nesting --------- Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_obj_swchain.cpp1001
1 files changed, 458 insertions, 543 deletions
diff --git a/src/d/actor/d_a_obj_swchain.cpp b/src/d/actor/d_a_obj_swchain.cpp
index e2a9db6968..b36b17794a 100644
--- a/src/d/actor/d_a_obj_swchain.cpp
+++ b/src/d/actor/d_a_obj_swchain.cpp
@@ -1,492 +1,483 @@
/**
* @file d_a_obj_swchain.cpp
- *
-*/
+ *
+ */
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
+#ifdef DEBUG
+#include "d/d_debug_viewer.h"
+#endif
#include "d/actor/d_a_obj_swchain.h"
#include "d/d_cc_d.h"
#include "dol2asm.h"
+#ifdef DEBUG
+class daObjSwChain_HIO_c : public mDoHIO_entry_c {
+public:
+ /* 811C8DE0 */ daObjSwChain_HIO_c();
+ /* 811C8EE0 */ void genMessage(JORMContext*);
+
+ /* 0x06 */ u8 field_0x06;
+ /* 0x08 */ f32 mGravity;
+ /* 0x0C */ f32 field_0x0c;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 mTension;
+ /* 0x20 */ f32 mTensionBootsEquipped;
+ /* 0x24 */ f32 mTensionWolf;
+ /* 0x28 */ f32 mSwitchOnTension;
+ /* 0x2C */ f32 field_0x2c;
+ /* 0x30 */ f32 mReturnSpeed;
+ /* 0x34 */ f32 mReturnSpeedHigh;
+ /* 0x38 */ f32 mReturnSpeedLow;
+ /* 0x3C */ s16 mReactionAngle;
+ /* 0x3E */ s16 field_0x3e;
+ /* 0x40 */ u8 mSwitchOnTime;
+ /* 0x41 */ u8 field_0x41;
+ /* 0x42 */ u8 field_0x42;
+ /* 0x43 */ u8 mProcessStop;
+ /* 0x44 */ u8 field_0x44;
+ /* 0x45 */ u8 mReactionAngleDisplay;
+};
+
+daObjSwChain_HIO_c::daObjSwChain_HIO_c() {
+ mGravity = -6.0f;
+ field_0x0c = 35.0f;
+ field_0x10 = 35.0f;
+ field_0x14 = 8.0f;
+ field_0x18 = 0.0f;
+ mTension = 15.0f;
+ mTensionWolf = 13.0f;
+ mTensionBootsEquipped = 2.1f;
+ mSwitchOnTension = 10.0f;
+ field_0x2c = 1.5f;
+ mSwitchOnTime = 0;
+ mReturnSpeedHigh = 30.0f;
+ mReturnSpeedLow = 15.0;
+ mReturnSpeed = 2.0;
+ mReactionAngle = 0xe74;
+ mReactionAngleDisplay = 0;
+ field_0x3e = 0;
+ field_0x41 = 0;
+ field_0x42 = 0;
+ mProcessStop = 0;
+ field_0x44 = 0;
+}
+
+void daObjSwChain_HIO_c::genMessage(JORMContext* ctx) {
+ // Chain Switch
+ ctx->genLabel("チェーンスイッチ", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // Gravity
+ ctx->genSlider("重力", &mGravity, -100.0f, -1.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // Tension
+ ctx->genSlider("張力", &mTension, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // Tension (Boots Equipped)
+ ctx->genSlider("張力(ブーツ装備)", &mTensionBootsEquipped, 0.0f, 20.0f, 0, NULL, 0xffff,
+ 0xffff, 0x200, 0x18);
+ // Tension (Wolf)
+ ctx->genSlider("張力(狼)", &mTensionWolf, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // SWITCH ON Tension
+ ctx->genSlider("SWONの張力", &mSwitchOnTension, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ // SWITCH ON Time
+ ctx->genSlider("SWONの時間", &mSwitchOnTime, 0, 64.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ // -- Normal --
+ ctx->genLabel("-- ノーマル --", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // Return Speed
+ ctx->genSlider("戻る速度", &mReturnSpeed, 0.0f, 50.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // -- With Chandelier --
+ ctx->genLabel("-- シャンデリア付き --", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // Return Speed・High
+ ctx->genSlider("戻る速度・高速", &mReturnSpeedHigh, 0.0f, 50.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ // Return Speed・Low
+ ctx->genSlider("戻る速度・低速", &mReturnSpeedLow, 0.0f, 50.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ // Process Stop
+ ctx->genCheckBox("処理停止", &mProcessStop, '\x01', 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // Clawshot Related
+ ctx->genLabel("-- フックショット関係 --", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ // Reaction Angle Display
+ ctx->genCheckBox("反応角度表示", &mReactionAngleDisplay, '\x01', 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ // Clawshot Reaction Angle
+ ctx->genSlider("フックショット反応角度", &mReactionAngle, 0, 0x7fff, 0, NULL, 0xffff, 0xffff,
+ 0x200, 0x18);
+}
+
+static daObjSwChain_HIO_c l_HIO;
-//
-// Forward References:
-//
-
-extern "C" static void CheckCreateHeap__FP10fopAc_ac_c();
-extern "C" static void GetActorName__FR13cBgS_PolyInfo();
-extern "C" void Create__14daObjSwChain_cFv();
-extern "C" void CreateHeap__14daObjSwChain_cFv();
-extern "C" void __dt__Q214daObjSwChain_c7chain_sFv();
-extern "C" void __ct__Q214daObjSwChain_c7chain_sFv();
-extern "C" void create1st__14daObjSwChain_cFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void execute__14daObjSwChain_cFv();
-extern "C" void getChainBasePos__14daObjSwChain_cFP4cXyz();
-extern "C" void chain_control__14daObjSwChain_cFv();
-extern "C" void chain_control2__14daObjSwChain_cFv();
-extern "C" void initChainMtx__14daObjSwChain_cFv();
-extern "C" void setChainMtx__14daObjSwChain_cFv();
-extern "C" void chain_count_control__14daObjSwChain_cFv();
-extern "C" void setTension__14daObjSwChain_cFv();
-extern "C" void getTopChainNo__14daObjSwChain_cFv();
-extern "C" void checkPlayerPull__14daObjSwChain_cFv();
-extern "C" void draw__14daObjSwChain_cFv();
-extern "C" void _delete__14daObjSwChain_cFv();
-extern "C" static void daObjSwChain_Draw__FP14daObjSwChain_c();
-extern "C" static void daObjSwChain_Execute__FP14daObjSwChain_c();
-extern "C" static void daObjSwChain_Delete__FP14daObjSwChain_c();
-extern "C" static void daObjSwChain_Create__FP10fopAc_ac_c();
-extern "C" void func_80CFB69C(void* _this, u8*);
-extern "C" static void func_80CFB6B8();
-extern "C" static void func_80CFB6C0();
-extern "C" void getRightHandPos__9daPy_py_cCFv();
-extern "C" extern char const* const d_a_obj_swchain__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-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 fopAcM_setCullSizeSphere__FP10fopAc_ac_cffff();
-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 onSwitch__10dSv_info_cFii();
-extern "C" void offSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void StartShock__12dVibration_cFii4cXyz();
-extern "C" void GetActorPointer__4cBgSCFi();
-extern "C" void ChkPolySafe__4cBgSFRC13cBgS_PolyInfo();
-extern "C" void ChkMoveBG_NoDABg__4dBgSFRC13cBgS_PolyInfo();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void ChkCoHit__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void create__6dMdl_cFP12J3DModelDataUsP12dKy_tevstr_c();
-extern "C" void entryObj__6dMdl_cFP10dMdl_obj_c();
-extern "C" void setFmChainPos__9daPy_py_cFP10fopAc_ac_cP4cXyzi();
-extern "C" void setPlayerSe__9daPy_py_cFUl();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void ClrCcMove__9cCcD_SttsFv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-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 cM_atan2s__Fff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void* __nwa__FUl();
-extern "C" void __dl__FPv();
-extern "C" void __construct_new_array();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-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__6dMdl_c[5 + 1 /* padding */];
-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" extern void* __vt__9J3DPacket[5];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mGndCheck__11fopAcM_gc_c[84];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
+#endif
/* 80CF86B8-80CF86D8 000078 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */
-static void CheckCreateHeap(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int CheckCreateHeap(fopAc_ac_c* a_this) {
+ daObjSwChain_c* i_this = (daObjSwChain_c*)a_this;
+ return i_this->CreateHeap();
}
/* 80CF86D8-80CF8768 000098 0090+00 2/2 0/0 0/0 .text GetActorName__FR13cBgS_PolyInfo */
-static void GetActorName(cBgS_PolyInfo& param_0) {
- // NONMATCHING
+static s16 GetActorName(cBgS_PolyInfo& param_0) {
+ if (dComIfG_Bgsp().ChkPolySafe(param_0)) {
+ if (dComIfG_Bgsp().ChkMoveBG_NoDABg(param_0)) {
+ if (dComIfG_Bgsp().GetActorPointer(param_0)) {
+ return fopAcM_GetName(dComIfG_Bgsp().GetActorPointer(param_0));
+ }
+ }
+ }
+
+ return PROC_Obj_SwChain;
}
-/* ############################################################################################## */
-/* 80CFB6EC-80CFB6F0 000000 0004+00 10/10 0/0 0/0 .rodata @3734 */
-SECTION_RODATA static u8 const lit_3734[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80CFB6EC, &lit_3734);
-
-/* 80CFB6F0-80CFB6F4 000004 0004+00 0/1 0/0 0/0 .rodata @3735 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3735 = 40.0f;
-COMPILER_STRIP_GATE(0x80CFB6F0, &lit_3735);
-#pragma pop
-
-/* 80CFB6F4-80CFB6F8 000008 0004+00 0/6 0/0 0/0 .rodata @3736 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3736 = 35.0f;
-COMPILER_STRIP_GATE(0x80CFB6F4, &lit_3736);
-#pragma pop
-
-/* 80CFB6F8-80CFB6FC 00000C 0004+00 0/1 0/0 0/0 .rodata @3737 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3737 = 50.0f;
-COMPILER_STRIP_GATE(0x80CFB6F8, &lit_3737);
-#pragma pop
-
-/* 80CFB6FC-80CFB704 000010 0008+00 0/3 0/0 0/0 .rodata @3739 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3739[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CFB6FC, &lit_3739);
-#pragma pop
-
-/* 80CFB790-80CFB790 0000A4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80CFB790 = "P_Chain";
-#pragma pop
-
/* 80CFB798-80CFB79C -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_swchain__stringBase0;
+static char* l_arcName = "P_Chain";
/* 80CFB79C-80CFB7DC 000004 0040+00 1/1 0/0 0/0 .data l_sph_src */
static dCcD_SrcSph l_sph_src = {
{
- {0x0, {{0x0, 0x0, 0x0}, {0x4000, 0x11}, 0x58}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
+ {0x0, {{0x0, 0x0, 0x0}, {0x4000, 0x11}, 0x58}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
{
- {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
- } // mSphAttr
+ {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
+ } // mSphAttr
};
/* 80CFB7DC-80CFB81C 000044 0040+00 1/1 0/0 0/0 .data l_sph_srcCo */
static dCcD_SrcSph l_sph_srcCo = {
{
- {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x10}, 0x49}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x10}, 0x49}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
{
- {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
- } // mSphAttr
+ {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph
+ } // mSphAttr
};
/* 80CF8768-80CF89C0 000128 0258+00 1/1 0/0 0/0 .text Create__14daObjSwChain_cFv */
-void daObjSwChain_c::Create() {
- // NONMATCHING
+int daObjSwChain_c::Create() {
+ mStts.Init(0xff, 0xff, this);
+ mSph1.Set(l_sph_src);
+ mSph1.SetStts(&mStts);
+ mSph2.Set(l_sph_srcCo);
+ mSph2.SetStts(&mStts);
+ mAcchCir.SetWall(0.0f, 40.0f);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
+ fopAcM_GetSpeed_p(this), &current.angle, &shape_angle);
+ fopAcM_setCullSizeSphere(this, home.pos.x, home.pos.y, home.pos.z, (field_0xa65 + 1) * 35.0f);
+ cXyz cStack_3c(0.0f, 0.0f, 50.0f);
+ cXyz cStack_48;
+ cXyz cStack_54;
+
+ mDoMtx_stack_c::YrotS(shape_angle.y);
+ mDoMtx_stack_c::multVec(&cStack_3c, &cStack_48);
+
+ getChainBasePos(&field_0xa74->field_0x34);
+ cStack_54 = field_0xa74->field_0x34;
+
+ chain_s* p_chain = field_0xa74;
+
+ for (int i = 0; i < field_0xa65 + 1; i++) {
+ if (i < getTopChainNo()) {
+ p_chain->field_0x34 = home.pos;
+ cStack_54 = p_chain->field_0x34;
+ } else {
+ p_chain->field_0x34 = cStack_54 + cStack_48;
+ cStack_54 = p_chain->field_0x34;
+ }
+
+ p_chain++;
+ }
+
+ initChainMtx();
+ mModel.create(mChainModelData, 0, &tevStr);
+
+ if (fopAcM_GetRoomNo(this) == 4) {
+ field_0xa67 = 0x14;
+ field_0xa69 = 0x14;
+ } else if (fopAcM_GetRoomNo(this) == 6) {
+ field_0xa67 = 0x14;
+ field_0xa69 = 0x14;
+ }
+
+ return 1;
}
/* 80CF89C0-80CF8B00 000380 0140+00 1/1 0/0 0/0 .text CreateHeap__14daObjSwChain_cFv */
-void daObjSwChain_c::CreateHeap() {
- // NONMATCHING
-}
+int daObjSwChain_c::CreateHeap() {
+ field_0xa74 = new chain_s[field_0xa65 + 1];
-/* 80CF8B00-80CF8B3C 0004C0 003C+00 1/1 0/0 0/0 .text __dt__Q214daObjSwChain_c7chain_sFv
- */
-daObjSwChain_c::chain_s::~chain_s() {
- // NONMATCHING
-}
+ if (field_0xa74 == NULL) {
+ return 0;
+ }
-/* 80CF8B3C-80CF8B48 0004FC 000C+00 1/1 0/0 0/0 .text __ct__Q214daObjSwChain_c7chain_sFv
- */
-daObjSwChain_c::chain_s::chain_s() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80CFB81C-80CFB83C -00001 0020+00 1/0 0/0 0/0 .data l_daObjSwChain_Method */
-static actor_method_class l_daObjSwChain_Method = {
- (process_method_func)daObjSwChain_Create__FP10fopAc_ac_c,
- (process_method_func)daObjSwChain_Delete__FP14daObjSwChain_c,
- (process_method_func)daObjSwChain_Execute__FP14daObjSwChain_c,
- 0,
- (process_method_func)daObjSwChain_Draw__FP14daObjSwChain_c,
-};
-
-/* 80CFB83C-80CFB86C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SwChain */
-extern actor_process_profile_definition g_profile_Obj_SwChain = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_SwChain, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjSwChain_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 615, // mPriority
- &l_daObjSwChain_Method, // sub_method
- 0x000C0000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
+ chain_s* p_chain = field_0xa74;
+ for (int i = 0; i < field_0xa65 + 1; i++, p_chain++) {
+ p_chain->field_0x34.setall(0.0f);
+ p_chain->field_0x40.setall(0);
+ p_chain->field_0x48 = 0.0f;
+ p_chain->field_0x4c = 0;
+ }
-/* 80CFB86C-80CFB890 0000D4 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_80CFB6C0,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80CFB6B8,
-};
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
+ JUT_ASSERT(532, modelData != 0);
+ mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
-/* 80CFB890-80CFB89C 0000F8 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
+ if (mpModel == NULL) {
+ return 0;
+ }
-/* 80CFB89C-80CFB8A8 000104 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,
-};
+ mChainModelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 3);
+ JUT_ASSERT(545, mChainModelData != 0);
-/* 80CF8B48-80CF8DD0 000508 0288+00 1/1 0/0 0/0 .text create1st__14daObjSwChain_cFv */
-void daObjSwChain_c::create1st() {
- // NONMATCHING
+ return 1;
}
-/* 80CF8DD0-80CF8E40 000790 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
+/* 80CF8B00-80CF8B3C 0004C0 003C+00 1/1 0/0 0/0 .text __dt__Q214daObjSwChain_c7chain_sFv
+ */
+daObjSwChain_c::chain_s::~chain_s() {}
-/* 80CF8E40-80CF8E88 000800 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
+/* 80CF8B3C-80CF8B48 0004FC 000C+00 1/1 0/0 0/0 .text __ct__Q214daObjSwChain_c7chain_sFv
+ */
+daObjSwChain_c::chain_s::chain_s() {}
-/* 80CF8E88-80CF8ED0 000848 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
+/* 80CF8B48-80CF8DD0 000508 0288+00 1/1 0/0 0/0 .text create1st__14daObjSwChain_cFv */
+// NONMATCHING
+int daObjSwChain_c::create1st() {
+ fopAcM_SetupActor(this, daObjSwChain_c);
+
+ if (field_0xa60 == 0) {
+ mHookshotLength = home.angle.x;
+ field_0xa5e = home.angle.z;
+ home.angle.x = home.angle.z = 0;
+ current.angle.x = current.angle.z = 0;
+ shape_angle.x = shape_angle.z = 0;
+ field_0xa60 = 1;
+ }
+
+ // missing instructions
+ field_0xa65 = getChainNum() & 1 ? getChainNum() : getChainNum() + 1;
+
+ field_0xa66 = getHookShotLength();
+ field_0xa64 = getOutNum();
+ field_0xa63 = getChainID();
+
+#ifdef DEBUG
+ if (field_0xa63 != 0 && field_0xa63 != 1 && field_0xa63 != 2 && field_0xa63 != 3) {
+ // Chain Switch: Chain ID value is abnormal <%d>
+ OS_REPORT_ERROR("チェーンスイッチ:鎖の番号が異常値です<%d>\n", field_0xa63);
+ return cPhs_ERROR_e;
+ }
+#endif
+
+#ifdef DEBUG
+ if (field_0xa64 > field_0xa65) {
+ // Chain Switch: Argument 2 > Argument 1 !
+ OS_REPORT_ERROR("チェーンスイッチ:引数2>引数1になっています!\n");
+ return cPhs_ERROR_e;
+ }
+#endif
+
+#ifdef DEBUG
+ if (field_0xa66 > field_0xa65) {
+ // Chain Switch: Argument 3 > Argument 1 !
+ OS_REPORT_ERROR("チェーンスイッチ:引数3>引数1になっています!\n");
+ return cPhs_ERROR_e;
+ }
+#endif
+
+ int phase = dComIfG_resLoad(&mPhase, l_arcName);
+ if (phase == cPhs_COMPLEATE_e) {
+ u32 size = 0x4000;
+ size |= 0x80000000;
+
+ if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, size)) {
+ return cPhs_ERROR_e;
+ }
+
+ if (!Create()) {
+ return cPhs_ERROR_e;
+ }
+#ifdef DEBUG
+ // Chain Switch
+ l_HIO.entryHIO("チェーンスイッチ");
+#endif
+ }
+
+ return phase;
}
-/* ############################################################################################## */
-/* 80CFB704-80CFB70C 000018 0008+00 0/5 0/0 0/0 .rodata @4120 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4120[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CFB704, &lit_4120);
-#pragma pop
-
-/* 80CFB70C-80CFB714 000020 0008+00 0/5 0/0 0/0 .rodata @4121 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4121[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CFB70C, &lit_4121);
-#pragma pop
-
-/* 80CFB714-80CFB71C 000028 0008+00 0/5 0/0 0/0 .rodata @4122 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4122[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CFB714, &lit_4122);
-#pragma pop
-
-/* 80CFB71C-80CFB720 000030 0004+00 0/1 0/0 0/0 .rodata @4123 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4123 = 30.0f;
-COMPILER_STRIP_GATE(0x80CFB71C, &lit_4123);
-#pragma pop
-
-/* 80CFB720-80CFB724 000034 0004+00 0/3 0/0 0/0 .rodata @4124 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4124 = 15.0f;
-COMPILER_STRIP_GATE(0x80CFB720, &lit_4124);
-#pragma pop
-
-/* 80CFB724-80CFB728 000038 0004+00 0/1 0/0 0/0 .rodata @4125 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4125 = 2.0f;
-COMPILER_STRIP_GATE(0x80CFB724, &lit_4125);
-#pragma pop
-
/* 80CF8ED0-80CF94E4 000890 0614+00 1/1 0/0 0/0 .text execute__14daObjSwChain_cFv */
-void daObjSwChain_c::execute() {
- // NONMATCHING
+// NONMATCHING - regalloc / instruction ordering
+int daObjSwChain_c::execute() {
+#ifdef DEBUG
+ if (l_HIO.mProcessStop) {
+ return 1;
+ }
+#endif
+
+ field_0xa9c = 0;
+
+ if (getSwbit2() != 0xff && !fopAcM_isSwitch(this, getSwbit2())) {
+ field_0xa6c = 1;
+ } else {
+ field_0xa6c = 0;
+ }
+
+ chain_count_control();
+ chain_s* unused = field_0xa74;
+ chain_control();
+ chain_s* iVar1 = &field_0xa74[field_0xa65];
+
+ if (!field_0xa6c && daPy_py_c::setFmChainPos(this, &iVar1->field_0x34, field_0xa63)) {
+ mCarry = 1;
+ eyePos = home.pos;
+ } else {
+ mCarry = 0;
+ eyePos = iVar1->field_0x34;
+ }
+
+ if (field_0xa9d == 0 && mCarry != 0 || field_0xa9d != 0 && mCarry == 0) {
+ daPy_py_c::setPlayerSe(Z2SE_AL_GRAB_CHAIN);
+ }
+
+ if (fopAcM_checkHookCarryNow(this)) {
+ field_0xa61 = 1;
+ if (field_0xa64 >= field_0xa66 && field_0xa9e == 0) {
+ fopAcM_cancelHookCarryNow(this);
+ }
+ } else {
+ field_0xa61 = 0;
+ current.pos = iVar1->field_0x34;
+ }
+
+ chain_control2();
+ setTension();
+ setChainMtx();
+ field_0xa6b = 0;
+ cXyz cStack_68(field_0xa74[getTopChainNo()].field_0x34);
+ cXyz cStack_74(field_0xa74[field_0xa65].field_0x34);
+ f32 fVar15 = cStack_74.abs(cStack_68);
+#ifdef DEBUG
+ if (fVar15 < (l_HIO.field_0x0c * (field_0xa64 - 2)) || mCarry == 0)
+#else
+ if (fVar15 < (35.0f * (field_0xa64 - 2)) || mCarry == 0)
+#endif
+ if (field_0xa64 > getOutNum() && mRatio != 0.0f) {
+ cXyz cStack_80(field_0xa74[0].field_0x34);
+ cXyz cStack_8c;
+ cStack_8c = cStack_80 - field_0xa74[getTopChainNo()].field_0x34;
+ cStack_8c.normalizeZP();
+
+ switch (fopAcM_GetRoomNo(this)) {
+ case 4:
+ case 6:
+ if (field_0xa64 > field_0xa69) {
+#ifdef DEBUG
+ iVar1->field_0x34 += cStack_8c * l_HIO.mReturnSpeedHigh;
+#else
+ iVar1->field_0x34 += cStack_8c * 30.0f;
+#endif
+ // mistake?
+ field_0xa6b = 1;
+ field_0xa6b = 1;
+ } else {
+#ifdef DEBUG
+ iVar1->field_0x34 += cStack_8c * l_HIO.mReturnSpeedLow;
+#else
+ iVar1->field_0x34 += cStack_8c * 15.0f;
+#endif
+ }
+ break;
+ default:
+#ifdef DEBUG
+ iVar1->field_0x34 += cStack_8c * l_HIO.mReturnSpeed;
+#else
+ iVar1->field_0x34 += cStack_8c * 2.0f;
+#endif
+ }
+ }
+
+ if (field_0xa6c == 0) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz pos = (player->current.pos - home.pos);
+ s16 abs_tmp = pos.atan2sX_Z() - shape_angle.y;
+#ifdef DEBUG
+ if (abs(abs_tmp) < l_HIO.mReactionAngle) {
+#else
+ if (abs(abs_tmp) < 0xe74) {
+#endif
+ chain_s* chain_p2 = &field_0xa74[field_0xa65];
+ mSph1.SetC(chain_p2->field_0x34);
+ dComIfG_Ccsp()->Set(&mSph1);
+ }
+ }
+
+ if (mCarry != 0) {
+ cXyz local_a4;
+ cXyz cStack_b0(current.pos);
+ mAcch.CrrPos(dComIfG_Bgsp());
+ local_a4 = current.pos - cStack_b0;
+ current.pos = cStack_b0;
+
+ if (mSph2.ChkCoHit()) {
+ cXyz* move_pos = mStts.GetCCMoveP();
+ if (move_pos != NULL) {
+ local_a4 += *move_pos;
+ }
+ }
+
+ mStts.ClrCcMove();
+ mSph2.ClrCoHit();
+
+ daPy_getPlayerActorClass()->setGrabCollisionOffset(local_a4.x, local_a4.z, 0);
+ mSph2.SetC(current.pos);
+ dComIfG_Ccsp()->Set(&mSph2);
+ }
+
+ field_0xa9d = mCarry;
+#ifdef DEBUG
+ if (l_HIO.field_0x42 != 0) {
+ if (l_HIO.field_0x44 == getChainID()) {
+ dDbVw_Report(0x28, 200, "Num<%d>Len<%.2f>", getCurrentChainNum(),
+ getCurrentChainLength());
+ if (checkTight() != 0) {
+ dDbVw_Report(0x28, 100, "TENSION!");
+ }
+ }
+
+ dDbVw_Report(0x28, 0xd4, "SeenAngY <%x>", fopAcM_seenPlayerAngleY(this));
+ dDbVw_Report(0x28, 0xe0, "SearchAngY <%x>", fopAcM_searchPlayerAngleY(this));
+ dDbVw_Report(0x28, 0xec, "toShapeAngY<%x>", fopAcM_toPlayerShapeAngleY(this));
+ }
+#endif
+
+ return 1;
}
/* 80CF94E4-80CF9500 000EA4 001C+00 1/1 0/0 0/0 .text getChainBasePos__14daObjSwChain_cFP4cXyz */
void daObjSwChain_c::getChainBasePos(cXyz* param_0) {
- // NONMATCHING
+ *param_0 = home.pos;
}
-/* ############################################################################################## */
-/* 80CFB728-80CFB72C 00003C 0004+00 0/1 0/0 0/0 .rodata @4258 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4258 = -6.0f;
-COMPILER_STRIP_GATE(0x80CFB728, &lit_4258);
-#pragma pop
-
-/* 80CFB72C-80CFB730 000040 0004+00 0/3 0/0 0/0 .rodata @4259 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4259 = 0.5f;
-COMPILER_STRIP_GATE(0x80CFB72C, &lit_4259);
-#pragma pop
-
-/* 80CFB730-80CFB734 000044 0004+00 0/1 0/0 0/0 .rodata @4260 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_4260 = 0x3DCCCCCC;
-COMPILER_STRIP_GATE(0x80CFB730, &lit_4260);
-#pragma pop
-
-/* 80CFB734-80CFB738 000048 0004+00 0/1 0/0 0/0 .rodata @4261 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4261 = 5.0f;
-COMPILER_STRIP_GATE(0x80CFB734, &lit_4261);
-#pragma pop
-
-/* 80CFB738-80CFB73C 00004C 0004+00 0/2 0/0 0/0 .rodata @4262 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4262 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CFB738, &lit_4262);
-#pragma pop
-
-/* 80CFB73C-80CFB740 000050 0004+00 0/3 0/0 0/0 .rodata @4263 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4263 = 1.0f;
-COMPILER_STRIP_GATE(0x80CFB73C, &lit_4263);
-#pragma pop
-
-/* 80CFB740-80CFB744 000054 0004+00 0/2 0/0 0/0 .rodata @4264 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4264 = 100.0f;
-COMPILER_STRIP_GATE(0x80CFB740, &lit_4264);
-#pragma pop
-
-/* 80CFB744-80CFB748 000058 0004+00 0/3 0/0 0/0 .rodata @4265 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4265 = 8.0f;
-COMPILER_STRIP_GATE(0x80CFB744, &lit_4265);
-#pragma pop
-
/* 80CF9500-80CF99C0 000EC0 04C0+00 1/1 0/0 0/0 .text chain_control__14daObjSwChain_cFv
*/
void daObjSwChain_c::chain_control() {
// NONMATCHING
}
-/* ############################################################################################## */
-/* 80CFB748-80CFB74C 00005C 0004+00 0/1 0/0 0/0 .rodata @4457 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4457 = 12.0f;
-COMPILER_STRIP_GATE(0x80CFB748, &lit_4457);
-#pragma pop
-
-/* 80CFB74C-80CFB750 000060 0004+00 0/1 0/0 0/0 .rodata @4458 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4458 = 7.0f;
-COMPILER_STRIP_GATE(0x80CFB74C, &lit_4458);
-#pragma pop
-
-/* 80CFB750-80CFB754 000064 0004+00 0/1 0/0 0/0 .rodata @4459 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4459 = 60.0f;
-COMPILER_STRIP_GATE(0x80CFB750, &lit_4459);
-#pragma pop
-
-/* 80CFB754-80CFB758 000068 0004+00 0/1 0/0 0/0 .rodata @4460 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4460 = -10.0f;
-COMPILER_STRIP_GATE(0x80CFB754, &lit_4460);
-#pragma pop
-
-/* 80CFB758-80CFB75C 00006C 0004+00 0/1 0/0 0/0 .rodata @4461 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4461 = 25.0f;
-COMPILER_STRIP_GATE(0x80CFB758, &lit_4461);
-#pragma pop
-
/* 80CF99C0-80CFA05C 001380 069C+00 1/1 0/0 0/0 .text chain_control2__14daObjSwChain_cFv
*/
void daObjSwChain_c::chain_control2() {
// NONMATCHING
}
-/* ############################################################################################## */
-/* 80CFB75C-80CFB760 000070 0004+00 1/1 0/0 0/0 .rodata @4479 */
-SECTION_RODATA static f32 const lit_4479 = 16384.0f;
-COMPILER_STRIP_GATE(0x80CFB75C, &lit_4479);
-
/* 80CFA05C-80CFA124 001A1C 00C8+00 1/1 0/0 0/0 .text initChainMtx__14daObjSwChain_cFv */
void daObjSwChain_c::initChainMtx() {
// NONMATCHING
@@ -497,97 +488,11 @@ void daObjSwChain_c::setChainMtx() {
// NONMATCHING
}
-/* ############################################################################################## */
-/* 80CFB760-80CFB764 000074 0004+00 0/1 0/0 0/0 .rodata @4848 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4848 = 105.0f;
-COMPILER_STRIP_GATE(0x80CFB760, &lit_4848);
-#pragma pop
-
-/* 80CFB764-80CFB768 000078 0004+00 0/1 0/0 0/0 .rodata @4849 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4849 = -1.0f;
-COMPILER_STRIP_GATE(0x80CFB764, &lit_4849);
-#pragma pop
-
-/* 80CFB768-80CFB76C 00007C 0004+00 0/1 0/0 0/0 .rodata @4850 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4850 = 17.5f;
-COMPILER_STRIP_GATE(0x80CFB768, &lit_4850);
-#pragma pop
-
-/* 80CFB76C-80CFB770 000080 0004+00 0/1 0/0 0/0 .rodata @4851 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4851 = 10.0f;
-COMPILER_STRIP_GATE(0x80CFB76C, &lit_4851);
-#pragma pop
-
-/* 80CFB770-80CFB774 000084 0004+00 0/1 0/0 0/0 .rodata @4852 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4852 = 1.5f;
-COMPILER_STRIP_GATE(0x80CFB770, &lit_4852);
-#pragma pop
-
-/* 80CFB774-80CFB778 000088 0004+00 0/1 0/0 0/0 .rodata @4853 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4853 = 6.0f;
-COMPILER_STRIP_GATE(0x80CFB774, &lit_4853);
-#pragma pop
-
-/* 80CFB778-80CFB77C 00008C 0004+00 0/1 0/0 0/0 .rodata @4854 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4854 = 9.0f;
-COMPILER_STRIP_GATE(0x80CFB778, &lit_4854);
-#pragma pop
-
-/* 80CFB77C-80CFB780 000090 0004+00 0/2 0/0 0/0 .rodata @4855 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4855 = 13.0f;
-COMPILER_STRIP_GATE(0x80CFB77C, &lit_4855);
-#pragma pop
-
-/* 80CFB780-80CFB784 000094 0004+00 0/2 0/0 0/0 .rodata @4856 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4856 = 20.0f;
-COMPILER_STRIP_GATE(0x80CFB780, &lit_4856);
-#pragma pop
-
/* 80CFA4A8-80CFAD50 001E68 08A8+00 1/1 0/0 0/0 .text chain_count_control__14daObjSwChain_cFv */
void daObjSwChain_c::chain_count_control() {
// NONMATCHING
}
-/* ############################################################################################## */
-/* 80CFB784-80CFB788 000098 0004+00 0/1 0/0 0/0 .rodata @5043 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5043 = 0x3F333334;
-COMPILER_STRIP_GATE(0x80CFB784, &lit_5043);
-#pragma pop
-
-/* 80CFB788-80CFB78C 00009C 0004+00 0/1 0/0 0/0 .rodata @5044 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5044 = 21.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CFB788, &lit_5044);
-#pragma pop
-
-/* 80CFB78C-80CFB790 0000A0 0004+00 0/1 0/0 0/0 .rodata @5045 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5045 = 7000.0f;
-COMPILER_STRIP_GATE(0x80CFB78C, &lit_5045);
-#pragma pop
-
/* 80CFAD50-80CFB450 002710 0700+00 1/1 0/0 0/0 .text setTension__14daObjSwChain_cFv */
void daObjSwChain_c::setTension() {
// NONMATCHING
@@ -595,7 +500,7 @@ void daObjSwChain_c::setTension() {
/* 80CFB450-80CFB464 002E10 0014+00 8/8 0/0 0/0 .text getTopChainNo__14daObjSwChain_cFv
*/
-void daObjSwChain_c::getTopChainNo() {
+int daObjSwChain_c::getTopChainNo() {
// NONMATCHING
}
@@ -606,55 +511,65 @@ void daObjSwChain_c::checkPlayerPull() {
}
/* 80CFB53C-80CFB5E8 002EFC 00AC+00 1/1 0/0 0/0 .text draw__14daObjSwChain_cFv */
-void daObjSwChain_c::draw() {
+int daObjSwChain_c::draw() {
// NONMATCHING
}
/* 80CFB5E8-80CFB61C 002FA8 0034+00 1/1 0/0 0/0 .text _delete__14daObjSwChain_cFv */
-void daObjSwChain_c::_delete() {
- // NONMATCHING
+int daObjSwChain_c::_delete() {
+ dComIfG_resDelete(&mPhase, l_arcName);
+#ifdef DEBUG
+ l_HIO.removeHIO();
+#endif
+ return 1;
}
/* 80CFB61C-80CFB63C 002FDC 0020+00 1/0 0/0 0/0 .text daObjSwChain_Draw__FP14daObjSwChain_c */
-static void daObjSwChain_Draw(daObjSwChain_c* param_0) {
- // NONMATCHING
+static int daObjSwChain_Draw(daObjSwChain_c* i_this) {
+ return i_this->draw();
}
/* 80CFB63C-80CFB65C 002FFC 0020+00 1/0 0/0 0/0 .text daObjSwChain_Execute__FP14daObjSwChain_c */
-static void daObjSwChain_Execute(daObjSwChain_c* param_0) {
- // NONMATCHING
+static int daObjSwChain_Execute(daObjSwChain_c* i_this) {
+ return i_this->execute();
}
/* 80CFB65C-80CFB67C 00301C 0020+00 1/0 0/0 0/0 .text daObjSwChain_Delete__FP14daObjSwChain_c */
-static void daObjSwChain_Delete(daObjSwChain_c* param_0) {
- // NONMATCHING
+static int daObjSwChain_Delete(daObjSwChain_c* i_this) {
+ fpc_ProcID unused = fopAcM_GetID(i_this);
+ return i_this->_delete();
}
/* 80CFB67C-80CFB69C 00303C 0020+00 1/0 0/0 0/0 .text daObjSwChain_Create__FP10fopAc_ac_c
*/
-static void daObjSwChain_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80CFB69C-80CFB6B8 00305C 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
-extern "C" void func_80CFB69C(void* _this, u8* param_0) {
- // NONMATCHING
-}
-
-/* 80CFB6B8-80CFB6C0 003078 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_80CFB6B8() {
- // NONMATCHING
-}
-
-/* 80CFB6C0-80CFB6C8 003080 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_80CFB6C0() {
- // NONMATCHING
+static int daObjSwChain_Create(fopAc_ac_c* a_this) {
+ daObjSwChain_c* i_this = (daObjSwChain_c*)a_this;
+ fpc_ProcID unused = fopAcM_GetID(a_this);
+ return i_this->Create();
}
-/* 80CFB6C8-80CFB6E4 003088 001C+00 1/1 0/0 0/0 .text getRightHandPos__9daPy_py_cCFv */
-// void daPy_py_c::getRightHandPos() const {
-extern "C" void getRightHandPos__9daPy_py_cCFv() {
- // NONMATCHING
-}
+/* ############################################################################################## */
+/* 80CFB81C-80CFB83C -00001 0020+00 1/0 0/0 0/0 .data l_daObjSwChain_Method */
+static actor_method_class l_daObjSwChain_Method = {
+ (process_method_func)daObjSwChain_Create, (process_method_func)daObjSwChain_Delete,
+ (process_method_func)daObjSwChain_Execute, 0,
+ (process_method_func)daObjSwChain_Draw,
+};
-/* 80CFB790-80CFB790 0000A4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 80CFB83C-80CFB86C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SwChain */
+extern actor_process_profile_definition g_profile_Obj_SwChain = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_SwChain, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjSwChain_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 615, // mPriority
+ &l_daObjSwChain_Method, // sub_method
+ 0x000C0000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};