diff options
| author | Jacob Patzer <37888505+jakepatzer@users.noreply.github.com> | 2023-10-24 17:10:48 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-24 17:10:48 -0700 |
| commit | 95d103b237b2d46722ecd2ee866f12440dcf9da9 (patch) | |
| tree | cf6335b410a15d6d865549be57e0221cd6edab55 /rel | |
| parent | d61ae29942c6fa190fbd78932c98b82cd90538b1 (diff) | |
d_a_tag_push OK (#1967)
Diffstat (limited to 'rel')
| -rw-r--r-- | rel/d/a/tag/d_a_tag_push/d_a_tag_push.cpp | 380 |
1 files changed, 153 insertions, 227 deletions
diff --git a/rel/d/a/tag/d_a_tag_push/d_a_tag_push.cpp b/rel/d/a/tag/d_a_tag_push/d_a_tag_push.cpp index f9686ad3d5..a39fc49596 100644 --- a/rel/d/a/tag/d_a_tag_push/d_a_tag_push.cpp +++ b/rel/d/a/tag/d_a_tag_push/d_a_tag_push.cpp @@ -4,269 +4,195 @@ // #include "rel/d/a/tag/d_a_tag_push/d_a_tag_push.h" -#include "dol2asm.h" - -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct cXyz {}; - -struct daTag_Push_c { - /* 804902B8 */ void srchActor(void*, void*); - /* 80490418 */ void create(); - /* 804904D4 */ bool Delete(); - /* 804904DC */ void Execute(); - /* 804906BC */ bool Draw(); - /* 804906C4 */ void isDelete(); - /* 80490724 */ void chkPointInArea(cXyz); - /* 804908CC */ ~daTag_Push_c(); -}; - -struct daNpcT_ActorMngr_c { - /* 801456D4 */ void initialize(); - /* 801456E0 */ void entry(fopAc_ac_c*); - /* 80145708 */ void getActorP(); - /* 80490884 */ ~daNpcT_ActorMngr_c(); -}; - -struct daNpcF_ActorMngr_c { - /* 801506BC */ void entry(fopAc_ac_c*); -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -// -// Forward References: -// - -extern "C" void srchActor__12daTag_Push_cFPvPv(); -extern "C" void create__12daTag_Push_cFv(); -extern "C" bool Delete__12daTag_Push_cFv(); -extern "C" void Execute__12daTag_Push_cFv(); -extern "C" bool Draw__12daTag_Push_cFv(); -extern "C" void isDelete__12daTag_Push_cFv(); -extern "C" void chkPointInArea__12daTag_Push_cF4cXyz(); -extern "C" static void daTag_Push_Create__FPv(); -extern "C" static void daTag_Push_Delete__FPv(); -extern "C" static void daTag_Push_Execute__FPv(); -extern "C" static void daTag_Push_Draw__FPv(); -extern "C" static bool daTag_Push_IsDelete__FPv(); -extern "C" void __dt__18daNpcT_ActorMngr_cFv(); -extern "C" void __dt__12daTag_Push_cFv(); - -// -// External References: -// - -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcEx_IsExist__FUi(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void initialize__18daNpcT_ActorMngr_cFv(); -extern "C" void entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c(); -extern "C" void getActorP__18daNpcT_ActorMngr_cFv(); -extern "C" void daNpcT_chkPointInArea__F4cXyz4cXyz4cXyzsi(); -extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c(); -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]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80490950-80490978 -00001 0028+00 1/1 0/0 0/0 .data @3868 */ -SECTION_DATA static void* lit_3868[10] = { - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0x138), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0x88), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0x9C), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0xB0), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0xC4), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0xD8), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0xEC), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0x100), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0x114), - (void*)(((char*)srchActor__12daTag_Push_cFPvPv) + 0x128), -}; +#include "JSystem/JKernel/JKRHeap.h" +#include "d/d_procname.h" /* 804902B8-80490418 000078 0160+00 2/1 0/0 0/0 .text srchActor__12daTag_Push_cFPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Push_c::srchActor(void* param_0, void* param_1) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/srchActor__12daTag_Push_cFPvPv.s" +void* daTag_Push_c::srchActor(void* param_0, void* param_1) { + BOOL bVar1 = false; + if (param_0 != NULL && fopAcM_IsActor(param_0)) { + if (fopAcM_IsExecuting(fopAcM_GetID(param_0))) { + switch (((daTag_Push_c*)param_1)->getId()) { + case 1: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_TARO; + break; + case 2: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_JAGAR; + break; + case 3: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_LEN; + break; + case 4: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_TARO; + break; + case 5: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_MARO; + break; + case 6: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_BESU; + break; + case 7: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_BOU; + break; + case 8: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_GRS; + break; + case 9: + bVar1 = ((daTag_Push_c*)param_0)->mBase.mProcName == PROC_NPC_GRO; + break; + } + } + } + + if (!bVar1) { + param_0 = NULL; + } + return param_0; } -#pragma pop - -/* ############################################################################################## */ -/* 8049094C-80490950 000000 0004+00 1/1 0/0 0/0 .rodata @3887 */ -SECTION_RODATA static f32 const lit_3887 = 100.0f; -COMPILER_STRIP_GATE(0x8049094C, &lit_3887); - -/* 80490978-80490998 -00001 0020+00 1/0 0/0 0/0 .data daTag_Push_MethodTable */ -SECTION_DATA static void* daTag_Push_MethodTable[8] = { - (void*)daTag_Push_Create__FPv, - (void*)daTag_Push_Delete__FPv, - (void*)daTag_Push_Execute__FPv, - (void*)daTag_Push_IsDelete__FPv, - (void*)daTag_Push_Draw__FPv, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - -/* 80490998-804909C8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_PUSH */ -SECTION_DATA extern void* g_profile_TAG_PUSH[12] = { - (void*)0xFFFFFFFD, (void*)0x0008FFFD, - (void*)0x02EC0000, (void*)&g_fpcLf_Method, - (void*)0x00000574, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x01230000, (void*)&daTag_Push_MethodTable, - (void*)0x00044000, (void*)0x000E0000, -}; - -/* 804909C8-804909D4 000078 000C+00 3/3 0/0 0/0 .data __vt__18daNpcT_ActorMngr_c */ -SECTION_DATA extern void* __vt__18daNpcT_ActorMngr_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18daNpcT_ActorMngr_cFv, -}; - -/* 804909D4-804909E0 000084 000C+00 2/2 0/0 0/0 .data __vt__12daTag_Push_c */ -SECTION_DATA extern void* __vt__12daTag_Push_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daTag_Push_cFv, -}; /* 80490418-804904D4 0001D8 00BC+00 1/1 0/0 0/0 .text create__12daTag_Push_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Push_c::create() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/create__12daTag_Push_cFv.s" +int daTag_Push_c::create() { + fopAcM_SetupActor(this, daTag_Push_c); + mScale.x *= 100.0f; + mScale.y *= 100.0f; + mScale.z = mScale.x; + if (isDelete()) { + return cPhs_ERROR_e; + } else { + return cPhs_COMPLEATE_e; + } } -#pragma pop /* 804904D4-804904DC 000294 0008+00 1/1 0/0 0/0 .text Delete__12daTag_Push_cFv */ -bool daTag_Push_c::Delete() { - return true; +int daTag_Push_c::Delete() { + return 1; } /* 804904DC-804906BC 00029C 01E0+00 1/1 0/0 0/0 .text Execute__12daTag_Push_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Push_c::Execute() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/Execute__12daTag_Push_cFv.s" +int daTag_Push_c::Execute() { + if (orig.roomNo == dComIfGp_roomControl_getStayNo()) { + fopAc_ac_c* actor = mActorMngr.getActorP(); + if (isDelete()) { + if (actor != NULL && fopAcM_GetName(actor) != PROC_NPC_JAGAR && + fopAcM_GetName(actor) != PROC_NPC_GRS && fopAcM_GetName(actor) != PROC_NPC_GRO) + { + static_cast<daNpcT_c*>(actor)->setCommander(NULL); + } + fopAcM_delete(this); + return 1; + } else { + if (!i_dComIfGp_event_runCheck()) { + if (actor == NULL) { + actor = (fopAc_ac_c*)(i_fpcM_Search(srchActor, this)); + if (actor != NULL) { + mActorMngr.entry(actor); + } + } + if (actor != NULL && + daPy_getPlayerActorClass()->mEvtInfo.chkCondition(dEvtCnd_CANTALK_e) != false) + { + if (chkPointInArea(cXyz(daPy_getPlayerActorClass()->current.pos))) { + if (fopAcM_GetName(actor) == PROC_NPC_GRS || + fopAcM_GetName(actor) == PROC_NPC_GRO) + { + static_cast<daNpcF_c*>(actor)->setIntDemander(this); + static_cast<daNpcF_c*>(actor)->setIntFlowNodeNo(getFlowNodeNo()); + static_cast<daNpcF_c*>(actor)->onInterrupt(getId()); + } else { + static_cast<daNpcT_c*>(actor)->setCommander(this); + } + } + } + } + mAttentionInfo.mFlags = 0; + mAttentionInfo.mPosition = current.pos; + mEyePos = mAttentionInfo.mPosition; + return 1; + } + } + return 0; } -#pragma pop /* 804906BC-804906C4 00047C 0008+00 1/1 0/0 0/0 .text Draw__12daTag_Push_cFv */ -bool daTag_Push_c::Draw() { - return true; +int daTag_Push_c::Draw() { + return 1; } /* 804906C4-80490724 000484 0060+00 2/2 0/0 0/0 .text isDelete__12daTag_Push_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Push_c::isDelete() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/isDelete__12daTag_Push_cFv.s" +int daTag_Push_c::isDelete() { + bool retVal = false; + if (getBitSW2() != 0xFF) { + if (dComIfGs_isSwitch(getBitSW2(), fopAcM_GetRoomNo(this))) { + retVal = true; + } + } + return retVal; } -#pragma pop /* 80490724-804907FC 0004E4 00D8+00 1/1 0/0 0/0 .text chkPointInArea__12daTag_Push_cF4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTag_Push_c::chkPointInArea(cXyz param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/chkPointInArea__12daTag_Push_cF4cXyz.s" +int daTag_Push_c::chkPointInArea(cXyz param_0) { + if ((getBitSW() != 0xFF && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) || + getBitSW() == 0xFF) + { + return daNpcT_chkPointInArea(param_0, current.pos, mScale, shape_angle.y, 1); + } else { + return 0; + } } -#pragma pop /* 804907FC-8049081C 0005BC 0020+00 1/0 0/0 0/0 .text daTag_Push_Create__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Push_Create(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/daTag_Push_Create__FPv.s" +static int daTag_Push_Create(void* i_this) { + return static_cast<daTag_Push_c*>(i_this)->create(); } -#pragma pop /* 8049081C-8049083C 0005DC 0020+00 1/0 0/0 0/0 .text daTag_Push_Delete__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Push_Delete(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/daTag_Push_Delete__FPv.s" +static int daTag_Push_Delete(void* i_this) { + return static_cast<daTag_Push_c*>(i_this)->Delete(); } -#pragma pop /* 8049083C-8049085C 0005FC 0020+00 1/0 0/0 0/0 .text daTag_Push_Execute__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Push_Execute(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/daTag_Push_Execute__FPv.s" +static int daTag_Push_Execute(void* i_this) { + return static_cast<daTag_Push_c*>(i_this)->Execute(); } -#pragma pop /* 8049085C-8049087C 00061C 0020+00 1/0 0/0 0/0 .text daTag_Push_Draw__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTag_Push_Draw(void* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/daTag_Push_Draw__FPv.s" +static int daTag_Push_Draw(void* i_this) { + return static_cast<daTag_Push_c*>(i_this)->Draw(); } -#pragma pop /* 8049087C-80490884 00063C 0008+00 1/0 0/0 0/0 .text daTag_Push_IsDelete__FPv */ -static bool daTag_Push_IsDelete(void* param_0) { - return true; +static int daTag_Push_IsDelete(void* i_this) { + return 1; } +/* 804908CC-80490944 00068C 0078+00 1/0 0/0 0/0 .text __dt__12daTag_Push_cFv */ +inline daTag_Push_c::~daTag_Push_c() {} + /* 80490884-804908CC 000644 0048+00 1/0 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/__dt__18daNpcT_ActorMngr_cFv.s" -} -#pragma pop +inline daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() {} -/* 804908CC-80490944 00068C 0078+00 1/0 0/0 0/0 .text __dt__12daTag_Push_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daTag_Push_c::~daTag_Push_c() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_push/d_a_tag_push/__dt__12daTag_Push_cFv.s" -} -#pragma pop +/* ############################################################################################## */ +/* 80490978-80490998 -00001 0020+00 1/0 0/0 0/0 .data daTag_Push_MethodTable */ +static actor_method_class daTag_Push_MethodTable = { + (process_method_func)daTag_Push_Create, (process_method_func)daTag_Push_Delete, + (process_method_func)daTag_Push_Execute, (process_method_func)daTag_Push_IsDelete, + (process_method_func)daTag_Push_Draw, +}; + +/* 80490998-804909C8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_PUSH */ +extern actor_process_profile_definition g_profile_TAG_PUSH = { + fpcLy_CURRENT_e, + 8, + fpcLy_CURRENT_e, + PROC_TAG_PUSH, + &g_fpcLf_Method.mBase, + sizeof(daTag_Push_c), + 0, + 0, + &g_fopAc_Method.base, + 0x123, + &daTag_Push_MethodTable, + 0x44000, + 0, + fopAc_CULLBOX_CUSTOM_e, +}; |
