summaryrefslogtreecommitdiff
path: root/src/d/d_event_data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/d/d_event_data.cpp')
-rw-r--r--src/d/d_event_data.cpp1367
1 files changed, 866 insertions, 501 deletions
diff --git a/src/d/d_event_data.cpp b/src/d/d_event_data.cpp
index 39bee2cb2e..2ce9ea3a4e 100644
--- a/src/d/d_event_data.cpp
+++ b/src/d/d_event_data.cpp
@@ -12,57 +12,94 @@
#include "d/d_gameover.h"
#include "d/d_msg_object.h"
#include "m_Do/m_Do_graphic.h"
+#include "SSystem/SComponent/c_counter.h"
-inline BOOL dEvDtFlagCheck(int flag) {
- return dComIfGp_getEventManager().flagCheck(flag);
+inline BOOL dEvDtFlagCheck(int i_flag) {
+ return dComIfGp_getEventManager().getFlags().flagCheck(i_flag);
}
-inline void dEvDtFlagSet(int flag) {
- dComIfGp_getEventManager().setFlag(flag);
+inline void dEvDtFlagSet(int i_flag) {
+ dComIfGp_getEventManager().getFlags().flagSet(i_flag);
}
struct TelopDataStruct {
- s32 mName;
- u16 mTelopNo;
- u16 _6;
- u16 _8;
- // padding
+ s32 name;
+ u16 telopNo;
+ const u16 flag;
+ u16 type;
};
-/* ############################################################################################## */
/* 803A7FB0-803A8238 0050D0 0288+00 2/2 0/0 0/0 .data TelopData */
static TelopDataStruct TelopData[] = {
- {'D05\0', 1101, 4201, 3}, {'D05A', 1101, -1, 0}, {'D05B', 1101, -1, 0},
- {'D04\0', 1102, -1, 1}, {'D04A', 1102, -1, 0}, {'D04B', 1102, -1, 0},
- {'D01\0', 1103, 4728, 3}, {'D01A', 1103, -1, 0}, {'D01B', 1103, -1, 0},
- {'D10\0', 1104, 4908, 3}, {'D10A', 1104, -1, 0}, {'D10B', 1104, -1, 0},
- {'D11\0', 1105, 5240, 3}, {'D11A', 1105, -1, 0}, {'D11B', 1105, -1, 0},
- {'D06\0', 1106, 5465, 3}, {'D06A', 1106, -1, 0}, {'D06B', 1106, -1, 0},
- {'D07\0', 1107, 5689, 3}, {'D07A', 1107, -1, 0}, {'D07B', 1107, -1, 0},
- {'D08\0', 1108, -1, 1}, {'D08A', 1108, -1, 0}, {'D08B', 1108, -1, 0},
- {'D08C', 1108, -1, 0}, {'D08D', 1108, -1, 0}, {'D09\0', 1109, -1, 1},
- {'D09A', 1109, -1, 0}, {'D09B', 1109, -1, 0}, {'D09C', 1109, -1, 0},
- {'F00\0', 1110, -1, 1}, {'F103', 1111, 10, 3}, {'R01\0', 1111, -1, 0},
- {'F109', 1112, -1, 1}, {'R109', 1112, -1, 0}, {'R209', 1112, -1, 0},
- {'F112', 1113, 1033, 3}, {'F113', 1114, 1024, 3}, {'F108', 1115, -1, 1},
- {'R108', 1115, -1, 0}, {'F115', 1116, 1054, 3}, {'F111', 1118, -1, 1},
- {'F124', 1119, -1, 1}, {'F114', 1120, 2048, 3}, {'F125', 1121, 2572, 3},
- {'F121', 1122, 1581, 3}, {'F122', 1122, 1581, 3}, {'F123', 1122, 1581, 3},
- {'F117', 1123, -1, 1}, {'F128', 1134, 814, 3}, {'R128', 1134, -1, 0},
- {'F127', 1140, -1, 1}, {'R127', 1140, -1, 0}, {'F126', 1141, -1, 1}};
+ {'D05\0', 1101, 0x1069, 3},
+ {'D05A', 1101, 0xFFFF, 0},
+ {'D05B', 1101, 0xFFFF, 0},
+ {'D04\0', 1102, 0xFFFF, 1},
+ {'D04A', 1102, 0xFFFF, 0},
+ {'D04B', 1102, 0xFFFF, 0},
+ {'D01\0', 1103, 0x1278, 3},
+ {'D01A', 1103, 0xFFFF, 0},
+ {'D01B', 1103, 0xFFFF, 0},
+ {'D10\0', 1104, 0x132C, 3},
+ {'D10A', 1104, 0xFFFF, 0},
+ {'D10B', 1104, 0xFFFF, 0},
+ {'D11\0', 1105, 0x1478, 3},
+ {'D11A', 1105, 0xFFFF, 0},
+ {'D11B', 1105, 0xFFFF, 0},
+ {'D06\0', 1106, 0x1559, 3},
+ {'D06A', 1106, 0xFFFF, 0},
+ {'D06B', 1106, 0xFFFF, 0},
+ {'D07\0', 1107, 0x1639, 3},
+ {'D07A', 1107, 0xFFFF, 0},
+ {'D07B', 1107, 0xFFFF, 0},
+ {'D08\0', 1108, 0xFFFF, 1},
+ {'D08A', 1108, 0xFFFF, 0},
+ {'D08B', 1108, 0xFFFF, 0},
+ {'D08C', 1108, 0xFFFF, 0},
+ {'D08D', 1108, 0xFFFF, 0},
+ {'D09\0', 1109, 0xFFFF, 1},
+ {'D09A', 1109, 0xFFFF, 0},
+ {'D09B', 1109, 0xFFFF, 0},
+ {'D09C', 1109, 0xFFFF, 0},
+ {'F00\0', 1110, 0xFFFF, 1},
+ {'F103', 1111, 10, 3},
+ {'R01\0', 1111, 0xFFFF, 0},
+ {'F109', 1112, 0xFFFF, 1},
+ {'R109', 1112, 0xFFFF, 0},
+ {'R209', 1112, 0xFFFF, 0},
+ {'F112', 1113, 0x409, 3},
+ {'F113', 1114, 0x400, 3},
+ {'F108', 1115, 0xFFFF, 1},
+ {'R108', 1115, 0xFFFF, 0},
+ {'F115', 1116, 0x41E, 3},
+ {'F111', 1118, 0xFFFF, 1},
+ {'F124', 1119, 0xFFFF, 1},
+ {'F114', 1120, 0x800, 3},
+ {'F125', 1121, 0xA0C, 3},
+ {'F121', 1122, 0x62D, 3},
+ {'F122', 1122, 0x62D, 3},
+ {'F123', 1122, 0x62D, 3},
+ {'F117', 1123, 0xFFFF, 1},
+ {'F128', 1134, 0x32E, 3},
+ {'R128', 1134, 0xFFFF, 0},
+ {'F127', 1140, 0xFFFF, 1},
+ {'R127', 1140, 0xFFFF, 0},
+ {'F126', 1141, 0xFFFF, 1},
+};
/* 80450640-80450648 0000C0 0004+04 2/2 0/0 0/0 .sdata numTelopData */
-static s32 numTelopData = ARRAY_SIZEU(TelopData);
+static int numTelopData = ARRAY_SIZE(TelopData);
/* 8004372C-800437C4 03E06C 0098+00 2/2 0/0 0/0 .text getTelopNo__FPCc */
-static u16 getTelopNo(char const* pName) {
- s32 val =
- ((pName[3] == 'B' ? 'd' : pName[0]) << 0x18 | pName[4] << 0x10 | pName[5] << 8 | pName[6]);
- for (s32 i = 0; i < numTelopData; i++) {
- if (val == TelopData[i].mName) {
- return TelopData[i].mTelopNo;
+static u16 getTelopNo(char const* i_name) {
+ int i;
+ s32 name = ((i_name[3] == 'B' ? 'd' : i_name[0]) << 0x18 | i_name[4] << 0x10 | i_name[5] << 8 | i_name[6]);
+ for (i = 0; i < numTelopData; i++) {
+ if (name == TelopData[i].name) {
+ return TelopData[i].telopNo;
}
}
+
return 0xFFFF;
}
@@ -73,6 +110,7 @@ static u16 getTelopNo() {
/* 800437F0-80043A14 03E130 0224+00 1/1 0/0 0/0 .text getStartTelopNo__Fv */
static u16 getStartTelopNo() {
+ int i;
const char* startStageName = dComIfGp_getStartStageName();
const char* lastPlayStateName = dComIfGp_getLastPlayStageName();
@@ -80,152 +118,208 @@ static u16 getStartTelopNo() {
return 0xFFFF;
}
+
TelopDataStruct* telopData = NULL;
- s32 val = ((startStageName[3] == 'B' ? 'd' : startStageName[0]) << 0x18 |
- startStageName[4] << 0x10 | startStageName[5] << 8 | startStageName[6]);
- for (s32 i = 0; i < numTelopData; i++) {
- if (val == TelopData[i].mName) {
+ s32 name = ((startStageName[3] == 'B' ? 'd' : startStageName[0]) << 0x18 |
+ startStageName[4] << 0x10 |
+ startStageName[5] << 8 |
+ startStageName[6]);
+
+ for (i = 0; i < numTelopData; i++) {
+ if (name == TelopData[i].name) {
telopData = &TelopData[i];
break;
}
}
- if (telopData == NULL || telopData->_8 == 0) {
+ if (telopData == NULL || telopData->type == 0) {
return 0xFFFF;
- } else if (telopData->_8 == 2 && telopData->_6 != 0xFFFF &&
- !dComIfGs_isEventBit(telopData->_6))
- {
+ }
+
+ if (telopData->type == 2 && telopData->flag != 0xFFFF && !dComIfGs_isEventBit(telopData->flag)) {
return 0xFFFF;
- } else if (telopData->_8 == 3 && telopData->_6 != 0xFFFF &&
- !dComIfGs_isStageSwitch(telopData->_6 >> 8, telopData->_6 & 0xFF))
- {
+ }
+
+ if (telopData->type == 3 && telopData->flag != 0xFFFF && !dComIfGs_isStageSwitch(telopData->flag >> 8, telopData->flag & 0xFF)) {
return 0xFFFF;
- } else {
- TelopDataStruct* lastTelopData = NULL;
- val = ((lastPlayStateName[3] == 'B' ? 'd' : lastPlayStateName[0]) << 0x18 |
- lastPlayStateName[4] << 0x10 | lastPlayStateName[5] << 8 | lastPlayStateName[6]);
-
- for (s32 i = 0; i < numTelopData; i++) {
- if (val == TelopData[i].mName) {
- lastTelopData = &TelopData[i];
- break;
- }
+ }
+
+ TelopDataStruct* lastTelopData = NULL;
+ name = ((lastPlayStateName[3] == 'B' ? 'd' : lastPlayStateName[0]) << 0x18 |
+ lastPlayStateName[4] << 0x10 |
+ lastPlayStateName[5] << 8 |
+ lastPlayStateName[6]);
+
+ for (i = 0; i < numTelopData; i++) {
+ if (name == TelopData[i].name) {
+ lastTelopData = &TelopData[i];
+ break;
}
+ }
- if (lastTelopData != NULL && telopData->mTelopNo == lastTelopData->mTelopNo) {
- return 0xFFFF;
- } else {
- return telopData->mTelopNo;
- }
+ if (lastTelopData != NULL && telopData->telopNo == lastTelopData->telopNo) {
+ return 0xFFFF;
}
+
+ return telopData->telopNo;
}
+#if DEBUG
+u8 event_debug_evdt() {
+ dEvM_HIO_c& hio = dComIfGp_getEventManager().getEventHIO();
+ return hio.m_evd_debug;
+}
+
+u8 event_debug_evdt_endcheck() {
+ dEvM_HIO_c& hio = dComIfGp_getEventManager().getEventHIO();
+ return hio.m_evd_unfinished;
+}
+
+u8 event_debug_evdt_reg1() {
+ dEvM_HIO_c& hio = dComIfGp_getEventManager().getEventHIO();
+ return hio.m_prevent_scene_switch;
+}
+
+s32 event_debug_evdt_sound_adjust() {
+ dEvM_HIO_c& hio = dComIfGp_getEventManager().getEventHIO();
+ return hio.m_corrective_sound_adjustment;
+}
+#endif
+
/* 80043A14-80043D60 03E354 034C+00 1/1 0/0 0/0 .text dEvDt_Next_Stage__Fii */
-static int dEvDt_Next_Stage(int index, int wipe_type) {
+static int dEvDt_Next_Stage(int i_staffId, int i_wipe) {
char* stage;
- s16 point;
+ s16 start;
int mode;
- s8 roomNo;
+ s8 room;
s8 layer;
- s8 wipe;
- s32 noVisit;
- s32 wipe_time;
- f32 hour;
- f32 speed;
+
mode = 0;
- wipe = wipe_type;
- noVisit = true;
- wipe_time = 0;
- hour = 0;
- bool setHour = false;
- speed = 0;
-
- int* p_id = dComIfGp_evmng_getMyIntegerP(index, "ID");
- if (p_id != NULL) {
- int id = *p_id;
+
+ s8 wipe = i_wipe;
+ BOOL noVisit = true;
+ int wipe_time = 0;
+ f32 hour = 0.0f;
+ bool do_set_nexttime = false;
+ f32 speed = 0.0f;
+
+ char* sdata;
+ f32* fdata;
+ int* idata;
+
+ idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "ID");
+ if (idata != NULL) {
+ int id = *idata;
s8 room_no = dComIfGp_roomControl_getStayNo();
- stage_scls_info_dummy_class* info;
+ stage_scls_info_dummy_class* info;
if (room_no == -1) {
info = dComIfGp_getStageSclsInfo();
} else {
- info = dComIfGp_roomControl_getStatusRoomDt(room_no)->getSclsInfo();
+ JUT_ASSERT(297, 0 <= room_no && room_no < 64);
+ dStage_roomDt_c* roomdt = dComIfGp_roomControl_getStatusRoomDt(room_no);
+ info = roomdt->getSclsInfo();
}
if (info != NULL && id >= 0 && id < info->num) {
- stage_scls_info_class* stgInfo = &info->m_entries[id];
- stage = stgInfo->mStage;
- point = stgInfo->mStart;
- roomNo = (s8)stgInfo->mRoom;
- layer = dStage_sclsInfo_getSceneLayer(stgInfo);
- wipe = dStage_sclsInfo_getWipe(stgInfo);
- wipe_time = dStage_sclsInfo_getWipeTime(stgInfo);
+ stage_scls_info_class* scls_p = &info->m_entries[id];
+ stage = scls_p->mStage;
+ start = scls_p->mStart;
+ room = (s8)scls_p->mRoom;
+ layer = dStage_sclsInfo_getSceneLayer(scls_p);
+ wipe = dStage_sclsInfo_getWipe(scls_p);
+ wipe_time = dStage_sclsInfo_getWipeTime(scls_p);
if (wipe == 15) {
wipe = 0;
}
- int timeH = dStage_sclsInfo_getTimeH(stgInfo);
+ int timeH = dStage_sclsInfo_getTimeH(scls_p);
if (timeH >= 0 && timeH <= 23) {
- setHour = true;
+ do_set_nexttime = true;
hour = timeH;
}
+ } else {
+ // "Couldn't get Scene info(%d)!!"
+ OS_REPORT("\x1b[43;30mシーン情報がとれない(%d)!!\n\x1b[m", id);
}
}
- char* stageP = dComIfGp_evmng_getMyStringP(index, "Stage");
- if (stageP != NULL) {
- stage = stageP;
+ sdata = dComIfGp_evmng_getMyStringP(i_staffId, "Stage");
+ if (sdata != NULL) {
+ stage = sdata;
}
- int* pointP = dComIfGp_evmng_getMyIntegerP(index, "StartCode");
- if (pointP != NULL) {
- point = *pointP;
+ idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "StartCode");
+ if (idata != NULL) {
+ start = *idata;
}
- int* roomP = dComIfGp_evmng_getMyIntegerP(index, "RoomNo");
- if (roomP != NULL) {
- roomNo = (s8)*roomP;
+ idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "RoomNo");
+ if (idata != NULL) {
+ room = (s8)*idata;
}
- int* layerP = dComIfGp_evmng_getMyIntegerP(index, "Layer");
- if (layerP != NULL) {
- layer = *layerP;
+ idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "Layer");
+ if (idata != NULL) {
+ layer = *idata;
}
- int* wipeP = dComIfGp_evmng_getMyIntegerP(index, "Wipe");
- if (wipeP != NULL) {
- wipe = *wipeP;
+ idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "Wipe");
+ if (idata != NULL) {
+ wipe = *idata;
}
- int* modeP = dComIfGp_evmng_getMyIntegerP(index, "Mode");
- if (modeP != NULL) {
- mode = *modeP;
+ idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "Mode");
+ if (idata != NULL) {
+ mode = *idata;
}
- f32* speedP = dComIfGp_evmng_getMyFloatP(index, "Speed");
- if (speedP != NULL) {
- speed = *speedP;
+ fdata = dComIfGp_evmng_getMyFloatP(i_staffId, "Speed");
+ if (fdata != NULL) {
+ speed = *fdata;
}
- f32* hourP = dComIfGp_evmng_getMyFloatP(index, "Hour");
- if (hourP != NULL) {
- hour = *hourP;
- setHour = true;
+ fdata = dComIfGp_evmng_getMyFloatP(i_staffId, "Hour");
+ if (fdata != NULL) {
+ hour = *fdata;
+ do_set_nexttime = true;
}
- int* noVisitP = dComIfGp_evmng_getMyIntegerP(index, "NoVisit");
- if (noVisitP != NULL) {
+ idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "NoVisit");
+ if (idata != NULL) {
noVisit = false;
}
- if (stage != NULL && point != -1) {
- if (setHour) {
+ #if DEBUG
+ if (event_debug_evdt_reg1()) {
+ // "Cancelled for debug!!"
+ OS_REPORT("デバックのためキャンセル!!\n");
+ return 1;
+ }
+ #endif
+
+ if (stage != NULL && start != -1) {
+ if (do_set_nexttime) {
dKy_set_nexttime(15.0f * hour);
}
- dComIfGp_setNextStage(stage, point, roomNo, layer, speed, mode, 1, wipe, 0, noVisit,
- wipe_time);
+
+ dComIfGp_setNextStage(stage, start, room, layer, speed, mode, 1, wipe, 0, noVisit, wipe_time);
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("!!\n!!\n");
+ OS_REPORT("\x1b[46;30m%06d: event: scene change: \n stage %s start %d room %d layer %d wipe %d\n\x1b[m",
+ g_Counter.mCounter0, stage, start, room, layer, wipe);
+ OS_REPORT("!!\n!!\n");
+ }
+ #endif
+ } else {
+ // "Scene transition data is not complete!!"
+ OS_REPORT_ERROR("シーン切り替えのデータ指定が足りない!!\n");
+ JUT_ASSERT(379, 0);
}
+
return 1;
}
@@ -233,12 +327,12 @@ static int dEvDt_Next_Stage(int index, int wipe_type) {
BOOL dEvDtFlag_c::flagCheck(int flag) {
if (flagMaxCheck(flag)) {
return FALSE;
+ }
+
+ if (mFlags[(u32)(flag & ~0x1F) / 32] & (1 << (flag & 0x1F))) {
+ return TRUE;
} else {
- if (mFlags[(u32)flag / 0x20] & (1 << (flag & 0x1F))) {
- return TRUE;
- } else {
- return FALSE;
- }
+ return FALSE;
}
}
@@ -246,82 +340,91 @@ BOOL dEvDtFlag_c::flagCheck(int flag) {
BOOL dEvDtFlag_c::flagSet(int flag) {
if (flagMaxCheck(flag)) {
return FALSE;
- } else {
- mFlags[(u32)flag / 0x20] |= (1 << (flag & 0x1F));
- return TRUE;
}
+
+ mFlags[(u32)(flag & ~0x1F) / 32] |= (1 << (flag & 0x1F));
+ return TRUE;
}
-BOOL dEvDtFlag_c::flagMaxCheck(int flag) {
- if (flag == -1) {
+BOOL dEvDtFlag_c::flagMaxCheck(int i_flag) {
+ int flag_id = i_flag;
+ if (flag_id == -1) {
return TRUE;
}
- if (FlagMax <= flag) {
+ if (flag_id >= FlagMax) {
+ JUT_ASSERT(445, flag_id < FlagMax);
return TRUE;
- } else {
- return FALSE;
}
+
+ return FALSE;
}
void dEvDtFlag_c::init() {
- for (int i = 0; i < 320; i++) {
+ int i;
+ for (i = 0; i < ARRAY_SIZEU(mFlags); i++) {
mFlags[i] = 0;
}
}
/* 80043E78-80043EFC 03E7B8 0084+00 0/0 1/1 0/0 .text finishCheck__12dEvDtEvent_cFv */
int dEvDtEvent_c::finishCheck() {
- for (int i = 0; i < 3; i++) {
- int tmp = field_0x88[i];
- if (tmp == -1) {
+ int i;
+ for (i = 0; i < 3; i++) {
+ if (mFlags[i] == -1) {
return 1;
}
- if (!dComIfGp_getEventManager().flagCheck(tmp)) {
+ if (!dEvDtFlagCheck(mFlags[i])) {
return 0;
}
}
+
return 1;
}
/* 80043EFC-80043F70 03E83C 0074+00 0/0 1/1 0/0 .text forceFinish__12dEvDtEvent_cFv */
int dEvDtEvent_c::forceFinish() {
- for (int i = 0; i < 3; i++) {
- int flag = field_0x88[i];
- if (flag == -1) {
+ int i;
+ for (i = 0; i < 3; i++) {
+ if (mFlags[i] == -1) {
return 1;
}
- dComIfGp_getEventManager().setFlag(flag);
+ dEvDtFlagSet(mFlags[i]);
}
+
return 1;
}
/* 80043F70-80043FD8 03E8B0 0068+00 0/0 1/1 0/0 .text
* specialStaffProc__12dEvDtEvent_cFP12dEvDtStaff_c */
-void dEvDtEvent_c::specialStaffProc(dEvDtStaff_c* p_staff) {
- for (int i = 0; i < mNStaff; i++) {
- p_staff[mStaff[i]].specialProc();
+void dEvDtEvent_c::specialStaffProc(dEvDtStaff_c* i_staffList) {
+ int i;
+ dEvDtStaff_c* staff;
+
+ for (i = 0; i < mNStaff; i++) {
+ staff = &i_staffList[getStaff(i)];
+ staff->specialProc();
}
}
/* 80043FD8-8004403C 03E918 0064+00 4/4 0/0 0/0 .text specialProc_WaitStart__12dEvDtStaff_cFi */
-void dEvDtStaff_c::specialProc_WaitStart(int index) {
- int* timer = dComIfGp_evmng_getMyIntegerP(index, "Timer");
- if (timer == NULL) {
+void dEvDtStaff_c::specialProc_WaitStart(int i_staffId) {
+ int* idata = dComIfGp_evmng_getMyIntegerP(i_staffId, "Timer");
+ if (idata == NULL) {
mWaitTimer = 0;
} else {
- mWaitTimer = *timer;
+ mWaitTimer = *idata;
}
}
/* 8004403C-80044080 03E97C 0044+00 4/4 0/0 0/0 .text specialProc_WaitProc__12dEvDtStaff_cFi */
-void dEvDtStaff_c::specialProc_WaitProc(int param_0) {
+void dEvDtStaff_c::specialProc_WaitProc(int i_staffId) {
if (mWaitTimer > 0) {
mWaitTimer--;
} else {
- dComIfGp_evmng_cutEnd(param_0);
+ dComIfGp_evmng_cutEnd(i_staffId);
}
}
@@ -363,16 +466,27 @@ void dEvDtStaff_c::specialProc() {
void dEvDtStaff_c::init() {
mCurrentCut = mStartCut;
field_0x40 = true;
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ dEvDtCut_c* cut = dComIfGp_getEventManager().getBase().getCutP(mCurrentCut);
+ OS_REPORT("\x1b[32m%06d: event: cut: START %s::%s[%d]\n\x1b[m", g_Counter.mCounter0, getName(), cut->getName(), cut->getTagId());
+ }
+ #endif
+
field_0x41 = false;
field_0x3c = -1;
- if (mType == TYPE_CAMERA) {
+
+ switch (mType) {
+ case TYPE_CAMERA:
dComIfGp_getEventManager().setCameraPlay(1);
+ break;
}
}
/* 80044170-80044190 03EAB0 0020+00 1/1 0/0 0/0 .text advanceCut__12dEvDtStaff_cFi */
-void dEvDtStaff_c::advanceCut(int cut) {
- mCurrentCut = cut;
+void dEvDtStaff_c::advanceCut(int i_cut) {
+ mCurrentCut = i_cut;
field_0x40 = true;
field_0x41 = false;
field_0x3c = -1;
@@ -381,56 +495,71 @@ void dEvDtStaff_c::advanceCut(int cut) {
/* 80044190-80044324 03EAD0 0194+00 1/1 0/0 0/0 .text specialProcLight__12dEvDtStaff_cFv
*/
void dEvDtStaff_c::specialProcLight() {
+ u8* data = mData;
+
int staffId = dComIfGp_evmng_getMyStaffId("LIGHT", NULL, 0);
- if (staffId != -1) {
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ if (staffId == -1) {
+ JUT_ASSERT(663, 0);
+ return;
+ }
+
+ f32* fdata;
+ char* nowCutName;
+ int* idata;
- if (dComIfGp_evmng_getIsAddvance(staffId)) {
- f32* hourP;
+ char* var_r27 = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ nowCutName = var_r27;
- switch (*(int*)nowCutName) {
- case 'CHAN': {
- hourP = dComIfGp_evmng_getMyFloatP(staffId, "Hour");
- if (hourP != NULL) {
- dKy_instant_timechg(*hourP * 15.0f);
- }
+ f32 time;
+ if (dComIfGp_evmng_getIsAddvance(staffId)) {
+ switch (*(int*)nowCutName) {
+ case 'CHAN':
+ fdata = dComIfGp_evmng_getMyFloatP(staffId, "Hour");
+ if (fdata != NULL) {
+ dKy_instant_timechg(*fdata * 15.0f);
+ }
- int* weatherP = dComIfGp_evmng_getMyIntegerP(staffId, "Weather");
- if (weatherP != NULL) {
- switch (*weatherP) {
- case 0:
- dKy_instant_rainchg();
- }
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Weather");
+ if (idata != NULL) {
+ switch (*idata) {
+ case 0:
+ dKy_instant_rainchg();
}
- break;
}
- case 'ADD_':
- hourP = dComIfGp_evmng_getMyFloatP(staffId, "Hour");
- if (hourP != NULL) {
- f32 hours = dComIfGs_getTime() * (1.0f / 15.0f);
- hours += *hourP;
- while (hours >= 24.0) {
- hours -= 24.0;
- }
- dKy_instant_timechg(hours * 15.0f);
+ break;
+ case 'ADD_':
+ fdata = dComIfGp_evmng_getMyFloatP(staffId, "Hour");
+ if (fdata != NULL) {
+ time = dComIfGs_getTime() * (1.0f / 15.0f);
+ time += *fdata;
+ while (time >= 24.0) {
+ time -= 24.0;
}
- break;
+ dKy_instant_timechg(time * 15.0f);
}
}
- dComIfGp_evmng_cutEnd(staffId);
}
+
+ dComIfGp_evmng_cutEnd(staffId);
}
/* 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;
+ StaffWork* wk = (StaffWork*)&mWork;
+
int staffId = dComIfGp_evmng_getMyStaffId("MESSAGE", NULL, 0);
if (staffId == -1) {
+ JUT_ASSERT(741, 0);
return;
}
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ int* idata;
+ char* sdata;
+
+ char* spC = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* nowCutName = spC;
+
if (dComIfGp_evmng_getIsAddvance(staffId)) {
switch (*(int*)nowCutName) {
case 'WAIT':
@@ -438,63 +567,71 @@ void dEvDtStaff_c::specialProcMessage() {
break;
case 'CREA':
case 'SHOW':
- work->_0 = UINT_MAX;
- work->mLMsg = NULL;
- work->mMsgSubstanceNum = dComIfGp_evmng_getMySubstanceNum(staffId, "msgNo");
- work->mMsgSubstanceP = dComIfGp_evmng_getMyIntegerP(staffId, "msgNo");
- if (work->mMsgSubstanceNum < 1) {
- work->mMsgSubstanceNum = dComIfGp_evmng_getMySubstanceNum(staffId, "No");
- work->mMsgSubstanceP = dComIfGp_evmng_getMyIntegerP(staffId, "No");
- }
- work->mMsgNo = *work->mMsgSubstanceP;
+ wk->l_msgId = fpcM_ERROR_PROCESS_ID_e;
+ wk->l_msg = NULL;
+
+ wk->msgs.n = dComIfGp_evmng_getMySubstanceNum(staffId, "msgNo");
+ wk->msgs.d = dComIfGp_evmng_getMyIntegerP(staffId, "msgNo");
+ if (wk->msgs.n < 1) {
+ wk->msgs.n = dComIfGp_evmng_getMySubstanceNum(staffId, "No");
+ wk->msgs.d = dComIfGp_evmng_getMyIntegerP(staffId, "No");
+ }
+
+ JUT_ASSERT(764, wk->msgs.d);
+
+ wk->l_msgNo = *wk->msgs.d;
data->unk = 0;
break;
case 'END\0':
case 'FINI':
- work->mLMsg->mode = 0x10;
+ JUT_ASSERT(770, wk->l_msg);
+ wk->l_msg->mode = fopMsg_MODE_MSG_END_e;
break;
- case 'CONT': {
- work->mLMsg->mode = 0xF;
- int* ptr = dComIfGp_evmng_getMyIntegerP(staffId, "msgNo");
- if (ptr == NULL) {
- ptr = dComIfGp_evmng_getMyIntegerP(staffId, "No");
- }
- work->mMsgNo = *ptr;
- fopMsgM_messageSet(work->mMsgNo, 1000);
+ case 'CONT':
+ JUT_ASSERT(774, wk->l_msg);
+ wk->l_msg->mode = fopMsg_MODE_MSG_CONTINUE_e;
+
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "msgNo");
+ if (idata == NULL) {
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "No");
+ }
+
+ JUT_ASSERT(778, idata);
+ wk->l_msgNo = *idata;
+ fopMsgM_messageSet(wk->l_msgNo, 1000);
break;
- }
- case 'SAVE': {
- work->mMsgNo = 1;
- int* typeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
- if (typeP != NULL && *typeP == 1) {
- work->mMsgNo = 2;
+ case 'SAVE':
+ wk->l_msgNo = 1;
+
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
+ if (idata != NULL && *idata == 1) {
+ wk->l_msgNo = 2;
}
- work->_0 = d_GameOver_Create(work->mMsgNo);
+
+ wk->l_msgId = d_GameOver_Create(wk->l_msgNo);
break;
- }
- case 'TELO': {
- int* forStartP = dComIfGp_evmng_getMyIntegerP(staffId, "ForStart");
+ case 'TELO':
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "ForStart");
- if (forStartP != NULL && *forStartP != 0) {
- work->mMsgNo = getStartTelopNo();
+ if (idata != NULL && *idata != 0) {
+ wk->l_msgNo = getStartTelopNo();
} else {
- char* stageP = dComIfGp_evmng_getMyStringP(staffId, "Stage");
- int* noP = dComIfGp_evmng_getMyIntegerP(staffId, "No");
- if (noP != NULL) {
- work->mMsgNo = *noP;
- } else if (stageP != NULL) {
- work->mMsgNo = getTelopNo(stageP);
+ sdata = dComIfGp_evmng_getMyStringP(staffId, "Stage");
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "No");
+ if (idata != NULL) {
+ wk->l_msgNo = *idata;
+ } else if (sdata != NULL) {
+ wk->l_msgNo = getTelopNo(sdata);
} else {
- work->mMsgNo = getTelopNo();
+ wk->l_msgNo = getTelopNo();
}
}
data->unk = 0;
- if (work->mMsgNo != 0xFFFF) {
- work->_0 = fopMsgM_messageSetDemo(work->mMsgNo);
+ if (wk->l_msgNo != 0xFFFF) {
+ wk->l_msgId = fopMsgM_messageSetDemo(wk->l_msgNo);
}
}
- }
}
switch (*(int*)nowCutName) {
@@ -504,14 +641,14 @@ void dEvDtStaff_c::specialProcMessage() {
case 'CREA':
switch (data->unk) {
case 0:
- work->_0 = fopMsgM_messageSet(work->mMsgNo, 1000);
- if (work->_0 != UINT_MAX) {
+ wk->l_msgId = fopMsgM_messageSet(wk->l_msgNo, 1000);
+ if (wk->l_msgId != fpcM_ERROR_PROCESS_ID_e) {
data->unk++;
}
break;
case 1:
- work->mLMsg = fopMsgM_SearchByID(work->_0);
- if (work->mLMsg != NULL) {
+ wk->l_msg = fopMsgM_SearchByID(wk->l_msgId);
+ if (wk->l_msg != NULL) {
data->unk++;
}
break;
@@ -521,7 +658,8 @@ void dEvDtStaff_c::specialProcMessage() {
}
break;
case 'PUSH':
- if (work->mLMsg->mode == 0xE) {
+ JUT_ASSERT(846, wk->l_msg);
+ if (wk->l_msg->mode == fopMsg_MODE_MSG_DISPLAYED_e) {
dComIfGp_evmng_cutEnd(staffId);
}
break;
@@ -531,33 +669,34 @@ void dEvDtStaff_c::specialProcMessage() {
case 'SHOW':
switch (data->unk) {
case 0:
- work->_0 = fopMsgM_messageSet(work->mMsgNo, 1000);
- if (work->_0 != UINT_MAX) {
+ wk->l_msgId = fopMsgM_messageSet(wk->l_msgNo, 1000);
+ if (wk->l_msgId != fpcM_ERROR_PROCESS_ID_e) {
data->unk = 1;
} else {
break;
}
case 1:
- work->mLMsg = fopMsgM_SearchByID(work->_0);
- if (work->mLMsg == NULL) {
+ wk->l_msg = fopMsgM_SearchByID(wk->l_msgId);
+ if (wk->l_msg == NULL) {
break;
}
- switch (work->mLMsg->mode) {
- case 0xE:
- work->mLMsg->mode = 0x10;
+ switch (wk->l_msg->mode) {
+ case fopMsg_MODE_MSG_DISPLAYED_e:
+ wk->l_msg->mode = fopMsg_MODE_MSG_END_e;
break;
- case 0x11:
+ case fopMsg_MODE_BOX_CLOSING_e:
break;
- case 0x12:
- work->mLMsg->mode = 0x13;
- work->_0 = UINT_MAX;
- work->mLMsg = NULL;
- work->mMsgSubstanceNum--;
- if (work->mMsgSubstanceNum != 0) {
+ case fopMsg_MODE_BOX_CLOSED_e:
+ wk->l_msg->mode = fopMsg_MODE_MSG_DESTROYED_e;
+ wk->l_msgId = fpcM_ERROR_PROCESS_ID_e;
+ wk->l_msg = NULL;
+
+ wk->msgs.n--;
+ if (wk->msgs.n != 0) {
data->unk = 0;
- work->mMsgSubstanceP++;
- work->mMsgNo = *work->mMsgSubstanceP;
+ wk->msgs.d++;
+ wk->l_msgNo = *wk->msgs.d;
} else {
dComIfGp_evmng_cutEnd(staffId);
data->unk = 99;
@@ -574,12 +713,12 @@ void dEvDtStaff_c::specialProcMessage() {
break;
case 'DELE':
case 'FINI':
- if (work->mLMsg == NULL) {
+ if (wk->l_msg == NULL) {
dComIfGp_evmng_cutEnd(staffId);
- } else if (work->mLMsg->mode == 0x12) {
- work->mLMsg->mode = 0x13;
- work->_0 = UINT_MAX;
- work->mLMsg = NULL;
+ } else if (wk->l_msg->mode == fopMsg_MODE_BOX_CLOSED_e) {
+ wk->l_msg->mode = fopMsg_MODE_MSG_DESTROYED_e;
+ wk->l_msgId = fpcM_ERROR_PROCESS_ID_e;
+ wk->l_msg = NULL;
dComIfGp_evmng_cutEnd(staffId);
}
break;
@@ -587,17 +726,17 @@ void dEvDtStaff_c::specialProcMessage() {
dComIfGp_evmng_cutEnd(staffId);
break;
case 'END\0':
- switch (work->mLMsg->mode) {
- case 0x11:
- case 0x12:
+ switch (wk->l_msg->mode) {
+ case fopMsg_MODE_BOX_CLOSING_e:
+ case fopMsg_MODE_BOX_CLOSED_e:
dComIfGp_evmng_cutEnd(staffId);
break;
}
break;
case 'SAVE':
- if (d_GameOver_CheckDelete(work->_0) && dComIfGp_getGameoverStatus() == 1) {
+ if (d_GameOver_CheckDelete(wk->l_msgId) && dComIfGp_getGameoverStatus() == 1) {
dComIfGp_evmng_cutEnd(staffId);
- d_GameOver_Delete(work->_0);
+ d_GameOver_Delete(wk->l_msgId);
}
break;
default:
@@ -613,10 +752,15 @@ void dEvDtStaff_c::specialProcSound() {
int staffId = dComIfGp_evmng_getMyStaffId("SOUND", NULL, 0);
if (staffId == -1) {
+ JUT_ASSERT(960, 0);
return;
}
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ int* idata;
+
+ char* var_r26 = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* nowCutName = var_r26;
+
if (dComIfGp_evmng_getIsAddvance(staffId)) {
switch (*(int*)nowCutName) {
case 'WAIT':
@@ -624,26 +768,38 @@ void dEvDtStaff_c::specialProcSound() {
break;
case 'STRM':
mDoAud_bgmStreamPlay();
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ // "d_event_data:: bgmStreamPlay called!!"
+ OS_REPORT("d_event_data:: bgmStreamPlay を呼んだ!!\n");
+ }
+ #endif
break;
case 'NOMS':
specialProc_WaitStart(staffId);
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ // "SOUND wait %d"
+ OS_REPORT("SOUND 待ち %d \n", data->timer);
+ }
+ #endif
break;
- case 'RIDD': {
- int* typeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
- if (typeP != NULL && *typeP == 1) {
+ case 'RIDD':
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
+ if (idata != NULL && *idata == 1) {
mDoAud_seStart(Z2SE_READ_RIDDLE_A, NULL, 0, 0);
} else {
mDoAud_seStart(Z2SE_READ_RIDDLE_B, NULL, 0, 0);
}
break;
- }
- case 'BGMS': {
- int* timerP = dComIfGp_evmng_getMyIntegerP(staffId, "Timer");
- if (timerP != NULL) {
- mDoAud_bgmStop(*timerP);
+ case 'BGMS':
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Timer");
+ if (idata != NULL) {
+ mDoAud_bgmStop(*idata);
}
}
- }
}
switch (*(int*)nowCutName) {
@@ -663,58 +819,69 @@ void dEvDtStaff_c::specialProcSound() {
/* 80044CB8-80044EE4 03F5F8 022C+00 1/1 0/0 0/0 .text specialProcCreate__12dEvDtStaff_cFv
*/
void dEvDtStaff_c::specialProcCreate() {
+ u8* data = mData;
+
char* name;
+ int* idata;
+ cXyz* xyzdata;
+
u32 arg;
cXyz pos;
csXyz angle;
cXyz scale;
- dStage_objectNameInf* objNameInf;
+ dStage_objectNameInf* objectName;
int staffId = dComIfGp_evmng_getMyStaffId("CREATER", NULL, 0);
if (staffId == -1) {
+ JUT_ASSERT(1055, 0);
return;
}
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* sp14 = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* nowCutName = sp14;
+
if (dComIfGp_evmng_getIsAddvance(staffId)) {
switch (*(int*)nowCutName) {
case 'WAIT':
break;
case 'CREA':
name = dComIfGp_evmng_getMyStringP(staffId, "MAKECAST");
- objNameInf = dStage_searchName(name);
+ JUT_ASSERT(1071, name);
+
+ objectName = dStage_searchName(name);
+ JUT_ASSERT(1073, objectName);
- int* argP = dComIfGp_evmng_getMyIntegerP(staffId, "ARG");
- if (argP == NULL) {
- arg = UINT_MAX;
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "ARG");
+ if (idata == NULL) {
+ arg = 0xFFFFFFFF;
} else {
- arg = *argP;
+ arg = *idata;
}
- cXyz* posP = dComIfGp_evmng_getMyXyzP(staffId, "POS");
- if (posP == NULL) {
+ xyzdata = dComIfGp_evmng_getMyXyzP(staffId, "POS");
+ if (xyzdata == NULL) {
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
pos = player_p->current.pos;
} else {
- pos = *posP;
+ pos = *xyzdata;
}
- int* angleP = dComIfGp_evmng_getMyIntegerP(staffId, "ANGLE");
- if (angleP == NULL) {
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "ANGLE");
+ if (idata == NULL) {
angle.setall(0);
} else {
- angle.set(angleP[0], angleP[1], angleP[2]);
+ angle.set(idata[0], idata[1], idata[2]);
}
- cXyz* scaleP = dComIfGp_evmng_getMyXyzP(staffId, "SCALE");
- if (scaleP == NULL) {
+ xyzdata = dComIfGp_evmng_getMyXyzP(staffId, "SCALE");
+ if (xyzdata == NULL) {
scale.setall(1.0f);
} else {
- scale = *scaleP;
+ scale = *xyzdata;
}
- fopAcM_create(objNameInf->procname, arg, &pos, dComIfGp_roomControl_getStayNo(),
- &angle, &scale, objNameInf->argument);
+ fopAcM_create(objectName->procname, arg, &pos, dComIfGp_roomControl_getStayNo(),
+ &angle, &scale, objectName->argument);
break;
}
}
@@ -723,52 +890,102 @@ void dEvDtStaff_c::specialProcCreate() {
/* 80044EE4-80045878 03F824 0994+00 1/1 0/0 0/0 .text specialProcDirector__12dEvDtStaff_cFv */
void dEvDtStaff_c::specialProcDirector() {
DirectorData* data = (DirectorData*)mData;
+ int* idata;
+ int* idata2;
+ f32* rate;
+
daPy_py_c* player = dComIfGp_getLinkPlayer();
dEvt_control_c& evtControl = dComIfGp_getEvent();
+ GXColor color;
int staffId = dComIfGp_evmng_getMyStaffId("DIRECTOR", NULL, 0);
if (staffId == -1) {
+ JUT_ASSERT(1146, 0);
return;
}
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* sp2C = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* nowCutName = sp2C;
+
if (dComIfGp_evmng_getIsAddvance(staffId)) {
- int* eventFlagP = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlag");
- if (eventFlagP != NULL) {
- dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[*eventFlagP]);
+ int* idata_flag = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlag");
+ if (idata_flag != NULL) {
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: event flag %d\n", g_Counter.mCounter0, *idata_flag);
+ }
+ #endif
+
+ dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[*idata_flag]);
}
- int* eventFlagOffP = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlagOff");
- if (eventFlagOffP != NULL) {
- dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[*eventFlagOffP]);
+ idata_flag = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlagOff");
+ if (idata_flag != NULL) {
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: event flag off %d\n", g_Counter.mCounter0, *idata_flag);
+ }
+ #endif
+
+ dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[*idata_flag]);
}
- int* switchTableP = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchTable");
+ idata_flag = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchTable");
int switchTable;
- if (switchTableP != NULL) {
- switchTable = *switchTableP;
+ if (idata_flag != NULL) {
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: switchbit table %d\n", g_Counter.mCounter0, *idata_flag);
+ }
+ #endif
+
+ switchTable = *idata_flag;
} else {
switchTable = dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo());
}
- int* switchBitP = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchBit");
- if (switchBitP != NULL) {
- dComIfGs_onStageSwitch(switchTable, *switchBitP);
+ idata_flag = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchBit");
+ if (idata_flag != NULL) {
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: switchbit on %d\n", g_Counter.mCounter0, *idata_flag);
+ }
+ #endif
+
+ dComIfGs_onStageSwitch(switchTable, *idata_flag);
}
- int* switchOffP = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchOff");
- if (switchOffP != NULL) {
- dComIfGs_offStageSwitch(switchTable, *switchOffP);
+ idata_flag = dComIfGp_evmng_getMyIntegerP(staffId, "SwitchOff");
+ if (idata_flag != NULL) {
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: switchbit off %d\n", g_Counter.mCounter0, *idata_flag);
+ }
+ #endif
+
+ dComIfGs_offStageSwitch(switchTable, *idata_flag);
}
- int* tmpBitP = dComIfGp_evmng_getMyIntegerP(staffId, "TmpBit");
- if (tmpBitP != NULL) {
- dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[*tmpBitP]);
+ idata_flag = dComIfGp_evmng_getMyIntegerP(staffId, "TmpBit");
+ if (idata_flag != NULL) {
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: temporary bit on %d\n", g_Counter.mCounter0, *idata_flag);
+ }
+ #endif
+
+ dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[*idata_flag]);
}
- int* tmpOffP = dComIfGp_evmng_getMyIntegerP(staffId, "TmpBitOff");
- if (tmpOffP != NULL) {
- dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[*tmpOffP]);
+ idata_flag = dComIfGp_evmng_getMyIntegerP(staffId, "TmpBitOff");
+ if (idata_flag != NULL) {
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: temporary bit off %d\n", g_Counter.mCounter0, *idata_flag);
+ }
+ #endif
+
+ dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[*idata_flag]);
}
switch (*(int*)nowCutName) {
@@ -776,18 +993,17 @@ void dEvDtStaff_c::specialProcDirector() {
specialProc_WaitStart(staffId);
break;
case 'PLAY':
- if (strcmp(nowCutName, "PLAYER_NODRAW") == 0) {
+ if (strcmp(sp2C, "PLAYER_NODRAW") == 0) {
player->onPlayerNoDraw();
- } else if (strcmp(nowCutName, "PLAYER_DRAW") == 0) {
+ } else if (strcmp(sp2C, "PLAYER_DRAW") == 0) {
player->offPlayerNoDraw();
}
break;
case 'NEXT':
- dEvDt_Next_Stage(staffId, 0xD);
+ dEvDt_Next_Stage(staffId, 13);
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();
@@ -800,108 +1016,156 @@ void dEvDtStaff_c::specialProcDirector() {
}
break;
}
- case 'FADE': {
- f32* rateP = dComIfGp_evmng_getMyFloatP(staffId, "Rate");
- int* colorP = dComIfGp_evmng_getMyIntegerP(staffId, "Color");
+ case 'FADE':
+ rate = dComIfGp_evmng_getMyFloatP(staffId, "Rate");
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Color");
- if (*rateP > 0) {
+ JUT_ASSERT(1261, rate);
+
+ if (*rate > 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);
+
+ if (idata != NULL) {
+ color.r = idata[0];
+ color.g = idata[1];
+ color.b = idata[2];
+ color.a = idata[3];
+ mDoGph_gInf_c::fadeOut(*rate, color);
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: fade %f (%d %d %d %d)!!\n", g_Counter.mCounter0, *rate, color.r, color.g, color.b, color.a);
+ }
+ #endif
+ break;
} else {
- mDoGph_gInf_c::fadeOut(*rateP);
+ mDoGph_gInf_c::fadeOut(*rate);
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: fade %f!!\n", g_Counter.mCounter0, *rate);
+ }
+ #endif
}
break;
- }
- case 'VIBR': {
+ 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));
+ if (data->unk2 == 0) {
+ JUT_ASSERT(1291, 0);
+ }
+
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Pattern");
+ idata2 = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
+
+ if (idata == NULL || idata2 == NULL) {
+ JUT_ASSERT(1295, 0);
+ }
+
+ dComIfGp_getVibration().StartQuake((u8*)idata, 0, *idata2, cXyz(0.0f, 1.0f, 0.0f));
break;
- }
- case 'WIPE': {
- f32* wipeRateP = dComIfGp_evmng_getMyFloatP(staffId, "Rate");
- dDlst_list_c::wipeIn(-*wipeRateP);
- if (*wipeRateP > 0) {
+ case 'WIPE':
+ rate = dComIfGp_evmng_getMyFloatP(staffId, "Rate");
+ JUT_ASSERT(1302, rate);
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: derector: wipe %f!!\n", g_Counter.mCounter0, *rate);
+ }
+ #endif
+
+ dDlst_list_c::wipeOut(*rate);
+ if (*rate > 0) {
data->unk = 0;
} else {
data->unk = 1;
}
- int* soundP = dComIfGp_evmng_getMyIntegerP(staffId, "SOUND");
- if (soundP != NULL) {
- switch (*soundP) {
+ idata2 = dComIfGp_evmng_getMyIntegerP(staffId, "SOUND");
+ if (idata2 != NULL) {
+ switch (*idata2) {
case 0:
mDoAud_seStart(Z2SE_SY_DUMMY, 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->unk2 = mapEvent->field_0x14;
+ if (mapEvent->type == dStage_MapEvent_dt_TYPE_MAPTOOLCAMERA) {
+ data->unk2 = mapEvent->data.maptool.field_0x14;
} else {
data->unk2 = -1;
}
+
+ #if DEBUG
+ data->unk2 += (s16)event_debug_evdt_sound_adjust();
+ #endif
} else {
data->unk2 = 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* sdata = dComIfGp_evmng_getMyStringP(staffId, "Pt2");
+ fopAc_ac_c* evt_actor_p;
+ if (sdata != NULL) {
+ evt_actor_p = fopAcM_searchFromName4Event(sdata, -1);
+ if (evt_actor_p != NULL) {
+ evtControl.setPt2(evt_actor_p);
+ OS_REPORT("%06d: event: derector: set %s as Pt2!\n", g_Counter.mCounter0, sdata);
+ } else {
+ OS_REPORT("%06d: event: derector: casting: %s not found!\n", g_Counter.mCounter0, sdata);
}
}
- char* ptTName = dComIfGp_evmng_getMyStringP(staffId, "PtT");
- if (ptTName != NULL) {
- fopAc_ac_c* ptT = fopAcM_searchFromName4Event(ptTName, -1);
- if (ptT != NULL) {
- evtControl.setPtT(ptT);
+ sdata = dComIfGp_evmng_getMyStringP(staffId, "PtT");
+ if (sdata != NULL) {
+ evt_actor_p = fopAcM_searchFromName4Event(sdata, -1);
+ if (evt_actor_p != NULL) {
+ evtControl.setPtT(evt_actor_p);
+ OS_REPORT("%06d: event: derector: set %s as PtT!\n", g_Counter.mCounter0, sdata);
+ } else {
+ OS_REPORT("%06d: event: derector: casting: %s not found!\n", g_Counter.mCounter0, sdata);
}
}
- char* ptIName = dComIfGp_evmng_getMyStringP(staffId, "PtI");
- if (ptIName != NULL) {
- fopAc_ac_c* ptI = fopAcM_searchFromName4Event(ptIName, -1);
- if (ptI != NULL) {
- evtControl.setPtI(ptI);
+ sdata = dComIfGp_evmng_getMyStringP(staffId, "PtI");
+ if (sdata != NULL) {
+ evt_actor_p = fopAcM_searchFromName4Event(sdata, -1);
+ if (evt_actor_p != NULL) {
+ evtControl.setPtI(evt_actor_p);
+ OS_REPORT("%06d: event: derector: set %s as PtI!\n", g_Counter.mCounter0, sdata);
+ } else {
+ OS_REPORT("%06d: event: derector: casting: %s not found!\n", g_Counter.mCounter0, sdata);
}
}
- char* ptDName = dComIfGp_evmng_getMyStringP(staffId, "PtD");
- if (ptDName != NULL) {
- fopAc_ac_c* ptD = fopAcM_searchFromName4Event(ptDName, -1);
- if (ptD != NULL) {
- evtControl.setPtD(ptD);
+ sdata = dComIfGp_evmng_getMyStringP(staffId, "PtD");
+ if (sdata != NULL) {
+ evt_actor_p = fopAcM_searchFromName4Event(sdata, -1);
+ if (evt_actor_p != NULL) {
+ evtControl.setPtD(evt_actor_p);
+ OS_REPORT("%06d: event: derector: set %s as PtD!\n", g_Counter.mCounter0, sdata);
+ } else {
+ OS_REPORT("%06d: event: derector: casting: %s not found!\n", g_Counter.mCounter0, sdata);
}
}
break;
}
- case 'SPEC':
- int* specTypeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
- if (specTypeP != NULL) {
- switch (*specTypeP) {
+ case 'SPEC': {
+ int* type = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
+ if (type != NULL) {
+ switch (*type) {
case 8:
/* dSv_event_flag_c::F_0506 - N/A - Only met Ooccoo Sr. - not yet son (shared Forest - Snowpeak) */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[506])) {
/* dSv_event_flag_c::F_0566 - Ooccoo Sr. stuff - Letter from Ooccoo Sr. came in OK (no son) */
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[566]);
+ OS_REPORT("%06d: event: derector: obachan letter special on 566\n", g_Counter.mCounter0);
}
/* dSv_event_flag_c::F_0507 - N/A - Also met the son in dungeon with first Ooccoo Sr. meeting -
@@ -909,11 +1173,13 @@ void dEvDtStaff_c::specialProcDirector() {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[507])) {
/* dSv_event_flag_c::F_0567 - Ooccoo Sr. stuff - Letter from Ooccoo Sr. came in OK (yes son) */
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[567]);
+ OS_REPORT("%06d: event: derector: obachan letter special on 567\n", g_Counter.mCounter0);
}
}
}
break;
}
+ }
}
switch (*(int*)nowCutName) {
@@ -921,14 +1187,23 @@ void dEvDtStaff_c::specialProcDirector() {
specialProc_WaitProc(staffId);
break;
case 'FADE':
+ #if DEBUG
+ if (event_debug_evdt_reg1()) {
+ dComIfGp_evmng_cutEnd(staffId);
+ break;
+ }
+ #endif
+
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) {
+ rate = dComIfGp_evmng_getMyFloatP(staffId, "Rate");
+ JUT_ASSERT(1454, rate);
+
+ if (*rate > 0) {
dComIfGp_evmng_cutEnd(staffId);
}
}
@@ -970,46 +1245,69 @@ void dEvDtStaff_c::specialProcDirector() {
/* 80045878-80045AFC 0401B8 0284+00 1/1 0/0 0/0 .text specialProcPackage__12dEvDtStaff_cFv */
void dEvDtStaff_c::specialProcPackage() {
- dMsgObject_c* msgObj = dComIfGp_getMsgObjectClass();
- if (!!msgObj) {
+ u8* data = mData;
+ char* sdata;
+ f32* fdata;
+ cXyz* xyzdata;
+ int* idata;
+
+ if (dMsgObject_getMsgObjectClass() != NULL) {
dMsgObject_demoMessageGroup();
}
+ u8 sp8 = 0;
+ u8* demo_data = NULL;
+
int staffId = dComIfGp_evmng_getMyStaffId("PACKAGE", NULL, 0);
if (staffId == -1) {
+ JUT_ASSERT(1528, 0);
return;
}
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* sp14 = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* nowCutName = sp14;
+
if (dComIfGp_evmng_getIsAddvance(staffId)) {
+ sp8 = 1;
+
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");
+ sdata = dComIfGp_evmng_getMyStringP(staffId, "FileName");
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ printf("%06d: event: package: %s !!!\n", g_Counter.mCounter0, sdata);
+ }
+ #endif
+
+ xyzdata = dComIfGp_evmng_getMyXyzP(staffId, "OffsetPos");
+ fdata = dComIfGp_evmng_getMyFloatP(staffId, "OffsetAngY");
+
f32 offsetAngY;
- if (offsetAngYP != NULL) {
- offsetAngY = *offsetAngYP;
+ if (fdata != NULL) {
+ offsetAngY = *fdata;
} else {
offsetAngY = 0.0f;
}
- // should not save event from g_dComIfG_gameInfo to register
+ // fake match: should not save event from g_dComIfG_gameInfo to register
dComIfG_play_c& info = g_dComIfG_gameInfo.play;
- u8* demoData = (u8*)info.getEvent().getStbDemoData(fileName);
- dDemo_c::start(demoData, offsetPos, offsetAngY);
- info.getEvent().setCullRate(10.0f);
+ demo_data = (u8*)info.getEvent().getStbDemoData(sdata);
+ JUT_ASSERT(1571, demo_data);
- int* eventFlagP = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlag");
- if (eventFlagP != NULL) {
- dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[*eventFlagP]);
+ dDemo_c::start(demo_data, xyzdata, offsetAngY);
+ info.getEvent().setCullRate(10.0f); // fake match: suppoed to be dComIfGp_event_setCullRate
+
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlag");
+ if (idata != NULL) {
+ dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[*idata]);
}
- break;
}
}
+
switch (*(int*)nowCutName) {
case 'WAIT':
specialProc_WaitProc(staffId);
@@ -1017,9 +1315,9 @@ void dEvDtStaff_c::specialProcPackage() {
case 'PLAY': {
dEvt_control_c& evtControl = dComIfGp_getEvent();
if (dDemo_c::getMode() == 2) {
- dStage_MapEvent_dt_c* event = evtControl.getStageEventDt();
+ dStage_MapEvent_dt_c* event = dComIfGp_getEvent().getStageEventDt();
if (event != NULL && event->field_0x7 != 0xFF && !evtControl.chkFlag2(1)) {
- dDemo_c::getControl()->referObject_control().suspend(100);
+ dDemo_c::getControl()->suspend(100);
dComIfGp_evmng_cutEnd(staffId);
} else {
dDemo_c::end();
@@ -1039,17 +1337,37 @@ void dEvDtStaff_c::specialProcPackage() {
/* 80045AFC-80045C34 04043C 0138+00 1/1 0/0 0/0 .text specialProcTimekeeper__12dEvDtStaff_cFv */
void dEvDtStaff_c::specialProcTimekeeper() {
- TimerKeeperData* dataP = (TimerKeeperData*)&mData;
+ TimerKeeperData* data = (TimerKeeperData*)&mData;
+ int* idata;
+
int staffId = dComIfGp_evmng_getMyStaffId("TIMEKEEPER", NULL, 0);
if (staffId == -1) {
+ JUT_ASSERT(1650, 0);
return;
}
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* var_r27 = dComIfGp_getEventManager().getMyNowCutName(staffId);
+ char* nowCutName = var_r27;
+
if (dComIfGp_evmng_getIsAddvance(staffId)) {
switch (*(int*)nowCutName) {
case 'COUN':
- dataP->timer = *dComIfGp_evmng_getMyIntegerP(staffId, "Timer");
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Timer");
+
+ #if PLATFORM_SHIELD
+ if (idata == NULL) {
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "S");
+ }
+ #endif
+
+ JUT_ASSERT(1668, idata);
+ data->timer = *idata;
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: timekeeper: COUNTDOWN::START %d\n", g_Counter.mCounter0, *idata);
+ }
+ #endif
break;
case 'WAIT':
break;
@@ -1058,8 +1376,8 @@ void dEvDtStaff_c::specialProcTimekeeper() {
switch (*(int*)nowCutName) {
case 'COUN':
- if (dataP->timer > 0) {
- dataP->timer--;
+ if (data->timer > 0) {
+ data->timer--;
} else {
dComIfGp_evmng_cutEnd(staffId);
}
@@ -1074,117 +1392,108 @@ void dEvDtStaff_c::specialProcTimekeeper() {
*/
void dEvDtStaff_c::specialProcEffect() {
EffectData* data = (EffectData*)mData;
+ int* idata;
+ f32* fdata;
+
int staffId = dComIfGp_evmng_getMyStaffId("EFFECT", NULL, 0);
if (staffId == -1) {
+ JUT_ASSERT(1720, 0);
return;
}
- char* nowCutName = dComIfGp_getEventManager().getMyNowCutName(staffId);
- if (dComIfGp_evmng_getIsAddvance(staffId)) {
+ dEvent_manager_c& evtMgr = dComIfGp_getEventManager();
+ char* var_r27 = evtMgr.getMyNowCutName(staffId);
+ char* nowCutName = var_r27;
+
+ if (evtMgr.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;
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Timer");
+ data->unk = idata != NULL ? *idata : 0;
+ break;
+ }
case 'SHOC': {
- int* powerP = dComIfGp_evmng_getMyIntegerP(staffId, "Power");
- int power;
- if (powerP != NULL) {
- power = *powerP;
- } else {
- power = 5;
- }
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Power");
+ int power = idata != NULL ? *idata : 5;
+
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
+ int type = idata != NULL ? *idata : 15;
- 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;
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: effect: start shock %d %x\n", g_Counter.mCounter0, power, type & 0x1F);
+ }
+ #endif
+ 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;
- }
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Timer");
+ data->unk = idata != NULL ? *idata : 30;
- data->unk = timer;
- int* powerP = dComIfGp_evmng_getMyIntegerP(staffId, "Power");
- if (powerP != NULL) {
- power = *powerP;
- } else {
- power = 5;
- }
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Power");
+ power = idata != NULL ? *idata : 5;
- int* typeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
- if (typeP != NULL) {
- type = *typeP;
- } else {
- type = 0xF;
- }
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Type");
+ type = idata != NULL ? *idata : 15;
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;
- }
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Random");
+ random = idata != NULL ? *idata : 0;
+
dComIfGp_getVibration().StartQuake(pattern, random, type, cXyz(0, 1, 0));
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: effect: start quake %s %d %x\n", g_Counter.mCounter0, pattern, power, type & 0x1F);
+ }
+ #endif
} else {
dComIfGp_getVibration().StartQuake(power, type, cXyz(0, 1, 0));
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: effect: start quake %d\n", g_Counter.mCounter0, power);
+ }
+ #endif
}
- } break;
+ 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;
+ idata = dComIfGp_evmng_getMyIntegerP(staffId, "Timer");
+ int timer = data->unk = idata != NULL ? *idata : 30;
- f32* alphaP = dComIfGp_evmng_getMyFloatP(staffId, "Alpha");
- f32 alpha;
- if (alphaP != NULL) {
- alpha = *alphaP;
- } else {
- alpha = 0.8f;
- }
+ fdata = dComIfGp_evmng_getMyFloatP(staffId, "Alpha");
+ f32 alpha = fdata != NULL ? *fdata : 0.8f;
- f32* scaleP = dComIfGp_evmng_getMyFloatP(staffId, "Scale");
- f32 scale;
- if (scaleP != NULL) {
- scale = *scaleP;
- } else {
- scale = 1.0f;
+ fdata = dComIfGp_evmng_getMyFloatP(staffId, "Scale");
+ f32 scale = fdata != NULL ? *fdata : 1.0f;
+
+ dCam_getBody()->StartBlure(timer, NULL, alpha, scale);
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: effect: blure %d %f %f\n", g_Counter.mCounter0, timer, alpha, scale);
}
- dCam_getBody()->StartBlure(timer2, NULL, alpha, scale);
- } break;
+ #endif
+ break;
+ }
}
}
+
if (data->unk != 0) {
data->unk--;
}
+
switch (*(int*)nowCutName) {
case 'WAIT':
if (data->unk == 0) {
@@ -1194,6 +1503,13 @@ void dEvDtStaff_c::specialProcEffect() {
case 'QUAK':
if (data->unk == 0) {
dComIfGp_getVibration().StopQuake(0x1F);
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("%06d: event: effect: stop quake\n", g_Counter.mCounter0);
+ }
+ #endif
+
dComIfGp_evmng_cutEnd(staffId);
}
break;
@@ -1210,8 +1526,11 @@ void dEvDtStaff_c::specialProcEffect() {
/* 800460A8-80046138 0409E8 0090+00 1/1 0/0 0/0 .text startCheck__10dEvDtCut_cFv */
int dEvDtCut_c::startCheck() {
- for (int i = 0; i < 3; i++) {
- int flag = this->getStartFlag(i);
+ int i;
+ int flag;
+
+ for (i = 0; i < 3; i++) {
+ flag = getStartFlag(i);
if (flag == -1) {
if (i == 0) {
return -1;
@@ -1224,6 +1543,7 @@ int dEvDtCut_c::startCheck() {
return 0;
}
}
+
return 1;
}
@@ -1242,68 +1562,113 @@ int dEvDtBase_c::init() {
}
/* 8004616C-8004628C 040AAC 0120+00 0/0 6/6 0/0 .text init__11dEvDtBase_cFPci */
-int dEvDtBase_c::init(char* p_data, int roomNo) {
+int dEvDtBase_c::init(char* i_data, int i_roomNo) {
init();
- if (p_data == NULL) {
+ if (i_data == NULL) {
return 0;
- } else {
- setHeaderP((event_binary_data_header*)p_data);
+ }
- if (getEventNum() > 0) {
- setEventP((dEvDtEvent_c*)(p_data + getEventTop()));
- }
+ setHeaderP((event_binary_data_header*)i_data);
- if (getStaffNum() > 0) {
- setStaffP((dEvDtStaff_c*)(p_data + getStaffTop()));
- }
+ if (getEventNum() > 0) {
+ setEventP((dEvDtEvent_c*)(i_data + getEventTop()));
+ }
- if (getCutNum() > 0) {
- setCutP((dEvDtCut_c*)(p_data + getCutTop()));
- }
+ if (getStaffNum() > 0) {
+ setStaffP((dEvDtStaff_c*)(i_data + getStaffTop()));
+ }
- if (getDataNum() > 0) {
- setDataP((dEvDtData_c*)(p_data + getDataTop()));
- }
+ if (getCutNum() > 0) {
+ setCutP((dEvDtCut_c*)(i_data + getCutTop()));
+ }
- if (getFDataNum() > 0) {
- setFDataP((f32*)(p_data + getFDataTop()));
- }
+ if (getDataNum() > 0) {
+ setDataP((dEvDtData_c*)(i_data + getDataTop()));
+ }
- if (getIDataNum() > 0) {
- setIDataP((int*)(p_data + getIDataTop()));
- }
+ if (getFDataNum() > 0) {
+ setFDataP((f32*)(i_data + getFDataTop()));
+ }
- if (getSDataNum() > 0) {
- setSDataP((char*)(p_data + getSDataTop()));
- }
+ if (getIDataNum() > 0) {
+ setIDataP((int*)(i_data + getIDataTop()));
+ }
- mRoomNo = roomNo;
- return getEventNum();
+ if (getSDataNum() > 0) {
+ setSDataP((char*)(i_data + getSDataTop()));
}
+
+ mRoomNo = i_roomNo;
+ return getEventNum();
}
/* 8004628C-800462FC 040BCC 0070+00 0/0 1/1 0/0 .text advanceCut__11dEvDtBase_cFP12dEvDtEvent_c */
-void dEvDtBase_c::advanceCut(dEvDtEvent_c* p_event) {
- for (int i = 0; i < p_event->getNStaff(); i++) {
- advanceCutLocal(mStaffP + p_event->getStaff(i));
+void dEvDtBase_c::advanceCut(dEvDtEvent_c* i_event) {
+ int i;
+ dEvDtStaff_c* staff;
+
+ for (i = 0; i < i_event->getNStaff(); i++) {
+ staff = mStaffP + i_event->getStaff(i);
+ advanceCutLocal(staff);
}
}
/* 800462FC-800463DC 040C3C 00E0+00 1/1 0/0 0/0 .text
* advanceCutLocal__11dEvDtBase_cFP12dEvDtStaff_c */
-BOOL dEvDtBase_c::advanceCutLocal(dEvDtStaff_c* p_staff) {
- dEvDtCut_c* cut = &mCutP[p_staff->getCurrentCut()];
+BOOL dEvDtBase_c::advanceCutLocal(dEvDtStaff_c* i_staff) {
+ dEvDtCut_c* cut = &mCutP[i_staff->getCurrentCut()];
+
+ #if DEBUG
+ if (event_debug_evdt_endcheck()) {
+ if (!dEvDtFlagCheck(cut->getFlagId())) {
+ OS_REPORT("\x1b[32m%06d: event: cut: %s::%s was NOT stoped\n\x1b[m", g_Counter.mCounter0, i_staff->getName(), cut->getName());
+ } else {
+ OS_REPORT("\x1b[32m%06d: event: cut: %s::%s was stoped\n\x1b[m", g_Counter.mCounter0, i_staff->getName(), cut->getName());
+ }
+ }
+ #endif
+
+ dEvDtCut_c* cut_next;
if (dEvDtFlagCheck(cut->getFlagId()) && cut->getNext() != -1) {
- switch (mCutP[cut->getNext()].startCheck()) {
+ cut_next = &mCutP[cut->getNext()];
+ switch (cut_next->startCheck()) {
case -1:
- p_staff->advanceCut(cut->getNext());
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("\x1b[32m%06d: event: cut: STOP %s::%s[%d]\n\x1b[m", g_Counter.mCounter0, i_staff->getName(), cut->getName(), cut->getTagId());
+ }
+ #endif
+
+ i_staff->advanceCut(cut->getNext());
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ cut = &mCutP[i_staff->getCurrentCut()];
+ OS_REPORT("\x1b[32m%06d: event: cut: START %s::%s[%d]\n\x1b[m", g_Counter.mCounter0, i_staff->getName(), cut->getName(), cut->getTagId());
+ }
+ #endif
return TRUE;
case 1:
dEvDtFlagSet(cut->getFlagId());
- p_staff->advanceCut(cut->getNext());
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ OS_REPORT("\x1b[32m%06d: event: cut: STOP %s::%s[%d]\n\x1b[m", g_Counter.mCounter0, i_staff->getName(), cut->getName(), cut->getTagId(), g_Counter.mCounter0);
+ }
+ #endif
+
+ i_staff->advanceCut(cut->getNext());
+
+ #if DEBUG
+ if (event_debug_evdt()) {
+ cut = &mCutP[i_staff->getCurrentCut()];
+ OS_REPORT("\x1b[32m%06d: event: cut: START %s::%s[%d]\n\x1b[m", g_Counter.mCounter0, i_staff->getName(), cut->getName(), cut->getTagId());
+ }
+ #endif
return TRUE;
}
}
- p_staff->field_0x40 = false;
+
+ i_staff->field_0x40 = false;
return FALSE;
}