summaryrefslogtreecommitdiff
path: root/rel
diff options
context:
space:
mode:
authorJacob Patzer <37888505+jakepatzer@users.noreply.github.com>2023-10-24 17:10:48 -0700
committerGitHub <noreply@github.com>2023-10-24 17:10:48 -0700
commit95d103b237b2d46722ecd2ee866f12440dcf9da9 (patch)
treecf6335b410a15d6d865549be57e0221cd6edab55 /rel
parentd61ae29942c6fa190fbd78932c98b82cd90538b1 (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.cpp380
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,
+};