// // Generated By: dol2asm // Translation Unit: d/event/d_event // #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 "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: // extern "C" static bool func_80041480(); extern "C" static void func_80041488(); extern "C" void __ct__14dEvt_control_cFv(); extern "C" void __ct__12dEvt_order_cFv(); extern "C" void orderOld__14dEvt_control_cFUsUsUsUsPvPvPCv(); extern "C" void order__14dEvt_control_cFUsUsUsUsPvPvsUc(); extern "C" void setParam__14dEvt_control_cFP12dEvt_order_c(); extern "C" void beforeFlagProc__14dEvt_control_cFP12dEvt_order_c(); extern "C" void afterFlagProc__14dEvt_control_cFP12dEvt_order_c(); extern "C" void commonCheck__14dEvt_control_cFP12dEvt_order_cUsUs(); extern "C" void talkCheck__14dEvt_control_cFP12dEvt_order_c(); extern "C" void talkXyCheck__14dEvt_control_cFP12dEvt_order_c(); extern "C" void catchCheck__14dEvt_control_cFP12dEvt_order_c(); extern "C" void talkEnd__14dEvt_control_cFv(); extern "C" void demoCheck__14dEvt_control_cFP12dEvt_order_c(); extern "C" void demoEnd__14dEvt_control_cFv(); extern "C" void potentialCheck__14dEvt_control_cFP12dEvt_order_c(); extern "C" void doorCheck__14dEvt_control_cFP12dEvt_order_c(); extern "C" void itemCheck__14dEvt_control_cFP12dEvt_order_c(); extern "C" void endProc__14dEvt_control_cFv(); extern "C" void change__14dEvt_control_cFv(); extern "C" void entry__14dEvt_control_cFv(); extern "C" void reset__14dEvt_control_cFv(); extern "C" void reset__14dEvt_control_cFPv(); extern "C" void clearSkipSystem__14dEvt_control_cFv(); extern "C" void dEv_defaultSkipProc__FPvi(); extern "C" void dEv_defaultSkipZev__FPvi(); extern "C" void dEv_defaultSkipStb__FPvi(); extern "C" void dEv_noFinishSkipProc__FPvi(); extern "C" void getSkipEventName__14dEvt_control_cFv(); extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii(); extern "C" void setSkipZev__14dEvt_control_cFPvPc(); extern "C" void onSkipFade__14dEvt_control_cFv(); extern "C" void offSkipFade__14dEvt_control_cFv(); extern "C" void skipper__14dEvt_control_cFv(); extern "C" void Step__14dEvt_control_cFv(); extern "C" void moveApproval__14dEvt_control_cFPv(); extern "C" void compulsory__14dEvt_control_cFPvPCcUs(); extern "C" void remove__14dEvt_control_cFv(); extern "C" void getStageEventDt__14dEvt_control_cFv(); extern "C" void sceneChange__14dEvt_control_cFi(); extern "C" void getPId__14dEvt_control_cFPv(); extern "C" void convPId__14dEvt_control_cFUi(); extern "C" void getStbDemoData__14dEvt_control_cFPc(); extern "C" void __ct__11dEvt_info_cFv(); extern "C" void setEventName__11dEvt_info_cFPc(); extern "C" void getEventName__11dEvt_info_cFv(); extern "C" void beforeProc__11dEvt_info_cFv(); extern "C" void searchMapEventData__14dEvt_control_cFUc(); extern "C" void searchMapEventData__14dEvt_control_cFUcl(); extern "C" void runningEventID__14dEvt_control_cFs(); extern "C" void setPt1__14dEvt_control_cFPv(); extern "C" void setPt2__14dEvt_control_cFPv(); extern "C" void setPtT__14dEvt_control_cFPv(); extern "C" void setPtI__14dEvt_control_cFPv(); extern "C" void setPtI_Id__14dEvt_control_cFUi(); extern "C" void setPtD__14dEvt_control_cFPv(); extern "C" void setGtItm__14dEvt_control_cFUc(); extern "C" extern char const* const d_event_d_event__stringBase0; // // External References: // extern "C" void fadeOut__13mDoGph_gInf_cFf(); extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); extern "C" void fopAcM_getItemEventPartner__FPC10fopAc_ac_c(); extern "C" void fpcSch_JudgeByID__FPvPv(); extern "C" void getStatusRoomDt__20dStage_roomControl_cFi(); extern "C" void dStage_changeScene4Event__FiScibfUlsi(int, s8, int, bool, float, u32, s16, int); extern "C" void dComIfGp_getSelectItem__Fi(); extern "C" void dComIfG_getStageRes__FPCc(); extern "C" void dComIfG_getRoomArcName__Fi(); extern "C" void dComIfGs_onVisitedRoom__Fi(); extern "C" void __dt__12dEvt_order_cFv(); extern "C" void offEventBit__11dSv_event_cFUs(); extern "C" void onSwitch__10dSv_info_cFii(); extern "C" void isSwitch__10dSv_info_cCFii(); extern "C" void dead__12daItemBase_cFv(); extern "C" void end__7dDemo_cFv(); extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); extern "C" void forceFinish__12dEvDtEvent_cFv(); extern "C" void setStartDemo__18dEvent_exception_cFi(); extern "C" void setObjectArchive__16dEvent_manager_cFPc(); extern "C" void endProc__16dEvent_manager_cFsi(); extern "C" void Sequencer__16dEvent_manager_cFv(); extern "C" void Experts__16dEvent_manager_cFv(); extern "C" void getEventData__16dEvent_manager_cFs(); extern "C" void getEventIdx__16dEvent_manager_cFPCcUcl(); extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); extern "C" void order__16dEvent_manager_cFs(); extern "C" void issueStaff__16dEvent_manager_cFPCc(); extern "C" void cancelStaff__16dEvent_manager_cFPCc(); extern "C" void StopQuake__12dVibration_cFi(); extern "C" void QuickStart__9dCamera_cFv(); extern "C" void dCam_getBody__Fv(); extern "C" void onKillMessageFlag__12dMsgObject_cFv(); extern "C" void setKillMessageFlag__12dMsgObject_cFv(); extern "C" void endFlowGroup__12dMsgObject_cFv(); extern "C" void setDemoName__11Z2StatusMgrFPc(); extern "C" void __construct_array(); extern "C" void _savegpr_22(); extern "C" void _savegpr_25(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_22(); extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */]; extern "C" extern void* __vt__11dEvt_info_c[3 + 1 /* padding */]; extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */]; extern "C" u8 m_mode__7dDemo_c[4]; extern "C" u8 m_midnaActor__9daPy_py_c[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // // Declarations: // /* 80041480-80041488 03BDC0 0008+00 1/1 0/0 0/0 .text event_debug_evnt__21@unnamed@d_event_cpp@Fv */ static bool func_80041480() { return false; } /* 80041488-80041580 03BDC8 00F8+00 1/1 0/0 0/0 .text * clear_tmpflag_for_message__21@unnamed@d_event_cpp@Fv */ static void func_80041488() { dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[11]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[12]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[13]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[14]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[15]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[51]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[52]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[53]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[54]); dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[55]); } dEvt_control_c::dEvt_control_c() { remove(); } dEvt_order_c::dEvt_order_c() { /* empty function */ } /* 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) { 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 */ s32 dEvt_control_c::order(u16 eventType, u16 priority, u16 flag, u16 param_3, void* param_4, 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); if (data != NULL && data->field_0x1B != 0xFF) { if (dComIfGs_isSwitch(data->field_0x1B, roomNo)) { return 0; } } } if (mNum >= 8) { return 0; } dEvt_order_c* order = &mOrder[mNum]; order->mEventType = eventType; order->mPriority = priority; order->mFlag = flag; order->mActor1 = (fopAc_ac_c*)param_4; order->mActor2 = (fopAc_ac_c*)param_5; order->mEventId = eventID; order->field_0x04 = param_3; order->mEventInfoIdx = infoIdx; if (order->mPriority == 0) { order->mPriority = 1; } if (mNum == 0) { field_0xe3 = 0; order->mNextOrderIdx = -1; } else { 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) { break; } int nextOrderIdx = order2->mNextOrderIdx; order2 = &mOrder[nextOrderIdx]; } order->mNextOrderIdx = order2->mNextOrderIdx; order2->mNextOrderIdx = mNum; } } mNum++; return 1; } /* 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; if (dComIfGp_getPlayer(0) != p_order->mActor1) { setPtT(p_order->mActor1); setPtI(p_order->mActor1); } else { setPtT(p_order->mActor2); setPtI(p_order->mActor2); } mMapToolId = p_order->mEventInfoIdx; field_0xea = 0xFF; field_0xec = 0xFF; int roomNo = dComIfGp_roomControl_getStayNo(); dStage_MapEvent_dt_c* data = searchMapEventData(mMapToolId, roomNo); mStageEventDt = data; if (data != NULL) { field_0xea = data->field_0x16; if (data->field_0x1B != 0xFF) { dComIfGs_onSwitch(data->field_0x1B, roomNo); } if (p_order->mFlag & 0x300) { field_0xec = data->field_0x5; } } if (!(p_order->mFlag & 0x200)) { field_0xe0 = p_order->mEventId; } mCullRate = 1.0f; mEventFlag = 0; } /* 80041934-80041964 03C274 0030+00 2/2 0/0 0/0 .text * beforeFlagProc__14dEvt_control_cFP12dEvt_order_c */ s32 dEvt_control_c::beforeFlagProc(dEvt_order_c* p_order) { fopAc_ac_c* actor = p_order->mActor2; if (p_order->mFlag & 4 && actor->mEvtInfo.chkCondition(1) != true) { return 0; } return 1; } /* ############################################################################################## */ /* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_80379D80 = "???"; #pragma pop /* 80041964-800419A8 03C2A4 0044+00 2/2 0/0 0/0 .text * afterFlagProc__14dEvt_control_cFP12dEvt_order_c */ void dEvt_control_c::afterFlagProc(dEvt_order_c* p_order) { if (p_order->mFlag & 2) { i_dComIfGp_getEventManager().issueStaff("ALL"); } } /* 800419A8-80041A20 03C2E8 0078+00 4/4 0/0 0/0 .text * commonCheck__14dEvt_control_cFP12dEvt_order_cUsUs */ 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)) && (actor2 != NULL && actor2->mEvtInfo.chkCondition(param_1))) { actor1->mEvtInfo.setCommand(param_2); actor2->mEvtInfo.setCommand(param_2); setParam(p_order); return 1; } return 0; } /* ############################################################################################## */ /* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_80379D8B = "DEFAULT_TALK"; SECTION_DEAD static char const* const stringBase_80379D98 = "MHINT_TALK"; #pragma pop /* 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 asm int dEvt_control_c::talkCheck(dEvt_order_c* param_0) { nofralloc #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 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_80379DA3 = "DEFAULT_TALK_XY"; #pragma pop /* 80041B58-80041C90 03C498 0138+00 1/1 0/0 0/0 .text * talkXyCheck__14dEvt_control_cFP12dEvt_order_c */ 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; } } /* 80041C90-80041D34 03C5D0 00A4+00 1/1 0/0 0/0 .text catchCheck__14dEvt_control_cFP12dEvt_order_c */ 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; } /* 80041D34-80041DDC 03C674 00A8+00 1/1 0/0 0/0 .text talkEnd__14dEvt_control_cFv */ 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; } /* 80041DDC-80041F18 03C71C 013C+00 1/1 0/0 0/0 .text demoCheck__14dEvt_control_cFP12dEvt_order_c */ 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; } /* 80041F18-80041FA0 03C858 0088+00 1/1 0/0 0/0 .text demoEnd__14dEvt_control_cFv */ 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; } int dEvt_control_c::potentialCheck(dEvt_order_c* p_order) { fopAc_ac_c* actor = p_order->mActor1; if (!beforeFlagProc(p_order)) { return 0; } else { actor->mEvtInfo.setCommand(2); mMode = 2; setParam(p_order); afterFlagProc(p_order); return 1; } } /* 80042014-8004212C 03C954 0118+00 1/1 0/0 0/0 .text doorCheck__14dEvt_control_cFP12dEvt_order_c */ 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; } } /* 8004212C-800421C0 03CA6C 0094+00 1/1 0/0 0/0 .text itemCheck__14dEvt_control_cFP12dEvt_order_c */ int dEvt_control_c::itemCheck(dEvt_order_c* p_order) { const char* event = "DEFAULT_GETITEM"; if (commonCheck(p_order, 8, 4)) { mMode = 2; mSpecifiedEvent = i_dComIfGp_getEventManager().getEventIdx(event, -1, -1); i_dComIfGp_getEventManager().order(mSpecifiedEvent); return 1; } else { return 0; } } /* 800421C0-80042254 03CB00 0094+00 1/1 0/0 0/0 .text endProc__14dEvt_control_cFv */ // missing extra branch int dEvt_control_c::endProc() { switch (mMode) { case 1: talkEnd(); break; case 2: demoEnd(); break; case 3: break; } mMode = 0; field_0xea = 255; mMapToolId = 255; mStageEventDt = NULL; field_0xec = 255; field_0xed = 0; field_0xe0 = 255; mPreItemNo = 255; i_dComIfGp_getEventManager().setStartDemo(-2); return 1; } /* 80042254-800422C0 03CB94 006C+00 1/1 0/0 0/0 .text change__14dEvt_control_cFv */ int dEvt_control_c::change() { dEvt_order_c* order; s8 var_r7; if (mNum != 0) { var_r7 = field_0xe3; do { order = &mOrder[var_r7]; if (order->mFlag & 0xE00 && order->mActor1 == mChangeOK) { field_0xe3 = var_r7; mNum = 1; order->mNextOrderIdx = -1; return var_r7; } var_r7 = order->mNextOrderIdx; } while (var_r7 >= 0); } return -1; } /* 800422C0-80042468 03CC00 01A8+00 2/1 0/0 0/0 .text entry__14dEvt_control_cFv */ int dEvt_control_c::entry() { if (mNum != 0) { s8 orderIdx = field_0xe3; mNum = 0; do { dEvt_order_c* order = &mOrder[orderIdx]; orderIdx = order->mNextOrderIdx; switch (order->mEventType) { case 0: if (i_dComIfGs_getLife() != 0 && talkCheck(order) != 0) { return 1; } break; case 2: if (i_dComIfGs_getLife() != 0 && demoCheck(order) != 0) { return 1; } break; case 1: case 11: if (i_dComIfGs_getLife() != 0 && doorCheck(order) != 0) { return 1; } break; case 3: mMode = 3; setParam(order); return 1; case 4: if (i_dComIfGs_getLife() != 0 && potentialCheck(order) != 0) { return 1; } break; case 5: if (i_dComIfGs_getLife() != 0 && itemCheck(order) != 0) { return 1; } break; case 6: case 7: if (i_dComIfGs_getLife() != 0 && talkXyCheck(order) != 0) { return 1; } break; case 10: if (i_dComIfGs_getLife() != 0 && catchCheck(order) != 0) { return 1; } break; case 13: break; } } while (orderIdx >= 0); } return 0; } /* 80042468-80042518 03CDA8 00B0+00 1/1 8/8 388/388 .text reset__14dEvt_control_cFv */ void dEvt_control_c::reset() { if (field_0xec != 0xFF) { void* pt1 = getPt1(); s16 eventIdx = i_dComIfGp_getEventManager().getEventIdx(NULL, field_0xec, -1); void* pt2 = getPt2(); order(2, 3, 0x201, mHindFlag, pt1, pt2, eventIdx, field_0xec); mChangeOK = pt1; } onEventFlag(8); } /* 80042518-800425B4 03CE58 009C+00 3/3 3/3 46/46 .text reset__14dEvt_control_cFPv */ void dEvt_control_c::reset(void* param_0) { if (field_0xec != 0xFF) { s16 eventIdx = i_dComIfGp_getEventManager().getEventIdx((fopAc_ac_c*)param_0, field_0xec); void* pt2 = getPt2(); order(2, 3, 0x201, mHindFlag, param_0, pt2, eventIdx, field_0xec); } mChangeOK = param_0; onEventFlag(8); } void dEvt_control_c::clearSkipSystem() { mSkipFunc = NULL; field_0x104 = -1; field_0x10c = 0; mSkipTimer = 0; if (!chkFlag2(3)) { mSkipFade = 0; } mSkipEventName[0] = 0; } /* 800425E8-8004261C 03CF28 0034+00 0/0 2/2 5/5 .text dEv_defaultSkipProc__FPvi */ int dEv_defaultSkipProc(void* param_0, int) { i_dComIfGp_getEvent().reset(param_0); return 1; } /* 8004261C-80042778 03CF5C 015C+00 1/1 1/1 0/0 .text dEv_defaultSkipZev__FPvi */ int dEv_defaultSkipZev(void* param_0, int param_1) { dEvt_control_c* evControl = &i_dComIfGp_getEvent(); s16 eventID = -1; dStage_MapEvent_dt_c* data = evControl->getStageEventDt(); bool var_r27 = true; if (data != NULL) { if (data->field_0x9 != 0xFF) { var_r27 = false; } else if (data->field_0x7 != 0xFF) { var_r27 = false; } } switch (param_1) { case 0: char eventName[32]; strcpy(eventName, data->mName); strcat(eventName, "$0"); eventID = i_dComIfGp_getEventManager().getEventIdx(eventName, 0xFF, -1); break; case 1: char* skipName = i_dComIfGp_getEvent().getSkipEventName(); eventID = i_dComIfGp_getEventManager().getEventIdx(skipName, 0xFF, -1); break; } if (eventID != -1) { evControl->reset(param_0); fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3, 0x400); return 2; } else if (var_r27) { evControl->reset(param_0); return 1; } else { evControl->reset(param_0); return 1; } } /* 80042778-800428DC 03D0B8 0164+00 0/0 1/1 0/0 .text dEv_defaultSkipStb__FPvi */ int dEv_defaultSkipStb(void* param_0, int param_1) { dEvt_control_c* evControl = &i_dComIfGp_getEvent(); s16 eventID = -1; dStage_MapEvent_dt_c* data = evControl->getStageEventDt(); bool var_r27 = true; if (data != NULL) { if (data->field_0x9 != 0xFF) { var_r27 = false; } else if (data->field_0x7 != 0xFF) { var_r27 = false; } } switch (param_1) { case 0: char eventName[32]; strcpy(eventName, data->mName); strcat(eventName, "$0"); eventID = i_dComIfGp_getEventManager().getEventIdx(eventName, 0xFF, -1); break; case 1: char* skipName = i_dComIfGp_getEvent().getSkipEventName(); eventID = i_dComIfGp_getEventManager().getEventIdx(skipName, 0xFF, -1); break; } if (eventID != -1) { evControl->reset(param_0); dDemo_c::end(); fopAcM_orderOtherEventId((fopAc_ac_c*)param_0, eventID, evControl->getMapToolId(), -1, 3, 0x400); return 2; } else if (var_r27) { evControl->reset(param_0); dDemo_c::end(); return 1; } else { evControl->reset(param_0); return 1; } } /* 800428DC-8004290C 03D21C 0030+00 0/0 1/1 33/33 .text dEv_noFinishSkipProc__FPvi */ int dEv_noFinishSkipProc(void*, int) { i_dComIfGp_getEvent().offSkipFade(); return 0; } char* dEvt_control_c::getSkipEventName() { return mSkipEventName; } void dEvt_control_c::setSkipProc(void* param_0, SkipFunc skipFunc, int param_2) { mSkipFunc = skipFunc; field_0x104 = getPId(param_0); field_0x10c = param_2; } void dEvt_control_c::setSkipZev(void* param_0, char* evtName) { setSkipProc(param_0, dEv_defaultSkipZev, 1); strcpy(mSkipEventName, evtName); } void dEvt_control_c::onSkipFade() { mSkipFade = 1; } void dEvt_control_c::offSkipFade() { if (mSkipFade != 0) { mSkipFade = 0; } mSkipFade = 0; } /* 800429D4-80042BBC 03D314 01E8+00 1/1 0/0 0/0 .text skipper__14dEvt_control_cFv */ bool dEvt_control_c::skipper() { bool startSkip = false; bool canSkip = false; offFlag2(8); if (mEventStatus == 1) { if (mSkipFunc != NULL) { canSkip = true; } if (mDoCPd_c::getTrigStart(PAD_1)) { if (mSkipTimer > 0) { mSkipTimer = -1; if (canSkip && mSkipFade) { mDoGph_gInf_c::fadeOut(0.1f); } } else if (mSkipTimer == 0) { mSkipTimer = 1; } } if (mSkipTimer > 0) { if (canSkip) { dComIfGp_setSButtonStatusForce(0x43, 1); } else { dComIfGp_setSButtonStatusForce(0x4D, 1); } int curTimer = mSkipTimer; mSkipTimer++; if (curTimer > 45) { mSkipTimer = 0; } } else if (mSkipTimer != 0) { if (canSkip && mSkipFade) { int curTimer = mSkipTimer; mSkipTimer--; if (curTimer < -20) { startSkip = true; mSkipTimer = 0; } } else { if (canSkip) { startSkip = true; } mSkipTimer = 0; } } if (startSkip) { dMsgObject_onKillMessageFlag(); void* ptr = convPId(field_0x104); if (ptr == NULL) { ptr = dComIfGp_getPlayer(0); } int skipRet = mSkipFunc(ptr, field_0x10c); onFlag2(8); if (skipRet != 0) { mSkipFunc = NULL; if (skipRet == 2) { onFlag2(1); } else { onFlag2(2); } } } } return startSkip; } /* ############################################################################################## */ /* 80451EC8-80451ECC 0004C8 0004+00 1/1 0/0 0/0 .sdata2 @5013 */ 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 */ 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; if (dMsgObject_getMsgObjectClass() != NULL) { dMsgObject_endFlowGroup(); } } dEvDtEvent_c* eventDt = evtMng->getEventData(mSpecifiedEvent); if (eventDt != NULL) { eventDt->forceFinish(); } offEventFlag(8); } if (mEventStatus != 0) { evtMng->Sequencer(); } offEventFlag(0x300); if (mEventStatus == 2) { evtMng->cancelStaff("ALL"); evtMng->setCameraPlay(0); mEventFlag = 0; onEventFlag(0x200); mEventStatus = 0; } else if (mEventStatus == 0) { mEventFlag = 0; } if (mEventStatus == 5 && !dComIfGp_isEnableNextStage()) { if (chkFlag2(2) || mSkipTimer < 0) { if (mSkipFade) { mDoGph_gInf_c::fadeOut(-0.05f); } offFlag2(2); func_80041488(); } endProc(); if (!chkFlag2(3)) { mSkipFade = false; evtMng->setObjectArchive(NULL); } mEventStatus = 2; } else if (mEventStatus == 5 && (chkFlag2(2) || mSkipTimer < 0)) { func_80041488(); } if (change() != -1) { evtMng->cancelStaff("ALL"); evtMng->setCameraPlay(0); onEventFlag(0x200); mEventStatus = 0; if (chkFlag2(1)) { offFlag2(1); onFlag2(2); } } mCompulsory = 0; int roomNo = dComIfGp_roomControl_getStayNo(); if (mRoomNo != roomNo) { field_0x129 = 0; mRoomNo = roomNo; } if (mEventStatus == 0 && entry() != 0) { if (dMsgObject_getMsgObjectClass() != NULL) { dMsgObject_setKillMessageFlag(); } onEventFlag(0x100); dComIfGp_getVibration().StopQuake(31); daAlink_c* player = daAlink_getAlinkActorClass(); if (!dCam_getBody()->Active() && player->checkFishingCastMode()) { dCam_getBody()->QuickStart(); } mEventStatus = 1; clearSkipSystem(); } mNum = 0; mChangeOK = NULL; if (chkEventFlag(0x200)) { Z2AudioMgr::getInterface()->mStatusMgr.setDemoName(NULL); } if (mEventStatus != 0) { evtMng->Experts(); return 1; } else { if (!field_0x129) { char lastStageName[7]; strncpy(lastStageName, dComIfGp_getStartStageName(), 7); lastStageName[7] = 0; dComIfGp_setLastPlayStageName(lastStageName); dComIfGs_onVisitedRoom(mRoomNo); } field_0x129 = 1; } return 0; } /* 80042FA8-8004316C 03D8E8 01C4+00 0/0 2/2 0/0 .text moveApproval__14dEvt_control_cFPv */ 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; } /* 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 = (mEventStatus == 0 || mEventStatus == 2); if (!check || mCompulsory) { return 0; } mCompulsory = 1; return orderOld(3, 2, 0, param_2, param_0, NULL, param_1); } void dEvt_control_c::remove() { mMode = 0; mEventStatus = 0; mNum = 0; mDebugStb = 0; field_0xe6 = 0; field_0xe7 = 0; mCullRate = 0.0f; field_0xea = -1; mMapToolId = -1; field_0xec = -1; mStageEventDt = NULL; field_0xe0 = 255; field_0xed = 0; mPreItemNo = -1; mEventFlag = 0; mFlag2 = 0; mChangeOK = NULL; clearSkipSystem(); mCompulsory = 0; field_0x129 = 0; mRoomNo = -1; } /* 80043278-80043280 03DBB8 0008+00 2/2 2/2 0/0 .text getStageEventDt__14dEvt_control_cFv */ dStage_MapEvent_dt_c* dEvt_control_c::getStageEventDt() { return mStageEventDt; } void dEvt_control_c::sceneChange(int exitId) { dStage_changeScene4Event(exitId, mRoomNo, -1, field_0x129, 0.0f, 0, 0, -1); } u32 dEvt_control_c::getPId(void* actor) { if (actor == NULL) { return 0xFFFFFFFF; } else { return fopAcM_GetID(actor); } } /* 800432EC-8004331C 03DC2C 0030+00 7/7 13/13 16/16 .text convPId__14dEvt_control_cFUi */ void* dEvt_control_c::convPId(unsigned int param_0) { return fopAcIt_Judge(fpcSch_JudgeByID, (void*)¶m_0); } /* 8004331C-800433F0 03DC5C 00D4+00 0/0 1/1 0/0 .text getStbDemoData__14dEvt_control_cFPc */ 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; } } } dEvt_info_c::dEvt_info_c() { setCommand(0); setCondition(2); setEventId(-1); setMapToolId(-1); mArchiveName = NULL; mIndex = 0; } /* 80043428-80043480 03DD68 0058+00 0/0 0/0 4/4 .text setEventName__11dEvt_info_cFPc */ void dEvt_info_c::setEventName(char* name) { if (name == NULL) { mEventId = -1; } else { mEventId = i_dComIfGp_getEventManager().getEventIdx(name, -1, -1); } } /* 80043480-800434CC 03DDC0 004C+00 1/1 0/0 0/0 .text getEventName__11dEvt_info_cFv */ char* dEvt_info_c::getEventName() { if (mEventId == -1) { return 0; } else { dEvDtEvent_c* data = i_dComIfGp_getEventManager().getEventData(mEventId); if (data == NULL) { return 0; } else { return data->getName(); } } } void dEvt_info_c::beforeProc() { setCondition(2); } /* 800434D8-80043500 03DE18 0028+00 0/0 4/4 1/1 .text searchMapEventData__14dEvt_control_cFUc */ dStage_MapEvent_dt_c* dEvt_control_c::searchMapEventData(u8 mapToolID) { return searchMapEventData(mapToolID, dComIfGp_roomControl_getStayNo()); } /* 80043500-8004360C 03DE40 010C+00 3/3 7/7 5/5 .text searchMapEventData__14dEvt_control_cFUcl */ dStage_MapEvent_dt_c* dEvt_control_c::searchMapEventData(u8 mapToolID, s32 roomNo) { if (mapToolID == 0xFF) { return NULL; } dStage_roomStatus_c* room = dComIfGp_roomControl_getStatusRoomDt(roomNo); if (room != NULL) { dStage_MapEventInfo_c* roomDt = room->mRoomDt.getMapEventInfo(); if (roomDt != NULL) { for (int i = 0; i < roomDt->mCount; i++) { if (mapToolID == roomDt->mData[i].field_0x4) { return &roomDt->mData[i]; } } } } dStage_MapEventInfo_c* stageDt = i_dComIfGp_getStage()->getMapEventInfo(); if (stageDt != NULL) { for (int i = 0; i < stageDt->mCount; i++) { if (mapToolID == stageDt->mData[i].field_0x4) { return &stageDt->mData[i]; } } } return NULL; } s16 dEvt_control_c::runningEventID(s16 param_0) { return param_0 == field_0xe0 ? mSpecifiedEvent : param_0; } void dEvt_control_c::setPt1(void* ptr) { mPt1 = getPId(ptr); } void dEvt_control_c::setPt2(void* ptr) { mPt2 = getPId(ptr); } void dEvt_control_c::setPtT(void* ptr) { mPtT = getPId(ptr); } void dEvt_control_c::setPtI(void* ptr) { mPtI = getPId(ptr); } void dEvt_control_c::setPtI_Id(unsigned int id) { mPtI = id; } void dEvt_control_c::setPtD(void* ptr) { mPtd = getPId(ptr); } void dEvt_control_c::setGtItm(u8 itemNo) { mGtItm = itemNo; } /* ############################################################################################## */ /* 80379DC6-80379DD0 006426 0008+02 0/0 0/0 0/0 .rodata None */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_80379DC6 = "GIVEMAN"; /* @stringBase0 padding */ SECTION_DEAD static char const* const pad_80379DCE = "\0"; #pragma pop /* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */