From 958916a69086dce37934801d5c3de66b248fe9a7 Mon Sep 17 00:00:00 2001 From: Hyenate Date: Wed, 14 May 2025 17:10:55 -0400 Subject: [PATCH] d_a_obj_ganonwall2 Matching (#2437) * d_a_obj_ganonwall2 Mathcing * d_a_obj_ganonwall2.cpp formatting * d_a_obj_ganonwall.cpp formatting --- configure.py | 2 +- include/d/actor/d_a_obj_ganonwall2.h | 23 +- src/d/actor/d_a_obj_ganonwall.cpp | 35 ++- src/d/actor/d_a_obj_ganonwall2.cpp | 390 ++++++++++----------------- 4 files changed, 181 insertions(+), 269 deletions(-) diff --git a/configure.py b/configure.py index aad1d74ef55..9021711ee08 100755 --- a/configure.py +++ b/configure.py @@ -1919,7 +1919,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_fw"), ActorRel(NonMatching, "d_a_obj_gadget"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ganonwall"), - ActorRel(NonMatching, "d_a_obj_ganonwall2"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ganonwall2"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_gb"), ActorRel(NonMatching, "d_a_obj_geyser"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_glowSphere"), diff --git a/include/d/actor/d_a_obj_ganonwall2.h b/include/d/actor/d_a_obj_ganonwall2.h index 3c1dfb3fc2e..30a6bcb72db 100644 --- a/include/d/actor/d_a_obj_ganonwall2.h +++ b/include/d/actor/d_a_obj_ganonwall2.h @@ -1,6 +1,7 @@ #ifndef D_A_OBJ_GANONWALL2_H #define D_A_OBJ_GANONWALL2_H +#include "d/d_bg_s_movebg_actor.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,19 +12,25 @@ * @details * */ -class daObjGWall2_c : public fopAc_ac_c { +class daObjGWall2_c : public dBgS_MoveBgActor { public: /* 80BF57D8 */ void initBaseMtx(); /* 80BF5814 */ void setBaseMtx(); - /* 80BF5878 */ void Create(); - /* 80BF5950 */ void CreateHeap(); - /* 80BF5AB4 */ void create1st(); - /* 80BF5B74 */ void Execute(f32 (**)[3][4]); - /* 80BF5C0C */ void Draw(); - /* 80BF6004 */ void Delete(); + /* 80BF5878 */ int Create(); + /* 80BF5950 */ int CreateHeap(); + /* 80BF5AB4 */ int create1st(); + /* 80BF5B74 */ int Execute(f32 (**)[3][4]); + /* 80BF5C0C */ int Draw(); + /* 80BF6004 */ int Delete(); + + u32 getEventBit1() { return fopAcM_GetParamBit(this, 0, 10); } private: - /* 0x568 */ u8 field_0x568[0x5c0 - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhaseReq; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ mDoExt_btkAnm* mpBtkAnm; + /* 0x5B0 */ u16 mMatIdx; + /* 0x5B2 */ cXyz mSePos; }; STATIC_ASSERT(sizeof(daObjGWall2_c) == 0x5c0); diff --git a/src/d/actor/d_a_obj_ganonwall.cpp b/src/d/actor/d_a_obj_ganonwall.cpp index 0d98365fd09..33302d76c0f 100644 --- a/src/d/actor/d_a_obj_ganonwall.cpp +++ b/src/d/actor/d_a_obj_ganonwall.cpp @@ -65,8 +65,8 @@ int daObjGWall_c::Create() { fopAcM_setCullSizeBox2(this, mpModel->getModelData()); cullSizeFar = 1000000.f; mMatIdx = 0xffff; - JUTNameTab* name_table = mpModel->mModelData->getMaterialTable().getMaterialName(); - for (u16 i = 0; i < mpModel->mModelData->getMaterialTable().getMaterialNum(); i++) { + JUTNameTab* name_table = mpModel->getModelData()->getMaterialTable().getMaterialName(); + for (u16 i = 0; i < mpModel->getModelData()->getMaterialTable().getMaterialNum(); i++) { if (strcmp(name_table->getName(i), l_matName) == 0) { mMatIdx = i; } @@ -85,7 +85,7 @@ int daObjGWall_c::CreateHeap() { J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 7); mpBtkAnm = new mDoExt_btkAnm(); if (mpBtkAnm == NULL || - mpBtkAnm->init(&model_data->getMaterialTable(), btk, 1, 2, 1.0, 0, -1) == 0) + mpBtkAnm->init(model_data, btk, 1, 2, 1.0, 0, -1) == 0) { return 0; } @@ -130,30 +130,27 @@ int daObjGWall_c::draw() { } g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); - g_env_light.setLightTevColorType_MAJI(mpModel->mModelData, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); mpBtkAnm->entry(mpModel->getModelData()); - J3DModelData* model_data; - for (u16 i = 0; - model_data = mpModel->getModelData(), i < model_data->getMaterialTable().getMaterialNum(); - i++) - { - J3DMaterial* mat = model_data->getMaterialTable().getMaterialNodePointer(i); + for (u16 i = 0; i < mpModel->getModelData()->getMaterialTable().getMaterialNum(); i++) { + J3DMaterial* mat = mpModel->getModelData()->getMaterialTable().getMaterialNodePointer(i); J3DFog* fog = mat->getPEBlock()->getFog(); if (fog != NULL) { fog = mat->getPEBlock()->getFog(); - fog->getFogInfo()->mColor.r = '\0'; - fog->getFogInfo()->mColor.g = '\0'; - fog->getFogInfo()->mColor.b = '\0'; - fog->getFogInfo()->mStartZ = 1000.0f; - fog->getFogInfo()->mEndZ = 250000.0f; + J3DFogInfo* fog_info = fog->getFogInfo(); + fog_info->mColor.r = 0; + fog_info->mColor.g = 0; + fog_info->mColor.b = 0; + fog_info->mStartZ = 1000.0f; + fog_info->mEndZ = 250000.0f; } } int hour = dKy_getdaytime_hour(); float minute = dKy_getdaytime_minute(); J3DGXColor* mat_tev_k_color = - mpModel->mModelData->getMaterialTable().getMaterialNodePointer(mMatIdx)->getTevKColor(1); + mpModel->getModelData()->getMaterialTable().getMaterialNodePointer(mMatIdx)->getTevKColor(1); int idx1 = l_idx[hour][0]; int idx2 = l_idx[hour][1]; mat_tev_k_color->r = (l_color[idx1].r + @@ -204,8 +201,10 @@ static int daObjGWall_Create(daObjGWall_c* i_this) { /* 80BF56EC-80BF570C -00001 0020+00 1/0 0/0 0/0 .data l_daObjGWall_Method */ static actor_method_class l_daObjGWall_Method = { - (process_method_func)daObjGWall_Create, (process_method_func)daObjGWall_Delete, - (process_method_func)daObjGWall_Execute, 0, + (process_method_func)daObjGWall_Create, + (process_method_func)daObjGWall_Delete, + (process_method_func)daObjGWall_Execute, + 0, (process_method_func)daObjGWall_Draw, }; diff --git a/src/d/actor/d_a_obj_ganonwall2.cpp b/src/d/actor/d_a_obj_ganonwall2.cpp index 5c6bbc01931..17d49859e4d 100644 --- a/src/d/actor/d_a_obj_ganonwall2.cpp +++ b/src/d/actor/d_a_obj_ganonwall2.cpp @@ -4,88 +4,11 @@ */ #include "d/actor/d_a_obj_ganonwall2.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" void initBaseMtx__13daObjGWall2_cFv(); -extern "C" void setBaseMtx__13daObjGWall2_cFv(); -extern "C" void Create__13daObjGWall2_cFv(); -extern "C" void CreateHeap__13daObjGWall2_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void create1st__13daObjGWall2_cFv(); -extern "C" void Execute__13daObjGWall2_cFPPA3_A4_f(); -extern "C" void Draw__13daObjGWall2_cFv(); -extern "C" void Delete__13daObjGWall2_cFv(); -extern "C" static void daObjGWall2_create1st__FP13daObjGWall2_c(); -extern "C" static void daObjGWall2_MoveBGDelete__FP13daObjGWall2_c(); -extern "C" static void daObjGWall2_MoveBGExecute__FP13daObjGWall2_c(); -extern "C" static void daObjGWall2_MoveBGDraw__FP13daObjGWall2_c(); -extern "C" extern char const* const d_a_obj_ganonwall2__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_btkAnmRemove__FP12J3DModelData(); -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 isEventBit__11dSv_event_cCFUs(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void dKy_getdaytime_hour__Fv(); -extern "C" void dKy_getdaytime_minute__Fv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getName__10JUTNameTabCFUs(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* 80BF57D8-80BF5814 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__13daObjGWall2_cFv */ -void daObjGWall2_c::initBaseMtx() { - // NONMATCHING -} - -/* 80BF5814-80BF5878 0000B4 0064+00 2/2 0/0 0/0 .text setBaseMtx__13daObjGWall2_cFv */ -void daObjGWall2_c::setBaseMtx() { - // NONMATCHING -} +#include "d/d_com_inf_game.h" /* ############################################################################################## */ /* 80BF610C-80BF616C 000000 0060+00 2/2 0/0 0/0 .rodata l_idx */ -SECTION_RODATA static u8 const l_idx[96] = { +static u8 const l_idx[24][4] = { 0x17, 0x05, 0x06, 0x01, 0x17, 0x05, 0x06, 0x02, 0x17, 0x05, 0x06, 0x03, 0x17, 0x05, 0x06, 0x04, 0x17, 0x05, 0x06, 0x05, 0x05, 0x06, 0x01, 0x00, 0x06, 0x0B, 0x05, 0x00, 0x06, 0x0B, 0x05, 0x01, 0x06, 0x0B, 0x05, 0x02, 0x06, 0x0B, 0x05, 0x03, 0x06, 0x0B, 0x05, 0x04, 0x0B, 0x11, 0x06, 0x00, @@ -93,12 +16,9 @@ SECTION_RODATA static u8 const l_idx[96] = { 0x0B, 0x11, 0x06, 0x05, 0x11, 0x13, 0x02, 0x00, 0x11, 0x13, 0x02, 0x01, 0x13, 0x17, 0x04, 0x00, 0x13, 0x17, 0x04, 0x01, 0x13, 0x17, 0x04, 0x02, 0x13, 0x17, 0x04, 0x03, 0x17, 0x05, 0x06, 0x00, }; -COMPILER_STRIP_GATE(0x80BF610C, &l_idx); /* 80BF616C-80BF61CC 000060 0060+00 0/1 0/0 0/0 .rodata l_color */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_color[96] = { +static const GXColor l_color[24] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x64, 0x32, 0xFF, @@ -106,204 +26,190 @@ SECTION_RODATA static u8 const l_color[96] = { 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x64, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x78, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xB4, 0xB4, 0xFF, }; -COMPILER_STRIP_GATE(0x80BF616C, &l_color); -#pragma pop - -/* 80BF61CC-80BF61D0 0000C0 0004+00 0/1 0/0 0/0 .rodata @3670 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3670[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BF61CC, &lit_3670); -#pragma pop - -/* 80BF61D0-80BF61D4 0000C4 0004+00 0/1 0/0 0/0 .rodata @3671 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3671 = 800.0f; -COMPILER_STRIP_GATE(0x80BF61D0, &lit_3671); -#pragma pop - -/* 80BF61D4-80BF61D8 0000C8 0004+00 0/1 0/0 0/0 .rodata @3672 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3672 = -10372.5f; -COMPILER_STRIP_GATE(0x80BF61D4, &lit_3672); -#pragma pop - -/* 80BF61FC-80BF61FC 0000F0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BF61FC = "V_CTGWall"; -SECTION_DEAD static char const* const stringBase_80BF6206 = "mat00"; -#pragma pop /* 80BF620C-80BF6210 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_ganonwall2__stringBase0; +static char* l_arcName = "V_CTGWall"; /* 80BF6210-80BF6214 -00001 0004+00 1/1 0/0 0/0 .data l_matName */ -SECTION_DATA static void* l_matName = (void*)(((char*)&d_a_obj_ganonwall2__stringBase0) + 0xA); +static char* l_matName = "mat00"; + +/* 80BF57D8-80BF5814 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__13daObjGWall2_cFv */ +void daObjGWall2_c::initBaseMtx() { + mpModel->setBaseScale(scale); + setBaseMtx(); +} + +/* 80BF5814-80BF5878 0000B4 0064+00 2/2 0/0 0/0 .text setBaseMtx__13daObjGWall2_cFv */ +void daObjGWall2_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(this->shape_angle.y); + MTXCopy(mDoMtx_stack_c::get(), mpModel->mBaseTransformMtx); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); +} /* 80BF5878-80BF5950 000118 00D8+00 1/0 0/0 0/0 .text Create__13daObjGWall2_cFv */ -void daObjGWall2_c::Create() { - // NONMATCHING +int daObjGWall2_c::Create() { + initBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + // cullSizeFar = 1000000.f; + mMatIdx = 0xffff; + JUTNameTab* name_table = mpModel->getModelData()->getMaterialTable().getMaterialName(); + for (u16 i = 0; i < mpModel->getModelData()->getMaterialTable().getMaterialNum(); i++) { + if (strcmp(name_table->getName(i), l_matName) == 0) { + mMatIdx = i; + } + } + mSePos.set(0.0f, 800.0f, -10372.5f); + return 1; } /* ############################################################################################## */ -/* 80BF61D8-80BF61DC 0000CC 0004+00 2/2 0/0 0/0 .rodata @3702 */ -SECTION_RODATA static f32 const lit_3702 = 1.0f; -COMPILER_STRIP_GATE(0x80BF61D8, &lit_3702); - -/* 80BF6214-80BF6234 -00001 0020+00 1/0 0/0 0/0 .data daObjGWall2_METHODS */ -static actor_method_class daObjGWall2_METHODS = { - (process_method_func)daObjGWall2_create1st__FP13daObjGWall2_c, - (process_method_func)daObjGWall2_MoveBGDelete__FP13daObjGWall2_c, - (process_method_func)daObjGWall2_MoveBGExecute__FP13daObjGWall2_c, - 0, - (process_method_func)daObjGWall2_MoveBGDraw__FP13daObjGWall2_c, -}; - -/* 80BF6234-80BF6264 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GanonWall2 */ -extern actor_process_profile_definition g_profile_Obj_GanonWall2 = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_GanonWall2, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjGWall2_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 580, // mPriority - &daObjGWall2_METHODS, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80BF6264-80BF6270 000058 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, -}; - /* 80BF5950-80BF5A6C 0001F0 011C+00 1/0 0/0 0/0 .text CreateHeap__13daObjGWall2_cFv */ -void daObjGWall2_c::CreateHeap() { - // NONMATCHING -} - -/* 80BF5A6C-80BF5AB4 00030C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING +int daObjGWall2_c::CreateHeap() { + J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 5); + mpModel = mDoExt_J3DModel__create(model_data, 0, 0x11000284); + if (mpModel == NULL) { + return 0; + } + J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 8); + mpBtkAnm = new mDoExt_btkAnm(); + if (mpBtkAnm == NULL || + mpBtkAnm->init(model_data, btk, 1, 2, 1.0f, 0, -1) == 0) + { + return 0; + } + return 1; } /* 80BF5AB4-80BF5B74 000354 00C0+00 1/1 0/0 0/0 .text create1st__13daObjGWall2_cFv */ -void daObjGWall2_c::create1st() { - // NONMATCHING +int daObjGWall2_c::create1st() { + if (getEventBit1() != 0x3FF && + dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[(u16)getEventBit1()]) != 0) + { + return cPhs_ERROR_e; + } + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&mPhaseReq, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + phase = (cPhs__Step)MoveBGCreate(l_arcName, 11, NULL, 0x6100, NULL); + if (phase == cPhs_ERROR_e) { + return phase; + } + } + return phase; } /* ############################################################################################## */ -/* 80BF61DC-80BF61E0 0000D0 0004+00 1/1 0/0 0/0 .rodata @3737 */ -SECTION_RODATA static f32 const lit_3737 = -1.0f; -COMPILER_STRIP_GATE(0x80BF61DC, &lit_3737); - /* 80BF5B74-80BF5C0C 000414 0098+00 1/0 0/0 0/0 .text Execute__13daObjGWall2_cFPPA3_A4_f */ -void daObjGWall2_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING +int daObjGWall2_c::Execute(Mtx** i_bgMtx) { + mpBtkAnm->play(); + *i_bgMtx = &mBgMtx; + setBaseMtx(); + mDoAud_seStartLevel(Z2SE_OBJ_HYRULE_BARRIER, &mSePos, 0, 0); + return 1; } /* ############################################################################################## */ -/* 80BF61E0-80BF61E4 0000D4 0004+00 0/1 0/0 0/0 .rodata @3827 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3827 = 1000.0f; -COMPILER_STRIP_GATE(0x80BF61E0, &lit_3827); -#pragma pop - -/* 80BF61E4-80BF61E8 0000D8 0004+00 0/1 0/0 0/0 .rodata @3828 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3828 = 250000.0f; -COMPILER_STRIP_GATE(0x80BF61E4, &lit_3828); -#pragma pop - -/* 80BF61E8-80BF61EC 0000DC 0004+00 0/1 0/0 0/0 .rodata @3829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3829 = 60.0f; -COMPILER_STRIP_GATE(0x80BF61E8, &lit_3829); -#pragma pop - -/* 80BF61EC-80BF61F4 0000E0 0008+00 0/1 0/0 0/0 .rodata @3831 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3831[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BF61EC, &lit_3831); -#pragma pop - -/* 80BF61F4-80BF61FC 0000E8 0008+00 0/1 0/0 0/0 .rodata @3833 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3833[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BF61F4, &lit_3833); -#pragma pop - /* 80BF5C0C-80BF6004 0004AC 03F8+00 1/0 0/0 0/0 .text Draw__13daObjGWall2_cFv */ -void daObjGWall2_c::Draw() { - // NONMATCHING +int daObjGWall2_c::Draw() { + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + for (u16 i = 0; i < mpModel->getModelData()->getMaterialTable().getMaterialNum(); i++) { + J3DMaterial* mat = mpModel->getModelData()->getMaterialTable().getMaterialNodePointer(i); + J3DFog* fog = mat->getPEBlock()->getFog(); + if (fog != NULL) { + fog = mat->getPEBlock()->getFog(); + J3DFogInfo* fog_info = fog->getFogInfo(); + fog_info->mColor.r = 0; + fog_info->mColor.g = 0; + fog_info->mColor.b = 0; + fog_info->mStartZ = 1000.0f; + fog_info->mEndZ = 250000.0f; + } + } + + int hour = dKy_getdaytime_hour(); + f32 minute = dKy_getdaytime_minute(); + J3DGXColor* mat_tev_k_color = + mpModel->getModelData()->getMaterialTable().getMaterialNodePointer(mMatIdx)->getTevKColor(1); + int idx1 = l_idx[hour][0]; + int idx2 = l_idx[hour][1]; + mat_tev_k_color->r = (l_color[idx1].r + + (l_color[idx2].r - l_color[idx1].r) * + ((minute + l_idx[hour][3] * 60.0f) / ((l_idx[hour][2] + 1) * 60.0f))); + mat_tev_k_color->g = (l_color[idx1].g + + (l_color[idx2].g - l_color[idx1].g) * + ((minute + l_idx[hour][3] * 60.0f) / ((l_idx[hour][2] + 1) * 60.0f))); + mat_tev_k_color->b = (l_color[idx1].b + + (l_color[idx2].b - l_color[idx1].b) * + ((minute + l_idx[hour][3] * 60.0f) / ((l_idx[hour][2] + 1) * 60.0f))); + mat_tev_k_color->a = (l_color[idx1].a + + (l_color[idx2].r - l_color[idx1].a) * + ((minute + l_idx[hour][3] * 60.0f) / ((l_idx[hour][2] + 1) * 60.0f))); + + dComIfGd_setListBG(); + mpBtkAnm->entry(mpModel->getModelData()); + mDoExt_modelUpdateDL(mpModel); + mDoExt_btkAnmRemove(mpModel->getModelData()); + dComIfGd_setList(); + return 1; } /* 80BF6004-80BF6038 0008A4 0034+00 1/0 0/0 0/0 .text Delete__13daObjGWall2_cFv */ -void daObjGWall2_c::Delete() { - // NONMATCHING +int daObjGWall2_c::Delete() { + dComIfG_resDelete(&mPhaseReq, l_arcName); + return 1; } /* ############################################################################################## */ -/* 80BF6270-80BF6298 000064 0028+00 1/1 0/0 0/0 .data __vt__13daObjGWall2_c */ -SECTION_DATA extern void* __vt__13daObjGWall2_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daObjGWall2_cFv, - (void*)Create__13daObjGWall2_cFv, - (void*)Execute__13daObjGWall2_cFPPA3_A4_f, - (void*)Draw__13daObjGWall2_cFv, - (void*)Delete__13daObjGWall2_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - /* 80BF6038-80BF6098 0008D8 0060+00 1/0 0/0 0/0 .text daObjGWall2_create1st__FP13daObjGWall2_c */ -static void daObjGWall2_create1st(daObjGWall2_c* param_0) { - // NONMATCHING +static int daObjGWall2_create1st(daObjGWall2_c* i_this) { + fopAcM_SetupActor(i_this, daObjGWall2_c); + return i_this->create1st(); } /* 80BF6098-80BF60B8 000938 0020+00 1/0 0/0 0/0 .text daObjGWall2_MoveBGDelete__FP13daObjGWall2_c */ -static void daObjGWall2_MoveBGDelete(daObjGWall2_c* param_0) { - // NONMATCHING +static int daObjGWall2_MoveBGDelete(daObjGWall2_c* i_this) { + return i_this->MoveBGDelete(); } /* 80BF60B8-80BF60D8 000958 0020+00 1/0 0/0 0/0 .text daObjGWall2_MoveBGExecute__FP13daObjGWall2_c */ -static void daObjGWall2_MoveBGExecute(daObjGWall2_c* param_0) { - // NONMATCHING +static int daObjGWall2_MoveBGExecute(daObjGWall2_c* i_this) { + return i_this->MoveBGExecute(); } /* 80BF60D8-80BF6104 000978 002C+00 1/0 0/0 0/0 .text daObjGWall2_MoveBGDraw__FP13daObjGWall2_c */ -static void daObjGWall2_MoveBGDraw(daObjGWall2_c* param_0) { - // NONMATCHING +static int daObjGWall2_MoveBGDraw(daObjGWall2_c* i_this) { + return i_this->MoveBGDraw(); } -/* 80BF61FC-80BF61FC 0000F0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80BF6214-80BF6234 -00001 0020+00 1/0 0/0 0/0 .data daObjGWall2_METHODS */ +static actor_method_class daObjGWall2_METHODS = { + (process_method_func)daObjGWall2_create1st, + (process_method_func)daObjGWall2_MoveBGDelete, + (process_method_func)daObjGWall2_MoveBGExecute, + 0, + (process_method_func)daObjGWall2_MoveBGDraw, +}; + +/* 80BF6234-80BF6264 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GanonWall2 */ +extern actor_process_profile_definition g_profile_Obj_GanonWall2 = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_GanonWall2, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjGWall2_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 580, // mPriority + &daObjGWall2_METHODS, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};