diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2024-10-16 22:41:21 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-16 12:41:21 -0700 |
| commit | ec07abb09bc40293ca18b673678348520bf0473d (patch) | |
| tree | 730a0c33206265ecc576d7cfb084f741b3a4bb14 /src/d/actor | |
| parent | 030d6533f0ac320e2dc61a02783134490ff57f43 (diff) | |
Reintroduce missing changes from pull request #2200 (#2213)
* Reintroduce missing changes from pull request #2200
* m_Do_audio OK
Diffstat (limited to 'src/d/actor')
| -rw-r--r-- | src/d/actor/d_a_obj_twGate.cpp | 2 | ||||
| -rw-r--r-- | src/d/actor/d_a_tag_TWgate.cpp | 689 | ||||
| -rw-r--r-- | src/d/actor/d_a_tag_qs.cpp | 549 |
3 files changed, 569 insertions, 671 deletions
diff --git a/src/d/actor/d_a_obj_twGate.cpp b/src/d/actor/d_a_obj_twGate.cpp index d32f368f0b..f56e02eef0 100644 --- a/src/d/actor/d_a_obj_twGate.cpp +++ b/src/d/actor/d_a_obj_twGate.cpp @@ -416,4 +416,4 @@ void __sinit_d_a_obj_twGate_cpp() { REGISTER_CTORS(0x80D202B8, __sinit_d_a_obj_twGate_cpp); #pragma pop -/* 80D20554-80D20554 00024C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
\ No newline at end of file +/* 80D20554-80D20554 00024C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_tag_TWgate.cpp b/src/d/actor/d_a_tag_TWgate.cpp index 3a9bcd633c..4493134370 100644 --- a/src/d/actor/d_a_tag_TWgate.cpp +++ b/src/d/actor/d_a_tag_TWgate.cpp @@ -1,19 +1,13 @@ // -// Generated By: dol2asm -// Translation Unit: d_a_tag_TWgate +// d_a_tag_TWgate // #include "d/actor/d_a_tag_TWgate.h" #include "d/actor/d_a_player.h" #include "d/d_com_inf_game.h" #include "d/d_msg_object.h" -#include "dol2asm.h" #include "f_op/f_op_actor_mng.h" -// -// Types: -// - struct daTagTWGate_zevParam { /* 0x00 */ char* mArcName; /* 0x04 */ char* mEventName; @@ -26,195 +20,18 @@ struct daTagTWGate_zevParam { /* 0x1B */ s8 mLayer; }; -// -// Forward References: -// - -extern "C" void initWait__13daTagTWGate_cFv(); -extern "C" void executeWait__13daTagTWGate_cFv(); -extern "C" void initDemoFilone1__13daTagTWGate_cFv(); -extern "C" void executeDemoFilone1__13daTagTWGate_cFv(); -extern "C" void initDemoFilone2__13daTagTWGate_cFv(); -extern "C" void executeDemoFilone2__13daTagTWGate_cFv(); -extern "C" void initDemoFilone3__13daTagTWGate_cFv(); -extern "C" void executeDemoFilone3__13daTagTWGate_cFv(); -extern "C" void initDemoOrdin1__13daTagTWGate_cFv(); -extern "C" void executeDemoOrdin1__13daTagTWGate_cFv(); -extern "C" void initDemoOrdin2__13daTagTWGate_cFv(); -extern "C" void executeDemoOrdin2__13daTagTWGate_cFv(); -extern "C" void initDemoOrdin3__13daTagTWGate_cFv(); -extern "C" void executeDemoOrdin3__13daTagTWGate_cFv(); -extern "C" void initDemoRanail1__13daTagTWGate_cFv(); -extern "C" void executeDemoRanail1__13daTagTWGate_cFv(); -extern "C" void initDemoRanail2__13daTagTWGate_cFv(); -extern "C" void executeDemoRanail2__13daTagTWGate_cFv(); -extern "C" void initDemoRanail3__13daTagTWGate_cFv(); -extern "C" void executeDemoRanail3__13daTagTWGate_cFv(); -extern "C" void initDemoHyral1__13daTagTWGate_cFv(); -extern "C" void executeDemoHyral1__13daTagTWGate_cFv(); -extern "C" void initDemoHyral2__13daTagTWGate_cFv(); -extern "C" void executeDemoHyral2__13daTagTWGate_cFv(); -extern "C" void initDemoHyral3__13daTagTWGate_cFv(); -extern "C" void executeDemoHyral3__13daTagTWGate_cFv(); -extern "C" void initBaseMtx__13daTagTWGate_cFv(); -extern "C" void downloadModels__13daTagTWGate_cFv(); -extern "C" void initTalk__13daTagTWGate_cFiPP10fopAc_ac_c(); -extern "C" void talkProc__13daTagTWGate_cFPiiPP10fopAc_ac_c(); -extern "C" void createHeapCallBack__13daTagTWGate_cFP10fopAc_ac_c(); -extern "C" void CreateHeap__13daTagTWGate_cFv(); -extern "C" static void daTagTWGate_Create__FP10fopAc_ac_c(); -extern "C" static void daTagTWGate_Delete__FP13daTagTWGate_c(); -extern "C" static void daTagTWGate_Execute__FP13daTagTWGate_c(); -extern "C" static void daTagTWGate_Draw__FP13daTagTWGate_c(); -extern "C" static bool daTagTWGate_IsDelete__FP13daTagTWGate_c(); -extern "C" void __sinit_d_a_tag_TWgate_cpp(); -extern "C" u8 const mAttr__13daTagTWGate_c[1 + 3 /* padding */]; -extern "C" extern char const* const d_a_tag_TWgate__stringBase0; -extern "C" u8 ActionTable__13daTagTWGate_c[312]; -extern "C" extern void* g_profile_Tag_TWGate[12]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_setNextStage__FPCcsScSc(); -extern "C" void isDarkClearLV__21dSv_player_status_b_cCFi(); -extern "C" void onEventBit__11dSv_event_cFUs(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void reset__14dEvt_control_cFPv(); -extern "C" void dEv_noFinishSkipProc__FPvi(); -extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii(); -extern "C" void onSkipFade__14dEvt_control_cFv(); -extern "C" void setObjectArchive__16dEvent_manager_cFPc(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyNowCutName__16dEvent_manager_cFi(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void offMsgSendControl__12dMsgObject_cFv(); -extern "C" void isMsgSendControl__12dMsgObject_cFv(); -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 getMsgNo__10dMsgFlow_cFv(); -extern "C" void getMsg__10dMsgFlow_cFv(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - /* 80D525F8-80D52604 000078 000C+00 1/0 0/0 0/0 .text initWait__13daTagTWGate_cFv */ void daTagTWGate_c::initWait() { mEventID = -1; } -/* ############################################################################################## */ -/* 80D55848-80D55852 00009C 000A+00 4/3 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55848; - -/* 80D55852-80D55861 0000A6 000F+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55852; - -/* 80D55861-80D55875 0000B5 0014+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55861; - -/* 80D55875-80D55887 0000C9 0012+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55875; - -/* 80D55887-80D5588F 0000DB 0008+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55887; - -/* 80D5588F-80D55899 0000E3 000A+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D5588F; - -/* 80D55899-80D558A7 0000ED 000E+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55899; - -/* 80D558A7-80D558BA 0000FB 0013+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D558A7; - -/* 80D558BA-80D558CB 00010E 0011+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D558BA; - -/* 80D558CB-80D558D3 00011F 0008+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D558CB; - -/* 80D558D3-80D558DD 000127 000A+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D558D3; - -/* 80D558DD-80D558EC 000131 000F+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D558DD; - -/* 80D558EC-80D55900 000140 0014+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D558EC; - -/* 80D55900-80D55912 000154 0012+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55900; - -/* 80D55912-80D5591C 000166 000A+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D55912; - -/* 80D5591C-80D5592A 000170 000E+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D5591C; - -/* 80D5592A-80D5593D 00017E 0013+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D5592A; - -/* 80D5593D-80D5594E 000191 0011+00 1/0 0/0 0/0 .rodata None */ -extern "C" char const* const stringBase_80D5593D; - /* 80D557AC-80D557B0 000000 0001+03 5/5 0/0 0/0 .rodata mAttr__13daTagTWGate_c */ -SECTION_RODATA u8 const daTagTWGate_c::mAttr[1 + 3 /* padding */] = { - 0x00, - /* padding */ - 0x00, - 0x00, +u8 const daTagTWGate_c::mAttr[1] = { 0x00, }; -COMPILER_STRIP_GATE(0x80D557AC, &daTagTWGate_c::mAttr); /* 80D557B0-80D55820 -00001 0070+00 14/18 0/0 0/0 .rodata l_zevParamTbl */ -SECTION_RODATA static daTagTWGate_zevParam const l_zevParamTbl[4] = { +static daTagTWGate_zevParam const l_zevParamTbl[4] = { { "TWGate_FL", "TW_GATE_FILONE", @@ -260,51 +77,16 @@ SECTION_RODATA static daTagTWGate_zevParam const l_zevParamTbl[4] = { 14, }, }; -COMPILER_STRIP_GATE(0x80D557B0, &l_zevParamTbl); - -/* 80D55820-80D55824 000074 0004+00 1/1 0/0 0/0 .rodata @3857 */ -SECTION_RODATA static f32 const lit_3857 = 100.0f; -COMPILER_STRIP_GATE(0x80D55820, &lit_3857); - -/* 80D55824-80D5582C 000078 0008+00 1/1 0/0 0/0 .rodata @3858 */ -SECTION_RODATA static u8 const lit_3858[8] = { - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D55824, &lit_3858); - -/* 80D55848-80D55848 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D55848 = "TWGate_FL"; -SECTION_DEAD static char const* const stringBase_80D55852 = "TW_GATE_FILONE"; -SECTION_DEAD static char const* const stringBase_80D55861 = "TW_GATE_FILONE_TALK"; -SECTION_DEAD static char const* const stringBase_80D55875 = "TW_GATE_FILONE_IN"; -SECTION_DEAD static char const* const stringBase_80D55887 = "F_SP108"; -SECTION_DEAD static char const* const stringBase_80D5588F = "TWGate_OD"; -SECTION_DEAD static char const* const stringBase_80D55899 = "TW_GATE_ORDIN"; -SECTION_DEAD static char const* const stringBase_80D558A7 = "TW_GATE_ORDIN_TALK"; -SECTION_DEAD static char const* const stringBase_80D558BA = "TW_GATE_ORDIN_IN"; -SECTION_DEAD static char const* const stringBase_80D558CB = "F_SP121"; -SECTION_DEAD static char const* const stringBase_80D558D3 = "TWGate_RN"; -SECTION_DEAD static char const* const stringBase_80D558DD = "TW_GATE_RANAIL"; -SECTION_DEAD static char const* const stringBase_80D558EC = "TW_GATE_RANAIL_TALK"; -SECTION_DEAD static char const* const stringBase_80D55900 = "TW_GATE_RANAIL_IN"; -SECTION_DEAD static char const* const stringBase_80D55912 = "TWGate_HY"; -SECTION_DEAD static char const* const stringBase_80D5591C = "TW_GATE_HYRAL"; -SECTION_DEAD static char const* const stringBase_80D5592A = "TW_GATE_HYRAL_TALK"; -SECTION_DEAD static char const* const stringBase_80D5593D = "TW_GATE_HYRAL_IN"; -SECTION_DEAD static char const* const stringBase_80D5594E = "Gate"; -#pragma pop /* 80D55974-80D55980 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80D55980-80D55994 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ #pragma push #pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { +static u32 lit_1787[1 + 4 /* padding */] = { 0x02000201, /* padding */ 0x40080000, @@ -315,10 +97,10 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { #pragma pop /* 80D55994-80D55998 -00001 0004+00 12/12 0/0 0/0 .data l_myName */ -SECTION_DATA static const char* l_myName = "Gate"; +static const char* l_myName = "Gate"; /* 80D55AD0-80D55C08 00015C 0138+00 14/15 0/0 0/0 .data ActionTable__13daTagTWGate_c */ -SECTION_DATA actionFunc daTagTWGate_c::ActionTable[13][2] = { +actionFunc daTagTWGate_c::ActionTable[13][2] = { {&daTagTWGate_c::initWait, &daTagTWGate_c::executeWait}, {&daTagTWGate_c::initDemoFilone1, &daTagTWGate_c::executeDemoFilone1}, {&daTagTWGate_c::initDemoFilone2, &daTagTWGate_c::executeDemoFilone2}, @@ -442,26 +224,22 @@ void daTagTWGate_c::executeDemoFilone1() { /* 80D52AF4-80D52BF0 000574 00FC+00 1/0 0/0 0/0 .text initDemoFilone2__13daTagTWGate_cFv */ -#ifdef NONMATCHING void daTagTWGate_c::initDemoFilone2() { fopAcM_onSwitch(this, getSwitch()); eventInfo.setArchiveName(l_zevParamTbl[mType].mArcName); - dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName()); + dComIfG_play_c& play = g_dComIfG_gameInfo.play; + dEvent_manager_c& mng = play.getEvtManager(); + mng.setObjectArchive(eventInfo.getArchiveName()); mEventID = - dComIfGp_getEventManager().getEventIdx(this, l_zevParamTbl[mType].mTalkEventName, -1); + mng.getEventIdx(this, l_zevParamTbl[mType].mTalkEventName, -1); - if (dComIfGp_event_runCheck()) { + if (play.getEvent().mEventStatus != 0) { dComIfGp_getEvent().reset(this); fopAcM_orderChangeEventId(this, mEventID, 1, -1); } else { fopAcM_orderOtherEventId(this, mEventID, -1, -1, 4, 1); } } -#else -void daTagTWGate_c::initDemoFilone2() { - // NONMATCHING -} -#endif /* 80D52BF0-80D52DB4 000670 01C4+00 1/0 0/0 0/0 .text executeDemoFilone2__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoFilone2() { @@ -522,38 +300,6 @@ void daTagTWGate_c::initDemoFilone3() { fopAcM_orderChangeEventId(this, mEventID, 1, -1); } -/* ############################################################################################## */ -/* 80D5582C-80D55830 000080 0004+00 1/5 0/0 0/0 .rodata @4079 */ -SECTION_RODATA static f32 const lit_4079 = 1.0f; -COMPILER_STRIP_GATE(0x80D5582C, &lit_4079); - -/* 80D55830-80D55834 000084 0004+00 1/6 0/0 0/0 .rodata @4080 */ -SECTION_RODATA static u8 const lit_4080[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D55830, &lit_4080); - -/* 80D55834-80D55838 000088 0004+00 0/4 0/0 0/0 .rodata @4081 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4081 = 240.0f; -COMPILER_STRIP_GATE(0x80D55834, &lit_4081); -#pragma pop - -/* 80D55838-80D5583C 00008C 0004+00 0/4 0/0 0/0 .rodata @4082 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4082 = -710.0f; -COMPILER_STRIP_GATE(0x80D55838, &lit_4082); -#pragma pop - -/* 80D5583C-80D55840 000090 0004+00 1/5 0/0 0/0 .rodata @4083 */ -SECTION_RODATA static f32 const lit_4083 = -1.0f; -COMPILER_STRIP_GATE(0x80D5583C, &lit_4083); - /* 80D52E7C-80D53250 0008FC 03D4+00 1/0 0/0 0/0 .text executeDemoFilone3__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoFilone3() { s32 staffId = dComIfGp_evmng_getMyStaffId(l_myName, NULL, 0); @@ -644,7 +390,6 @@ void daTagTWGate_c::executeDemoFilone3() { } } - /* 80D53250-80D532DC 000CD0 008C+00 1/0 0/0 0/0 .text initDemoOrdin1__13daTagTWGate_cFv */ void daTagTWGate_c::initDemoOrdin1() { @@ -655,18 +400,90 @@ void daTagTWGate_c::initDemoOrdin1() { /* 80D532DC-80D53454 000D5C 0178+00 1/0 0/0 0/0 .text executeDemoOrdin1__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoOrdin1() { - // NONMATCHING + dEvent_manager_c& evtMng = dComIfGp_getEventManager(); + int staffId = evtMng.getMyStaffId(l_myName, NULL, 0); + if (staffId != -1) { + int* cutName = (int*)evtMng.getMyNowCutName(staffId); + if (evtMng.getIsAddvance(staffId)) { + switch (*cutName) { + case '0001': + dComIfGp_getEvent().startCheckSkipEdge(this); + break; + } + } + switch (*cutName) { + case '0001': + if (dComIfGp_getEvent().checkSkipEdge()) { + dComIfGp_getEvent().onSkipFade(); + setAction(ACT_DEMO_ORDIN_2); + } + evtMng.cutEnd(staffId); + break; + } + if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && evtMng.endCheck(mEventID)) { + setAction(ACT_DEMO_ORDIN_2); + } + } } /* 80D53454-80D53550 000ED4 00FC+00 1/0 0/0 0/0 .text initDemoOrdin2__13daTagTWGate_cFv */ void daTagTWGate_c::initDemoOrdin2() { - // NONMATCHING + fopAcM_onSwitch(this, getSwitch()); + eventInfo.setArchiveName(l_zevParamTbl[mType].mArcName); + dComIfG_play_c& play = g_dComIfG_gameInfo.play; + dEvent_manager_c& mng = play.getEvtManager(); + mng.setObjectArchive(eventInfo.getArchiveName()); + mEventID = mng.getEventIdx(this, l_zevParamTbl[mType].mTalkEventName, 0xff); + if (play.getEvent().mEventStatus != 0) { + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, mEventID, 1, 0xffff); + } else { + fopAcM_orderOtherEventId(this, mEventID, 0xff, 0xffff, 4, 1); + } } /* 80D53550-80D53714 000FD0 01C4+00 1/0 0/0 0/0 .text executeDemoOrdin2__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoOrdin2() { - // NONMATCHING + dEvent_manager_c& evtMng = dComIfGp_getEventManager(); + int staffId = evtMng.getMyStaffId(l_myName, NULL, 0); + if (staffId == -1) { + return; + } + int* cutName = (int*)evtMng.getMyNowCutName(staffId); + if (evtMng.getIsAddvance(staffId)) { + switch(*cutName) { + case '0001': + break; + case '0002': + initTalk(0xbc1, NULL); + break; + case '0003': + break; + } + } + switch(*cutName) { + case '0001': + case '0003': + evtMng.cutEnd(staffId); + break; + case '0002': + if (talkProc(NULL, 1, NULL)) { + if (mMsgFlow.getChoiceNo() == 0) { + setAction(ACT_DEMO_ORDIN_3); + } + evtMng.cutEnd(staffId); + } + break; + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && + evtMng.endCheck(mEventID)) + { + dComIfGp_event_reset(); + field_0x5e0 = 0; + setAction(ACT_WAIT); + } } /* 80D53714-80D537DC 001194 00C8+00 1/0 0/0 0/0 .text initDemoOrdin3__13daTagTWGate_cFv @@ -684,7 +501,84 @@ void daTagTWGate_c::initDemoOrdin3() { /* 80D537DC-80D53BD0 00125C 03F4+00 1/0 0/0 0/0 .text executeDemoOrdin3__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoOrdin3() { - // NONMATCHING + dEvent_manager_c& evtMng = dComIfGp_getEventManager(); + int staffId = evtMng.getMyStaffId(l_myName, NULL, 0); + if (staffId == -1) { + return; + } + int* cutName = (int*)evtMng.getMyNowCutName(staffId); + if (evtMng.getIsAddvance(staffId)) { + switch(*cutName) { + case '0001': + break; + case '0002': + dComIfGp_getEvent().startCheckSkipEdge(this); + field_0x5e1 = 0; + break; + case '0003': + initBaseMtx(); + mpMorf->setPlaySpeed(1.0f); + field_0x5e0 = 1; + break; + } + } + switch(*cutName) { + case '0001': + int downloadResult = downloadModels(); + if (downloadResult == 1) { + evtMng.cutEnd(staffId); + } else if (downloadResult == -1) { + dComIfGp_setNextStage( + l_zevParamTbl[mType].mStage, + l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, + l_zevParamTbl[mType].mLayer); + } + break; + case '0002': + if (dComIfGp_getEvent().checkSkipEdge()) { + dComIfGp_getEvent().onSkipFade(); + dComIfGp_setNextStage( + l_zevParamTbl[mType].mStage, + l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, + l_zevParamTbl[mType].mLayer); + } + int dVar2 = daPy_py_c::i_checkNowWolf() ? 0x2e : 0x4a; + if (field_0x5e1++ == dVar2) { + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz cStack_30; + csXyz cStack_38(0, fopAcM_GetShapeAngle_p(player)->y + 0x8000, 0); + mDoMtx_stack_c::transS(fopAcM_GetPosition(player)); + mDoMtx_stack_c::YrotM(cStack_38.y); + mDoMtx_stack_c::transM(0.0f, 240.0f, -710.0f); + mDoMtx_stack_c::multVecZero(&cStack_30); + dComIfGp_particle_set(0x86c5, &cStack_30, &cStack_38, NULL); + Z2GetAudioMgr()->seStart(Z2SE_OBJ_DARK_GATE_RIPPLE, &cStack_30, 0, 0, + 1.0f, 1.0f, -1.0f, -1.0f, 0); + evtMng.cutEnd(staffId); + } + break; + case '0003': + if (dComIfGp_getEvent().checkSkipEdge()) { + dComIfGp_getEvent().onSkipFade(); + dComIfGp_setNextStage( + l_zevParamTbl[mType].mStage, + l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, + l_zevParamTbl[mType].mLayer); + } + if (mpMorf->isStop()) { + evtMng.cutEnd(staffId); + } + break; + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && evtMng.endCheck(mEventID)) { + dComIfGp_event_reset(); + field_0x5e0 = 0; + setAction(ACT_WAIT); + } } /* 80D53BD0-80D53C5C 001650 008C+00 1/0 0/0 0/0 .text initDemoRanail1__13daTagTWGate_cFv @@ -697,18 +591,90 @@ void daTagTWGate_c::initDemoRanail1() { /* 80D53C5C-80D53DD4 0016DC 0178+00 1/0 0/0 0/0 .text executeDemoRanail1__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoRanail1() { - // NONMATCHING + dEvent_manager_c& evtMng = dComIfGp_getEventManager(); + int staffId = evtMng.getMyStaffId(l_myName, NULL, 0); + if (staffId != -1) { + int* cutName = (int*)evtMng.getMyNowCutName(staffId); + if (evtMng.getIsAddvance(staffId)) { + switch (*cutName) { + case '0001': + dComIfGp_getEvent().startCheckSkipEdge(this); + break; + } + } + switch (*cutName) { + case '0001': + if (dComIfGp_getEvent().checkSkipEdge()) { + dComIfGp_getEvent().onSkipFade(); + setAction(ACT_DEMO_RANAIL_2); + } + evtMng.cutEnd(staffId); + break; + } + if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && evtMng.endCheck(mEventID)) { + setAction(ACT_DEMO_RANAIL_2); + } + } } /* 80D53DD4-80D53ED0 001854 00FC+00 1/0 0/0 0/0 .text initDemoRanail2__13daTagTWGate_cFv */ void daTagTWGate_c::initDemoRanail2() { - // NONMATCHING + fopAcM_onSwitch(this, getSwitch()); + eventInfo.setArchiveName(l_zevParamTbl[mType].mArcName); + dComIfG_play_c& play = g_dComIfG_gameInfo.play; + dEvent_manager_c& mng = play.getEvtManager(); + mng.setObjectArchive(eventInfo.getArchiveName()); + mEventID = mng.getEventIdx(this, l_zevParamTbl[mType].mTalkEventName, 0xff); + if (play.getEvent().mEventStatus != 0) { + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, mEventID, 1, 0xffff); + } else { + fopAcM_orderOtherEventId(this, mEventID, 0xff, 0xffff, 4, 1); + } } /* 80D53ED0-80D54094 001950 01C4+00 1/0 0/0 0/0 .text executeDemoRanail2__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoRanail2() { - // NONMATCHING + dEvent_manager_c& evtMng = dComIfGp_getEventManager(); + int staffId = evtMng.getMyStaffId(l_myName, NULL, 0); + if (staffId == -1) { + return; + } + int* cutName = (int*)evtMng.getMyNowCutName(staffId); + if (evtMng.getIsAddvance(staffId)) { + switch(*cutName) { + case '0001': + break; + case '0002': + initTalk(0xbc1, NULL); + break; + case '0003': + break; + } + } + switch(*cutName) { + case '0001': + case '0003': + evtMng.cutEnd(staffId); + break; + case '0002': + if (talkProc(NULL, 1, NULL)) { + if (mMsgFlow.getChoiceNo() == 0) { + setAction(ACT_DEMO_RANAIL_3); + } + evtMng.cutEnd(staffId); + } + break; + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && + evtMng.endCheck(mEventID)) + { + dComIfGp_event_reset(); + field_0x5e0 = 0; + setAction(ACT_WAIT); + } } /* 80D54094-80D54178 001B14 00E4+00 1/0 0/0 0/0 .text initDemoRanail3__13daTagTWGate_cFv @@ -727,7 +693,84 @@ void daTagTWGate_c::initDemoRanail3() { /* 80D54178-80D5456C 001BF8 03F4+00 1/0 0/0 0/0 .text executeDemoRanail3__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoRanail3() { - // NONMATCHING + dEvent_manager_c& evtMng = dComIfGp_getEventManager(); + int staffId = evtMng.getMyStaffId(l_myName, NULL, 0); + if (staffId == -1) { + return; + } + int* cutName = (int*)evtMng.getMyNowCutName(staffId); + if (evtMng.getIsAddvance(staffId)) { + switch(*cutName) { + case '0001': + break; + case '0002': + dComIfGp_getEvent().startCheckSkipEdge(this); + field_0x5e1 = 0; + break; + case '0003': + initBaseMtx(); + mpMorf->setPlaySpeed(1.0f); + field_0x5e0 = 1; + break; + } + } + switch(*cutName) { + case '0001': + int downloadResult = downloadModels(); + if (downloadResult == 1) { + evtMng.cutEnd(staffId); + } else if (downloadResult == -1) { + dComIfGp_setNextStage( + l_zevParamTbl[mType].mStage, + l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, + l_zevParamTbl[mType].mLayer); + } + break; + case '0002': + if (dComIfGp_getEvent().checkSkipEdge()) { + dComIfGp_getEvent().onSkipFade(); + dComIfGp_setNextStage( + l_zevParamTbl[mType].mStage, + l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, + l_zevParamTbl[mType].mLayer); + } + int dVar2 = daPy_py_c::i_checkNowWolf() ? 0x2e : 0x4a; + if (field_0x5e1++ == dVar2) { + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz cStack_30; + csXyz cStack_38(0, fopAcM_GetShapeAngle_p(player)->y + 0x8000, 0); + mDoMtx_stack_c::transS(fopAcM_GetPosition(player)); + mDoMtx_stack_c::YrotM(cStack_38.y); + mDoMtx_stack_c::transM(0.0f, 240.0f, -710.0f); + mDoMtx_stack_c::multVecZero(&cStack_30); + dComIfGp_particle_set(0x86c5, &cStack_30, &cStack_38, NULL); + Z2GetAudioMgr()->seStart(Z2SE_OBJ_DARK_GATE_RIPPLE, &cStack_30, 0, 0, + 1.0f, 1.0f, -1.0f, -1.0f, 0); + evtMng.cutEnd(staffId); + } + break; + case '0003': + if (dComIfGp_getEvent().checkSkipEdge()) { + dComIfGp_getEvent().onSkipFade(); + dComIfGp_setNextStage( + l_zevParamTbl[mType].mStage, + l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, + l_zevParamTbl[mType].mLayer); + } + if (mpMorf->isStop()) { + evtMng.cutEnd(staffId); + } + break; + } + + if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && evtMng.endCheck(mEventID)) { + dComIfGp_event_reset(); + field_0x5e0 = 0; + setAction(ACT_WAIT); + } } /* 80D5456C-80D545F8 001FEC 008C+00 1/0 0/0 0/0 .text initDemoHyral1__13daTagTWGate_cFv @@ -740,30 +783,48 @@ void daTagTWGate_c::initDemoHyral1() { /* 80D545F8-80D54770 002078 0178+00 1/0 0/0 0/0 .text executeDemoHyral1__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoHyral1() { - // NONMATCHING + dEvent_manager_c& evtMng = dComIfGp_getEventManager(); + int staffId = evtMng.getMyStaffId(l_myName, NULL, 0); + if (staffId != -1) { + int* cutName = (int*)evtMng.getMyNowCutName(staffId); + if (evtMng.getIsAddvance(staffId)) { + switch (*cutName) { + case '0001': + dComIfGp_getEvent().startCheckSkipEdge(this); + break; + } + } + switch (*cutName) { + case '0001': + if (dComIfGp_getEvent().checkSkipEdge()) { + dComIfGp_getEvent().onSkipFade(); + setAction(ACT_DEMO_HYRAL_2); + } + evtMng.cutEnd(staffId); + break; + } + if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && evtMng.endCheck(mEventID)) { + setAction(ACT_DEMO_HYRAL_2); + } + } } /* 80D54770-80D5486C 0021F0 00FC+00 1/0 0/0 0/0 .text initDemoHyral2__13daTagTWGate_cFv */ -// load order -#ifdef NONMATCHING void daTagTWGate_c::initDemoHyral2() { fopAcM_onSwitch(this, getSwitch()); eventInfo.setArchiveName(l_zevParamTbl[mType].mArcName); - dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName()); - mEventID = dComIfGp_getEventManager().getEventIdx(this, l_zevParamTbl[mType].mTalkEventName, 0xff); - if (dComIfGp_event_runCheck()) { + dComIfG_play_c& play = g_dComIfG_gameInfo.play; + dEvent_manager_c& mng = play.getEvtManager(); + mng.setObjectArchive(eventInfo.getArchiveName()); + mEventID = mng.getEventIdx(this, l_zevParamTbl[mType].mTalkEventName, 0xff); + if (play.getEvent().mEventStatus != 0) { dComIfGp_getEvent().reset(this); fopAcM_orderChangeEventId(this, mEventID, 1, 0xffff); } else { fopAcM_orderOtherEventId(this, mEventID, 0xff, 0xffff, 4, 1); } } -#else -void daTagTWGate_c::initDemoHyral2() { - // NONMATCHING -} -#endif /* 80D5486C-80D54A30 0022EC 01C4+00 1/0 0/0 0/0 .text executeDemoHyral2__13daTagTWGate_cFv */ void daTagTWGate_c::executeDemoHyral2() { @@ -892,22 +953,6 @@ void daTagTWGate_c::executeDemoHyral3() { } } - -/* ############################################################################################## */ -/* 80D55840-80D55844 000094 0004+00 0/1 0/0 0/0 .rodata @4790 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4790 = 250.0f; -COMPILER_STRIP_GATE(0x80D55840, &lit_4790); -#pragma pop - -/* 80D55844-80D55848 000098 0004+00 0/1 0/0 0/0 .rodata @4791 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4791 = -840.0f; -COMPILER_STRIP_GATE(0x80D55844, &lit_4791); -#pragma pop - /* 80D54ECC-80D54F88 00294C 00BC+00 4/4 0/0 0/0 .text initBaseMtx__13daTagTWGate_cFv */ void daTagTWGate_c::initBaseMtx() { cullMtx = mpMorf->getModel()->getBaseTRMtx(); @@ -925,7 +970,6 @@ void daTagTWGate_c::initBaseMtx() { mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); } - /* 80D54F88-80D5502C 002A08 00A4+00 4/4 0/0 0/0 .text downloadModels__13daTagTWGate_cFv */ int daTagTWGate_c::downloadModels() { @@ -1004,7 +1048,6 @@ int daTagTWGate_c::CreateHeap() { } } - int daTagTWGate_c::create() { fopAcM_SetupActor(this, daTagTWGate_c); @@ -1052,7 +1095,6 @@ static int daTagTWGate_Execute(daTagTWGate_c* i_gate) { return i_gate->execute(); } - /* 80D554E4-80D55518 002F64 0034+00 1/0 0/0 0/0 .text daTagTWGate_Draw__FP13daTagTWGate_c */ static int daTagTWGate_Draw(daTagTWGate_c* i_gate) { @@ -1066,25 +1108,28 @@ static int daTagTWGate_IsDelete(daTagTWGate_c*) { /* ############################################################################################## */ /* 80D55C08-80D55C28 -00001 0020+00 1/0 0/0 0/0 .data l_daTagTWGate_Method */ -SECTION_DATA static void* l_daTagTWGate_Method[8] = { - (void*)daTagTWGate_Create__FP10fopAc_ac_c, - (void*)daTagTWGate_Delete__FP13daTagTWGate_c, - (void*)daTagTWGate_Execute__FP13daTagTWGate_c, - (void*)daTagTWGate_IsDelete__FP13daTagTWGate_c, - (void*)daTagTWGate_Draw__FP13daTagTWGate_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class l_daTagTWGate_Method = { + (process_method_func)daTagTWGate_Create, (process_method_func)daTagTWGate_Delete, + (process_method_func)daTagTWGate_Execute, (process_method_func)daTagTWGate_IsDelete, + (process_method_func)daTagTWGate_Draw, }; /* 80D55C28-80D55C58 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_TWGate */ -SECTION_DATA extern void* g_profile_Tag_TWGate[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x02C80000, (void*)&g_fpcLf_Method, - (void*)0x000005E4, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x01050000, (void*)&l_daTagTWGate_Method, - (void*)0x00040000, (void*)0x000E0000, +extern actor_process_profile_definition g_profile_Tag_TWGate = { + fpcLy_CURRENT_e, + 7, + fpcPi_CURRENT_e, + PROC_Tag_TWGate, + &g_fpcLf_Method.mBase, + sizeof(daTagTWGate_c), + 0, + 0, + &g_fopAc_Method.base, + 0x105, + &l_daTagTWGate_Method, + 0x40000, + fopAc_ACTOR_e, + fopAc_CULLBOX_CUSTOM_e, }; -/* 80D55848-80D55848 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
\ No newline at end of file +/* 80D55848-80D55848 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_tag_qs.cpp b/src/d/actor/d_a_tag_qs.cpp index 8bef61ab73..0b7416bc72 100644 --- a/src/d/actor/d_a_tag_qs.cpp +++ b/src/d/actor/d_a_tag_qs.cpp @@ -1,111 +1,15 @@ // -// Generated By: dol2asm -// Translation Unit: d_a_tag_qs +// d_a_tag_qs // #include "d/actor/d_a_tag_qs.h" +#include "d/actor/d_a_obj_carry.h" +#include "d/actor/d_a_player.h" #include "d/d_cc_d.h" -#include "dol2asm.h" - -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daTagQs_c { - /* 80D5DE78 */ ~daTagQs_c(); - /* 80D5DFB0 */ void create(); - /* 80D5E1FC */ void getPower(); - /* 80D5E220 */ void getSafeArea(); - /* 80D5E244 */ void getPower80(); - /* 80D5E268 */ void getCenterPower(); - /* 80D5E28C */ void calcPower(f32, f32); - /* 80D5E9F8 */ void execute(); - /* 80D5EBF8 */ bool draw(); -}; - -struct daItem_c { - /* 80037BE0 */ void startCtrl(); -}; - -struct daItemBase_c { - /* 80037A5C */ void getItemNo(); -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -// -// Forward References: -// - -extern "C" void __dt__9daTagQs_cFv(); -extern "C" void create__9daTagQs_cFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void getPower__9daTagQs_cFv(); -extern "C" void getSafeArea__9daTagQs_cFv(); -extern "C" void getPower80__9daTagQs_cFv(); -extern "C" void getCenterPower__9daTagQs_cFv(); -extern "C" void calcPower__9daTagQs_cFff(); -extern "C" static void hikiyose__FP4cXyzP4cXyzP4cXyzf(); -extern "C" static void search__FPvPv(); -extern "C" void execute__9daTagQs_cFv(); -extern "C" bool draw__9daTagQs_cFv(); -extern "C" static void daTagQs_Draw__FP9daTagQs_c(); -extern "C" static void daTagQs_Execute__FP9daTagQs_c(); -extern "C" static bool daTagQs_IsDelete__FP9daTagQs_c(); -extern "C" static void daTagQs_Delete__FP9daTagQs_c(); -extern "C" static void daTagQs_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); - -// -// 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 fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfGs_BossLife_public_Set__FSc(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getItemNo__12daItemBase_cFv(); -extern "C" void startCtrl__8daItem_cFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void normalize__4cXyzFv(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// +#include "d/d_a_item_static.h" +#include "d/d_save.h" +#include "d/d_com_inf_game.h" +#include "SSystem/SComponent/c_math.h" /* ############################################################################################## */ /* 80D5ED44-80D5ED88 000000 0044+00 1/1 0/0 0/0 .data l_cc_cyl_src */ @@ -123,295 +27,244 @@ static dCcD_SrcCyl l_cc_cyl_src = { } // mCyl }; -/* 80D5ED88-80D5EDA8 -00001 0020+00 1/0 0/0 0/0 .data l_daTagQs_Method */ -SECTION_DATA static void* l_daTagQs_Method[8] = { - (void*)daTagQs_Create__FP10fopAc_ac_c, - (void*)daTagQs_Delete__FP9daTagQs_c, - (void*)daTagQs_Execute__FP9daTagQs_c, - (void*)daTagQs_IsDelete__FP9daTagQs_c, - (void*)daTagQs_Draw__FP9daTagQs_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - -/* 80D5EDA8-80D5EDD8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_QS */ -SECTION_DATA extern void* g_profile_TAG_QS[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x02230000, (void*)&g_fpcLf_Method, - (void*)0x000006F0, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x01120000, (void*)&l_daTagQs_Method, - (void*)0x00040000, (void*)NULL, -}; - -/* 80D5EDD8-80D5EDE4 000094 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80D5EDE4-80D5EDF0 0000A0 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80D5EDF0-80D5EDFC 0000AC 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80D5EDFC-80D5EE08 0000B8 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - /* 80D5DE78-80D5DFB0 000078 0138+00 1/1 0/0 0/0 .text __dt__9daTagQs_cFv */ -daTagQs_c::~daTagQs_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D5ECE0-80D5ECE4 000000 0004+00 5/5 0/0 0/0 .rodata @3734 */ -SECTION_RODATA static f32 const lit_3734 = 1.0f; -COMPILER_STRIP_GATE(0x80D5ECE0, &lit_3734); - -/* 80D5ECE4-80D5ECE8 000004 0004+00 1/3 0/0 0/0 .rodata @3735 */ -SECTION_RODATA static f32 const lit_3735 = 20.0f; -COMPILER_STRIP_GATE(0x80D5ECE4, &lit_3735); - -/* 80D5ECE8-80D5ECEC 000008 0004+00 0/1 0/0 0/0 .rodata @3736 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3736 = 50.0f; -COMPILER_STRIP_GATE(0x80D5ECE8, &lit_3736); -#pragma pop +daTagQs_c::~daTagQs_c() {} /* 80D5DFB0-80D5E110 0001B0 0160+00 1/1 0/0 0/0 .text create__9daTagQs_cFv */ -void daTagQs_c::create() { - // NONMATCHING +int daTagQs_c::create() { + fopAcM_SetupActor(this, daTagQs_c); + f32 typeScale; + if (getType() == 0) { + typeScale = 1.0f; + } else { + typeScale = 20.0f; + } + field_0x568 = scale.x * 50.0f * typeScale; + field_0x56c = scale.y * 50.0f * typeScale; + field_0x570 = 0; + field_0x574 = 0; + mStts.Init(0xff, 0, this); + mCyl.Set(l_cc_cyl_src); + mCyl.SetStts(&mStts); + return cPhs_COMPLEATE_e; } -/* 80D5E110-80D5E16C 000310 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D5E16C-80D5E1B4 00036C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80D5E1B4-80D5E1FC 0003B4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D5ECEC-80D5ECF0 00000C 0004+00 1/2 0/0 0/0 .rodata @3813 */ -SECTION_RODATA static f32 const lit_3813 = 4.0f; -COMPILER_STRIP_GATE(0x80D5ECEC, &lit_3813); - -/* 80D5ECF0-80D5ECF4 000010 0004+00 1/1 0/0 0/0 .rodata @3814 */ -SECTION_RODATA static f32 const lit_3814 = 5.0f; -COMPILER_STRIP_GATE(0x80D5ECF0, &lit_3814); - /* 80D5E1FC-80D5E220 0003FC 0024+00 2/2 0/0 0/0 .text getPower__9daTagQs_cFv */ -void daTagQs_c::getPower() { - // NONMATCHING +f32 daTagQs_c::getPower() { + return getType() == 0 ? 4.0f : 5.0f; } -/* ############################################################################################## */ -/* 80D5ECF4-80D5ECF8 000014 0004+00 1/2 0/0 0/0 .rodata @3823 */ -SECTION_RODATA static f32 const lit_3823 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x80D5ECF4, &lit_3823); - -/* 80D5ECF8-80D5ECFC 000018 0004+00 1/2 0/0 0/0 .rodata @3824 */ -SECTION_RODATA static f32 const lit_3824 = 0.5f; -COMPILER_STRIP_GATE(0x80D5ECF8, &lit_3824); - /* 80D5E220-80D5E244 000420 0024+00 1/1 0/0 0/0 .text getSafeArea__9daTagQs_cFv */ -void daTagQs_c::getSafeArea() { - // NONMATCHING +f32 daTagQs_c::getSafeArea() { + return getType() == 0 ? 0.8f : 0.5f; } -/* ############################################################################################## */ -/* 80D5ECFC-80D5ED00 00001C 0004+00 1/1 0/0 0/0 .rodata @3833 */ -SECTION_RODATA static f32 const lit_3833 = 6.0f; -COMPILER_STRIP_GATE(0x80D5ECFC, &lit_3833); - -/* 80D5ED00-80D5ED04 000020 0004+00 1/1 0/0 0/0 .rodata @3834 */ -SECTION_RODATA static f32 const lit_3834 = 10.0f; -COMPILER_STRIP_GATE(0x80D5ED00, &lit_3834); - /* 80D5E244-80D5E268 000444 0024+00 1/1 0/0 0/0 .text getPower80__9daTagQs_cFv */ -void daTagQs_c::getPower80() { - // NONMATCHING +f32 daTagQs_c::getPower80() { + return getType() == 0 ? 6.0f : 10.0f; } -/* ############################################################################################## */ -/* 80D5ED04-80D5ED08 000024 0004+00 1/1 0/0 0/0 .rodata @3843 */ -SECTION_RODATA static f32 const lit_3843 = 12.0f; -COMPILER_STRIP_GATE(0x80D5ED04, &lit_3843); - /* 80D5E268-80D5E28C 000468 0024+00 1/1 0/0 0/0 .text getCenterPower__9daTagQs_cFv */ -void daTagQs_c::getCenterPower() { - // NONMATCHING +f32 daTagQs_c::getCenterPower() { + return getType() == 0 ? 12.0f : 20.0f; } -/* ############################################################################################## */ -/* 80D5ED08-80D5ED10 000028 0004+04 0/2 0/0 0/0 .rodata @3863 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3863[1 + 1 /* padding */] = { - 30.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80D5ED08, &lit_3863); -#pragma pop - -/* 80D5ED10-80D5ED18 000030 0008+00 0/2 0/0 0/0 .rodata @3865 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3865[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D5ED10, &lit_3865); -#pragma pop - /* 80D5E28C-80D5E3F8 00048C 016C+00 1/1 0/0 0/0 .text calcPower__9daTagQs_cFff */ -void daTagQs_c::calcPower(f32 param_0, f32 param_1) { - // NONMATCHING +f32 daTagQs_c::calcPower(f32 param_1, f32 param_2) { + f32 dVar12 = 1.0f; + if (getSwNo() != 0xff) { + if (fopAcM_isSwitch(this, getSwNo())) { + dVar12 = field_0x570 / 30.0f; + } else { + dVar12 = (30 - field_0x574) / 30.0f; + } + } + if (param_2 > (param_1 * 0.8f)) { + return dVar12 * getPower(); + } + + return dVar12 * + ((1.0f - (param_2 / (param_1 * getSafeArea()))) * (getCenterPower() - getPower80()) + + getPower80()); } -/* ############################################################################################## */ -/* 80D5ED18-80D5ED1C 000038 0004+00 0/2 0/0 0/0 .rodata @3934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3934[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D5ED18, &lit_3934); -#pragma pop - -/* 80D5ED1C-80D5ED20 00003C 0004+00 0/2 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3935 = 100.0f; -COMPILER_STRIP_GATE(0x80D5ED1C, &lit_3935); -#pragma pop - -/* 80D5ED20-80D5ED28 000040 0008+00 0/2 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3936[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D5ED20, &lit_3936); -#pragma pop - -/* 80D5ED28-80D5ED30 000048 0008+00 0/2 0/0 0/0 .rodata @3937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3937[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D5ED28, &lit_3937); -#pragma pop - -/* 80D5ED30-80D5ED38 000050 0008+00 0/2 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3938[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D5ED30, &lit_3938); -#pragma pop - /* 80D5E3F8-80D5E64C 0005F8 0254+00 1/1 0/0 0/0 .text hikiyose__FP4cXyzP4cXyzP4cXyzf */ -static void hikiyose(cXyz* param_0, cXyz* param_1, cXyz* param_2, f32 param_3) { - // NONMATCHING +static int hikiyose(cXyz* param_1, cXyz* param_2, cXyz* param_3, f32 param_4) { + cXyz cStack_44 = *param_1 - *param_2; + cXyz cStack_50(cStack_44); + cStack_50.y = 0.0f; + f32 dVar6 = fabsf(cStack_50.getSquareMag()); + if (dVar6 < 4.0f) { + param_2->x = param_1->x + cM_rndFX(1.0f); + param_2->y -= 0.5f; + param_2->z = param_1->z + cM_rndFX(1.0f); + param_3->y = param_2->y; + if (param_2->y < param_1->y - 100.0f) { + return 2; + } + return 1; + } else if (cStack_44.abs() < param_4) { + param_2->x = param_1->x; + param_2->y = param_1->y; + param_2->z = param_1->z; + } else { + cStack_44.normalize(); + cStack_44 *= param_4; + *param_2 += cStack_44; + } + return 0; } -/* ############################################################################################## */ -/* 80D5ED38-80D5ED3C 000058 0004+00 0/1 0/0 0/0 .rodata @4042 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4042 = 110.0f; -COMPILER_STRIP_GATE(0x80D5ED38, &lit_4042); -#pragma pop - -/* 80D5ED3C-80D5ED40 00005C 0004+00 0/1 0/0 0/0 .rodata @4043 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4043 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D5ED3C, &lit_4043); -#pragma pop - /* 80D5E64C-80D5E9F8 00084C 03AC+00 1/1 0/0 0/0 .text search__FPvPv */ -static void search(void* param_0, void* param_1) { - // NONMATCHING +static void* search(void* param_1, void* param_2) { + if (param_1 == NULL || !fopAcM_IsActor(param_1)) { + return NULL; + } + fopAc_ac_c* actor1 = (fopAc_ac_c*) param_1; + daTagQs_c* actor2 = (daTagQs_c*) param_2; + f32 dVar9 = actor2->current.pos.absXZ(actor1->current.pos); + if (dVar9 > actor2->field_0x568) { + return NULL; + } + if (actor2->current.pos.y - 110.0f > actor1->current.pos.y || + actor2->current.pos.y + actor2->field_0x56c < actor1->current.pos.y) + { + return NULL; + } + if (actor1->current.pos.y > + actor2->current.pos.y + (actor2->field_0x56c * dVar9) / (actor2->field_0x568 * 0.9f) + 20.0f) + { + return NULL; + } + if (fopAcM_GetProfName(param_1) == PROC_ITEM) { + daItem_c* item = (daItem_c*)param_1; + item->getItemNo(); + if (item->getItemNo() <= 3) { + int iVar3 = hikiyose(&actor2->current.pos, &actor1->current.pos, &actor1->old.pos, + actor2->calcPower(actor2->field_0x568, dVar9)); + if (iVar3 == 1) { + item->startCtrl(); + } else if (iVar3 == 2) { + fopAcM_delete(actor1); + } + } + return NULL; + } + if (fopAcM_GetProfName(param_1) == PROC_Obj_Carry) { + daObjCarry_c* carry = (daObjCarry_c*)param_1; + if (carry->getType() == 7 || carry->getType() == 1 || carry->getType() == 5) { + int iVar3 = hikiyose(&actor2->current.pos, &carry->current.pos, &carry->old.pos, actor2->calcPower(actor2->field_0x568, dVar9)); + if (iVar3 == 1) { + carry->startCtrl(); + } else if (iVar3 == 2) { + fopAcM_delete(carry); + } + } + return NULL; + } + if (param_1 == daPy_getPlayerActorClass()) { + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz local_58 = actor2->current.pos - player->current.pos; + if (local_58.getSquareMag() >= actor2->getPower()) { + s16 sVar6 = cM_atan2s(local_58.x, local_58.z); + if (!player->checkPlayerFly()) { + player->setOutPower(actor2->calcPower(actor2->field_0x568, dVar9), sVar6, 0); + } + } + return NULL; + } + + return NULL; } -/* ############################################################################################## */ -/* 80D5ED40-80D5ED44 000060 0004+00 0/1 0/0 0/0 .rodata @4090 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4090 = -1.0f; -COMPILER_STRIP_GATE(0x80D5ED40, &lit_4090); -#pragma pop - /* 80D5E9F8-80D5EBF8 000BF8 0200+00 1/1 0/0 0/0 .text execute__9daTagQs_cFv */ -void daTagQs_c::execute() { - // NONMATCHING +int daTagQs_c::execute() { + fopAcM_Search(search, this); + if (getSwNo() != 0xff) { + int bossLife; + if (fopAcM_isSwitch(this, getSwNo())) { + field_0x570++; + if (field_0x570 > 30) { + field_0x570 = 30; + } + field_0x574 = 0; + bossLife = (field_0x570 * 100.0f) / 30.0f; + if (getType() == 0) { + Z2GetAudioMgr()->seStartLevel(Z2SE_ENV_QUICKSAND_LOOP, ¤t.pos, 0, + dComIfGp_getReverb(fopAcM_GetRoomNo(this)), 1.0f, + 1.0f, -1.0f, -1.0f, 0); + } + } else { + field_0x574++; + if (field_0x574 > 30) { + field_0x574 = 30; + } + field_0x570 = 0; + bossLife = 100.0f - field_0x574 * 100.0f / 30.0f; + } + dComIfGs_BossLife_public_Set(bossLife); + } else { + if (getType() == 0) { + Z2GetAudioMgr()->seStartLevel(Z2SE_ENV_QUICKSAND_LOOP, ¤t.pos, 0, + dComIfGp_getReverb(fopAcM_GetRoomNo(this)), 1.0f, 1.0f, + -1.0f, -1.0f, 0); + } + } + return 1; } /* 80D5EBF8-80D5EC00 000DF8 0008+00 1/1 0/0 0/0 .text draw__9daTagQs_cFv */ -bool daTagQs_c::draw() { - return true; +int daTagQs_c::draw() { + return 1; } /* 80D5EC00-80D5EC20 000E00 0020+00 1/0 0/0 0/0 .text daTagQs_Draw__FP9daTagQs_c */ -static void daTagQs_Draw(daTagQs_c* param_0) { - // NONMATCHING +static int daTagQs_Draw(daTagQs_c* i_this) { + return i_this->draw(); } /* 80D5EC20-80D5EC40 000E20 0020+00 1/0 0/0 0/0 .text daTagQs_Execute__FP9daTagQs_c */ -static void daTagQs_Execute(daTagQs_c* param_0) { - // NONMATCHING +static int daTagQs_Execute(daTagQs_c* i_this) { + return i_this->execute(); } /* 80D5EC40-80D5EC48 000E40 0008+00 1/0 0/0 0/0 .text daTagQs_IsDelete__FP9daTagQs_c */ -static bool daTagQs_IsDelete(daTagQs_c* param_0) { - return true; +static int daTagQs_IsDelete(daTagQs_c* i_this) { + return 1; } /* 80D5EC48-80D5EC70 000E48 0028+00 1/0 0/0 0/0 .text daTagQs_Delete__FP9daTagQs_c */ -static void daTagQs_Delete(daTagQs_c* param_0) { - // NONMATCHING +static int daTagQs_Delete(daTagQs_c* i_this) { + i_this->~daTagQs_c(); + return 1; } /* 80D5EC70-80D5EC90 000E70 0020+00 1/0 0/0 0/0 .text daTagQs_Create__FP10fopAc_ac_c */ -static void daTagQs_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daTagQs_Create(fopAc_ac_c* i_this) { + return static_cast<daTagQs_c*>(i_this)->create(); } -/* 80D5EC90-80D5ECD8 000E90 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -}
\ No newline at end of file +/* 80D5ED88-80D5EDA8 -00001 0020+00 1/0 0/0 0/0 .data l_daTagQs_Method */ +static actor_method_class l_daTagQs_Method = { + (process_method_func)daTagQs_Create, (process_method_func)daTagQs_Delete, + (process_method_func)daTagQs_Execute, (process_method_func)daTagQs_IsDelete, + (process_method_func)daTagQs_Draw, +}; + +/* 80D5EDA8-80D5EDD8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_QS */ +extern actor_process_profile_definition g_profile_TAG_QS = { + fpcLy_CURRENT_e, + 7, + fpcPi_CURRENT_e, + PROC_TAG_QS, + &g_fpcLf_Method.mBase, + sizeof(daTagQs_c), + 0, + 0, + &g_fopAc_Method.base, + 274, + &l_daTagQs_Method, + 0x40000, + fopAc_ACTOR_e, + fopAc_CULLBOX_0_e, +}; |
