diff options
| author | YunataSavior <58997725+YunataSavior@users.noreply.github.com> | 2025-02-03 00:30:40 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-03 10:30:40 +0200 |
| commit | 34b21412c4d62ad498d6dbe085a95ba308cf0c15 (patch) | |
| tree | 7792480fdccf257c5faa570174721ca0671c507a /src/d/actor/d_a_obj_TvCdlst.cpp | |
| parent | ca3e9008357a096ed184343566c99b248520f827 (diff) | |
d_a_obj_TvCdlst matching (#2292)
* d_a_obj_TvCdlst matching
* d_a_obj_kwheel00, 01, & d_a_obj_klift00 Equivalent (weak func and/or vtable order) (#2291)
* d_a_obj_kwheel00, 01, & d_a_obj_klift00 Equivalent (weak func and/or vtable order)
* Three rels equivalent
* Basic documentation for the three rels
* Define explicit constructor for dMdl_obj_c (needed for proper array creation in d_a_obj_klift00)
* Modify d_a_obj_bky_rock to account for new explicit constructor of dMdl_obj_c
* Specify weak func and/or vtable orders for rels in config.py
* Cleanup includes and dol2asm artifacts
* * Fix debug build
* Restore incorrectly removed l_bmdidx
* Fix US retail equivalency
* d_a_obj_Turara equivalent (#2289)
* Initial d_a_obj_Turara work
* More d_a_obj_Turara work
* d_a_obj_Turara equivalent except for weak func order of dEvLib_callback_c dtor
* Updates to d_a_obj_Turara after feedback from Taka
* b_dre equivalent (#2290)
* Update d_a_obj_Turara to remove unnecessary comment based on hatal\'s request
---------
Co-authored-by: TakaRikka <38417346+TakaRikka@users.noreply.github.com>
* Fix spurious differences when using `ninja diff` (#2294)
* Fix spurious differences when using ninja diff
* Fix some clangd errors/warnings
* d_a_obj_waterGate matching + d_a_obj_lv3Water2 equivalent (#2293)
* d_a_obj_waterGate matching + d_a_obj_lv3Water2 equivalent
* Add simpleCalcMaterial implicit inline to J3DModelData (seen in debug)
* Basic documentation for both actors
* WIP debug build implementations (note TODOs)
* Update configure.py and note weak ordering issues for lv3Water2
* Actually add modified J3DModelData.h & explicitly note fake padding
* Add fopAcM_Register... macros (for debug build) (#2295)
* Update d_a_obj_Tvcdlst to use LIGHT_INFLUENCE after Taka gave feedback
---------
Co-authored-by: Huitzi <73550465+marwernerh@users.noreply.github.com>
Co-authored-by: TakaRikka <38417346+TakaRikka@users.noreply.github.com>
Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
Diffstat (limited to 'src/d/actor/d_a_obj_TvCdlst.cpp')
| -rw-r--r-- | src/d/actor/d_a_obj_TvCdlst.cpp | 506 |
1 files changed, 189 insertions, 317 deletions
diff --git a/src/d/actor/d_a_obj_TvCdlst.cpp b/src/d/actor/d_a_obj_TvCdlst.cpp index 6cd928758f..2858ca96d1 100644 --- a/src/d/actor/d_a_obj_TvCdlst.cpp +++ b/src/d/actor/d_a_obj_TvCdlst.cpp @@ -5,393 +5,265 @@ #include "d/actor/d_a_obj_TvCdlst.h" #include "dol2asm.h" - - - -// -// Forward References: -// - -extern "C" void __ct__15daTvCdlst_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__11daTvCdlst_cFv(); -extern "C" void CreateHeap__11daTvCdlst_cFv(); -extern "C" void create__11daTvCdlst_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void createHeapCallBack__11daTvCdlst_cFP10fopAc_ac_c(); -extern "C" void lightInit__11daTvCdlst_cFv(); -extern "C" void setLight__11daTvCdlst_cFv(); -extern "C" void cutLight__11daTvCdlst_cFv(); -extern "C" void pointLightProc__11daTvCdlst_cFv(); -extern "C" void Execute__11daTvCdlst_cFv(); -extern "C" void Draw__11daTvCdlst_cFv(); -extern "C" void Delete__11daTvCdlst_cFv(); -extern "C" static void daTvCdlst_Draw__FP11daTvCdlst_c(); -extern "C" static void daTvCdlst_Execute__FP11daTvCdlst_c(); -extern "C" static void daTvCdlst_Delete__FP11daTvCdlst_c(); -extern "C" static void daTvCdlst_Create__FP10fopAc_ac_c(); -extern "C" void __dt__15daTvCdlst_HIO_cFv(); -extern "C" void __sinit_d_a_obj_TvCdlst_cpp(); -extern "C" u8 const mCcDObjInfo__11daTvCdlst_c[48]; -extern "C" extern char const* const d_a_obj_TvCdlst__stringBase0; -extern "C" u8 mCcDCyl__11daTvCdlst_c[68]; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -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_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 isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void setSimple__13dPa_control_cFUsPC4cXyzPC12dKy_tevstr_cUcRC8_GXColorRC8_GXColorif(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObjSe__12dCcD_GObjInfFv(); -extern "C" void getHitSeID__12dCcD_GObjInfFUci(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_plight_set__FP15LIGHT_INFLUENCE(); -extern "C" void dKy_plight_cut__FP15LIGHT_INFLUENCE(); -extern "C" void dKy_BossLight_set__FP4cXyzP8_GXColorfUc(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u32 g_whiteColor; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); +#include "include/d/d_com_inf_game.h" // // Declarations: // +/* 80B9F9DC-80B9F9E4 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */ +static daTvCdlst_HIO_c l_HIO; + /* ############################################################################################## */ /* 80B9F900-80B9F944 000000 0044+00 2/2 0/0 0/0 .data mCcDCyl__11daTvCdlst_c */ -SECTION_DATA u8 daTvCdlst_c::mCcDCyl[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80B9F944-80B9F964 -00001 0020+00 1/0 0/0 0/0 .data l_daTvCdlst_Method */ -static actor_method_class l_daTvCdlst_Method = { - (process_method_func)daTvCdlst_Create__FP10fopAc_ac_c, - (process_method_func)daTvCdlst_Delete__FP11daTvCdlst_c, - (process_method_func)daTvCdlst_Execute__FP11daTvCdlst_c, - 0, - (process_method_func)daTvCdlst_Draw__FP11daTvCdlst_c, -}; - -/* 80B9F964-80B9F994 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TvCdlst */ -extern actor_process_profile_definition g_profile_Obj_TvCdlst = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_TvCdlst, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daTvCdlst_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 496, // mPriority - &l_daTvCdlst_Method, // sub_method - 0x00044000, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80B9F994-80B9F9A0 000094 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80B9F9A0-80B9F9AC 0000A0 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, -}; - -/* 80B9F9AC-80B9F9B8 0000AC 000C+00 2/2 0/0 0/0 .data __vt__15daTvCdlst_HIO_c */ -SECTION_DATA extern void* __vt__15daTvCdlst_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daTvCdlst_HIO_cFv, -}; - -/* 80B9F9B8-80B9F9C4 0000B8 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, +dCcD_SrcCyl daTvCdlst_c::mCcDCyl = { + daTvCdlst_c::mCcDObjInfo, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 0.0f, // mRadius + 0.0f // mHeight + } // mCyl }; /* 80B9ECCC-80B9ECF8 0000EC 002C+00 1/1 0/0 0/0 .text __ct__15daTvCdlst_HIO_cFv */ daTvCdlst_HIO_c::daTvCdlst_HIO_c() { - // NONMATCHING -} - -/* 80B9ECF8-80B9ED40 000118 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING + field_0x4 = 0x3c; + field_0x5 = 1; } /* 80B9ED40-80B9EDC8 000160 0088+00 2/2 0/0 0/0 .text setBaseMtx__11daTvCdlst_cFv */ void daTvCdlst_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(current.angle.x, current.angle.y, current.angle.z); + mpModel->setBaseScale(scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); } -/* ############################################################################################## */ -/* 80B9F8F4-80B9F8F4 000064 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80B9F8F4 = "HShokudai"; -#pragma pop - /* 80B9EDC8-80B9EE34 0001E8 006C+00 1/1 0/0 0/0 .text CreateHeap__11daTvCdlst_cFv */ -void daTvCdlst_c::CreateHeap() { - // NONMATCHING +int daTvCdlst_c::CreateHeap() { + J3DModelData* pModelData = (J3DModelData*) dComIfG_getObjectRes("HShokudai", 3); + JUT_ASSERT(222, pModelData != NULL); + mpModel = mDoExt_J3DModel__create(pModelData, 0x80000,0x11000084); + if (mpModel == NULL) + return 0; + return 1; } /* ############################################################################################## */ /* 80B9F890-80B9F8C0 000000 0030+00 4/4 0/0 0/0 .rodata mCcDObjInfo__11daTvCdlst_c */ -SECTION_RODATA u8 const daTvCdlst_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xD8, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +const dCcD_SrcGObjInf daTvCdlst_c::mCcDObjInfo = { + {0, // mFlags + { + {0x0, 0x0, 0x0}, // mObjAt + {0xD8FBFFFF, 0x1F}, // mObjTg + {0x79} // mObjCo + } // mSrcObjHitInf + }, // mObj + {1, 0, 0, 0, 0}, // mGObjAt + {0xA, 0, 0, 0, 0}, // mGObjTg + {0} // mGObjCo }; -COMPILER_STRIP_GATE(0x80B9F890, &daTvCdlst_c::mCcDObjInfo); - -/* 80B9F8C0-80B9F8C4 000030 0004+00 1/1 0/0 0/0 .rodata @3750 */ -SECTION_RODATA static f32 const lit_3750 = 155.0f; -COMPILER_STRIP_GATE(0x80B9F8C0, &lit_3750); /* 80B9EE34-80B9F0B4 000254 0280+00 1/1 0/0 0/0 .text create__11daTvCdlst_cFv */ -void daTvCdlst_c::create() { - // NONMATCHING -} - -/* 80B9F0B4-80B9F0FC 0004D4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80B9F0FC-80B9F144 00051C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING +int daTvCdlst_c::create() { + fopAcM_SetupActor(this, daTvCdlst_c); + int phase = dComIfG_resLoad(&mPhaseReq,"HShokudai"); + if (phase == cPhs_COMPLEATE_e) { + if (fopAcM_entrySolidHeap(this,createHeapCallBack,0x820) == 0) { + return cPhs_ERROR_e; + } + setBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + field_0x6ec.x = current.pos.x; + field_0x6ec.y = current.pos.y + 155.0f; + field_0x6ec.z = current.pos.z; + mLightType = getLightType(); + if (mLightType == 0xff) { + mLightType = 0; + } + lightInit(); + eyePos = field_0x6ec; + mOnSw = getOnSw(); + mOffSw = getOffSw(); + mIsOn = fopAcM_isSwitch(this, mOnSw); + mIsOff = fopAcM_isSwitch(this, mOffSw); + mDoIgnite = 0; + field_0x6f8 = 0; + if (mIsOn && mIsOff == 0) { + field_0x6f8 = 1; + mDoIgnite = 0; + setLight(); + } + mStts.Init(0xff, 0xff, this); + mCyl.Set(mCcDCyl); + mCyl.SetStts(&mStts); + mSound.init(¤t.pos, 1); + // FIXME: Need mDoHIO_entry_c::entryHIO + } + return phase; } /* 80B9F144-80B9F164 000564 0020+00 1/1 0/0 0/0 .text * createHeapCallBack__11daTvCdlst_cFP10fopAc_ac_c */ -void daTvCdlst_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING +int daTvCdlst_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast<daTvCdlst_c*>(i_this)->CreateHeap(); } -/* ############################################################################################## */ -/* 80B9F8C4-80B9F8C8 000034 0004+00 0/1 0/0 0/0 .rodata @3840 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3840 = 10.0f; -COMPILER_STRIP_GATE(0x80B9F8C4, &lit_3840); -#pragma pop - -/* 80B9F8C8-80B9F8CC 000038 0004+00 0/1 0/0 0/0 .rodata @3841 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3841 = 500.0f; -COMPILER_STRIP_GATE(0x80B9F8C8, &lit_3841); -#pragma pop - -/* 80B9F8CC-80B9F8D0 00003C 0004+00 0/3 0/0 0/0 .rodata @3842 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3842 = 1.0f; -COMPILER_STRIP_GATE(0x80B9F8CC, &lit_3842); -#pragma pop - -/* 80B9F8D0-80B9F8D4 000040 0004+00 0/3 0/0 0/0 .rodata @3843 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3843[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80B9F8D0, &lit_3843); -#pragma pop - /* 80B9F164-80B9F1F0 000584 008C+00 1/1 0/0 0/0 .text lightInit__11daTvCdlst_cFv */ void daTvCdlst_c::lightInit() { - // NONMATCHING + field_0x700 = field_0x6ec; + field_0x700.y += 10.0f; + if (mLightType) { + mLight.mPosition = field_0x700; + mLight.mColor.r = 0xbc; + mLight.mColor.g = 0x66; + mLight.mColor.b = 0x42; + mLight.mPow = 500.0f; + mLight.mFluctuation = 1.0f; + return; + } + field_0x710 = 0.0f; } /* 80B9F1F0-80B9F220 000610 0030+00 2/2 0/0 0/0 .text setLight__11daTvCdlst_cFv */ void daTvCdlst_c::setLight() { - // NONMATCHING + if (mLightType) { + dKy_plight_set(&mLight); + } } /* 80B9F220-80B9F250 000640 0030+00 1/1 0/0 0/0 .text cutLight__11daTvCdlst_cFv */ void daTvCdlst_c::cutLight() { - // NONMATCHING + if (mLightType) { + dKy_plight_cut(&mLight); + } } -/* ############################################################################################## */ -/* 80B9F8D4-80B9F8D8 000044 0004+00 0/1 0/0 0/0 .rodata @3861 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3861 = 0xBC6642FF; -COMPILER_STRIP_GATE(0x80B9F8D4, &lit_3861); -#pragma pop - -/* 80B9F8D8-80B9F8DC 000048 0004+00 0/1 0/0 0/0 .rodata @3869 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3869 = 0.5f; -COMPILER_STRIP_GATE(0x80B9F8D8, &lit_3869); -#pragma pop - -/* 80B9F8DC-80B9F8E0 00004C 0004+00 0/1 0/0 0/0 .rodata @3870 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3870 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80B9F8DC, &lit_3870); -#pragma pop - -/* 80B9F8E0-80B9F8E4 000050 0004+00 0/1 0/0 0/0 .rodata @3871 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3871 = 0x38D1B717; -COMPILER_STRIP_GATE(0x80B9F8E0, &lit_3871); -#pragma pop - -/* 80B9F8E4-80B9F8E8 000054 0004+00 0/1 0/0 0/0 .rodata @3872 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3872 = 0x358637BD; -COMPILER_STRIP_GATE(0x80B9F8E4, &lit_3872); -#pragma pop - /* 80B9F250-80B9F300 000670 00B0+00 1/1 0/0 0/0 .text pointLightProc__11daTvCdlst_cFv */ void daTvCdlst_c::pointLightProc() { - // NONMATCHING + if (mLightType == 0) { + GXColor color = {0xbc, 0x66, 0x42, 0xff}; + if (field_0x6f8 != 0) { + cLib_addCalc(&field_0x710, 1.0f, 0.5f, 0.1f, 0.0001f); + } else { + cLib_addCalc(&field_0x710, 0.0f, 0.5f, 0.1f, 0.0001f); + } + if (field_0x710 >= 1e-06f) { + dKy_BossLight_set(&field_0x700, &color, field_0x710, 0); + } + } } -/* ############################################################################################## */ -/* 80B9F8E8-80B9F8EC 000058 0004+00 0/1 0/0 0/0 .rodata @3937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3937 = -1.0f; -COMPILER_STRIP_GATE(0x80B9F8E8, &lit_3937); -#pragma pop - -/* 80B9F8EC-80B9F8F0 00005C 0004+00 0/1 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3938 = 25.0f; -COMPILER_STRIP_GATE(0x80B9F8EC, &lit_3938); -#pragma pop - -/* 80B9F8F0-80B9F8F4 000060 0004+00 0/1 0/0 0/0 .rodata @3939 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3939 = 140.0f; -COMPILER_STRIP_GATE(0x80B9F8F0, &lit_3939); -#pragma pop - /* 80B9F300-80B9F634 000720 0334+00 1/1 0/0 0/0 .text Execute__11daTvCdlst_cFv */ -void daTvCdlst_c::Execute() { - // NONMATCHING +int daTvCdlst_c::Execute() { + mIsOn = fopAcM_isSwitch(this, mOnSw); + mIsOff = fopAcM_isSwitch(this, mOffSw); + if (mIsOn && mIsOff == 0 && field_0x6f8 == 0) { + field_0x6f8 = 1; + mDoIgnite = 1; + setLight(); + } + if ((mIsOn == 0 && mIsOff == 0 || mIsOff) && field_0x6f8 == 1) { + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStart(Z2SE_OBJ_FIRE_OFF, &field_0x6ec, 0, dComIfGp_getReverb(roomNo)); + field_0x6f8 = 0; + cutLight(); + } + if (field_0x6f8) { + dComIfGp_particle_setSimple(0x100, &field_0x6ec, 0xff, g_whiteColor, g_whiteColor, 0, 0.0f); + dComIfGp_particle_setSimple(0x101, &field_0x6ec, 0xff, g_whiteColor, g_whiteColor, 0, 0.0f); + dComIfGp_particle_setSimple(0x103, &field_0x6ec, 0xff, g_whiteColor, g_whiteColor, 0, 0.0f); + if (mDoIgnite) { + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &field_0x6ec, 0, dComIfGp_getReverb(roomNo)); + mDoIgnite = 0; + } else { + s8 roomNo = fopAcM_GetRoomNo(this); + mDoAud_seStartLevel(Z2SE_OBJ_FIRE_BURNING, &field_0x6ec, 0, dComIfGp_getReverb(roomNo)); + } + } + setBaseMtx(); + if (mCyl.ChkTgHit() && mCyl.GetTgHitObj()) { + mSound.startCollisionSE(mCyl.GetTgHitObjHitSeID(1), 5, NULL); + } + s8 roomNo = fopAcM_GetRoomNo(this); + mSound.framework(0, dComIfGp_getReverb(roomNo)); + mCyl.SetR(25.0f); + mCyl.SetH(140.0f); + mCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCyl); + pointLightProc(); + return 1; } /* 80B9F634-80B9F6D8 000A54 00A4+00 1/1 0/0 0/0 .text Draw__11daTvCdlst_cFv */ -void daTvCdlst_c::Draw() { - // NONMATCHING +int daTvCdlst_c::Draw() { + g_env_light.settingTevStruct(0x40, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; } /* 80B9F6D8-80B9F730 000AF8 0058+00 1/1 0/0 0/0 .text Delete__11daTvCdlst_cFv */ -void daTvCdlst_c::Delete() { - // NONMATCHING +int daTvCdlst_c::Delete() { + mSound.deleteObject(); + dComIfG_resDelete(&mPhaseReq, "HShokudai"); + if (mLightType) { + dKy_plight_cut(&mLight); + } + return 1; } /* 80B9F730-80B9F750 000B50 0020+00 1/0 0/0 0/0 .text daTvCdlst_Draw__FP11daTvCdlst_c */ -static void daTvCdlst_Draw(daTvCdlst_c* param_0) { - // NONMATCHING +static int daTvCdlst_Draw(daTvCdlst_c* i_this) { + return i_this->Draw(); } /* 80B9F750-80B9F770 000B70 0020+00 1/0 0/0 0/0 .text daTvCdlst_Execute__FP11daTvCdlst_c */ -static void daTvCdlst_Execute(daTvCdlst_c* param_0) { - // NONMATCHING +static int daTvCdlst_Execute(daTvCdlst_c* i_this) { + return i_this->Execute(); } /* 80B9F770-80B9F790 000B90 0020+00 1/0 0/0 0/0 .text daTvCdlst_Delete__FP11daTvCdlst_c */ -static void daTvCdlst_Delete(daTvCdlst_c* param_0) { - // NONMATCHING +static int daTvCdlst_Delete(daTvCdlst_c* i_this) { + return i_this->Delete(); } /* 80B9F790-80B9F7B0 000BB0 0020+00 1/0 0/0 0/0 .text daTvCdlst_Create__FP10fopAc_ac_c */ -static void daTvCdlst_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80B9F7B0-80B9F80C 000BD0 005C+00 2/1 0/0 0/0 .text __dt__15daTvCdlst_HIO_cFv */ -daTvCdlst_HIO_c::~daTvCdlst_HIO_c() { - // NONMATCHING +static int daTvCdlst_Create(fopAc_ac_c* i_this) { + return static_cast<daTvCdlst_c*>(i_this)->create(); } -/* ############################################################################################## */ -/* 80B9F9D0-80B9F9DC 000008 000C+00 1/1 0/0 0/0 .bss @3622 */ -static u8 lit_3622[12]; - -/* 80B9F9DC-80B9F9E4 000014 0008+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[8]; - -/* 80B9F80C-80B9F87C 000C2C 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_TvCdlst_cpp */ -void __sinit_d_a_obj_TvCdlst_cpp() { - // NONMATCHING -} +/* 80B9F944-80B9F964 -00001 0020+00 1/0 0/0 0/0 .data l_daTvCdlst_Method */ +static actor_method_class l_daTvCdlst_Method = { + (process_method_func)daTvCdlst_Create, + (process_method_func)daTvCdlst_Delete, + (process_method_func)daTvCdlst_Execute, + 0, + (process_method_func)daTvCdlst_Draw, +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80B9F80C, __sinit_d_a_obj_TvCdlst_cpp); -#pragma pop +/* 80B9F964-80B9F994 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TvCdlst */ +extern actor_process_profile_definition g_profile_Obj_TvCdlst = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_TvCdlst, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daTvCdlst_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 496, // mPriority + &l_daTvCdlst_Method, // sub_method + 0x00044000, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; /* 80B9F8F4-80B9F8F4 000064 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ |
