summaryrefslogtreecommitdiff
path: root/src/d/event/d_event.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-07-02 15:15:47 -0700
committerGitHub <noreply@github.com>2022-07-02 15:15:47 -0700
commitb68cfbc0e6a66e9ef46ab01264dbe9e92b65bf8e (patch)
tree76b6e4b713e658f58e84b4369d8ace35b90e3717 /src/d/event/d_event.cpp
parentb973f1c79806571e8f96ede37eae7bcda431ec21 (diff)
parentb99af1efc3c29179c75c5edc2e93ba1936be0da0 (diff)
Merge pull request #204 from lepelog/misc
misc and d_event
Diffstat (limited to 'src/d/event/d_event.cpp')
-rw-r--r--src/d/event/d_event.cpp458
1 files changed, 295 insertions, 163 deletions
diff --git a/src/d/event/d_event.cpp b/src/d/event/d_event.cpp
index ee7b2daa04..e2bd290dcb 100644
--- a/src/d/event/d_event.cpp
+++ b/src/d/event/d_event.cpp
@@ -5,13 +5,17 @@
#include "d/event/d_event.h"
#include "d/com/d_com_inf_game.h"
+#include "d/d_camera.h"
+#include "d/d_demo.h"
+#include "d/d_procname.h"
+#include "d/d_stage.h"
+#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_iter.h"
#include "f_op/f_op_actor_mng.h"
-#include "d/d_demo.h"
-#include "d/d_camera.h"
-#include "d/msg/d_msg_object.h"
+#include "rel/d/a/tag/d_a_tag_mhint/d_a_tag_mhint.h"
+#include "rel/d/a/tag/d_a_tag_mstop/d_a_tag_mstop.h"
//
// Forward References:
@@ -175,15 +179,14 @@ dEvt_order_c::dEvt_order_c() {
/* 800415D8-80041668 03BF18 0090+00 1/1 0/0 0/0 .text orderOld__14dEvt_control_cFUsUsUsUsPvPvPCv
*/
s32 dEvt_control_c::orderOld(u16 param_0, u16 param_1, u16 param_2, u16 param_3, void* param_4,
- void* param_5, void const* param_6) {
+ void* param_5, void const* param_6) {
int eventIdx = i_dComIfGp_getEventManager().getEventIdx((char*)param_6, -1, -1);
return order(param_0, param_1, param_2, param_3, param_4, param_5, eventIdx, -1);
}
/* 80041668-80041804 03BFA8 019C+00 3/3 13/13 0/0 .text order__14dEvt_control_cFUsUsUsUsPvPvsUc */
-#ifdef NONMATCHING
s32 dEvt_control_c::order(u16 eventType, u16 priority, u16 flag, u16 param_3, void* param_4,
- void* param_5, s16 eventID, u8 infoIdx) {
+ void* param_5, s16 eventID, u8 infoIdx) {
if (!(flag & 0x400) && infoIdx != 0xFF) {
int roomNo = dComIfGp_roomControl_getStayNo();
dStage_MapEvent_dt_c* data = searchMapEventData(infoIdx, roomNo);
@@ -217,46 +220,37 @@ s32 dEvt_control_c::order(u16 eventType, u16 priority, u16 flag, u16 param_3, vo
field_0xe3 = 0;
order->mNextOrderIdx = -1;
} else {
- s8 tmp_e3 = field_0xe3;
- dEvt_order_c* order2 = &mOrder[tmp_e3];
+ dEvt_order_c* order2;
+ int tmp_e3 = field_0xe3;
+ order2 = &mOrder[tmp_e3];
if (order->mPriority < order2->mPriority) {
field_0xe3 = mNum;
order->mNextOrderIdx = tmp_e3;
} else {
-
while (order2->mNextOrderIdx >= 0) {
- if (order->mPriority >= mOrder[order2->mNextOrderIdx].mPriority) {
- order2++;
+ if (order->mPriority < mOrder[order2->mNextOrderIdx].mPriority) {
+ break;
}
+ int nextOrderIdx = order2->mNextOrderIdx;
+ order2 = &mOrder[nextOrderIdx];
}
order->mNextOrderIdx = order2->mNextOrderIdx;
order2->mNextOrderIdx = mNum;
}
- mNum++;
}
+ mNum++;
return 1;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm s32 dEvt_control_c::order(u16 eventType, u16 priority, u16 flag, u16 param_3, void* param_4,
- void* param_5, s16 eventID, u8 infoIdx) {
- nofralloc
-#include "asm/d/event/d_event/order__14dEvt_control_cFUsUsUsUsPvPvsUc.s"
-}
-#pragma pop
-#endif
/* 80041804-80041934 03C144 0130+00 5/5 0/0 0/0 .text setParam__14dEvt_control_cFP12dEvt_order_c
*/
void dEvt_control_c::setParam(dEvt_order_c* p_order) {
setPt1(p_order->mActor1);
setPt2(p_order->mActor2);
-
+
mSpecifiedEvent = p_order->mEventId;
mHindFlag = p_order->field_0x04;
@@ -325,13 +319,12 @@ void dEvt_control_c::afterFlagProc(dEvt_order_c* p_order) {
/* 800419A8-80041A20 03C2E8 0078+00 4/4 0/0 0/0 .text
* commonCheck__14dEvt_control_cFP12dEvt_order_cUsUs */
-#ifdef NONMATCHING
int dEvt_control_c::commonCheck(dEvt_order_c* p_order, u16 param_1, u16 param_2) {
fopAc_ac_c* actor1 = p_order->mActor1;
fopAc_ac_c* actor2 = p_order->mActor2;
- if ((actor1 != NULL && actor1->mEvtInfo.chkCondition(param_1) == param_1) &&
- (actor2 != NULL && actor2->mEvtInfo.chkCondition(param_1) == param_1)) {
+ if ((actor1 != NULL && actor1->mEvtInfo.chkCondition(param_1)) &&
+ (actor2 != NULL && actor2->mEvtInfo.chkCondition(param_1))) {
actor1->mEvtInfo.setCommand(param_2);
actor2->mEvtInfo.setCommand(param_2);
setParam(p_order);
@@ -340,16 +333,6 @@ int dEvt_control_c::commonCheck(dEvt_order_c* p_order, u16 param_1, u16 param_2)
return 0;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::commonCheck(dEvt_order_c* param_0, u16 param_1, u16 param_2) {
- nofralloc
-#include "asm/d/event/d_event/commonCheck__14dEvt_control_cFP12dEvt_order_cUsUs.s"
-}
-#pragma pop
-#endif
/* ############################################################################################## */
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -361,6 +344,35 @@ SECTION_DEAD static char const* const stringBase_80379D98 = "MHINT_TALK";
/* 80041A20-80041B58 03C360 0138+00 1/1 0/0 0/0 .text talkCheck__14dEvt_control_cFP12dEvt_order_c
*/
+#ifdef NONMATCHING
+// regswap, this pointer in r31 is weird
+int dEvt_control_c::talkCheck(dEvt_order_c* p_order) {
+ char* event = "DEFAULT_TALK";
+ fopAc_ac_c* actor = p_order->mActor2;
+ if ((fopAcM_GetName(actor) == PROC_Tag_Mhint && ((daTagMhint_c*)actor)->checkNoAttention()) ||
+ (fopAcM_GetName(actor) == PROC_Tag_Mstop && ((daTagMstop_c*)actor)->checkNoAttention()) ||
+ fopAcM_GetName(actor) == PROC_MIDNA) {
+ daMidna_c* midna = daPy_py_c::getMidnaActor();
+ if (!daPy_py_c::i_checkNowWolf() || midna->checkNoDraw()) {
+ event = "MHINT_TALK";
+ }
+ }
+ if (commonCheck(p_order, 1, 1)) {
+ mMode = 1;
+ if (mSpecifiedEvent == -1) {
+ if (actor != NULL && actor->mEvtInfo.getEventName() != NULL) {
+ mSpecifiedEvent = actor->mEvtInfo.getEventId();
+ } else {
+ mSpecifiedEvent = i_dComIfGp_getEventManager().getEventIdx(event, 0xFF, UINT32_MAX);
+ }
+ }
+ i_dComIfGp_getEventManager().order(mSpecifiedEvent);
+ return 1;
+ } else {
+ return 0;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -369,6 +381,7 @@ asm int dEvt_control_c::talkCheck(dEvt_order_c* param_0) {
#include "asm/d/event/d_event/talkCheck__14dEvt_control_cFP12dEvt_order_c.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -379,84 +392,181 @@ SECTION_DEAD static char const* const stringBase_80379DA3 = "DEFAULT_TALK_XY";
/* 80041B58-80041C90 03C498 0138+00 1/1 0/0 0/0 .text
* talkXyCheck__14dEvt_control_cFP12dEvt_order_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::talkXyCheck(dEvt_order_c* param_0) {
- nofralloc
-#include "asm/d/event/d_event/talkXyCheck__14dEvt_control_cFP12dEvt_order_c.s"
+int dEvt_control_c::talkXyCheck(dEvt_order_c* p_order) {
+ const char* event = "DEFAULT_TALK_XY";
+ fopAc_ac_c* pActor2 = p_order->mActor2;
+ int iVar5;
+ switch (p_order->mEventType) {
+ case 6:
+ iVar5 = 0;
+ field_0xed = 1;
+ break;
+ case 7:
+ field_0xed = 2;
+ iVar5 = 1;
+ break;
+ default:
+ field_0xed = 0;
+ return 0;
+ }
+ if (dComIfGp_getSelectItem(iVar5) == 0xFF) {
+ return 0;
+ }
+ if (pActor2 == NULL || !pActor2->mEvtInfo.chkCondition(0x20)) {
+ return 0;
+ }
+ if (commonCheck(p_order, 1, 1)) {
+ mMode = 1;
+ mPreItemNo = dComIfGp_getSelectItem(iVar5);
+ mSpecifiedEvent = i_dComIfGp_getEventManager().getEventIdx(event, 0xFF, UINT32_MAX);
+ i_dComIfGp_getEventManager().order(mSpecifiedEvent);
+ return 1;
+ } else {
+ return 0;
+ }
}
-#pragma pop
/* 80041C90-80041D34 03C5D0 00A4+00 1/1 0/0 0/0 .text catchCheck__14dEvt_control_cFP12dEvt_order_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::catchCheck(dEvt_order_c* param_0) {
- nofralloc
-#include "asm/d/event/d_event/catchCheck__14dEvt_control_cFP12dEvt_order_c.s"
+int dEvt_control_c::catchCheck(dEvt_order_c* p_order) {
+ fopAc_ac_c* actor2 = p_order->mActor2;
+ fopAc_ac_c* actor1 = p_order->mActor1;
+
+ if (actor1 == NULL || (actor2 != NULL && !actor2->mEvtInfo.chkCondition(0x40))) {
+ return 0;
+ }
+ actor1->mEvtInfo.setCommand(6);
+ if (actor2 != NULL) {
+ actor2->mEvtInfo.setCommand(6);
+ }
+ setParam(p_order);
+ mPreItemNo = dComIfGp_att_getCatchChgItem();
+ mMode = 2;
+ if (mSpecifiedEvent != -1) {
+ i_dComIfGp_getEventManager().order(mSpecifiedEvent);
+ }
+ return 1;
}
-#pragma pop
/* 80041D34-80041DDC 03C674 00A8+00 1/1 0/0 0/0 .text talkEnd__14dEvt_control_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEvt_control_c::talkEnd() {
- nofralloc
-#include "asm/d/event/d_event/talkEnd__14dEvt_control_cFv.s"
+int dEvt_control_c::talkEnd() {
+ fopAc_ac_c* actor = (fopAc_ac_c*)getPt1();
+ if (actor != NULL) {
+ actor->mEvtInfo.setCommand(0);
+ }
+ actor = (fopAc_ac_c*)getPt2();
+ if (actor != NULL) {
+ actor->mEvtInfo.setCommand(0);
+ }
+ if (mSpecifiedEvent != -1) {
+ i_dComIfGp_getEventManager().endProc(mSpecifiedEvent, 1);
+ mSpecifiedEvent = -1;
+ }
+ daItemBase_c* item = (daItemBase_c*)fopAcM_getItemEventPartner(NULL);
+ if (item != NULL && fopAcM_GetName(item) == PROC_ITEM) {
+ item->dead();
+ }
+ return 1;
}
-#pragma pop
/* 80041DDC-80041F18 03C71C 013C+00 1/1 0/0 0/0 .text demoCheck__14dEvt_control_cFP12dEvt_order_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::demoCheck(dEvt_order_c* param_0) {
- nofralloc
-#include "asm/d/event/d_event/demoCheck__14dEvt_control_cFP12dEvt_order_c.s"
+int dEvt_control_c::demoCheck(dEvt_order_c* p_order) {
+ fopAc_ac_c* actor1 = p_order->mActor1;
+ fopAc_ac_c* actor2 = p_order->mActor2;
+ int eventId = p_order->mEventId;
+ if (actor2 == NULL) {
+ return 0;
+ }
+ if (!(p_order->mFlag & 0x10)) {
+ if (actor1 != NULL && !actor1->mEvtInfo.chkCondition(2)) {
+ return 0;
+ }
+ if (actor2 != NULL && !actor2->mEvtInfo.chkCondition(2)) {
+ return 0;
+ }
+ }
+ if (!beforeFlagProc(p_order)) {
+ return 0;
+ }
+ if (actor1 != NULL) {
+ i_dComIfGp_getEventManager().setObjectArchive(actor1->mEvtInfo.getArchiveName());
+ }
+ if (!i_dComIfGp_getEventManager().order(eventId)) {
+ return 0;
+ }
+ if (actor1 != NULL) {
+ actor1->mEvtInfo.setCommand(2);
+ }
+ if (actor2 != NULL) {
+ actor2->mEvtInfo.setCommand(2);
+ }
+ mMode = 2;
+ setParam(p_order);
+ afterFlagProc(p_order);
+ return 1;
}
-#pragma pop
/* 80041F18-80041FA0 03C858 0088+00 1/1 0/0 0/0 .text demoEnd__14dEvt_control_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEvt_control_c::demoEnd() {
- nofralloc
-#include "asm/d/event/d_event/demoEnd__14dEvt_control_cFv.s"
+int dEvt_control_c::demoEnd() {
+ fopAc_ac_c* actor = (fopAc_ac_c*)getPt1();
+ if (actor != NULL) {
+ actor->mEvtInfo.setCommand(0);
+ }
+ actor = (fopAc_ac_c*)getPt2();
+ if (actor != NULL) {
+ actor->mEvtInfo.setCommand(0);
+ }
+ if (mSpecifiedEvent != -1) {
+ i_dComIfGp_getEventManager().endProc(mSpecifiedEvent, 1);
+ mSpecifiedEvent = -1;
+ }
+ return 1;
}
-#pragma pop
-int dEvt_control_c::potentialCheck(dEvt_order_c* param_0) {
- fopAc_ac_c* actor = param_0->mActor1;
- s32 ret;
- s32 tmp = beforeFlagProc(param_0);
+int dEvt_control_c::potentialCheck(dEvt_order_c* p_order) {
+ fopAc_ac_c* actor = p_order->mActor1;
- if (!tmp) {
- ret = 0;
+ if (!beforeFlagProc(p_order)) {
+ return 0;
} else {
actor->mEvtInfo.setCommand(2);
mMode = 2;
- setParam(param_0);
- afterFlagProc(param_0);
- ret = 1;
+ setParam(p_order);
+ afterFlagProc(p_order);
+ return 1;
}
- return ret;
}
/* 80042014-8004212C 03C954 0118+00 1/1 0/0 0/0 .text doorCheck__14dEvt_control_cFP12dEvt_order_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::doorCheck(dEvt_order_c* param_0) {
- nofralloc
-#include "asm/d/event/d_event/doorCheck__14dEvt_control_cFP12dEvt_order_c.s"
+int dEvt_control_c::doorCheck(dEvt_order_c* p_order) {
+ if (commonCheck(p_order, 4, 3)) {
+ mMode = 2;
+ fopAc_ac_c* actor2 = (fopAc_ac_c*)getPt2();
+ if (actor2 != NULL) {
+ i_dComIfGp_getEventManager().setObjectArchive(actor2->mEvtInfo.getArchiveName());
+ }
+ if (mSpecifiedEvent == -1 && actor2 != NULL && actor2->mEvtInfo.getEventId() != -1) {
+ mSpecifiedEvent = actor2->mEvtInfo.getEventId();
+ }
+ if (mSpecifiedEvent != -1 &&
+ i_dComIfGp_getEventManager().getEventData(mSpecifiedEvent) != NULL) {
+ i_dComIfGp_getEventManager().order(mSpecifiedEvent);
+ } else {
+ mSpecifiedEvent = -1;
+ reset();
+ }
+ if (p_order->mEventType == 0xB) {
+ onEventFlag(4);
+ } else {
+ onEventFlag(0x40);
+ }
+ return 1;
+ } else {
+ return 0;
+ }
}
-#pragma pop
/* 8004212C-800421C0 03CA6C 0094+00 1/1 0/0 0/0 .text itemCheck__14dEvt_control_cFP12dEvt_order_c
*/
@@ -475,7 +585,6 @@ int dEvt_control_c::itemCheck(dEvt_order_c* p_order) {
/* 800421C0-80042254 03CB00 0094+00 1/1 0/0 0/0 .text endProc__14dEvt_control_cFv */
// missing extra branch
-#ifdef NONMATCHING
int dEvt_control_c::endProc() {
switch (mMode) {
case 1:
@@ -484,6 +593,8 @@ int dEvt_control_c::endProc() {
case 2:
demoEnd();
break;
+ case 3:
+ break;
}
mMode = 0;
@@ -497,26 +608,16 @@ int dEvt_control_c::endProc() {
i_dComIfGp_getEventManager().setStartDemo(-2);
return 1;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::endProc() {
- nofralloc
-#include "asm/d/event/d_event/endProc__14dEvt_control_cFv.s"
-}
-#pragma pop
-#endif
/* 80042254-800422C0 03CB94 006C+00 1/1 0/0 0/0 .text change__14dEvt_control_cFv */
-// reg swap
-#ifdef NONMATCHING
int dEvt_control_c::change() {
+ dEvt_order_c* order;
+ s8 var_r7;
if (mNum != 0) {
- s8 var_r7 = field_0xe3;
+ var_r7 = field_0xe3;
do {
- dEvt_order_c* order = &mOrder[var_r7];
+ order = &mOrder[var_r7];
if (order->mFlag & 0xE00 && order->mActor1 == mChangeOK) {
field_0xe3 = var_r7;
@@ -531,16 +632,6 @@ int dEvt_control_c::change() {
return -1;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::change() {
- nofralloc
-#include "asm/d/event/d_event/change__14dEvt_control_cFv.s"
-}
-#pragma pop
-#endif
/* 800422C0-80042468 03CC00 01A8+00 2/1 0/0 0/0 .text entry__14dEvt_control_cFv */
int dEvt_control_c::entry() {
@@ -599,7 +690,7 @@ int dEvt_control_c::entry() {
}
} while (orderIdx >= 0);
}
-
+
return 0;
}
@@ -678,7 +769,8 @@ int dEv_defaultSkipZev(void* param_0, int param_1) {
if (eventID != -1) {
evControl->reset(param_0);
- fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3, 0x400);
+ fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3,
+ 0x400);
return 2;
} else if (var_r27) {
evControl->reset(param_0);
@@ -721,7 +813,8 @@ int dEv_defaultSkipStb(void* param_0, int param_1) {
if (eventID != -1) {
evControl->reset(param_0);
dDemo_c::end();
- fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3, 0x400);
+ fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3,
+ 0x400);
return 2;
} else if (var_r27) {
evControl->reset(param_0);
@@ -848,15 +941,13 @@ bool dEvt_control_c::skipper() {
SECTION_SDATA2 static f32 lit_5013 = -1.0f / 20.0f;
/* 80042BBC-80042FA8 03D4FC 03EC+00 0/0 1/1 0/0 .text Step__14dEvt_control_cFv */
-// small regalloc in checkFishingCastMode
-#ifdef NONMATCHING
int dEvt_control_c::Step() {
dEvent_manager_c* evtMng = &i_dComIfGp_getEventManager();
-
+
field_0xe7 = 0;
field_0xe8 = mNum;
skipper();
-
+
if (chkEventFlag(8)) {
if (mEventStatus == 1) {
mEventStatus = 5;
@@ -961,40 +1052,73 @@ int dEvt_control_c::Step() {
dComIfGp_setLastPlayStageName(lastStageName);
dComIfGs_onVisitedRoom(mRoomNo);
}
- field_0x129 = 1;
+ field_0x129 = 1;
}
return 0;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::Step() {
- nofralloc
-#include "asm/d/event/d_event/Step__14dEvt_control_cFv.s"
-}
-#pragma pop
-#endif
/* 80042FA8-8004316C 03D8E8 01C4+00 0/0 2/2 0/0 .text moveApproval__14dEvt_control_cFPv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int dEvt_control_c::moveApproval(void* param_0) {
- nofralloc
-#include "asm/d/event/d_event/moveApproval__14dEvt_control_cFPv.s"
+int dEvt_control_c::moveApproval(void* param_0) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)param_0;
+ if (fopAcM_checkStatus(actor, 0x20000)) {
+ return 2;
+ }
+ if (!runCheck()) {
+ return 1;
+ }
+ switch (mMode) {
+ case 1:
+ if (getPt1() == actor || getPt2() == actor) {
+ return 2;
+ }
+ break;
+ case 2:
+ if (getPt1() == actor || getPt2() == actor) {
+ return 2;
+ }
+ if (actor->mDemoActorId != 0) {
+ return 2;
+ }
+ break;
+ case 3:
+ if (getPt1() == actor) {
+ return 2;
+ }
+ break;
+ }
+ if (fopAcM_checkStatus(actor, 0x8000)) {
+ return 2;
+ }
+ if (fopAcM_checkStatus(actor, 0x800)) {
+ return 1;
+ }
+ if (i_dComIfGp_checkPlayerStatus0(0, 0x20000000) ||
+ i_dComIfGp_checkPlayerStatus1(0, 0x4002000)) {
+ return 0;
+ }
+ if (mMode == 1 && fopAcM_checkStatus(actor, 0x40)) {
+ return 1;
+ }
+ if (dDemo_c::getMode() == 1) {
+ return 1;
+ }
+ if ((getMode() == 3 || getMode() == 1) && fopAcM_checkStatus(actor, 0x4000000)) {
+ return 0;
+ }
+ if (fopAcM_checkStatus(actor, 0x4000)) {
+ return 1;
+ }
+ if (fopAcM_checkStatus(actor, 0x2000)) {
+ return 1;
+ }
+ return 0;
}
-#pragma pop
/* 8004316C-800431E8 03DAAC 007C+00 0/0 28/28 0/0 .text compulsory__14dEvt_control_cFPvPCcUs */
BOOL dEvt_control_c::compulsory(void* param_0, char const* param_1, u16 param_2) {
- bool check = false;
- u8 temp_r4 = mEventStatus;
- if (temp_r4 == 0 || temp_r4 == 2) {
- check = true;
- }
+ bool check = (mEventStatus == 0 || mEventStatus == 2);
if (!check || mCompulsory) {
return 0;
@@ -1047,31 +1171,39 @@ u32 dEvt_control_c::getPId(void* actor) {
}
/* 800432EC-8004331C 03DC2C 0030+00 7/7 13/13 16/16 .text convPId__14dEvt_control_cFUi */
-#ifdef NONMATCHING
void* dEvt_control_c::convPId(unsigned int param_0) {
- return fopAcIt_Judge(fpcSch_JudgeByID, (void*)param_0);
+ return fopAcIt_Judge(fpcSch_JudgeByID, (void*)&param_0);
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void* dEvt_control_c::convPId(unsigned int param_0) {
- nofralloc
-#include "asm/d/event/d_event/convPId__14dEvt_control_cFUi.s"
-}
-#pragma pop
-#endif
/* 8004331C-800433F0 03DC5C 00D4+00 0/0 1/1 0/0 .text getStbDemoData__14dEvt_control_cFPc
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void* dEvt_control_c::getStbDemoData(char* param_0) {
- nofralloc
-#include "asm/d/event/d_event/getStbDemoData__14dEvt_control_cFPc.s"
+void* dEvt_control_c::getStbDemoData(char* param_0) {
+ char* demoArcName = dStage_roomControl_c::getDemoArcName();
+ if (*demoArcName != 0) {
+ void* res = dComIfG_getObjectRes(demoArcName, param_0);
+ if (res != NULL) {
+ func_80041480();
+ return res;
+ }
+ func_80041480();
+ } else {
+ func_80041480();
+ }
+ char* roomArcName = dComIfG_getRoomArcName(dComIfGp_roomControl_getStayNo());
+ void* res2 = dComIfG_getStageRes(roomArcName, param_0);
+ if (res2 != NULL) {
+ func_80041480();
+ return res2;
+ } else {
+ res2 = dComIfG_getStageRes(param_0);
+ if (res2 != NULL) {
+ func_80041480();
+ return res2;
+ } else {
+ return NULL;
+ }
+ }
}
-#pragma pop
dEvt_info_c::dEvt_info_c() {
setCommand(0);