diff --git a/include/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.h b/include/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.h index e736336bd0e..eea9d27198d 100644 --- a/include/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.h +++ b/include/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.h @@ -1,6 +1,31 @@ #ifndef D_A_TAG_LANTERN_H #define D_A_TAG_LANTERN_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" +#include "d/com/d_com_inf_game.h" +class daTag_Lantern_c : public fopAc_ac_c { +public: + /* 8048ED28 */ int create(); + /* 8048EDA8 */ int Delete(); + /* 8048EDDC */ int Execute(); + /* 8048EF6C */ int Draw(); + /* 8048EF74 */ void initialize(); + + /* 0x568 */ dMsgFlow_c field_0x568; + /* 0x5B4 */ cBgS_GndChk field_0x5b4; + /* 0x5F0 */ u32 field_0x5f0; + /* 0x5F4 */ f32 field_0x5f4; + /* 0x5F8 */ s32 field_0x5f8; + /* 0x5FC */ u32 field_0x5fc; + /* 0x600 */ s32 field_0x600; + /* 0x604 */ u8 field_0x604; + + /* 8048ECAC */ virtual ~daTag_Lantern_c(); +}; // Size: 0x60C + +class daTag_Lantern_Param_c { +public: + /* 8048F0EC */ inline virtual ~daTag_Lantern_Param_c() {} +}; #endif /* D_A_TAG_LANTERN_H */ diff --git a/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.cpp b/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.cpp index 08bc7efd4d5..5d2443d9360 100644 --- a/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.cpp +++ b/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.cpp @@ -1,298 +1,145 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_tag_lantern -// +/** + * d_a_tag_lantern.cpp + * Tag - Lantern + */ #include "rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daTag_Lantern_c { - /* 8048ECAC */ ~daTag_Lantern_c(); - /* 8048ED28 */ void create(); - /* 8048EDA8 */ void Delete(); - /* 8048EDDC */ void Execute(); - /* 8048EF6C */ bool Draw(); - /* 8048EF74 */ void initialize(); -}; - -struct daTag_Lantern_Param_c { - /* 8048F0EC */ ~daTag_Lantern_Param_c(); -}; - -struct dMsgFlow_c { - /* 80249F00 */ dMsgFlow_c(); - /* 80249F48 */ ~dMsgFlow_c(); - /* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**); - /* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int); -}; - -struct dEvt_control_c { - /* 80042468 */ void reset(); -}; - -struct cBgS_PolyInfo {}; - -struct dBgS { - /* 80074BE8 */ void GetPolyColor(cBgS_PolyInfo const&); - /* 80075100 */ void GetRoomId(cBgS_PolyInfo const&); -}; - -struct cXyz {}; - -struct cBgS_GndChk { - /* 80267C1C */ cBgS_GndChk(); - /* 80267C94 */ ~cBgS_GndChk(); - /* 80267D28 */ void SetPos(cXyz const*); -}; - -struct cBgS { - /* 800744A0 */ void GroundCross(cBgS_GndChk*); -}; - -// -// Forward References: -// - -extern "C" void __dt__15daTag_Lantern_cFv(); -extern "C" void create__15daTag_Lantern_cFv(); -extern "C" void Delete__15daTag_Lantern_cFv(); -extern "C" void Execute__15daTag_Lantern_cFv(); -extern "C" bool Draw__15daTag_Lantern_cFv(); -extern "C" void initialize__15daTag_Lantern_cFv(); -extern "C" static void daTag_Lantern_Create__FPv(); -extern "C" static void daTag_Lantern_Delete__FPv(); -extern "C" static void daTag_Lantern_Execute__FPv(); -extern "C" static void daTag_Lantern_Draw__FPv(); -extern "C" static bool daTag_Lantern_IsDelete__FPv(); -extern "C" void __sinit_d_a_tag_lantern_cpp(); -extern "C" void __dt__21daTag_Lantern_Param_cFv(); - -// -// External References: -// - -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void __ct__11cBgS_GndChkFv(); -extern "C" void __dt__11cBgS_GndChkFv(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 mStayNo__20dStage_roomControl_c[4]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 8048F154-8048F174 -00001 0020+00 1/0 0/0 0/0 .data daTag_Lantern_MethodTable */ -SECTION_DATA static void* daTag_Lantern_MethodTable[8] = { - (void*)daTag_Lantern_Create__FPv, - (void*)daTag_Lantern_Delete__FPv, - (void*)daTag_Lantern_Execute__FPv, - (void*)daTag_Lantern_IsDelete__FPv, - (void*)daTag_Lantern_Draw__FPv, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - -/* 8048F174-8048F1A4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_LANTERN */ -SECTION_DATA extern void* g_profile_TAG_LANTERN[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x02D60000, (void*)&g_fpcLf_Method, - (void*)0x0000060C, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x011E0000, (void*)&daTag_Lantern_MethodTable, - (void*)0x00040000, (void*)0x000E0000, -}; - -/* 8048F1A4-8048F1B0 000050 000C+00 2/2 0/0 0/0 .data __vt__15daTag_Lantern_c */ -SECTION_DATA extern void* __vt__15daTag_Lantern_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daTag_Lantern_cFv, -}; /* 8048ECAC-8048ED28 0000EC 007C+00 1/0 0/0 0/0 .text __dt__15daTag_Lantern_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daTag_Lantern_c::~daTag_Lantern_c() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/__dt__15daTag_Lantern_cFv.s" -} -#pragma pop +daTag_Lantern_c::~daTag_Lantern_c() {} /* 8048ED28-8048EDA8 000168 0080+00 1/1 0/0 0/0 .text create__15daTag_Lantern_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Lantern_c::create() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/create__15daTag_Lantern_cFv.s" +int daTag_Lantern_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daTag_Lantern_c(); + fopAcM_OnCondition(this, 8); + } + initialize(); + return cPhs_COMPLEATE_e; } -#pragma pop /* 8048EDA8-8048EDDC 0001E8 0034+00 1/1 0/0 0/0 .text Delete__15daTag_Lantern_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Lantern_c::Delete() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/Delete__15daTag_Lantern_cFv.s" +int daTag_Lantern_c::Delete() { + this->~daTag_Lantern_c(); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 8048F148-8048F14C 000000 0004+00 1/1 0/0 0/0 .rodata @3683 */ -SECTION_RODATA static f32 const lit_3683 = -1000000000.0f; -COMPILER_STRIP_GATE(0x8048F148, &lit_3683); /* 8048EDDC-8048EF6C 00021C 0190+00 2/2 0/0 0/0 .text Execute__15daTag_Lantern_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Lantern_c::Execute() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/Execute__15daTag_Lantern_cFv.s" +int daTag_Lantern_c::Execute() { + s32 sVar; + dComIfG_play_c& play = g_dComIfG_gameInfo.getPlay(); + if (i_dComIfGp_event_runCheck()) { + if (mEvtInfo.mCommand == 1) { + if (!field_0x604) { + field_0x568.init(this, field_0x600, NULL, NULL); + field_0x604 += 1; + } else if (field_0x604 == 1 && field_0x568.doFlow(this, NULL, NULL)) { + play.getEvent().reset(); + field_0x604 = 0; + field_0x5f8 = 0; + } + } + } else { + if (field_0x5f8) { + mEvtInfo.mCondition |= 1; + fopAcM_orderSpeakEvent(this, 0, 0); + } + } + field_0x5b4.SetPos(¤t.pos); + field_0x5f4 = dComIfG_Bgsp().GroundCross(&field_0x5b4); + + if (field_0x5f4 != -1000000000.0f) { + sVar = dComIfG_Bgsp().GetRoomId(field_0x5b4); + mTevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(field_0x5b4); + } else { + sVar = dComIfGp_roomControl_getStayNo(); + } + mTevStr.mRoomNo = sVar; + fopAcM_SetRoomNo(this, mTevStr.mRoomNo); + mAttentionInfo.mFlags = 0; + mAttentionInfo.mPosition = current.pos; + mEyePos = mAttentionInfo.mPosition; + return 1; } -#pragma pop /* 8048EF6C-8048EF74 0003AC 0008+00 1/1 0/0 0/0 .text Draw__15daTag_Lantern_cFv */ -bool daTag_Lantern_c::Draw() { - return true; +int daTag_Lantern_c::Draw() { + return 1; } -/* ############################################################################################## */ -/* 8048F14C-8048F150 000004 0004+00 1/1 0/0 0/0 .rodata @3697 */ -SECTION_RODATA static u8 const lit_3697[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8048F14C, &lit_3697); - -/* 8048F150-8048F154 000008 0004+00 1/1 0/0 0/0 .rodata @3698 */ -SECTION_RODATA static f32 const lit_3698 = 100.0f; -COMPILER_STRIP_GATE(0x8048F150, &lit_3698); - /* 8048EF74-8048F024 0003B4 00B0+00 1/1 0/0 0/0 .text initialize__15daTag_Lantern_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Lantern_c::initialize() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/initialize__15daTag_Lantern_cFv.s" +void daTag_Lantern_c::initialize() { + fopAcM_setCullSizeBox(this, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); + if (orig.angle.z != 0xffff) { + field_0x600 = orig.angle.z; + } else { + field_0x600 = -1; + } + orig.angle.z = 0; + field_0x5fc = fopAcM_GetParam(this) & 0xfff; + mScale.x *= 100.0f; + mScale.y *= 100.0f; + mScale.z *= 100.0f; + Execute(); } -#pragma pop /* 8048F024-8048F044 000464 0020+00 1/0 0/0 0/0 .text daTag_Lantern_Create__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Lantern_Create(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/daTag_Lantern_Create__FPv.s" +static int daTag_Lantern_Create(void* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 8048F044-8048F064 000484 0020+00 1/0 0/0 0/0 .text daTag_Lantern_Delete__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Lantern_Delete(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/daTag_Lantern_Delete__FPv.s" +static int daTag_Lantern_Delete(void* i_this) { + return static_cast(i_this)->Delete(); } -#pragma pop /* 8048F064-8048F084 0004A4 0020+00 1/0 0/0 0/0 .text daTag_Lantern_Execute__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Lantern_Execute(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/daTag_Lantern_Execute__FPv.s" +static int daTag_Lantern_Execute(void* i_this) { + return static_cast(i_this)->Execute(); } -#pragma pop /* 8048F084-8048F0A4 0004C4 0020+00 1/0 0/0 0/0 .text daTag_Lantern_Draw__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Lantern_Draw(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/daTag_Lantern_Draw__FPv.s" +static int daTag_Lantern_Draw(void* i_this) { + return static_cast(i_this)->Draw(); } -#pragma pop /* 8048F0A4-8048F0AC 0004E4 0008+00 1/0 0/0 0/0 .text daTag_Lantern_IsDelete__FPv */ -static bool daTag_Lantern_IsDelete(void* param_0) { - return true; +static int daTag_Lantern_IsDelete(void* i_this) { + return 1; } -/* ############################################################################################## */ -/* 8048F1B0-8048F1BC 00005C 000C+00 2/2 0/0 0/0 .data __vt__21daTag_Lantern_Param_c */ -SECTION_DATA extern void* __vt__21daTag_Lantern_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__21daTag_Lantern_Param_cFv, -}; - /* 8048F1C8-8048F1D4 000008 000C+00 1/1 0/0 0/0 .bss @3622 */ static u8 lit_3622[12]; /* 8048F1D4-8048F1D8 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; +static daTag_Lantern_Param_c l_HIO; -/* 8048F0AC-8048F0EC 0004EC 0040+00 0/0 1/0 0/0 .text __sinit_d_a_tag_lantern_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_a_tag_lantern_cpp() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/__sinit_d_a_tag_lantern_cpp.s" -} -#pragma pop +/* 8048F154-8048F174 -00001 0020+00 1/0 0/0 0/0 .data daTag_Lantern_MethodTable */ +static actor_method_class daTag_Lantern_MethodTable = { + (process_method_func)daTag_Lantern_Create, (process_method_func)daTag_Lantern_Delete, + (process_method_func)daTag_Lantern_Execute, (process_method_func)daTag_Lantern_IsDelete, + (process_method_func)daTag_Lantern_Draw, +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8048F0AC, __sinit_d_a_tag_lantern_cpp); -#pragma pop - -/* 8048F0EC-8048F134 00052C 0048+00 2/1 0/0 0/0 .text __dt__21daTag_Lantern_Param_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daTag_Lantern_Param_c::~daTag_Lantern_Param_c() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_lantern/d_a_tag_lantern/__dt__21daTag_Lantern_Param_cFv.s" -} -#pragma pop +/* 8048F174-8048F1A4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_LANTERN */ +extern actor_process_profile_definition g_profile_TAG_LANTERN = { + -3, // mLayerID + 7, // mListID + -3, // mListPrio + PROC_TAG_LANTERN, // mProcName + 0, // Padding + &g_fpcLf_Method.mBase, // mSubMtd + sizeof(daTag_Lantern_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // mSubMtd + 0x011E, // mPriority + 0, // Padding + 0, // Padding + &daTag_Lantern_MethodTable, // mSubMtd + 0x00040000, // mStatus + 0, // mActorType + 14, // mCullType + 0, // Padding + 0, // Padding +}; \ No newline at end of file