diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h index 98f85830a44..23061712957 100644 --- a/include/d/actor/d_a_midna.h +++ b/include/d/actor/d_a_midna.h @@ -279,8 +279,8 @@ public: void changeDemoMode(u32 mode) { mDemoMode = mode; } BOOL checkPortalObjCall() { return checkStateFlg0(FLG0_PORTAL_OBJ_CALL); } BOOL checkNoHairScale() const { return checkStateFlg0(FLG0_NO_HAIR_SCALE); } - BOOL checkNpcNear() { return checkStateFlg0(FLG0_NPC_NEAR); } - BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); } + BOOL checkNpcNear() const { return checkStateFlg0(FLG0_NPC_NEAR); } + BOOL checkNpcFar() const { return checkStateFlg0(FLG0_NPC_FAR); } u32 checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); } BOOL checkNoInput() const { return checkStateFlg0(FLG0_NO_INPUT); } BOOL checkWolfNoPos() const { return checkStateFlg0(FLG0_WOLF_NO_POS); } diff --git a/include/d/actor/d_a_myna.h b/include/d/actor/d_a_myna.h index 4ea9b699d04..bb4d25b477e 100644 --- a/include/d/actor/d_a_myna.h +++ b/include/d/actor/d_a_myna.h @@ -119,12 +119,14 @@ public: /* 8094A608 */ void setDefaultWaitAnime(u8); /* 8094AA20 */ virtual ~daMyna_c() {} - daMyna_c(){}; + daMyna_c() {} void onEventFlag(u8 flag) { field_0x92F |= (1 << flag); } void offEventFlag(u8 flag) { field_0x92F &= ~(1 << flag); } bool isEventFlag(u8 flag) { return field_0x92F & (1 << flag); } + fopAc_ac_c* getSpeakActorPtr() { return field_0x828; } + typedef void (daMyna_c::*ProcFunc)(); typedef int (daMyna_c::*BaseMotionFunc)(int); diff --git a/include/d/d_com_static.h b/include/d/d_com_static.h index 9bb8e83ca21..84277ff2f65 100644 --- a/include/d/d_com_static.h +++ b/include/d/d_com_static.h @@ -7,7 +7,7 @@ u8 daNpcKakashi_getSwdTutorialStep(); void daNpcKakashi_setSwdTutorialStep(u8 iEvtNum); bool daNpcKakashi_getSwdTutorialResult(); BOOL daNpcKakashi_chkSwdTutorialStage(); -int daNpcKakashi_getSuccessCount(); +u8 daNpcKakashi_getSuccessCount(); void daNpcKakashi_clrSuccessCount(); int daNpcMsg_setEvtNum(u8 iEvtNum); diff --git a/include/d/d_meter2_info.h b/include/d/d_meter2_info.h index 3d8e2b4c817..07af53d474c 100644 --- a/include/d/d_meter2_info.h +++ b/include/d/d_meter2_info.h @@ -152,10 +152,10 @@ public: u8 getGameOverType() { return mGameOverType; } void setGameOverType(u8 i_gameoverType) { mGameOverType = i_gameoverType; } void setMsgKeyWaitTimer(s16 i_waitTimer) { mMsgKeyWaitTimer = i_waitTimer; } - u32 getMsgTimeMs() { return mMsgTimeMs; } - void setMsgTimeMs(u32 msgTime) { mMsgTimeMs = msgTime; } + s32 getMsgTimeMs() { return mMsgTimeMs; } + void setMsgTimeMs(s32 msgTime) { mMsgTimeMs = msgTime; } void setTimeMs(s32 i_time) { mTimeMs = i_time; } - u32 getTimeMs() { return mTimeMs; } + s32 getTimeMs() { return mTimeMs; } u8 getNowCount() { return mNowCount; } int getMaxCount() { return mMaxCount; } void setScopeZoomPointer(u8 param_0) { mScopeZoomPointer = param_0; } @@ -220,7 +220,7 @@ public: /* 0x7C */ f32 m2DPosV; /* 0x80 */ f32 unk128; /* 0x84 */ s32 mTimeMs; - /* 0x88 */ u32 mMsgTimeMs; + /* 0x88 */ s32 mMsgTimeMs; /* 0x8C */ s32 mMeterString; /* 0x90 */ u32 mTempBits; /* 0x94 */ s16 mMsgKeyWaitTimer; @@ -619,15 +619,15 @@ inline void dMeter2Info_setMsgKeyWaitTimer(s16 i_waitTimer) { g_meter2_info.setMsgKeyWaitTimer(i_waitTimer); } -inline u32 dMeter2Info_getMsgTimeMs() { +inline s32 dMeter2Info_getMsgTimeMs() { return g_meter2_info.getMsgTimeMs(); } -inline u32 dMeter2Info_getTimeMs() { +inline s32 dMeter2Info_getTimeMs() { return g_meter2_info.getTimeMs(); } -inline void dMeter2Info_setMsgTimeMs(u32 msgTime) { +inline void dMeter2Info_setMsgTimeMs(s32 msgTime) { g_meter2_info.setMsgTimeMs(msgTime); } diff --git a/include/d/d_msg_flow.h b/include/d/d_msg_flow.h index b50e48c06ca..ceae7d62d5c 100644 --- a/include/d/d_msg_flow.h +++ b/include/d/d_msg_flow.h @@ -3,6 +3,18 @@ #include "dolphin/types.h" +enum { + NODETYPE_MESSAGE_e = 1, + NODETYPE_BRANCH_e = 2, + NODETYPE_EVENT_e = 3, +}; + +enum { + SELTYPE_NONE_e = 0, + SELTYPE_VERTICAL_e = 1, + SELTYPE_HORIZONTAL_e = 2, +}; + class fopAc_ac_c; class msg_class; @@ -11,25 +23,27 @@ struct mesg_flow_node { /* 0x00 */ u8 type; /* 0x01 */ u8 field_0x1; /* 0x02 */ u16 msg_index; - /* 0x04 */ u8 params[4]; + /* 0x04 */ u16 next_node_idx; + /* 0x06 */ u16 unk_0x6; }; // Size: 0x8 struct mesg_flow_node_branch { /* 0x00 */ u8 type; /* 0x01 */ u8 field_0x1; - /* 0x02 */ u16 msg_index; - /* 0x04 */ u16 params[2]; + /* 0x02 */ u16 query_idx; + /* 0x04 */ u16 param; + /* 0x06 */ u16 next_node_idx; }; struct mesg_flow_node_event { /* 0x00 */ u8 type; - /* 0x01 */ u8 field_0x1; - /* 0x02 */ u16 msg_index; + /* 0x01 */ u8 event_idx; + /* 0x02 */ u16 next_node_idx; /* 0x04 */ u8 params[4]; }; // Size: 0x8 class dMsgFlow_c; -typedef int (dMsgFlow_c::*queryFunc)(mesg_flow_node_branch*, fopAc_ac_c*, int); +typedef u16 (dMsgFlow_c::*queryFunc)(mesg_flow_node_branch*, fopAc_ac_c*, int); typedef int (dMsgFlow_c::*eventFunc)(mesg_flow_node_event*, fopAc_ac_c*); class dMsgFlow_c { @@ -60,59 +74,59 @@ public: /* 8024B0F0 */ int getParam(u16*, u16*, u8*); /* 8024B108 */ int getParam(u8*, u8*); /* 8024B130 */ int getParam(u8*); - /* 8024B138 */ int query001(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B180 */ int query002(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B208 */ int query003(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B250 */ int query004(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B2C0 */ int query005(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B2F8 */ int query006(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B32C */ int query007(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B45C */ int query008(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B4A4 */ int query009(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B4D0 */ int query010(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B504 */ int query011(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B54C */ int query012(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B584 */ int query013(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B5BC */ int query014(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B5F4 */ int query015(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B62C */ int query016(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B664 */ int query017(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B6A8 */ int query018(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B6EC */ int query019(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B730 */ int query020(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B774 */ int query021(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B8E4 */ int query022(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B918 */ int query023(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B954 */ int query024(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B974 */ int query025(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B9BC */ int query026(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B9E8 */ int query027(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BA4C */ int query028(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BAA0 */ int query029(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BAE0 */ int query030(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BB18 */ int query031(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BB74 */ int query032(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BB9C */ int query033(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BBE4 */ int query034(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BC14 */ int query035(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BC3C */ int query036(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BC80 */ int query037(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BCC4 */ int query038(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BDB0 */ int query039(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BE4C */ int query040(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BF50 */ int query041(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024BFEC */ int query042(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C0A8 */ int query043(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C144 */ int query044(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C18C */ int query045(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C218 */ int query046(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C248 */ int query047(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C250 */ int query048(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C2A0 */ int query049(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C2FC */ int query050(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C340 */ int query051(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C3A0 */ int query052(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024C3D4 */ int query053(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B138 */ u16 query001(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B180 */ u16 query002(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B208 */ u16 query003(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B250 */ u16 query004(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B2C0 */ u16 query005(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B2F8 */ u16 query006(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B32C */ u16 query007(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B45C */ u16 query008(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B4A4 */ u16 query009(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B4D0 */ u16 query010(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B504 */ u16 query011(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B54C */ u16 query012(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B584 */ u16 query013(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B5BC */ u16 query014(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B5F4 */ u16 query015(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B62C */ u16 query016(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B664 */ u16 query017(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B6A8 */ u16 query018(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B6EC */ u16 query019(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B730 */ u16 query020(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B774 */ u16 query021(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B8E4 */ u16 query022(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B918 */ u16 query023(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B954 */ u16 query024(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B974 */ u16 query025(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B9BC */ u16 query026(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B9E8 */ u16 query027(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BA4C */ u16 query028(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BAA0 */ u16 query029(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BAE0 */ u16 query030(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BB18 */ u16 query031(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BB74 */ u16 query032(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BB9C */ u16 query033(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BBE4 */ u16 query034(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BC14 */ u16 query035(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BC3C */ u16 query036(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BC80 */ u16 query037(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BCC4 */ u16 query038(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BDB0 */ u16 query039(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BE4C */ u16 query040(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BF50 */ u16 query041(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024BFEC */ u16 query042(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C0A8 */ u16 query043(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C144 */ u16 query044(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C18C */ u16 query045(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C218 */ u16 query046(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C248 */ u16 query047(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C250 */ u16 query048(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C2A0 */ u16 query049(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C2FC */ u16 query050(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C340 */ u16 query051(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C3A0 */ u16 query052(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024C3D4 */ u16 query053(mesg_flow_node_branch*, fopAc_ac_c*, int); /* 8024C3FC */ int event000(mesg_flow_node_event*, fopAc_ac_c*); /* 8024C488 */ int event001(mesg_flow_node_event*, fopAc_ac_c*); /* 8024C514 */ int event002(mesg_flow_node_event*, fopAc_ac_c*); @@ -157,9 +171,15 @@ public: /* 8024DA78 */ int event041(mesg_flow_node_event*, fopAc_ac_c*); /* 8024DAA8 */ int event042(mesg_flow_node_event*, fopAc_ac_c*); + void initWord(fopAc_ac_c*, const char*, u8, int, fopAc_ac_c**); + +#ifdef DEBUG + void dbgPrint(); +#endif + u8 isSelectMessage() { return mSelectMessage; } void onNonStopJunpFlowFlag() { mNonStopJunpFlowFlag = 1; } - int getSelectNum() { return query005(NULL, NULL, 0); } + u16 getSelectNum() { return query005(NULL, NULL, 0); } s16 getChoiceNo() { return mChoiceNo; } void setMsg(u32 msg) { mMsg = msg; } bool checkEndFlow() { return field_0x26 == 1; } @@ -170,13 +190,16 @@ public: private: /* 0x04 */ u8* mFlow_p; /* 0x08 */ u8* mLabelInfo_p; - /* 0x0C */ mesg_flow_node* mFlowNodeTBL; - /* 0x10 */ u16 field_0x10; + /* 0x0C */ union mesg_flow { + mesg_flow_node message; + mesg_flow_node_branch branch; + mesg_flow_node_event event; + }* mFlowNodeTBL; + /* 0x10 */ u16 mNodeIdx; /* 0x12 */ u16 field_0x12; - /* 0x14 */ u16* field_0x14; + /* 0x14 */ u16* mFlowIdxTBL; /* 0x18 */ u16* field_0x18; /* 0x1C */ u16 mFlow; - /* 0x1E */ u8 field_0x1e[2]; /* 0x20 */ u32 mMsg; /* 0x24 */ u8 mSelectMessage; /* 0x25 */ u8 field_0x25; @@ -189,14 +212,14 @@ private: /* 0x34 */ int field_0x34; /* 0x38 */ u16 field_0x38; /* 0x3A */ u16 mChoiceNo; - /* 0x3C */ s32 field_0x3c; + /* 0x3C */ s32 mTimer; /* 0x40 */ u8 field_0x40; /* 0x41 */ u8 field_0x41; /* 0x42 */ u8 field_0x42; /* 0x43 */ u8 field_0x43; /* 0x44 */ u8 field_0x44; /* 0x45 */ u8 field_0x45; - /* 0x46 */ u8 field_0x46; + /* 0x46 */ u8 mSelType; /* 0x47 */ u8 field_0x47; /* 0x48 */ u8 mNonStopJunpFlowFlag; }; diff --git a/include/d/d_msg_object.h b/include/d/d_msg_object.h index d9443409169..611e9b0d364 100644 --- a/include/d/d_msg_object.h +++ b/include/d/d_msg_object.h @@ -239,6 +239,16 @@ public: u8 getArrowNumLocal() { return mArrowNum; } u8 isNoDemoFlag() { return mNoDemoFlag; } + static void setWord(const char* i_word); + void setWordLocal(const char* i_word) { + strcpy(mWord, i_word); + } + + static void setSelectWord(int i_no, const char* i_word); + void setSelectWordLocal(int i_no, const char* i_word) { + strcpy(mSelectWord[i_no], i_word); + } + jmessage_tSequenceProcessor* getSequenceProcessor() { return mpSeqProc; } /* 0x0FC */ int field_0xfc; @@ -401,7 +411,7 @@ inline void dMsgObject_setShopWaitTimer(u8 timer) { } inline void dMsgObject_changeFlowGroup(long flow) { - dMsgObject_c::changeFlowGroup(flow); + dMsgObject_getMsgObjectClass()->changeFlowGroup(flow); } inline void dMsgObject_setTalkActor(fopAc_ac_c* actor) { @@ -505,6 +515,34 @@ inline void dMsgObject_setPortalMessageID(u16 id) { dMsgObject_getMsgObjectClass()->setPortalMessageID(id); } +inline void dMsgObject_setWord(const char* i_word) { + dMsgObject_getMsgObjectClass()->setWord(i_word); +} + +inline void dMsgObject_setSelectWord(int i_no, const char* i_word) { + dMsgObject_getMsgObjectClass()->setSelectWord(i_no, i_word); +} + +inline u8* dMsgObject_getMsgDtPtr() { + return (u8*)dMsgObject_getMsgObjectClass()->getMsgDtPtr(); +} + +inline void dMsgObject_setSelectCancelPos(u8 param_0) { + dMsgObject_getMsgObjectClass()->setSelectCancelPos(param_0); +} + +inline void dMsgObject_setSelectCursorPos(u8 param_0) { + dMsgObject_getMsgObjectClass()->setSelectCursorPos(param_0); +} + +inline u8 dMsgObject_getSelectBombBagID() { + dMsgObject_getMsgObjectClass()->getSelectBombBagID(); +} + +inline s16 dMsgObject_getSelectBombPrice() { + dMsgObject_getMsgObjectClass()->getSelectBombPrice(); +} + class dMsgObject_HowlHIO_c { public: /* 80232AEC */ dMsgObject_HowlHIO_c(); @@ -681,7 +719,7 @@ public: /* 0x31A */ s16 mHaloDelayFrame; /* 0x31C */ s16 mHaloDelayFrameSpirit; /* 0x31E */ bool mSaveSeqMsgDebug; - /* 0x31F */ bool mMsgDebug; + /* 0x31F */ u8 mMsgDebug; /* 0x320 */ bool mTextColorDebug; /* 0x321 */ u8 mTextColorUpperR[9]; // Default, Red, Green, Blue, Yellow, L.Blue, Purple, Grey, Orange, diff --git a/include/d/d_save.h b/include/d/d_save.h index 3161dce6ad5..30ac303aa26 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -394,7 +394,7 @@ public: void offCollectMirror(u8 i_item); BOOL isCollectMirror(u8 i_item) const; - u8 getPohNum() { return mPohNum; } + u8 getPohNum() const { return mPohNum; } private: /* 0x0 */ u8 mItem[8]; diff --git a/include/d/d_stage.h b/include/d/d_stage.h index e5dc1e0ff53..8cf0ce60bfa 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -1416,6 +1416,10 @@ inline u8 dStage_FileList_dt_GRASSLIGHT(dStage_FileList_dt_c* p_fList) { return (p_fList->mParameters >> 7) & 0xFF; } +inline u16 dStage_FileList_dt_GetMsg(dStage_FileList_dt_c* p_fList) { + return p_fList->mMsg; +} + inline f32 dStage_FileList2_dt_GetLeftRmX(dStage_FileList2_dt_c* p_fList2) { return p_fList2->mLeftRmX; } diff --git a/src/d/d_com_static.cpp b/src/d/d_com_static.cpp index edd5f157462..a8a9f4e810b 100644 --- a/src/d/d_com_static.cpp +++ b/src/d/d_com_static.cpp @@ -260,8 +260,8 @@ void daNpcKakashi_setSwdTutorialResult(bool param_0) { } /* 800317A4-800317DC 02C0E4 0038+00 0/0 1/1 1/1 .text daNpcKakashi_getSuccessCount__Fv */ -int daNpcKakashi_getSuccessCount() { - return dComIfGs_getTmpReg(0xFEFF); +u8 daNpcKakashi_getSuccessCount() { + return dComIfGs_getTmpReg(0xFEFF) & 0xFF; } /* 800317DC-80031838 02C11C 005C+00 0/0 0/0 1/1 .text daNpcKakashi_incSuccessCount__Fv */ diff --git a/src/d/d_msg_flow.cpp b/src/d/d_msg_flow.cpp index 17bbdf12a51..7bb1343311e 100644 --- a/src/d/d_msg_flow.cpp +++ b/src/d/d_msg_flow.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: d/d_msg_flow -// - #include "d/d_msg_flow.h" #include "d/actor/d_a_alink.h" #include "d/d_com_static.h" @@ -13,6 +8,8 @@ #include "f_op/f_op_msg_mng.h" #include "m_Do/m_Do_graphic.h" #include "d/actor/d_a_midna.h" +#include "d/actor/d_a_myna.h" +#include "d/actor/d_a_obj_ss_base.h" #include "SSystem/SComponent/c_math.h" /* 803C14B8-803C14C4 01E5D8 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ @@ -31,12 +28,9 @@ dMsgFlow_c::~dMsgFlow_c() {} /* 80249F90-8024A13C 2448D0 01AC+00 0/0 10/10 86/86 .text * init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c */ -void dMsgFlow_c::init(fopAc_ac_c* i_partner, int i_flowID, int param_2, fopAc_ac_c** param_3) { - u16 uVar4; - u16 flow_val; - +void dMsgFlow_c::init(fopAc_ac_c* i_partner, int i_flowID, int param_2, fopAc_ac_c** i_talkPartners) { if (!dMsgObject_isTalkNowCheck()) { - if (param_3 == NULL) { + if (i_talkPartners == NULL) { dComIfGp_setMesgCameraInfoActor(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } @@ -44,134 +38,179 @@ void dMsgFlow_c::init(fopAc_ac_c* i_partner, int i_flowID, int param_2, fopAc_ac if (param_2 == 0 && g_MsgObject_HIO_c.mMsgDebug == 2) { i_flowID = g_MsgObject_HIO_c.mFlowIndex; } - flow_val = i_flowID; + + u8* labelInfoTBL = NULL; + u16 prevFlowID = i_flowID; dMsgObject_changeFlowGroup(i_flowID); + if (param_2 == 0) { setInitValue(1); + mFlow_p = getMsgDataBlock("FLW1"); - mLabelInfo_p = getMsgDataBlock("FLI1"); - mFlowNodeTBL = (mesg_flow_node*)(mFlow_p + 0x10); - field_0x14 = (u16*)(mFlowNodeTBL + (*(u16*)(mFlow_p + 8))); - field_0x18 = field_0x14 + *(u16*)(mFlow_p + 8); + JUT_ASSERT(121, 0 != mFlow_p); + + mLabelInfo_p = getMsgDataBlock("FLI1"); + JUT_ASSERT(125, 0 != mLabelInfo_p); + + labelInfoTBL = mLabelInfo_p + 0x10; + mFlowNodeTBL = (mesg_flow*)(mFlow_p + 0x10); + mFlowIdxTBL = (u16*)(mFlowNodeTBL + (*(u16*)(mFlow_p + 8))); + field_0x18 = mFlowIdxTBL + *(u16*)(mFlow_p + 8); + + mFlow = prevFlowID; - mFlow = flow_val; if (i_partner != NULL) { dMsgObject_setTalkPartner(i_partner); } - setNodeIndex(getInitNodeIndex(mFlow), param_3); + + setNodeIndex(getInitNodeIndex(mFlow), i_talkPartners); } else { - uVar4 = field_0x10; + u16 nodeIdx = mNodeIdx; setInitValue(0); + if (i_partner != NULL) { dMsgObject_setTalkPartner(i_partner); } - setNodeIndex(uVar4, param_3); + + setNodeIndex(nodeIdx, i_talkPartners); } +#ifdef DEBUG + dbgPrint(); +#endif dMsgObject_setSelectWordFlag(0); } } -static void dummy() { - DEAD_STRING(""); +void dMsgFlow_c::initWord(fopAc_ac_c* i_partner, const char* i_word, u8 i_outputType, int param_3, fopAc_ac_c** param_4) { + int flowID = 0x1324; + dMsgObject_setWord(i_word); + dMsgObject_setSelectWord(0, ""); + dMsgObject_setSelectWord(1, ""); + dMsgObject_setSelectWord(2, ""); + + if (i_outputType != 0xFF) { + dMsgObject_setMsgOutputType(i_outputType); + } + + init(i_partner, flowID, param_3, param_4); } /* 8024A13C-8024A2D8 244A7C 019C+00 2/0 0/0 2/2 .text checkOpenDoor__10dMsgFlow_cFP10fopAc_ac_cPi */ -// NONMATCHING regalloc, instruction issues -int dMsgFlow_c::checkOpenDoor(fopAc_ac_c *param_1,int *param_2) { - if (dMsgObject_isTalkNowCheck()) { - return 0; - } else { - int iVar3 = 0; - int iVar7 = 0; - s32 bVar2 = 0; - mesg_flow_node* iVar8; - u16 uVar5 = getInitNodeIndex(mFlow); - while (((uVar5 != 0xffff && (!iVar3)) && (!bVar2))) { - iVar8 = &mFlowNodeTBL[uVar5]; - switch(iVar8->type) { - case 0: - default: - break; - case 1: - uVar5 = *(u16*)iVar8->params; - iVar7 = iVar7 + 1; - break; - case 2: - mesg_flow_node_branch* nodeBranch = (mesg_flow_node_branch*)iVar8; - switch(iVar8->msg_index) { +int dMsgFlow_c::checkOpenDoor(fopAc_ac_c* i_speaker_p, int* param_2) { + if (dMsgObject_isTalkNowCheck()) { + return 0; + } + + BOOL var_r27 = FALSE; + int var_r26 = 0; + BOOL var_r25 = FALSE; + + u16 flowID = mFlow; + u16 nodeIdx = getInitNodeIndex(flowID); + + mesg_flow_node* msg_node = NULL; + mesg_flow_node_branch* branch_node = NULL; + mesg_flow_node_event* event_node = NULL; + + while ((nodeIdx != 0xFFFF && !var_r27) && !var_r25) { + u8 type = mFlowNodeTBL[nodeIdx].message.type; + + switch(type) { + case NODETYPE_MESSAGE_e: { + msg_node = &mFlowNodeTBL[nodeIdx].message; + nodeIdx = msg_node->next_node_idx; + var_r26++; + break; + } + case NODETYPE_BRANCH_e: { + branch_node = (mesg_flow_node_branch*)&mFlowNodeTBL[nodeIdx].branch; + + switch(branch_node->query_idx) { + case 0: + case 4: + case 7: + case 8: + case 9: + case 25: + var_r25 = TRUE; + break; + } + + u16 query_ret = (this->*mQueryList[branch_node->query_idx])(branch_node, i_speaker_p, 0); + u16 spE = branch_node->next_node_idx + query_ret; + nodeIdx = mFlowIdxTBL[spE]; + break; + } + case NODETYPE_EVENT_e: { + event_node = &mFlowNodeTBL[nodeIdx].event; + + switch(event_node->event_idx) { + case 12: + var_r27 = TRUE; + break; + case 8: + case 9: + case 13: + case 16: + case 19: + case 29: + var_r25 = TRUE; + break; + default: + nodeIdx = mFlowIdxTBL[event_node->next_node_idx]; + break; + } + break; + } case 0: - case 4: - case 7: - case 8: - case 9: - case 0x19: - bVar2 = 1; - break; - } - u32 sVar6 = (this->*mQueryList[iVar8->msg_index])(nodeBranch, param_1, 0); - uVar5 = field_0x14[(*(u16*)(iVar8->params + 2)) + sVar6]; - break; - - case 3: - switch(iVar8->field_0x1) { - case 8: - case 9: - case 0xd: - case 0x10: - case 0x13: - case 0x1d: - bVar2 = 1; - break; - case 0xc: - iVar3 = 1; - break; default: - uVar5 = field_0x14[iVar8->msg_index]; - break; + JUT_ASSERT(362, 0); + break; } - break; - } } + if (param_2 != NULL) { - *param_2 = iVar7; + *param_2 = var_r26; } - return iVar3; - } - + + return var_r27; } /* 8024A2D8-8024A424 244C18 014C+00 0/0 21/21 78/78 .text * doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci */ -int dMsgFlow_c::doFlow(fopAc_ac_c* param_0, fopAc_ac_c** param_1, int i_flow) { - int check = false; - u16 set_flow = i_flow; +int dMsgFlow_c::doFlow(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPartners, int i_flowID) { + BOOL check = FALSE; + int var_r26 = 0; + + u16 flowID = i_flowID; dMsgObject_changeFlowGroup(mFlow); if (dMsgObject_isKillMessageFlag()) { field_0x27 = 1; field_0x26 = 1; - set_flow = 0; + flowID = 0; } - if (field_0x26 != 0 && set_flow != 0) { + if (field_0x26 != 0 && flowID != 0) { setInitValue(0); - mFlow = set_flow; - setNodeIndex(getInitNodeIndex(mFlow), param_1); + mFlow = flowID; + setNodeIndex(getInitNodeIndex(mFlow), i_talkPartners); check = true; } if (field_0x26 != 0 || field_0x27 != 0) { - msg_class* msg = fopMsgM_SearchByID(mMsg); - if (msg != NULL) { - if (msg->mode != 0x12) { + msg_class* aMsg_p = fopMsgM_SearchByID(mMsg); + if (aMsg_p != NULL) { + if (aMsg_p->mode != 18) { return 0; } - msg->mode = 0x13; - mMsg = -1; + aMsg_p->mode = 19; + mMsg = fpcM_ERROR_PROCESS_ID_e; } + field_0x27 = 0; } @@ -181,51 +220,27 @@ int dMsgFlow_c::doFlow(fopAc_ac_c* param_0, fopAc_ac_c** param_1, int i_flow) { return 1; } - int proc_status = nodeProc(param_0, param_1); - return proc_status != 0 || check; + var_r26 = nodeProc(i_speaker_p, i_talkPartners); + return var_r26 != 0 || check; } /* 8024A424-8024A4C4 244D64 00A0+00 0/0 2/2 1/1 .text checkEventRender__10dMsgFlow_cFPiPiPiPi */ int dMsgFlow_c::checkEventRender(int* param_0, int* param_1, int* param_2, int* param_3) { if (field_0x47) { if (param_0 != NULL) { - int tmp0; - if (field_0x42 == 0xFF) { - tmp0 = -1; - } else { - tmp0 = field_0x42; - } - *param_0 = tmp0; + *param_0 = field_0x42 == 0xFF ? -1 : field_0x42; } if (param_1 != NULL) { - int tmp1; - if (field_0x43 == 0xFF) { - tmp1 = -1; - } else { - tmp1 = field_0x43; - } - *param_1 = tmp1; + *param_1 = field_0x43 == 0xFF ? -1 : field_0x43; } if (param_2 != NULL) { - int tmp2; - if (field_0x44 == 0xFF) { - tmp2 = -1; - } else { - tmp2 = field_0x44; - } - *param_2 = tmp2; + *param_2 = field_0x44 == 0xFF ? -1 : field_0x44; } if (param_3 != NULL) { - int tmp3; - if (field_0x45 == 0xFF) { - tmp3 = -1; - } else { - tmp3 = field_0x45; - } - *param_3 = tmp3; + *param_3 = field_0x45 == 0xFF ? -1 : field_0x45; } } @@ -237,9 +252,10 @@ void dMsgFlow_c::remove() { field_0x27 = 0; field_0x26 = 1; - if (fopMsgM_SearchByID(mMsg) != NULL) { - dMsgObject_c::onKillMessageFlag(); - mMsg = -1; + msg_class* aMsg_p = fopMsgM_SearchByID(mMsg); + if (aMsg_p != NULL) { + dMsgObject_onKillMessageFlag(); + mMsg = fpcM_ERROR_PROCESS_ID_e; } daPy_py_c::setMidnaMotionNum(0); @@ -248,6 +264,7 @@ void dMsgFlow_c::remove() { /* 8024A528-8024A538 244E68 0010+00 0/0 2/2 66/66 .text getEventId__10dMsgFlow_cFPi */ u16 dMsgFlow_c::getEventId(int* oItemId_p) { + JUT_ASSERT(555, 0 != oItemId_p); *oItemId_p = field_0x30; return mEventId; } @@ -264,7 +281,7 @@ u32 dMsgFlow_c::getNowMsgNo() { /* 8024A548-8024A580 244E88 0038+00 0/0 2/2 4/4 .text getMsg__10dMsgFlow_cFv */ msg_class* dMsgFlow_c::getMsg() { - if (mMsg != -1) { + if (mMsg != fpcM_ERROR_PROCESS_ID_e) { return fopMsgM_SearchByID(mMsg); } @@ -277,16 +294,16 @@ void dMsgFlow_c::setInitValue(int param_0) { mFlow_p = NULL; mLabelInfo_p = NULL; mFlowNodeTBL = NULL; - field_0x14 = NULL; - field_0x18 = 0; - mMsg = -1; + mFlowIdxTBL = NULL; + field_0x18 = NULL; + mMsg = fpcM_ERROR_PROCESS_ID_e; mMsgNo = 0; mNowMsgNo = 0; } - field_0x10 = -1; + mNodeIdx = -1; mFlow = 0; - field_0x46 = 0; + mSelType = SELTYPE_NONE_e; mSelectMessage = 0; field_0x25 = 0; field_0x26 = 0; @@ -296,7 +313,7 @@ void dMsgFlow_c::setInitValue(int param_0) { field_0x34 = 91; field_0x38 = 0; mChoiceNo = -1; - field_0x3c = 0; + mTimer = 0; field_0x40 = 0; field_0x41 = 0; field_0x42 = -1; @@ -308,42 +325,51 @@ void dMsgFlow_c::setInitValue(int param_0) { /* 8024A618-8024A6EC 244F58 00D4+00 1/1 0/0 0/0 .text * setInitValueGroupChange__10dMsgFlow_cFiPP10fopAc_ac_c */ -void dMsgFlow_c::setInitValueGroupChange(int param_1, fopAc_ac_c** param_2) { - u8* pJVar1; - u32 uVar2; - s32 unaff_r13; +void dMsgFlow_c::setInitValueGroupChange(int i_msgNo, fopAc_ac_c** i_talkPartners) { + u8* labelInfoTBL = NULL; + u16 var_r28 = i_msgNo; - dMsgObject_changeFlowGroup(param_1); + dMsgObject_changeFlowGroup(i_msgNo); setInitValue(0); + mFlow_p = getMsgDataBlock("FLW1"); + JUT_ASSERT(680, 0 != mFlow_p); + mLabelInfo_p = getMsgDataBlock("FLI1"); - mFlowNodeTBL = (mesg_flow_node*)(mFlow_p + 0x10); - field_0x14 = (u16*)(mFlowNodeTBL + *(u16*)(mFlow_p + 8)); - field_0x18 = field_0x14 + *(u16*)(mFlow_p + 8); - mFlow = param_1; - setNodeIndex(getInitNodeIndex(mFlow), param_2); + JUT_ASSERT(684, 0 != mLabelInfo_p); + + labelInfoTBL = mLabelInfo_p + 0x10; + + mFlowNodeTBL = (mesg_flow*)(mFlow_p + 0x10); + mFlowIdxTBL = (u16*)(mFlowNodeTBL + *(u16*)(mFlow_p + 8)); + field_0x18 = mFlowIdxTBL + *(u16*)(mFlow_p + 8); + mFlow = var_r28; + setNodeIndex(getInitNodeIndex(mFlow), i_talkPartners); } /* 8024A6EC-8024A784 24502C 0098+00 4/4 0/0 0/0 .text getMsgDataBlock__10dMsgFlow_cFPCc */ u8* dMsgFlow_c::getMsgDataBlock(char const* block_tag) { + u8* block_p = NULL; + u8* aMsgRes_p = NULL; + char tag[5] = {0}; - u8* dt_p = (u8*)dMsgObject_c::getMsgDtPtr(); - u8* block; - u32 num; - u32 i; - num = *(u32*)(dt_p + 0xC); - i = 0; - block = dt_p + 0x20; + aMsgRes_p = dMsgObject_getMsgDtPtr(); + JUT_ASSERT(742, 0 != aMsgRes_p); - for (; i < num; i++) { - memcpy(tag, block, 4); + u32 num = *(u32*)(aMsgRes_p + 0xC); + aMsgRes_p += 0x20; - if (!strcmp(tag, block_tag)) { - return block; + for (u32 i = 0; i < num; i++) { + block_p = aMsgRes_p; + memcpy(tag, block_p, 4); + + if (strcmp(tag, block_tag) == 0) { + return aMsgRes_p; } - block = block + *(int*)(block + 4); + + aMsgRes_p += *(int*)(block_p + 4); } return NULL; @@ -352,259 +378,328 @@ u8* dMsgFlow_c::getMsgDataBlock(char const* block_tag) { /* 8024A784-8024A7CC 2450C4 0048+00 5/5 0/0 0/0 .text getInitNodeIndex__10dMsgFlow_cFUs */ u16 dMsgFlow_c::getInitNodeIndex(u16 param_1) { - u8* puVar4; - u16 uVar2; - uVar2 = -1; - puVar4 = mLabelInfo_p + 0x10; + u8* var_r30 = NULL; + u16 var_r27 = -1; + + JUT_ASSERT(777, 0 != mLabelInfo_p); + var_r30 = mLabelInfo_p + 0x10; + for (int i = 0; i < *(u16*)(mLabelInfo_p + 8); i++) { - if (*(u32*)puVar4 >> 16 == param_1) { - uVar2 = *(u16*)(puVar4 + 4); + if (*(u32*)var_r30 >> 16 == param_1) { + var_r27 = *(u16*)(var_r30 + 4); } - puVar4 += 8; + + var_r30 += 0x8; } - return uVar2; + + return var_r27; } /* 8024A7CC-8024A95C 24510C 0190+00 6/6 0/0 0/0 .text setNodeIndex__10dMsgFlow_cFUsPP10fopAc_ac_c */ -void dMsgFlow_c::setNodeIndex(u16 param_1, fopAc_ac_c** param_2) { - msg_class* msg = NULL; - if (mMsg != -1) { - msg = fopMsgM_SearchByID(mMsg); +void dMsgFlow_c::setNodeIndex(u16 i_nodeIdx, fopAc_ac_c** i_talkPartners) { + msg_class* aMsg_p = NULL; + if (mMsg != fpcM_ERROR_PROCESS_ID_e) { + aMsg_p = fopMsgM_SearchByID(mMsg); + JUT_ASSERT(806, 0 != aMsg_p); } - if (param_1 == 0xffff) { - if (msg != NULL) { - msg->mode = 0x10; + if (i_nodeIdx == 0xFFFF) { + if (aMsg_p != NULL) { + aMsg_p->mode = 16; } + dMsgObject_endFlowGroup(); - field_0x26 = 0x1; + field_0x26 = 1; } else { - switch (mFlowNodeTBL[param_1].type) { + switch (mFlowNodeTBL[i_nodeIdx].message.type) { case 0: break; - case 1: - field_0x25 = 0x1; + case NODETYPE_MESSAGE_e: + field_0x25 = 1; break; - case 2: + case NODETYPE_BRANCH_e: break; - case 3: - mesg_flow_node* node = &mFlowNodeTBL[param_1]; - if (node->field_0x1 == 21 || node->field_0x1 == 32 || - node->field_0x1 == 33) { - if (node->field_0x1 == 21) { - field_0x3c = getParam(node->params); + case NODETYPE_EVENT_e: + mesg_flow_node_event* node = NULL; + node = &mFlowNodeTBL[i_nodeIdx].event; + + if (node->event_idx == 21 || node->event_idx == 32 || node->event_idx == 33) { + if (node->event_idx == 21) { + mTimer = getParam(node->params); } else { - u16 local_22[3]; - getParam(local_22, local_22 + 1, node->params); - field_0x3c = local_22[1] + 1; + u16 prm[2]; + getParam(prm, prm + 1, node->params); + mTimer = prm[1] + 1; } - if (msg != NULL) { - msg->mode = 0x10; + + if (aMsg_p != NULL) { + aMsg_p->mode = 16; dMsgObject_endFlowGroup(); } + field_0x27 = 1; } - if (node->field_0x1 == 9) { + + if (node->event_idx == 9) { field_0x27 = 1; - } else if (node->field_0x1 == 19) { - u16 local_26; - u16 local_28; - getParam(&local_28, &local_26, node->params); - field_0x38 = local_26; - if (param_2 != NULL) { - dMsgObject_setTalkPartner(param_2[field_0x38]); + } else if (node->event_idx == 19) { + u16 prm1; + u16 prm0; + getParam(&prm0, &prm1, node->params); + field_0x38 = (u16)prm1; + + // "Speaker Set" + OS_REPORT("\x1B[44;32m話し手セット            \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); + + if (i_talkPartners != NULL) { + dMsgObject_setTalkPartner(i_talkPartners[field_0x38]); } + break; } } } - field_0x10 = param_1; + + mNodeIdx = i_nodeIdx; } /* 8024A95C-8024AA50 24529C 00F4+00 1/1 0/0 0/0 .text * setSelectMsg__10dMsgFlow_cFP14mesg_flow_nodeP14mesg_flow_nodeP10fopAc_ac_c */ -int dMsgFlow_c::setSelectMsg(mesg_flow_node* param_1, mesg_flow_node* param_2, - fopAc_ac_c* param_3) { - u32 uVar1; - u32 uVar2; - u16* iVar3; +int dMsgFlow_c::setSelectMsg(mesg_flow_node* i_flowNode_p, mesg_flow_node* param_2, + fopAc_ac_c* i_speaker_p) { + u16* inf_p = NULL; + u16 temp_r25; + u16 msg_no; - iVar3 = (u16*) getMsgDataBlock("INF1"); - uVar1 = ((iVar3 + (param_2->msg_index) * 10))[10]; - uVar2 = ((iVar3 + (param_1->msg_index) * 10))[10]; - - if (mMsg != -1) { - msg_class* iVar3 = fopMsgM_SearchByID(mMsg); - iVar3->mode = 0xf; - fopMsgM_messageSet(uVar2, uVar1); + mesg_flow_node* var_r29 = NULL; + + inf_p = (u16*)getMsgDataBlock("INF1"); + + var_r29 = param_2; + temp_r25 = ((inf_p + (var_r29->msg_index) * 10))[10]; + + var_r29 = i_flowNode_p; + msg_no = ((inf_p + (var_r29->msg_index) * 10))[10]; + + // "Message Set (Select)" + OS_REPORT("\x1B[44;37mメッセ−ジセット(選択)      \x1B[m|:"); + +#ifdef DEBUG + if (i_speaker_p != NULL) { + const char* speaker_name = fopAcM_getProcNameString(i_speaker_p); + OS_REPORT("flow:%d, msg:%d(%d), speaker:%s\n", mFlow, msg_no, temp_r25, speaker_name); } else { - if (dMeter2Info_getFloatingFlowID() == 0xffff) { - mMsg = fopMsgM_messageSet(uVar2, param_3, uVar1); - if (mMsg == -1) { + OS_REPORT("flow:%d, msg:%d(%d), speaker:NULL\n", mFlow, msg_no, temp_r25); + } +#endif + + if (mMsg != fpcM_ERROR_PROCESS_ID_e) { + msg_class* aMsg_p = NULL; + aMsg_p = fopMsgM_SearchByID(mMsg); + JUT_ASSERT(944, 0 != aMsg_p); + + aMsg_p->mode = 15; + fopMsgM_messageSet(msg_no, temp_r25); + } else { + if (dMeter2Info_getFloatingFlowID() == 0xFFFF) { + mMsg = fopMsgM_messageSet(msg_no, i_speaker_p, temp_r25); + if (mMsg == fpcM_ERROR_PROCESS_ID_e) { return 0; } + dMsgObject_setNowTalkFlowNo(mFlow); } } - mMsgNo = uVar2; + + mMsgNo = msg_no; field_0x41 = 1; return 1; } /* 8024AA50-8024AB30 245390 00E0+00 1/1 0/0 0/0 .text * setNormalMsg__10dMsgFlow_cFP14mesg_flow_nodeP10fopAc_ac_c */ -int dMsgFlow_c::setNormalMsg(mesg_flow_node* param_1, fopAc_ac_c* param_2) { - u32 uVar2; - u16* iVar3; +int dMsgFlow_c::setNormalMsg(mesg_flow_node* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + u16* inf_p = NULL; + mesg_flow_node* var_r29 = NULL; + u16 msg_no; - iVar3 = (u16*) getMsgDataBlock("INF1"); - uVar2 = ((iVar3 + (param_1->msg_index) * 10))[10]; - - if (mMsg != -1) { - msg_class* iVar3 = fopMsgM_SearchByID(mMsg); - iVar3->mode = 0xf; - fopMsgM_messageSet(uVar2, 1000); + var_r29 = i_flowNode_p; + inf_p = (u16*)getMsgDataBlock("INF1"); + msg_no = ((inf_p + (var_r29->msg_index) * 10))[10]; + + // "Message Set" + OS_REPORT("\x1B[44;37mメッセ−ジセット          \x1B[m|:"); + +#ifdef DEBUG + if (i_speaker_p != NULL) { + const char* speaker_name = fopAcM_getProcNameString(i_speaker_p); + OS_REPORT("flow:%d, msg:%d, speaker:%s\n", mFlow, msg_no, speaker_name); } else { - if (dMeter2Info_getFloatingFlowID() == 0xffff) { - mMsg = fopMsgM_messageSet(uVar2, param_2, 1000); - if (mMsg == -1) { + OS_REPORT("flow:%d, msg:%d, speaker:NULL\n", mFlow, msg_no); + } +#endif + + if (mMsg != fpcM_ERROR_PROCESS_ID_e) { + msg_class* aMsg_p = NULL; + aMsg_p = fopMsgM_SearchByID(mMsg); + JUT_ASSERT(1007, 0 != aMsg_p); + + aMsg_p->mode = 15; + fopMsgM_messageSet(msg_no, 1000); + } else { + if (dMeter2Info_getFloatingFlowID() == 0xFFFF) { + mMsg = fopMsgM_messageSet(msg_no, i_speaker_p, 1000); + if (mMsg == fpcM_ERROR_PROCESS_ID_e) { return 0; } + dMsgObject_setNowTalkFlowNo(mFlow); } } - mMsgNo = uVar2; + + mMsgNo = msg_no; field_0x41 = 1; return 1; } /* 8024AB30-8024AD54 245470 0224+00 2/1 0/0 0/0 .text * messageNodeProc__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_c */ -int dMsgFlow_c::messageNodeProc(fopAc_ac_c* param_1, fopAc_ac_c** param_2) { - mesg_flow_node* uVar1; +int dMsgFlow_c::messageNodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPartners) { + mesg_flow_node* flowNode_p = NULL; + flowNode_p = &mFlowNodeTBL[mNodeIdx].message; - uVar1 = &mFlowNodeTBL[field_0x10]; if (field_0x25 != 0) { - if (field_0x46 != 0) { - u16 pars = *(u16*)uVar1->params; - if ((field_0x46 == 1) && - (mFlowNodeTBL[pars].type == 1)) { - if (setSelectMsg(mFlowNodeTBL + field_0x10, - mFlowNodeTBL + pars, param_1)) { - field_0x10 = pars; - field_0x46 = 0; + if (mSelType != SELTYPE_NONE_e) { + u16 aNextNodeIndex = flowNode_p->next_node_idx; + JUT_ASSERT(1051, 0xFFFF != aNextNodeIndex); + + if (mSelType == SELTYPE_VERTICAL_e && mFlowNodeTBL[aNextNodeIndex].message.type == NODETYPE_MESSAGE_e) { + JUT_ASSERT(1056, NODETYPE_MESSAGE_e == mFlowNodeTBL[aNextNodeIndex].message.type); + if (setSelectMsg(&mFlowNodeTBL[mNodeIdx].message, &mFlowNodeTBL[aNextNodeIndex].message, i_speaker_p)) { + mNodeIdx = aNextNodeIndex; + mSelType = SELTYPE_NONE_e; field_0x25 = 0; } - } else if ((field_0x46 == 2) && - (mFlowNodeTBL[pars].type == 2)) { - if (setNormalMsg(mFlowNodeTBL + field_0x10,param_1)) { - field_0x46 = 0; + } else if (mSelType == SELTYPE_HORIZONTAL_e && mFlowNodeTBL[aNextNodeIndex].message.type == NODETYPE_BRANCH_e) { + if (setNormalMsg(&mFlowNodeTBL[mNodeIdx].message, i_speaker_p)) { + mSelType = SELTYPE_NONE_e; field_0x25 = 0; } + } else { + OS_REPORT("★sel select mesg ===> %d, %d, %d\n", mSelType, aNextNodeIndex, mFlowNodeTBL[aNextNodeIndex].message.type); + JUT_ASSERT(1077, 0); } } else { - if (setNormalMsg(mFlowNodeTBL + field_0x10, param_1)) { + if (setNormalMsg(&mFlowNodeTBL[mNodeIdx].message, i_speaker_p)) { field_0x25 = 0; } } + return 0; - } else { - msg_class* msg = fopMsgM_SearchByID(mMsg); - if (msg == NULL) { - field_0x25 = 1; - } else { - int mesgCamInfoBasicID = dComIfGp_getMesgCameraInfo()->mBasicID; - if (mesgCamInfoBasicID != field_0x34) { - field_0x34 = mesgCamInfoBasicID; - } - switch (msg->mode) { - case 2: - field_0x41 = 1; - mNowMsgNo = msg->msg_idx; - break; - case 6: - field_0x40 = field_0x41; - int mesgAnimeAttrInfo = -1; - int mesgFaceAnimeAttrInfo = -1; - if (field_0x41 != 0) { - mesgAnimeAttrInfo = dComIfGp_getMesgAnimeAttrInfo(); - mesgFaceAnimeAttrInfo = dComIfGp_getMesgFaceAnimeAttrInfo(); - } - if (mesgAnimeAttrInfo >= 0x1f) { - daPy_py_c::setMidnaMotionNum(mesgAnimeAttrInfo); - } - if (mesgFaceAnimeAttrInfo >= 0x1f) { - daPy_py_c::setMidnaFaceNum(mesgFaceAnimeAttrInfo); - } - field_0x41 = 0; - mNowMsgNo = msg->msg_idx; - break; - case 0xe: - case 0x12: - setNodeIndex(*(u16*)uVar1->params, param_2); - mesg_flow_node* iVar4 = &mFlowNodeTBL[*(u16*)uVar1->params]; - if (iVar4->field_0x1 == 0x15 || iVar4->field_0x1 == 0x20 || - iVar4->field_0x1 == 0x21) { - return 0; - } - return 1; - } - } - } + + msg_class* aMsg_p = fopMsgM_SearchByID(mMsg); + if (aMsg_p == NULL) { + field_0x25 = 1; + } else { + dComIfG_MesgCamInfo_c* aMsgCamInfo_p = dComIfGp_getMesgCameraInfo(); + if (aMsgCamInfo_p->mBasicID != field_0x34) { + field_0x34 = aMsgCamInfo_p->mBasicID; + } + + switch (aMsg_p->mode) { + case 2: + field_0x41 = 1; + mNowMsgNo = aMsg_p->msg_idx; + break; + case 6: + field_0x40 = field_0x41; + + int mesgAnimeAttrInfo = -1; + int mesgFaceAnimeAttrInfo = -1; + + if (field_0x41 != 0) { + mesgAnimeAttrInfo = dComIfGp_getMesgAnimeAttrInfo(); + mesgFaceAnimeAttrInfo = dComIfGp_getMesgFaceAnimeAttrInfo(); + } + + if (mesgAnimeAttrInfo >= 0x1f) { + daPy_py_c::setMidnaMotionNum(mesgAnimeAttrInfo); + } + + if (mesgFaceAnimeAttrInfo >= 0x1f) { + daPy_py_c::setMidnaFaceNum(mesgFaceAnimeAttrInfo); + } + + field_0x41 = 0; + mNowMsgNo = aMsg_p->msg_idx; + break; + case 14: + case 18: + setNodeIndex(flowNode_p->next_node_idx, i_talkPartners); + + mesg_flow_node* var_r26 = &mFlowNodeTBL[flowNode_p->next_node_idx].message; + if (var_r26->field_0x1 == 0x15 || var_r26->field_0x1 == 0x20 || var_r26->field_0x1 == 0x21) { + return 0; + } + + return 1; + } + } + return 0; } - /* 8024AD54-8024ADEC 245694 0098+00 1/1 0/0 0/0 .text * branchNodeProc__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_c */ -int dMsgFlow_c::branchNodeProc(fopAc_ac_c* param_0, fopAc_ac_c** param_1) { - mesg_flow_node_branch* node = (mesg_flow_node_branch*)&mFlowNodeTBL[field_0x10]; - int proc_status = (this->*mQueryList[node->msg_index])(node, param_0, 1); +int dMsgFlow_c::branchNodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPartners) { + mesg_flow_node_branch* node = NULL; + node = &mFlowNodeTBL[mNodeIdx].branch; + u16 proc_status = (this->*mQueryList[node->query_idx])(node, i_speaker_p, 1); - setNodeIndex(field_0x14[(node->params[1] + proc_status) & 0xFFFF], param_1); + u16 var_r28 = node->next_node_idx + proc_status; + setNodeIndex(mFlowIdxTBL[var_r28], i_talkPartners); return 1; } /* 8024ADEC-8024AFF8 24572C 020C+00 1/1 0/0 0/0 .text * eventNodeProc__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_c */ -int dMsgFlow_c::eventNodeProc(fopAc_ac_c* param_0, fopAc_ac_c** param_1) { - mesg_flow_node_event* node = (mesg_flow_node_event*)&mFlowNodeTBL[field_0x10]; - int proc_status = (this->*mEventList[node->field_0x1])(node, param_0); +int dMsgFlow_c::eventNodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPartners) { + mesg_flow_node_event* node = NULL; + node = &mFlowNodeTBL[mNodeIdx].event; + int proc_status = (this->*mEventList[node->event_idx])(node, i_speaker_p); - switch (node->field_0x1) { + switch (node->event_idx) { case 8: getParam(&mEventId, &field_0x30, node->params); - setNodeIndex(field_0x14[node->msg_index], param_1); + setNodeIndex(mFlowIdxTBL[node->next_node_idx], i_talkPartners); if (field_0x26 != 0) { break; } - u16 tmp = field_0x10; - setNodeIndex(-1, param_1); - field_0x10 = tmp; - + u16 prev_idx = mNodeIdx; + setNodeIndex(-1, i_talkPartners); + mNodeIdx = prev_idx; break; - case 9: if (getParam(node->params) == 0) { int msgNum; if (daAlink_getAlinkActorClass()->getMidnaMsgNum() == 0xFFFF) { - msgNum = - dComIfGp_roomControl_getStatusRoomDt(dComIfGp_roomControl_getStayNo())->getFileListInfo()->mMsg; + msgNum = dStage_FileList_dt_GetMsg(dComIfGp_roomControl_getStatusRoomDt(dComIfGp_roomControl_getStayNo())->getFileListInfo()); } else { msgNum = daAlink_getAlinkActorClass()->getMidnaMsgNum(); daAlink_getAlinkActorClass()->setMidnaMsg(); } - setInitValueGroupChange(msgNum, param_1); + setInitValueGroupChange(msgNum, i_talkPartners); break; } setInitValue(0); mFlow = getParam(node->params); - setNodeIndex(getInitNodeIndex(mFlow), param_1); + setNodeIndex(getInitNodeIndex(mFlow), i_talkPartners); if (mNonStopJunpFlowFlag) { break; @@ -615,15 +710,14 @@ int dMsgFlow_c::eventNodeProc(fopAc_ac_c* param_0, fopAc_ac_c** param_1) { } return 0; - case 21: case 32: case 33: - if (field_0x3c != 0) { + if (mTimer != 0) { return 0; } default: - setNodeIndex(field_0x14[node->msg_index], param_1); + setNodeIndex(mFlowIdxTBL[node->next_node_idx], i_talkPartners); } return 1; @@ -631,9 +725,10 @@ int dMsgFlow_c::eventNodeProc(fopAc_ac_c* param_0, fopAc_ac_c** param_1) { /* 8024AFF8-8024B0F0 245938 00F8+00 1/1 0/0 0/0 .text * nodeProc__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_c */ -int dMsgFlow_c::nodeProc(fopAc_ac_c* param_0, fopAc_ac_c** param_1) { - fopAc_ac_c* tmp = param_0; +int dMsgFlow_c::nodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPartners) { + fopAc_ac_c* aSpeaker_p = i_speaker_p; int proc_status = 1; + field_0x47 = 0; field_0x42 = -1; field_0x43 = -1; @@ -641,21 +736,24 @@ int dMsgFlow_c::nodeProc(fopAc_ac_c* param_0, fopAc_ac_c** param_1) { field_0x45 = -1; while (proc_status != 0 && field_0x26 == 0) { - if (param_1 != NULL) { - tmp = param_1[field_0x38]; + if (i_talkPartners != NULL) { + aSpeaker_p = i_talkPartners[field_0x38]; } - switch (mFlowNodeTBL[field_0x10].type) { + u8 type = mFlowNodeTBL[mNodeIdx].message.type; + switch (type) { + case NODETYPE_MESSAGE_e: + proc_status = messageNodeProc(aSpeaker_p, i_talkPartners); + break; + case NODETYPE_BRANCH_e: + proc_status = branchNodeProc(aSpeaker_p, i_talkPartners); + break; + case NODETYPE_EVENT_e: + proc_status = eventNodeProc(aSpeaker_p, i_talkPartners); + break; case 0: - break; - case 1: - proc_status = messageNodeProc(tmp, param_1); - break; - case 2: - proc_status = branchNodeProc(tmp, param_1); - break; - case 3: - proc_status = eventNodeProc(tmp, param_1); + default: + JUT_ASSERT(1323, 0); break; } } @@ -704,47 +802,78 @@ queryFunc dMsgFlow_c::mQueryList[53] = { &dMsgFlow_c::query053, }; +#ifdef DEBUG +void dMsgFlow_c::dbgPrint() {} +#endif + /* 8024B138-8024B180 245A78 0048+00 1/0 0/0 0/0 .text * query001__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query001(mesg_flow_node_branch* flow_node, fopAc_ac_c*, int) { - return dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[flow_node->params[0] & 0xFFFF]) == false; +u16 dMsgFlow_c::query001(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u16 prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[prm0]) == false; + + if (param_2 != 0) { + // "Flag Check" + OS_REPORT("\x1B[44;33mフラグチェック           \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B180-8024B208 245AC0 0088+00 1/0 0/0 0/0 .text * query002__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query002(mesg_flow_node_branch*, fopAc_ac_c*, int) { +u16 dMsgFlow_c::query002(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u16 ret; if (daPy_py_c::checkNowWolf()) { - return 1; - } else if (daPy_getPlayerActorClass()->checkHorseRide() || - daPy_getPlayerActorClass()->checkBoarRide()) { - return 2; + ret = 1; + } else if (daPy_getPlayerActorClass()->checkHorseRide() || daPy_getPlayerActorClass()->checkBoarRide()) { + ret = 2; + } else { + ret = 0; } - return 0; + if (param_2 != 0) { + // "Appearance Check" + OS_REPORT("\x1B[44;33m容姿チェック            \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024B208-8024B250 245B48 0048+00 1/0 0/0 0/0 .text * query003__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query003(mesg_flow_node_branch* flow_node, fopAc_ac_c*, int) { - return cM_rndF(flow_node->params[0]); +u16 dMsgFlow_c::query003(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u16 prm0 = i_flowNode_p->param; + u16 ret = cM_rndF(prm0); + + if (param_2 != 0) { + // "Random" + OS_REPORT("\x1B[44;33mランダム              \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B250-8024B2C0 245B90 0070+00 1/0 0/0 0/0 .text * query004__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query004(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u16 uVar1 = flow_node->params[0]; - u16 uVar2; - int p0 = flow_node->params[0]; - BOOL ret; +u16 dMsgFlow_c::query004(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u16 prm0 = i_flowNode_p->param; + u16 ret; - if ( uVar1 == 0 ) { - uVar2 = dComIfGs_getRupeeMax(); - uVar1 = dComIfGs_getRupee(); - ret = uVar1 < uVar2; - + if (prm0 == 0) { + ret = dComIfGs_getRupee() < dComIfGs_getRupeeMax(); } else { - ret = dComIfGs_getRupee() < (u16)p0; + ret = dComIfGs_getRupee() < prm0; + } + + if (param_2 != 0) { + // "Rupee Check" + OS_REPORT("\x1B[44;33mルピ−チェック           \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); } return ret; @@ -752,529 +881,999 @@ int dMsgFlow_c::query004(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, /* 8024B2C0-8024B2F8 245C00 0038+00 2/1 1/1 1/1 .text * query005__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query005(mesg_flow_node_branch*, fopAc_ac_c*, int) { - return mChoiceNo = fopMsgM_SearchByID(mMsg)->select_idx; +u16 dMsgFlow_c::query005(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + msg_class* aMsg_p = fopMsgM_SearchByID(mMsg); + JUT_ASSERT(1668, 0 != aMsg_p); + + u16 ret = aMsg_p->select_idx; + mChoiceNo = ret; + + if (param_2 != 0) { + // "Two-way Branch" + OS_REPORT("\x1B[44;33m二択分岐              \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024B2F8-8024B32C 245C38 0034+00 1/0 0/0 0/0 .text * query006__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query006(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int) { - int r3 = query005(flow_node, param_1, 0); - mChoiceNo = r3; - return r3; +u16 dMsgFlow_c::query006(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u16 ret = query005(i_flowNode_p, i_speaker_p, 0); + mChoiceNo = ret; + + if (param_2 != 0) { + // "Three-way Branch" + OS_REPORT("\x1B[44;33m三択分岐              \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024B32C-8024B45C 245C6C 0130+00 1/0 0/0 0/0 .text * query007__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -// NONMATCHING regalloc and u16 issue -int dMsgFlow_c::query007(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u16 uVar3 = *(u16*)(flow_node->params); - cXyz this_00 = daPy_getPlayerActorClass()->attention_info.position; - this_00.y -= daPy_getPlayerActorClass()->getAttentionOffsetY(); - s16 uVar8 = cSGlobe(param_1->attention_info.position - this_00).U() - - fopAcM_GetShapeAngle_p(daPy_getPlayerActorClass())->y; - u8 attentionId = param_1->attention_info.distances[fopAc_attn_SPEAK_e]; - f32 fVar1 = dAttention_c::getDistTable(attentionId).mDistMaxRelease; - if (uVar3 != 0) { - fVar1 = uVar3; +u16 dMsgFlow_c::query007(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u16 prm0 = i_flowNode_p->param; + u16 ret; + + cXyz player_attention_pos(daPy_getPlayerActorClass()->attention_info.position); + player_attention_pos.y -= daPy_py_c::getAttentionOffsetY(); + + cSGlobe sp10(i_speaker_p->attention_info.position - player_attention_pos); + s16 attention_angle = sp10.U() - fopAcM_GetShapeAngle_p(daPy_getPlayerActorClass())->y; + + u8 speak_dist = i_speaker_p->attention_info.distances[fopAc_attn_SPEAK_e]; + f32 max_dist = dComIfGp_getAttention().getDistTable(speak_dist).mDistMaxRelease; + if (prm0 != 0) { + max_dist = prm0; } - return (u16) dComIfGp_getAttention().checkDistance( - &this_00, uVar8, ¶m_1->attention_info.position, fVar1, - dAttention_c::getDistTable(attentionId).mDistanceAdjust, - dAttention_c::getDistTable(attentionId).mUpperY, - dAttention_c::getDistTable(attentionId).mLowerY); + ret = dComIfGp_getAttention().checkDistance( + &player_attention_pos, attention_angle, &i_speaker_p->attention_info.position, max_dist, + dComIfGp_getAttention().getDistTable(speak_dist).mDistanceAdjust, + dComIfGp_getAttention().getDistTable(speak_dist).mUpperY, + dComIfGp_getAttention().getDistTable(speak_dist).mLowerY); + if (param_2 != 0) { + // "Conversation Distance Branch" + OS_REPORT("\x1B[44;33m会話距離分岐            \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B45C-8024B4A4 245D9C 0048+00 1/0 0/0 0/0 .text * query008__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query008(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u32 prm0 = flow_node->params[0]; - u16 prm1 = prm0; - return (u8)daNpcKakashi_getSwdTutorialStep() - 1 != (u16)prm1; +u16 dMsgFlow_c::query008(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u16 prm0 = i_flowNode_p->param; + u16 ret = daNpcKakashi_getSwdTutorialStep() - 1 != prm0; + + if (param_2 != 0) { + // "Sword Action Branch" + OS_REPORT("\x1B[44;33m剣アクション分岐          \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B4A4-8024B4D0 245DE4 002C+00 1/0 0/0 0/0 .text * query009__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query009(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return daNpcKakashi_getSwdTutorialResult() == 0; +u16 dMsgFlow_c::query009(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u16 ret = daNpcKakashi_getSwdTutorialResult() == FALSE; + + if (param_2 != 0) { + // "Sword Action success judge" + OS_REPORT("\x1B[44;33m剣アクション成功判定        \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024B4D0-8024B504 245E10 0034+00 1/0 0/0 0/0 .text * query010__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query010(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return ((u8)daNpcKakashi_getSuccessCount()) != 1; +u16 dMsgFlow_c::query010(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u16 ret = daNpcKakashi_getSuccessCount() != 1; + + if (param_2 != 0) { + // "Sword Action count branch" + OS_REPORT("\x1B[44;33m剣アクション回数分岐        \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024B504-8024B54C 245E44 0048+00 1/0 0/0 0/0 .text * query011__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query011(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[flow_node->params[0] & 0xFFFF]) == 0; +u16 dMsgFlow_c::query011(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u16 prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_isTmpBit((u16)dSv_event_tmp_flag_c::tempBitLabels[prm0]) == FALSE; + + if (param_2 != 0) { + // "Temporary Flag Check" + OS_REPORT("\x1B[44;33m一時フラグチェック         \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B54C-8024B584 245E8C 0038+00 1/0 0/0 0/0 .text * query012__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query012(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return dComIfGs_isTbox(flow_node->params[0]) == 0; +u16 dMsgFlow_c::query012(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_isTbox(prm0) == FALSE; + + if (param_2 != 0) { + // "(Save) Treasure Chest Bit Check" + OS_REPORT("\x1B[44;33m(セ−ブ)宝箱ビットチェック    \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B584-8024B5BC 245EC4 0038+00 1/0 0/0 0/0 .text * query013__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query013(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return dComIfGs_isSaveSwitch(flow_node->params[0]) == 0; +u16 dMsgFlow_c::query013(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_isSaveSwitch(prm0) == FALSE; + + if (param_2 != 0) { + // "(Save) Switch Bit Check" + OS_REPORT("\x1B[44;33m(セ−ブ)スイッチビットチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B5BC-8024B5F4 245EFC 0038+00 1/0 0/0 0/0 .text * query014__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query014(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return dComIfGs_isSaveItem(flow_node->params[0]) == 0; +u16 dMsgFlow_c::query014(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_isSaveItem(prm0) == FALSE; + + if (param_2 != 0) { + // "(Save) Item Bit Check" + OS_REPORT("\x1B[44;33m(セ−ブ)アイテムビットチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B5F4-8024B62C 245F34 0038+00 1/0 0/0 0/0 .text * query015__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query015(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return dComIfGs_isSaveDunSwitch(flow_node->params[0]) == 0; +u16 dMsgFlow_c::query015(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_isSaveDunSwitch(prm0) == FALSE; + + if (param_2 != 0) { + // "(Dungeon) Switch Bit Check" + OS_REPORT("\x1B[44;33m(ダンジョン)スイッチビットチェック\x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B62C-8024B664 245F6C 0038+00 1/0 0/0 0/0 .text * query016__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query016(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return dComIfGs_isSaveDunItem(flow_node->params[0]) == 0; +u16 dMsgFlow_c::query016(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_isSaveDunItem(prm0) == FALSE; + + if (param_2 != 0) { + // "(Dungeon) Item Bit Check" + OS_REPORT("\x1B[44;33m(ダンジョン)アイテムビットチェック\x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B664-8024B6A8 245FA4 0044+00 1/0 0/0 0/0 .text * query017__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query017(mesg_flow_node_branch* flow_node, fopAc_ac_c* actor, int param_2) { - int zone = flow_node->params[0]; +u16 dMsgFlow_c::query017(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; int roomNo = -1; - if (actor != NULL) { - roomNo = fopAcM_GetRoomNo(actor); + if (i_speaker_p != NULL) { + roomNo = fopAcM_GetRoomNo(i_speaker_p); } - return dComIfGs_isZoneSwitch(zone, roomNo) == 0; + u16 ret = dComIfGs_isZoneSwitch(prm0, roomNo) == FALSE; + + if (param_2 != 0) { + // "(Zone) Switch Bit Check" + OS_REPORT("\x1B[44;33m(ゾ−ン)スイッチビットチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B6A8-8024B6EC 245FE8 0044+00 1/0 0/0 0/0 .text * query018__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query018(mesg_flow_node_branch* flow_node, fopAc_ac_c* actor, int param_2) { - int zone = flow_node->params[0]; +u16 dMsgFlow_c::query018(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; int roomNo = -1; - if (actor != NULL) { - roomNo = fopAcM_GetRoomNo(actor); + if (i_speaker_p != NULL) { + roomNo = fopAcM_GetRoomNo(i_speaker_p); } - return dComIfGs_isZoneItem(zone, roomNo) == 0; + u16 ret = dComIfGs_isZoneItem(prm0, roomNo) == FALSE; + + if (param_2 != 0) { + // "(Zone) Item Bit Check" + OS_REPORT("\x1B[44;33m(ゾ−ン)アイテムビットチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B6EC-8024B730 24602C 0044+00 1/0 0/0 0/0 .text * query019__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query019(mesg_flow_node_branch* flow_node, fopAc_ac_c* actor, int param_2) { - int zone = flow_node->params[0]; +u16 dMsgFlow_c::query019(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; int roomNo = -1; - if (actor != NULL) { - roomNo = fopAcM_GetRoomNo(actor); + if (i_speaker_p != NULL) { + roomNo = fopAcM_GetRoomNo(i_speaker_p); } - return dComIfGs_isOneZoneSwitch(zone, roomNo) == 0; + u16 ret = dComIfGs_isOneZoneSwitch(prm0, roomNo) == FALSE; + + if (param_2 != 0) { + // "(One Zone) Switch Bit Check" + OS_REPORT("\x1B[44;33m(ワンゾ−ン)スイッチビットチェック\x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B730-8024B774 246070 0044+00 1/0 0/0 0/0 .text * query020__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query020(mesg_flow_node_branch* flow_node, fopAc_ac_c* actor, int param_2) { - int zone = flow_node->params[0]; +u16 dMsgFlow_c::query020(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; int roomNo = -1; - if (actor != NULL) { - roomNo = fopAcM_GetRoomNo(actor); + if (i_speaker_p != NULL) { + roomNo = fopAcM_GetRoomNo(i_speaker_p); } - return dComIfGs_isOneZoneItem(zone, roomNo) == 0; + u16 ret = dComIfGs_isOneZoneItem(prm0, roomNo) == FALSE; + + if (param_2 != 0) { + // "(One Zone) Item Bit Check" + OS_REPORT("\x1B[44;33m(ワンゾ−ン)アイテムビットチェック\x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B774-8024B8E4 2460B4 0170+00 1/0 0/0 0/0 .text * query021__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query021(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - // NONMATCHING +u16 dMsgFlow_c::query021(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u8 prm0 = i_flowNode_p->param; + u16 ret = 0; + + switch (prm0) { + case fpcNm_ITEM_SWORD: + case fpcNm_ITEM_MASTER_SWORD: + case fpcNm_ITEM_LIGHT_SWORD: + if (dComIfGs_getSelectEquipSword() == prm0) { + ret = 1; + } + break; + case fpcNm_ITEM_WOOD_SHIELD: + case fpcNm_ITEM_SHIELD: + case fpcNm_ITEM_HYLIA_SHIELD: + if (dComIfGs_getSelectEquipShield() == prm0) { + ret = 1; + } + break; + case fpcNm_ITEM_WEAR_KOKIRI: + case fpcNm_ITEM_ARMOR: + case fpcNm_ITEM_WEAR_ZORA: + if (dComIfGs_getSelectEquipClothes() == prm0) { + ret = 1; + } + break; + default: + if (dComIfGs_getItem(dComIfGs_getSelectItemIndex(0), true) == prm0 || + dComIfGs_getItem(dComIfGs_getSelectItemIndex(1), true) == prm0 || + dComIfGs_getItem(dComIfGs_getSelectItemIndex(2), true) == prm0 +#if (PLATFORM_WII || PLATFORM_SHIELD) + || dComIfGs_getItem(dComIfGs_getSelectItemIndex(3), true) == prm0 +#endif + ) + { + ret = 1; + } + } + + if (param_2 != 0) { + // "Equipment Check" + OS_REPORT("\x1B[44;33m装備チェック            \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B8E4-8024B918 246224 0034+00 1/0 0/0 0/0 .text * query022__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -// NONMATCHING -int dMsgFlow_c::query022(mesg_flow_node_branch* flow_node, fopAc_ac_c*, int) { - // fake match but 0 comparison zeroes out 24 bits while this function zeroes out 16 - // return (__cntlzw(checkItemGet(flow_node->params[0], 1)) >> 5) & 0xffff; - return checkItemGet(flow_node->params[0], 1) == 0; -} +u16 dMsgFlow_c::query022(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u8 prm0 = i_flowNode_p->param; + u16 ret = checkItemGet(prm0 & 0xFF, 1) ? 0 : 1; + if (param_2 != 0) { + // "Get Check" + OS_REPORT("\x1B[44;33m所持チェック            \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; +} /* 8024B918-8024B954 246258 003C+00 1/0 0/0 0/0 .text * query023__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query023(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return (u16)(3 - dComIfGs_checkBombBag(fpcNm_ITEM_NONE)); +u16 dMsgFlow_c::query023(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u8 prm0 = i_flowNode_p->param; + int i_bagNum = 3 - dComIfGs_checkBombBag(fpcNm_ITEM_NONE); + JUT_ASSERT(2312, i_bagNum >= 0); + + u16 ret = i_bagNum; + + if (param_2 != 0) { + // "Bomb Bag Count Check" + OS_REPORT("\x1B[44;33mボム袋数チェック         \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B954-8024B974 246294 0020+00 1/0 0/0 0/0 .text * query024__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query024(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - return dComIfGs_getArrowNum() - (u8)*(u16*)flow_node->params < 0; +u16 dMsgFlow_c::query024(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u8 prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_getArrowNum() >= prm0 ? 0 : 1; + + if (param_2 != 0) { + // "Normal Arrow Count Check" + OS_REPORT("\x1B[44;33mノ−マル矢数チェック        \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d, arrow(%d/%d)\n", mFlow, ret, prm0, dComIfGs_getArrowNum(), dComIfGs_getArrowMax()); + } + + return ret; } /* 8024B974-8024B9BC 2462B4 0048+00 1/0 0/0 0/0 .text * query025__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query025(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u8 par = (u8)*(u16*)flow_node->params; - return dComIfGs_checkEmptyBottle() - par < 0; +u16 dMsgFlow_c::query025(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u8 prm0 = i_flowNode_p->param; + u16 ret = dComIfGs_checkEmptyBottle() >= prm0 ? 0 : 1; + + if (param_2 != 0) { + // "Empty Bottle Count Check" + OS_REPORT("\x1B[44;33m空きビン数チェック         \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B9BC-8024B9E8 2462FC 002C+00 1/0 0/0 0/0 .text * query026__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query026(mesg_flow_node_branch*, fopAc_ac_c* actor, int) { - dShopSystem_c* shop_ac = static_cast(actor); - return (u16)shop_ac->isFlag(7); +u16 dMsgFlow_c::query026(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + dShopSystem_c* shop_ac = (dShopSystem_c*)i_speaker_p; + const int prm0 = i_flowNode_p->param; + u16 ret = shop_ac->isFlag(7); + + if (param_2 != 0) { + // "Shop Conversation Check" + OS_REPORT("\x1B[44;33m店員会話チェック          \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024B9E8-8024BA4C 246328 0064+00 1/0 0/0 0/0 .text * query027__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -// NONMATCHING -int dMsgFlow_c::query027(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u8 uVar1 = *(u16*)flow_node->params & 0xff; - if (uVar1 == 0) { - uVar1 = dComIfGp_getNeedLightDropNum(); +u16 dMsgFlow_c::query027(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 prm0 = i_flowNode_p->param & 0xFF; + if (prm0 == 0) { + prm0 = dComIfGp_getNeedLightDropNum() & 0xFF; } - return dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea()) < uVar1; + + u16 ret = dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea()) >= prm0 ? 0 : 1; + + if (param_2 != 0) { + // "Light Drop Check" + OS_REPORT("\x1B[44;33m光の雫チェック          \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d ( %d / %d)\n", mFlow, ret, prm0, dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea()), dComIfGp_getNeedLightDropNum()); + } + + return ret; } /* 8024BA4C-8024BAA0 24638C 0054+00 1/0 0/0 0/0 .text * query028__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query028(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - int timeSec = *(u16*)flow_node->params; - int iVar3 = dMeter2Info_getTimeMs(); - int val2 = timeSec * 1000 + 999; - int rv = val2 < iVar3; - dMeter2Info_setMsgTimeMs(iVar3 <= val2 ? val2 - iVar3 : (iVar3 - timeSec * 1000) + 999); - return rv; +u16 dMsgFlow_c::query028(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const u16 prm0 = i_flowNode_p->param; + u16 ret = dMeter2Info_getTimeMs() <= prm0 * 1000 + 999 ? 0 : 1; + + dMeter2Info_setMsgTimeMs(dMeter2Info_getTimeMs() <= prm0 * 1000 + 999 ? + (prm0 * 1000 + 999) - dMeter2Info_getTimeMs() : + (dMeter2Info_getTimeMs() - prm0 * 1000) + 999); + + if (param_2 != 0) { + // "Goat-Herd Time Check" + OS_REPORT("\x1B[44;33m:牛追いタイム分岐          \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, prm0:%d time:%dms\n", mFlow, ret, prm0, dMeter2Info_getTimeMs()); + } + + return ret; } /* 8024BAA0-8024BAE0 2463E0 0040+00 1/0 0/0 0/0 .text * query029__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query029(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u8 rv = 1; +u16 dMsgFlow_c::query029(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = 1; if (dComIfGs_getOil() == 0 || dComIfGs_getMaxOil() == 0) { - rv = 2; + ret = 2; } else if (dComIfGs_getOil() == dComIfGs_getMaxOil()) { - rv = 0; + ret = 0; } - return rv; + + if (param_2 != 0) { + // "Lantern Content Check" + OS_REPORT("\x1B[44;33m:カンテラの中身チェック          \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024BAE0-8024BB18 246420 0038+00 1/0 0/0 0/0 .text * query030__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query030(mesg_flow_node_branch*, fopAc_ac_c*, int) { - return dComIfGs_getTmpReg(0xFBFF); +u16 dMsgFlow_c::query030(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = dComIfGs_getTmpReg(0xFBFF); + + if (param_2 != 0) { + // "Register Branch (5)" + OS_REPORT("\x1B[44;33m:レジスタ分岐(5)       \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024BB18-8024BB74 246458 005C+00 1/0 0/0 0/0 .text * query031__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query031(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u16 uVar3 = *(u16*)(flow_node->params); - return (0x14 - dComIfGs_getEventReg(0xff1f)) < uVar3; +u16 dMsgFlow_c::query031(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + int reg = dComIfGs_getEventReg(0xFF1F); + u8 ret = 1; + + reg = 20 - reg; + if (prm0 <= reg) { + ret = 0; + } else { + ret = 1; + } + + if (param_2 != 0) { + // "Runaway Goat Remaining Check" + OS_REPORT("\x1B[44;33m:暴走山羊残りチェック      \x1B[m|:"); + OS_REPORT("flow:%d, param:%d, ret:%d\n", mFlow, prm0, ret); + } + + return ret; } /* 8024BB74-8024BB9C 2464B4 0028+00 1/0 0/0 0/0 .text * query032__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query032(mesg_flow_node_branch* flow_node, fopAc_ac_c* param_1, int param_2) { - u8 rv = 1; - u16 uVar1 = *(u16*)flow_node->params; - if (dComIfGs_getLife() >= (int)uVar1) { - rv = 0; +u16 dMsgFlow_c::query032(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + + u8 ret = 1; + if (dComIfGs_getLife() >= prm0) { + ret = 0; } - return rv; + if (param_2 != 0) { + // "Life Check" + OS_REPORT("\x1B[44;33m:体力チェック          \x1B[m|:"); + OS_REPORT("flow:%d, param:%d, ret:%d\n", mFlow, prm0, ret); + } + + return ret; } /* 8024BB9C-8024BBE4 2464DC 0048+00 1/0 0/0 0/0 .text * query033__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query033(mesg_flow_node_branch*, fopAc_ac_c*, int) { - return daPy_getPlayerActorClass()->checkUseKandelaar(1) == false; +u16 dMsgFlow_c::query033(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = 1; + if (daPy_getPlayerActorClass()->checkUseKandelaar(1)) { + ret = 0; + } else { + ret = 1; + } + + if (param_2 != 0) { + // "Lantern Hold Check" + OS_REPORT("\x1B[44;33m:カンテラもっているかチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024BBE4-8024BC14 246524 0030+00 1/0 0/0 0/0 .text * query034__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query034(mesg_flow_node_branch*, fopAc_ac_c*, int) { - u8 time = dComIfGs_getTime() * (1.0f / 15.0f); - return time; +u16 dMsgFlow_c::query034(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = 0; + ret = (int)(dComIfGs_getTime() * (1.0f / 15.0f)) & 0xFF; + + if (param_2 != 0) { + // "Time Check" + OS_REPORT("\x1B[44;33m:時間チェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, TIME:%d\n", mFlow, ret, (int)(dComIfGs_getTime() * (1.0f / 15.0f))); + } + + return ret; } /* 8024BC14-8024BC3C 246554 0028+00 1/0 0/0 0/0 .text * query035__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query035(mesg_flow_node_branch* flow_node, fopAc_ac_c*, int) { - bool check = false; - if (dComIfGs_getMagic() < flow_node->params[0]) { - check = true; +u16 dMsgFlow_c::query035(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + u8 ret = 0; + if (dComIfGs_getMagic() < prm0) { + ret = 1; } - return check; + if (param_2 != 0) { + // "Magic Check" + OS_REPORT("\x1B[44;33m:魔法力チェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, param:%d\n", mFlow, ret, prm0); + } + + return ret; } /* 8024BC3C-8024BC80 24657C 0044+00 1/0 0/0 0/0 .text * query036__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query036(mesg_flow_node_branch*, fopAc_ac_c*, int) { - int tmp = fopMsgM_SearchByID(mMsg)->select_idx; +u16 dMsgFlow_c::query036(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + msg_class* aMsg_p = fopMsgM_SearchByID(mMsg); + JUT_ASSERT(2751, 0 != aMsg_p); + u16 ret = aMsg_p->select_idx; if (dMsgObject_getMsgObjectClass()->getSelectPushFlag() == 2) { - tmp = 2; + ret = 2; } - return tmp; + if (param_2 != 0) { + // "2 Choice Branch (B enabled)" + OS_REPORT("\x1B[44;33m:2択分岐(B対応)  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024BC80-8024BCC4 2465C0 0044+00 1/0 0/0 0/0 .text * query037__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query037(mesg_flow_node_branch*, fopAc_ac_c*, int) { - int tmp = fopMsgM_SearchByID(mMsg)->select_idx; +u16 dMsgFlow_c::query037(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + msg_class* aMsg_p = fopMsgM_SearchByID(mMsg); + JUT_ASSERT(2789, 0 != aMsg_p); + u16 ret = aMsg_p->select_idx; if (dMsgObject_getMsgObjectClass()->getSelectPushFlag() == 2) { - tmp = 3; + ret = 3; } - return tmp; + if (param_2 != 0) { + // "3 Choice Branch (B enabled)" + OS_REPORT("\x1B[44;33m:3択分岐(B対応)  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d:%d\n", mFlow, ret); + } + + return ret; } /* 8024BCC4-8024BDB0 246604 00EC+00 1/0 0/0 0/0 .text * query038__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query038(mesg_flow_node_branch* param_0, fopAc_ac_c* param_1, int param_2) { - int uVar5 = *(u16*)param_0->params; - u8 val; - if (uVar5 >= 1 && uVar5 < 4) { - val = uVar5 - 1; - } else if (uVar5 == 4) { - u8 rentalBombBag = dMeter2Info_getRentalBombBag(); - if (rentalBombBag != 0xff) { - val = rentalBombBag; +u16 dMsgFlow_c::query038(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + + u8 BombBag; + if (prm0 >= 1 && prm0 < 4) { + BombBag = prm0 - 1; + } else if (prm0 == 4) { + if (dMeter2Info_getRentalBombBag() != 0xFF) { + BombBag = dMeter2Info_getRentalBombBag(); } } else { - val = dComIfGs_getTmpReg(0xfbff) - 1; + BombBag = dComIfGs_getTmpReg(0xFBFF) - 1; } - u8 uVar4 = 0; - switch(dComIfGs_getItem((u8)(val + 0xf), 0)) { - case 0x70: - uVar4 = 1; - break; - case 0x71: - uVar4 = 2; - break; - case 0x72: - uVar4 = 3; - break; + u8 ret = 0; + switch(dComIfGs_getItem((u8)(BombBag + SLOT_15), false)) { + case fpcNm_ITEM_NORMAL_BOMB: + ret = 1; + break; + case fpcNm_ITEM_WATER_BOMB: + ret = 2; + break; + case fpcNm_ITEM_POKE_BOMB: + ret = 3; + break; } + dMsgObject_setEquipBombInfo(); - return uVar4; + + if (param_2 != 0) { + // "Bomb Bag contents Check" + OS_REPORT("\x1B[44;33m:ボム袋中身チェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, param:%d, BombBag:%d\n", mFlow, ret, prm0, BombBag); + } + + return ret; } /* 8024BDB0-8024BE4C 2466F0 009C+00 1/0 0/0 0/0 .text * query039__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query039(mesg_flow_node_branch* param_0, fopAc_ac_c* param_1, int param_2) { - u16 uVar2 = *(u16*)param_0->params; - u8 iVar4 = dComIfGs_getTmpReg(0xfbff); - u8 bombNum = dComIfGs_getBombNum(iVar4 - 1); - return dComIfGs_getBombMax(fpcNm_ITEM_NORMAL_BOMB) >= bombNum + uVar2; +u16 dMsgFlow_c::query039(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + + u8 BombBag = dComIfGs_getTmpReg(0xFBFF) - 1; + u8 BombNum = dComIfGs_getBombNum(BombBag); + u8 BombMax = dComIfGs_getBombMax(fpcNm_ITEM_NORMAL_BOMB); + + u8 ret = 0; + if (BombMax < BombNum + prm0) { + ret = 0; + } else { + ret = 1; + } + + if (param_2 != 0) { + // "Normal Bomb over MAX Check" + OS_REPORT("\x1B[44;33m:通常爆弾MAX超えチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, param:%d, BombBag:%d, BombNum:%d, BombMax:%d\n", mFlow, ret, prm0, BombBag, BombNum, BombMax); + } + + return ret; } /* 8024BE4C-8024BF50 24678C 0104+00 1/0 0/0 0/0 .text * query040__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query040(mesg_flow_node_branch* param_0, fopAc_ac_c* param_1, int param_2) { - s32 uVar7 = *(u16*)param_0->params; - u8 unaff_r30; - if (uVar7 >= 1 && uVar7 < 4) { - unaff_r30 = uVar7 - 1; - } else if (uVar7 == 4) { - if (dMeter2Info_getRentalBombBag() != 0xff) { - unaff_r30 = dMeter2Info_getRentalBombBag(); +u16 dMsgFlow_c::query040(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + + u8 BombBag; + if (prm0 >= 1 && prm0 < 4) { + BombBag = prm0 - 1; + } else if (prm0 == 4) { + if (dMeter2Info_getRentalBombBag() != 0xFF) { + BombBag = dMeter2Info_getRentalBombBag(); } } else { - unaff_r30 = dComIfGs_getTmpReg(0xfbff) - 1; + BombBag = dComIfGs_getTmpReg(0xFBFF) - 1; } - u8 bombNum = dComIfGs_getBombNum(unaff_r30); - u8 uVar4 = dComIfGs_getItem((u8)(unaff_r30 + SLOT_15), 0); - u8 bombMax = dComIfGs_getBombMax(uVar4); - u8 rv; - if (bombNum == 0) { - rv = 0; - } else if (bombNum >= bombMax) { - rv = 2; + u8 BombNum = dComIfGs_getBombNum(BombBag); + u8 BombType = dComIfGs_getItem((u8)(BombBag + SLOT_15), false); + u8 BombMax = dComIfGs_getBombMax(BombType); + + u8 ret = 0; + if (BombNum == 0) { + ret = 0; + } else if (BombNum >= BombMax) { + ret = 2; } else { - rv = 1; + ret = 1; } - return rv; + + if (param_2 != 0) { + // "Bomb contents count Check" + OS_REPORT("\x1B[44;33m:ボム袋中身個数チェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, param:%d, BombBag:%d\n", mFlow, ret, prm0, BombBag); + } + + return ret; } /* 8024BF50-8024BFEC 246890 009C+00 1/0 0/0 0/0 .text * query041__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query041(mesg_flow_node_branch* param_0, fopAc_ac_c* param_1, int param_2) { - u16 uVar2 = *(u16*)param_0->params; - u8 iVar4 = dComIfGs_getTmpReg(0xfbff); - u8 bombNum = dComIfGs_getBombNum(iVar4 - 1); - return dComIfGs_getBombMax(fpcNm_ITEM_WATER_BOMB) >= bombNum + uVar2; +u16 dMsgFlow_c::query041(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + + u8 BombBag = dComIfGs_getTmpReg(0xFBFF) - 1; + u8 BombNum = dComIfGs_getBombNum(BombBag); + u8 BombMax = dComIfGs_getBombMax(fpcNm_ITEM_WATER_BOMB); + + u8 ret = 0; + if (BombMax < BombNum + prm0) { + ret = 0; + } else { + ret = 1; + } + + if (param_2 != 0) { + // "Water Bomb over MAX Check" + OS_REPORT("\x1B[44;33m:水中爆弾MAX超えチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d, param:%d, BombBag:%d, BombNum:%d, BombMax:%d\n", mFlow, ret, prm0, BombBag, BombNum, BombMax); + } + + return ret; } /* 8024BFEC-8024C0A8 24692C 00BC+00 1/0 0/0 0/0 .text * query042__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query042(mesg_flow_node_branch*, fopAc_ac_c*, int) { - daMidna_c* midna = daPy_py_c::getMidnaActor(); +u16 dMsgFlow_c::query042(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + daMidna_c* midna_p = daPy_py_c::getMidnaActor(); u8 ret = 0; - if (!strcmp("F_SP116", dComIfGp_getStartStageName()) && dComIfGs_isSaveDunSwitch(0x3C)) { + if (strcmp("F_SP116", dComIfGp_getStartStageName()) == 0 && dComIfGs_isSaveDunSwitch(60)) { ret = 4; - } else if (midna->checkNpcNear()) { + } else if (midna_p->checkNpcNear()) { ret = 1; - } else if (midna->checkNpcFar()) { + } else if (midna_p->checkNpcFar()) { ret = 2; } else if (g_env_light.mEvilInitialized & 0x80) { ret = 3; } + if (param_2 != 0) { + // "Transform Range Check" + OS_REPORT("\x1B[44;33m:変身可能範囲チェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + return ret; } /* 8024C0A8-8024C144 2469E8 009C+00 1/0 0/0 0/0 .text * query043__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query043(mesg_flow_node_branch* flow_node, fopAc_ac_c*, int) { - u16 prm0 = flow_node->params[0]; - u8 bomb_num = dComIfGs_getBombNum(dComIfGs_getTmpReg(0xFBFF) - 1); - u8 bomb_max = dComIfGs_getBombMax(fpcNm_ITEM_POKE_BOMB); +u16 dMsgFlow_c::query043(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int prm0 = i_flowNode_p->param; + u8 BombBag = dComIfGs_getTmpReg(0xFBFF) - 1; + u8 BombNum = dComIfGs_getBombNum(BombBag); + u8 BombMax = dComIfGs_getBombMax(fpcNm_ITEM_POKE_BOMB); - return bomb_max >= bomb_num + prm0; + u8 ret = 0; + if (BombMax < BombNum + prm0) { + ret = 0; + } else { + ret = 1; + } + + if (param_2 != 0) { + // "Poke Bug over MAX" + OS_REPORT("\x1B[44;33m:ポケ虫MAX超える  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024C144-8024C18C 246A84 0048+00 1/0 0/0 0/0 .text * query044__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query044(mesg_flow_node_branch*, fopAc_ac_c*, int) { - return daAlink_getAlinkActorClass()->checkAcceptDungeonWarpAlink(0) == false; +u16 dMsgFlow_c::query044(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret; + if (daAlink_getAlinkActorClass()->checkAcceptDungeonWarpAlink(0)) { + ret = 0; + } else { + ret = 1; + } + + if (param_2 != 0) { + // "Possible Warp Area" + OS_REPORT("\x1B[44;33m:ワープ可能エリア  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024C18C-8024C218 246ACC 008C+00 1/0 0/0 0/0 .text * query045__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query045(mesg_flow_node_branch* param_0, fopAc_ac_c* param_1, int param_2) { +u16 dMsgFlow_c::query045(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { u8 insectNum = dComIfGs_checkGetInsectNum(); - u8 rv = 0; + u8 ret = 0; if (insectNum == 0) { - rv = 0; + ret = 0; } else if (insectNum >= 1 && insectNum <= 11) { - rv = 1; + ret = 1; } else if (insectNum >= 12 && insectNum <= 22) { - rv = 2; + ret = 2; } else if (insectNum == 23) { - rv = 3; + ret = 3; } else if (insectNum == 24) { - rv = 4; + ret = 4; } - return rv; + if (param_2 != 0) { + // "Captured Insect" + OS_REPORT("\x1B[44;33m:捕獲した虫  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024C218-8024C248 246B58 0030+00 1/0 0/0 0/0 .text * query046__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query046(mesg_flow_node_branch*, fopAc_ac_c*, int) { - return dComIfGs_checkInsectBottle(); +u16 dMsgFlow_c::query046(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = dComIfGs_checkInsectBottle(); + + if (param_2 != 0) { + // "Insect Bottle Check" + OS_REPORT("\x1B[44;33m:虫入りビンチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024C248-8024C250 246B88 0008+00 1/0 0/0 0/0 .text * query047__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query047(mesg_flow_node_branch*, fopAc_ac_c*, int) { - return 0; +u16 dMsgFlow_c::query047(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = 0; + + if (param_2 != 0) { + // "Landmine over MAX (Missing Num)" + OS_REPORT("\x1B[44;33m:地雷MAX超える(欠番)  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + JUT_ASSERT(3305, 0); + return ret; } /* 8024C250-8024C2A0 246B90 0050+00 1/0 0/0 0/0 .text * query048__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query048(mesg_flow_node_branch*, fopAc_ac_c*, int) { - u8 new_num = dMeter2Info_getNewLetterNum(); +u16 dMsgFlow_c::query048(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = dMeter2Info_getNewLetterNum(); - if (new_num > 2) { - new_num = 2; + if (ret > 2) { + ret = 2; } - if (new_num == 1) { + if (ret == 1) { dMeter2Info_setNewLetterSender(); } - return new_num; + if (param_2 != 0) { + // "Letter Number Check" + OS_REPORT("\x1B[44;33m:手紙の数チェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024C2A0-8024C2FC 246BE0 005C+00 1/0 0/0 0/0 .text * query049__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query049(mesg_flow_node_branch*, fopAc_ac_c*, int) { - u8 uVar1; - u32 num = dComIfGs_getPohSpiritNum(); +u16 dMsgFlow_c::query049(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 num = dComIfGs_getPohSpiritNum(); + u8 ret = 0; if (num == 0) { - uVar1 = 0; - } else if ((u8)num <= 19) { - uVar1 = 1; - } else if ((u8)num <= 39) { - uVar1 = 2; - } else if ((u8)num <= 59) { - uVar1 = 3; + ret = 0; + } else if (num <= 19) { + ret = 1; + } else if (num <= 39) { + ret = 2; + } else if (num <= 59) { + ret = 3; } else { - uVar1 = 4; + ret = 4; } - return uVar1; + if (param_2 != 0) { + // "Collected Souls count" + OS_REPORT("\x1B[44;33m:集めた魂の数  \x1B[m|:"); + OS_REPORT("flow:%d, num:%d, ret:%d\n", mFlow, num, ret); + } + + return ret; } /* 8024C2FC-8024C340 246C3C 0044+00 1/0 0/0 0/0 .text * query050__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query050(mesg_flow_node_branch* flow_node, fopAc_ac_c*, int) { - u16 prm0 = flow_node->params[0]; - int offering = dMsgObject_getOffering(); - return offering < prm0; +u16 dMsgFlow_c::query050(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + const int num = i_flowNode_p->param; + u8 ret; + if (num <= dMsgObject_getOffering()) { + ret = 0; + } else { + ret = 1; + } + + if (param_2 != 0) { + // "Offering Total Amount" + OS_REPORT("\x1B[44;33m:お布施総額  \x1B[m|:"); + OS_REPORT("flow:%d, num:%d, ret:%d\n", mFlow, num, ret); + } + + return ret; } /* 8024C340-8024C3A0 246C80 0060+00 1/0 0/0 0/0 .text * query051__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query051(mesg_flow_node_branch*, fopAc_ac_c*, int) { +u16 dMsgFlow_c::query051(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + int num = dComIfGp_getMessageCountNumber(); u8 ret; - if (dComIfGp_getMessageCountNumber() == 0) { + if (num == 0) { ret = 0; - } else if (dComIfGp_getMessageCountNumber() < 1000) { + } else if (num < 1000) { ret = 1; - } else if (dComIfGp_getMessageCountNumber() < 10000) { + } else if (num < 10000) { ret = 2; - } else if (dComIfGp_getMessageCountNumber() < 0xF00E) { + } else if (num < 0xF00E) { ret = 3; } else { ret = 4; } + if (param_2 != 0) { + // "Balloon Break Score" + OS_REPORT("\x1B[44;33m:風船割りの点数  \x1B[m|:"); + OS_REPORT("flow:%d, num:%d, ret:%d\n", mFlow, num, ret); + } + return ret; } /* 8024C3A0-8024C3D4 246CE0 0034+00 1/0 0/0 0/0 .text * query052__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query052(mesg_flow_node_branch*, fopAc_ac_c*, int) { - bool phi_r4 = false; - if (daPy_getPlayerActorClass()->checkWaterInMove() || - dComIfGp_checkPlayerStatus0(0, 0x100000)) { - phi_r4 = true; +u16 dMsgFlow_c::query052(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = 0; + if (daPy_getPlayerActorClass()->checkWaterInMove() || dComIfGp_checkPlayerStatus0(0, 0x100000)) { + ret = 1; } - return phi_r4; + if (param_2 != 0) { + // "In-Water Check" + OS_REPORT("\x1B[44;33m:水中チェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 8024C3D4-8024C3FC 246D14 0028+00 1/0 0/0 0/0 .text * query053__10dMsgFlow_cFP21mesg_flow_node_branchP10fopAc_ac_ci */ -int dMsgFlow_c::query053(mesg_flow_node_branch*, fopAc_ac_c*, int) { - bool phi_r4 = false; +u16 dMsgFlow_c::query053(mesg_flow_node_branch* i_flowNode_p, fopAc_ac_c* i_speaker_p, int param_2) { + u8 ret = 0; if (daPy_getPlayerActorClass()->checkEquipHeavyBoots()) { - phi_r4 = true; + ret = 1; } - return phi_r4; + if (param_2 != 0) { + // "Wearing Iron Boots Check" + OS_REPORT("\x1B[44;33m:アイアンブーツ履いているかチェック  \x1B[m|:"); + OS_REPORT("flow:%d, ret:%d\n", mFlow, ret); + } + + return ret; } /* 803C1CCC-803C1ED0 01EDEC 0204+00 1/2 0/0 0/0 .data mEventList__10dMsgFlow_c */ @@ -1294,132 +1893,177 @@ eventFunc dMsgFlow_c::mEventList[43] = { /* 8024C3FC-8024C488 246D3C 008C+00 1/0 0/0 0/0 .text * event000__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event000(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event000(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; + getParam(&prm0, &prm1, i_flowNode_p->params); + + // "Event Flag ON" + OS_REPORT("\x1B[44;32mイベントフラグON         \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); - int tmp = getParam(&prm0, &prm1, flow_node->params); if (prm0 != 0) { - dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[prm0]); + dComIfGs_onEventBit((u16)dSv_event_flag_c::saveBitLabels[prm0]); } + if (prm1 != 0) { - dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[prm1]); + dComIfGs_onEventBit((u16)dSv_event_flag_c::saveBitLabels[prm1]); } + return 1; } /* 8024C488-8024C514 246DC8 008C+00 1/0 0/0 0/0 .text * event001__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event001(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event001(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; + getParam(&prm0, &prm1, i_flowNode_p->params); + + OS_REPORT("\x1B[44;32mイベントフラグOFF        \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); - int tmp = getParam(&prm0, &prm1, flow_node->params); if (prm0 != 0) { - dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[prm0]); + dComIfGs_offEventBit((u16)dSv_event_flag_c::saveBitLabels[prm0]); } + if (prm1 != 0) { - dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[prm1]); + dComIfGs_offEventBit((u16)dSv_event_flag_c::saveBitLabels[prm1]); } + return 1; } /* 8024C514-8024C550 246E54 003C+00 1/0 0/0 0/0 .text * event002__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event002(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); - +int dMsgFlow_c::event002(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); dComIfGp_setItemRupeeCount(prm0); + + // "Rupee Increase" + OS_REPORT("\x1B[44;32mルピ−増              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024C550-8024C590 246E90 0040+00 1/0 0/0 0/0 .text * event003__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event003(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); - +int dMsgFlow_c::event003(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); dComIfGp_setItemRupeeCount(-prm0); + + // "Rupee Decrease" + OS_REPORT("\x1B[44;32mルピ−減              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024C590-8024C5F0 246ED0 0060+00 1/0 0/0 0/0 .text * event004__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event004(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - f32 prm0 = getParam(flow_node->params); - +int dMsgFlow_c::event004(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + f32 prm0 = getParam(i_flowNode_p->params); dComIfGp_setItemLifeCount(prm0, 0); + + // "Heart Increase" + OS_REPORT("\x1B[44;32mハ−ト増              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%f\n", mFlow, prm0); + return 1; } - /* 8024C5F0-8024C654 246F30 0064+00 1/0 0/0 0/0 .text * event005__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event005(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - f32 prm0 = getParam(flow_node->params); +int dMsgFlow_c::event005(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + f32 prm0 = getParam(i_flowNode_p->params); + dComIfGp_setItemLifeCount((f32)-prm0, 0); + + // "Heart Decrease" + OS_REPORT("\x1B[44;32mハ−ト減              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%f\n", mFlow, prm0); - f32 prm1 = -prm0; - dComIfGp_setItemLifeCount(prm1, 0); return 1; } - /* 8024C654-8024C694 246F94 0040+00 1/0 0/0 0/0 .text * event006__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event006(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event006(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); dComIfGp_setItemMagicCount(prm0); + + // "MP Increase" + OS_REPORT("\x1B[44;32mMP増               \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024C694-8024C6D8 246FD4 0044+00 1/0 0/0 0/0 .text * event007__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event007(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event007(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); dComIfGp_setItemMagicCount(-prm0); + + // "MP Decrease" + OS_REPORT("\x1B[44;32mMP減               \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024C6D8-8024C744 247018 006C+00 1/0 0/0 0/0 .text * event008__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event008(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event008(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); if (prm0 == 27) { - int fund_raising = dMsgObject_getFundRaising(); - int tmp = 2000 - (fund_raising & 0xFFFF); - - if (tmp >= 200) { + int remaining = 2000 - dMsgObject_getFundRaising(); + if (remaining >= 200) { dMsgObject_setFundRaising(0); } else { - dMsgObject_setFundRaising(200 - tmp); + dMsgObject_setFundRaising(200 - remaining); } } + // "Event Start" + OS_REPORT("\x1B[44;32mイベント開始            \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); + return 1; } /* 8024C744-8024C76C 247084 0028+00 1/0 0/0 0/0 .text * event009__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event009(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - getParam(flow_node->params); +int dMsgFlow_c::event009(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + u16 prm0 = getParam(i_flowNode_p->params); + + // "Flow Jump" + OS_REPORT("\x1B[44;32mフロ−ジャンプ           \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024C76C-8024C7F8 2470AC 008C+00 1/0 0/0 0/0 .text * event010__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event010(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event010(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); + + // "Temporary Flag ON" + OS_REPORT("\x1B[44;32m一時フラグON           \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); if (prm0 != 0) { - dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[prm0]); + dComIfGs_onTmpBit((u16)dSv_event_tmp_flag_c::tempBitLabels[prm0]); } if (prm1 != 0) { - dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[prm1]); + dComIfGs_onTmpBit((u16)dSv_event_tmp_flag_c::tempBitLabels[prm1]); } return 1; @@ -1427,17 +2071,21 @@ int dMsgFlow_c::event010(mesg_flow_node_event* flow_node, fopAc_ac_c*) { /* 8024C7F8-8024C884 247138 008C+00 1/0 0/0 0/0 .text * event011__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event011(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event011(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); + + // "Temporary Flag OFF" + OS_REPORT("\x1B[44;32m一時フラグOFF          \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); if (prm0 != 0) { - dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[prm0]); + dComIfGs_offTmpBit((u16)dSv_event_tmp_flag_c::tempBitLabels[prm0]); } if (prm1 != 0) { - dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[prm1]); + dComIfGs_offTmpBit((u16)dSv_event_tmp_flag_c::tempBitLabels[prm1]); } return 1; @@ -1445,33 +2093,44 @@ int dMsgFlow_c::event011(mesg_flow_node_event* flow_node, fopAc_ac_c*) { /* 8024C884-8024C88C 2471C4 0008+00 1/0 0/0 0/0 .text * event012__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event012(mesg_flow_node_event*, fopAc_ac_c*) { +int dMsgFlow_c::event012(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + // "Door OPEN" + OS_REPORT("\x1B[44;32mドアOPEN            \x1B[m|:"); + OS_REPORT("flow:%d\n", mFlow); + return 1; } /* 8024C88C-8024C8CC 2471CC 0040+00 1/0 0/0 0/0 .text * event013__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event013(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - field_0x46 = 1; +int dMsgFlow_c::event013(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + mSelType = SELTYPE_VERTICAL_e; mSelectMessage = 1; field_0x25 = 1; - int prm0 = getParam(flow_node->params); - dMsgObject_c::setSelectCancelPos(prm0); + int prm0 = getParam(i_flowNode_p->params); + OS_REPORT("\x1B[44;32mSELECT            \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + + dMsgObject_setSelectCancelPos(prm0); return 1; } /* 8024C8CC-8024C994 24720C 00C8+00 1/0 0/0 0/0 .text * event014__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event014(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { +int dMsgFlow_c::event014(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); + + // "Switch Bit ON" + OS_REPORT("\x1B[44;32mスイッチビットON         \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); int roomNo = -1; - if (actor != NULL) { - roomNo = fopAcM_GetRoomNo(actor); + if (i_speaker_p != NULL) { + roomNo = fopAcM_GetRoomNo(i_speaker_p); } switch (prm0) { @@ -1494,14 +2153,18 @@ int dMsgFlow_c::event014(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { /* 8024C994-8024CA5C 2472D4 00C8+00 1/0 0/0 0/0 .text * event015__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event015(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { +int dMsgFlow_c::event015(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); + + // "Switch Bit OFF" + OS_REPORT("\x1B[44;32mスイッチビットOFF        \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); int roomNo = -1; - if (actor != NULL) { - roomNo = fopAcM_GetRoomNo(actor); + if (i_speaker_p != NULL) { + roomNo = fopAcM_GetRoomNo(i_speaker_p); } switch (prm0) { @@ -1524,20 +2187,30 @@ int dMsgFlow_c::event015(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { /* 8024CA5C-8024CA94 24739C 0038+00 1/0 0/0 0/0 .text * event016__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event016(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { - static_cast(actor)->setEventParam(*(u32*)flow_node->params); +int dMsgFlow_c::event016(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + dShopSystem_c* shop = (dShopSystem_c*)i_speaker_p; + shop->setEventParam(*(u32*)i_flowNode_p->params); + + u8 prm[4]; + getParam(prm, i_flowNode_p->params); + + // "Item Selection Start" + OS_REPORT("\x1B[44;32m商品選択開始            \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d, prm2:%d, prm3:%d\n", mFlow, prm[0], prm[1], prm[2], prm[3]); - u8 prm0; - getParam(&prm0, flow_node->params); return 1; } /* 8024CA94-8024CBB0 2473D4 011C+00 1/0 0/0 0/0 .text * event017__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event017(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event017(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); + + // "Item Set" + OS_REPORT("\x1B[44;32mアイテムセット           \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); if (prm1 <= 1) { switch (prm0) { @@ -1569,48 +2242,51 @@ int dMsgFlow_c::event017(mesg_flow_node_event* flow_node, fopAc_ac_c*) { /* 8024CBB0-8024CCA4 2474F0 00F4+00 1/0 0/0 0/0 .text * event018__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event018(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { - u8 prm0[4]; - getParam(prm0, flow_node->params); +int dMsgFlow_c::event018(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + u8 prm[4]; + getParam(prm, i_flowNode_p->params); field_0x47 = 1; - field_0x42 = prm0[0]; - field_0x43 = prm0[1]; - field_0x44 = prm0[2]; - field_0x45 = prm0[3]; + field_0x42 = prm[0]; + field_0x43 = prm[1]; + field_0x44 = prm[2]; + field_0x45 = prm[3]; - if (actor != NULL) { - int stayNo = dComIfGp_roomControl_getStayNo(); - if (stayNo != 0) { - mDoAud_messageSePlay(field_0x45, &actor->current.pos, - dComIfGp_getReverb(stayNo)); + if (i_speaker_p != NULL) { + if (dComIfGp_roomControl_getStayNo() != 0) { + s8 reverb = dComIfGp_getReverb(dComIfGp_roomControl_getStayNo()); + mDoAud_messageSePlay(field_0x45, &i_speaker_p->current.pos, reverb); } else { - mDoAud_messageSePlay(field_0x45, &actor->current.pos, 0); + mDoAud_messageSePlay(field_0x45, &i_speaker_p->current.pos, 0); } } else { - int stayNo = dComIfGp_roomControl_getStayNo(); - if (stayNo != 0) { - mDoAud_messageSePlay(field_0x45, NULL, dComIfGp_getReverb(stayNo)); + if (dComIfGp_roomControl_getStayNo() != 0) { + s8 reverb = dComIfGp_getReverb(dComIfGp_roomControl_getStayNo()); + mDoAud_messageSePlay(field_0x45, NULL, reverb); } else { mDoAud_messageSePlay(field_0x45, NULL, 0); } } + // "Event Direction" + OS_REPORT("\x1B[44;32mイベント演出            \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d, prm2:%d, prm3:%d\n", mFlow, field_0x42, field_0x43, field_0x44, field_0x45); + return 1; } /* 8024CCA4-8024CCAC 2475E4 0008+00 1/0 0/0 0/0 .text * event019__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event019(mesg_flow_node_event*, fopAc_ac_c*) { +int dMsgFlow_c::event019(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { return 1; } /* 8024CCAC-8024CD84 2475EC 00D8+00 1/0 0/0 0/0 .text * event020__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event020(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event020(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); daPy_py_c* player = daPy_getPlayerActorClass(); - dStage_roomDt_c* room = dComIfGp_roomControl_getStatusRoomDt(fopAcM_GetRoomNo(actor)); + dStage_roomDt_c* room = dComIfGp_roomControl_getStatusRoomDt(fopAcM_GetRoomNo(i_speaker_p)); stage_actor_data_class* actor_data = room->getPlayer()->m_entries; for (int i = 0; i < room->getPlayerNum(); i++, actor_data++) { @@ -1620,32 +2296,48 @@ int dMsgFlow_c::event020(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { } } + // "Player Warp" + OS_REPORT("\x1B[44;32mプレイヤ−ワ−プ          \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024CD84-8024CDAC 2476C4 0028+00 1/0 0/0 0/0 .text * event021__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event021(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { - cLib_calcTimer(&field_0x3c); +int dMsgFlow_c::event021(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + cLib_calcTimer(&mTimer); + + // "WAIT" + OS_REPORT("\x1B[44;32mWAIT              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, mTimer); + return 1; } /* 8024CDAC-8024CE40 2476EC 0094+00 1/0 0/0 0/0 .text * event022__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event022(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event022(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); if (prm0 == 0) { prm0 = 100; } - dComIfGp_setItemOilCount(dComIfGs_getMaxOil() * (prm0 / 100.0f)); + f32 var_f31 = prm0 / 100.0f; + s32 oilCount = dComIfGs_getMaxOil() * var_f31; + dComIfGp_setItemOilCount(oilCount); + + // "Lantern Supply" + OS_REPORT("\x1B[44;32mカンテラ補給              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024CE40-8024CF2C 247780 00EC+00 2/0 0/0 0/0 .text * event023__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event023(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event023(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); switch (prm0) { case 1: @@ -1671,120 +2363,142 @@ int dMsgFlow_c::event023(mesg_flow_node_event* flow_node, fopAc_ac_c*) { break; } + // "Bottle Content Set" + OS_REPORT("\x1B[44;32mビンの中身セット              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024CF2C-8024CF54 24786C 0028+00 1/0 0/0 0/0 .text * event024__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event024(mesg_flow_node_event*, fopAc_ac_c* actor) { - static_cast(actor)->setSoldOutFlag(); +int dMsgFlow_c::event024(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + dShopSystem_c* shop = (dShopSystem_c*)i_speaker_p; + shop->setSoldOutFlag(); + + // "Sold Out" + OS_REPORT("\x1B[44;32m売り切れ              \x1B[m|:"); + OS_REPORT("flow:%d\n", mFlow); + return 1; } /* 8024CF54-8024CF9C 247894 0048+00 1/0 0/0 0/0 .text * event025__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event025(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); - dComIfGs_setTmpReg(0xFBFF, prm0); +int dMsgFlow_c::event025(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); + u8 value = prm0 & 0xFF; + dComIfGs_setTmpReg(0xFBFF, value); + + // "Register Set" + OS_REPORT("\x1B[44;32mレジスタセット           \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); return 1; } /* 8024CF9C-8024D004 2478DC 0068+00 1/0 0/0 0/0 .text * event026__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -// todo: setup required classes -#ifdef NONMATCHING -int dMsgFlow_c::event026(mesg_flow_node_event*, fopAc_ac_c* actor) { - if (fopAcM_GetName(actor) == PROC_MYNA) { - actor = static_cast(actor)->getSpeakActorPtr(); +int dMsgFlow_c::event026(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + fopAc_ac_c* speaker_p; + if (fopAcM_GetName(i_speaker_p) == PROC_MYNA) { + daMyna_c* myna = (daMyna_c*)i_speaker_p; + speaker_p = myna->getSpeakActorPtr(); + } else { + speaker_p = i_speaker_p; } - if (actor != NULL) { - if (fopAcM_GetName(actor) == PROC_OBJ_SSITEM || fopAcM_GetName(actor) == PROC_OBJ_SSDRINK || - fopAcM_GetName(actor) == PROC_TAG_SSDRINK) { + if (speaker_p != NULL) { + if (fopAcM_GetName(speaker_p) == PROC_OBJ_SSITEM || + fopAcM_GetName(speaker_p) == PROC_OBJ_SSDRINK || + fopAcM_GetName(speaker_p) == PROC_TAG_SSDRINK) + { + daObj_SSBase_c* ss_item = (daObj_SSBase_c*)speaker_p; + ss_item->setSoldOut(); } } + // "Buying from unanttended tent" + OS_REPORT("\x1B[44;32m無人テント購入           \x1B[m|:"); + OS_REPORT("flow:%d\n", mFlow); + return 1; } -#else -int dMsgFlow_c::event026(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { - // NONMATCHING -} -#endif /* 8024D004-8024D3C4 247944 03C0+00 2/0 0/0 0/0 .text * event027__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event027(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event027(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); u8 aParam8[2]; - getParam(aParam8, flow_node->params); + getParam(aParam8, i_flowNode_p->params); - u8 slot; + JUT_ASSERT(4509, (aParam8[0] >= 0 && aParam8[0] <= dSv_player_item_c::BOMB_BAG_MAX) || (aParam8[0] == 4)); + + u8 BombBag; if (aParam8[0] >= 1 && aParam8[0] < 4) { - slot = aParam8[0] - 1; + BombBag = aParam8[0] - 1; } else if (aParam8[0] == 4) { if (dMeter2Info_getRentalBombBag() != 0xFF) { - slot = dMeter2Info_getRentalBombBag(); + BombBag = dMeter2Info_getRentalBombBag(); } } else { - slot = dComIfGs_getTmpReg(0xFBFF) - 1; + BombBag = dComIfGs_getTmpReg(0xFBFF) - 1; } switch (aParam8[1]) { case 0: - if (dComIfGs_getItem((u8)(SLOT_15 + slot), false) == fpcNm_ITEM_BOMB_BAG_LV1) { - dComIfGs_setItem((u8)(SLOT_15 + slot), fpcNm_ITEM_NORMAL_BOMB); + if (dComIfGs_getItem((u8)(SLOT_15 + BombBag), false) == fpcNm_ITEM_BOMB_BAG_LV1) { + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_NORMAL_BOMB); } if (prm1 != 0) { - dComIfGp_setItemBombNumCount(slot, (u8)prm1); + dComIfGp_setItemBombNumCount(BombBag, (u8)prm1); } else { - dComIfGp_setItemBombNumCount(slot, dComIfGs_getBombMax(fpcNm_ITEM_NORMAL_BOMB)); + dComIfGp_setItemBombNumCount(BombBag, dComIfGs_getBombMax(fpcNm_ITEM_NORMAL_BOMB)); } break; case 1: - if (dComIfGs_getItem((u8)(SLOT_15 + slot), false) == fpcNm_ITEM_BOMB_BAG_LV1) { - dComIfGs_setItem((u8)(SLOT_15 + slot), fpcNm_ITEM_WATER_BOMB); + if (dComIfGs_getItem((u8)(SLOT_15 + BombBag), false) == fpcNm_ITEM_BOMB_BAG_LV1) { + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_WATER_BOMB); } if (prm1 != 0) { - dComIfGp_setItemBombNumCount(slot, (u8)prm1); + dComIfGp_setItemBombNumCount(BombBag, (u8)prm1); } else { - dComIfGp_setItemBombNumCount(slot, dComIfGs_getBombMax(fpcNm_ITEM_WATER_BOMB)); + dComIfGp_setItemBombNumCount(BombBag, dComIfGs_getBombMax(fpcNm_ITEM_WATER_BOMB)); } break; case 2: - if (dComIfGs_getItem((u8)(SLOT_15 + slot), false) == fpcNm_ITEM_BOMB_BAG_LV1) { - dComIfGs_setItem((u8)(SLOT_15 + slot), fpcNm_ITEM_POKE_BOMB); + if (dComIfGs_getItem((u8)(SLOT_15 + BombBag), false) == fpcNm_ITEM_BOMB_BAG_LV1) { + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_POKE_BOMB); } if (prm1 != 0) { - dComIfGp_setItemBombNumCount(slot, (u8)prm1); + dComIfGp_setItemBombNumCount(BombBag, (u8)prm1); } else { - dComIfGp_setItemBombNumCount(slot, dComIfGs_getBombMax(fpcNm_ITEM_POKE_BOMB)); + dComIfGp_setItemBombNumCount(BombBag, dComIfGs_getBombMax(fpcNm_ITEM_POKE_BOMB)); } break; case 3: break; case 4: case 5: - dComIfGp_setItemBombNumCount(slot, (u8)prm1); + dComIfGp_setItemBombNumCount(BombBag, (u8)prm1); break; case 6: - dComIfGs_setItem((u8)(SLOT_15 + slot), fpcNm_ITEM_NORMAL_BOMB); - dComIfGp_setItemBombNumCount(slot, dComIfGs_getBombMax(fpcNm_ITEM_NORMAL_BOMB)); + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_NORMAL_BOMB); + dComIfGp_setItemBombNumCount(BombBag, dComIfGs_getBombMax(fpcNm_ITEM_NORMAL_BOMB)); break; case 7: - dComIfGs_setItem((u8)(SLOT_15 + slot), fpcNm_ITEM_WATER_BOMB); - dComIfGp_setItemBombNumCount(slot, dComIfGs_getBombMax(fpcNm_ITEM_WATER_BOMB)); + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_WATER_BOMB); + dComIfGp_setItemBombNumCount(BombBag, dComIfGs_getBombMax(fpcNm_ITEM_WATER_BOMB)); break; case 8: - dComIfGs_setItem((u8)(SLOT_15 + slot), fpcNm_ITEM_POKE_BOMB); - dComIfGp_setItemBombNumCount(slot, dComIfGs_getBombMax(fpcNm_ITEM_POKE_BOMB)); + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_POKE_BOMB); + dComIfGp_setItemBombNumCount(BombBag, dComIfGs_getBombMax(fpcNm_ITEM_POKE_BOMB)); break; case 9: case 10: @@ -1792,28 +2506,30 @@ int dMsgFlow_c::event027(mesg_flow_node_event* flow_node, fopAc_ac_c*) { break; } + // "Bomb Supply" + OS_REPORT("\x1B[44;32m爆弾補給           \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d, prm2:%d, BombBag:%d\n", mFlow, aParam8[0], aParam8[1], prm1, BombBag); + return 1; } - /* 8024D3C4-8024D500 247D04 013C+00 1/0 0/0 0/0 .text * event028__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ // NONMATCHING regalloc -int dMsgFlow_c::event028(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { - dMsgObject_c::setSelectCursorPos(dComIfGs_getTmpReg(0xFBFF) - 1); - u8 bagID = dMsgObject_c::getSelectBombBagID(); - s16 bombPrice = dMsgObject_c::getSelectBombPrice(); +int dMsgFlow_c::event028(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + u8 pos = dComIfGs_getTmpReg(0xFBFF) - 1; + dMsgObject_c::setSelectCursorPos(pos); + u8 BombBag = dMsgObject_c::getSelectBombBagID(); + s16 BombPrice = dMsgObject_c::getSelectBombPrice(); - dComIfGp_setItemRupeeCount(bombPrice); - dComIfGs_setBombNum(bagID, 0); + dComIfGp_setItemRupeeCount(BombPrice); + dComIfGs_setBombNum(BombBag, 0); - if (dComIfGs_getItem((u8)(SLOT_15 + bagID), true) != fpcNm_ITEM_BOMB_ARROW) { - dComIfGs_setItem((u8)(SLOT_15 + bagID), fpcNm_ITEM_BOMB_BAG_LV1); + if (dComIfGs_getItem((u8)(SLOT_15 + BombBag), true) != fpcNm_ITEM_BOMB_ARROW) { + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_BOMB_BAG_LV1); } else { for (int i = 0; i < 3; i++) { - u8 select_item = dComIfGs_getSelectItemIndex(i); - - if (SLOT_15 + bagID == select_item) { + if (SLOT_15 + BombBag == dComIfGs_getSelectItemIndex(i)) { u8 mix_item = dComIfGs_getMixItemIndex(i); dComIfGs_setMixItemIndex(i, fpcNm_ITEM_NONE); @@ -1821,61 +2537,82 @@ int dMsgFlow_c::event028(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { dComIfGp_setSelectItem(i); } } - dComIfGs_setItem((u8)(SLOT_15 + bagID), fpcNm_ITEM_BOMB_BAG_LV1); + + dComIfGs_setItem((u8)(SLOT_15 + BombBag), fpcNm_ITEM_BOMB_BAG_LV1); } + // "Bomb Purchase" + OS_REPORT("\x1B[44;32m爆弾買取           \x1B[m|:"); + OS_REPORT("flow:%d, BombBag:%d\n", mFlow, BombBag); + return 1; } /* 8024D500-8024D544 247E40 0044+00 1/0 0/0 0/0 .text * event029__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event029(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - field_0x46 = 2; +int dMsgFlow_c::event029(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + mSelType = SELTYPE_HORIZONTAL_e; mSelectMessage = 1; field_0x25 = 1; - dMsgObject_c::setSelectCancelPos(getParam(flow_node->params)); + int prm0 = getParam(i_flowNode_p->params); + + // "Horizontal SELECT" + OS_REPORT("\x1B[44;32m横SELECT            \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + + dMsgObject_c::setSelectCancelPos(prm0); return 1; } /* 8024D544-8024D5BC 247E84 0078+00 1/0 0/0 0/0 .text * event030__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event030(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event030(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); - s16 arrowNum = prm1; - if (arrowNum == 0) { - arrowNum = dComIfGs_getArrowMax(); + s16 arrow = prm1; + if (arrow == 0) { + arrow = dComIfGs_getArrowMax(); } if (prm0 == 0) { - dComIfGp_setItemArrowNumCount(arrowNum); + dComIfGp_setItemArrowNumCount(arrow); } else { - dMsgObject_c::setArrowNum(arrowNum); + dMsgObject_c::setArrowNum(arrow); } + // "Arrow Supply" + OS_REPORT("\x1B[44;32m矢補給            \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d, arrow:%d\n", mFlow, prm0, prm1, arrow); + return 1; } /* 8024D5BC-8024D5EC 247EFC 0030+00 1/0 0/0 0/0 .text * event031__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event031(mesg_flow_node_event*, fopAc_ac_c*) { +int dMsgFlow_c::event031(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { dMeter2Info_resetMiniGameItem(false); + + // "Rental Bomb Return" + OS_REPORT("\x1B[44;32mレンタル爆弾返却            \x1B[m|:"); + OS_REPORT("flow:%d\n", mFlow); + return 1; } /* 8024D5EC-8024D6BC 247F2C 00D0+00 1/0 0/0 0/0 .text * event032__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event032(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { - u16 uVar1; - u16 uVar2; +int dMsgFlow_c::event032(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + u16 prm1; + u16 prm0; GXColor color; - getParam(&uVar2, &uVar1, param_0->params); - if (uVar1 + 1 == field_0x3c) { - if (uVar2 == 0) { + getParam(&prm0, &prm1, i_flowNode_p->params); + + if (prm1 + 1 == mTimer) { + if (prm0 == 0) { color.r = 0; color.g = 0; color.b = 0; @@ -1883,22 +2620,30 @@ int dMsgFlow_c::event032(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { } else { color = g_saftyWhiteColor; } - mDoGph_gInf_c::fadeOut( -(1.0f / uVar1), color); + + mDoGph_gInf_c::fadeIn(1.0f / prm1, color); } - cLib_calcTimer(&field_0x3c); + + cLib_calcTimer(&mTimer); + + // "Fade-In" + OS_REPORT("\x1B[44;32mフェ−ドイン              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, mTimer); + return 1; } /* 8024D6BC-8024D788 247FFC 00CC+00 1/0 0/0 0/0 .text * event033__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event033(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { - u16 uVar1; - u16 uVar2; +int dMsgFlow_c::event033(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + u16 prm1; + u16 prm0; GXColor color; - getParam(&uVar2, &uVar1, param_0->params); - if (uVar1 + 1 == field_0x3c) { - if (uVar2 == 0) { + getParam(&prm0, &prm1, i_flowNode_p->params); + + if (prm1 + 1 == mTimer) { + if (prm0 == 0) { color.r = 0; color.g = 0; color.b = 0; @@ -1906,24 +2651,36 @@ int dMsgFlow_c::event033(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { } else { color = g_saftyWhiteColor; } - mDoGph_gInf_c::fadeOut(1.0f / uVar1, color); + + mDoGph_gInf_c::fadeOut(1.0f / prm1, color); } - cLib_calcTimer(&field_0x3c); + + cLib_calcTimer(&mTimer); + + // "Fade-Out" + OS_REPORT("\x1B[44;32mフェ−ドアウト             \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, mTimer); + return 1; } /* 8024D788-8024D7C8 2480C8 0040+00 1/0 0/0 0/0 .text * event034__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event034(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event034(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); dComIfGs_setWarashibeItem(prm0); + + // "Trade Item Set" + OS_REPORT("\x1B[44;32mわらしべセット             \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024D7C8-8024D870 248108 00A8+00 1/0 0/0 0/0 .text * event035__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event035(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event035(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); if (prm0 == fpcNm_ITEM_TOMATO_PUREE || prm0 == fpcNm_ITEM_TASTE) { dComIfGs_offItemFirstBit(prm0); @@ -1933,49 +2690,74 @@ int dMsgFlow_c::event035(mesg_flow_node_event* flow_node, fopAc_ac_c*) { dComIfGs_setWarashibeItem(fpcNm_ITEM_NONE); } + // "Item Remove" + OS_REPORT("\x1B[44;32mアイテム削除              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024D870-8024D8C4 2481B0 0054+00 1/0 0/0 0/0 .text * event036__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event036(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event036(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); dComIfGs_onSaveSwitch(prm0, prm1); + + // "Save Bit ON" + OS_REPORT("\x1B[44;32mセーブビットON              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); + return 1; } /* 8024D8C4-8024D918 248204 0054+00 1/0 0/0 0/0 .text * event037__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event037(mesg_flow_node_event* flow_node, fopAc_ac_c*) { +int dMsgFlow_c::event037(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { u16 prm1; u16 prm0; - getParam(&prm0, &prm1, flow_node->params); + getParam(&prm0, &prm1, i_flowNode_p->params); dComIfGs_offSaveSwitch(prm0, prm1); + + // "Save Bit OFF" + OS_REPORT("\x1B[44;32mセーブビットOFF              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d, prm1:%d\n", mFlow, prm0, prm1); + return 1; } /* 8024D918-8024D93C 248258 0024+00 1/0 0/0 0/0 .text * event038__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event038(mesg_flow_node_event*, fopAc_ac_c*) { +int dMsgFlow_c::event038(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { dMeter2Info_recieveLetter(); + + // "Mail Receive" + OS_REPORT("\x1B[44;32mメール受信              \x1B[m|:"); + OS_REPORT("flow:%d\n", mFlow); + return 1; } /* 8024D93C-8024D970 24827C 0034+00 1/0 0/0 0/0 .text * event039__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event039(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - dMeter2Info_setTableMapRegionNo(getParam(flow_node->params)); +int dMsgFlow_c::event039(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); + dMeter2Info_setTableMapRegionNo(prm0); + + // "Resistance Map" + OS_REPORT("\x1B[44;32mレジスタンスの地図              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024D970-8024DA78 2482B0 0108+00 2/0 0/0 0/0 .text * event040__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event040(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event040(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); switch (prm0) { case 0: @@ -2003,20 +2785,28 @@ int dMsgFlow_c::event040(mesg_flow_node_event* flow_node, fopAc_ac_c*) { break; } + // "Bottle Contents Remove" + OS_REPORT("\x1B[44;32mビンの中身削除              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024DA78-8024DAA8 2483B8 0030+00 1/0 0/0 0/0 .text * event041__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event041(mesg_flow_node_event* flow_node, fopAc_ac_c*) { - int prm0 = getParam(flow_node->params); +int dMsgFlow_c::event041(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { + int prm0 = getParam(i_flowNode_p->params); dMsgObject_addOffering(prm0); + // "Offering" + OS_REPORT("\x1B[44;32mお布施              \x1B[m|:"); + OS_REPORT("flow:%d, prm0:%d\n", mFlow, prm0); + return 1; } /* 8024DAA8-8024DAB0 2483E8 0008+00 1/0 0/0 0/0 .text * event042__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ -int dMsgFlow_c::event042(mesg_flow_node_event*, fopAc_ac_c*) { +int dMsgFlow_c::event042(mesg_flow_node_event* i_flowNode_p, fopAc_ac_c* i_speaker_p) { return 1; } diff --git a/src/d/d_shop_system.cpp b/src/d/d_shop_system.cpp index 0c842211ad8..b90f77f7abf 100644 --- a/src/d/d_shop_system.cpp +++ b/src/d/d_shop_system.cpp @@ -1219,11 +1219,11 @@ int dShopSystem_c::seq_choose(fopAc_ac_c* actor, dMsgFlow_c* i_flow) { i_flow->doFlow(actor, NULL, 0); - int select_num = i_flow->getSelectNum(); + u16 select_num = i_flow->getSelectNum(); if (dMsgObject_c::getStatus() != 6 && dMsgObject_c::getStatus() != 8 && dMsgObject_c::getStatus() != 9 && dMsgObject_c::getStatus() != 20) { - if ((u16)select_num == 0) { + if (select_num == 0) { setSeq(SEQ_DECIDE_YES); } else { setSeq(SEQ_DECIDE_NO);