diff --git a/configure.py b/configure.py index 20e70321bb5..453bf6d82d7 100755 --- a/configure.py +++ b/configure.py @@ -2005,7 +2005,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_lv9SwShutter"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_magLift"), ActorRel(NonMatching, "d_a_obj_magLiftRot"), - ActorRel(NonMatching, "d_a_obj_maki"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_maki"), ActorRel(NonMatching, "d_a_obj_master_sword"), ActorRel(NonMatching, "d_a_obj_mato"), ActorRel(NonMatching, "d_a_obj_mhole"), diff --git a/include/d/actor/d_a_obj_maki.h b/include/d/actor/d_a_obj_maki.h index f2daffc012c..b0d1056b6c9 100644 --- a/include/d/actor/d_a_obj_maki.h +++ b/include/d/actor/d_a_obj_maki.h @@ -1,7 +1,12 @@ #ifndef D_A_OBJ_MAKI_H #define D_A_OBJ_MAKI_H -#include "f_op/f_op_actor_mng.h" +#include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "SSystem/SComponent/c_phase.h" +#include "d/d_cc_d.h" +#include "d/d_kankyo.h" +#include "d/d_particle.h" +#include "f_op/f_op_actor.h" /** * @ingroup actors-objects @@ -12,16 +17,31 @@ * */ class obj_maki_class : public fopAc_ac_c { -private: - /* 0x568 */ u8 field_0x568[0x730 - 0x568]; +public: + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ J3DModel* mModel1; + /* 0x574 */ mDoExt_brkAnm* mBrk; + /* 0x578 */ J3DModel* mModel2; + /* 0x57c */ u8 field_0x57c; + /* 0x57d */ u8 field_0x57d; // Undefined + /* 0x57e */ s16 field_0x57e; + /* 0x580 */ s16 field_0x580[2]; + /* 0x584*/ dCcD_Stts mStts; + /* 0x5c0 */ dCcD_Sph mSph; + /* 0x6f8 */ u32 field_0x6f8[4]; + /* 0x6fc */ u8 field_0x6fc[0x70c - 0x708]; // Undefined + /* 0x70c */ LIGHT_INFLUENCE mLightObj; + /* 0x72c */ u8 field_0x72c; + /* 0x72d */ u8 field_0x72d[0x730 - 0x72d]; //Undefined }; STATIC_ASSERT(sizeof(obj_maki_class) == 0x730); - class daObj_Maki_HIO_c { public: /* 80C8FE0C */ daObj_Maki_HIO_c(); - /* 80C9089C */ ~daObj_Maki_HIO_c(); + /* 80C9089C */ virtual ~daObj_Maki_HIO_c() {}; + + /* 0x04 */ s8 field_0x4; }; diff --git a/src/d/actor/d_a_obj_maki.cpp b/src/d/actor/d_a_obj_maki.cpp index 981d30f338e..eeb67f43c34 100644 --- a/src/d/actor/d_a_obj_maki.cpp +++ b/src/d/actor/d_a_obj_maki.cpp @@ -1,357 +1,270 @@ /** * @file d_a_obj_maki.cpp - * -*/ + * + */ #include "d/actor/d_a_obj_maki.h" +#include "JSystem/J3DGraphAnimator/J3DAnimation.h" +#include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "JSystem/J3DGraphAnimator/J3DModelData.h" +#include "SSystem/SComponent/c_cc_d.h" +#include "SSystem/SComponent/c_phase.h" +#include "SSystem/SComponent/c_xyz.h" #include "d/d_cc_d.h" -#include "dol2asm.h" - - - -// -// Forward References: -// - -extern "C" void __ct__16daObj_Maki_HIO_cFv(); -extern "C" static void daObj_Maki_Draw__FP14obj_maki_class(); -extern "C" static void daObj_Maki_Execute__FP14obj_maki_class(); -extern "C" static bool daObj_Maki_IsDelete__FP14obj_maki_class(); -extern "C" static void daObj_Maki_Delete__FP14obj_maki_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daObj_Maki_Create__FP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__16daObj_Maki_HIO_cFv(); -extern "C" void __sinit_d_a_obj_maki_cpp(); -extern "C" extern char const* const d_a_obj_maki__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void play__14mDoExt_baseAnmFv(); -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 fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -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 -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void GetCoHitObj__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 dKy_plight_set__FP15LIGHT_INFLUENCE(); -extern "C" void dKy_plight_cut__FP15LIGHT_INFLUENCE(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -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 _savegpr_23(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -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" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C90974-80C90980 000000 000A+02 1/1 0/0 0/0 .data eff_id$3814 */ -SECTION_DATA static u8 eff_id_3814[10 + 2 /* padding */] = { - 0x82, - 0x04, - 0x82, - 0x05, - 0x82, - 0x06, - 0x82, - 0x07, - 0x82, - 0x08, - /* padding */ - 0x00, - 0x00, -}; - -/* 80C90980-80C90984 00000C 0004+00 1/1 0/0 0/0 .data eff_id$3833 */ -SECTION_DATA static u8 eff_id_3833[4] = { - 0x82, - 0x09, - 0x82, - 0x0A, -}; - -/* 80C90984-80C909C4 000010 0040+00 1/1 0/0 0/0 .data cc_sph_src$4010 */ -static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x40000000, 0x3}, 0x75}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_METAL, 0x2, 0x0, 0x0, 0x3}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph - } // mSphAttr -}; - -/* 80C909C4-80C909E4 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Maki_Method */ -static actor_method_class l_daObj_Maki_Method = { - (process_method_func)daObj_Maki_Create__FP10fopAc_ac_c, - (process_method_func)daObj_Maki_Delete__FP14obj_maki_class, - (process_method_func)daObj_Maki_Execute__FP14obj_maki_class, - (process_method_func)daObj_Maki_IsDelete__FP14obj_maki_class, - (process_method_func)daObj_Maki_Draw__FP14obj_maki_class, -}; - -/* 80C909E4-80C90A14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_MAKI */ -extern actor_process_profile_definition g_profile_OBJ_MAKI = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_OBJ_MAKI, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(obj_maki_class), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 50, // mPriority - &l_daObj_Maki_Method, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80C90A14-80C90A20 0000A0 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, -}; - -/* 80C90A20-80C90A2C 0000AC 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, -}; - -/* 80C90A2C-80C90A38 0000B8 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, -}; - -/* 80C90A38-80C90A44 0000C4 000C+00 2/2 0/0 0/0 .data __vt__16daObj_Maki_HIO_c */ -SECTION_DATA extern void* __vt__16daObj_Maki_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16daObj_Maki_HIO_cFv, -}; +#include "d/d_com_inf_game.h" +#include "d/d_kankyo.h" +#include "f_op/f_op_actor.h" +#include "f_op/f_op_actor_mng.h" +#include "m_Do/m_Do_ext.h" +#include "m_Do/m_Do_mtx.h" +#include "types.h" /* 80C8FE0C-80C8FE24 0000EC 0018+00 1/1 0/0 0/0 .text __ct__16daObj_Maki_HIO_cFv */ daObj_Maki_HIO_c::daObj_Maki_HIO_c() { - // NONMATCHING + field_0x4 = -1; } /* 80C8FE24-80C8FEDC 000104 00B8+00 1/0 0/0 0/0 .text daObj_Maki_Draw__FP14obj_maki_class */ -static void daObj_Maki_Draw(obj_maki_class* param_0) { - // NONMATCHING +int daObj_Maki_Draw(obj_maki_class* i_this) { + g_env_light.settingTevStruct(0x10, &i_this->current.pos, &i_this->tevStr); + + if (i_this->field_0x57e == 0) { + g_env_light.setLightTevColorType_MAJI(i_this->mModel1, &i_this->tevStr); + i_this->mBrk->entry(i_this->mModel1->getModelData()); + mDoExt_modelUpdateDL(i_this->mModel1); + } else if (i_this->field_0x57c != 0x01) { + g_env_light.setLightTevColorType_MAJI(i_this->mModel2, &i_this->tevStr); + mDoExt_modelUpdateDL(i_this->mModel2); + } + return 1; } -/* ############################################################################################## */ -/* 80C90934-80C90938 000000 0004+00 3/3 0/0 0/0 .rodata @3928 */ -SECTION_RODATA static f32 const lit_3928 = 1.0f; -COMPILER_STRIP_GATE(0x80C90934, &lit_3928); - -/* 80C90938-80C9093C 000004 0004+00 0/1 0/0 0/0 .rodata @3929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3929 = -1.0f; -COMPILER_STRIP_GATE(0x80C90938, &lit_3929); -#pragma pop - -/* 80C9093C-80C90940 000008 0004+00 0/1 0/0 0/0 .rodata @3930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3930 = -150.0f; -COMPILER_STRIP_GATE(0x80C9093C, &lit_3930); -#pragma pop - -/* 80C90940-80C90944 00000C 0004+00 0/1 0/0 0/0 .rodata @3931 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3931 = 250.0f; -COMPILER_STRIP_GATE(0x80C90940, &lit_3931); -#pragma pop - -/* 80C90944-80C90948 000010 0004+00 0/1 0/0 0/0 .rodata @3932 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3932 = 50.0f; -COMPILER_STRIP_GATE(0x80C90944, &lit_3932); -#pragma pop - -/* 80C90948-80C9094C 000014 0004+00 1/2 0/0 0/0 .rodata @3933 */ -SECTION_RODATA static f32 const lit_3933 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C90948, &lit_3933); - -/* 80C9094C-80C90950 000018 0004+00 0/1 0/0 0/0 .rodata @3934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3934[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C9094C, &lit_3934); -#pragma pop - -/* 80C90950-80C90954 00001C 0004+00 0/1 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3935 = 20000.0f; -COMPILER_STRIP_GATE(0x80C90950, &lit_3935); -#pragma pop - /* 80C8FEDC-80C90378 0001BC 049C+00 2/1 0/0 0/0 .text daObj_Maki_Execute__FP14obj_maki_class */ -static void daObj_Maki_Execute(obj_maki_class* param_0) { - // NONMATCHING +int daObj_Maki_Execute(obj_maki_class* i_this) { + for (int i = 0; i < 2; i++) { + if (i_this->field_0x580[i] != 0) { + i_this->field_0x580[i]--; + } + } + cXyz cxyz = i_this->current.pos; + J3DModel* model; + if (i_this->field_0x57e == 0) { + model = i_this->mModel1; + i_this->mBrk->play(); + + for (int i = 0; i < 5; i++) { + static u16 eff_id[] = {0x8204, 0x8205, 0x8206, 0x8207, 0x8208}; + i_this->field_0x6f8[i] = dComIfGp_particle_set( + i_this->field_0x6f8[i], eff_id[i], &i_this->current.pos, &i_this->tevStr, + &i_this->shape_angle, NULL, 0xff, NULL, -1, NULL, NULL, NULL); + } + + s8 isHit = 0; + if (i_this->mSph.ChkTgHit() != 0) { + isHit = 1; + } + + if (i_this->mSph.ChkCoHit() != 0) { + cCcD_Obj* hitObj = i_this->mSph.GetCoHitObj(); + if (fopAcM_GetName(hitObj->GetAc()) == 0xef) { + isHit = 1; + } + } + + if (i_this->field_0x580[0] == 0 && i_this->mSph.ChkAtHit() != 0) { + i_this->field_0x580[0] = 10; + fopAcM_seStart(i_this, 0x800a4, 0); + } + + if (isHit) { + i_this->field_0x57e = 1; + u32 i_no = fopAcM_GetParam(i_this) >> 0x18; + if (i_no != 0xff) { + dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(i_this)); + } + + for (int i = 0; i < 2; i++) { + static u16 eff_id[] = {0x8209, 0x820A}; + dComIfGp_particle_set(eff_id[i], &i_this->current.pos, &i_this->tevStr, + &i_this->shape_angle, 0); + } + fopAcM_seStart(i_this, 0x800a5, 0); + model = i_this->mModel2; + } + + fopAcM_seStartLevel(i_this, 0x800a3, 0); + + if (i_this->field_0x57c != 1) { + cxyz.x += -150.0f; + i_this->mSph.SetR(250.0f); + } else { + i_this->mSph.SetR(50.0f); + } + + i_this->mSph.SetC(cxyz); + dComIfG_Ccsp()->Set(&i_this->mSph); + + if (i_this->mLightObj.mPow > 0.1f) { + dKy_plight_cut(&i_this->mLightObj); + i_this->mLightObj.mPow = 0.0f; + } + } else { + model = i_this->mModel2; + if (i_this->field_0x57c != 1) { + cxyz.y += 20000.0f; + i_this->field_0x6f8[0] = dComIfGp_particle_set( + i_this->field_0x6f8[0], 0x820b, &i_this->current.pos, &i_this->tevStr, + &i_this->shape_angle, 0, 0xff, 0, 0xffffffff, 0, 0, 0); + fopAcM_seStartLevel(i_this, 0x800a6, 0); + } + } + + 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); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + fopAcM_SetMtx(i_this, model->getBaseTRMtx()); + i_this->eyePos = i_this->current.pos; + + return 1; } /* 80C90378-80C90380 000658 0008+00 1/0 0/0 0/0 .text daObj_Maki_IsDelete__FP14obj_maki_class */ -static bool daObj_Maki_IsDelete(obj_maki_class* param_0) { +int daObj_Maki_IsDelete(obj_maki_class* i_this) { return true; } -/* ############################################################################################## */ -/* 80C90960-80C90960 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C90960 = "Obj_maki"; -#pragma pop - -/* 80C90A50-80C90A54 000008 0004+00 2/2 0/0 0/0 .bss None */ -static u8 data_80C90A50[4]; +u8 lbl_567_bss_8; /* 80C90380-80C903F0 000660 0070+00 1/0 0/0 0/0 .text daObj_Maki_Delete__FP14obj_maki_class */ -static void daObj_Maki_Delete(obj_maki_class* param_0) { - // NONMATCHING +int daObj_Maki_Delete(obj_maki_class* i_this) { + dComIfG_resDelete(&i_this->mPhase, "Obj_maki"); + if (i_this->field_0x72c != 0) { + lbl_567_bss_8 = 0; + } + + if (i_this->mLightObj.mPow > 0.1f) { + dKy_plight_cut(&i_this->mLightObj); + } + + return 1; } /* 80C903F0-80C90544 0006D0 0154+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING +int useHeapInit(fopAc_ac_c* i_this) { + obj_maki_class* a_this = (obj_maki_class*)i_this; + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_maki", 4); + a_this->mModel1 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (a_this->mModel1 == NULL) { + return 0; + } + + a_this->mBrk = new mDoExt_brkAnm(); + if (a_this->mBrk == NULL) { + return 0; + } + + J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Obj_maki", 8); + if (!a_this->mBrk->init(a_this->mModel1->getModelData(), pbrk, TRUE, J3DFrameCtrl::EMode_LOOP, + 1.0f, 0, -1)) + { + return 0; + } + + modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_maki", 5); + a_this->mModel2 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (a_this->mModel2 == NULL) { + return 0; + } + + return 1; } -/* 80C90544-80C9058C 000824 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C90954-80C90958 000020 0004+00 0/1 0/0 0/0 .rodata @4075 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4075 = -500.0f; -COMPILER_STRIP_GATE(0x80C90954, &lit_4075); -#pragma pop - -/* 80C90958-80C9095C 000024 0004+00 0/1 0/0 0/0 .rodata @4076 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4076 = -200.0f; -COMPILER_STRIP_GATE(0x80C90958, &lit_4076); -#pragma pop - -/* 80C9095C-80C90960 000028 0004+00 0/1 0/0 0/0 .rodata @4077 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4077 = 500.0f; -COMPILER_STRIP_GATE(0x80C9095C, &lit_4077); -#pragma pop - -/* 80C90960-80C90960 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C90969 = "F_SP118"; -#pragma pop - -/* 80C90A54-80C90A60 00000C 000C+00 1/1 0/0 0/0 .bss @3764 */ -static u8 lit_3764[12]; - /* 80C90A60-80C90A68 000018 0008+00 2/2 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[8]; +daObj_Maki_HIO_c l_HIO; /* 80C9058C-80C9080C 00086C 0280+00 1/0 0/0 0/0 .text daObj_Maki_Create__FP10fopAc_ac_c */ -static void daObj_Maki_Create(fopAc_ac_c* param_0) { - // NONMATCHING +cPhs__Step daObj_Maki_Create(fopAc_ac_c* i_this) { + fopAcM_SetupActor(i_this, obj_maki_class); + obj_maki_class* a_this = (obj_maki_class*)i_this; + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x40000000, 0x3}, 0x75}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_METAL, 0x2, 0x0, 0x0, 0x3}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr + }; + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&a_this->mPhase, "Obj_maki"); + if (phase == cPhs_COMPLEATE_e) { + a_this->field_0x57c = (u8)fopAcM_GetParam(a_this); + u32 cVar3 = fopAcM_GetParam(a_this) >> 0x18; + if (cVar3 != 0xff && dComIfGs_isSwitch(cVar3, fopAcM_GetRoomNo(a_this))) { + a_this->field_0x57e = 1; + } + + if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x1020)) { + return cPhs_ERROR_e; + } + + if (lbl_567_bss_8 == 0) { + a_this->field_0x72c = 1; + lbl_567_bss_8 = '\x01'; + l_HIO.field_0x4 = -1; + } + + fopAcM_SetMin(a_this, -500.0f, -200.0f, -500.0f); + fopAcM_SetMax(a_this, 500.0f, 500.0f, 500.0f); + a_this->mStts.Init(0xff, 0, a_this); + a_this->mSph.Set(cc_sph_src); + a_this->mSph.SetStts(&a_this->mStts); + + if (a_this->field_0x57c == 1) { + a_this->mSph.SetTgType(0xd8fbfdff); + } + + if (strcmp(dComIfGp_getStartStageName(), "F_SP118") != 0 && a_this->field_0x57e != 1) { + a_this->mLightObj.mPosition = a_this->current.pos; + a_this->mLightObj.mColor.r = 0xaf; + a_this->mLightObj.mColor.g = 0x5d; + a_this->mLightObj.mColor.b = 0; + a_this->mLightObj.mPow = 500.0f; + a_this->mLightObj.mFluctuation = 1.0f; + dKy_plight_set(&a_this->mLightObj); + } + + daObj_Maki_Execute(a_this); + } + return phase; } -/* 80C9080C-80C90854 000AEC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} +/* 80C909C4-80C909E4 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Maki_Method */ +actor_method_class l_daObj_Maki_Method = { + (process_method_func)daObj_Maki_Create, (process_method_func)daObj_Maki_Delete, + (process_method_func)daObj_Maki_Execute, (process_method_func)daObj_Maki_IsDelete, + (process_method_func)daObj_Maki_Draw, +}; -/* 80C90854-80C9089C 000B34 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80C9089C-80C908E4 000B7C 0048+00 2/1 0/0 0/0 .text __dt__16daObj_Maki_HIO_cFv */ -daObj_Maki_HIO_c::~daObj_Maki_HIO_c() { - // NONMATCHING -} - -/* 80C908E4-80C90920 000BC4 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_maki_cpp */ -void __sinit_d_a_obj_maki_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C908E4, __sinit_d_a_obj_maki_cpp); -#pragma pop - -/* 80C90960-80C90960 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80C909E4-80C90A14 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_MAKI */ +extern actor_process_profile_definition g_profile_OBJ_MAKI = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_OBJ_MAKI, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(obj_maki_class), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 50, // mPriority + &l_daObj_Maki_Method, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};