summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_TvCdlst.cpp
diff options
context:
space:
mode:
authorYunataSavior <58997725+YunataSavior@users.noreply.github.com>2025-02-03 00:30:40 -0800
committerGitHub <noreply@github.com>2025-02-03 10:30:40 +0200
commit34b21412c4d62ad498d6dbe085a95ba308cf0c15 (patch)
tree7792480fdccf257c5faa570174721ca0671c507a /src/d/actor/d_a_obj_TvCdlst.cpp
parentca3e9008357a096ed184343566c99b248520f827 (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.cpp506
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(&current.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, &current.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 */