diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-06-29 13:19:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-29 22:19:09 +0200 |
| commit | 046d178003035ea87d3042a61917c2d482c68c74 (patch) | |
| tree | 4240e760d8d40201ca4ec96634da8abff211f6bb /include/JSystem/JMessage | |
| parent | cd5b02450cf278cbeb2c8bb90be1ad22518938c7 (diff) | |
work on daalink, fop actor, mDo machine, msg_scrn, + various (#201)
* work on fop actor / actor mng, daalink, d_a_obj_item
* d_a_title mostly decompiled
* daalink / d_event / JMessage / dmsg_out_font work
* msg_scrn_base / msg_scrn_boss
* some work on mDo machine, d_menu_save, d_tresure, and various
* remove asm
* progress
Diffstat (limited to 'include/JSystem/JMessage')
| -rw-r--r-- | include/JSystem/JMessage/control.h | 24 | ||||
| -rw-r--r-- | include/JSystem/JMessage/processor.h | 267 | ||||
| -rw-r--r-- | include/JSystem/JMessage/resource.h | 4 |
3 files changed, 252 insertions, 43 deletions
diff --git a/include/JSystem/JMessage/control.h b/include/JSystem/JMessage/control.h index 71d29d7268..e695c8c35d 100644 --- a/include/JSystem/JMessage/control.h +++ b/include/JSystem/JMessage/control.h @@ -2,22 +2,38 @@ #define CONTROL_H #include "dolphin/types.h" +#include "JSystem/JMessage/processor.h" +#include "JSystem/JMessage/resource.h" namespace JMessage { -struct TProcessor; - struct TControl { /* 802A7548 */ TControl(); - /* 802A758C */ ~TControl(); + /* 802A758C */ virtual ~TControl(); + /* 802A75D4 */ void reset(); /* 802A7634 */ void update(); /* 802A76BC */ void render(); /* 802A77E8 */ void setMessageCode(u16, u16); /* 802A78F4 */ void setMessageID(u32, u32, bool*); /* 802A7A20 */ void setMessageCode_inSequence_(JMessage::TProcessor const*, u16, u16); + + /* 0x04 */ TSequenceProcessor* pSequenceProcessor_; + /* 0x08 */ TRenderingProcessor* pRenderingProcessor_; + /* 0x0C */ u16 messageCode_; + /* 0x0E */ u16 field_0xe; + /* 0x10 */ TResource* pResourceCache_; + /* 0x14 */ void* pEntry_; + /* 0x18 */ u32 pMessageText_begin_; + /* 0x1C */ char* pszText_update_current_; + /* 0x20 */ u32 field_0x20; + /* 0x24 */ TProcessor::TStack_ oStack_renderingProcessor_; }; }; // namespace JMessage -struct jmessage_tControl {}; +struct jmessage_tControl : public JMessage::TControl { + /* 802299EC */ jmessage_tControl(); + + /* 80039B0C */ virtual ~jmessage_tControl(); +}; #endif /* CONTROL_H */ diff --git a/include/JSystem/JMessage/processor.h b/include/JSystem/JMessage/processor.h index 53281106f7..a4e3cbe14d 100644 --- a/include/JSystem/JMessage/processor.h +++ b/include/JSystem/JMessage/processor.h @@ -3,10 +3,36 @@ #include "SSystem/SComponent/c_xyz.h" #include "dolphin/types.h" +#include "JSystem/JUtility/JUTFont.h" namespace JMessage { +struct TResource; +struct TResourceContainer; + +struct TReference { + /* 802A7AF8 */ virtual ~TReference(); + /* 802A7B40 */ virtual bool do_word(u32) const; + + TResourceContainer* pcResource_; +}; + struct TProcessor { - /* 802A7B48 */ ~TProcessor(); + struct TStack_ { + /* 0x0 */ int upsz_; // size + /* 0x4 */ const char* stack[4]; + }; // Size: 0x14 + + struct TProcess_ { + /* 0x0 */ void* pfnProcess_CharacterEnd; + struct { + /* 0x0 */ void* pfn; + /* 0x4 */ u32 pcBase; + /* 0x8 */ u32 pOffset; + /* 0xC */ u32 uRest; + } + /* 0x4 */ rData; + }; // Size: 0x14 + /* 802A7B90 */ void reset(); /* 802A7BF8 */ void stack_pushCurrent(char const*); /* 802A7C30 */ void stack_popCurrent(); @@ -16,17 +42,7 @@ struct TProcessor { char const*, u32); /* 802A7EDC */ void on_select_end(); /* 802A7F34 */ void on_select_separate(); - /* 802A7FC0 */ void do_reset(); - /* 802A7FC4 */ void do_begin(void const*, char const*); - /* 802A7FC8 */ void do_end(); - /* 802A7FCC */ void do_character(int); - /* 802A7FD0 */ bool do_tag(u32, void const*, u32); - /* 802A7FD8 */ void do_select_begin(u32); - /* 802A7FDC */ void do_select_end(); - /* 802A7FE0 */ void do_select_separate(); /* 802A7FE4 */ void on_tag_(); - /* 802A8084 */ void do_resetStatus_(char const*); - /* 802A8088 */ bool do_setBegin_isReady_() const; /* 802A8090 */ void do_tag_(u32, void const*, u32); /* 802A81EC */ void process_character_(); /* 802A828C */ void process_onCharacterEnd_normal_(JMessage::TProcessor*); @@ -35,18 +51,36 @@ struct TProcessor { /* 802A8358 */ void process_onSelect_(JMessage::TProcessor*); /* 802A8C24 */ void on_message(u32) const; /* 802A8C44 */ void getMessageText_messageCode(u32) const; -}; -struct TReference { - /* 802A7AF8 */ ~TReference(); - /* 802A7B40 */ bool do_word(u32) const; + /* 802A7B48 */ virtual ~TProcessor(); + /* 802A7FC0 */ virtual void do_reset(); + /* 802A7FC4 */ virtual void do_begin(void const*, char const*); + /* 802A7FC8 */ virtual void do_end(); + /* 802A7FCC */ virtual void do_character(int); + /* 802A7FD0 */ virtual bool do_tag(u32, void const*, u32); + /* 802A7FD8 */ virtual void do_select_begin(u32); + /* 802A7FDC */ virtual void do_select_end(); + /* 802A7FE0 */ virtual void do_select_separate(); + /* 802A8084 */ virtual void do_resetStatus_(char const*); + /* 802A8088 */ virtual bool do_setBegin_isReady_() const; + + /* 0x04 */ TReference* pReference_; + /* 0x08 */ TResource* pResourceCache_; + /* 0x0C */ const char* pszCurrent_; + /* 0x10 */ TStack_ oStack_; + /* 0x24 */ TProcess_ oProcess_; }; struct TControl; -struct TSequenceProcessor { +struct TSequenceProcessor : public TProcessor { + enum SeqStatus { + STATUS_NORMAL = 2, + STATUS_JUMP, + STATUS_BRANCH, + }; + /* 802A8374 */ TSequenceProcessor(JMessage::TReference const*, JMessage::TControl*); - /* 802A83B8 */ ~TSequenceProcessor(); /* 802A8418 */ void process(char const*); /* 802A85A4 */ void on_isReady(); /* 802A85D0 */ void on_jump_register(void const* (*)(JMessage::TSequenceProcessor const*), u32); @@ -57,54 +91,211 @@ struct TSequenceProcessor { /* 802A86A0 */ void on_branch_query(u32); /* 802A86D4 */ void on_branch_queryResult(); /* 802A8700 */ void on_branch(void const*, char const*); - /* 802A8780 */ bool do_isReady(); - /* 802A8788 */ bool do_jump_isReady(); - /* 802A8790 */ void do_jump(void const*, char const*); - /* 802A8794 */ void do_branch_query(u32); - /* 802A8798 */ s32 do_branch_queryResult(); - /* 802A87A0 */ void do_branch(void const*, char const*); - /* 802A87A4 */ void do_resetStatus_(char const*); - /* 802A87C0 */ void do_setBegin_isReady_() const; - /* 802A87D0 */ void do_begin_(void const*, char const*); - /* 802A87D4 */ void do_end_(); - /* 802A87E0 */ void do_tag_(u32, void const*, u32); /* 802A892C */ void process_setMessageIndex_reserved_(u16); /* 802A8944 */ void process_setMessageCode_(JMessage::TSequenceProcessor const*, u16, u16); /* 802A89B8 */ void process_onJump_limited_(JMessage::TSequenceProcessor const*); /* 802A89EC */ void process_onJump_(JMessage::TSequenceProcessor const*); /* 802A8A18 */ void process_onBranch_limited_(JMessage::TSequenceProcessor const*, u32); /* 802A8A50 */ void process_onBranch_(JMessage::TSequenceProcessor const*, u32); + + /* 802A83B8 */ virtual ~TSequenceProcessor(); + /* 802A87A4 */ virtual void do_resetStatus_(char const*); + /* 802A87C0 */ virtual void do_setBegin_isReady_() const; + /* 802A87D0 */ virtual void do_begin_(void const*, char const*); + /* 802A87D4 */ virtual void do_end_(); + /* 802A87E0 */ virtual void do_tag_(u32, void const*, u32); + /* 802A8780 */ virtual bool do_isReady(); + /* 802A8788 */ virtual bool do_jump_isReady(); + /* 802A8790 */ virtual void do_jump(void const*, char const*); + /* 802A8794 */ virtual void do_branch_query(u32); + /* 802A8798 */ virtual s32 do_branch_queryResult(); + /* 802A87A0 */ virtual void do_branch(void const*, char const*); + + /* 0x38 */ TControl* pControl_; + /* 0x3C */ SeqStatus eStatus_; + /* 0x40 */ TProcess_ oProcess2_; }; -struct TRenderingProcessor { +struct TRenderingProcessor : public TProcessor { /* 802A8A84 */ TRenderingProcessor(JMessage::TReference const*); - /* 802A8AC0 */ ~TRenderingProcessor(); /* 802A8B20 */ void process(char const*); - /* 802A8BA4 */ void do_begin_(void const*, char const*); - /* 802A8BA8 */ void do_end_(); - /* 802A8BAC */ void do_tag_(u32, void const*, u32); + + /* 802A8AC0 */ virtual ~TRenderingProcessor(); + /* 802A8BA4 */ virtual void do_begin_(void const*, char const*); + /* 802A8BA8 */ virtual void do_end_(); + /* 802A8BAC */ virtual void do_tag_(u32, void const*, u32); }; }; // namespace JMessage -struct jmessage_tReference { +struct STControl; +struct dMsgObject_c; +struct jmessage_tReference : public JMessage::TReference { /* 80228B04 */ jmessage_tReference(); + /* 80228D28 */ void calcDistance(); + /* 80228DE0 */ void getLineMax(); + /* 80228E6C */ void isKanban(); + /* 80228EA0 */ void isPlaceName(); + /* 80228ED4 */ void isBossName(); + /* 80228F08 */ void isSaveSeq(); + /* 80228F3C */ void isBook(); + /* 80228F70 */ void isStaffRoll(); + /* 80228FA4 */ void isHowl(); + /* 80228FD8 */ void isMidona(); + /* 8022900C */ void resetReference(); /* 80229034 */ void pageSend(); /* 80229168 */ void selectMessage(); /* 802294A8 */ void inputNumber(); + /* 80229730 */ void getWord(int); + /* 80229744 */ void resetWord(); + /* 80229768 */ void setCharactor(u16); + /* 80229788 */ void addCharactor(u16); + /* 802297B0 */ void resetCharactor(); /* 802297E4 */ void shiftCharCountBuffer(); /* 80229810 */ void resetCharCountBuffer(); + /* 80229848 */ void allsetCharCountBuffer(); + /* 8022986C */ void isCharSend(); + /* 802298DC */ void isLightSend(); /* 8022994C */ void isLightEnd(); - /* 80238C78 */ void setActorPos(cXyz); -}; + /* 802299AC */ void decideOutFontRupeeColor(int); + /* 80232A20 */ void getActorPos(); + + /* 80238C78 */ void setActorPos(cXyz pos) { + mActorPos = pos; + } + + /* 80228CB4 */ virtual ~jmessage_tReference(); + +private: + /* 0x0008 */ STControl* mpStick; + /* 0x000C */ u16 field_0xc[0x200]; + /* 0x040C */ s16 field_0x40c; + /* 0x040E */ s16 field_0x40e; + /* 0x0410 */ s16 mCountBackUp; + /* 0x0414 */ cXyz mActorPos; + /* 0x0420 */ f32 mFontSizeX; + /* 0x0424 */ f32 mFontSizeY; + /* 0x0428 */ f32 mRubySize; + /* 0x042C */ f32 mTBoxWidth; + /* 0x0430 */ f32 mTBoxHeight; + /* 0x0434 */ f32 mLineSpace; + /* 0x0438 */ f32 mCharSpace; + /* 0x043C */ f32 mRubyCharSpace; + /* 0x0440 */ f32 mSelFontSize; + /* 0x0444 */ f32 mSelRubySize; + /* 0x0448 */ f32 mSelTBoxWidth; + /* 0x044C */ f32 mSelCharSpace; + /* 0x0450 */ f32 mSelRubyCharSpace; + /* 0x0454 */ f32 mDistanceScale; + /* 0x0458 */ f32 mAddCharAllAlphaRate; + /* 0x045C */ f32 mCharAllAlphaRate; + /* 0x0460 */ f32 mAddCharAlpha; + /* 0x0464 */ f32 mCharAlpha; + /* 0x0468 */ f32 mStrLength[40]; + /* 0x0508 */ f32 mSpaceLength[40]; + /* 0x05A8 */ f32 mSelLength[3]; + /* 0x05B4 */ u32 mDemoFrame; + /* 0x05B8 */ u32 mRevoMessageID; + /* 0x05BC */ u16* mpStatus; + /* 0x05C0 */ dMsgObject_c* mpObjectPtr; + /* 0x05C4 */ char* mpSelMsgPtr; + /* 0x05C8 */ JUTFont* mpFont; + /* 0x05CC */ s16 mStartLineCount; + /* 0x05CE */ s16 mEndLineCount; + /* 0x05D0 */ u16 mLineCount; + /* 0x05D2 */ s16 field_0x5d2; + /* 0x05D4 */ s16 mPageEndCount; + /* 0x05D6 */ s16 mSendTimer; + /* 0x05D8 */ s16 mCharCnt; + /* 0x05DA */ s16 mPageNum; + /* 0x05DC */ u8 mNowLightCount; + /* 0x05DD */ u8 mDrawLightCount; + /* 0x05DE */ u16 mMsgID; + /* 0x05E0 */ u16 mLineScale[40]; + /* 0x0630 */ u16 mTopTagScale; + /* 0x0632 */ u16 mNowTagScale; + /* 0x0634 */ char mWord[10][100]; + /* 0x0A1C */ char mTextPtr[0x200]; + /* 0x0C1C */ char mTextSPtr[0x200]; + /* 0x0E1C */ char mRuby[0x200]; + /* 0x101C */ u8 mSelText[3][50]; + /* 0x10B2 */ u8 mSelRuby[3][80]; + /* 0x11A2 */ s8 mPageLine[40]; + /* 0x11CA */ s8 mPageLineMax[40]; + /* 0x11F2 */ u8 mPageType[40]; + /* 0x121A */ u8 mLineArrange[40]; + /* 0x1242 */ u8 mSelectNum; + /* 0x1243 */ u8 mSelectType; + /* 0x1244 */ u8 mSelectPos; + /* 0x1245 */ u8 mFukiPosType; + /* 0x1246 */ u8 mFukiKind; + /* 0x1247 */ u8 mForm; + /* 0x1248 */ u8 field_0x1248; + /* 0x1249 */ u8 mNowColorType; + /* 0x124A */ u8 mTopColorType; + /* 0x124B */ bool mButtonTagStopFlag; + /* 0x124C */ u8 mSendFlag; + /* 0x124D */ u8 mStopFlag; + /* 0x124E */ u8 mSelectRubyFlag; + /* 0x124F */ u8 mInputFigure; + /* 0x1250 */ u8 mOutFontRupeeColor; + /* 0x1251 */ s8 mNowWordCount; + /* 0x1252 */ s8 mTopWordCount; + /* 0x1253 */ u8 mCharCountBuffer[31]; + /* 0x1272 */ bool mLightBatchFlag; + /* 0x1273 */ bool mBatchFlag; + /* 0x1274 */ bool mSelectSetCancelFlag; + /* 0x1275 */ bool mBombNameUseFlag; + /* 0x1276 */ bool mBatchColorFlag; +}; // Size: 0x1278 struct jmessage_tControl; -struct jmessage_tSequenceProcessor { +struct jmessage_tSequenceProcessor : public JMessage::TSequenceProcessor { /* 8022B558 */ jmessage_tSequenceProcessor(jmessage_tReference const*, jmessage_tControl*); + /* 8022C904 */ void do_name1(); + /* 8022C908 */ void do_space(u32); + /* 8022CA24 */ void do_rubyset(void const*, u32); + /* 8022CAAC */ void push_word(); + /* 8022CB10 */ void messageSePlay(u8, u8, cXyz*); + /* 8022CBE8 */ void calcStringLength(); + + /* 8023299C */ virtual ~jmessage_tSequenceProcessor(); + /* 8022B654 */ virtual void do_reset(); + /* 8022B658 */ virtual void do_begin(void const*, char const*); + /* 8022BA3C */ virtual void do_end(); + /* 8022BFE0 */ virtual void do_character(int); + /* 8022C1A0 */ virtual void do_tag(u32, void const*, u32); + /* 8022BB7C */ virtual void do_isReady(); + /* 8022C8FC */ virtual bool do_jump_isReady(); + /* 8022CBE4 */ virtual void do_jump(void const*, char const*); }; -struct jmessage_tRenderingProcessor { +struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { /* 8022CCB0 */ jmessage_tRenderingProcessor(jmessage_tReference const*); /* 8022E12C */ void resetRendering(); + /* 8022E17C */ void do_widthcenter(); + /* 8022E260 */ void do_selwidthcenter(int); + /* 8022E318 */ void do_heightcenter(); + /* 8022E7CC */ void do_color(u8); + /* 8022E860 */ void do_scale(f32); + /* 8022E960 */ void do_linedown(s16); + /* 8022E9C0 */ void do_transY(s16, bool); + /* 8022EAE4 */ void do_outfont(u8, u32); + /* 8022ED10 */ void do_arrow2(); + /* 8022EECC */ void getLineLength(int); + /* 8022EF00 */ void do_strcat(char*, bool, bool, bool); + /* 8022F148 */ void do_rubyset(void const*, u32); + /* 8022F384 */ void do_rubystrcat(char*, char*, f32, f32); + /* 8022F53C */ void do_name1(); + /* 8022F540 */ void do_numset(s16); + /* 8022F734 */ void push_word(); + /* 8022F784 */ void getCharInfo(f32, f32, f32, f32, f32); + + /* 8023293C */ virtual ~jmessage_tRenderingProcessor(); + /* 8022CDC8 */ virtual void do_reset(); + /* 8022CDCC */ virtual void do_begin(void const*, char const*); + /* 8022CFD8 */ virtual void do_end(); + /* 8022D0A0 */ virtual void do_character(int); + /* 8022D74C */ virtual void do_tag(u32, void const*, u32); }; #endif /* PROCESSOR_H */ diff --git a/include/JSystem/JMessage/resource.h b/include/JSystem/JMessage/resource.h index b1fc2b3a60..891075a14d 100644 --- a/include/JSystem/JMessage/resource.h +++ b/include/JSystem/JMessage/resource.h @@ -2,9 +2,11 @@ #define RESOURCE_H #include "dolphin/types.h" +#include "JSystem/JGadget/linklist.h" +#include "JSystem/JStudio/JStudio/fvb-data.h" namespace JMessage { -struct TResource { +struct TResource : public JGadget::TLinkListNode { /* 802A8CDC */ void toMessageIndex_messageID(u32, u32, bool*) const; }; |
