diff --git a/configure.py b/configure.py index 28e355eed..28d40cf84 100644 --- a/configure.py +++ b/configure.py @@ -643,13 +643,13 @@ config.libs = [ "JStudio_JMessage", [ Object(Matching, "JSystem/JStudio/JStudio_JMessage/control.cpp"), - Object(NonMatching, "JSystem/JStudio/JStudio_JMessage/object-message.cpp"), + Object(Matching, "JSystem/JStudio/JStudio_JMessage/object-message.cpp"), ], ), JSystemLib( "JStudioToolLibrary", [ - Object(NonMatching, "JSystem/JStudio/JStudioToolLibrary/console.cpp"), + Object(Matching, "JSystem/JStudio/JStudioToolLibrary/console.cpp"), ], ), JSystemLib( @@ -726,7 +726,7 @@ config.libs = [ JSystemLib( "JMessage", [ - Object(NonMatching, "JSystem/JMessage/data.cpp"), + Object(Matching, "JSystem/JMessage/data.cpp"), Object(NonMatching, "JSystem/JMessage/control.cpp"), Object(NonMatching, "JSystem/JMessage/processor.cpp"), Object(NonMatching, "JSystem/JMessage/resource.cpp"), diff --git a/include/JSystem/JMessage/control.h b/include/JSystem/JMessage/control.h index e88f37f45..520b7439e 100644 --- a/include/JSystem/JMessage/control.h +++ b/include/JSystem/JMessage/control.h @@ -10,34 +10,47 @@ struct TControl { virtual ~TControl(); void reset(); - int update(); + bool update(); void render(); - int setMessageCode(u16, u16); - int setMessageID(u32, u32, bool*); + void setMessageCode(u32 param_1) { + setMessageCode(param_1 >> 0x10, param_1); + } + void setMessageCode(u16 message_code, u16 message_index) { + mMessageCode = message_code; + mMessageIndex = message_index; + setMessageCode_flush_(); + } + bool setMessageCode_flush_(); - bool isReady_update_() const { return pMessageText_begin_ != 0 && pSequenceProcessor_ != NULL; } - bool isReady_render_() const { return field_0x20 != 0 && pRenderingProcessor_ != NULL; } + bool isReady_update_() const { return mResourceCache != NULL && mMessageBegin != 0 && mBaseProcSeq != NULL; } + bool isReady_render_() const { return mResourceCache != NULL && _20 != NULL && mBaseProcRender != NULL; } TProcessor* getProcessor() const { - return pSequenceProcessor_ != NULL ? (TProcessor*)pSequenceProcessor_ : - (TProcessor*)pRenderingProcessor_; + return mBaseProcSeq != NULL ? (TProcessor*)mBaseProcSeq : (TProcessor*)mBaseProcRender; } - const char* getMessageText_begin() const { return pMessageText_begin_; } - void* getMessageEntry() const { return pEntry_; } - void setSequenceProcessor(TSequenceProcessor* processor) { pSequenceProcessor_ = processor; } - void setRenderingProcessor(TRenderingProcessor* processor) { pRenderingProcessor_ = processor; } + const char* getMessageText_begin() const { return mMessageBegin; } + void* getMessageEntry() const { return mEntry; } + void setSequenceProcessor(TSequenceProcessor* processor) { mBaseProcSeq = processor; } + void setRenderingProcessor(TRenderingProcessor* processor) { mBaseProcRender = processor; } - /* 0x04 */ TSequenceProcessor* pSequenceProcessor_; - /* 0x08 */ TRenderingProcessor* pRenderingProcessor_; - /* 0x0C */ u16 messageCode_; - /* 0x0E */ u16 field_0xe; - /* 0x10 */ const TResource* pResourceCache_; - /* 0x14 */ void* pEntry_; - /* 0x18 */ const char* pMessageText_begin_; - /* 0x1C */ const char* pszText_update_current_; - /* 0x20 */ const char* field_0x20; - /* 0x24 */ TProcessor::TStack_ oStack_renderingProcessor_; + void getResource_groupID(u16) const; + void getMessageData(u16, u16) const; + void do_word(u32); + void reset_(); + + /* 0x04 */ void* _04; + /* 0x08 */ void* _08; + /* 0x0C */ TSequenceProcessor* mBaseProcSeq; + /* 0x10 */ TRenderingProcessor* mBaseProcRender; + /* 0x14 */ u16 mMessageCode; + /* 0x16 */ u16 mMessageIndex; + /* 0x18 */ const TResource* mResourceCache; + /* 0x1C */ const char* mMessageBegin; + /* 0x20 */ const char* _20; + /* 0x24 */ const char* mCurrentText; + /* 0x28 */ void* mEntry; + /* 0x2C */ TProcessor::TStack_ mRenderStack; }; }; // namespace JMessage diff --git a/include/JSystem/JMessage/data.h b/include/JSystem/JMessage/data.h new file mode 100644 index 000000000..04d2634e7 --- /dev/null +++ b/include/JSystem/JMessage/data.h @@ -0,0 +1,10 @@ +#ifndef JMESSAGE_DATA_H +#define JMESSAGE_DATA_H + +namespace JMessage { +namespace data { +extern const int ga4cSignature; +} // namespace data +} // namespace JMessage + +#endif /* JMESSAGE_DATA_H */ diff --git a/include/JSystem/JMessage/processor.h b/include/JSystem/JMessage/processor.h index 0c4e78c9d..f32a93511 100644 --- a/include/JSystem/JMessage/processor.h +++ b/include/JSystem/JMessage/processor.h @@ -12,7 +12,7 @@ struct TResource; struct TProcessor { typedef bool (*OnCharacterEndCallBack)(TProcessor*); - typedef void (*OnSelectBeginCallBack)(TProcessor*); + typedef const char* (*OnSelectBeginCallBack)(TProcessor*); typedef const char* (*ProcessOnSelectCallBack)(TProcessor*); struct TStack_ { @@ -43,7 +43,7 @@ struct TProcessor { inline void pop() { mSize--; } u32 mSize; // _00 - const char* mStack[4]; // _04 + const char* mStack[3]; // _04 }; struct TProcess { @@ -63,20 +63,18 @@ struct TProcessor { TProcessData mData; // _04 }; - virtual ~TProcessor(); // _08 - virtual void do_reset(); // _0C - virtual void do_character(int); // _10 - virtual bool do_tag(u32, const void*, u32); // _14 - virtual bool do_systemTagCode(u16, const void*, u32); // _18 - virtual void do_select_begin(u32); // _1C - virtual void do_select_end(); // _20 - virtual void do_select_separate(); // _24 - virtual void do_reset_(const char*) = 0; // _28 - virtual bool do_setBegin_isReady_() const; // _2C - virtual void do_begin_(const void*, const char*) = 0; // _30 - virtual void do_end_() = 0; // _34 - virtual bool do_tag_(u32, const void*, u32) = 0; // _38 - virtual void do_systemTagCode_(u16, const void*, u32) = 0; // _3C + ~TProcessor(); + + virtual void do_character(int); + virtual bool do_tag(u32, const void*, u32); + virtual bool do_systemTagCode(u16, const void*, u32); + virtual void do_select_begin(u32); + virtual void do_select_end(); + virtual void do_select_separate(); + virtual void do_begin_(const void*, const char*) = 0; + virtual void do_end_() = 0; + virtual bool do_tag_(u32, const void*, u32) = 0; + virtual void do_systemTagCode_(u16, const void*, u32) = 0; void setBegin_messageCode(u16, u16); void setBegin_messageID(u32, u32, bool*); @@ -92,9 +90,12 @@ struct TProcessor { static const char* process_onSelect_(TProcessor*); void reset_(const char*); + void process_select_limited_(TProcessor*); + void process_select_(TProcessor*); + int setBegin_messageEntryText(const TResource* resource, const void* entry, const char* param_2) { - mResourceCache = resource; + // mResourceCache = resource; reset_(param_2); do_begin_(entry, param_2); return TRUE; @@ -107,7 +108,7 @@ struct TProcessor { // Unused/inlined: void pushCurrent(const char*); const char* popCurrent(); - void on_select_begin(OnSelectBeginCallBack* p1, const char* p2, const void* p3, const char* p4, u32 p5); + void on_select_begin(OnSelectBeginCallBack, const void*, const char*, u32); void on_select_end(); void on_select_separate(); void on_tag_(); @@ -117,16 +118,17 @@ struct TProcessor { const TReference* mReference; // _04 const TResource* mResourceCache; // _08 const char* mCurrent; // _0C - TStack_ mStack; // _10 + TStack_ mStack; // _10 TProcess mProcess; // _24 }; struct TSequenceProcessor : public TProcessor { - typedef void OnJumpRegisterCallBack(TSequenceProcessor*); - typedef void OnBranchRegisterCallBack(TSequenceProcessor*, u32); + typedef bool OnJumpRegisterCallBack(TSequenceProcessor*); + typedef bool OnBranchRegisterCallBack(TSequenceProcessor*, u32); typedef void* ProcessOnJumpCallBack(const TSequenceProcessor*); TSequenceProcessor(const TReference*, TControl*); + TSequenceProcessor(TControl*); virtual ~TSequenceProcessor(); // _08 virtual void do_reset_(const char*); // _28 @@ -155,15 +157,27 @@ struct TSequenceProcessor : public TProcessor { void process_onBranch_limited_(const TSequenceProcessor*, u32); void process_onBranch_(const TSequenceProcessor*, u32); + void reset_(const char*); + void process_jump_limited_(TSequenceProcessor*); + void process_jump_(TSequenceProcessor*); + void process_branch_limited_(TSequenceProcessor*, u32); + void process_branch_(TSequenceProcessor*, u32); + // Unused/inlined: const char* toString_status(int); int toValue_status(const char*); - void on_jump_register(OnJumpRegisterCallBack*, const void*, u32); - void on_branch_register(OnBranchRegisterCallBack*, const void*, const void*, u32); + void on_jump_register(OnJumpRegisterCallBack*, u32); + void on_branch_register(OnBranchRegisterCallBack*, const void*, u32); void on_branch_query(u16); void process_setMessageIndex_reserved_(u16); void process_setMessageCode_(const TSequenceProcessor*, u16, u16); + void reset() {} + void setBegin(const void* param_1, const char* param_2) { + reset_(param_2); + do_begin_(param_1, param_2); + } + // _00 = VTBL // _00-_38 = TProcessor TControl* _38; // _38 @@ -175,16 +189,16 @@ struct TSequenceProcessor : public TProcessor { struct TRenderingProcessor : public TProcessor { TRenderingProcessor(const TReference*); + TRenderingProcessor(TControl*); - virtual ~TRenderingProcessor(); // _08 - virtual void do_reset_(const char*); // _28 - virtual void do_begin_(const void*, const char*); // _30 - virtual void do_end_(); // _34 - virtual bool do_tag_(u32, const void*, u32); // _38 - virtual void do_systemTagCode_(u16, const void*, u32); // _3C - virtual void do_begin(const void*, const char*); // _40 - virtual void do_end(); // _44 - + virtual void do_begin_(const void*, const char*); + virtual void do_end_(); + virtual bool do_tag_(u32, const void*, u32); + virtual void do_systemTagCode_(u16, const void*, u32); + virtual ~TRenderingProcessor(); + virtual void do_begin(const void*, const char*); + virtual void do_end(); + void process(const char*); // _00 = VTBL diff --git a/include/JSystem/JStudio/JStudioToolLibrary/console.h b/include/JSystem/JStudio/JStudioToolLibrary/console.h new file mode 100644 index 000000000..f8febe3e3 --- /dev/null +++ b/include/JSystem/JStudio/JStudioToolLibrary/console.h @@ -0,0 +1,6 @@ +#ifndef JSTUDIO_TOOL_LIBRARY_CONSOLE_H +#define JSTUDIO_TOOL_LIBRARY_CONSOLE_H + +#include "JSystem/JSupport/JSUMemoryStream.h" + +#endif /* JSTUDIO_TOOL_LIBRARY_CONSOLE_H */ diff --git a/src/JSystem/JMessage/control.cpp b/src/JSystem/JMessage/control.cpp index 05ad4f6f2..b64bc0c8b 100644 --- a/src/JSystem/JMessage/control.cpp +++ b/src/JSystem/JMessage/control.cpp @@ -3,56 +3,96 @@ // Translation Unit: control.cpp // -#include "control.h" +#include "JSystem/JMessage/control.h" #include "dolphin/types.h" /* 8029E930-8029E970 .text __ct__Q28JMessage8TControlFv */ -JMessage::TControl::TControl() { +JMessage::TControl::TControl() + : _04(NULL) + , _08(NULL) + , mBaseProcSeq(NULL) + , mBaseProcRender(NULL) + , mMessageCode(0) + , mMessageIndex(0) + , mResourceCache(NULL) + , mEntry(NULL) + , mMessageBegin(NULL) + , mCurrentText(NULL) +{ /* Nonmatching */ } /* 8029E970-8029E9B8 .text __dt__Q28JMessage8TControlFv */ -JMessage::TControl::~TControl() { - /* Nonmatching */ -} +JMessage::TControl::~TControl() {} /* 8029E9B8-8029EA34 .text getResource_groupID__Q28JMessage8TControlCFUs */ -void JMessage::TControl::getResource_groupID(unsigned short) const { +void JMessage::TControl::getResource_groupID(u16) const { /* Nonmatching */ } /* 8029EA34-8029EAC8 .text getMessageData__Q28JMessage8TControlCFUsUs */ -void JMessage::TControl::getMessageData(unsigned short, unsigned short) const { +void JMessage::TControl::getMessageData(u16, u16) const { /* Nonmatching */ } /* 8029EAC8-8029EB1C .text reset__Q28JMessage8TControlFv */ void JMessage::TControl::reset() { - /* Nonmatching */ + reset_(); + + if (mBaseProcSeq) { + mBaseProcSeq->reset_(NULL); + } + + if (mBaseProcRender) { + mBaseProcRender->reset_(NULL); + } } /* 8029EB1C-8029EC00 .text update__Q28JMessage8TControlFv */ -void JMessage::TControl::update() { +bool JMessage::TControl::update() { /* Nonmatching */ + if (!isReady_update_()) { + return false; + } + + if (mCurrentText == NULL) { + mCurrentText = mMessageBegin; + mBaseProcSeq->setBegin(mResourceCache, mMessageBegin); + } + + mCurrentText = mBaseProcSeq->process(NULL); + + if (!mCurrentText) { + mMessageBegin = NULL; + return false; + } + return true; } /* 8029EC00-8029ECCC .text render__Q28JMessage8TControlFv */ void JMessage::TControl::render() { /* Nonmatching */ + if (!isReady_render_()) { + return; + } + + mBaseProcRender->setBegin_messageEntryText(mResourceCache, mEntry, _20); + mBaseProcRender->mCurrent = _20; + mBaseProcRender->mStack = mRenderStack; + mBaseProcRender->process(mCurrentText); } /* 8029ECCC-8029ECD4 .text do_word__Q28JMessage8TControlFUl */ -void JMessage::TControl::do_word(unsigned long) { +void JMessage::TControl::do_word(u32) { /* Nonmatching */ } /* 8029ECD4-8029ED88 .text setMessageCode_flush___Q28JMessage8TControlFv */ -void setMessageCode_flush___Q28JMessage8TControlFv { +bool JMessage::TControl::setMessageCode_flush_() { /* Nonmatching */ } /* 8029ED88-8029EDA4 .text reset___Q28JMessage8TControlFv */ -void reset___Q28JMessage8TControlFv { +void JMessage::TControl::reset_() { /* Nonmatching */ } - diff --git a/src/JSystem/JMessage/data.cpp b/src/JSystem/JMessage/data.cpp index 62c21a3d4..cfef86d62 100644 --- a/src/JSystem/JMessage/data.cpp +++ b/src/JSystem/JMessage/data.cpp @@ -3,6 +3,11 @@ // Translation Unit: data.cpp // -#include "data.h" +#include "JSystem/JMessage/data.h" #include "dolphin/types.h" +namespace JMessage { +namespace data { +const int ga4cSignature = 'MESG'; +} // namespace data +} // namespace JMessage diff --git a/src/JSystem/JMessage/processor.cpp b/src/JSystem/JMessage/processor.cpp index 0a9a1b552..beffcf708 100644 --- a/src/JSystem/JMessage/processor.cpp +++ b/src/JSystem/JMessage/processor.cpp @@ -6,296 +6,317 @@ #include "JSystem/JMessage/processor.h" #include "dolphin/types.h" +namespace JMessage { +namespace { +/* 8029EDA4-8029EDCC .text process_setMessageIndex_reserved___Q28JMessage23@unnamed@processor_cpp@FUs */ +void process_setMessageIndex_reserved_(u16) { + /* Nonmatching */ +} + +/* 8029EDCC-8029EE18 .text process_setMessage_index___Q28JMessage23@unnamed@processor_cpp@FPQ28JMessage8TControlUs */ +void process_setMessage_index_(TControl*, u16) { + /* Nonmatching */ +} + +/* 8029EE18-8029EE6C .text process_setMessage_code___Q28JMessage23@unnamed@processor_cpp@FPQ28JMessage8TControlUl */ +void process_setMessage_code_(TControl*, u32) { + /* Nonmatching */ +} + +}; // namespace /* 8029EE6C-8029EEA4 .text pushCurrent__Q28JMessage10TProcessorFPCc */ -void JMessage::TProcessor::pushCurrent(const char*) { +void TProcessor::pushCurrent(const char*) { /* Nonmatching */ } /* 8029EEA4-8029EEC8 .text popCurrent__Q28JMessage10TProcessorFv */ -void JMessage::TProcessor::popCurrent() { +const char* TProcessor::popCurrent() { /* Nonmatching */ } /* 8029EEC8-8029EF54 .text on_select_begin__Q28JMessage10TProcessorFPFPQ28JMessage10TProcessor_PCcPCvPCcUl */ -void JMessage::TProcessor::on_select_begin(const char* (*)(JMessage::TProcessor*), const void*, const char*, unsigned long) { - /* Nonmatching */ +void TProcessor::on_select_begin(OnSelectBeginCallBack, const void*, const char*, u32) { /* Nonmatching */ } /* 8029EF54-8029EFA0 .text on_select_end__Q28JMessage10TProcessorFv */ -void JMessage::TProcessor::on_select_end() { +void TProcessor::on_select_end() { /* Nonmatching */ } /* 8029EFA0-8029EFFC .text on_select_separate__Q28JMessage10TProcessorFv */ -void JMessage::TProcessor::on_select_separate() { +void TProcessor::on_select_separate() { /* Nonmatching */ } /* 8029EFFC-8029F000 .text do_character__Q28JMessage10TProcessorFi */ -void JMessage::TProcessor::do_character(int) { - /* Nonmatching */ +void TProcessor::do_character(int) { } /* 8029F000-8029F008 .text do_tag__Q28JMessage10TProcessorFUlPCvUl */ -void JMessage::TProcessor::do_tag(unsigned long, const void*, unsigned long) { - /* Nonmatching */ +bool TProcessor::do_tag(u32, const void*, u32) { + return false; } /* 8029F008-8029F010 .text do_systemTagCode__Q28JMessage10TProcessorFUsPCvUl */ -void JMessage::TProcessor::do_systemTagCode(unsigned short, const void*, unsigned long) { - /* Nonmatching */ +bool TProcessor::do_systemTagCode(u16, const void*, u32) { + return false; } /* 8029F010-8029F014 .text do_select_begin__Q28JMessage10TProcessorFUl */ -void JMessage::TProcessor::do_select_begin(unsigned long) { - /* Nonmatching */ +void TProcessor::do_select_begin(u32) { } /* 8029F014-8029F018 .text do_select_end__Q28JMessage10TProcessorFv */ -void JMessage::TProcessor::do_select_end() { - /* Nonmatching */ +void TProcessor::do_select_end() { } /* 8029F018-8029F01C .text do_select_separate__Q28JMessage10TProcessorFv */ -void JMessage::TProcessor::do_select_separate() { - /* Nonmatching */ +void TProcessor::do_select_separate() { } /* 8029F01C-8029F064 .text __dt__Q28JMessage10TProcessorFv */ -JMessage::TProcessor::~TProcessor() { - /* Nonmatching */ +TProcessor::~TProcessor() { } /* 8029F064-8029F080 .text reset___Q28JMessage10TProcessorFPCc */ -void reset___Q28JMessage10TProcessorFPCc { +void TProcessor::reset_(const char*) { /* Nonmatching */ } /* 8029F080-8029F120 .text on_tag___Q28JMessage10TProcessorFv */ -void on_tag___Q28JMessage10TProcessorFv { +void TProcessor::on_tag_() { /* Nonmatching */ } /* 8029F120-8029F248 .text do_tag___Q28JMessage10TProcessorFUlPCvUl */ -void do_tag___Q28JMessage10TProcessorFUlPCvUl { +bool TProcessor::do_tag_(u32, const void*, u32) { /* Nonmatching */ } /* 8029F248-8029F2A0 .text do_systemTagCode___Q28JMessage10TProcessorFUsPCvUl */ -void do_systemTagCode___Q28JMessage10TProcessorFUsPCvUl { +void TProcessor::do_systemTagCode_(u16, const void*, u32) { /* Nonmatching */ } /* 8029F2A0-8029F37C .text process_character___Q28JMessage10TProcessorFv */ -void process_character___Q28JMessage10TProcessorFv { +void TProcessor::process_character_() { /* Nonmatching */ } /* 8029F37C-8029F3C4 .text process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ -void process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor { +bool TProcessor::process_onCharacterEnd_normal_(TProcessor*) { /* Nonmatching */ } /* 8029F3C4-8029F40C .text process_onCharacterEnd_select___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ -void process_onCharacterEnd_select___Q28JMessage10TProcessorFPQ28JMessage10TProcessor { +bool TProcessor::process_onCharacterEnd_select_(TProcessor*) { /* Nonmatching */ } /* 8029F40C-8029F428 .text process_select_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ -void process_select_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor { +void TProcessor::process_select_limited_(TProcessor*) { /* Nonmatching */ } /* 8029F428-8029F444 .text process_select___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ -void process_select___Q28JMessage10TProcessorFPQ28JMessage10TProcessor { +void TProcessor::process_select_(TProcessor*) { /* Nonmatching */ } /* 8029F444-8029F480 .text __ct__Q28JMessage18TSequenceProcessorFPQ28JMessage8TControl */ -JMessage::TSequenceProcessor::TSequenceProcessor(JMessage::TControl*) { +TSequenceProcessor::TSequenceProcessor(TControl*) { /* Nonmatching */ } /* 8029F480-8029F4E0 .text __dt__Q28JMessage18TSequenceProcessorFv */ -JMessage::TSequenceProcessor::~TSequenceProcessor() { - /* Nonmatching */ +TSequenceProcessor::~TSequenceProcessor() { } /* 8029F4E0-8029F658 .text process__Q28JMessage18TSequenceProcessorFPCc */ -void JMessage::TSequenceProcessor::process(const char*) { +char* TSequenceProcessor::process(const char*) { /* Nonmatching */ } /* 8029F658-8029F684 .text on_isReady__Q28JMessage18TSequenceProcessorFv */ -void JMessage::TSequenceProcessor::on_isReady() { +bool TSequenceProcessor::on_isReady() { /* Nonmatching */ } /* 8029F684-8029F698 .text on_jump_register__Q28JMessage18TSequenceProcessorFPFPQ28JMessage18TSequenceProcessor_bUl */ -void JMessage::TSequenceProcessor::on_jump_register(bool (*)(JMessage::TSequenceProcessor*), unsigned long) { +void TSequenceProcessor::on_jump_register(OnJumpRegisterCallBack*, u32) { /* Nonmatching */ } /* 8029F698-8029F6C4 .text on_jump_isReady__Q28JMessage18TSequenceProcessorFv */ -void JMessage::TSequenceProcessor::on_jump_isReady() { +void TSequenceProcessor::on_jump_isReady() { /* Nonmatching */ } /* 8029F6C4-8029F720 .text on_jump__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::on_jump(const void*, const char*) { +void TSequenceProcessor::on_jump(const void*, const char*) { /* Nonmatching */ } /* 8029F720-8029F730 .text on_branch_register__Q28JMessage18TSequenceProcessorFPFPQ28JMessage18TSequenceProcessorUl_bPCvUl */ -void JMessage::TSequenceProcessor::on_branch_register(bool (*)(JMessage::TSequenceProcessor*, unsigned long), const void*, unsigned long) { +void TSequenceProcessor::on_branch_register(OnBranchRegisterCallBack*, const void*, u32) { /* Nonmatching */ } /* 8029F730-8029F764 .text on_branch_query__Q28JMessage18TSequenceProcessorFUs */ -void JMessage::TSequenceProcessor::on_branch_query(unsigned short) { +void TSequenceProcessor::on_branch_query(u16) { /* Nonmatching */ } /* 8029F764-8029F790 .text on_branch_queryResult__Q28JMessage18TSequenceProcessorFv */ -void JMessage::TSequenceProcessor::on_branch_queryResult() { +void TSequenceProcessor::on_branch_queryResult() { /* Nonmatching */ } /* 8029F790-8029F7EC .text on_branch__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::on_branch(const void*, const char*) { +void TSequenceProcessor::on_branch(const void*, const char*) { /* Nonmatching */ } /* 8029F7EC-8029F7F0 .text do_begin__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::do_begin(const void*, const char*) { - /* Nonmatching */ +void TSequenceProcessor::do_begin(const void*, const char*) { } /* 8029F7F0-8029F7F4 .text do_end__Q28JMessage18TSequenceProcessorFv */ -void JMessage::TSequenceProcessor::do_end() { - /* Nonmatching */ +void TSequenceProcessor::do_end() { } /* 8029F7F4-8029F7FC .text do_isReady__Q28JMessage18TSequenceProcessorFv */ -void JMessage::TSequenceProcessor::do_isReady() { - /* Nonmatching */ +bool TSequenceProcessor::do_isReady() { + return true; } /* 8029F7FC-8029F804 .text do_jump_isReady__Q28JMessage18TSequenceProcessorFv */ -void JMessage::TSequenceProcessor::do_jump_isReady() { - /* Nonmatching */ +bool TSequenceProcessor::do_jump_isReady() { + return true; } /* 8029F804-8029F808 .text do_jump__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::do_jump(const void*, const char*) { - /* Nonmatching */ +void TSequenceProcessor::do_jump(const void*, const char*) { } /* 8029F808-8029F80C .text do_branch_query__Q28JMessage18TSequenceProcessorFUs */ -void JMessage::TSequenceProcessor::do_branch_query(unsigned short) { - /* Nonmatching */ +void TSequenceProcessor::do_branch_query(u16) { } /* 8029F80C-8029F814 .text do_branch_queryResult__Q28JMessage18TSequenceProcessorFv */ -void JMessage::TSequenceProcessor::do_branch_queryResult() { - /* Nonmatching */ +int TSequenceProcessor::do_branch_queryResult() { + return -2; } /* 8029F814-8029F818 .text do_branch__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::do_branch(const void*, const char*) { - /* Nonmatching */ +void TSequenceProcessor::do_branch(const void*, const char*) { } /* 8029F818-8029F868 .text reset___Q28JMessage18TSequenceProcessorFPCc */ -void reset___Q28JMessage18TSequenceProcessorFPCc { +void TSequenceProcessor::reset_(const char*) { /* Nonmatching */ } /* 8029F868-8029F894 .text do_begin___Q28JMessage18TSequenceProcessorFPCvPCc */ -void do_begin___Q28JMessage18TSequenceProcessorFPCvPCc { +void TSequenceProcessor::do_begin_(const void*, const char*) { /* Nonmatching */ } /* 8029F894-8029F8C8 .text do_end___Q28JMessage18TSequenceProcessorFv */ -void do_end___Q28JMessage18TSequenceProcessorFv { +void TSequenceProcessor::do_end_() { /* Nonmatching */ } /* 8029F8C8-8029F9D4 .text do_tag___Q28JMessage18TSequenceProcessorFUlPCvUl */ -void do_tag___Q28JMessage18TSequenceProcessorFUlPCvUl { +bool TSequenceProcessor::do_tag_(u32, const void*, u32) { /* Nonmatching */ } /* 8029F9D4-8029FA2C .text do_systemTagCode___Q28JMessage18TSequenceProcessorFUsPCvUl */ -void do_systemTagCode___Q28JMessage18TSequenceProcessorFUsPCvUl { +void TSequenceProcessor::do_systemTagCode_(u16 p1, const void* p2, u32 p3) { /* Nonmatching */ + switch (p1) { + case 6: + _3C = 3; + _40 = &process_onJump_; + _44 = *(u32*)p2; + break; + case 0: + case 1: + case 2: + case 3: + break; + case 4: + case 5: + default: + TProcessor::do_systemTagCode_(p1, p2, p3); + break; + } } /* 8029FA2C-8029FA5C .text process_jump_limited___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessor */ -void process_jump_limited___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessor { +void TSequenceProcessor::process_jump_limited_(TSequenceProcessor*) { /* Nonmatching */ } /* 8029FA5C-8029FA88 .text process_jump___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessor */ -void process_jump___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessor { +void TSequenceProcessor::process_jump_(TSequenceProcessor*) { /* Nonmatching */ } /* 8029FA88-8029FAB8 .text process_branch_limited___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessorUl */ -void process_branch_limited___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessorUl { +void TSequenceProcessor::process_branch_limited_(TSequenceProcessor*, u32) { /* Nonmatching */ } /* 8029FAB8-8029FAE8 .text process_branch___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessorUl */ -void process_branch___Q28JMessage18TSequenceProcessorFPQ28JMessage18TSequenceProcessorUl { +void TSequenceProcessor::process_branch_(TSequenceProcessor*, u32) { /* Nonmatching */ } /* 8029FAE8-8029FB20 .text __ct__Q28JMessage19TRenderingProcessorFPQ28JMessage8TControl */ -JMessage::TRenderingProcessor::TRenderingProcessor(JMessage::TControl*) { +TRenderingProcessor::TRenderingProcessor(TControl*) { /* Nonmatching */ } /* 8029FB20-8029FB80 .text __dt__Q28JMessage19TRenderingProcessorFv */ -JMessage::TRenderingProcessor::~TRenderingProcessor() { - /* Nonmatching */ +TRenderingProcessor::~TRenderingProcessor() { } /* 8029FB80-8029FBF0 .text process__Q28JMessage19TRenderingProcessorFPCc */ -void JMessage::TRenderingProcessor::process(const char*) { +void TRenderingProcessor::process(const char*) { /* Nonmatching */ } /* 8029FBF0-8029FBF4 .text do_begin__Q28JMessage19TRenderingProcessorFPCvPCc */ -void JMessage::TRenderingProcessor::do_begin(const void*, const char*) { - /* Nonmatching */ +void TRenderingProcessor::do_begin(const void*, const char*) { } /* 8029FBF4-8029FBF8 .text do_end__Q28JMessage19TRenderingProcessorFv */ -void JMessage::TRenderingProcessor::do_end() { - /* Nonmatching */ +void TRenderingProcessor::do_end() { } /* 8029FBF8-8029FC24 .text do_begin___Q28JMessage19TRenderingProcessorFPCvPCc */ -void do_begin___Q28JMessage19TRenderingProcessorFPCvPCc { +void TRenderingProcessor::do_begin_(const void*, const char*) { /* Nonmatching */ } /* 8029FC24-8029FC50 .text do_end___Q28JMessage19TRenderingProcessorFv */ -void do_end___Q28JMessage19TRenderingProcessorFv { +void TRenderingProcessor::do_end_() { /* Nonmatching */ } /* 8029FC50-8029FC84 .text do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl */ -void do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl { +bool TRenderingProcessor::do_tag_(u32, const void*, u32) { /* Nonmatching */ } /* 8029FC84-8029FCC4 .text do_systemTagCode___Q28JMessage19TRenderingProcessorFUsPCvUl */ -void do_systemTagCode___Q28JMessage19TRenderingProcessorFUsPCvUl { +void TRenderingProcessor::do_systemTagCode_(u16, const void*, u32) { /* Nonmatching */ } +}; // namespace JMessage diff --git a/src/JSystem/JStudio/JStudioToolLibrary/console.cpp b/src/JSystem/JStudio/JStudioToolLibrary/console.cpp index ec462c9c1..2e6c542d1 100644 --- a/src/JSystem/JStudio/JStudioToolLibrary/console.cpp +++ b/src/JSystem/JStudio/JStudioToolLibrary/console.cpp @@ -3,21 +3,13 @@ // Translation Unit: console.cpp // -#include "console.h" +#include "JSystem/JStudio/JStudioToolLibrary/console.h" #include "dolphin/types.h" -/* 8027A6EC-8027A75C .text __dt__20JSUMemoryInputStreamFv */ -JSUMemoryInputStream::~JSUMemoryInputStream() { - /* Nonmatching */ -} +// This translation unit had dozens of GUI-related functions for the debug build, but none of those +// made it into the release build. Only a few weak destructors are present in the release TU. -/* 8027A75C-8027A7BC .text __dt__20JSURandomInputStreamFv */ -JSURandomInputStream::~JSURandomInputStream() { - /* Nonmatching */ +static void dummy() { + JSUMemoryInputStream temp(NULL, 0); + temp.~JSUMemoryInputStream(); } - -/* 8027A7BC-8027A804 .text __dt__10JSUIosBaseFv */ -JSUIosBase::~JSUIosBase() { - /* Nonmatching */ -} - diff --git a/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp b/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp index 0bd3c8bc6..b26a9c91a 100644 --- a/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp +++ b/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp @@ -21,7 +21,7 @@ void JStudio_JMessage::TAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOpe /* Nonmatching */ switch (operation) { case JStudio::data::UNK_0x19: - mControl->setMessageCode((*(u32*)param_2) >> 0x10, (*(u32*)param_3)); + mControl->setMessageCode(*(u32*)param_2); break; } }