summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTrueffel <106771418+Trueffeloot@users.noreply.github.com>2025-09-14 09:56:51 +0200
committerGitHub <noreply@github.com>2025-09-14 10:56:51 +0300
commit5e71d9832440a85597ddceba198e72fc6694c76f (patch)
treef615199679d27e9dc3c56661c95fa5ad5a55a18d /src
parente0c9d16332f7b46ca42eaccef8318ccbfabd106c (diff)
d_a_obj_stairBlock OK (#2656)
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_obj_stairBlock.cpp481
1 files changed, 146 insertions, 335 deletions
diff --git a/src/d/actor/d_a_obj_stairBlock.cpp b/src/d/actor/d_a_obj_stairBlock.cpp
index d19f27eeb8..225d0efbda 100644
--- a/src/d/actor/d_a_obj_stairBlock.cpp
+++ b/src/d/actor/d_a_obj_stairBlock.cpp
@@ -1,404 +1,215 @@
/**
* @file d_a_obj_stairBlock.cpp
- *
-*/
+ *
+ */
#include "d/dolzel_rel.h"
#include "d/actor/d_a_obj_stairBlock.h"
-#include "dol2asm.h"
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__18daStairBlock_HIO_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__14daStairBlock_cFv();
-extern "C" void CreateHeap__14daStairBlock_cFv();
-extern "C" void create__14daStairBlock_cFv();
-extern "C" void __dt__8dCcD_SphFv();
-extern "C" void __ct__8dCcD_SphFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__13mDoExt_bckAnmFv();
-extern "C" void __ct__13mDoExt_bckAnmFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void createHeapCallBack__14daStairBlock_cFP10fopAc_ac_c();
-extern "C" void Execute__14daStairBlock_cFv();
-extern "C" void Draw__14daStairBlock_cFv();
-extern "C" void Delete__14daStairBlock_cFv();
-extern "C" static void daStairBlock_Draw__FP14daStairBlock_c();
-extern "C" static void daStairBlock_Execute__FP14daStairBlock_c();
-extern "C" static void daStairBlock_Delete__FP14daStairBlock_c();
-extern "C" static void daStairBlock_Create__FP10fopAc_ac_c();
-extern "C" void __dt__18daStairBlock_HIO_cFv();
-extern "C" void __sinit_d_a_obj_stairBlock_cpp();
-extern "C" u8 const mCcDObjInfo__14daStairBlock_c[48];
-extern "C" extern char const* const d_a_obj_stairBlock__stringBase0;
-extern "C" u8 mCcDSph__14daStairBlock_c[64];
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
-extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_setupShareTexture__FP12J3DModelDataP12J3DModelData();
-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_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 getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void ChkCoHit__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void SetR__8cM3dGSphFf();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void __construct_array();
-extern "C" void _savegpr_18();
-extern "C" void _savegpr_20();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_27();
-extern "C" void _restgpr_18();
-extern "C" void _restgpr_20();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_27();
-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" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80CE8DBC-80CE8DC0 000000 0004+00 3/4 0/0 0/0 .rodata @3651 */
-SECTION_RODATA static u8 const lit_3651[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80CE8DBC, &lit_3651);
-
-/* 80CE8ED8-80CE8F18 000000 0040+00 2/2 0/0 0/0 .data mCcDSph__14daStairBlock_c */
-SECTION_DATA u8 daStairBlock_c::mCcDSph[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00,
-};
-
-/* 80CE8F18-80CE8F38 -00001 0020+00 1/0 0/0 0/0 .data l_daStairBlock_Method */
-static actor_method_class l_daStairBlock_Method = {
- (process_method_func)daStairBlock_Create__FP10fopAc_ac_c,
- (process_method_func)daStairBlock_Delete__FP14daStairBlock_c,
- (process_method_func)daStairBlock_Execute__FP14daStairBlock_c,
- 0,
- (process_method_func)daStairBlock_Draw__FP14daStairBlock_c,
-};
-
-/* 80CE8F38-80CE8F68 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_StairBlock */
-extern actor_process_profile_definition g_profile_Obj_StairBlock = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_StairBlock, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daStairBlock_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 500, // mPriority
- &l_daStairBlock_Method, // sub_method
- 0x00044000, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80CE8F68-80CE8F74 000090 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80CE8F74-80CE8F80 00009C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 80CE8F80-80CE8F8C 0000A8 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
-
-/* 80CE8F8C-80CE8FA4 0000B4 0018+00 1/1 0/0 0/0 .data __vt__14daStairBlock_c */
-SECTION_DATA extern void* __vt__14daStairBlock_c[6] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__14daStairBlock_cFv,
- (void*)Execute__14daStairBlock_cFv,
- (void*)Draw__14daStairBlock_cFv,
- (void*)Delete__14daStairBlock_cFv,
-};
-
-/* 80CE8FA4-80CE8FB0 0000CC 000C+00 2/2 0/0 0/0 .data __vt__18daStairBlock_HIO_c */
-SECTION_DATA extern void* __vt__18daStairBlock_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18daStairBlock_HIO_cFv,
-};
-
-/* 80CE8FB0-80CE8FBC 0000D8 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,
-};
/* 80CE816C-80CE81AC 0000EC 0040+00 1/1 0/0 0/0 .text __ct__18daStairBlock_HIO_cFv */
daStairBlock_HIO_c::daStairBlock_HIO_c() {
- // NONMATCHING
-}
-
-/* 80CE81AC-80CE81F4 00012C 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
+ for (int i = 0; i < 10; i++) {
+ collision_radius[i] = 0.0f;
+ }
}
/* 80CE81F4-80CE82A0 000174 00AC+00 1/1 0/0 0/0 .text setBaseMtx__14daStairBlock_cFv */
void daStairBlock_c::setBaseMtx() {
- // NONMATCHING
+ for (int i = 0; i < 10; i++) {
+ 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);
+ mpModel[i]->setBaseScale(scale);
+ mpModel[i]->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
}
-/* ############################################################################################## */
/* 80CE8DC0-80CE8DF0 000004 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__14daStairBlock_c */
-SECTION_RODATA u8 const daStairBlock_c::mCcDObjInfo[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+const dCcD_SrcGObjInf daStairBlock_c::mCcDObjInfo = {
+ {0, {0, 0, 0, {0x0, 0x0}, {0x19}}},
+ {dCcD_SE_NONE, 0, 0, 0, 0x0},
+ {dCcD_SE_NONE, 0, 0, 0, 0x0},
+ {0},
};
-COMPILER_STRIP_GATE(0x80CE8DC0, &daStairBlock_c::mCcDObjInfo);
/* 80CE8DF0-80CE8E18 000034 0028+00 0/1 0/0 0/0 .rodata l_bmdIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_bmdIdx[40] = {
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00,
- 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16,
- 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19,
+static const s32 l_bmdIdx[10] = {
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
};
-COMPILER_STRIP_GATE(0x80CE8DF0, &l_bmdIdx);
-#pragma pop
/* 80CE8E18-80CE8E40 00005C 0028+00 0/1 0/0 0/0 .rodata l_bckIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_bckIdx[40] = {
- 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
- 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A,
- 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D,
+static const s32 l_bckIdx[10] = {
+ 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
};
-COMPILER_STRIP_GATE(0x80CE8E18, &l_bckIdx);
-#pragma pop
/* 80CE8E40-80CE8EB8 000084 0078+00 0/1 0/0 0/0 .rodata centerPos */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const centerPos[120] = {
- 0x46, 0xDC, 0x6D, 0x48, 0xC5, 0x21, 0x05, 0x58, 0x45, 0xE7, 0xA3, 0x44, 0x46, 0xDC, 0x73,
- 0x7D, 0xC5, 0x27, 0x99, 0xDF, 0x45, 0xE7, 0x05, 0x79, 0x46, 0xDD, 0x61, 0x7C, 0xC5, 0x25,
- 0x15, 0x7D, 0x45, 0xE5, 0x0C, 0xD7, 0x46, 0xD9, 0xFA, 0x72, 0xC5, 0x1D, 0xEF, 0x2F, 0x45,
- 0xDB, 0xA0, 0x14, 0x46, 0xD9, 0xEA, 0x04, 0xC5, 0x22, 0xCA, 0x98, 0x45, 0xDF, 0x36, 0x6A,
- 0x46, 0xDB, 0x08, 0x4B, 0xC5, 0x1F, 0xB0, 0x29, 0x45, 0xDF, 0x28, 0xA4, 0x46, 0xDA, 0xA3,
- 0x3E, 0xC5, 0x25, 0x41, 0xD7, 0x45, 0xDA, 0x40, 0x9A, 0x46, 0xDA, 0xA3, 0x3E, 0xC5, 0x25,
- 0x41, 0xD7, 0x45, 0xDA, 0x40, 0x9A, 0x46, 0xDA, 0xA3, 0x3E, 0xC5, 0x25, 0x41, 0xD7, 0x45,
- 0xDA, 0x40, 0x9A, 0x46, 0xDA, 0xA3, 0x3E, 0xC5, 0x25, 0x41, 0xD7, 0x45, 0xDA, 0x40, 0x9A,
-};
-COMPILER_STRIP_GATE(0x80CE8E40, &centerPos);
-#pragma pop
-
-/* 80CE8EB8-80CE8EBC 0000FC 0004+00 0/2 0/0 0/0 .rodata @3705 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3705 = 1.0f;
-COMPILER_STRIP_GATE(0x80CE8EB8, &lit_3705);
-#pragma pop
-
-/* 80CE8EBC-80CE8EC4 000100 0008+00 0/1 0/0 0/0 .rodata @3707 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3707[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+static const Vec centerPos[10] = {
+ {28214.64f, -2576.334f, 7412.408f}, {28217.744f, -2681.6169f, 7392.684f},
+ {28336.742f, -2641.343f, 7329.605f}, {27901.223f, -2526.949f, 7028.0098f},
+ {27893.008f, -2604.662f, 7142.8018f}, {28036.146f, -2555.01f, 7141.08f},
+ {27985.621f, -2644.115f, 6984.075f}, {27985.621f, -2644.115f, 6984.075f},
+ {27985.621f, -2644.115f, 6984.075f}, {27985.621f, -2644.115f, 6984.075f},
};
-COMPILER_STRIP_GATE(0x80CE8EBC, &lit_3707);
-#pragma pop
-
-/* 80CE8ECC-80CE8ECC 000110 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80CE8ECC = "StaBlock";
-#pragma pop
/* 80CE82A0-80CE83F0 000220 0150+00 1/0 0/0 0/0 .text CreateHeap__14daStairBlock_cFv */
-void daStairBlock_c::CreateHeap() {
- // NONMATCHING
-}
+int daStairBlock_c::CreateHeap() {
+ for (int i = 0; i < 10; i++) {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("StaBlock", l_bmdIdx[i]);
+ JUT_ASSERT(276, modelData != 0);
-/* 80CE83F0-80CE85B0 000370 01C0+00 1/1 0/0 0/0 .text create__14daStairBlock_cFv */
-void daStairBlock_c::create() {
- // NONMATCHING
-}
+ mpModel[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mpModel[i] == NULL) {
+ return 0;
+ }
-/* 80CE85B0-80CE867C 000530 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_SphFv */
-// dCcD_Sph::~dCcD_Sph() {
-extern "C" void __dt__8dCcD_SphFv() {
- // NONMATCHING
-}
+ J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes("StaBlock", l_bckIdx[i]);
+ s32 res = mBckAnm[i].init(bck, 1, 0, 1.0f, 0, -1, false);
+ JUT_ASSERT_MSG(290, res == 1, "res == 1");
-/* 80CE867C-80CE8700 0005FC 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */
-// dCcD_Sph::dCcD_Sph() {
-extern "C" void __ct__8dCcD_SphFv() {
- // NONMATCHING
+ mBckAnm[i].setEndFrame(mBckAnm[i].getEndFrame() - 1.0f);
+ }
+ return 1;
}
-/* 80CE8700-80CE8748 000680 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
-}
+/* 80CE83F0-80CE85B0 000370 01C0+00 1/1 0/0 0/0 .text create__14daStairBlock_cFv */
+int daStairBlock_c::create() {
+ fopAcM_SetupActor(this, daStairBlock_c);
-/* 80CE8748-80CE8790 0006C8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ int phase = dComIfG_resLoad(&mPhaseReq, "StaBlock");
+ if (phase == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x9000)) {
+ return cPhs_ERROR_e;
+ }
-/* 80CE8790-80CE87E4 000710 0054+00 1/1 0/0 0/0 .text __dt__13mDoExt_bckAnmFv */
-// mDoExt_bckAnm::~mDoExt_bckAnm() {
-extern "C" void __dt__13mDoExt_bckAnmFv() {
- // NONMATCHING
-}
+ fopAcM_SetMtx(this, mpModel[0]->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mpModel[0]->getModelData());
+ mStts.Init(0, 0xFF, this);
-/* 80CE87E4-80CE882C 000764 0048+00 1/1 0/0 0/0 .text __ct__13mDoExt_bckAnmFv */
-// mDoExt_bckAnm::mDoExt_bckAnm() {
-extern "C" void __ct__13mDoExt_bckAnmFv() {
- // NONMATCHING
-}
+ for (int i = 0; i < 10; i++) {
+ mSpheres[i].Set(mCcDSph);
+ mSpheres[i].SetStts(&mStts);
+ mHit[i] = 0;
+ }
+
+ for (int i = 1; i < 10; i++) {
+ mDoExt_setupShareTexture(mpModel[i]->getModelData(), mpModel[0]->getModelData());
+ }
-/* 80CE882C-80CE8874 0007AC 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+ setBaseMtx();
+ }
+
+ return phase;
}
/* 80CE8874-80CE88A0 0007F4 002C+00 1/1 0/0 0/0 .text
* createHeapCallBack__14daStairBlock_cFP10fopAc_ac_c */
-void daStairBlock_c::createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+int daStairBlock_c::createHeapCallBack(fopAc_ac_c* i_this) {
+ return static_cast<daStairBlock_c*>(i_this)->CreateHeap();
}
-/* ############################################################################################## */
-/* 80CE8EC4-80CE8EC8 000108 0004+00 0/1 0/0 0/0 .rodata @3942 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3942 = -1.0f;
-COMPILER_STRIP_GATE(0x80CE8EC4, &lit_3942);
-#pragma pop
-
-/* 80CE8EC8-80CE8ECC 00010C 0004+00 0/1 0/0 0/0 .rodata @3943 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3943 = 200.0f;
-COMPILER_STRIP_GATE(0x80CE8EC8, &lit_3943);
-#pragma pop
-
-/* 80CE8FC8-80CE8FD4 000008 000C+00 1/1 0/0 0/0 .bss @3640 */
-static u8 lit_3640[12];
-
/* 80CE8FD4-80CE9000 000014 002C+00 2/2 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[44];
+static daStairBlock_HIO_c l_HIO;
/* 80CE88A0-80CE8B24 000820 0284+00 1/0 0/0 0/0 .text Execute__14daStairBlock_cFv */
-void daStairBlock_c::Execute() {
- // NONMATCHING
+int daStairBlock_c::Execute() {
+ for (int i = 0; i < 10; i++) {
+ if (mSpheres[i].ChkCoHit()) {
+ if (mHit[i] == 0) {
+ mSpheres[i].OffCoSetBit();
+ mHit[i] = 1;
+ cXyz soundPos(centerPos[i]);
+ mDoAud_seStart(Z2SE_OBJ_BREAK_STEPS, &soundPos, 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ }
+ mSpheres[i].ClrCoHit();
+ }
+ mSpheres[i].SetR(l_HIO.collision_radius[i] + 200.0f);
+ cXyz posC(centerPos[i]);
+ mSpheres[i].SetC(posC);
+ dComIfG_Ccsp()->Set(&mSpheres[i]);
+
+ if (mHit[i] != 0 && mBckAnm[i].play()) {
+ mHit[i] = 0;
+ cXyz soundPos(centerPos[i]);
+ mDoAud_seStart(Z2SE_OBJ_BREAK_STONE, &soundPos, 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mDoAud_seStart(Z2SE_OBJ_FALL_WATER_S, &soundPos, 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ }
+ }
+ return 1;
}
/* 80CE8B24-80CE8C08 000AA4 00E4+00 1/0 0/0 0/0 .text Draw__14daStairBlock_cFv */
-void daStairBlock_c::Draw() {
- // NONMATCHING
+int daStairBlock_c::Draw() {
+ g_env_light.settingTevStruct(0x40, &current.pos, &tevStr);
+ dComIfGd_setListBG();
+
+ for (int i = 0; i < 10; i++) {
+ g_env_light.setLightTevColorType_MAJI(mpModel[i], &tevStr);
+ mBckAnm[i].entry(mpModel[i]->getModelData());
+ mDoExt_modelUpdateDL(mpModel[i]);
+ }
+ dComIfGd_setList();
+ return 1;
}
/* 80CE8C08-80CE8C38 000B88 0030+00 1/0 0/0 0/0 .text Delete__14daStairBlock_cFv */
-void daStairBlock_c::Delete() {
- // NONMATCHING
+int daStairBlock_c::Delete() {
+ dComIfG_resDelete(&mPhaseReq, "StaBlock");
+
+#if DEBUG
+ l_HIO.removeHIO();
+#endif
+
+ return 1;
}
/* 80CE8C38-80CE8C64 000BB8 002C+00 1/0 0/0 0/0 .text daStairBlock_Draw__FP14daStairBlock_c */
-static void daStairBlock_Draw(daStairBlock_c* param_0) {
- // NONMATCHING
+static int daStairBlock_Draw(daStairBlock_c* i_this) {
+ return i_this->Draw();
}
/* 80CE8C64-80CE8C90 000BE4 002C+00 1/0 0/0 0/0 .text daStairBlock_Execute__FP14daStairBlock_c */
-static void daStairBlock_Execute(daStairBlock_c* param_0) {
- // NONMATCHING
+static int daStairBlock_Execute(daStairBlock_c* i_this) {
+ return i_this->Execute();
}
/* 80CE8C90-80CE8CBC 000C10 002C+00 1/0 0/0 0/0 .text daStairBlock_Delete__FP14daStairBlock_c */
-static void daStairBlock_Delete(daStairBlock_c* param_0) {
- // NONMATCHING
+static int daStairBlock_Delete(daStairBlock_c* i_this) {
+ return i_this->Delete();
}
/* 80CE8CBC-80CE8CDC 000C3C 0020+00 1/0 0/0 0/0 .text daStairBlock_Create__FP10fopAc_ac_c
*/
-static void daStairBlock_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daStairBlock_Create(fopAc_ac_c* i_this) {
+ return static_cast<daStairBlock_c*>(i_this)->create();
}
-/* 80CE8CDC-80CE8D38 000C5C 005C+00 2/1 0/0 0/0 .text __dt__18daStairBlock_HIO_cFv */
-daStairBlock_HIO_c::~daStairBlock_HIO_c() {
- // NONMATCHING
-}
-
-/* 80CE8D38-80CE8DA8 000CB8 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_stairBlock_cpp */
-void __sinit_d_a_obj_stairBlock_cpp() {
- // NONMATCHING
-}
+/* 80CE8ED8-80CE8F18 000000 0040+00 2/2 0/0 0/0 .data mCcDSph__14daStairBlock_c */
+dCcD_SrcSph daStairBlock_c::mCcDSph = {daStairBlock_c::mCcDObjInfo, {{{0.0f, 0.0f, 0.0f}, 4.0f}}};
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80CE8D38, __sinit_d_a_obj_stairBlock_cpp);
-#pragma pop
+/* 80CE8F18-80CE8F38 -00001 0020+00 1/0 0/0 0/0 .data l_daStairBlock_Method */
+static actor_method_class l_daStairBlock_Method = {
+ (process_method_func)daStairBlock_Create, (process_method_func)daStairBlock_Delete,
+ (process_method_func)daStairBlock_Execute, 0,
+ (process_method_func)daStairBlock_Draw,
+};
-/* 80CE8ECC-80CE8ECC 000110 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 80CE8F38-80CE8F68 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_StairBlock */
+extern actor_process_profile_definition g_profile_Obj_StairBlock = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_StairBlock, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daStairBlock_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 500, // mPriority
+ &l_daStairBlock_Method, // sub_method
+ 0x00044000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};