diff options
| author | lepelog <25211966+lepelog@users.noreply.github.com> | 2022-06-26 22:33:09 +0200 |
|---|---|---|
| committer | lepelog <25211966+lepelog@users.noreply.github.com> | 2022-06-26 22:33:09 +0200 |
| commit | f215e2d649064fdc73bf1e80f5de2999414ef335 (patch) | |
| tree | 18485b3f5fb6b16c550d30950424251a4917053c /src/d | |
| parent | faea8747414203590cda033d6a2edb0a3c52d3e9 (diff) | |
more nonmatching
Diffstat (limited to 'src/d')
| -rw-r--r-- | src/d/a/d_a_alink.cpp | 2 | ||||
| -rw-r--r-- | src/d/event/d_event_data.cpp | 551 |
2 files changed, 509 insertions, 44 deletions
diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index df0a1b555d..eefe632c4b 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -19218,7 +19218,7 @@ MtxP daAlink_c::getRightItemMatrix() { /* 800CF344-800CF380 0C9C84 003C+00 1/0 0/0 0/0 .text checkPlayerNoDraw__9daAlink_cFv */ BOOL daAlink_c::checkPlayerNoDraw() { return dComIfGp_checkCameraAttentionStatus(field_0x317c, 2) || - i_checkNoResetFlg0(FLG0_UNK_8000000); + i_checkNoResetFlg0(PLAYER_NO_DRAW); } /* 800CF380-800CFC3C 0C9CC0 08BC+00 1/1 0/0 0/0 .text __ct__9daAlink_cFv */ diff --git a/src/d/event/d_event_data.cpp b/src/d/event/d_event_data.cpp index 0bf899fcaf..a79d20e896 100644 --- a/src/d/event/d_event_data.cpp +++ b/src/d/event/d_event_data.cpp @@ -5,21 +5,15 @@ #include "d/event/d_event_data.h" #include "d/com/d_com_inf_game.h" +#include "d/d_camera.h" #include "d/d_demo.h" #include "d/d_gameover.h" +#include "d/msg/d_msg_object.h" #include "dol2asm.h" #include "dolphin/types.h" #include "f_op/f_op_msg_mng.h" // -// Types: -// - -struct dCamera_c { - /* 80181170 */ void StartBlure(int, fopAc_ac_c*, f32, f32); -}; - -// // Forward References: // @@ -142,6 +136,22 @@ inline BOOL dComIfGs_isEventBit(u16 id) { return g_dComIfG_gameInfo.info.getEvent().isEventBit(id); } +inline s32 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0) { + return param_0->field_0x09 >> 1 & 0x1f; +} + +inline BOOL dEvDtFlagCheck(int flag) { + return dComIfGp_getEventManager().flagCheck(flag); +} + +inline void dEvDtFlagSet(int flag) { + dComIfGp_getEventManager().setFlag(flag); +} + +inline dEvt_control_c& dComIfGp_getEvent() { + return g_dComIfG_gameInfo.play.getEvent(); +} + struct TelopDataStruct { s32 mName; u16 mTelopNo; @@ -559,7 +569,7 @@ SECTION_SDATA2 static f64 lit_4461 = 24.0; /* 80044190-80044324 03EAD0 0194+00 1/1 0/0 0/0 .text specialProcLight__12dEvDtStaff_cFv */ -#ifdef NM +#ifdef NONMATCHING // matches besides floats void dEvDtStaff_c::specialProcLight() { int staffId = i_dComIfGp_evmng_getMyStaffId("LIGHT", NULL, 0); @@ -611,6 +621,7 @@ asm void dEvDtStaff_c::specialProcLight() { /* 80044324-80044A58 03EC64 0734+00 1/1 0/0 0/0 .text specialProcMessage__12dEvDtStaff_cFv */ void dEvDtStaff_c::specialProcMessage() { + MessageData* data = (MessageData*)&mData; StaffWork* work = &mWork; int staffId = i_dComIfGp_evmng_getMyStaffId("MESSAGE", NULL, 0); if (staffId == -1) { @@ -633,7 +644,7 @@ void dEvDtStaff_c::specialProcMessage() { work->mMsgSubstanceP = dComIfGp_evmng_getMyIntegerP(staffId, "No"); } work->mMsgNo = *work->mMsgSubstanceP; - field_0x42 = 0; + data->unk = 0; break; case 'END\0': case 'FINI': @@ -671,7 +682,7 @@ void dEvDtStaff_c::specialProcMessage() { work->mMsgNo = getTelopNo(); } } - field_0x42 = 0; + data->unk = 0; if (work->mMsgNo != 0xFFFF) { work->_0 = fopMsgM_messageSetDemo(work->mMsgNo); } @@ -682,17 +693,17 @@ void dEvDtStaff_c::specialProcMessage() { specialProc_WaitProc(staffId); break; case 'CREA': - switch (field_0x42) { + switch (data->unk) { case 0: work->_0 = fopMsgM_messageSet(work->mMsgNo, 1000); if (work->_0 != UINT32_MAX) { - field_0x42++; + data->unk++; } break; case 1: work->mLMsg = fopMsgM_SearchByID(work->_0); if (work->mLMsg != NULL) { - field_0x42++; + data->unk++; } break; case 2: @@ -709,11 +720,11 @@ void dEvDtStaff_c::specialProcMessage() { dComIfGp_evmng_cutEnd(staffId); break; case 'SHOW': - switch (field_0x42) { + switch (data->unk) { case 0: work->_0 = fopMsgM_messageSet(work->mMsgNo, 1000); if (work->_0 != UINT32_MAX) { - field_0x42 = 1; + data->unk = 1; } else { break; } @@ -734,12 +745,12 @@ void dEvDtStaff_c::specialProcMessage() { work->mLMsg = NULL; work->mMsgSubstanceNum--; if (work->mMsgSubstanceNum != 0) { - field_0x42 = 0; + data->unk = 0; work->mMsgSubstanceP++; work->mMsgNo = *work->mMsgSubstanceP; } else { dComIfGp_evmng_cutEnd(staffId); - field_0x42 = 99; + data->unk = 99; } break; default: @@ -880,14 +891,12 @@ void dEvDtStaff_c::specialProcCreate() { cXyz pos; csXyz angle; cXyz scale; - char* nowCutName; dStage_objectNameInf* objNameInf; - int staffId; - staffId = i_dComIfGp_evmng_getMyStaffId("CREATER", NULL, 0); + int staffId = i_dComIfGp_evmng_getMyStaffId("CREATER", NULL, 0); if (staffId == -1) { return; } - nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId); + char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId); if (dComIfGp_evmng_getIsAddvance(staffId)) { switch (*(int*)nowCutName) { case 'WAIT': @@ -961,6 +970,226 @@ SECTION_DEAD static char const* const stringBase_80379EF9 = "PtD"; #pragma pop /* 80044EE4-80045878 03F824 0994+00 1/1 0/0 0/0 .text specialProcDirector__12dEvDtStaff_cFv */ +#ifdef NONMATCHING +// matches besides floats +void dEvDtStaff_c::specialProcDirector() { + DirectorData* data = (DirectorData*)mData; + daPy_py_c* player = dComIfGp_getLinkPlayer(); + dEvt_control_c& evtControl = dComIfGp_getEvent(); + int staffId = i_dComIfGp_evmng_getMyStaffId("DIRECTOR", NULL, 0); + if (staffId == -1) { + return; + } + char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId); + if (dComIfGp_evmng_getIsAddvance(staffId)) { + int* eventFlagP = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlag"); + if (eventFlagP != NULL) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[*eventFlagP]); + } + int* eventFlagOffP = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlagOff"); + if (eventFlagOffP != NULL) { + dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[*eventFlagOffP]); + } + int* switchTableP = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchTable"); + int switchTable; + if (switchTableP != NULL) { + switchTable = *switchTableP; + } else { + switchTable = dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()); + } + int* switchBitP = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchBit"); + if (switchBitP != NULL) { + dComIfGs_onStageSwitch(switchTable, *switchBitP); + } + int* switchOffP = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchOff"); + if (switchOffP != NULL) { + dComIfGs_offStageSwitch(switchTable, *switchOffP); + } + int* tmpBitP = dComIfGp_evmng_getMyIntegerP(staffId, "TmpBit"); + if (tmpBitP != NULL) { + dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[*tmpBitP]); + } + int* tmpOffP = dComIfGp_evmng_getMyIntegerP(staffId, "TmpBitOff"); + if (tmpOffP != NULL) { + dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[*tmpOffP]); + } + switch (*(int*)nowCutName) { + case 'WAIT': + specialProc_WaitStart(staffId); + break; + case 'PLAY': + if (strcmp(nowCutName, "PLAYER_NODRAW") == 0) { + player->i_onPlayerNoDraw(); + } else if (strcmp(nowCutName, "PLAYER_DRAW") == 0) { + player->i_offPlayerNoDraw(); + } + break; + case 'NEXT': + dEvDt_Next_Stage(staffId, 0xD); + break; + case 'SKIP': + char* zev = dComIfGp_evmng_getMyStringP(staffId, "Zev"); + // cast needed to match + void* pt = (void*)evtControl.getPt1(); + if (NULL == pt) { + pt = evtControl.getPt2(); + } + if (zev != NULL) { + evtControl.setSkipZev(pt, zev); + } else { + evtControl.setSkipProc(pt, dEv_defaultSkipProc, 0); + } + break; + case 'FADE': + f32* rateP = dComIfGp_evmng_getMyFloatP(staffId, "Rate"); + int* colorP = dComIfGp_evmng_getMyIntegerP(staffId, "Color"); + if (*rateP > 0) { + mDoGph_gInf_c::setFadeRate(0); + } + if (colorP != NULL) { + GXColor color; + color.r = colorP[0]; + color.g = colorP[1]; + color.b = colorP[2]; + color.a = colorP[3]; + mDoGph_gInf_c::fadeOut(*rateP, color); + } else { + mDoGph_gInf_c::fadeOut(*rateP); + } + break; + case 'VIBR': + specialProc_WaitStart(staffId); + int* patternP = dComIfGp_evmng_getMyIntegerP(staffId, "Pattern"); + int* typeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type"); + dComIfGp_getVibration().StartQuake((u8*)patternP, 0, *typeP, cXyz(0, 1, 0)); + break; + case 'WIPE': + f32* wipeRateP = dComIfGp_evmng_getMyFloatP(staffId, "Rate"); + dDlst_list_c::wipeIn(-*wipeRateP); + if (*wipeRateP > 0) { + data->unk = 0; + } else { + data->unk = 1; + } + int* soundP = dComIfGp_evmng_getMyIntegerP(staffId, "SOUND"); + if (soundP != NULL) { + switch (*soundP) { + case 0: + mDoAud_seStart(0, NULL, 0, 0); + } + } + break; + case 'MAPT': + int* idP = dComIfGp_evmng_getMyIntegerP(staffId, "ID"); + data->unk = *idP; + dStage_MapEvent_dt_c* mapEvent = dEvt_control_c::searchMapEventData(data->unk); + if (mapEvent != NULL) { + if (mapEvent->mType == 0) { + data->mSoundWait = mapEvent->field_0x14; + } else { + data->mSoundWait = -1; + } + } else { + data->mSoundWait = 0; + } + break; + case 'CAST': + char* pt2Name = dComIfGp_evmng_getMyStringP(staffId, "Pt2"); + if (pt2Name != NULL) { + fopAc_ac_c* pt2 = fopAcM_searchFromName4Event(pt2Name, -1); + if (pt2 != NULL) { + evtControl.setPt2(pt2); + } + } + char* ptTName = dComIfGp_evmng_getMyStringP(staffId, "PtT"); + if (ptTName != NULL) { + fopAc_ac_c* ptT = fopAcM_searchFromName4Event(ptTName, -1); + if (ptT != NULL) { + evtControl.setPtT(ptT); + } + } + char* ptIName = dComIfGp_evmng_getMyStringP(staffId, "PtI"); + if (ptIName != NULL) { + fopAc_ac_c* ptI = fopAcM_searchFromName4Event(ptIName, -1); + if (ptI != NULL) { + evtControl.setPtI(ptI); + } + } + char* ptDName = dComIfGp_evmng_getMyStringP(staffId, "PtD"); + if (ptDName != NULL) { + fopAc_ac_c* ptD = fopAcM_searchFromName4Event(ptDName, -1); + if (ptD != NULL) { + evtControl.setPtD(ptD); + } + } + break; + case 'SPEC': + int* specTypeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type"); + if (specTypeP != NULL) { + switch (*specTypeP) { + case 8: + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[506])) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[566]); + } + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[507])) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[567]); + } + } + } + break; + } + } + switch (*(int*)nowCutName) { + case 'WAIT': + specialProc_WaitProc(staffId); + break; + case 'FADE': + if (!mDoGph_gInf_c::isFade()) { + dComIfGp_evmng_cutEnd(staffId); + break; + } + if (mDoGph_gInf_c::getFadeRate() >= 1) { + f32* rateP = dComIfGp_evmng_getMyFloatP(staffId, "Rate"); + if (*rateP > 0) { + dComIfGp_evmng_cutEnd(staffId); + } + } + break; + case 'NEXT': + break; + case 'VIBR': + if (data->mSoundWait > 0) { + data->mSoundWait--; + if (data->mSoundWait == 0) { + dComIfGp_getVibration().StopQuake(0x1F); + } + } else { + dComIfGp_evmng_cutEnd(staffId); + } + break; + case 'WIPE': + if (data->unk != 0) { + if (dDlst_list_c::getWipeRate() == 0) { + dComIfGp_evmng_cutEnd(staffId); + } + } else { + if (dDlst_list_c::getWipeRate() >= 1) { + dComIfGp_evmng_cutEnd(staffId); + } + } + break; + case 'MAPT': + data->mSoundWait--; + if (data->mSoundWait <= 0) { + dComIfGp_evmng_cutEnd(staffId); + } + break; + default: + dComIfGp_evmng_cutEnd(staffId); + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -969,6 +1198,7 @@ asm void dEvDtStaff_c::specialProcDirector() { #include "asm/d/event/d_event_data/specialProcDirector__12dEvDtStaff_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80379DD0-80379DD0 006430 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -983,7 +1213,73 @@ SECTION_DEAD static char const* const stringBase_80379F18 = "OffsetAngY"; /* 80451EF8-80451EFC 0004F8 0004+00 1/1 0/0 0/0 .sdata2 @5057 */ SECTION_SDATA2 static f32 lit_5057 = 10.0f; +inline void dComIfGp_event_setCullRate(f32 f) { + g_dComIfG_gameInfo.play.getEvent().setCullRate(f); +} + /* 80045878-80045AFC 0401B8 0284+00 1/1 0/0 0/0 .text specialProcPackage__12dEvDtStaff_cFv */ +#ifdef NONMATCHING +void dEvDtStaff_c::specialProcPackage() { + dMsgObject_c* msgObj = dComIfGp_getMsgObjectClass(); + if (!!msgObj) { + dMsgObject_demoMessageGroup(); + } + int staffId = i_dComIfGp_evmng_getMyStaffId("PACKAGE", NULL, 0); + if (staffId == -1) { + return; + } + char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId); + if (dComIfGp_evmng_getIsAddvance(staffId)) { + switch (*(int*)nowCutName) { + case 'WAIT': + specialProc_WaitStart(staffId); + break; + case 'PLAY': + char* fileName = dComIfGp_evmng_getMyStringP(staffId, "FileName"); + cXyz* offsetPos = dComIfGp_evmng_getMyXyzP(staffId, "OffsetPos"); + f32* offsetAngYP = dComIfGp_evmng_getMyFloatP(staffId, "OffsetAngY"); + f32 offsetAngY; + if (offsetAngYP != NULL) { + offsetAngY = *offsetAngYP; + } else { + offsetAngY = 0.0f; + } + // should not save event from g_dComIfG_gameInfo to register + u8* demoData = (u8*)dComIfGp_getEvent().getStbDemoData(fileName); + dDemo_c::start(demoData, offsetPos, offsetAngY); + dComIfGp_event_setCullRate(10.0f); + int* eventFlagP = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlag"); + if (eventFlagP != NULL) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[*eventFlagP]); + } + break; + } + } + switch (*(int*)nowCutName) { + case 'WAIT': + specialProc_WaitProc(staffId); + break; + case 'PLAY': + dEvt_control_c& evtControl = dComIfGp_getEvent(); + if (dDemo_c::getMode() == 2) { + dStage_MapEvent_dt_c* event = evtControl.getStageEventDt(); + if (event != NULL && event->field_0x7 != 0xFF && !evtControl.chkFlag2(1)) { + dDemo_c::getControl()->referObject_control().suspend(100); + dComIfGp_evmng_cutEnd(staffId); + } else { + dDemo_c::end(); + } + } + if (dDemo_c::getMode() == 0) { + dComIfGp_evmng_cutEnd(staffId); + } + break; + default: + dComIfGp_evmng_cutEnd(staffId); + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -992,6 +1288,7 @@ asm void dEvDtStaff_c::specialProcPackage() { #include "asm/d/event/d_event_data/specialProcPackage__12dEvDtStaff_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80379DD0-80379DD0 006430 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -1001,14 +1298,35 @@ SECTION_DEAD static char const* const stringBase_80379F23 = "TIMEKEEPER"; #pragma pop /* 80045AFC-80045C34 04043C 0138+00 1/1 0/0 0/0 .text specialProcTimekeeper__12dEvDtStaff_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dEvDtStaff_c::specialProcTimekeeper() { - nofralloc -#include "asm/d/event/d_event_data/specialProcTimekeeper__12dEvDtStaff_cFv.s" +void dEvDtStaff_c::specialProcTimekeeper() { + TimerKeeperData* dataP = (TimerKeeperData*)&mData; + int staffId = i_dComIfGp_evmng_getMyStaffId("TIMEKEEPER", NULL, 0); + if (staffId == -1) { + return; + } + char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId); + if (dComIfGp_evmng_getIsAddvance(staffId)) { + switch (*(int*)nowCutName) { + case 'COUN': + dataP->timer = *dComIfGp_evmng_getMyIntegerP(staffId, "Timer"); + break; + case 'WAIT': + break; + } + } + switch (*(int*)nowCutName) { + case 'COUN': + if (dataP->timer > 0) { + dataP->timer--; + } else { + dComIfGp_evmng_cutEnd(staffId); + } + break; + case 'WAIT': + default: + dComIfGp_evmng_cutEnd(staffId); + } } -#pragma pop /* ############################################################################################## */ /* 80379DD0-80379DD0 006430 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -1028,6 +1346,136 @@ SECTION_SDATA2 static f32 lit_5200 = 4.0f / 5.0f; /* 80045C34-800460A8 040574 0474+00 1/1 0/0 0/0 .text specialProcEffect__12dEvDtStaff_cFv */ +#ifdef NONMATCHING +// matches besides floats +void dEvDtStaff_c::specialProcEffect() { + EffectData* data = (EffectData*)mData; + int staffId = i_dComIfGp_evmng_getMyStaffId("EFFECT", NULL, 0); + if (staffId == -1) { + return; + } + char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId); + if (dComIfGp_evmng_getIsAddvance(staffId)) { + data->unk = 0; + switch (*(int*)nowCutName) { + case 'WAIT': { + int* timerP = dComIfGp_evmng_getMyIntegerP(staffId, "Timer"); + int timer; + if (timerP != NULL) { + timer = *timerP; + } else { + timer = 0; + } + data->unk = timer; + } break; + case 'SHOC': { + int* powerP = dComIfGp_evmng_getMyIntegerP(staffId, "Power"); + int power; + if (powerP != NULL) { + power = *powerP; + } else { + power = 5; + } + int* typeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type"); + int type; + if (typeP != NULL) { + type = *typeP; + } else { + type = 0xF; + } + dComIfGp_getVibration().StartShock(power, type, cXyz(0, 1, 0)); + } break; + case 'QUAK': { + int power; + int type; + int timer; + int random; + u8* pattern; + int* timerP = dComIfGp_evmng_getMyIntegerP(staffId, "Timer"); + if (timerP != NULL) { + timer = *timerP; + } else { + timer = 30; + } + data->unk = timer; + int* powerP = dComIfGp_evmng_getMyIntegerP(staffId, "Power"); + if (powerP != NULL) { + power = *powerP; + } else { + power = 5; + } + int* typeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type"); + if (typeP != NULL) { + type = *typeP; + } else { + type = 0xF; + } + pattern = (u8*)dComIfGp_evmng_getMyStringP(staffId, "Pattern"); + if (pattern != NULL) { + int* randomP = dComIfGp_evmng_getMyIntegerP(staffId, "Random"); + if (randomP != NULL) { + random = *randomP; + } else { + random = 0; + } + dComIfGp_getVibration().StartQuake(pattern, random, type, cXyz(0, 1, 0)); + } else { + dComIfGp_getVibration().StartQuake(power, type, cXyz(0, 1, 0)); + } + } break; + case 'BLUR': { + int* timerP = dComIfGp_evmng_getMyIntegerP(staffId, "Timer"); + int timer; + if (timerP != NULL) { + timer = *timerP; + } else { + timer = 30; + } + int timer2 = data->unk = timer; + f32* alphaP = dComIfGp_evmng_getMyFloatP(staffId, "Alpha"); + f32 alpha; + if (alphaP != NULL) { + alpha = *alphaP; + } else { + alpha = 0.8f; + } + f32* scaleP = dComIfGp_evmng_getMyFloatP(staffId, "Scale"); + f32 scale; + if (scaleP != NULL) { + scale = *scaleP; + } else { + scale = 0.8f; + } + dCam_getBody()->StartBlure(timer2, NULL, alpha, scale); + } break; + } + } + if (data->unk != 0) { + data->unk--; + } + switch (*(int*)nowCutName) { + case 'WAIT': + if (data->unk == 0) { + dComIfGp_evmng_cutEnd(staffId); + } + break; + case 'QUAK': + if (data->unk == 0) { + dComIfGp_getVibration().StopQuake(0x1F); + dComIfGp_evmng_cutEnd(staffId); + } + break; + case 'BLUR': + if (data->unk == 0) { + dComIfGp_evmng_cutEnd(staffId); + } + break; + default: + dComIfGp_evmng_cutEnd(staffId); + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1036,16 +1484,25 @@ asm void dEvDtStaff_c::specialProcEffect() { #include "asm/d/event/d_event_data/specialProcEffect__12dEvDtStaff_cFv.s" } #pragma pop +#endif /* 800460A8-80046138 0409E8 0090+00 1/1 0/0 0/0 .text startCheck__10dEvDtCut_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dEvDtCut_c::startCheck() { - nofralloc -#include "asm/d/event/d_event_data/startCheck__10dEvDtCut_cFv.s" +int dEvDtCut_c::startCheck() { + for (int i = 0; i < 3; i++) { + int flag = this->getStartFlag(i); + if (flag == -1) { + if (i == 0) { + return -1; + } else { + return 1; + } + } + if (!dEvDtFlagCheck(flag)) { + return 0; + } + } + return 1; } -#pragma pop /* 80046138-8004616C 040A78 0034+00 1/1 7/7 0/0 .text init__11dEvDtBase_cFv */ int dEvDtBase_c::init() { @@ -1111,13 +1568,21 @@ void dEvDtBase_c::advanceCut(dEvDtEvent_c* p_event) { /* 800462FC-800463DC 040C3C 00E0+00 1/1 0/0 0/0 .text * advanceCutLocal__11dEvDtBase_cFP12dEvDtStaff_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dEvDtBase_c::advanceCutLocal(dEvDtStaff_c* param_0) { - nofralloc -#include "asm/d/event/d_event_data/advanceCutLocal__11dEvDtBase_cFP12dEvDtStaff_c.s" +BOOL dEvDtBase_c::advanceCutLocal(dEvDtStaff_c* param_0) { + dEvDtCut_c* cut = &mCutP[param_0->getCurrentCut()]; + if (dEvDtFlagCheck(cut->getFlagId()) && cut->getNext() != -1) { + switch (mCutP[cut->getNext()].startCheck()) { + case -1: + param_0->advanceCut(cut->getNext()); + return TRUE; + case 1: + dEvDtFlagSet(cut->getFlagId()); + param_0->advanceCut(cut->getNext()); + return TRUE; + } + } + param_0->field_0x40 = false; + return FALSE; } -#pragma pop /* 80379DD0-80379DD0 006430 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ |
