From bf8a9067900695733ff81b23142be5af63feb93f Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Fri, 13 Jun 2025 05:33:33 -0700 Subject: [PATCH] cleanup/doc JMessage / d_msg_class (#2484) * jmessage cleanup pass * more JMessage cleanup * d_msg_class cleanup --- include/JSystem/J2DGraph/J2DPrint.h | 34 +- include/JSystem/JGadget/define.h | 30 +- include/JSystem/JGadget/linklist.h | 9 +- include/JSystem/JMessage/control.h | 54 +- include/JSystem/JMessage/data.h | 46 +- include/JSystem/JMessage/locale.h | 9 +- include/JSystem/JMessage/processor.h | 245 +- include/JSystem/JMessage/resource.h | 101 +- include/d/d_com_inf_game.h | 2 +- include/d/d_msg_class.h | 239 +- include/d/d_msg_object.h | 3 +- src/JSystem/J2DGraph/J2DPrint.cpp | 636 +-- src/JSystem/JMessage/control.cpp | 50 +- src/JSystem/JMessage/data.cpp | 10 +- src/JSystem/JMessage/locale.cpp | 80 +- src/JSystem/JMessage/processor.cpp | 512 +- src/JSystem/JMessage/resource.cpp | 232 +- .../MSL_C++/MSL_Common/Include/algorithm.h | 5 +- .../MSL/MSL_C++/MSL_Common/Include/cstdint.h | 28 + src/d/d_demo.cpp | 1 + src/d/d_meter2_draw.cpp | 4 +- src/d/d_msg_class.cpp | 4503 ++++++++--------- src/d/d_msg_object.cpp | 7 +- src/d/d_msg_unit.cpp | 122 +- 24 files changed, 3660 insertions(+), 3302 deletions(-) create mode 100644 src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h diff --git a/include/JSystem/J2DGraph/J2DPrint.h b/include/JSystem/J2DGraph/J2DPrint.h index 126ae750a7..8f24a0d60c 100644 --- a/include/JSystem/J2DGraph/J2DPrint.h +++ b/include/JSystem/J2DGraph/J2DPrint.h @@ -5,6 +5,9 @@ #include "__va_arg.h" class JUTFont; +class J2DPrint; + +extern "C" f32 J2DPrint_print_alpha_va(J2DPrint*, u8, const char*, va_list); /** * @ingroup jsystem-j2d @@ -17,12 +20,15 @@ public: /* 0x4 */ f32 field_0x4; }; - /* 802F4394 */ J2DPrint(JUTFont*, f32, f32, JUtility::TColor, JUtility::TColor, - JUtility::TColor, JUtility::TColor); + J2DPrint(JUTFont*, JUtility::TColor, JUtility::TColor); + + void initiate(); + + /* 802F4394 */ J2DPrint(JUTFont*, f32, f32, JUtility::TColor, JUtility::TColor, JUtility::TColor, JUtility::TColor); /* 802F4658 */ static u8* setBuffer(size_t); /* 802F46C4 */ void setFontSize(); /* 802F475C */ void locate(f32, f32); - /* 802F4778 */ void print(f32, f32, u8, char const*, ...); + /* 802F4778 */ f32 print(f32, f32, u8, char const*, ...); /* 802F4828 */ void printReturn(char const*, f32, f32, J2DTextBoxHBinding, J2DTextBoxVBinding, f32, f32, u8); /* 802F4B4C */ f32 parse(u8 const*, int, int, u16*, J2DPrint::TSize&, u8, bool); @@ -34,6 +40,10 @@ public: /* 802F4420 */ virtual ~J2DPrint(); + f32 print_va(u8 alpha, const char* fmt, va_list args) { + return J2DPrint_print_alpha_va(this, alpha, fmt, args); + } + void setFontSize(f32 sizeX, f32 sizeY) { f32 x; if (sizeX > 0.0f) { @@ -52,7 +62,7 @@ public: mFontSizeY = y; } - static const u8* mStrBuff; + static char* mStrBuff; static size_t mStrBuffSize; private: @@ -64,27 +74,25 @@ private: /* 0x0C */ JUtility::TColor field_0xc; /* 0x10 */ f32 field_0x10; /* 0x14 */ f32 field_0x14; - /* 0x18 */ f32 field_0x18; - /* 0x1C */ f32 field_0x1c; + /* 0x18 */ f32 mScaleX; + /* 0x1C */ f32 mScaleY; /* 0x20 */ s16 field_0x20; /* 0x22 */ bool field_0x22; /* 0x24 */ f32 field_0x24; /* 0x28 */ f32 field_0x28; - /* 0x2C */ f32 field_0x2c; + /* 0x2C */ f32 mCursorH; /* 0x30 */ f32 mCursorV; /* 0x34 */ f32 field_0x34; - /* 0x38 */ JUtility::TColor field_0x38; - /* 0x3C */ JUtility::TColor field_0x3c; + /* 0x38 */ JUtility::TColor mBlackColor; + /* 0x3C */ JUtility::TColor mWhiteColor; /* 0x40 */ JUtility::TColor mCharColor; /* 0x44 */ JUtility::TColor mGradColor; - /* 0x48 */ f32 field_0x48; - /* 0x4C */ f32 field_0x4c; + /* 0x48 */ f32 mCharSpacing; + /* 0x4C */ f32 mLineSpacing; /* 0x50 */ f32 mFontSizeX; /* 0x54 */ f32 mFontSizeY; /* 0x58 */ s16 field_0x58; /* 0x5A */ bool field_0x5a; }; // Size: 0x5C -f32 J2DPrint_print_alpha_va(J2DPrint*, u8, const char*, va_list); - #endif /* J2DPRINT_H */ diff --git a/include/JSystem/JGadget/define.h b/include/JSystem/JGadget/define.h index 753bc9d5ab..045ef439c3 100644 --- a/include/JSystem/JGadget/define.h +++ b/include/JSystem/JGadget/define.h @@ -18,9 +18,9 @@ public: JGadget_outMessage& operator<<(int param_1) { return *this << (s32)param_1; } JGadget_outMessage& operator<<(u16); JGadget_outMessage& operator<<(unsigned int); - JGadget_outMessage& operator<<(u8); + JGadget_outMessage& operator<<(u8 param_1) { return *this << (char)param_1; } JGadget_outMessage& operator<<(const char* str); - JGadget_outMessage& operator<<(s8); + JGadget_outMessage& operator<<(char); JGadget_outMessage& operator<<(s32); JGadget_outMessage& operator<<(u32); JGadget_outMessage& operator<<(const void*); @@ -33,13 +33,37 @@ private: int mLine; }; -#define JGADGET_ASSERTWARN(cond) ((cond) || (false)) +#ifdef DEBUG +// these macros are probably wrong, needs work +#define JGADGET_ASSERTWARN(line, COND) \ + if (!(COND)) { \ + JGadget_outMessage out(JGadget_outMessage::warning, __FILE__, line); \ + out << #COND; \ + } + +#define JGADGET_WARNMSG(line, msg) \ + JGadget_outMessage out(JGadget_outMessage::warning, __FILE__, line); \ + out << msg; + +#define JGADGET_WARNMSG1(line, msg, arg) \ + JGadget_outMessage out(JGadget_outMessage::warning, __FILE__, line); \ + out << msg << (arg); + +#define JGADGET_WARNMSG4(line, msg, arg1, arg2, arg3, arg4) \ + JGadget_outMessage out(JGadget_outMessage::warning, __FILE__, line); \ + out << msg << (arg1) << (arg2) << (arg3) << (arg4); #define JGADGET_EXITWARN(cond) \ if (!(cond)) { \ false; \ return false; \ } +#else +#define JGADGET_ASSERTWARN(line, COND) (void)0 +#define JGADGET_WARNMSG(line, msg) (void)0 +#define JGADGET_WARNMSG1(line, msg, arg) (void)0 +#define JGADGET_WARNMSG4(line, msg, arg1, arg2, arg3, arg4) (void)0 +#endif } #endif diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index c6b3b08347..69e4db3ee5 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -2,6 +2,7 @@ #define LINKLIST_H #include "JSystem/JUtility/JUTAssert.h" +#include "JSystem/JGadget/define.h" #include namespace JGadget { @@ -75,8 +76,8 @@ struct TNodeLinkList { const_iterator begin() const { return const_iterator(ocObject_.getNext()); } iterator end() { return iterator(&ocObject_); } const_iterator end() const { return const_iterator((TLinkListNode*)(&ocObject_)); } - u32 size() { return count; } - bool empty() { return size() == 0; } + u32 size() const { return count; } + bool empty() const { return size() == 0; } iterator pop_front() { return erase(begin()); } iterator erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator); @@ -248,7 +249,9 @@ struct TLinkList_factory : public TLinkList { }; template -TLinkList_factory::~TLinkList_factory() {} +TLinkList_factory::~TLinkList_factory() { + JGADGET_ASSERTWARN(934, empty()); +} template struct TEnumerator { diff --git a/include/JSystem/JMessage/control.h b/include/JSystem/JMessage/control.h index f2c95d233b..1b32722bd5 100644 --- a/include/JSystem/JMessage/control.h +++ b/include/JSystem/JMessage/control.h @@ -16,30 +16,36 @@ struct TControl { /* 802A75D4 */ void reset(); /* 802A7634 */ int update(); /* 802A76BC */ void render(); - /* 802A77E8 */ int setMessageCode(u16, u16); - /* 802A78F4 */ int setMessageID(u32, u32, bool*); - /* 802A7A20 */ bool setMessageCode_inSequence_(JMessage::TProcessor const*, u16, u16); + /* 802A77E8 */ int setMessageCode(u16 u16GroupID, u16 u16Index); + /* 802A78F4 */ int setMessageID(u32 uMsgID, u32 param_1, bool* pbValid); + /* 802A7A20 */ bool setMessageCode_inSequence_(const TProcessor* pProcessor, u16 u16GroupID, u16 u16Index); bool isReady_update_() const { return pMessageText_begin_ != 0 && pSequenceProcessor_ != NULL; } - bool isReady_render_() const { return field_0x20 != 0 && pRenderingProcessor_ != NULL; } + bool isReady_render_() const { return pMessageText_current_ != 0 && pRenderingProcessor_ != NULL; } TProcessor* getProcessor() const { - return pSequenceProcessor_ != NULL ? (TProcessor*)pSequenceProcessor_ : - (TProcessor*)pRenderingProcessor_; + if (pSequenceProcessor_ != NULL) { + return (TProcessor*)pSequenceProcessor_; + } else { + return (TProcessor*)pRenderingProcessor_; + } } - int setMessageCode(u32 code) { - return setMessageCode(code >> 16, code); + int setMessageCode(u32 uCode) { + return setMessageCode(uCode >> 16, uCode); } - int setMessageCode_inReset_(TProcessor* pProcessor, u16 param_1, u16 param_2) { - if (!setMessageCode_inSequence_(pProcessor, param_1, param_2)) { + int setMessageCode_inReset_(const TProcessor* pProcessor, u16 u16GroupID, u16 u16Index) { + JUT_ASSERT(138, pEntry_==0); + JUT_ASSERT(139, pszText_update_current_==0); + JUT_ASSERT(140, oStack_renderingProcessor_.empty()); + + if (!setMessageCode_inSequence_(pProcessor, u16GroupID, u16Index)) { return 0; } if (isReady_update_()) { - pSequenceProcessor_->setBegin_messageEntryText(pResourceCache_, pEntry_, - pMessageText_begin_); + pSequenceProcessor_->setBegin_messageEntryText(pResourceCache_, pEntry_, pMessageText_begin_); } return 1; @@ -47,8 +53,10 @@ struct TControl { 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; } + u32 getMessageCode() const { return (uMessageGroupID_ << 16) | uMessageID_; } + void setSequenceProcessor(TSequenceProcessor* pProcessor) { pSequenceProcessor_ = pProcessor; } + void setRenderingProcessor(TRenderingProcessor* pProcessor) { pRenderingProcessor_ = pProcessor; } + void resetResourceCache() { if (pSequenceProcessor_ != NULL) { pSequenceProcessor_->resetResourceCache(); @@ -63,32 +71,22 @@ struct TControl { void render_synchronize() { if (isReady_render_()) { - field_0x20 = pszText_update_current_; + pMessageText_current_ = pszText_update_current_; oStack_renderingProcessor_ = pRenderingProcessor_->oStack_; } } /* 0x04 */ TSequenceProcessor* pSequenceProcessor_; /* 0x08 */ TRenderingProcessor* pRenderingProcessor_; - /* 0x0C */ u16 messageCode_; - /* 0x0E */ u16 field_0xe; + /* 0x0C */ u16 uMessageGroupID_; + /* 0x0E */ u16 uMessageID_; /* 0x10 */ const TResource* pResourceCache_; /* 0x14 */ void* pEntry_; /* 0x18 */ const char* pMessageText_begin_; /* 0x1C */ const char* pszText_update_current_; - /* 0x20 */ const char* field_0x20; + /* 0x20 */ const char* pMessageText_current_; /* 0x24 */ TProcessor::TStack_ oStack_renderingProcessor_; }; }; // namespace JMessage -/** - * @ingroup jsystem-jmessage - * - */ -struct jmessage_tControl : public JMessage::TControl { - /* 802299EC */ jmessage_tControl(); - - /* 80039B0C */ virtual ~jmessage_tControl(); -}; - #endif /* JMESSAGE_CONTROL_H */ diff --git a/include/JSystem/JMessage/data.h b/include/JSystem/JMessage/data.h index ef10d35235..0a83a90464 100644 --- a/include/JSystem/JMessage/data.h +++ b/include/JSystem/JMessage/data.h @@ -10,8 +10,9 @@ namespace JMessage { * */ struct data { + // TParse_THeader handles parsing the BMG file header data struct TParse_THeader : public JGadget::binary::TParseData_aligned<4> { - TParse_THeader(const void* data) : TParseData_aligned(data) {} + TParse_THeader(const void* pData) : TParseData_aligned(pData) {} const void* getContent() const { return (char*)getRaw() + 0x20; } char* get() const { return (char*)getRaw(); } @@ -22,8 +23,9 @@ struct data { u8 get_encoding() const { return *(u8*)(get() + 0x10); } }; + // TParse_TBlock handles parsing the generic section header data struct TParse_TBlock : public JGadget::binary::TParseData_aligned<4> { - TParse_TBlock(const void* data) : TParseData_aligned(data) {} + TParse_TBlock(const void* pData) : TParseData_aligned(pData) {} const char* get() const { return (char*)getRaw(); } u32 get_size() const { return *(u32*)(get() + 0x4); } @@ -31,53 +33,69 @@ struct data { u32 get_type() const { return *(u32*)(get() + 0x0); } }; + // TParse_TBlock_info handles parsing INF1 section data struct TParse_TBlock_info : public TParse_TBlock { - TParse_TBlock_info(const void* data) : TParse_TBlock(data) {} + TParse_TBlock_info(const void* pData) : TParse_TBlock(pData) {} char* get() const { return (char*)getRaw(); } char* getContent() const { return (char*)getRaw() + 0x10; } - u16 get_messageEntrySize() const { return *(u16*)(get() + 0xA); } + u32 get_messageEntrySize() const { return *(u16*)(get() + 0xA); } - u16 get_messageEntryNumber() const { return *(u16*)(get() + 0x8); } + u32 get_messageEntryNumber() const { return *(u16*)(get() + 0x8); } u16 get_groupID() const { return *(u16*)(get() + 0xC); } }; + // TParse_TBlock_messageID handles parsing MID1 section data struct TParse_TBlock_messageID : public TParse_TBlock { - TParse_TBlock_messageID(const void* data) : TParse_TBlock(data) {} + TParse_TBlock_messageID(const void* pData) : TParse_TBlock(pData) {} char* get() const { return (char*)getRaw(); } u8 get_formSupplement() const { return *(u8*)(get() + 0xB); } int get_number() const { return *(u16*)(get() + 0x8); } u32* getContent() const { return (u32*)((u32)getRaw() + 0x10); } - u8 get_form() const { return *(u8*)(get() + 0xA) & 0xF; } + u32 get_form() const { return *(u8*)(get() + 0xA) & 0xF; } bool get_isOrdered() const { return *(u8*)(get() + 0xA) & 0xF0; } }; struct TParse_TBlock_color : public TParse_TBlock { - TParse_TBlock_color(const void* data) : TParse_TBlock(data) {} + TParse_TBlock_color(const void* pData) : TParse_TBlock(pData) {} }; + // TParse_TBlock_messageText handles parsing DAT1 section data struct TParse_TBlock_messageText : public TParse_TBlock { - TParse_TBlock_messageText(const void* data) : TParse_TBlock(data) {} + TParse_TBlock_messageText(const void* pData) : TParse_TBlock(pData) {} char* getContent() const { return (char*)getRaw() + 0x8; } }; + // TParse_TBlock_stringAttribute handles parsing STR1 section data struct TParse_TBlock_stringAttribute : public TParse_TBlock { - TParse_TBlock_stringAttribute(const void* data) : TParse_TBlock(data) {} + TParse_TBlock_stringAttribute(const void* pData) : TParse_TBlock(pData) {} char* getContent() const { return (char*)getRaw() + 0x8; } }; - static u32 getTagCode(u32 tag) { return tag & 0xFFFF; } - static u32 getTagGroup(u32 tag) { return (tag >> 0x10) & 0xFF; } + static unsigned int getTagCode(u32 tag) { return tag & 0xFFFF; } + static u8 getTagGroup(u32 tag) { return tag >> 0x10; } - static u32 ga4cSignature; + static const u32 ga4cSignature; + static const u32 ga4cSignature_color; - static const int gcTagBegin = '\x1A'; + static const int gcTagBegin = '\x1A'; // All text Control Tags will begin with this character + + enum { + MESSAGEINDEX_USER_ENUM_MIN = 0x0000, + MESSAGEINDEX_USER_ENUM_MAX = 0xFEFF, + + MESSAGEINDEX_RESERVED_ENUM_MIN = 0xFF00, + MESSAGEINDEX_RESERVED_ENUM_MAX = 0xFFFF, + + MESSAGEGROUPID_USER_ENUM_MIN = 0x0000, + MESSAGEGROUPID_USER_ENUM_MAX = 0xFFFF, + }; }; }; // namespace JMessage diff --git a/include/JSystem/JMessage/locale.h b/include/JSystem/JMessage/locale.h index 19a1227890..80209b50dc 100644 --- a/include/JSystem/JMessage/locale.h +++ b/include/JSystem/JMessage/locale.h @@ -1,6 +1,7 @@ #ifndef JMESSAGE_LOCALE_H #define JMESSAGE_LOCALE_H +#include namespace JMessage { @@ -15,10 +16,10 @@ struct locale { return c >= 0x81 && (c <= 0x9F || (c >= 0xE0 && c <= 0xFC)); } - /* 802A9490 */ static int parseCharacter_1Byte(char const**); - /* 802A94A8 */ static int parseCharacter_2Byte(char const**); - /* 802A9528 */ static int parseCharacter_ShiftJIS(char const**); - /* 802A958C */ static int parseCharacter_UTF8(char const**); + /* 802A9490 */ static int parseCharacter_1Byte(const char** ppszText); + /* 802A94A8 */ static int parseCharacter_2Byte(const char** ppszText); + /* 802A9528 */ static int parseCharacter_ShiftJIS(const char** ppszText); + /* 802A958C */ static int parseCharacter_UTF8(const char** ppszText); }; }; // namespace JMessage diff --git a/include/JSystem/JMessage/processor.h b/include/JSystem/JMessage/processor.h index 858aa27f93..d67378ea78 100644 --- a/include/JSystem/JMessage/processor.h +++ b/include/JSystem/JMessage/processor.h @@ -2,7 +2,8 @@ #define JMESSAGE_PROCESSOR_H #include "JSystem/JMessage/resource.h" -#include "algorithm.h" +#include +#include "global.h" namespace JMessage { struct TResource; @@ -18,15 +19,15 @@ struct TReference { /* 802A7AF8 */ virtual ~TReference(); /* 802A7B40 */ virtual const char* do_word(u32) const; - int on_parseCharacter(const char** string) const { return pcResource_->parseCharacter(string); } + int on_parseCharacter(const char** ppszText) const { + JUT_ASSERT(97, pcResource_!=0); + return pcResource_->parseCharacter(ppszText); + } + const char* on_word(u32 param_0) const { return do_word(param_0); } - TResource* getResource_groupID(u16 groupID) const { - if (pcResource_ == NULL) { - return NULL; - } - - return pcResource_->getResource_groupID(groupID); + TResource* getResource_groupID(u16 u16GroupID) const { + return pcResource_ == NULL ? NULL : pcResource_->getResource_groupID(u16GroupID); } TResourceContainer* getResourceContainer() const { return pcResource_; } @@ -40,8 +41,13 @@ struct TReference { * */ struct TProcessor { - TProcessor(const TReference* reference) - : pReference_(reference), pResourceCache_(NULL), pszCurrent_(NULL) {} + TProcessor(const TReference* pReference) + : pReference_(pReference), + pResourceCache_(NULL), + pszCurrent_(NULL) + { + JUT_ASSERT(584, pReference_!=0); + } typedef bool (*pfnProcess_func)(TProcessor*); @@ -55,14 +61,25 @@ struct TProcessor { u32 max_size() const { return 4; } u32 size() const { return upsz_; } - const char* top() const { return stack[upsz_ - 1]; } + const char* top() const { + JUT_ASSERT(181, upsz_>0); + return stack[upsz_ - 1]; + } - void push(const char* string) { - stack[upsz_] = string; + void push(const char* pszText) { + JUT_ASSERT(186, IsPushable()); + stack[upsz_] = pszText; upsz_++; } - void pop() { upsz_--; } + void pop() { + JUT_ASSERT(192, upsz_>0); + upsz_--; + + #if PLATFORM_SHIELD + stack[upsz_] = NULL; + #endif + } TStack_& operator=(const TStack_& other) { upsz_ = other.upsz_; @@ -79,11 +96,11 @@ struct TProcessor { struct TProcess_ { TProcess_() { reset_normal(); } - void reset_normal() { pfnProcess_CharacterEnd = process_onCharacterEnd_normal_; } - void reset_select() { pfnProcess_CharacterEnd = process_onCharacterEnd_select_; } + void reset_normal() { pfnProcess_onCharacterEnd = process_onCharacterEnd_normal_; } + void reset_select() { pfnProcess_onCharacterEnd = process_onCharacterEnd_select_; } - /* 0x0 */ pfnProcess_func pfnProcess_CharacterEnd; - struct { + /* 0x0 */ pfnProcess_func pfnProcess_onCharacterEnd; + struct rdata { /* 0x0 */ const char* (*pfn)(TProcessor*); /* 0x4 */ const char* pcBase; /* 0x8 */ const void* pOffset; @@ -93,51 +110,50 @@ struct TProcessor { }; // Size: 0x14 /* 802A7B90 */ void reset(); - /* 802A7BF8 */ void stack_pushCurrent(char const*); + /* 802A7BF8 */ void stack_pushCurrent(char const* pszText); /* 802A7C30 */ void stack_popCurrent(); - /* 802A7C54 */ const TResource* getResource_groupID(u16) const; - /* 802A7CD4 */ u32 toMessageCode_messageID(u32, u32, bool*) const; - /* 802A7E38 */ void on_select_begin(char const* (*)(JMessage::TProcessor*), void const*, - char const*, u32); + /* 802A7C54 */ const TResource* getResource_groupID(u16 u16GroupID) const; + /* 802A7CD4 */ u32 toMessageCode_messageID(u32 uMsgID, u32, bool* pbValid) const; + /* 802A7E38 */ void on_select_begin(char const* (*pfn)(JMessage::TProcessor*), void const* pOffset, + char const* pcBase, u32 uNumber); /* 802A7EDC */ void on_select_end(); /* 802A7F34 */ void on_select_separate(); /* 802A7FE4 */ void on_tag_(); - /* 802A8090 */ // void do_tag_(u32, void const*, u32); /* 802A81EC */ bool process_character_(); - /* 802A828C */ static bool process_onCharacterEnd_normal_(JMessage::TProcessor*); - /* 802A82F4 */ static bool process_onCharacterEnd_select_(JMessage::TProcessor*); - /* 802A833C */ static const char* process_onSelect_limited_(JMessage::TProcessor*); - /* 802A8358 */ static const char* process_onSelect_(JMessage::TProcessor*); - /* 802A8C24 */ const char* on_message(u32 param_0) const { return getMessageText_messageCode(param_0); } - /* 802A8C44 */ const char* getMessageText_messageCode(u32 param_0) const { - return getMessageText_messageCode(param_0 >> 0x10, param_0 & 0xFFFF); + /* 802A828C */ static bool process_onCharacterEnd_normal_(JMessage::TProcessor* pThis); + /* 802A82F4 */ static bool process_onCharacterEnd_select_(JMessage::TProcessor* pThis); + /* 802A833C */ static const char* process_onSelect_limited_(JMessage::TProcessor* pThis); + /* 802A8358 */ static const char* process_onSelect_(JMessage::TProcessor* pThis); + /* 802A8C24 */ const char* on_message(u32 uCode) const { return getMessageText_messageCode(uCode); } + /* 802A8C44 */ const char* getMessageText_messageCode(u32 uCode) const { + return getMessageText_messageCode(uCode >> 16, uCode & 0xFFFF); } /* 802A7B48 */ virtual ~TProcessor(); /* 802A7FC0 */ virtual void do_reset(); - /* 802A7FC4 */ virtual void do_begin(void const*, char const*); + /* 802A7FC4 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 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); + /* 802A7FCC */ virtual void do_character(int iCharacter); + /* 802A7FD0 */ virtual bool do_tag(u32 uTag, void const* pData, u32 uSize); + /* 802A7FD8 */ virtual void do_select_begin(u32 uNumber); /* 802A7FDC */ virtual void do_select_end(); /* 802A7FE0 */ virtual void do_select_separate(); - /* 802A8084 */ virtual void do_resetStatus_(char const*); + /* 802A8084 */ virtual void do_resetStatus_(char const* pszText); /* 802A8088 */ virtual bool do_setBegin_isReady_() const; - virtual void do_begin_(void const*, char const*) = 0; + virtual void do_begin_(void const* pEntry, char const* pszText) = 0; virtual void do_end_() = 0; - virtual void do_tag_(u32, void const*, u32) = 0; + virtual void do_tag_(u32 uTag, void const* pData, u32 uSize) = 0; - void on_resetStatus_(const char* param_0) { - pszCurrent_ = param_0; + void on_resetStatus_(const char* pszText) { + pszCurrent_ = pszText; oStack_.clear(); oProcess_.reset_normal(); - do_resetStatus_(param_0); + do_resetStatus_(pszText); } - void on_begin(const void* entry, const char* param_1) { - do_begin_(entry, param_1); - do_begin(entry, param_1); + void on_begin(const void* pEntry, const char* pszText) { + do_begin_(pEntry, pszText); + do_begin(pEntry, pszText); } void on_end() { @@ -145,49 +161,52 @@ struct TProcessor { do_end(); } - void on_tag(u32 param_0, const void* param_1, u32 param_2) { - if (!do_tag(param_0, param_1, param_2)) { - do_tag_(param_0, param_1, param_2); + void on_tag(u32 uTag, const void* pData, u32 uSize) { + if (!do_tag(uTag, pData, uSize)) { + do_tag_(uTag, pData, uSize); } } const char* on_word(u32 param_0) const { return pReference_->on_word(param_0); } - int on_parseCharacter(const char** string) const { - return pReference_->on_parseCharacter(string); + int on_parseCharacter(const char** ppszText) const { + return pReference_->on_parseCharacter(ppszText); } - void on_character(int character) { do_character(character); } + void on_character(int iCharacter) { do_character(iCharacter); } - const char* on_message_limited(u16 messageIndex) const { - return pResourceCache_->getMessageText_messageIndex(messageIndex); + const char* on_message_limited(u16 u16Index) const { + JUT_ASSERT(482, pResourceCache_!=0); + return pResourceCache_->getMessageText_messageIndex(u16Index); } - int setBegin_messageEntryText(const TResource* resource, const void* entry, - const char* param_2) { - pResourceCache_ = resource; - on_resetStatus_(param_2); - on_begin(entry, param_2); + bool on_setBegin_isReady_() const { return do_setBegin_isReady_(); } + + int setBegin_messageEntryText(const TResource* pResource, const void* pEntry, const char* pszText) { + JUT_ASSERT(297, on_setBegin_isReady_()); + pResourceCache_ = pResource; + on_resetStatus_(pszText); + on_begin(pEntry, pszText); return 1; } - int setBegin_messageEntryText(const TProcessor* processor, const void* entry, - const char* param_2) { - setBegin_messageEntryText(processor->getResourceCache(), entry, param_2); + int setBegin_messageEntryText(const TProcessor* pProcessor, const void* pEntry, const char* pszText) { + JUT_ASSERT(306, pProcessor!=0); + setBegin_messageEntryText(pProcessor->getResourceCache(), pEntry, pszText); return 1; } - void* getMessageEntry_messageCode(u16 messageCode, u16 messageIndex) const { - const TResource* pResource = getResource_groupID(messageCode); + void* getMessageEntry_messageCode(u16 u16Code, u16 u16Index) const { + const TResource* pResource = getResource_groupID(u16Code); if (pResource == NULL) { return NULL; } - return pResource->getMessageEntry_messageIndex(messageIndex); + return pResource->getMessageEntry_messageIndex(u16Index); } - const char* getMessageText_messageCode(u16 messageCode, u16 messageIndex) const { - void* pEntry = getMessageEntry_messageCode(messageCode, messageIndex); + const char* getMessageText_messageCode(u16 u16Code, u16 u16Index) const { + void* pEntry = getMessageEntry_messageCode(u16Code, u16Index); if (pEntry == NULL) { return NULL; @@ -196,9 +215,9 @@ struct TProcessor { return pResourceCache_->getMessageText_messageEntry(pEntry); } - void stack_pushCurrent_(const char* string) { + void stack_pushCurrent_(const char* pszText) { oStack_.push(getCurrent()); - pszCurrent_ = string; + pszCurrent_ = pszText; } void stack_popCurrent_() { @@ -212,27 +231,23 @@ struct TProcessor { const char* getCurrent() const { return pszCurrent_; } const TReference* getReference() const { return pReference_; } - const TResource* getResource_groupID_uncached(u16 groupID) const { - return pReference_->getResource_groupID(groupID); + const TResource* getResource_groupID_uncached(u16 u16GroupID) const { + return pReference_->getResource_groupID(u16GroupID); } - bool isResourceCache_groupID(u16 groupID) const { - return pResourceCache_ != NULL && groupID == pResourceCache_->getGroupID(); + bool isResourceCache_groupID(u16 u16GroupID) const { + return pResourceCache_ != NULL && u16GroupID == pResourceCache_->getGroupID(); } TResourceContainer* getResourceContainer() const { - if (pReference_ == NULL) { - return NULL; - } - - return pReference_->getResourceContainer(); + return pReference_ == NULL ? NULL : pReference_->getResourceContainer(); } - void setResourceCache(TResource* cache) { pResourceCache_ = cache; } + void setResourceCache(TResource* pResource) { pResourceCache_ = pResource; } void resetResourceCache() { setResourceCache(NULL); } /* 0x04 */ const TReference* pReference_; - /* 0x08 */ const TResource* pResourceCache_; + /* 0x08 */ const mutable TResource* pResourceCache_; /* 0x0C */ const char* pszCurrent_; /* 0x10 */ TStack_ oStack_; /* 0x24 */ TProcess_ oProcess_; @@ -253,13 +268,13 @@ struct TSequenceProcessor : public TProcessor { void reset() {} - union { - struct { + union processData { + struct branchData { /* 0x0 */ branchPfn branchFn; /* 0x4 */ const void* pTarget; /* 0x8 */ u32 uTarget; } branch_process; - struct { + struct jumpData { /* 0x0 */ jumpPfn jumpFn; /* 0x4 */ u32 u32Target; } jump_process; @@ -275,48 +290,45 @@ struct TSequenceProcessor : public TProcessor { STATUS_BRANCH, }; - /* 802A8374 */ TSequenceProcessor(JMessage::TReference const*, JMessage::TControl*); - /* 802A8418 */ const char* process(char const*); + /* 802A8374 */ TSequenceProcessor(JMessage::TReference const* pReference, JMessage::TControl* pControl); + /* 802A8418 */ const char* process(char const* pszText); /* 802A85A4 */ bool on_isReady(); - /* 802A85D0 */ void on_jump_register(void const* (*)(JMessage::TSequenceProcessor const*), u32); + /* 802A85D0 */ void on_jump_register(jumpPfn pfn, u32 u32Target); /* 802A85E4 */ bool on_jump_isReady(); - /* 802A8610 */ void on_jump(void const*, char const*); - /* 802A8690 */ void - on_branch_register(void const* (*)(JMessage::TSequenceProcessor const*, u32), void const*, u32); - /* 802A86A0 */ void on_branch_query(u32); + /* 802A8610 */ void on_jump(void const* pEntry, char const* pszText); + /* 802A8690 */ void on_branch_register(branchPfn pfn, void const* pTarget, u32 uTarget); + /* 802A86A0 */ void on_branch_query(u32 uCode); /* 802A86D4 */ u32 on_branch_queryResult(); - /* 802A8700 */ void on_branch(void const*, char const*); - /* 802A892C */ static void process_setMessageIndex_reserved_(u16); - /* 802A8944 */ static void* process_setMessageCode_(JMessage::TSequenceProcessor const*, u16, - u16); - /* 802A89B8 */ static const void* process_onJump_limited_(JMessage::TSequenceProcessor const*); - /* 802A89EC */ static const void* process_onJump_(JMessage::TSequenceProcessor const*); - /* 802A8A18 */ static const void* process_onBranch_limited_(JMessage::TSequenceProcessor const*, - u32); - /* 802A8A50 */ static const void* process_onBranch_(JMessage::TSequenceProcessor const*, u32); + /* 802A8700 */ void on_branch(void const* pEntry, char const* pszText); + /* 802A892C */ static void process_setMessageIndex_reserved_(u16 u16Index); + /* 802A8944 */ static void* process_setMessageCode_(TSequenceProcessor const* pProcessor, u16 u16GroupID, u16 u16Index); + /* 802A89B8 */ static const void* process_onJump_limited_(TSequenceProcessor const* pProcessor); + /* 802A89EC */ static const void* process_onJump_(TSequenceProcessor const* pProcessor); + /* 802A8A18 */ static const void* process_onBranch_limited_(TSequenceProcessor const* pProcessor, u32 uTargetIndex); + /* 802A8A50 */ static const void* process_onBranch_(TSequenceProcessor const* pProcessor, u32 uTargetIndex); /* 802A83B8 */ virtual ~TSequenceProcessor(); - /* 802A87A4 */ virtual void do_resetStatus_(char const*); + /* 802A87A4 */ virtual void do_resetStatus_(char const* pszText); /* 802A87C0 */ virtual bool do_setBegin_isReady_() const; - /* 802A87D0 */ virtual void do_begin_(void const*, char const*); + /* 802A87D0 */ virtual void do_begin_(void const* pEntry, char const* pszText); /* 802A87D4 */ virtual void do_end_(); - /* 802A87E0 */ virtual void do_tag_(u32, void const*, u32); + /* 802A87E0 */ virtual void do_tag_(u32 uTag, void const* pData, u32 uSize); /* 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); + /* 802A8790 */ virtual void do_jump(void const* pEntry, char const* pszText); + /* 802A8794 */ virtual void do_branch_query(u32 uCode); /* 802A8798 */ virtual s32 do_branch_queryResult(); - /* 802A87A0 */ virtual void do_branch(void const*, char const*); + /* 802A87A0 */ virtual void do_branch(void const* pEntry, char const* pszText); TControl* getControl() const { return pControl_; } - static const void* process_setMessageIndex_(const TSequenceProcessor* pProcessor, u16 param_1) { + static const void* process_setMessageIndex_(const TSequenceProcessor* pProcessor, u16 u16Index) { return process_setMessageCode_(pProcessor, pProcessor->getResourceCache()->getGroupID(), - param_1); + u16Index); } - static const void* process_setMessageCode_(const TSequenceProcessor* pProcessor, u32 param_1) { - return process_setMessageCode_(pProcessor, param_1 >> 0x10, param_1 & 0xFFFF); + static const void* process_setMessageCode_(const TSequenceProcessor* pProcessor, u32 uCode) { + return process_setMessageCode_(pProcessor, uCode >> 16, uCode & 0xFFFF); } /* 0x38 */ TControl* pControl_; @@ -329,20 +341,21 @@ struct TSequenceProcessor : public TProcessor { * */ struct TRenderingProcessor : public TProcessor { - /* 802A8A84 */ TRenderingProcessor(JMessage::TReference const*); - /* 802A8B20 */ int process(char const*); + /* 802A8A84 */ TRenderingProcessor(JMessage::TReference const* pReference); + /* 802A8B20 */ int process(char const* pszText); /* 802A8AC0 */ virtual ~TRenderingProcessor(); - /* 802A8BA4 */ virtual void do_begin_(void const*, char const*); + /* 802A8BA4 */ virtual void do_begin_(void const* pEntry, char const* pszText); /* 802A8BA8 */ virtual void do_end_(); - /* 802A8BAC */ virtual void do_tag_(u32, void const*, u32); + /* 802A8BAC */ virtual void do_tag_(u32 uTag, void const* pData, u32 uSize); - bool process_messageEntryText(TProcessor *param_0,void const*param_1,const char *param_2) { - int rv = TProcessor::setBegin_messageEntryText(param_0, param_1, param_2); - if (rv != 0) { - process(NULL); + bool process_messageEntryText(const TProcessor* pProcessor, void const* pEntry, const char* pszText) { + if (!TProcessor::setBegin_messageEntryText(pProcessor, pEntry, pszText)) { + return false; } - return rv != 0; + + process(NULL); + return true; } }; }; // namespace JMessage diff --git a/include/JSystem/JMessage/resource.h b/include/JSystem/JMessage/resource.h index 3ab892bb29..26fb74f2b6 100644 --- a/include/JSystem/JMessage/resource.h +++ b/include/JSystem/JMessage/resource.h @@ -13,33 +13,40 @@ namespace JMessage { */ struct TResource { TResource() - : field_0x8(NULL), field_0xc(NULL), field_0x10(NULL), field_0x14(NULL), mMessageID(NULL) {} + : oParse_THeader_(NULL), + oParse_TBlock_info_(NULL), + pMessageText_(NULL), + pStringAttribute_(NULL), + oParse_TBlock_messageID_(NULL) + {} - /* 802A8CDC */ u16 toMessageIndex_messageID(u32, u32, bool*) const; + /* 802A8CDC */ u16 toMessageIndex_messageID(u32 uMsgID, u32, bool* pbValid) const; - bool isContained_messageIndex(u16 messageIndex) const { - return messageIndex < getMessageEntryNumber(); + bool isContained_messageIndex(u16 uMessageIndex) const { + return uMessageIndex < getMessageEntryNumber(); } - u16 getMessageEntrySize() const { return field_0xc.get_messageEntrySize(); } - u16 getMessageEntryNumber() const { return field_0xc.get_messageEntryNumber(); } + u32 getMessageEntrySize() const { return oParse_TBlock_info_.get_messageEntrySize(); } + u32 getMessageEntryNumber() const { return oParse_TBlock_info_.get_messageEntryNumber(); } - u16 getGroupID() const { return field_0xc.get_groupID(); } + u16 getGroupID() const { return oParse_TBlock_info_.get_groupID(); } - void* getMessageEntry_messageIndex(u16 messageIndex) const { - if (!isContained_messageIndex(messageIndex)) { + void* getMessageEntry_messageIndex(u16 uMessageIndex) const { + if (!isContained_messageIndex(uMessageIndex)) { return NULL; } - return field_0xc.getContent() + (messageIndex * getMessageEntrySize()); + void* pEntry = oParse_TBlock_info_.getContent() + (uMessageIndex * getMessageEntrySize()); + return pEntry; } char* getMessageText_messageEntry(const void* pEntry) const { - return field_0x10 + *(int*)pEntry; + JUT_ASSERT(141, pEntry!=0); + return pMessageText_ + *(int*)pEntry; } - const char* getMessageText_messageIndex(u16 messageIndex) const { - void* pEntry = getMessageEntry_messageIndex(messageIndex); + const char* getMessageText_messageIndex(u16 uMessageIndex) const { + void* pEntry = getMessageEntry_messageIndex(uMessageIndex); if (pEntry == NULL) { return NULL; } @@ -48,31 +55,35 @@ struct TResource { } void setData_header(const void* pData) { - field_0x8.setRaw(pData); + oParse_THeader_.setRaw(pData); } void setData_block_info(const void* pData) { - field_0xc.setRaw(pData); + oParse_TBlock_info_.setRaw(pData); + + JGADGET_ASSERTWARN(75, oParse_TBlock_info_.get_groupID()<= data::MESSAGEGROUPID_USER_ENUM_MAX); + + JGADGET_ASSERTWARN(77, oParse_TBlock_info_.get_messageEntryNumber()<= data::MESSAGEINDEX_USER_ENUM_MAX); } void setData_block_messageText(const void* pData) { - field_0x10 = data::TParse_TBlock_messageText(pData).getContent(); + pMessageText_ = data::TParse_TBlock_messageText(pData).getContent(); } void setData_block_stringAttribute(const void* pData) { - field_0x14 = data::TParse_TBlock_stringAttribute(pData).getContent(); + pStringAttribute_ = data::TParse_TBlock_stringAttribute(pData).getContent(); } void setData_block_messageID(const void* pData) { - mMessageID.setRaw(pData); + oParse_TBlock_messageID_.setRaw(pData); } JGadget::TLinkListNode ocObject_; - /* 0x08 */ data::TParse_THeader field_0x8; - /* 0x0C */ data::TParse_TBlock_info field_0xc; - /* 0x10 */ char* field_0x10; - /* 0x14 */ char* field_0x14; - /* 0x18 */ data::TParse_TBlock_messageID mMessageID; + /* 0x08 */ data::TParse_THeader oParse_THeader_; + /* 0x0C */ data::TParse_TBlock_info oParse_TBlock_info_; + /* 0x10 */ char* pMessageText_; + /* 0x14 */ char* pStringAttribute_; + /* 0x18 */ data::TParse_TBlock_messageID oParse_TBlock_messageID_; }; /** @@ -80,14 +91,18 @@ struct TResource { * */ struct TResource_color { - TResource_color() : field_0x0(NULL), field_0x4(NULL) {} + TResource_color() + : oParse_THeader_(NULL), + oParse_TBlock_color_(NULL) + {} + void reset() { - field_0x0.setRaw(NULL); - field_0x4.setRaw(NULL); + oParse_THeader_.setRaw(NULL); + oParse_TBlock_color_.setRaw(NULL); } - /* 0x0 */ data::TParse_THeader field_0x0; - /* 0x4 */ data::TParse_TBlock_color field_0x4; + /* 0x0 */ data::TParse_THeader oParse_THeader_; + /* 0x4 */ data::TParse_TBlock_color oParse_TBlock_color_; }; // Size: 0x8 /** @@ -97,24 +112,26 @@ struct TResource_color { struct TResourceContainer { struct TCResource : public JGadget::TLinkList_factory { /* 802A8EC0 */ TCResource(); - /* 802A8F6C */ TResource* Get_groupID(u16); + /* 802A8F6C */ TResource* Get_groupID(u16 u16GroupID); /* 802A8EF8 */ virtual ~TCResource(); /* 802A8FFC */ virtual JMessage::TResource* Do_create(); - /* 802A9048 */ virtual void Do_destroy(JMessage::TResource*); - - // u8 field_0x0[0x10]; + /* 802A9048 */ virtual void Do_destroy(JMessage::TResource* pResource); }; /* 802A906C */ TResourceContainer(); - /* 802A90B8 */ void setEncoding(u8); - /* 802A90F0 */ void setEncoding_(u8); + /* 802A90B8 */ void setEncoding(u8 e); + /* 802A90F0 */ void setEncoding_(u8 e); - int parseCharacter(const char** string) const { return pfnParseCharacter_(string); } - TResource* getResource_groupID(u16 groupID) { return resContainer_.Get_groupID(groupID); } - TResource* getResource_groupID(u16 groupID) const { return getResource_groupID(groupID); } + int parseCharacter(const char** ppszText) const { + JUT_ASSERT(330, pfnParseCharacter_!=0); + return pfnParseCharacter_(ppszText); + } - bool isEncodingSettable(u8 e) const { return mEncodingType == e || mEncodingType == 0; } + TResource* getResource_groupID(u16 u16GroupID) { return resContainer_.Get_groupID(u16GroupID); } + TResource* getResource_groupID(u16 u16GroupID) const { return getResource_groupID(u16GroupID); } + + bool isEncodingSettable(u8 e) const { return encodingType_ == e || encodingType_ == 0; } const TCResource* getResourceContainer() const { return &resContainer_; } void destroyResource() { resContainer_.Clear_destroy(); @@ -129,7 +146,7 @@ struct TResourceContainer { static JMessage::locale::parseCharacter_function sapfnParseCharacter_[5]; - /* 0x00 */ u8 mEncodingType; + /* 0x00 */ u8 encodingType_; /* 0x04 */ JMessage::locale::parseCharacter_function pfnParseCharacter_; /* 0x08 */ TCResource resContainer_; /* 0x18 */ TResource_color resColor_; @@ -140,11 +157,11 @@ struct TResourceContainer { * */ struct TParse : public JGadget::binary::TParse_header_block { - /* 802A9130 */ TParse(JMessage::TResourceContainer*); + /* 802A9130 */ TParse(JMessage::TResourceContainer* pContainer); /* 802A9158 */ virtual ~TParse(); - /* 802A91B8 */ virtual bool parseHeader_next(void const**, u32*, u32); - /* 802A92F4 */ virtual bool parseBlock_next(void const**, u32*, u32); + /* 802A91B8 */ virtual bool parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32); + /* 802A92F4 */ virtual bool parseBlock_next(const void** ppData_inout, u32* puData_out, u32); /* 0x4 */ TResourceContainer* pContainer_; /* 0x8 */ TResource* pResource_; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index b9e5461a05..5c043d1be6 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -3061,7 +3061,7 @@ inline void dComIfGp_setMesgBgmOff() { g_dComIfG_gameInfo.play.setMesgBgm(0); } -inline bool dComIfGp_checkMesgBgm() { +inline u8 dComIfGp_checkMesgBgm() { return g_dComIfG_gameInfo.play.checkMesgBgm(); } diff --git a/include/d/d_msg_class.h b/include/d/d_msg_class.h index 9cb58d7ebc..d143da0538 100644 --- a/include/d/d_msg_class.h +++ b/include/d/d_msg_class.h @@ -11,16 +11,18 @@ public: // Attributes /* 0x04 */ u16 message_id; - /* 0x06 */ u16 unk_0x6; - /* 0x08 */ u8 unk_0x8; - /* 0x09 */ u8 display_style; - /* 0x0A */ u8 print_style; - /* 0x0B */ u8 position; + /* 0x06 */ u16 event_label_id; + /* 0x08 */ u8 se_speaker; + /* 0x09 */ u8 fuki_kind; + /* 0x0A */ u8 output_type; + /* 0x0B */ u8 fuki_pos_type; /* 0x0C */ u8 unk_0xc; /* 0x0D */ u8 unk_0xd; - /* 0x0E */ u8 unk_0xe; + /* 0x0E */ u8 se_mood; /* 0x0F */ u8 camera_id; - /* 0x10 */ u32 unk_0x10; + /* 0x10 */ u8 base_anm_id; + /* 0x11 */ u8 face_anm_id; + /* 0x12 */ u16 unk_0x12; }; class JMSMesgInfo_c { @@ -48,7 +50,7 @@ struct jmessage_tReference : public JMessage::TReference { /* 80228F08 */ bool isSaveSeq(); /* 80228F3C */ bool isBook(); /* 80228F70 */ bool isStaffRoll(); - /* 80228FA4 */ u8 isHowl(); + /* 80228FA4 */ bool isHowl(); /* 80228FD8 */ bool isMidona(); /* 8022900C */ void resetReference(); /* 80229034 */ void pageSend(); @@ -70,7 +72,10 @@ struct jmessage_tReference : public JMessage::TReference { /* 80238C78 */ void setActorPos(cXyz pos) { mActorPos = pos; } - bool isSelectSetCancelFlag() { return mSelectSetCancelFlag != 0; } + bool isSelectSetCancelFlag() { + return mSelectSetCancelFlag ? true : false; + } + BOOL isSelectRubyFlag(int i_flag) { BOOL var_r31; if (mSelectRubyFlag & (u8)(1 << i_flag)) { @@ -80,8 +85,9 @@ struct jmessage_tReference : public JMessage::TReference { } return var_r31; } - bool isBatchFlag() { return mBatchFlag; } - bool isLightBatchFlag() { return mLightBatchFlag; } + + bool isBatchFlag() { return mBatchFlag ? true : false; } + bool isLightBatchFlag() { return mLightBatchFlag ? true : false; } void setAddCharAllAlphaRate(f32 i_alphaRate) { mAddCharAllAlphaRate = i_alphaRate; } void setCharAllAlphaRate(f32 i_alphaRate) { mCharAllAlphaRate = i_alphaRate; } @@ -220,7 +226,7 @@ struct jmessage_tReference : public JMessage::TReference { f32 getSelTBoxWidth() { return mSelTBoxWidth; } u8 getSelectPos() { return mSelectPos; } u16 getMsgID() { return mMsgID; } - bool isButtonTagStopFlag() { return mButtonTagStopFlag; } + bool isButtonTagStopFlag() { return mButtonTagStopFlag ? true : false; } u8 getStopFlag() { return mStopFlag; } u8 getSendFlag() { return mSendFlag; } u8 getFukiPosType() { return mFukiPosType; } @@ -230,7 +236,7 @@ struct jmessage_tReference : public JMessage::TReference { f32 getSelFontSize() { return mSelFontSize; } f32 getSelCharSpace() { return mSelCharSpace; } u16 getLineScale(int i_no) { return mLineScale[i_no]; } - bool isBombNameUseFlag() { return mBombNameUseFlag; } + bool isBombNameUseFlag() { return mBombNameUseFlag ? true : false; } f32 getSelLength(int idx) { return mSelLength[idx]; } void setAddCharAlpha(f32 alpha) { mAddCharAlpha = alpha; } s8 getNowPageLineMax() { return mPageLineMax[field_0x5d2]; } @@ -344,7 +350,7 @@ struct jmessage_tReference : public JMessage::TReference { }; // Size: 0x1278 struct jmessage_tMeasureProcessor : public JMessage::TRenderingProcessor { - /* 80229A28 */ jmessage_tMeasureProcessor(jmessage_tReference const*); + /* 80229A28 */ jmessage_tMeasureProcessor(jmessage_tReference const* pReference); /* 8022B0B0 */ void do_scale(f32); /* 8022B18C */ void do_space(u32); /* 8022B3EC */ void do_pageType(int); @@ -353,16 +359,16 @@ struct jmessage_tMeasureProcessor : public JMessage::TRenderingProcessor { /* 8022B4E0 */ void push_word(char*); /* 8022B5F4 */ virtual ~jmessage_tMeasureProcessor() {} - /* 80229AC4 */ virtual void do_begin(void const*, char const*); + /* 80229AC4 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 80229CB4 */ virtual void do_end(); - /* 80229E3C */ virtual void do_character(int); - /* 8022A268 */ virtual bool do_tag(u32, void const*, u32); + /* 80229E3C */ virtual void do_character(int iCharacter); + /* 8022A268 */ virtual bool do_tag(u32 uTag, void const* pData, u32 uSize); /* 0x38 */ f32 field_0x38; /* 0x3C */ s16 mTotalLineCnt; /* 0x3E */ s16 field_0x3e; /* 0x40 */ s16 field_0x40; - /* 0x42 */ u16 field_0x42; + /* 0x42 */ u16 mSeMood; /* 0x44 */ u8 field_0x44; /* 0x45 */ u8 mSelectType; /* 0x46 */ u8 field_0x46; @@ -371,13 +377,18 @@ struct jmessage_tMeasureProcessor : public JMessage::TRenderingProcessor { /* 0x49 */ s8 field_0x49; /* 0x4A */ s8 mPageLineMax; /* 0x4B */ s8 field_0x4b; - /* 0x4C */ u8 field_0x4c; + /* 0x4C */ u8 mSeSpeaker; /* 0x4D */ u8 field_0x4d; }; // Size: 0x50 -struct jmessage_tControl; +struct jmessage_tControl : public JMessage::TControl { + /* 802299EC */ jmessage_tControl(); + + /* 80039B0C */ virtual ~jmessage_tControl(); +}; + struct jmessage_tSequenceProcessor : public JMessage::TSequenceProcessor { - /* 8022B558 */ jmessage_tSequenceProcessor(jmessage_tReference const*, jmessage_tControl*); + /* 8022B558 */ jmessage_tSequenceProcessor(jmessage_tReference const* pReference, jmessage_tControl* pControl); /* 8022C904 */ void do_name1(); /* 8022C908 */ void do_space(u32); /* 8022CA24 */ void do_rubyset(void const*, u32); @@ -387,20 +398,20 @@ struct jmessage_tSequenceProcessor : public JMessage::TSequenceProcessor { /* 8023299C */ virtual ~jmessage_tSequenceProcessor() {} /* 8022B654 */ virtual void do_reset(); - /* 8022B658 */ virtual void do_begin(void const*, char const*); + /* 8022B658 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 8022BA3C */ virtual void do_end(); - /* 8022BFE0 */ virtual void do_character(int); - /* 8022C1A0 */ virtual bool do_tag(u32, void const*, u32); + /* 8022BFE0 */ virtual void do_character(int iCharacter); + /* 8022C1A0 */ virtual bool do_tag(u32 uTag, void const* pData, u32 uSize); /* 8022BB7C */ virtual bool do_isReady(); /* 8022C8FC */ virtual bool do_jump_isReady(); - /* 8022CBE4 */ virtual void do_jump(void const*, char const*); + /* 8022CBE4 */ virtual void do_jump(void const* pEntry, char const* pszText); u8 getMouthCheck() { return mMouthCheck; } void setForceForm(u8 forceForm) { mForceForm = forceForm; } /* 0x4C */ jmessage_tMeasureProcessor mMeasureProcessor; - /* 0x9C */ const void* field_0x9c; - /* 0xA0 */ const char* field_0xa0; + /* 0x9C */ const void* mpEntry; + /* 0xA0 */ const char* mpText; /* 0xA4 */ s16 field_0xa4; /* 0xA6 */ s16 field_0xa6; /* 0xA8 */ s16 field_0xa8; @@ -429,7 +440,7 @@ struct CharInfo_c { }; struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { - /* 8022CCB0 */ jmessage_tRenderingProcessor(jmessage_tReference const*); + /* 8022CCB0 */ jmessage_tRenderingProcessor(jmessage_tReference const* pReference); /* 8022E12C */ void resetRendering(); /* 8022E17C */ void do_widthcenter(); /* 8022E260 */ void do_selwidthcenter(int); @@ -451,10 +462,10 @@ struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { /* 8023293C */ virtual ~jmessage_tRenderingProcessor() {} /* 8022CDC8 */ virtual void do_reset(); - /* 8022CDCC */ virtual void do_begin(void const*, char const*); + /* 8022CDCC */ virtual void do_begin(void const* pEntry, char const* pszText); /* 8022CFD8 */ virtual void do_end(); - /* 8022D0A0 */ virtual void do_character(int); - /* 8022D74C */ virtual bool do_tag(u32, void const*, u32); + /* 8022D0A0 */ virtual void do_character(int iCharacter); + /* 8022D74C */ virtual bool do_tag(u32 uTag, void const* pData, u32 uSize); void setTextInitPos(float x, float y) { mTextInitPosX = x; @@ -578,38 +589,38 @@ struct jmessage_string_tReference : public JMessage::TReference { }; struct jmessage_string_tMeasureProcessor : public JMessage::TRenderingProcessor { - /* 8022FB98 */ jmessage_string_tMeasureProcessor(jmessage_string_tReference const*); + /* 8022FB98 */ jmessage_string_tMeasureProcessor(jmessage_string_tReference const* pReference); /* 8023098C */ void do_rubyset(void const*, u32); /* 80230A5C */ virtual ~jmessage_string_tMeasureProcessor() {} - /* 8022FBE4 */ virtual void do_begin(void const*, char const*); + /* 8022FBE4 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 8022FC14 */ virtual void do_end(); - /* 8022FC28 */ virtual void do_character(int); - /* 8022FDF0 */ virtual bool do_tag(u32, void const*, u32); + /* 8022FC28 */ virtual void do_character(int iCharacter); + /* 8022FDF0 */ virtual bool do_tag(u32 uTag, void const* pData, u32 uSize); /* 0x38 */ jmessage_string_tReference* mpReference; }; struct jmessage_string_tSequenceProcessor : public JMessage::TSequenceProcessor { - /* 80230A08 */ jmessage_string_tSequenceProcessor(jmessage_string_tReference const*, - jmessage_string_tControl*); + /* 80230A08 */ jmessage_string_tSequenceProcessor(jmessage_string_tReference const* pReference, + jmessage_string_tControl* pControl); /* 80232858 */ virtual ~jmessage_string_tSequenceProcessor() {} /* 80230ABC */ virtual void do_reset(); - /* 80230AC0 */ virtual void do_begin(void const*, char const*); + /* 80230AC0 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 80230B7C */ virtual void do_end(); - /* 80230B88 */ virtual void do_character(int); - /* 80230B8C */ virtual bool do_tag(u32, void const*, u32); + /* 80230B88 */ virtual void do_character(int iCharacter); + /* 80230B8C */ virtual bool do_tag(u32 uTag, void const* pData, u32 uSize); /* 80230B80 */ virtual bool do_isReady(); /* 80230BBC */ virtual bool do_jump_isReady(); - /* 80230BC4 */ virtual void do_jump(void const*, char const*); + /* 80230BC4 */ virtual void do_jump(void const* pEntry, char const* pszText); /* 0x4C */ jmessage_string_tMeasureProcessor mMeasureProcessor; /* 0x88 */ jmessage_string_tReference* mpSeqReference; }; struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcessor { - /* 80230BC8 */ jmessage_string_tRenderingProcessor(jmessage_string_tReference const*); + /* 80230BC8 */ jmessage_string_tRenderingProcessor(jmessage_string_tReference const* pReference); /* 80230C20 */ s16 getLineCountNowPage(); /* 80231D70 */ void do_widthcenter(); /* 80231EF0 */ void do_heightcenter(); @@ -625,10 +636,10 @@ struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcesso /* 802327F8 */ virtual ~jmessage_string_tRenderingProcessor() {} /* 80230C5C */ virtual void do_reset(); - /* 80230CA0 */ virtual void do_begin(void const*, char const*); + /* 80230CA0 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 80230CE8 */ virtual void do_end(); - /* 80230D48 */ virtual void do_character(int); - /* 80231110 */ virtual bool do_tag(u32, void const*, u32); + /* 80230D48 */ virtual void do_character(int iCharacter); + /* 80231110 */ virtual bool do_tag(u32 uTag, void const* pData, u32 uSize); char* getString() { return field_0x54; } @@ -650,4 +661,142 @@ struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcesso /* 0x554 */ u8 field_0x554; }; +#define MSGTAG_GROUP(g) (g << 16) + +// Group 0 +#define MSGTAG_PLAYER_NAME 0 +#define MSGTAG_INSTANT 1 +#define MSGTAG_TYPE 2 +#define MSGTAG_UNK_3 3 // appears the same as autobox +#define MSGTAG_AUTOBOX 4 +#define MSGTAG_BOXATMOST 5 +#define MSGTAG_UNK_6 6 +#define MSGTAG_PAUSE 7 +#define MSGTAG_SELECT_2WAY 8 +#define MSGTAG_SELECT_3WAY 9 +#define MSGTAG_ABTN 10 +#define MSGTAG_BBTN 11 +#define MSGTAG_CSTICK 12 +#define MSGTAG_LBTN 13 +#define MSGTAG_RBTN 14 +#define MSGTAG_XBTN 15 +#define MSGTAG_YBTN 16 +#define MSGTAG_ZBTN 17 +#define MSGTAG_DPAD 18 +#define MSGTAG_STICK_CROSS 19 +#define MSGTAG_LEFT_ARROW 20 +#define MSGTAG_RIGHT_ARROW 21 +#define MSGTAG_UP_ARROW 22 +#define MSGTAG_DOWN_ARROW 23 +#define MSGTAG_STICK_UP 24 +#define MSGTAG_STICK_DOWN 25 +#define MSGTAG_STICK_LEFT 26 +#define MSGTAG_STICK_RIGHT 27 +#define MSGTAG_STICK_VERTICAL 28 +#define MSGTAG_STICK_HORIZONTAL 29 +#define MSGTAG_INLINE_2_NEXT 30 +#define MSGTAG_INLINE_2_FIRST 31 +#define MSGTAG_AWAIT_CHOICE 32 +#define MSGTAG_UNK_33 33 // calls "do_name1" but the function does nothing +#define MSGTAG_HORSE_NAME 34 +#define MSGTAG_RED_TARGET 35 +#define MSGTAG_YELLOW_TARGET 36 +#define MSGTAG_INPUT_VALUE 37 +#define MSGTAG_ACKNOWLEDGE 38 +#define MSGTAG_ABTN_STAR 39 +#define MSGTAG_DEMOBOX 40 +#define MSGTAG_SCENT_NAME 41 +#define MSGTAG_WHITE_TARGET 42 +#define MSGTAG_PORTAL_NAME 43 +#define MSGTAG_WARP_ICON 44 +#define MSGTAG_BOMB_NAME 45 +#define MSGTAG_XYBTN 46 +#define MSGTAG_YXBTN 47 +#define MSGTAG_BOMB_BAG_ICON 48 +#define MSGTAG_BOMB_NUM 49 +#define MSGTAG_BOMB_PRICE 50 +#define MSGTAG_INLINE_3_NEXT 51 +#define MSGTAG_INLINE_3_FIRST 52 +#define MSGTAG_UNK_53 53 +#define MSGTAG_BOXATLEAST 54 +#define MSGTAG_BOMB_MAX 55 +#define MSGTAG_ARROW_MAX 56 +#define MSGTAG_HEART 57 +#define MSGTAG_QUAVER 58 +#define MSGTAG_INSECT_NAME 59 +#define MSGTAG_LETTER_NAME 60 +#define MSGTAG_LINE_DOWN 61 +#define MSGTAG_CURRENT_LETTER_PAGE 62 +#define MSGTAG_MAX_LETTER_PAGE 63 + +// Group 3 +#define MSGTAG_WII_MSGID_OVERRIDE 0 +#define MSGTAG_WII_ABTN 1 +#define MSGTAG_WII_BBTN 2 +#define MSGTAG_WII_HOMEBTN 3 +#define MSGTAG_WII_MINUSBTN 4 +#define MSGTAG_WII_PLUSBTN 5 +#define MSGTAG_WII_1BTN 6 +#define MSGTAG_WII_2BTN 7 +#define MSGTAG_WII_DPAD_ITEM 8 +#define MSGTAG_WII_DPAD_UP 9 +#define MSGTAG_WII_DPAD_DOWN 10 +#define MSGTAG_WII_DPAD_HORIZONTAL 11 +#define MSGTAG_WII_DPAD_RIGHT 12 +#define MSGTAG_WII_DPAD_LEFT 13 +#define MSGTAG_WII_WIIMOTE 14 +#define MSGTAG_WII_RETICULE 15 +#define MSGTAG_WII_NUNCHUK 16 +#define MSGTAG_WII_WIIMOTE2 17 +#define MSGTAG_WII_FAIRY 18 +#define MSGTAG_WII_CBTN 19 +#define MSGTAG_WII_ZBTN 20 + +// Group 4 +#define MSGTAG_GLYPH_DOLLARSIGN 0 +#define MSGTAG_GLYPH_BACKSLASH 1 +#define MSGTAG_GLYPH_ATMARK 2 +#define MSGTAG_GLYPH_SHARP 3 +#define MSGTAG_GLYPH_FLAT 4 +#define MSGTAG_GLYPH_SQRT 5 +#define MSGTAG_GLYPH_PERCENT 6 +#define MSGTAG_GLYPH_HECTARE 7 +#define MSGTAG_GLYPH_ARE 8 +#define MSGTAG_GLYPH_LITRE 9 +#define MSGTAG_GLYPH_WATT 10 +#define MSGTAG_GLYPH_CALORIE 11 +#define MSGTAG_GLYPH_DOLLAR 12 +#define MSGTAG_GLYPH_CENT 13 + +// Group 5 +#define MSGTAG_TIME_INFO 0 +#define MSGTAG_INSECT_INFO 3 +#define MSGTAG_RIVER_POINTS 7 +#define MSGTAG_FISH_LENGTH 8 +#define MSGTAG_FUNDRAISE_REMAIN 9 +#define MSGTAG_NEW_LETTER_NUM 10 +#define MSGTAG_POE_NUM 11 +#define MSGTAG_BALLOON_SCORE 12 +#define MSGTAG_FISH_COUNT 13 +#define MSGTAG_ROLLGOAL_LV 14 + +// Group 6 +#define MSGTAG_PLAYER_GENITIV 0 +#define MSGTAG_HORSE_GENITIV 1 +#define MSGTAG_MALE_ICON 2 +#define MSGTAG_FEMALE_ICON 3 +#define MSGTAG_STAR_ICON 4 +#define MSGTAG_REFMARK 5 +#define MSGTAG_THIN_LEFT_ARROW 6 +#define MSGTAG_THIN_RIGHT_ARROW 7 +#define MSGTAG_THIN_UP_ARROW 8 +#define MSGTAG_THIN_DOWN_ARROW 9 +#define MSGTAG_BULLET 10 +#define MSGTAG_BULLET_SPACE 11 + +// Group 255 +#define MSGTAG_COLOR (MSGTAG_GROUP(255) | 0) +#define MSGTAG_SCALE (MSGTAG_GROUP(255) | 1) +#define MSGTAG_RUBY (MSGTAG_GROUP(255) | 2) + #endif /* D_MSG_D_MSG_CLASS_H */ diff --git a/include/d/d_msg_object.h b/include/d/d_msg_object.h index 611e9b0d36..c605ff9066 100644 --- a/include/d/d_msg_object.h +++ b/include/d/d_msg_object.h @@ -13,6 +13,7 @@ class dMsgString_c; struct jmessage_tReference; struct jmessage_tRenderingProcessor; struct jmessage_tSequenceProcessor; +struct jmessage_tControl; class dMsgObject_c : public msg_class { public: @@ -55,7 +56,7 @@ public: char*, char*, s16*); /* 802370A8 */ u8 isGetItemMessage(); /* 802370BC */ bool isKanbanMessage(); - /* 802370E8 */ u8 isHowlMessage(); + /* 802370E8 */ bool isHowlMessage(); /* 802370FC */ bool isMidonaMessage(); /* 80237138 */ bool isMidonaNormalTalkWait(); /* 802371B0 */ bool isMidonaTalkWait(); diff --git a/src/JSystem/J2DGraph/J2DPrint.cpp b/src/JSystem/J2DGraph/J2DPrint.cpp index 22f7893e3b..d1bc81352c 100644 --- a/src/JSystem/J2DGraph/J2DPrint.cpp +++ b/src/JSystem/J2DGraph/J2DPrint.cpp @@ -1,18 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: J2DPrint -// - #include "JSystem/J2DGraph/J2DPrint.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JUtility/JUTFont.h" -#include "stdio.h" -#include "stdlib.h" +#include +#include #include "global.h" -/* ############################################################################################## */ /* 80451580-80451584 000A80 0004+00 3/3 0/0 0/0 .sbss mStrBuff__8J2DPrint */ -const u8* J2DPrint::mStrBuff; +char* J2DPrint::mStrBuff; /* 80451584-80451588 000A84 0004+00 1/1 0/0 0/0 .sbss None */ static bool sStrBufInitialized; @@ -24,61 +18,68 @@ size_t J2DPrint::mStrBuffSize; static u8 data_8045158C[4]; /* 802F42F0-802F4394 2EEC30 00A4+00 1/1 0/0 0/0 .text J2DPrint_print_alpha_va */ -f32 J2DPrint_print_alpha_va(J2DPrint* pPrint, u8 param_1, const char* fmt, va_list args) { +f32 J2DPrint_print_alpha_va(J2DPrint* pPrint, u8 alpha, const char* fmt, va_list args) { pPrint->initchar(); - s32 tmp = vsnprintf((char*)J2DPrint::mStrBuff, J2DPrint::mStrBuffSize, fmt, args); + s32 length = vsnprintf(J2DPrint::mStrBuff, J2DPrint::mStrBuffSize, fmt, args); J2DPrint::TSize size; - if (tmp < 0) { + if (length < 0) { return 0.0f; - } else if (tmp >= J2DPrint::mStrBuffSize) { - tmp = J2DPrint::mStrBuffSize - 1; + } else if (length >= J2DPrint::mStrBuffSize) { + length = J2DPrint::mStrBuffSize - 1; data_8045158C[0] = 1; } - pPrint->parse(J2DPrint::mStrBuff, tmp, 0x80000000 - 1, NULL, size, param_1, true); + + pPrint->parse((u8*)J2DPrint::mStrBuff, length, 0x80000000 - 1, NULL, size, alpha, true); return size.field_0x0; } +J2DPrint::J2DPrint(JUTFont* pFont, JUtility::TColor charColor, JUtility::TColor gradColor) { + private_initiate(pFont, 0.0f, 0.0f, charColor, gradColor, 0, 0xFFFFFFFF, true); +} + /* 802F4394-802F4420 2EECD4 008C+00 0/0 6/6 0/0 .text * __ct__8J2DPrintFP7JUTFontffQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColor */ -J2DPrint::J2DPrint(JUTFont* pFont, f32 param_1, f32 param_2, JUtility::TColor param_3, - JUtility::TColor param_4, JUtility::TColor param_5, JUtility::TColor param_6) { - private_initiate(pFont, param_1, param_2, param_3, param_4, param_5, param_6, false); +J2DPrint::J2DPrint(JUTFont* pFont, f32 charSpacing, f32 lineSpacing, JUtility::TColor charColor, + JUtility::TColor gradColor, JUtility::TColor blackColor, JUtility::TColor whiteColor) { + private_initiate(pFont, charSpacing, lineSpacing, charColor, gradColor, blackColor, whiteColor, false); } /* 802F4420-802F4468 2EED60 0048+00 1/0 6/6 0/0 .text __dt__8J2DPrintFv */ J2DPrint::~J2DPrint() {} +void J2DPrint::initiate() { + if (mFont != NULL) { + mFont->setGX(mBlackColor, mWhiteColor); + } +} + /* 802F4468-802F4658 2EEDA8 01F0+00 1/1 0/0 0/0 .text * private_initiate__8J2DPrintFP7JUTFontffQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorb */ -void J2DPrint::private_initiate(JUTFont* pFont, f32 param_1, f32 param_2, JUtility::TColor param_3, - JUtility::TColor param_4, JUtility::TColor param_5, - JUtility::TColor param_6, bool param_7) { +void J2DPrint::private_initiate(JUTFont* pFont, f32 charSpacing, f32 lineSpacing, JUtility::TColor charColor, + JUtility::TColor gradColor, JUtility::TColor blackColor, + JUtility::TColor whiteColor, bool param_7) { if (mStrBuff == NULL) { - setBuffer(0x400); // r4 + setBuffer(0x400); } + mFont = pFont; - field_0x48 = param_1; - field_0x4c = 32.0f; + mCharSpacing = charSpacing; + mLineSpacing = 32.0f; if (mFont != NULL) { - f32 temp; - if (param_7 == false) { - temp = param_2; - } else { - temp = mFont->getLeading(); - } - field_0x4c = temp; + mLineSpacing = param_7 == false ? lineSpacing : mFont->getLeading(); } field_0x5a = 1; locate(0.0f, 0.0f); - mCharColor = param_3; - mGradColor = param_4; - field_0x38 = param_5; - field_0x3c = param_6; + + mCharColor = charColor; + mGradColor = gradColor; + mBlackColor = blackColor; + mWhiteColor = whiteColor; if (mFont == NULL) { field_0x58 = 80; @@ -88,251 +89,273 @@ void J2DPrint::private_initiate(JUTFont* pFont, f32 param_1, f32 param_2, JUtili if (mFont != NULL) { setFontSize(); - mFont->setGX(field_0x38, field_0x3c); + mFont->setGX(mBlackColor, mWhiteColor); } + initchar(); } /* 802F4658-802F46C4 2EEF98 006C+00 1/1 1/1 0/0 .text setBuffer__8J2DPrintFUl */ u8* J2DPrint::setBuffer(size_t size) { - u8* tmp = (u8*)mStrBuff; + JUT_ASSERT(335, size > 0); + + u8* u8Buff = (u8*)mStrBuff; if (sStrBufInitialized) { delete mStrBuff; } - mStrBuff = new (JKRHeap::sSystemHeap, 0) u8[size]; + mStrBuff = new (JKRGetSystemHeap(), 0) char[size]; mStrBuffSize = size; sStrBufInitialized = true; - return tmp; + return u8Buff; } /* 802F46C4-802F475C 2EF004 0098+00 1/1 0/0 0/0 .text setFontSize__8J2DPrintFv */ void J2DPrint::setFontSize() { - if (mFont) { + if (mFont != NULL) { mFontSizeX = mFont->getCellWidth(); mFontSizeY = mFont->getCellHeight(); } } /* 802F475C-802F4778 2EF09C 001C+00 2/2 2/2 0/0 .text locate__8J2DPrintFff */ -void J2DPrint::locate(f32 param_0, f32 param_1) { - field_0x24 = param_0; - field_0x28 = param_1; - field_0x2c = param_0; - mCursorV = param_1; +void J2DPrint::locate(f32 cursorH, f32 cursorV) { + field_0x24 = cursorH; + field_0x28 = cursorV; + mCursorH = cursorH; + mCursorV = cursorV; field_0x34 = 0.0f; } /* 802F4778-802F4828 2EF0B8 00B0+00 0/0 2/2 0/0 .text print__8J2DPrintFffUcPCce */ -void J2DPrint::print(f32 param_0, f32 param_1, u8 param_2, char const* fmt, ...) { - locate(param_0, param_1); +f32 J2DPrint::print(f32 cursorH, f32 cursorV, u8 alpha, char const* fmt, ...) { + locate(cursorH, cursorV); va_list args; va_start(args, fmt); - J2DPrint_print_alpha_va(this, param_2, fmt, args); + f32 var_f31 = print_va(alpha, fmt, args); va_end(args); + + return var_f31; } /* 802F4828-802F4B4C 2EF168 0324+00 0/0 4/4 0/0 .text * printReturn__8J2DPrintFPCcff18J2DTextBoxHBinding18J2DTextBoxVBindingffUc */ -void J2DPrint::printReturn(char const* param_0, f32 param_1, f32 param_2, - J2DTextBoxHBinding param_3, J2DTextBoxVBinding param_4, f32 param_5, - f32 param_6, u8 param_7) { +void J2DPrint::printReturn(char const* pString, f32 param_1, f32 param_2, + J2DTextBoxHBinding hBind, J2DTextBoxVBinding vBind, f32 param_5, + f32 param_6, u8 alpha) { if (mFont != NULL) { initchar(); - field_0x24 = field_0x2c; + field_0x24 = mCursorH; field_0x28 = mCursorV; - size_t sVar6 = strlen(param_0); - if (sVar6 >= mStrBuffSize) { - sVar6 = mStrBuffSize - 1; + + size_t length = strlen(pString); + if (length >= mStrBuffSize) { + length = mStrBuffSize - 1; data_8045158C[0] = 1; } + + f32 var_f26 = mLineSpacing; + u16 local_2b0[260]; - TSize aTStack_2b8; - f32 dVar10 = parse((const u8*)param_0, sVar6, param_1, local_2b0, aTStack_2b8, - param_7, false); + TSize size; + f32 var_f31 = parse((u8*)pString, length, param_1, local_2b0, size, alpha, false); f32 dVar12 = mFont->getAscent()*(mFontSizeY / mFont->getCellHeight()); - f32 dVar13 = dVar10 + dVar12; - switch (param_4) - { + var_f31 += dVar12; + + switch (vBind) { case VBIND_TOP: break; case VBIND_BOTTOM: - param_6 += (s32)(param_2 - dVar13 - 0.5f); + param_6 += (s32)(param_2 - var_f31 - 0.5f); break; case VBIND_CENTER: - param_6 += (s32)(param_2 - dVar13 - 0.5f) / 2; + param_6 += (s32)(param_2 - var_f31 - 0.5f) / 2; default: break; } - for (int iVar8 = 0; local_2b0[iVar8] != 0xffff; iVar8++) { - switch (param_3) { - case VBIND_TOP: - local_2b0[iVar8] = 0; + for (int i = 0; local_2b0[i] != 0xFFFF; i++) { + switch (hBind) { + case HBIND_LEFT: + local_2b0[i] = 0; break; - case VBIND_BOTTOM: - local_2b0[iVar8] = param_1 - local_2b0[iVar8]; + case HBIND_RIGHT: + local_2b0[i] = param_1 - local_2b0[i]; break; - case VBIND_CENTER: - f32 fVar1 = (local_2b0[iVar8]); - fVar1 = param_1 - fVar1; - f32 ratio = 0.5f; - local_2b0[iVar8] = fVar1 * ratio; + case HBIND_CENTER: + local_2b0[i] = (param_1 - local_2b0[i]) / 2; break; - } } + initchar(); - field_0x2c += param_5; + + mCursorH += param_5; mCursorV += param_6 + dVar12; - field_0x24 = field_0x2c; + field_0x24 = mCursorH; field_0x28 = mCursorV; - parse((const u8*)param_0, sVar6, param_1, local_2b0, aTStack_2b8, param_7, true); + parse((u8*)pString, length, param_1, local_2b0, size, alpha, true); } } /* 802F4B4C-802F52E8 2EF48C 079C+00 2/2 0/0 0/0 .text * parse__8J2DPrintFPCUciiPUsRQ28J2DPrint5TSizeUcb */ -f32 J2DPrint::parse(u8 const* param_0, int param_1, int param_2, u16* param_3, - J2DPrint::TSize& param_4, u8 param_5, bool param_6) { +f32 J2DPrint::parse(const u8* pString, int length, int param_2, u16* param_3, + TSize& size, u8 alpha, bool param_6) { if (mFont == NULL) { return 0.0f; } - const u8* local_a4 = param_0; - u16 r29 = 0; - f32 f30 = field_0x2c; - f32 f28 = mCursorV; - f32 f31 = f30; - f32 local_a8 = f28; - int r27 = *(param_0++); - f32 f29 = field_0x2c; - f32 local_ac = field_0x2c; + + const u8* pStringStart = pString; + u16 someIndex = 0; + + f32 prevCursorH = mCursorH; + f32 prevCursorV = mCursorV; + f32 f31 = prevCursorH; + f32 local_a8 = prevCursorV; + int iCharacter = *(pString++); + + f32 f29 = mCursorH; + f32 local_ac = mCursorH; f32 local_b0 = mCursorV; f32 local_b4 = mCursorV; + JUtility::TColor local_b8 = field_0x8; JUtility::TColor local_bc = field_0xc; f32 local_c0; - local_b8.a = local_b8.a * param_5 / 0xff; - local_bc.a = local_bc.a * param_5 / 0xff; + + local_b8.a = local_b8.a * alpha / 0xFF; + local_bc.a = local_bc.a * alpha / 0xFF; mFont->setGradColor(local_b8, field_0x22 ? local_bc : local_b8); + do { - bool local_f0 = false; + bool b2ByteCharacter = false; bool r25; - if (mFont->isLeadByte(r27)) { - r27 = (r27 << 8) | (*(param_0++)); - local_f0 = true; + if (mFont->isLeadByte(iCharacter)) { + iCharacter = (iCharacter << 8) | *(pString++); + b2ByteCharacter = true; } - if (r27 == 0 || ((u32)param_0 - (u32)local_a4) > param_1) { - if (param_6 == 0 && param_3 != NULL) { - param_3[r29] = 0.5f + f31; + if (iCharacter == 0 || ((u32)pString - (u32)pStringStart) > length) { + if (!param_6 && param_3 != NULL) { + param_3[someIndex] = 0.5f + f31; } - r29++; + someIndex++; break; } else { r25 = true; - local_c0 = field_0x2c; - if (r27 < 0x20) { - if (r27 == 0x1b) { - u16 local_e8 = doEscapeCode(¶m_0, param_5); - if (local_e8 == 'HM') { - if ((param_6 == 0) && (param_3 != NULL)) { - param_3[r29] = 0.5f + f31; + local_c0 = mCursorH; + if (iCharacter < ' ') { + if (iCharacter == '\x1B') { + u16 code = doEscapeCode(&pString, alpha); + if (code == 'HM') { + if (!param_6 && param_3 != NULL) { + param_3[someIndex] = 0.5f + f31; } - field_0x2c = f30; - mCursorV = f28; - r29++; - if (r29 == 0x100) { + + mCursorH = prevCursorH; + mCursorV = prevCursorV; + + someIndex++; + if (someIndex == 0x100) { break; } + f31 = 0.0f; } - if (local_e8) { + + if (code != 0) { r25 = false; } } else { - doCtrlCode(r27); + doCtrlCode(iCharacter); r25 = false; - if (r27 == 10) { - if ((!param_6) && (param_3 != NULL)) { - param_3[r29] = 0.5f + f31; + if (iCharacter == 10) { + if (!param_6 && param_3 != NULL) { + param_3[someIndex] = 0.5f + f31; } - r29++; - if (r29 == 0x100) { + + someIndex++; + if (someIndex == 0x100) { break; } + f31 = 0.0f; } } - } else if (local_f0 && ((u32)param_0 - (u32)local_a4 > (u32)param_1)) { - if ((!param_6) && (param_3 != NULL)) { - param_3[r29] = 0.5f + f31; + } else if (b2ByteCharacter && ((u32)pString - (u32)pStringStart > (u32)length)) { + if (!param_6 && param_3 != NULL) { + param_3[someIndex] = 0.5f + f31; } - r29++; + someIndex++; break; } else { if (mFont->isFixed()) { field_0x34 = mFont->getFixedWidth(); } else { - JUTFont::TWidth uStack_ec; - mFont->getWidthEntry(r27, &uStack_ec); - field_0x34 = uStack_ec.field_0x1; + JUTFont::TWidth width; + mFont->getWidthEntry(iCharacter, &width); + field_0x34 = width.field_0x1; } - field_0x34 *= field_0x18 / mFont->getCellWidth(); - f32 fVar6 = ((field_0x2c + field_0x34) - field_0x24); + field_0x34 *= mScaleX / mFont->getCellWidth(); + + f32 fVar6 = ((mCursorH + field_0x34) - field_0x24); fVar6 = 10000.0f * fVar6; f32 local_c8 = s32(fVar6) / 10000.0f; - if (local_c8 > param_2 && field_0x2c > f30) { - u32 local_e4; - if (local_f0) { - local_e4 = 2; + if (local_c8 > param_2 && mCursorH > prevCursorH) { + u32 characterSize; + if (b2ByteCharacter) { + characterSize = 2; } else { - local_e4 = 1; + characterSize = 1; } - param_0 -= local_e4; + + pString -= characterSize; mCursorV += field_0x14; + if (!param_6 && (param_3 != NULL)) { - param_3[r29] = 0.5f + f31; + param_3[someIndex] = 0.5f + f31; } - r29++; - if (r29 == 0x100) { + + someIndex++; + if (someIndex == 0x100) { break; } - field_0x2c = field_0x24; + + mCursorH = field_0x24; f31 = 0.0f; r25 = false; } else { if (param_6) { if (param_3 != NULL) { - mFont->drawChar_scale(field_0x2c + (f32)(s16)param_3[r29], mCursorV, - (s32)field_0x18, (s32)field_0x1c, r27, true); + mFont->drawChar_scale(mCursorH + (f32)(s16)param_3[someIndex], mCursorV, (s32)mScaleX, (s32)mScaleY, iCharacter, true); } else { - mFont->drawChar_scale(field_0x2c, mCursorV, - (s32)field_0x18, (s32)field_0x1c, r27, true); + mFont->drawChar_scale(mCursorH, mCursorV, (s32)mScaleX, (s32)mScaleY, iCharacter, true); } } - field_0x2c += field_0x34; + mCursorH += field_0x34; } } } if (r25) { - if (field_0x2c - f30 > f31) { - f31 = field_0x2c - f30; + if (mCursorH - prevCursorH > f31) { + f31 = mCursorH - prevCursorH; } - field_0x2c += field_0x10; + mCursorH += field_0x10; field_0x34 += field_0x10; - f32 local_cc = (field_0x1c / mFont->getHeight()) * mFont->getDescent(); + + f32 local_cc = (mScaleY / mFont->getHeight()) * mFont->getDescent(); if (local_a8 < mCursorV + local_cc) { local_a8 = mCursorV + local_cc; } - if (field_0x2c > local_ac) { - local_ac = field_0x2c; + if (mCursorH > local_ac) { + local_ac = mCursorH; } - if (field_0x2c < f29) { - f29 = field_0x2c; + if (mCursorH < f29) { + f29 = mCursorH; } if (local_c0 < f29) { f29 = local_c0; @@ -344,257 +367,260 @@ f32 J2DPrint::parse(u8 const* param_0, int param_1, int param_2, u16* param_3, local_b0 = mCursorV; } } - r27 = *(param_0++); + + iCharacter = *(pString++); } while (true); if (param_3 != NULL) { - param_3[r29] = 0xffff; + param_3[someIndex] = 0xFFFF; } - param_4.field_0x0 = local_ac - f29; - param_4.field_0x4 = local_b4 - local_b0 + mFont->getLeading(); + + size.field_0x0 = local_ac - f29; + size.field_0x4 = local_b4 - local_b0 + mFont->getLeading(); + if (!param_6) { - field_0x2c = f30; - mCursorV = f28; + mCursorH = prevCursorH; + mCursorV = prevCursorV; } - return local_a8 - f28; + + return local_a8 - prevCursorV; } /* 802F52E8-802F5410 2EFC28 0128+00 2/1 0/0 0/0 .text doCtrlCode__8J2DPrintFi */ -void J2DPrint::doCtrlCode(int param_0) { - switch (param_0) { - case 8: - field_0x2c -= field_0x34; +void J2DPrint::doCtrlCode(int iCharacter) { + switch (iCharacter) { + case '\b': + mCursorH -= field_0x34; field_0x34 = 0.0f; break; - case 9: + case '\t': if (field_0x20 > 0) { - f32 fVar1 = field_0x2c; - field_0x2c = field_0x20 + field_0x20 * ((int)field_0x2c / field_0x20); - field_0x34 = field_0x2c - fVar1; + f32 fVar1 = mCursorH; + mCursorH = field_0x20 + field_0x20 * ((int)mCursorH / field_0x20); + field_0x34 = mCursorH - fVar1; } break; - case 10: + case '\n': field_0x34 = 0.0f; - field_0x2c = field_0x24; + mCursorH = field_0x24; mCursorV += field_0x14; break; - case 0xd: + case '\r': field_0x34 = 0.0f; - field_0x2c = field_0x24; + mCursorH = field_0x24; break; - case 0x1c: - field_0x2c += 1.0f; + case '\x1C': + mCursorH += 1.0f; break; - case 0x1d: - field_0x2c -= 1.0f; + case '\x1D': + mCursorH -= 1.0f; break; - case 0x1e: + case '\x1E': mCursorV -= 1.0f; break; - case 0x1f: + case '\x1F': mCursorV += + 1.0f; } } /* 802F5410-802F594C 2EFD50 053C+00 1/1 0/0 0/0 .text doEscapeCode__8J2DPrintFPPCUcUc */ -u16 J2DPrint::doEscapeCode(u8 const** param_0, u8 param_1) { - u8 const* puVar9 = *param_0; - u16 uVar11 = 0; - u16 uVar3; - for (int iVar10 = 0; iVar10 < 2; iVar10++) { - if (mFont->isLeadByte(**param_0)) { - uVar3 = ((**param_0) << 8) | (*param_0)[1]; - (*param_0) += 2; +u16 J2DPrint::doEscapeCode(const u8** ppu8String, u8 alpha) { + const u8* pStringStart = *ppu8String; + u16 code = 0; + + u16 codeLower; + for (int i = 0; i < 2; i++) { + if (mFont->isLeadByte(**ppu8String)) { + codeLower = ((**ppu8String) << 8) | (*ppu8String)[1]; + (*ppu8String) += 2; } else { - uVar3 = **param_0; - (*param_0)++; + codeLower = **ppu8String; + (*ppu8String)++; } - if (uVar3 >= 0x80 || uVar3 < 0x20) { - *param_0 = puVar9; + + if (codeLower >= 0x80 || codeLower < 0x20) { + *ppu8String = pStringStart; return 0; } - uVar11 = ((uVar11) << 8) | uVar3; + + code = (code << 8) | codeLower; } JUtility::TColor local_40 = field_0x8; JUtility::TColor local_44 = field_0xc; - switch(uVar11) { - case 'CU': - mCursorV -= getNumberF32(param_0, 1.0f, 0.0f, 10); + f32 scaleNumber; + + switch(code) { + case 'CU': // Cursor Up + mCursorV -= getNumberF32(ppu8String, 1.0f, 0.0f, 10); break; - case 'CD': - mCursorV += getNumberF32(param_0, 1.0f, 0.0f, 10); + case 'CD': // Cursor Down + mCursorV += getNumberF32(ppu8String, 1.0f, 0.0f, 10); break; - case 'CL': - field_0x2c -= getNumberF32(param_0, 1.0f, 0.0f, 10); + case 'CL': // Cursor Left + mCursorH -= getNumberF32(ppu8String, 1.0f, 0.0f, 10); break; - case 'CR': - field_0x2c += getNumberF32(param_0, 1.0f, 0.0f, 10); + case 'CR': // Cursor Right + mCursorH += getNumberF32(ppu8String, 1.0f, 0.0f, 10); break; - case 'LU': + case 'LU': // Line Up? mCursorV -= field_0x14; break; - case 'LD': + case 'LD': // Line Down? mCursorV += field_0x14; break; - case 'ST': - s32 val = getNumberS32(param_0, field_0x20, field_0x20, 10); - if (val > 0) { - field_0x20 = val; + case 'ST': { + s32 number = getNumberS32(ppu8String, field_0x20, field_0x20, 10); + if (number > 0) { + field_0x20 = number; } break; - case 'CC': - field_0x8 = getNumberS32(param_0, *(u32*)&mCharColor, *(u32*)&field_0x8, 16); + } + case 'CC': { // Character Color + field_0x8 = getNumberS32(ppu8String, (u32)mCharColor, (u32)field_0x8, 16); local_40 = field_0x8; - local_40.a = local_40.a * param_1 / 0xff; - local_44.a = local_44.a * param_1 / 0xff; - JUtility::TColor* local_68; - if (field_0x22 != 0) { - local_68 = &local_44; - } - else { - local_68 = &local_40; - } - mFont->setGradColor(local_40, *local_68); + local_40.a = local_40.a * alpha / 0xff; + local_44.a = local_44.a * alpha / 0xff; + + mFont->setGradColor(local_40, field_0x22 != 0 ? local_44 : local_40); break; - case 'GC': - field_0xc = getNumberS32(param_0, *(u32*)&mGradColor, *(u32*)&field_0xc, 16); + } + case 'GC': { // Gradient Color + field_0xc = getNumberS32(ppu8String, (u32)mGradColor, (u32)field_0xc, 16); local_44 = field_0xc; - local_40.a = local_40.a * param_1 / 0xff; - local_44.a = local_44.a * param_1 / 0xff; - JUtility::TColor* local_74; - if (field_0x22 != 0) { - local_74 = &local_44; - } - else { - local_74 = &local_40; - } - mFont->setGradColor(local_40, *local_74); + local_40.a = local_40.a * alpha / 0xFF; + local_44.a = local_44.a * alpha / 0xFF; + + mFont->setGradColor(local_40, field_0x22 != 0 ? local_44 : local_40); break; - case 'FX': - f32 dVar13 = getNumberF32(param_0, mFontSizeX, field_0x18, 10); - if (dVar13 >= 0) { - field_0x18 = dVar13; + } + case 'FX': { // Font Scale X + scaleNumber = getNumberF32(ppu8String, mFontSizeX, mScaleX, 10); + if (scaleNumber >= 0) { + mScaleX = scaleNumber; } break; - case 'FY': - f32 dVar14 = getNumberF32(param_0, mFontSizeY, field_0x1c, 10); - if (dVar14 >= 0) { - field_0x1c = dVar14; + } + case 'FY': { // Font Scale Y + scaleNumber = getNumberF32(ppu8String, mFontSizeY, mScaleY, 10); + if (scaleNumber >= 0) { + mScaleY = scaleNumber; } break; - case 'SH': - field_0x10 = getNumberF32(param_0, field_0x48, field_0x10, 10); + } + case 'SH': // Space Horizontal? + field_0x10 = getNumberF32(ppu8String, mCharSpacing, field_0x10, 10); break; - case 'SV': - field_0x14 = getNumberF32(param_0, field_0x4c, field_0x14, 10); + case 'SV': // Space Vertical? + field_0x14 = getNumberF32(ppu8String, mLineSpacing, field_0x14, 10); break; - case 'GM': - s32 isZero = getNumberS32(param_0, field_0x22 == 0, field_0x22, 10) == 0; - field_0x22 = isZero == 0; - local_40.a = local_40.a * param_1 / 0xff; - local_44.a = local_44.a * param_1 / 0xff; - JUtility::TColor* local_80; - if (field_0x22 != 0) { - local_80 = &local_44; - } - else { - local_80 = &local_40; - } - mFont->setGradColor(local_40, *local_80); + case 'GM': { + field_0x22 = getNumberS32(ppu8String, field_0x22 == 0, field_0x22, 10); + local_40.a = local_40.a * alpha / 0xFF; + local_44.a = local_44.a * alpha / 0xFF; + + mFont->setGradColor(local_40, field_0x22 != 0 ? local_44 : local_40); break; + } case 'HM': break; default: - *param_0 = puVar9; - uVar11 = 0; + *ppu8String = pStringStart; + code = 0; break; } - return uVar11; + + return code; } /* 802F594C-802F59C0 2F028C 0074+00 3/3 0/0 0/0 .text initchar__8J2DPrintFv */ void J2DPrint::initchar() { field_0x8 = mCharColor; field_0xc = mGradColor; - field_0x10 = field_0x48; - field_0x14 = field_0x4c; + field_0x10 = mCharSpacing; + field_0x14 = mLineSpacing; field_0x22 = field_0x5a; field_0x20 = field_0x58; - field_0x18 = mFontSizeX; - field_0x1c = mFontSizeY; + mScaleX = mFontSizeX; + mScaleY = mFontSizeY; } /* 802F59C0-802F5AC4 2F0300 0104+00 1/1 0/0 0/0 .text getNumberS32__8J2DPrintFPPCUclli */ -s32 J2DPrint::getNumberS32(u8 const** param_0, s32 param_1, s32 param_2, int base) { - const u8* puVar1 = *param_0; - s32 uVar2 = param_1; - if (*puVar1 != '[') { - return param_1; +s32 J2DPrint::getNumberS32(const u8** ppu8String, s32 defaultValue, s32 errorValue, int base) { + const u8* pStringStart = *ppu8String; + if (**ppu8String != '[') { + return defaultValue; } - (*param_0)++; - uVar2 = 0; - char* local_28; + + (*ppu8String)++; + + s32 number = 0; + char* pEnd; if (base == 10) { - uVar2 = strtol((char*)*param_0, &local_28, base); + number = strtol((char*)*ppu8String, &pEnd, base); } else if (base == 16) { - uVar2 = strtoul((char*)*param_0, &local_28, base); - if ((u32)local_28 - (u32)*param_0 != 8) { - if ((u32)local_28 - (u32)*param_0 == 6) { - uVar2 = (uVar2 << 8) | 0xff; + number = strtoul((char*)*ppu8String, &pEnd, base); + if ((u32)pEnd - (u32)*ppu8String != 8) { + if ((u32)pEnd - (u32)*ppu8String == 6) { + number = (number << 8) | 0xFF; } else { - *param_0 = puVar1; - return param_2; + *ppu8String = pStringStart; + return errorValue; } } } - if (local_28[0] != ']') { - *param_0 = puVar1; - return param_2; + + if (pEnd[0] != ']') { + *ppu8String = pStringStart; + return errorValue; } else { - if ((char*)*param_0 == (char*)local_28) { - *param_0 = (const u8*)local_28 + 1; - return param_1; + if ((char*)*ppu8String == pEnd) { + *ppu8String = (const u8*)pEnd + 1; + return defaultValue; } else { - *param_0 = (const u8*)local_28 + 1; + *ppu8String = (const u8*)pEnd + 1; } } - return uVar2; + + return number; } /* 802F5AC4-802F5BF8 2F0404 0134+00 1/1 0/0 0/0 .text getNumberF32__8J2DPrintFPPCUcffi */ -f32 J2DPrint::getNumberF32(u8 const** param_0, f32 param_1, f32 param_2, int base) { - const u8* puVar1 = *param_0; - s32 uVar2 = param_1; - if (*puVar1 != '[') { - return param_1; +f32 J2DPrint::getNumberF32(const u8** ppu8String, f32 defaultValue, f32 errorValue, int base) { + const u8* pStringStart = *ppu8String; + if (**ppu8String != '[') { + return defaultValue; } - (*param_0)++; - uVar2 = 0; - char* local_28; + + (*ppu8String)++; + + s32 number = 0; + char* pEnd; if (base == 10) { - uVar2 = strtol((char*)*param_0, &local_28, base); + number = strtol((char*)*ppu8String, &pEnd, base); } else if (base == 16) { - uVar2 = strtoul((char*)*param_0, &local_28, base); - if ((u32)local_28 - (u32)*param_0 != 8) { - if ((u32)local_28 - (u32)*param_0 == 6) { - uVar2 = (uVar2 << 8) | 0xff; + number = strtoul((char*)*ppu8String, &pEnd, base); + if ((u32)pEnd - (u32)*ppu8String != 8) { + if ((u32)pEnd - (u32)*ppu8String == 6) { + number = (number << 8) | 0xFF; } else { - *param_0 = puVar1; - return param_2; + *ppu8String = pStringStart; + return errorValue; } } } - if (local_28[0] != ']') { - *param_0 = puVar1; - return param_2; + + if (pEnd[0] != ']') { + *ppu8String = pStringStart; + return errorValue; } else { - if ((char*)*param_0 == (char*)local_28) { - *param_0 = (const u8*)local_28 + 1; - return param_1; + if ((char*)*ppu8String == pEnd) { + *ppu8String = (const u8*)pEnd + 1; + return defaultValue; } else { - *param_0 = (const u8*)local_28 + 1; + *ppu8String = (const u8*)pEnd + 1; } } - return uVar2; -} \ No newline at end of file + + return number; +} diff --git a/src/JSystem/JMessage/control.cpp b/src/JSystem/JMessage/control.cpp index 321de9a6a2..1159f3a643 100644 --- a/src/JSystem/JMessage/control.cpp +++ b/src/JSystem/JMessage/control.cpp @@ -7,9 +7,16 @@ /* 802A7548-802A758C 2A1E88 0044+00 0/0 2/2 0/0 .text __ct__Q28JMessage8TControlFv */ JMessage::TControl::TControl() - : pSequenceProcessor_(NULL), pRenderingProcessor_(NULL), messageCode_(0xFFFF), - field_0xe(0xFFFF), pResourceCache_(NULL), pEntry_(NULL), pMessageText_begin_(0), - pszText_update_current_(NULL), field_0x20(0) {} + : pSequenceProcessor_(NULL), + pRenderingProcessor_(NULL), + uMessageGroupID_(0xFFFF), + uMessageID_(0xFFFF), + pResourceCache_(NULL), + pEntry_(NULL), + pMessageText_begin_(NULL), + pszText_update_current_(NULL), + pMessageText_current_(NULL) + {} /* 802A758C-802A75D4 2A1ECC 0048+00 1/0 2/2 0/0 .text __dt__Q28JMessage8TControlFv */ JMessage::TControl::~TControl() {} @@ -17,9 +24,9 @@ JMessage::TControl::~TControl() {} /* 802A75D4-802A7634 2A1F14 0060+00 0/0 9/9 0/0 .text reset__Q28JMessage8TControlFv */ void JMessage::TControl::reset() { pEntry_ = NULL; - pMessageText_begin_ = 0; + pMessageText_begin_ = NULL; pszText_update_current_ = NULL; - field_0x20 = 0; + pMessageText_current_ = NULL; oStack_renderingProcessor_.clear(); if (pSequenceProcessor_ != NULL) { @@ -38,7 +45,6 @@ int JMessage::TControl::update() { } pszText_update_current_ = pSequenceProcessor_->process(NULL); - if (pszText_update_current_ == NULL) { pMessageText_begin_ = 0; return 0; @@ -50,44 +56,48 @@ int JMessage::TControl::update() { /* 802A76BC-802A77E8 2A1FFC 012C+00 0/0 5/5 0/0 .text render__Q28JMessage8TControlFv */ void JMessage::TControl::render() { if (isReady_render_()) { - pRenderingProcessor_->setBegin_messageEntryText(pResourceCache_, pEntry_, field_0x20); + pRenderingProcessor_->setBegin_messageEntryText(pResourceCache_, pEntry_, pMessageText_current_); pRenderingProcessor_->oStack_ = oStack_renderingProcessor_; pRenderingProcessor_->process(pszText_update_current_); } } /* 802A77E8-802A78F4 2A2128 010C+00 0/0 1/1 0/0 .text setMessageCode__Q28JMessage8TControlFUsUs */ -int JMessage::TControl::setMessageCode(u16 param_0, u16 param_1) { - return setMessageCode_inReset_(getProcessor(), param_0, param_1); +int JMessage::TControl::setMessageCode(u16 u16GroupID, u16 u16Index) { + TProcessor* pProcessor = getProcessor(); + JUT_ASSERT(120, pProcessor!=0); + return setMessageCode_inReset_(pProcessor, u16GroupID, u16Index); } /* 802A78F4-802A7A20 2A2234 012C+00 0/0 6/6 0/0 .text setMessageID__Q28JMessage8TControlFUlUlPb */ -int JMessage::TControl::setMessageID(u32 param_0, u32 param_1, bool* param_2) { +int JMessage::TControl::setMessageID(u32 uMsgID, u32 param_1, bool* pbValid) { TProcessor* pProcessor = getProcessor(); + JUT_ASSERT(132, pProcessor!=0); - u32 code = pProcessor->toMessageCode_messageID(param_0, param_1, param_2); - if (code == -1) { + u32 uCode = pProcessor->toMessageCode_messageID(uMsgID, param_1, pbValid); + if (uCode == 0xFFFFFFFF) { return 0; } - return setMessageCode_inReset_(pProcessor, code >> 0x10, code & 0xFFFF); + return setMessageCode_inReset_(pProcessor, uCode >> 16, uCode & 0xFFFF); } /* 802A7A20-802A7AF8 2A2360 00D8+00 2/2 1/1 0/0 .text * setMessageCode_inSequence___Q28JMessage8TControlFPCQ28JMessage10TProcessorUsUs */ -bool JMessage::TControl::setMessageCode_inSequence_(JMessage::TProcessor const* pProcessor, - u16 messageCode, u16 messageIndex) { - pEntry_ = pProcessor->getMessageEntry_messageCode(messageCode, messageIndex); - +bool JMessage::TControl::setMessageCode_inSequence_(JMessage::TProcessor const* pProcessor, u16 u16GroupID, u16 u16Index) { + pEntry_ = pProcessor->getMessageEntry_messageCode(u16GroupID, u16Index); if (pEntry_ == NULL) { return false; } - messageCode_ = messageCode; - field_0xe = messageIndex; + uMessageGroupID_ = u16GroupID; + uMessageID_ = u16Index; + pResourceCache_ = pProcessor->getResourceCache(); + JUT_ASSERT(155, pResourceCache_!=0); + pMessageText_begin_ = pResourceCache_->getMessageText_messageEntry(pEntry_); - field_0x20 = pMessageText_begin_; + pMessageText_current_ = pMessageText_begin_; oStack_renderingProcessor_.clear(); return true; } diff --git a/src/JSystem/JMessage/data.cpp b/src/JSystem/JMessage/data.cpp index ceb56a0849..9f7c0f0c11 100644 --- a/src/JSystem/JMessage/data.cpp +++ b/src/JSystem/JMessage/data.cpp @@ -1,10 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: data -// - #include "JSystem/JMessage/data.h" -#include "dol2asm.h" /* 80455818-80455820 003E18 0004+04 0/0 1/1 0/0 .sdata2 ga4cSignature__Q28JMessage4data */ -SECTION_SDATA2 u32 JMessage::data::ga4cSignature = 'MESG'; \ No newline at end of file +const u32 JMessage::data::ga4cSignature = 'MESG'; + +const u32 JMessage::data::ga4cSignature_color = 'MGCL'; diff --git a/src/JSystem/JMessage/locale.cpp b/src/JSystem/JMessage/locale.cpp index 93ea6af5ea..c1595a5763 100644 --- a/src/JSystem/JMessage/locale.cpp +++ b/src/JSystem/JMessage/locale.cpp @@ -1,60 +1,58 @@ -// -// Generated By: dol2asm -// Translation Unit: locale -// - #include "JSystem/JMessage/locale.h" -#include /* 802A9528-802A958C 2A3E68 0064+00 0/0 1/0 0/0 .text * parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc */ -int JMessage::locale::parseCharacter_ShiftJIS(char const** str) { - u8 c = **str; - int ret = c; - *str = *str + 1; +int JMessage::locale::parseCharacter_ShiftJIS(const char** ppszText) { + int c = *(u8*)*ppszText & 0xFF; + (*ppszText)++; if (isLeadByte_ShiftJIS(c)) { - ret <<= 8; - ret |= *(u8*)*str; - *str = *str + 1; + c <<= 8; + c |= *(u8*)*ppszText & 0xFF; + (*ppszText)++; } - return ret; + return c; } /* 802A958C-802A968C 2A3ECC 0100+00 0/0 1/0 0/0 .text parseCharacter_UTF8__Q28JMessage6localeFPPCc */ -int JMessage::locale::parseCharacter_UTF8(char const** str) { - int c = *(u8*)*str; - int ret = c; - *str = *str + 1; +int JMessage::locale::parseCharacter_UTF8(const char** ppszText) { + int c = *(u8*)*ppszText & 0xFF; + (*ppszText)++; if (c & 0x80) { - if ((c & 0xe0) == 0xc0) { - ret = (ret & 0x1f) << 6; - ret |= **str & 0x3f; - *str = *str + 1; - } else if ((c & 0xf0) == 0xe0) { - ret = (ret & 0xf) << 6; - ret |= **str & 0x3f; - *str = *str + 1; - ret <<= 6; - ret |= **str & 0x3f; - *str = *str + 1; - } else if ((c & 0xf8) == 0xf0) { - ret = (ret & 0x7) << 6; - ret |= **str & 0x3f; - *str = *str + 1; - ret <<= 6; - ret |= **str & 0x3f; - *str = *str + 1; - ret <<= 6; - ret |= **str & 0x3f; - *str = *str + 1; + if ((c & 0xE0) == 0xC0) { + c &= 0x1F; + c <<= 6; + c |= (*(u8*)*ppszText & 0xFF) & 0x3F; + (*ppszText)++; + } else if ((c & 0xF0) == 0xE0) { + c &= 0xF; + c <<= 6; + c |= (*(u8*)*ppszText & 0xFF) & 0x3F; + (*ppszText)++; + + c <<= 6; + c |= (*(u8*)*ppszText & 0xFF) & 0x3F; + (*ppszText)++; + } else if ((c & 0xF8) == 0xF0) { + c &= 0x7; + c <<= 6; + c |= (*(u8*)*ppszText & 0xFF) & 0x3F; + (*ppszText)++; + + c <<= 6; + c |= (*(u8*)*ppszText & 0xFF) & 0x3F; + (*ppszText)++; + + c <<= 6; + c |= (*(u8*)*ppszText & 0xFF) & 0x3F; + (*ppszText)++; } else { - ret = -1; + c = -1; } } - return ret; + return c; } diff --git a/src/JSystem/JMessage/processor.cpp b/src/JSystem/JMessage/processor.cpp index 7df27c1ada..a59b2d277d 100644 --- a/src/JSystem/JMessage/processor.cpp +++ b/src/JSystem/JMessage/processor.cpp @@ -1,11 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: processor -// - #include "JSystem/JMessage/processor.h" #include "JSystem/JMessage/control.h" #include "JSystem/JUtility/JUTAssert.h" +#include /* 802A7AF8-802A7B40 2A2438 0048+00 1/0 2/2 0/0 .text __dt__Q28JMessage10TReferenceFv */ JMessage::TReference::~TReference() {} @@ -26,87 +22,100 @@ void JMessage::TProcessor::reset() { /* 802A7BF8-802A7C30 2A2538 0038+00 1/1 8/8 0/0 .text * stack_pushCurrent__Q28JMessage10TProcessorFPCc */ -void JMessage::TProcessor::stack_pushCurrent(char const* string) { - if (string != NULL) { +void JMessage::TProcessor::stack_pushCurrent(char const* pszText) { + if (pszText != NULL) { if (!oStack_.IsPushable()) { + JGADGET_WARNMSG(113, "stack full"); return; } - stack_pushCurrent_(string); + stack_pushCurrent_(pszText); } } /* 802A7C30-802A7C54 2A2570 0024+00 1/1 0/0 0/0 .text stack_popCurrent__Q28JMessage10TProcessorFv */ void JMessage::TProcessor::stack_popCurrent() { + JGADGET_ASSERTWARN(122, !oStack_.empty()); stack_popCurrent_(); } /* 802A7C54-802A7CD4 2A2594 0080+00 1/1 1/1 0/0 .text * getResource_groupID__Q28JMessage10TProcessorCFUs */ -const JMessage::TResource* JMessage::TProcessor::getResource_groupID(u16 groupID) const { - if (isResourceCache_groupID(groupID)) { +const JMessage::TResource* JMessage::TProcessor::getResource_groupID(u16 u16GroupID) const { + if (isResourceCache_groupID(u16GroupID)) { return pResourceCache_; } - // Is there another way to do this? - ((JMessage::TProcessor*)this)->pResourceCache_ = getResource_groupID_uncached(groupID); + pResourceCache_ = getResource_groupID_uncached(u16GroupID); return pResourceCache_; } /* 802A7CD4-802A7E38 2A2614 0164+00 0/0 1/1 0/0 .text * toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb */ -// NONMATCHING regalloc -u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, bool* param_2) const { - const TResource* this_00 = getResourceCache(); - if (this_00 != NULL) { - u16 uVar4 = this_00->toMessageIndex_messageID(param_0, param_1, param_2); - if (uVar4 != 0xffff) { - return uVar4 | (this_00->getGroupID() << 16); +// NONMATCHING - regalloc, likely due to wrong enumerator implementation +u32 JMessage::TProcessor::toMessageCode_messageID(u32 uMsgID, u32 param_1, bool* pbValid) const { + const TResource* pResourceCache = getResourceCache(); + if (pResourceCache != NULL) { + u16 u16Index = pResourceCache->toMessageIndex_messageID(uMsgID, param_1, pbValid); + if (u16Index != 0xFFFF) { + return u16Index | (pResourceCache->getGroupID() << 16); } } - TResourceContainer* this_01 = getResourceContainer(); - if (this_01 == NULL) { - return -1; + + TResourceContainer* pResourceContainer = getResourceContainer(); + if (pResourceContainer == NULL) { + return 0xFFFFFFFF; } - JGadget::TContainerEnumerator_const enumerator(this_01->getResourceContainer()); - const TResource* this_02; + JGadget::TContainerEnumerator_const enumerator(pResourceContainer->getResourceContainer()); + const TResource* pResource; while (enumerator) { - this_02 = (const TResource*)&(*enumerator); - if (this_02 != this_00) { - u16 uVar4 = this_02->toMessageIndex_messageID(param_0, param_1, param_2); - if (uVar4 != 0xffff) { - ((JMessage::TProcessor*)this)->pResourceCache_ = this_02; - return uVar4 | (this_02->getGroupID() << 0x10); + pResource = (const TResource*)&(*enumerator); + if (pResource != pResourceCache) { + u16 u16Index = pResource->toMessageIndex_messageID(uMsgID, param_1, pbValid); + if (u16Index != 0xFFFF) { + ((JMessage::TProcessor*)this)->pResourceCache_ = pResource; + return u16Index | (pResource->getGroupID() << 16); } } } - return -1; + + return 0xFFFFFFFF; } /* 802A7E38-802A7EDC 2A2778 00A4+00 1/1 0/0 0/0 .text * on_select_begin__Q28JMessage10TProcessorFPFPQ28JMessage10TProcessor_PCcPCvPCcUl */ -void JMessage::TProcessor::on_select_begin(char const* (*param_0)(JMessage::TProcessor*), - void const* param_1, char const* param_2, u32 param_3) { - if (stack_isPushable()) { +void JMessage::TProcessor::on_select_begin(char const* (*pfn)(JMessage::TProcessor*), + void const* pOffset, char const* pcBase, u32 uNumber) { + JUT_ASSERT(191, uNumber>0); + + if (!stack_isPushable()) { + JGADGET_WARNMSG(194, "stack full"); + } else { oProcess_.reset_select(); - oProcess_.rData.pfn = param_0; - oProcess_.rData.pcBase = param_2; - oProcess_.rData.pOffset = param_1; - oProcess_.rData.uRest = param_3; - - const char* psz = param_0(this); + oProcess_.rData.pfn = pfn; + oProcess_.rData.pcBase = pcBase; + oProcess_.rData.pOffset = pOffset; + oProcess_.rData.uRest = uNumber; + + JUT_ASSERT(205, pfn!=0); + const char* psz = pfn(this); + JUT_ASSERT(207, psz!=0); + stack_pushCurrent_(psz); - do_select_begin(param_3); + do_select_begin(uNumber); } } /* 802A7EDC-802A7F34 2A281C 0058+00 1/1 0/0 0/0 .text on_select_end__Q28JMessage10TProcessorFv */ void JMessage::TProcessor::on_select_end() { + TProcess_::rdata& rData = oProcess_.rData; + JUT_ASSERT(219, rData.uRest==0); oProcess_.reset_normal(); + JUT_ASSERT(223, stack_isPushable()); stack_popCurrent_(); do_select_end(); } @@ -115,8 +124,17 @@ void JMessage::TProcessor::on_select_end() { * on_select_separate__Q28JMessage10TProcessorFv */ void JMessage::TProcessor::on_select_separate() { stack_popCurrent_(); + JUT_ASSERT(234, stack_isPushable()); + + TProcess_::rdata& rData = oProcess_.rData; + JUT_ASSERT(237, rData.uRest>0); + + const char* (*pfn)(TProcessor*) = rData.pfn; + JUT_ASSERT(240, pfn!=0); + + const char* psz = pfn(this); + JUT_ASSERT(242, psz!=0); - const char* psz = oProcess_.rData.pfn(this); stack_pushCurrent_(psz); do_select_separate(); } @@ -126,23 +144,23 @@ void JMessage::TProcessor::on_select_separate() { void JMessage::TProcessor::do_reset() {} /* 802A7FC4-802A7FC8 2A2904 0004+00 3/0 0/0 0/0 .text do_begin__Q28JMessage10TProcessorFPCvPCc */ -void JMessage::TProcessor::do_begin(void const* param_0, char const* param_1) {} +void JMessage::TProcessor::do_begin(void const* pEntry, char const* pszText) {} /* 802A7FC8-802A7FCC 2A2908 0004+00 3/0 0/0 0/0 .text do_end__Q28JMessage10TProcessorFv */ void JMessage::TProcessor::do_end() {} /* 802A7FCC-802A7FD0 2A290C 0004+00 3/0 0/0 0/0 .text do_character__Q28JMessage10TProcessorFi */ -void JMessage::TProcessor::do_character(int param_0) {} +void JMessage::TProcessor::do_character(int iCharacter) {} /* 802A7FD0-802A7FD8 2A2910 0008+00 3/0 0/0 0/0 .text do_tag__Q28JMessage10TProcessorFUlPCvUl */ -bool JMessage::TProcessor::do_tag(u32 param_0, void const* param_1, u32 param_2) { +bool JMessage::TProcessor::do_tag(u32 uTag, void const* pData, u32 uSize) { return false; } /* 802A7FD8-802A7FDC 2A2918 0004+00 3/0 6/0 0/0 .text do_select_begin__Q28JMessage10TProcessorFUl */ -void JMessage::TProcessor::do_select_begin(u32 param_0) {} +void JMessage::TProcessor::do_select_begin(u32 uNumber) {} /* 802A7FDC-802A7FE0 2A291C 0004+00 3/0 6/0 0/0 .text do_select_end__Q28JMessage10TProcessorFv */ void JMessage::TProcessor::do_select_end() {} @@ -154,22 +172,33 @@ void JMessage::TProcessor::do_select_separate() {} /* 802A7FE4-802A8084 2A2924 00A0+00 1/1 0/0 0/0 .text on_tag___Q28JMessage10TProcessorFv */ void JMessage::TProcessor::on_tag_() { - u32 size; - u8* psz = (u8*)getCurrent(); - size = *psz; + u32 uSize; + char* psz = (char*)getCurrent(); + JUT_ASSERT(292, psz!=0); + JUT_ASSERT(293, psz[-1]==data::gcTagBegin); - pszCurrent_ = size + (char*)psz + -1; + uSize = *(u8*)psz; + pszCurrent_ = uSize + psz - 1; - u32 tag = (psz[1] << 0x8) | psz[2]; - tag <<= 8; - tag |= psz[3]; + psz++; - on_tag(tag, &psz[4], size - 5); + u32 uTag = *(u8*)psz & 0xFF; + psz++; + + uTag <<= 8; + uTag |= *(u8*)psz & 0xFF; + psz++; + + uTag <<= 8; + uTag |= *(u8*)psz & 0xFF; + psz++; + + on_tag(uTag, psz, uSize - 5); } /* 802A8084-802A8088 2A29C4 0004+00 2/0 4/0 0/0 .text do_resetStatus___Q28JMessage10TProcessorFPCc */ -void JMessage::TProcessor::do_resetStatus_(char const* param_0) {} +void JMessage::TProcessor::do_resetStatus_(char const* pszText) {} /* 802A8088-802A8090 2A29C8 0008+00 2/0 4/0 0/0 .text * do_setBegin_isReady___Q28JMessage10TProcessorCFv */ @@ -178,46 +207,58 @@ bool JMessage::TProcessor::do_setBegin_isReady_() const { } /* 802A8090-802A81EC 2A29D0 015C+00 2/2 0/0 0/0 .text do_tag___Q28JMessage10TProcessorFUlPCvUl */ -void JMessage::TProcessor::do_tag_(u32 uTag, void const* data, u32 uSize) { - u32 group = data::getTagGroup(uTag); - u32 code = data::getTagCode(uTag); +void JMessage::TProcessor::do_tag_(u32 uTag, void const* pData, u32 uSize) { + u8 uGroupID = data::getTagGroup(uTag); + unsigned int uCode = data::getTagCode(uTag); - switch (group) { + switch (uGroupID) { case 0xFF: - switch (code) { + switch (uCode & 0xFFFF) { case 4: - stack_pushCurrent( - on_word(JGadget::binary::TParseValue::parse(data))); + JUT_ASSERT(331, uSize==4); + stack_pushCurrent(on_word(JGadget::binary::TParseValue::parse(pData))); break; case 5: - stack_pushCurrent(on_message( - JGadget::binary::TParseValue::parse(data))); + JUT_ASSERT(341, uSize==4); + stack_pushCurrent(on_message(JGadget::binary::TParseValue::parse(pData))); break; + default: + JGADGET_WARNMSG1(351, "unknown system-tag-code : ", uCode & 0xFFFF); } break; case 0xFE: - stack_pushCurrent(on_word(code)); + JUT_ASSERT(356, uSize==0); + stack_pushCurrent(on_word(uCode & 0xFFFF)); break; case 0xFD: - stack_pushCurrent(on_message_limited(code)); + JUT_ASSERT(361, uSize==0); + stack_pushCurrent(on_message_limited(uCode)); break; - case 0xF6: - on_select_begin(process_onSelect_limited_, data, (char*)data + uSize, code); - break; - case 0xF5: - on_select_begin(process_onSelect_, data, (char*)data + uSize, code); + case 0xF6: { + u32 uNumber = uCode & 0xFFFF; + JUT_ASSERT(368, uSize==4*uNumber); + on_select_begin(process_onSelect_limited_, pData, (char*)pData + uSize, uCode); break; } + case 0xF5: + u32 uNumber = uCode & 0xFFFF; + JUT_ASSERT(377, uSize==4*uNumber); + on_select_begin(process_onSelect_, pData, (char*)pData + uSize, uCode); + break; + } + + JGADGET_WARNMSG4(387, "unknown tag-value : [", (unsigned int)uGroupID, "-", uCode & 0xFFFF, ']'); } /* 802A81EC-802A828C 2A2B2C 00A0+00 2/2 0/0 0/0 .text * process_character___Q28JMessage10TProcessorFv */ bool JMessage::TProcessor::process_character_() { - int character = on_parseCharacter(&pszCurrent_); + JUT_ASSERT(397, pszCurrent_!=0); + int iCharacter = on_parseCharacter(&pszCurrent_); - switch (character) { + switch (iCharacter) { case 0: - if (!oProcess_.pfnProcess_CharacterEnd(this)) { + if (!oProcess_.pfnProcess_onCharacterEnd(this)) { return false; } break; @@ -225,7 +266,7 @@ bool JMessage::TProcessor::process_character_() { on_tag_(); break; default: - on_character(character); + on_character(iCharacter); } return true; @@ -234,6 +275,8 @@ bool JMessage::TProcessor::process_character_() { /* 802A828C-802A82F4 2A2BCC 0068+00 6/6 6/6 0/0 .text * process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ bool JMessage::TProcessor::process_onCharacterEnd_normal_(JMessage::TProcessor* pThis) { + JUT_ASSERT(420, pThis->oProcess_.pfnProcess_onCharacterEnd== &process_onCharacterEnd_normal_); + if (!pThis->oStack_.empty()) { pThis->stack_popCurrent(); return true; @@ -246,9 +289,14 @@ bool JMessage::TProcessor::process_onCharacterEnd_normal_(JMessage::TProcessor* /* 802A82F4-802A833C 2A2C34 0048+00 1/1 0/0 0/0 .text * process_onCharacterEnd_select___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ bool JMessage::TProcessor::process_onCharacterEnd_select_(JMessage::TProcessor* pThis) { - pThis->oProcess_.rData.uRest--; + JUT_ASSERT(435, pThis->oProcess_.pfnProcess_onCharacterEnd== &process_onCharacterEnd_select_); + JUT_ASSERT(436, !pThis->oStack_.empty()); - if (pThis->oProcess_.rData.uRest != 0) { + TProcess_::rdata& rData = pThis->oProcess_.rData; + rData.uRest--; + + u32 uRest = rData.uRest; + if (uRest != 0) { pThis->on_select_separate(); return true; } @@ -260,77 +308,110 @@ bool JMessage::TProcessor::process_onCharacterEnd_select_(JMessage::TProcessor* /* 802A833C-802A8358 2A2C7C 001C+00 1/1 0/0 0/0 .text * process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ const char* JMessage::TProcessor::process_onSelect_limited_(JMessage::TProcessor* pThis) { - u16 data = JGadget::binary::TParseValue::parse((u16*)pThis->oProcess_.rData.pOffset); + TProcess_::rdata& rData = pThis->oProcess_.rData; + JUT_ASSERT(454, rData.pfn==&process_onSelect_limited_); + JUT_ASSERT(455, rData.pcBase!=0); + JUT_ASSERT(456, rData.pOffset!=0); + JUT_ASSERT(457, rData.uRest>0); - pThis->oProcess_.rData.pOffset = - (void*)((u8*)pThis->oProcess_.rData.pOffset + 2); + u16* puOffset = (u16*)rData.pOffset; + u16 uData = JGadget::binary::TParseValue::parse(puOffset); - return &pThis->oProcess_.rData.pcBase[data]; + rData.pOffset = (void*)(puOffset + 1); + return &rData.pcBase[uData]; } /* 802A8358-802A8374 2A2C98 001C+00 1/1 0/0 0/0 .text * process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ const char* JMessage::TProcessor::process_onSelect_(JMessage::TProcessor* pThis) { - u32 data = JGadget::binary::TParseValue::parse((u32*)pThis->oProcess_.rData.pOffset); + TProcess_::rdata& rData = pThis->oProcess_.rData; + JUT_ASSERT(471, rData.pfn==&process_onSelect_); + JUT_ASSERT(472, rData.pcBase!=0); + JUT_ASSERT(473, rData.pOffset!=0); + JUT_ASSERT(474, rData.uRest>0); - pThis->oProcess_.rData.pOffset = - (void*)((u8*)pThis->oProcess_.rData.pOffset + 4); + u32* puOffset = (u32*)rData.pOffset; + u32 uData = JGadget::binary::TParseValue::parse(puOffset); - return &pThis->oProcess_.rData.pcBase[data]; + rData.pOffset = (void*)(puOffset + 1); + return &rData.pcBase[uData]; } /* 802A8374-802A83B8 2A2CB4 0044+00 0/0 2/2 0/0 .text * __ct__Q28JMessage18TSequenceProcessorFPCQ28JMessage10TReferencePQ28JMessage8TControl */ -JMessage::TSequenceProcessor::TSequenceProcessor(JMessage::TReference const* param_0, - JMessage::TControl* param_1) - : TProcessor(param_0), pControl_(param_1), eStatus_(STATUS_READY) {} +JMessage::TSequenceProcessor::TSequenceProcessor(JMessage::TReference const* pReference, + JMessage::TControl* pControl) + : TProcessor(pReference), + pControl_(pControl), + eStatus_(STATUS_READY) + {} /* 802A83B8-802A8418 2A2CF8 0060+00 1/0 2/2 0/0 .text __dt__Q28JMessage18TSequenceProcessorFv */ JMessage::TSequenceProcessor::~TSequenceProcessor() {} /* 802A8418-802A85A4 2A2D58 018C+00 0/0 1/1 0/0 .text process__Q28JMessage18TSequenceProcessorFPCc */ -const char* JMessage::TSequenceProcessor::process(char const* param_0) { +const char* JMessage::TSequenceProcessor::process(char const* pszText) { do { switch (eStatus_) { case STATUS_NORMAL: break; case STATUS_JUMP: { + JUT_ASSERT(549, pControl_!=0); + if (!on_jump_isReady()) { return pszCurrent_; } eStatus_ = STATUS_NORMAL; - const void* data = oProcess2_.process.jump_process.jumpFn(this); - if (data != NULL) { - on_jump(data, pControl_->getMessageText_begin()); + + TProcess_& process = oProcess2_; + TSequenceProcessor::jumpPfn pfn = process.process.jump_process.jumpFn; + JUT_ASSERT(556, pfn!=0); + + const void* pEntry = pfn(this); + if (pEntry != NULL) { + on_jump(pEntry, pControl_->getMessageText_begin()); } break; } - case STATUS_BRANCH: - u32 tmp = on_branch_queryResult(); - if (tmp > 0x7FFFFFFF) { - switch (tmp) { + case STATUS_BRANCH: { + JUT_ASSERT(567, pControl_!=0); + + u32 queryResult = on_branch_queryResult(); + if (queryResult > 0x7FFFFFFF) { + switch (queryResult) { case -1: return pszCurrent_; case -2: eStatus_ = STATUS_NORMAL; break; + default: + JUT_ASSERT(579, false); } } else { eStatus_ = STATUS_NORMAL; - if (tmp < oProcess2_.process.branch_process.uTarget) { - const void* data = oProcess2_.process.branch_process.branchFn(this, tmp); - if (data != NULL) { - on_branch(data, pControl_->getMessageText_begin()); + TProcess_& process = oProcess2_; + if (queryResult >= process.process.branch_process.uTarget) { + JGADGET_WARNMSG1(588, "unknown result : ", queryResult); + } else { + TSequenceProcessor::branchPfn pfn = process.process.branch_process.branchFn; + JUT_ASSERT(592, pfn!=0); + + const void* pEntry = pfn(this, queryResult); + if (pEntry != NULL) { + on_branch(pEntry, pControl_->getMessageText_begin()); } } } break; } + default: + JUT_ASSERT(602, false); + } - if (pszCurrent_ == param_0) { + if (pszCurrent_ == pszText) { on_end(); return NULL; } @@ -346,59 +427,76 @@ const char* JMessage::TSequenceProcessor::process(char const* param_0) { /* 802A85A4-802A85D0 2A2EE4 002C+00 1/1 0/0 0/0 .text * on_isReady__Q28JMessage18TSequenceProcessorFv */ bool JMessage::TSequenceProcessor::on_isReady() { + JUT_ASSERT(629, eStatus_==STATUS_NORMAL); return do_isReady(); } /* 802A85D0-802A85E4 2A2F10 0014+00 1/1 0/0 0/0 .text * on_jump_register__Q28JMessage18TSequenceProcessorFPFPCQ28JMessage18TSequenceProcessor_PCvUl */ -void JMessage::TSequenceProcessor::on_jump_register(JMessage::TSequenceProcessor::jumpPfn param_0, - u32 param_1) { +void JMessage::TSequenceProcessor::on_jump_register(JMessage::TSequenceProcessor::jumpPfn pfn, u32 u32Target) { + JUT_ASSERT(638, eStatus_==STATUS_NORMAL); eStatus_ = STATUS_JUMP; - oProcess2_.process.jump_process.jumpFn = param_0; - oProcess2_.process.jump_process.u32Target = param_1; + + TProcess_& process = oProcess2_; + process.process.jump_process.jumpFn = pfn; + process.process.jump_process.u32Target = u32Target; } /* 802A85E4-802A8610 2A2F24 002C+00 1/1 0/0 0/0 .text * on_jump_isReady__Q28JMessage18TSequenceProcessorFv */ bool JMessage::TSequenceProcessor::on_jump_isReady() { + JUT_ASSERT(649, eStatus_==STATUS_JUMP); return do_jump_isReady(); } /* 802A8610-802A8690 2A2F50 0080+00 1/1 0/0 0/0 .text * on_jump__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::on_jump(void const* param_0, char const* param_1) { - on_resetStatus_(param_1); - do_jump(param_0, param_1); +void JMessage::TSequenceProcessor::on_jump(void const* pEntry, char const* pszText) { + on_resetStatus_(pszText); + + JUT_ASSERT(658, eStatus_==STATUS_NORMAL); + JUT_ASSERT(659, pEntry!=0); + JUT_ASSERT(660, pszText!=0); + do_jump(pEntry, pszText); } /* 802A8690-802A86A0 2A2FD0 0010+00 1/1 0/0 0/0 .text * on_branch_register__Q28JMessage18TSequenceProcessorFPFPCQ28JMessage18TSequenceProcessorUl_PCvPCvUl */ -void JMessage::TSequenceProcessor::on_branch_register( - JMessage::TSequenceProcessor::branchPfn param_0, void const* param_1, u32 param_2) { - oProcess2_.process.branch_process.branchFn = param_0; - oProcess2_.process.branch_process.pTarget = param_1; - oProcess2_.process.branch_process.uTarget = param_2; +void JMessage::TSequenceProcessor::on_branch_register(JMessage::TSequenceProcessor::branchPfn pfn, void const* pTarget, u32 uTarget) { + JUT_ASSERT(669, eStatus_==STATUS_NORMAL); + + TProcess_& process = oProcess2_; + process.process.branch_process.branchFn = pfn; + process.process.branch_process.pTarget = pTarget; + process.process.branch_process.uTarget = uTarget; } /* 802A86A0-802A86D4 2A2FE0 0034+00 1/1 0/0 0/0 .text * on_branch_query__Q28JMessage18TSequenceProcessorFUl */ -void JMessage::TSequenceProcessor::on_branch_query(u32 param_0) { +void JMessage::TSequenceProcessor::on_branch_query(u32 uCode) { + JUT_ASSERT(680, eStatus_==STATUS_NORMAL); eStatus_ = STATUS_BRANCH; - do_branch_query(param_0); + do_branch_query(uCode); } /* 802A86D4-802A8700 2A3014 002C+00 1/1 0/0 0/0 .text * on_branch_queryResult__Q28JMessage18TSequenceProcessorFv */ u32 JMessage::TSequenceProcessor::on_branch_queryResult() { - return do_branch_queryResult(); + JUT_ASSERT(691, eStatus_==STATUS_BRANCH); + u32 result = do_branch_queryResult(); + return result; } /* 802A8700-802A8780 2A3040 0080+00 1/1 0/0 0/0 .text * on_branch__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::on_branch(void const* param_0, char const* param_1) { - on_resetStatus_(param_1); - do_branch(param_0, param_1); +void JMessage::TSequenceProcessor::on_branch(void const* pEntry, char const* pszText) { + on_resetStatus_(pszText); + + JUT_ASSERT(717, eStatus_==STATUS_NORMAL); + JUT_ASSERT(718, pEntry!=0); + JUT_ASSERT(719, pszText!=0); + do_branch(pEntry, pszText); } /* 802A8780-802A8788 2A30C0 0008+00 1/0 0/0 0/0 .text @@ -415,11 +513,11 @@ bool JMessage::TSequenceProcessor::do_jump_isReady() { /* 802A8790-802A8794 2A30D0 0004+00 1/0 0/0 0/0 .text * do_jump__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::do_jump(void const* param_0, char const* param_1) {} +void JMessage::TSequenceProcessor::do_jump(void const* pEntry, char const* pszText) {} /* 802A8794-802A8798 2A30D4 0004+00 1/0 2/0 0/0 .text * do_branch_query__Q28JMessage18TSequenceProcessorFUl */ -void JMessage::TSequenceProcessor::do_branch_query(u32 param_0) {} +void JMessage::TSequenceProcessor::do_branch_query(u32 uCode) {} /* 802A8798-802A87A0 2A30D8 0008+00 1/0 2/0 0/0 .text * do_branch_queryResult__Q28JMessage18TSequenceProcessorFv */ @@ -429,14 +527,14 @@ s32 JMessage::TSequenceProcessor::do_branch_queryResult() { /* 802A87A0-802A87A4 2A30E0 0004+00 1/0 2/0 0/0 .text * do_branch__Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::do_branch(void const* param_0, char const* param_1) {} +void JMessage::TSequenceProcessor::do_branch(void const* pEntry, char const* pszText) {} /* 802A87A4-802A87C0 2A30E4 001C+00 1/0 2/0 0/0 .text * do_resetStatus___Q28JMessage18TSequenceProcessorFPCc */ -void JMessage::TSequenceProcessor::do_resetStatus_(char const* param_0) { +void JMessage::TSequenceProcessor::do_resetStatus_(char const* pszText) { eStatus_ = STATUS_READY; - if (param_0 != NULL) { + if (pszText != NULL) { eStatus_ = STATUS_NORMAL; } } @@ -449,145 +547,178 @@ bool JMessage::TSequenceProcessor::do_setBegin_isReady_() const { /* 802A87D0-802A87D4 2A3110 0004+00 1/0 2/0 0/0 .text * do_begin___Q28JMessage18TSequenceProcessorFPCvPCc */ -void JMessage::TSequenceProcessor::do_begin_(void const* param_0, char const* param_1) {} +void JMessage::TSequenceProcessor::do_begin_(void const* pEntry, char const* pszText) { + JUT_ASSERT(782, eStatus_==STATUS_NORMAL); +} /* 802A87D4-802A87E0 2A3114 000C+00 1/0 2/0 0/0 .text do_end___Q28JMessage18TSequenceProcessorFv */ void JMessage::TSequenceProcessor::do_end_() { + JUT_ASSERT(789, eStatus_==STATUS_NORMAL); eStatus_ = STATUS_ONE; } /* 802A87E0-802A892C 2A3120 014C+00 2/0 2/0 0/0 .text * do_tag___Q28JMessage18TSequenceProcessorFUlPCvUl */ -void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize) { - char* temp = (char*)data; - u32 group = data::getTagGroup(uTag); - u32 code = data::getTagCode(uTag); +void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* pData, u32 uSize) { + u8 uGroupID = data::getTagGroup(uTag); + unsigned int uCode = data::getTagCode(uTag); - switch (group) { + switch (uGroupID) { case 0xFF: - switch (code) { + switch (uCode & 0xFFFF) { case 0: case 1: case 2: case 3: break; case 6: { - u32 tmp = JGadget::binary::TParseValue::parse(temp); - on_jump_register(process_onJump_, tmp); + JUT_ASSERT(807, uSize==4); + u32 u32Target = JGadget::binary::TParseValue::parse(pData); + on_jump_register(process_onJump_, u32Target); break; } case 7: break; - default: - TProcessor::do_tag_(uTag, temp, uSize); + default: { + TProcessor::do_tag_(uTag, pData, uSize); break; } + } break; - case 0xFC: - on_jump_register(process_onJump_limited_, code); + case 0xFC: { + JUT_ASSERT(828, uSize==0); + on_jump_register(process_onJump_limited_, uCode & 0xFFFF); break; - case 0xFB: - on_branch_register(process_onBranch_limited_, temp, code); + } + case 0xFB: { + u32 uNumber = uCode & 0xFFFF; + JUT_ASSERT(835, uSize==2*uNumber); + on_branch_register(process_onBranch_limited_, pData, uNumber); break; - case 0xFA: - on_branch_register(process_onBranch_, temp, code); + } + case 0xFA: { + u32 uNumber = uCode & 0xFFFF; + JUT_ASSERT(843, uSize==4*uNumber); + on_branch_register(process_onBranch_, pData, uNumber); break; - case 0xF9: - on_branch_query(code); + } + case 0xF9: { + JUT_ASSERT(849, uSize==0); + on_branch_query(uCode & 0xFFFF); break; - case 0xF8: - on_branch_register(process_onBranch_limited_, temp + 2, - JGadget::binary::TParseValue::parse(temp)); - on_branch_query(code); + } + case 0xF8: { + u16* pu16Data = (u16*)pData; + u32 uNumber = JGadget::binary::TParseValue::parse(pu16Data); + JUT_ASSERT(859, uSize==2+2*uNumber); + on_branch_register(process_onBranch_limited_, pu16Data + 1, uNumber); + on_branch_query(uCode & 0xFFFF); break; - case 0xF7: - on_branch_register(process_onBranch_, temp + 2, - JGadget::binary::TParseValue::parse(temp)); - on_branch_query(code); + } + case 0xF7: { + u16* pu16Data = (u16*)pData; + u32 uNumber = JGadget::binary::TParseValue::parse(pu16Data); + JUT_ASSERT(871, uSize==2+4*uNumber); + on_branch_register(process_onBranch_, pu16Data + 1, uNumber); + on_branch_query(uCode & 0xFFFF); break; + } default: - TProcessor::do_tag_(uTag, temp, uSize); - break; + TProcessor::do_tag_(uTag, pData, uSize); } } /* 802A892C-802A8944 2A326C 0018+00 1/1 0/0 0/0 .text * process_setMessageIndex_reserved___Q28JMessage18TSequenceProcessorFUs */ -// NONMATCHING void JMessage::TSequenceProcessor::process_setMessageIndex_reserved_(u16 u16Index) { - JUT_ASSERT(890, u16Index >= 0xff00); + JUT_ASSERT(890, (data::MESSAGEINDEX_RESERVED_ENUM_MIN<=u16Index)&& (u16Index<=data::MESSAGEINDEX_RESERVED_ENUM_MAX)); + switch (u16Index) { - case 0xffff: + case 0xFFFF: + JGADGET_WARNMSG1(896, "message-index reserved : ", u16Index); return; } } /* 802A8944-802A89B8 2A3284 0074+00 4/4 0/0 0/0 .text * process_setMessageCode___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUsUs */ -void* JMessage::TSequenceProcessor::process_setMessageCode_( - JMessage::TSequenceProcessor const* param_0, u16 param_1, u16 param_2) { - if (param_2 >= 0xFF00) { - process_setMessageIndex_reserved_(param_2); +void* JMessage::TSequenceProcessor::process_setMessageCode_(JMessage::TSequenceProcessor const* pProcessor, u16 u16GroupID, u16 u16Index) { + JGADGET_ASSERTWARN(904, u16GroupID<=data::MESSAGEGROUPID_USER_ENUM_MIN); + + if (u16Index >= 0xFF00) { + process_setMessageIndex_reserved_(u16Index); return NULL; } - TControl* pControl = param_0->getControl(); + TControl* pControl = pProcessor->getControl(); + JUT_ASSERT(911, pControl!=0); - if (pControl->setMessageCode_inSequence_(param_0, param_1, param_2)) { - return pControl->getMessageEntry(); + if (!pControl->setMessageCode_inSequence_(pProcessor, u16GroupID, u16Index)) { + JGADGET_WARNMSG1(914, "message-code undefined : ", pControl->getMessageCode()); + return NULL; } - return NULL; + return pControl->getMessageEntry(); } /* 802A89B8-802A89EC 2A32F8 0034+00 1/1 0/0 0/0 .text * process_onJump_limited___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessor */ const void* -JMessage::TSequenceProcessor::process_onJump_limited_(JMessage::TSequenceProcessor const* param_0) { - return process_setMessageIndex_(param_0, param_0->oProcess2_.process.jump_process.u32Target); +JMessage::TSequenceProcessor::process_onJump_limited_(JMessage::TSequenceProcessor const* pProcessor) { + const TProcess_::processData::jumpData& rData = pProcessor->oProcess2_.process.jump_process; + + JUT_ASSERT(925, rData.u32Target<=std::uint16_t(-1)); + return process_setMessageIndex_(pProcessor, rData.u32Target); } /* 802A89EC-802A8A18 2A332C 002C+00 1/1 0/0 0/0 .text * process_onJump___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessor */ const void* -JMessage::TSequenceProcessor::process_onJump_(JMessage::TSequenceProcessor const* param_0) { - return process_setMessageCode_(param_0, param_0->oProcess2_.process.jump_process.u32Target); +JMessage::TSequenceProcessor::process_onJump_(JMessage::TSequenceProcessor const* pProcessor) { + const TProcess_::processData::jumpData& rData = pProcessor->oProcess2_.process.jump_process; + return process_setMessageCode_(pProcessor, rData.u32Target); } /* 802A8A18-802A8A50 2A3358 0038+00 1/1 0/0 0/0 .text * process_onBranch_limited___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUl */ const void* -JMessage::TSequenceProcessor::process_onBranch_limited_(JMessage::TSequenceProcessor const* param_0, - u32 uTargetIndex) { - return process_setMessageIndex_( - param_0, JGadget::binary::TParseValue::parse( - param_0->oProcess2_.process.branch_process.pTarget, uTargetIndex)); +JMessage::TSequenceProcessor::process_onBranch_limited_(JMessage::TSequenceProcessor const* pProcessor, u32 uTargetIndex) { + const TProcess_::processData::branchData& rData = pProcessor->oProcess2_.process.branch_process; + + JUT_ASSERT(942, rData.pTarget!=0); + JUT_ASSERT(943, uTargetIndex::parse(rData.pTarget, uTargetIndex); + return process_setMessageIndex_(pProcessor, u16Index); } /* 802A8A50-802A8A84 2A3390 0034+00 1/1 0/0 0/0 .text * process_onBranch___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUl */ const void* -JMessage::TSequenceProcessor::process_onBranch_(JMessage::TSequenceProcessor const* param_0, - u32 uTargetIndex) { - return process_setMessageCode_( - param_0, JGadget::binary::TParseValue::parse( - param_0->oProcess2_.process.branch_process.pTarget, uTargetIndex)); +JMessage::TSequenceProcessor::process_onBranch_(JMessage::TSequenceProcessor const* pProcessor, u32 uTargetIndex) { + const TProcess_::processData::branchData& rData = pProcessor->oProcess2_.process.branch_process; + + JUT_ASSERT(957, rData.pTarget!=0); + JUT_ASSERT(958, uTargetIndex::parse(rData.pTarget, uTargetIndex); + return process_setMessageCode_(pProcessor, uCode); } /* 802A8A84-802A8AC0 2A33C4 003C+00 0/0 4/4 0/0 .text * __ct__Q28JMessage19TRenderingProcessorFPCQ28JMessage10TReference */ -JMessage::TRenderingProcessor::TRenderingProcessor(JMessage::TReference const* param_0) - : TProcessor(param_0) {} +JMessage::TRenderingProcessor::TRenderingProcessor(JMessage::TReference const* pReference) + : TProcessor(pReference) {} /* 802A8AC0-802A8B20 2A3400 0060+00 1/0 6/6 0/0 .text __dt__Q28JMessage19TRenderingProcessorFv */ JMessage::TRenderingProcessor::~TRenderingProcessor() {} /* 802A8B20-802A8BA4 2A3460 0084+00 0/0 4/4 0/0 .text * process__Q28JMessage19TRenderingProcessorFPCc */ -int JMessage::TRenderingProcessor::process(char const* param_0) { +int JMessage::TRenderingProcessor::process(char const* pszText) { do { - if (pszCurrent_ == param_0) { + if (pszCurrent_ == pszText) { on_end(); return 0; } @@ -598,7 +729,7 @@ int JMessage::TRenderingProcessor::process(char const* param_0) { /* 802A8BA4-802A8BA8 2A34E4 0004+00 1/0 4/0 0/0 .text * do_begin___Q28JMessage19TRenderingProcessorFPCvPCc */ -void JMessage::TRenderingProcessor::do_begin_(void const* param_0, char const* param_1) {} +void JMessage::TRenderingProcessor::do_begin_(void const* pEntry, char const* pszText) {} /* 802A8BA8-802A8BAC 2A34E8 0004+00 1/0 4/0 0/0 .text do_end___Q28JMessage19TRenderingProcessorFv */ @@ -606,24 +737,25 @@ void JMessage::TRenderingProcessor::do_end_() {} /* 802A8BAC-802A8C24 2A34EC 0078+00 1/0 4/0 0/0 .text * do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl */ -void JMessage::TRenderingProcessor::do_tag_(u32 uTag, void const* data, u32 uSize) { - u32 group = data::getTagGroup(uTag); - u32 code = data::getTagCode(uTag); +void JMessage::TRenderingProcessor::do_tag_(u32 uTag, void const* pData, u32 uSize) { + u8 uGroupID = data::getTagGroup(uTag); + unsigned int uCode = data::getTagCode(uTag); - switch (group) { + switch (uGroupID) { case 0xFF: - switch (code) { + switch (uCode & 0xFFFF) { case 0: case 1: case 2: case 3: + JGADGET_WARNMSG1(1047, "system-tag-code ignored : ", uCode & 0xFFFF); break; case 6: break; case 7: break; default: - TProcessor::do_tag_(uTag, data, uSize); + TProcessor::do_tag_(uTag, pData, uSize); break; } break; @@ -635,7 +767,7 @@ void JMessage::TRenderingProcessor::do_tag_(u32 uTag, void const* data, u32 uSiz case 0xF7: break; default: - TProcessor::do_tag_(uTag, data, uSize); + TProcessor::do_tag_(uTag, pData, uSize); break; } } diff --git a/src/JSystem/JMessage/resource.cpp b/src/JSystem/JMessage/resource.cpp index 0b0faafe99..eca131efd8 100644 --- a/src/JSystem/JMessage/resource.cpp +++ b/src/JSystem/JMessage/resource.cpp @@ -1,87 +1,90 @@ -// -// Generated By: dol2asm -// Translation Unit: resource -// - #include "JSystem/JMessage/resource.h" #include "JSystem/JGadget/search.h" #include "JSystem/JGadget/define.h" #include -#include "string.h" +#include /* 802A8CDC-802A8EC0 2A361C 01E4+00 0/0 1/1 0/0 .text * toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb */ -u16 JMessage::TResource::toMessageIndex_messageID(u32 lowerHalf, u32 upperHalf, - bool* isMsgValid) const { - if (!mMessageID.getRaw()) { +u16 JMessage::TResource::toMessageIndex_messageID(u32 uMsgID, u32 upperHalf, bool* pbValid) const { + if (!oParse_TBlock_messageID_.getRaw()) { return 0xFFFF; } - u32 val = -1; - bool check = true; + JUT_ASSERT(87, oParse_TBlock_messageID_.get_form()==0); - u8 sp0A = mMessageID.get_formSupplement(); - switch (sp0A) { + u32 uMsgValue = 0xFFFFFFFF; + bool valid = true; + + u8 uFormSupplement = oParse_TBlock_messageID_.get_formSupplement(); + switch (uFormSupplement) { case 0: - if (upperHalf) { - check = false; + if (upperHalf != 0) { + valid = false; } - val = lowerHalf; + uMsgValue = uMsgID; break; case 1: - if (lowerHalf > 0xFFFFFF || upperHalf > 0xFF) { - check = false; + if (uMsgID > 0xFFFFFF || upperHalf > 0xFF) { + valid = false; } - val = ((lowerHalf << 8) & 0xFFFFFF00) | (upperHalf & 0xFF); + uMsgValue = ((uMsgID << 8) & 0xFFFFFF00) | (upperHalf & 0xFF); break; case 2: - if (lowerHalf > 0xFFFF || upperHalf > 0xFFFF) { - check = false; + if (uMsgID > 0xFFFF || upperHalf > 0xFFFF) { + valid = false; } - val = ((lowerHalf << 16) & 0xFFFF0000) | (upperHalf & 0xFFFF); + uMsgValue = ((uMsgID << 16) & 0xFFFF0000) | (upperHalf & 0xFFFF); break; case 3: - if (lowerHalf > 0xFF || upperHalf > 0xFFFFFF) { - check = false; + if (uMsgID > 0xFF || upperHalf > 0xFFFFFF) { + valid = false; } - val = ((lowerHalf << 24) & 0xFF000000) | (upperHalf & 0x00FFFFFF); + uMsgValue = ((uMsgID << 24) & 0xFF000000) | (upperHalf & 0x00FFFFFF); break; case 4: - if (lowerHalf) { - check = false; + if (uMsgID != 0) { + valid = false; } - val = upperHalf; + uMsgValue = upperHalf; break; default: + JGADGET_WARNMSG1(122, "form-supplement unknown", uFormSupplement); return 0xFFFF; } - if (isMsgValid) { - *isMsgValid = check; + if (pbValid) { + *pbValid = valid; } - if (val == 0xFFFFFFFF) { + if (uMsgValue == 0xFFFFFFFF) { return 0xFFFF; } - int number = mMessageID.get_number(); - const u32* first = mMessageID.getContent(); - const u32* last = first + number; + int nMsgNumber = oParse_TBlock_messageID_.get_number(); - const u32* lower; - if (mMessageID.get_isOrdered()) { - lower = std::lower_bound(first, last, val); + const u32* pContent = oParse_TBlock_messageID_.getContent(); + JUT_ASSERT(131, pContent!=0); - if (lower == last || *lower != val) { + const u32* pFirst = pContent; + const u32* pLast = pFirst + nMsgNumber; + const u32* pEntry; + + if (oParse_TBlock_messageID_.get_isOrdered()) { + pEntry = std::lower_bound(pFirst, pLast, uMsgValue); + if (pEntry == pLast || *pEntry != uMsgValue) { return 0xFFFF; } } else { - lower = std::find(first, last, val); - if (lower == last) { + pEntry = std::find(pFirst, pLast, uMsgValue); + if (pEntry == pLast) { return 0xFFFF; } } - return (lower - first); + + int nIndex = pEntry - pFirst; + JUT_ASSERT(154, (data::MESSAGEINDEX_USER_ENUM_MIN<=nIndex)&& (nIndex<=data::MESSAGEINDEX_USER_ENUM_MAX)); + return nIndex; } /* 803C9C80-803C9C94 -00001 0014+00 1/1 0/0 0/0 .data @@ -100,45 +103,48 @@ JMessage::TResourceContainer::TCResource::TCResource() {} /* 802A8EF8-802A8F6C 2A3838 0074+00 1/0 2/2 0/0 .text * __dt__Q38JMessage18TResourceContainer10TCResourceFv */ -JMessage::TResourceContainer::TCResource::~TCResource() {} +JMessage::TResourceContainer::TCResource::~TCResource() { + JGADGET_ASSERTWARN(173, empty()); +} /* 802A8F6C-802A8FFC 2A38AC 0090+00 0/0 1/1 0/0 .text * Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs */ -// NONMATCHING -JMessage::TResource* JMessage::TResourceContainer::TCResource::Get_groupID(u16 groupID) { +// NONMATCHING - likely due to incorrect enumerator setup compared to debug +JMessage::TResource* JMessage::TResourceContainer::TCResource::Get_groupID(u16 u16GroupID) { JGadget::TContainerEnumerator enumerator(this); while (enumerator) { const TResource* res = &(*enumerator); - if (res->field_0xc.get_groupID() == groupID) + if (res->getGroupID() == u16GroupID) return (TResource*)res; } + return NULL; } /* 802A8FFC-802A9048 2A393C 004C+00 1/0 0/0 0/0 .text * Do_create__Q38JMessage18TResourceContainer10TCResourceFv */ JMessage::TResource* JMessage::TResourceContainer::TCResource::Do_create() { - TResource* new_res = new TResource(); - return new_res; + return new TResource(); } /* 802A9048-802A906C 2A3988 0024+00 1/0 0/0 0/0 .text * Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource */ // NONMATCHING extra null comparison -void JMessage::TResourceContainer::TCResource::Do_destroy(JMessage::TResource* param_0) { - delete param_0; +void JMessage::TResourceContainer::TCResource::Do_destroy(JMessage::TResource* pResource) { + delete pResource; } /* 802A906C-802A90B8 2A39AC 004C+00 0/0 2/2 0/0 .text __ct__Q28JMessage18TResourceContainerFv */ -JMessage::TResourceContainer::TResourceContainer() : mEncodingType(0), pfnParseCharacter_(NULL) {} +JMessage::TResourceContainer::TResourceContainer() : encodingType_(0), pfnParseCharacter_(NULL) {} /* 802A90B8-802A90F0 2A39F8 0038+00 1/1 0/0 0/0 .text * setEncoding__Q28JMessage18TResourceContainerFUc */ void JMessage::TResourceContainer::setEncoding(u8 e) { if (e == 0) { - mEncodingType = e; + encodingType_ = e; pfnParseCharacter_ = NULL; } else { + JGADGET_ASSERTWARN(285, isEncodingSettable(e)); setEncoding_(e); } } @@ -146,14 +152,15 @@ void JMessage::TResourceContainer::setEncoding(u8 e) { /* 802A90F0-802A9130 2A3A30 0040+00 1/1 0/0 0/0 .text * setEncoding___Q28JMessage18TResourceContainerFUc */ void JMessage::TResourceContainer::setEncoding_(u8 e) { - mEncodingType = e; - pfnParseCharacter_ = JGadget::toValueFromIndex( - e, sapfnParseCharacter_, 5, NULL); + encodingType_ = e; + pfnParseCharacter_ = JGadget::toValueFromIndex(e, sapfnParseCharacter_, 5, NULL); + JUT_ASSERT(299, pfnParseCharacter_!=0); } /* 802A9130-802A9158 2A3A70 0028+00 0/0 2/2 0/0 .text * __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer */ JMessage::TParse::TParse(JMessage::TResourceContainer* pContainer) { + JUT_ASSERT(324, pContainer!=0); pContainer_ = pContainer; pResource_ = NULL; } @@ -164,108 +171,121 @@ JMessage::TParse::~TParse() {} /* 802A91B8-802A92F4 2A3AF8 013C+00 1/0 0/0 0/0 .text * parseHeader_next__Q28JMessage6TParseFPPCvPUlUl */ // NONMATCHING regalloc, missing clrlwi -bool JMessage::TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_out, u32 param_2) { +bool JMessage::TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 param_2) { + JUT_ASSERT(343, ppData_inout!=0); + JUT_ASSERT(344, puBlock_out!=0); + const void* pData = *ppData_inout; + JUT_ASSERT(346, pData!=0); - data::TParse_THeader header(pData); - *ppData_inout = header.getContent(); - *puBlock_out = header.get_blockNumber(); + data::TParse_THeader oHeader(pData); + *ppData_inout = oHeader.getContent(); + *puBlock_out = oHeader.get_blockNumber(); - if (memcmp(header.get_signature(), &data::ga4cSignature, sizeof(data::ga4cSignature))) { + JUT_ASSERT(350, pContainer_!=0); + + if (memcmp(oHeader.get_signature(), &data::ga4cSignature, sizeof(data::ga4cSignature)) != 0) { + JGADGET_WARNMSG(355, "unknown signature"); return 0; } - if (header.get_type() != 'bmg1') { + if (oHeader.get_type() != 'bmg1') { + JGADGET_WARNMSG(360, "unknown type"); return 0; } - u8 encoding = header.get_encoding(); - if (encoding != 0) { - if (!pContainer_->isEncodingSettable(encoding)) { + u8 uEncoding = oHeader.get_encoding(); + if (uEncoding != 0) { + if (!pContainer_->isEncodingSettable(uEncoding)) { + JGADGET_WARNMSG(369, "encoding not acceptable"); return 0; } - pContainer_->setEncoding(encoding); + pContainer_->setEncoding(uEncoding); } if (param_2 & 0x10) { return 1; } - TResourceContainer::TCResource* resContainer = &pContainer_->resContainer_; - pResource_ = resContainer->Do_create(); + TResourceContainer::TCResource* pResContainer = &pContainer_->resContainer_; + pResource_ = pResContainer->Do_create(); if (pResource_ == NULL) { - return param_2 & 0x20; + JGADGET_WARNMSG(384, "can't create resource"); + if (param_2 & 0x20) { + return 1; + } else { + return 0; + } } else { - resContainer->Push_back(pResource_); - pResource_->setData_header(header.getRaw()); + pResContainer->Push_back(pResource_); + pResource_->setData_header(oHeader.getRaw()); return 1; } } /* 802A92F4-802A9490 2A3C34 019C+00 1/0 0/0 0/0 .text * parseBlock_next__Q28JMessage6TParseFPPCvPUlUl */ -bool JMessage::TParse::parseBlock_next(void const** ppData_inout, u32* puData_out, u32 param_2) { +bool JMessage::TParse::parseBlock_next(const void** ppData_inout, u32* puData_out, u32 param_2) { JUT_ASSERT(401, ppData_inout!=0); JUT_ASSERT(402, puData_out!=0); const void* pData = *ppData_inout; JUT_ASSERT(404, pData!=0); - data::TParse_TBlock sp34(pData); + data::TParse_TBlock oBlock(pData); - *ppData_inout = sp34.getNext(); - *puData_out = sp34.get_size(); + *ppData_inout = oBlock.getNext(); + *puData_out = oBlock.get_size(); TResourceContainer::TCResource& rcResource = pContainer_->resContainer_; JUT_ASSERT(412, pResource_==&*--(rcResource.end())); - u32 sp30 = sp34.get_type(); - switch (sp30) { - case 'INF1': + u32 uType = oBlock.get_type(); + switch (uType) { + case 'INF1': { pResource_->setData_block_info(pData); break; + } case 'FLI1': break; case 'FLW1': break; - case 'DAT1': + case 'DAT1': { pResource_->setData_block_messageText(pData); - u16 temp_r26 = pResource_->getGroupID(); + u16 u16GroupID = pResource_->getGroupID(); if (param_2 & 0x80) { - JGadget::TLinkList::iterator sp2C(rcResource.begin()); - JMessage::TResource* sp28; - while ((sp28 = &*sp2C) != pResource_) { - if ((u16)temp_r26 != sp28->getGroupID()) { - ++sp2C; + JGadget::TLinkList::iterator iResource(rcResource.begin()); + JMessage::TResource* pResource; + while ((pResource = &*iResource) != pResource_) { + if ((u16)u16GroupID != pResource->getGroupID()) { + ++iResource; } else { - sp2C = rcResource.Erase_destroy(sp28); + iResource = rcResource.Erase_destroy(pResource); } } } else { #ifdef DEBUG - JMessage::TResource* sp24 = rcResource.Get_groupID(temp_r26); - if (sp24 != pResource_) { - JGadget_outMessage sp148(JGadget_outMessage::warning, __FILE__, 444); - sp148 << "group-ID already exist : " << temp_r26; + JMessage::TResource* pResource = rcResource.Get_groupID(u16GroupID); + if (pResource != pResource_) { + JGADGET_WARNMSG1(444, "group-ID already exist : ", u16GroupID); } #endif } break; - case 'STR1': + } + case 'STR1': { pResource_->setData_block_stringAttribute(pData); break; - case 'MID1': + } + case 'MID1': { pResource_->setData_block_messageID(pData); break; + } default: - #ifdef DEBUG - JGadget_outMessage sp148(JGadget_outMessage::warning, __FILE__, 463); - sp148 << "unknown block : " << sp30; - #endif - + JGADGET_WARNMSG1(463, "unknown block : ", uType); if (!(param_2 & 0x40)) { return 0; } @@ -277,24 +297,26 @@ bool JMessage::TParse::parseBlock_next(void const** ppData_inout, u32* puData_ou /* 802A9490-802A94A8 2A3DD0 0018+00 1/0 0/0 0/0 .text * parseCharacter_1Byte__Q28JMessage6localeFPPCc */ -int JMessage::locale::parseCharacter_1Byte(char const** string) { - u8 parse_char = **string; +int JMessage::locale::parseCharacter_1Byte(char const** ppszText) { + u8** ppuText = (u8**)ppszText; + int parse_char = **ppuText & 0xFF; - *string = *string + 1; + (*ppuText)++; return parse_char; } /* 802A94A8-802A94D4 2A3DE8 002C+00 1/0 0/0 0/0 .text * parseCharacter_2Byte__Q28JMessage6localeFPPCc */ -int JMessage::locale::parseCharacter_2Byte(char const** string) { - u8** tmp_str = (u8**)string; +int JMessage::locale::parseCharacter_2Byte(char const** ppszText) { + u8** ppuText = (u8**)ppszText; - u8 hi = **tmp_str; - *tmp_str = *tmp_str + 1; + int parse_char = **ppuText & 0xFF; + (*ppuText)++; - u8 lo = **tmp_str; - int parse_char = (hi << 8) | lo; - *tmp_str = *tmp_str + 1; + parse_char <<= 8; + + parse_char |= **ppuText & 0xFF; + (*ppuText)++; return parse_char; } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h index 23d1a166eb..e34b4ea75a 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h @@ -84,8 +84,9 @@ InputIt find_if(InputIt first, InputIt last, UnaryPredicate p) { // fakematch: val should be a const reference, but that breaks JMessage::TResource::toMessageIndex_messageID template inline ForwardIterator find(ForwardIterator first, ForwardIterator last, T& val) { - for (; first != last && *first != val; ++first) { - } + while (first != last && !(*first == val)) { + ++first; + } return first; } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h new file mode 100644 index 0000000000..5f6672b452 --- /dev/null +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h @@ -0,0 +1,28 @@ +#ifndef MSL_CSTDINT_H_ +#define MSL_CSTDINT_H_ + +#ifdef __cplusplus +namespace std { +extern "C" { +#endif + +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned long uint32_t; + +typedef signed char int8_t; +typedef short int16_t; +typedef long int32_t; + +typedef unsigned long long uint64_t; +typedef long long int64_t; + +typedef uint32_t uintptr_t; +typedef int32_t intptr_t; + +#ifdef __cplusplus +}; +} +#endif + +#endif diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index 02de206cc8..73d79cc635 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -1,4 +1,5 @@ #include "d/d_demo.h" +#include "d/d_msg_class.h" #include "d/d_msg_object.h" #include "m_Do/m_Do_graphic.h" #include "d/actor/d_a_movie_player.h" diff --git a/src/d/d_meter2_draw.cpp b/src/d/d_meter2_draw.cpp index f979af3c8b..e5ad2079cb 100644 --- a/src/d/d_meter2_draw.cpp +++ b/src/d/d_meter2_draw.cpp @@ -3346,7 +3346,7 @@ char* dMeter2Draw_c::getActionString(u8 i_action, u8 i_type, u8* param_2) { } if (param_2 != NULL) { - *param_2 = mesg_entry.print_style; + *param_2 = mesg_entry.output_type; if (g_drawHIO.mButtonATextActionID == 0x3E6) { *param_2 = 7; @@ -3363,7 +3363,7 @@ char* dMeter2Draw_c::getActionString(u8 i_action, u8 i_type, u8* param_2) { } if (param_2 != NULL) { - *param_2 = mesg_entry.print_style; + *param_2 = mesg_entry.output_type; if (i_action_num[i_action] == 0x3E6) { *param_2 = 7; diff --git a/src/d/d_msg_class.cpp b/src/d/d_msg_class.cpp index e20d3f84ab..8332a1f1a4 100644 --- a/src/d/d_msg_class.cpp +++ b/src/d/d_msg_class.cpp @@ -1,288 +1,14 @@ -// -// Generated By: dol2asm -// Translation Unit: d/d_msg_class -// - #include "d/d_msg_class.h" -#include "stdio.h" +#include #include "d/d_meter2_info.h" #include "d/d_msg_object.h" #include "d/d_msg_unit.h" -#include "dol2asm.h" #include "JSystem/J2DGraph/J2DTextBox.h" #include "d/d_msg_out_font.h" #include "m_Do/m_Do_graphic.h" #include "d/d_lib.h" #include "JSystem/JUtility/JUTFont.h" -// -// Forward References: -// - -extern "C" static void checkCharInfoCharactor__Fi(); -extern "C" static void changeCodeToChar__FUs(); -extern "C" static void change1ByteTo2Bytes__Fi(); -extern "C" static void changeKataToHira__Fi(); -extern "C" static void isOutfontKanjiCode__Fi(); -extern "C" static void getFontCCColorTable__FUcUc(); -extern "C" static void getFontGCColorTable__FUcUc(); -extern "C" static void getOutFontNumberType__Fi(); -extern "C" static void getPohNum__Fv(); -extern "C" void __ct__19jmessage_tReferenceFv(); -extern "C" void __dt__19jmessage_tReferenceFv(); -extern "C" void calcDistance__19jmessage_tReferenceFv(); -extern "C" void getLineMax__19jmessage_tReferenceFv(); -extern "C" void isKanban__19jmessage_tReferenceFv(); -extern "C" void isPlaceName__19jmessage_tReferenceFv(); -extern "C" void isBossName__19jmessage_tReferenceFv(); -extern "C" void isSaveSeq__19jmessage_tReferenceFv(); -extern "C" void isBook__19jmessage_tReferenceFv(); -extern "C" void isStaffRoll__19jmessage_tReferenceFv(); -extern "C" void isHowl__19jmessage_tReferenceFv(); -extern "C" void isMidona__19jmessage_tReferenceFv(); -extern "C" void resetReference__19jmessage_tReferenceFv(); -extern "C" void pageSend__19jmessage_tReferenceFv(); -extern "C" void selectMessage__19jmessage_tReferenceFv(); -extern "C" void inputNumber__19jmessage_tReferenceFv(); -extern "C" void getWord__19jmessage_tReferenceFi(); -extern "C" void resetWord__19jmessage_tReferenceFv(); -extern "C" void setCharactor__19jmessage_tReferenceFUs(); -extern "C" void addCharactor__19jmessage_tReferenceFUs(); -extern "C" void resetCharactor__19jmessage_tReferenceFv(); -extern "C" void shiftCharCountBuffer__19jmessage_tReferenceFv(); -extern "C" void resetCharCountBuffer__19jmessage_tReferenceFv(); -extern "C" void allsetCharCountBuffer__19jmessage_tReferenceFv(); -extern "C" void isCharSend__19jmessage_tReferenceFv(); -extern "C" void isLightSend__19jmessage_tReferenceFv(); -extern "C" void isLightEnd__19jmessage_tReferenceFv(); -extern "C" void decideOutFontRupeeColor__19jmessage_tReferenceFi(); -extern "C" void __ct__17jmessage_tControlFv(); -extern "C" void __ct__26jmessage_tMeasureProcessorFPC19jmessage_tReference(); -extern "C" void do_begin__26jmessage_tMeasureProcessorFPCvPCc(); -extern "C" void do_end__26jmessage_tMeasureProcessorFv(); -extern "C" void do_character__26jmessage_tMeasureProcessorFi(); -extern "C" void do_tag__26jmessage_tMeasureProcessorFUlPCvUl(); -extern "C" void do_scale__26jmessage_tMeasureProcessorFf(); -extern "C" void do_space__26jmessage_tMeasureProcessorFUl(); -extern "C" void do_pageType__26jmessage_tMeasureProcessorFi(); -extern "C" void do_name1__26jmessage_tMeasureProcessorFv(); -extern "C" void do_rubyset__26jmessage_tMeasureProcessorFPCvUl(); -extern "C" void push_word__26jmessage_tMeasureProcessorFPc(); -extern "C" void __ct__27jmessage_tSequenceProcessorFPC19jmessage_tReferenceP17jmessage_tControl(); -extern "C" void __dt__26jmessage_tMeasureProcessorFv(); -extern "C" void do_reset__27jmessage_tSequenceProcessorFv(); -extern "C" void do_begin__27jmessage_tSequenceProcessorFPCvPCc(); -extern "C" void do_end__27jmessage_tSequenceProcessorFv(); -extern "C" void do_isReady__27jmessage_tSequenceProcessorFv(); -extern "C" void do_character__27jmessage_tSequenceProcessorFi(); -extern "C" void do_tag__27jmessage_tSequenceProcessorFUlPCvUl(); -extern "C" bool do_jump_isReady__27jmessage_tSequenceProcessorFv(); -extern "C" void do_name1__27jmessage_tSequenceProcessorFv(); -extern "C" void do_space__27jmessage_tSequenceProcessorFUl(); -extern "C" void do_rubyset__27jmessage_tSequenceProcessorFPCvUl(); -extern "C" void push_word__27jmessage_tSequenceProcessorFv(); -extern "C" void messageSePlay__27jmessage_tSequenceProcessorFUcUcP4cXyz(); -extern "C" void do_jump__27jmessage_tSequenceProcessorFPCvPCc(); -extern "C" void calcStringLength__27jmessage_tSequenceProcessorFv(); -extern "C" void __ct__28jmessage_tRenderingProcessorFPC19jmessage_tReference(); -extern "C" void do_reset__28jmessage_tRenderingProcessorFv(); -extern "C" void do_begin__28jmessage_tRenderingProcessorFPCvPCc(); -extern "C" void do_end__28jmessage_tRenderingProcessorFv(); -extern "C" void do_character__28jmessage_tRenderingProcessorFi(); -extern "C" void do_tag__28jmessage_tRenderingProcessorFUlPCvUl(); -extern "C" void resetRendering__28jmessage_tRenderingProcessorFv(); -extern "C" void do_widthcenter__28jmessage_tRenderingProcessorFv(); -extern "C" void do_selwidthcenter__28jmessage_tRenderingProcessorFi(); -extern "C" void do_heightcenter__28jmessage_tRenderingProcessorFv(); -extern "C" void do_color__28jmessage_tRenderingProcessorFUc(); -extern "C" void do_scale__28jmessage_tRenderingProcessorFf(); -extern "C" void do_linedown__28jmessage_tRenderingProcessorFs(); -extern "C" void do_transY__28jmessage_tRenderingProcessorFsb(); -extern "C" void do_outfont__28jmessage_tRenderingProcessorFUcUl(); -extern "C" void do_arrow2__28jmessage_tRenderingProcessorFv(); -extern "C" void getLineLength__28jmessage_tRenderingProcessorFi(); -extern "C" void do_strcat__28jmessage_tRenderingProcessorFPcbbb(); -extern "C" void do_rubyset__28jmessage_tRenderingProcessorFPCvUl(); -extern "C" void do_rubystrcat__28jmessage_tRenderingProcessorFPcPcff(); -extern "C" void do_name1__28jmessage_tRenderingProcessorFv(); -extern "C" void do_numset__28jmessage_tRenderingProcessorFs(); -extern "C" void push_word__28jmessage_tRenderingProcessorFv(); -extern "C" void getCharInfo__28jmessage_tRenderingProcessorFfffff(); -extern "C" void __ct__26jmessage_string_tReferenceFv(); -extern "C" void __dt__26jmessage_string_tReferenceFv(); -extern "C" void -init__26jmessage_string_tReferenceFP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc(); -extern "C" void setCharactor__26jmessage_string_tReferenceFUs(); -extern "C" void addCharactor__26jmessage_string_tReferenceFUs(); -extern "C" void resetCharactor__26jmessage_string_tReferenceFv(); -extern "C" void getLineLength__26jmessage_string_tReferenceFi(); -extern "C" void addLineLength__26jmessage_string_tReferenceFif(); -extern "C" void getOutfontLength__26jmessage_string_tReferenceFi(); -extern "C" void setOutfontLength__26jmessage_string_tReferenceFif(); -extern "C" void clearOutfontLength__26jmessage_string_tReferenceFi(); -extern "C" void getLineCountNowPage__26jmessage_string_tReferenceFv(); -extern "C" void __ct__24jmessage_string_tControlFv(); -extern "C" void __ct__33jmessage_string_tMeasureProcessorFPC26jmessage_string_tReference(); -extern "C" void do_begin__33jmessage_string_tMeasureProcessorFPCvPCc(); -extern "C" void do_end__33jmessage_string_tMeasureProcessorFv(); -extern "C" void do_character__33jmessage_string_tMeasureProcessorFi(); -extern "C" void do_tag__33jmessage_string_tMeasureProcessorFUlPCvUl(); -extern "C" void do_rubyset__33jmessage_string_tMeasureProcessorFPCvUl(); -extern "C" void -__ct__34jmessage_string_tSequenceProcessorFPC26jmessage_string_tReferenceP24jmessage_string_tControl(); -extern "C" void __dt__33jmessage_string_tMeasureProcessorFv(); -extern "C" void do_reset__34jmessage_string_tSequenceProcessorFv(); -extern "C" void do_begin__34jmessage_string_tSequenceProcessorFPCvPCc(); -extern "C" void do_end__34jmessage_string_tSequenceProcessorFv(); -extern "C" bool do_isReady__34jmessage_string_tSequenceProcessorFv(); -extern "C" void do_character__34jmessage_string_tSequenceProcessorFi(); -extern "C" void do_tag__34jmessage_string_tSequenceProcessorFUlPCvUl(); -extern "C" bool do_jump_isReady__34jmessage_string_tSequenceProcessorFv(); -extern "C" void do_jump__34jmessage_string_tSequenceProcessorFPCvPCc(); -extern "C" void __ct__35jmessage_string_tRenderingProcessorFPC26jmessage_string_tReference(); -extern "C" void getLineCountNowPage__35jmessage_string_tRenderingProcessorFv(); -extern "C" void do_reset__35jmessage_string_tRenderingProcessorFv(); -extern "C" void do_begin__35jmessage_string_tRenderingProcessorFPCvPCc(); -extern "C" void do_end__35jmessage_string_tRenderingProcessorFv(); -extern "C" void do_character__35jmessage_string_tRenderingProcessorFi(); -extern "C" void do_tag__35jmessage_string_tRenderingProcessorFUlPCvUl(); -extern "C" void do_widthcenter__35jmessage_string_tRenderingProcessorFv(); -extern "C" void do_heightcenter__35jmessage_string_tRenderingProcessorFv(); -extern "C" void do_strcat__35jmessage_string_tRenderingProcessorFPc(); -extern "C" void do_rubyset__35jmessage_string_tRenderingProcessorFPCvUl(); -extern "C" void do_rubystrcat__35jmessage_string_tRenderingProcessorFPc(); -extern "C" void do_outfont__35jmessage_string_tRenderingProcessorFUc(); -extern "C" void do_color__35jmessage_string_tRenderingProcessorFUc(); -extern "C" void do_scale__35jmessage_string_tRenderingProcessorFf(); -extern "C" void do_linedown__35jmessage_string_tRenderingProcessorFs(); -extern "C" void do_numset__35jmessage_string_tRenderingProcessorFs(); -extern "C" void push_word__35jmessage_string_tRenderingProcessorFPCc(); -extern "C" void __dt__35jmessage_string_tRenderingProcessorFv(); -extern "C" void __dt__34jmessage_string_tSequenceProcessorFv(); -extern "C" void __dt__24jmessage_string_tControlFv(); -extern "C" void __dt__28jmessage_tRenderingProcessorFv(); -extern "C" void __dt__27jmessage_tSequenceProcessorFv(); -extern "C" void getActorPos__19jmessage_tReferenceFv(); -extern "C" extern char const* const d_msg_d_msg_class__stringBase0; - -// -// External References: -// - -extern "C" void mDoExt_getMesgFont__Fv(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfGs_checkGetInsectNum__Fv(); -extern "C" void __ct__9STControlFssssffss(); -extern "C" void setWaitParm__9STControlFssssffss(); -extern "C" void checkTrigger__9STControlFv(); -extern "C" void checkLeftTrigger__9STControlFv(); -extern "C" void checkRightTrigger__9STControlFv(); -extern "C" void checkUpTrigger__9STControlFv(); -extern "C" void checkDownTrigger__9STControlFv(); -extern "C" void getBombNum__21dSv_player_item_max_cCFUc(); -extern "C" void onEventBit__11dSv_event_cFUs(); -extern "C" void getEventReg__11dSv_event_cCFUs(); -extern "C" void dMeter2Info_getNewLetterNum__Fv(); -extern "C" void initialize__10COutFont_cFv(); -extern "C" void talkStartInit__12dMsgObject_cFv(); -extern "C" void isKanbanMessage__12dMsgObject_cFv(); -extern "C" void isHowlMessage__12dMsgObject_cFv(); -extern "C" void isMidonaMessage__12dMsgObject_cFv(); -extern "C" void isPlaceMessage__12dMsgObject_cFv(); -extern "C" void isBossMessage__12dMsgObject_cFv(); -extern "C" bool isBookMessage__12dMsgObject_cFv(); -extern "C" void isStaffMessage__12dMsgObject_cFv(); -extern "C" void isSaveMessage__12dMsgObject_cFv(); -extern "C" void getSmellName__12dMsgObject_cFv(); -extern "C" void getPortalName__12dMsgObject_cFv(); -extern "C" void getBombName__12dMsgObject_cFv(); -extern "C" void getInsectName__12dMsgObject_cFv(); -extern "C" void getLetterName__12dMsgObject_cFv(); -extern "C" void getSelectBombNum__12dMsgObject_cFv(); -extern "C" void addSelectBomBag__12dMsgObject_cFUc(); -extern "C" void resetSelectBomBag__12dMsgObject_cFv(); -extern "C" void getMsgOutputType__12dMsgObject_cFv(); -extern "C" void getWord__12dMsgObject_cFv(); -extern "C" void getSelectWord__12dMsgObject_cFi(); -extern "C" void getSelectWordFlag__12dMsgObject_cFv(); -extern "C" void getSelectBombPrice__12dMsgObject_cFv(); -extern "C" void getItemEquipButton__12dMsgObject_cFv(); -extern "C" void dMsgObject_getFundRaising__Fv(); -extern "C" void setTag__10dMsgUnit_cFiiPcb(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ct__Q28JMessage8TControlFv(); -extern "C" void __dt__Q28JMessage8TControlFv(); -extern "C" void __dt__Q28JMessage10TReferenceFv(); -extern "C" bool do_word__Q28JMessage10TReferenceCFUl(); -extern "C" void stack_pushCurrent__Q28JMessage10TProcessorFPCc(); -extern "C" void do_reset__Q28JMessage10TProcessorFv(); -extern "C" void do_select_begin__Q28JMessage10TProcessorFUl(); -extern "C" void do_select_end__Q28JMessage10TProcessorFv(); -extern "C" void do_select_separate__Q28JMessage10TProcessorFv(); -extern "C" void do_resetStatus___Q28JMessage10TProcessorFPCc(); -extern "C" bool do_setBegin_isReady___Q28JMessage10TProcessorCFv(); -extern "C" void process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void -__ct__Q28JMessage18TSequenceProcessorFPCQ28JMessage10TReferencePQ28JMessage8TControl(); -extern "C" void __dt__Q28JMessage18TSequenceProcessorFv(); -extern "C" void do_branch_query__Q28JMessage18TSequenceProcessorFUl(); -extern "C" s32 do_branch_queryResult__Q28JMessage18TSequenceProcessorFv(); -extern "C" void do_branch__Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" void do_resetStatus___Q28JMessage18TSequenceProcessorFPCc(); -extern "C" void do_setBegin_isReady___Q28JMessage18TSequenceProcessorCFv(); -extern "C" void do_begin___Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" void do_end___Q28JMessage18TSequenceProcessorFv(); -extern "C" void do_tag___Q28JMessage18TSequenceProcessorFUlPCvUl(); -extern "C" void __ct__Q28JMessage19TRenderingProcessorFPCQ28JMessage10TReference(); -extern "C" void __dt__Q28JMessage19TRenderingProcessorFv(); -extern "C" void process__Q28JMessage19TRenderingProcessorFPCc(); -extern "C" void do_begin___Q28JMessage19TRenderingProcessorFPCvPCc(); -extern "C" void do_end___Q28JMessage19TRenderingProcessorFv(); -extern "C" void do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void setString__12Z2SpeechMgr2FPCUssUcUs(); -extern "C" void playOneShotVoice__12Z2SpeechMgr2FUcUsP3VecSc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getBounds__7J2DPaneFv(); -extern "C" void getParentPane__7J2DPaneFv(); -extern "C" void getStringPtr__10J2DTextBoxCFv(); -extern "C" void _savefpr_27(); -extern "C" void _restfpr_27(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */]; -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern void* __vt__17jmessage_tControl[3]; -extern "C" extern void* __vt__Q28JMessage10TReference[4 + 1 /* padding */]; -extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" extern dMsgObject_HIO_c g_MsgObject_HIO_c; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -SECTION_DATA extern void* __vt__35jmessage_string_tRenderingProcessor[16]; -SECTION_DATA extern void* __vt__34jmessage_string_tSequenceProcessor[22]; -SECTION_DATA extern void* __vt__33jmessage_string_tMeasureProcessor[16]; -SECTION_DATA extern void* __vt__24jmessage_string_tControl[3]; -SECTION_DATA extern void* __vt__26jmessage_string_tReference[4]; -SECTION_DATA extern void* __vt__28jmessage_tRenderingProcessor[16]; -SECTION_DATA extern void* __vt__27jmessage_tSequenceProcessor[22]; -SECTION_DATA extern void* __vt__26jmessage_tMeasureProcessor[16]; -SECTION_DATA extern void* __vt__19jmessage_tReference[4 + 1 /* padding */]; - -// -// Declarations: -// - /* 80228578-802285CC 222EB8 0054+00 1/1 0/0 0/0 .text checkCharInfoCharactor__Fi */ static bool checkCharInfoCharactor(int c) { if (c != 0x8140 && c != 0x8141 && c != 0x8142 && c != 0x0020 && c != 0x0022 && c != 0x0027 && @@ -299,20 +25,19 @@ static char* changeCodeToChar(u16 param_0) { static char mMoji[3]; mMoji[0] = mMoji[1] = mMoji[2] = 0; - mMoji[0] = param_0 >> 8; + mMoji[0] = (param_0 & 0xFF00) >> 8; - int val = param_0; if (mMoji[0] == 0) { - mMoji[0] = val; + mMoji[0] = param_0 & 0xFF; } else { - mMoji[1] = val; + mMoji[1] = param_0 & 0xFF; } return mMoji; } /* 80228608-80228838 222F48 0230+00 5/4 0/0 0/0 .text change1ByteTo2Bytes__Fi */ -static u16 change1ByteTo2Bytes(int param_0) { +static u16 change1ByteTo2Bytes(int iCharacter) { static u16 char_table[] = { 0x0000, 0x8142, 0x8175, 0x8176, 0x8141, 0x8145, 0x8392, 0x8340, 0x8342, 0x8344, 0x8346, 0x8348, 0x8383, 0x8385, 0x8387, 0x8362, 0x815B, 0x8341, 0x8343, 0x8345, 0x8347, 0x8349, @@ -322,141 +47,141 @@ static u16 change1ByteTo2Bytes(int param_0) { 0x8389, 0x838A, 0x838B, 0x838C, 0x838D, 0x838F, 0x8393, 0x814A, 0x814B, }; - u16 var_r30 = param_0; - if (param_0 >= '0' && param_0 <= '9') { - var_r30 = param_0 + 0x821F; - } else if (param_0 >= 'A' && param_0 <= 'Z') { - var_r30 = param_0 + 0x8230; - } else if (param_0 >= 'a' && param_0 <= 'z') { - var_r30 = param_0 + 0x8251; - } else if (param_0 >= 0xA0 && param_0 <= 0xDF) { - int sp8 = param_0 - 0xA0; - var_r30 = char_table[sp8]; + u16 character2Bytes = iCharacter; + if (iCharacter >= '0' && iCharacter <= '9') { + character2Bytes = iCharacter + 0x821F; + } else if (iCharacter >= 'A' && iCharacter <= 'Z') { + character2Bytes = iCharacter + 0x8230; + } else if (iCharacter >= 'a' && iCharacter <= 'z') { + character2Bytes = iCharacter + 0x8251; + } else if (iCharacter >= 0xA0 && iCharacter <= 0xDF) { + int sp8 = iCharacter - 0xA0; + character2Bytes = char_table[sp8]; } else { - switch (param_0) { - case 0x20: - var_r30 = 0x8140; + switch (iCharacter) { + case ' ': + character2Bytes = 0x8140; break; - case 0x21: - var_r30 = 0x8149; + case '!': + character2Bytes = 0x8149; break; - case 0x22: - var_r30 = 0x8168; + case '\"': + character2Bytes = 0x8168; break; - case 0x23: - var_r30 = 0x8194; + case '#': + character2Bytes = 0x8194; break; - case 0x24: - var_r30 = 0x8190; + case '$': + character2Bytes = 0x8190; break; - case 0x25: - var_r30 = 0x8193; + case '%': + character2Bytes = 0x8193; break; - case 0x26: - var_r30 = 0x8195; + case '&': + character2Bytes = 0x8195; break; - case 0x27: - var_r30 = 0x8166; + case '\'': + character2Bytes = 0x8166; break; - case 0x28: - var_r30 = 0x8169; + case '(': + character2Bytes = 0x8169; break; - case 0x29: - var_r30 = 0x816a; + case ')': + character2Bytes = 0x816a; break; - case 0x2A: - var_r30 = 0x8196; + case '*': + character2Bytes = 0x8196; break; - case 0x2B: - var_r30 = 0x817b; + case '+': + character2Bytes = 0x817b; break; - case 0x2C: - var_r30 = 0x8143; + case ',': + character2Bytes = 0x8143; break; - case 0x2D: - var_r30 = 0x817c; + case '-': + character2Bytes = 0x817c; break; - case 0x2E: - var_r30 = 0x8144; + case '.': + character2Bytes = 0x8144; break; - case 0x2F: - var_r30 = 0x815e; + case '/': + character2Bytes = 0x815e; break; - case 0x3A: - var_r30 = 0x8146; + case ':': + character2Bytes = 0x8146; break; - case 0x3B: - var_r30 = 0x8147; + case ';': + character2Bytes = 0x8147; break; - case 0x3C: - var_r30 = 0x8171; + case '<': + character2Bytes = 0x8171; break; - case 0x3D: - var_r30 = 0x8181; + case '=': + character2Bytes = 0x8181; break; - case 0x3E: - var_r30 = 0x8172; + case '>': + character2Bytes = 0x8172; break; - case 0x3F: - var_r30 = 0x8148; + case '?': + character2Bytes = 0x8148; break; - case 0x4B: - var_r30 = 0x816d; + case 'K': + character2Bytes = 0x816d; break; - case 0x4C: - var_r30 = 0x818f; + case 'L': + character2Bytes = 0x818f; break; - case 0x4D: - var_r30 = 0x816e; + case 'M': + character2Bytes = 0x816e; break; - case 0x4E: - var_r30 = 0x813f; + case 'N': + character2Bytes = 0x813f; break; - case 0x4F: - var_r30 = 0x8151; + case 'O': + character2Bytes = 0x8151; break; - case 0x5B: - var_r30 = 0x816f; + case '[': + character2Bytes = 0x816f; break; - case 0x5C: - var_r30 = 0x8162; + case '\\': + character2Bytes = 0x8162; break; - case 0x5D: - var_r30 = 0x8170; + case ']': + character2Bytes = 0x8170; break; - case 0x5E: - var_r30 = 0x8140; + case '^': + character2Bytes = 0x8140; break; - case 0x5F: - var_r30 = 0; + case '_': + character2Bytes = 0; break; } } - return var_r30; + return character2Bytes; } /* 80228838-802288A8 223178 0070+00 8/8 0/0 0/0 .text changeKataToHira__Fi */ -static u16 changeKataToHira(int param_0) { - u16 var_r5 = param_0; +static u16 changeKataToHira(int iCharacter) { + u16 hiraCharacter = iCharacter; - if (param_0 >= 0x8340 && param_0 <= 0x837E) { - var_r5 = param_0 - 0xA1; - } else if (param_0 >= 0x8380 && param_0 <= 0x8393) { - var_r5 = param_0 - 0xA2; - } else if (param_0 == 0x8394) { - var_r5 = 0x82D4; + if (iCharacter >= 0x8340 && iCharacter <= 0x837E) { + hiraCharacter = iCharacter - 0xA1; + } else if (iCharacter >= 0x8380 && iCharacter <= 0x8393) { + hiraCharacter = iCharacter - 0xA2; + } else if (iCharacter == 0x8394) { + hiraCharacter = 0x82D4; } - return var_r5; + return hiraCharacter; } /* 802288A8-802288FC 2231E8 0054+00 4/4 0/0 0/0 .text isOutfontKanjiCode__Fi */ -static bool isOutfontKanjiCode(int param_0) { - switch (param_0) { - case 0x5C: - case 0x40: - case 0x24: +static bool isOutfontKanjiCode(int iCharacter) { + switch (iCharacter) { + case '\\': + case '@': + case '$': case 0x81F2: case 0x81F3: return true; @@ -579,6 +304,7 @@ static u8 getPohNum() { /* 80228B04-80228CB4 223444 01B0+00 0/0 1/1 0/0 .text __ct__19jmessage_tReferenceFv */ jmessage_tReference::jmessage_tReference() { mpStick = new STControl(5, 2, 3, 2, 0.9f, 0.5f, 0, 0x2000); + JUT_ASSERT(518, mpStick != 0); mpStick->setWaitParm(5, 2, 3, 2, 0.9f, 0.5f, 0, 0x800); mActorPos.set(0.0f, 0.0f, 0.0f); @@ -630,9 +356,9 @@ jmessage_tReference::jmessage_tReference() { mTopWordCount = 0; resetCharactor(); resetWord(); - mSelectSetCancelFlag = 0; - mBombNameUseFlag = 0; - mRevoMessageID = 0; + offSelectSetCancelFlag(); + offBombNameUseFlag(); + setRevoMessageID(0); mBatchColorFlag = 0; mTopTagScale = 0; mNowTagScale = 0; @@ -650,7 +376,7 @@ void jmessage_tReference::calcDistance() { mDistanceScale = 1.0f; } else { fopAc_ac_c* player = dComIfGp_getPlayer(0); - (mActorPos - player->attention_info.position).absXZ(); + f32 var_f31 = (mActorPos - player->attention_info.position).absXZ(); mDistanceScale = 1.0f; } } @@ -733,7 +459,7 @@ bool jmessage_tReference::isStaffRoll() { } /* 80228FA4-80228FD8 2238E4 0034+00 1/1 0/0 0/0 .text isHowl__19jmessage_tReferenceFv */ -u8 jmessage_tReference::isHowl() { +bool jmessage_tReference::isHowl() { if (getObjectPtr() == NULL) { return false; } @@ -866,8 +592,8 @@ void jmessage_tReference::selectMessage() { void jmessage_tReference::inputNumber() { mpStick->checkTrigger(); - s16 input_val = getObjectPtr()->getInputValue(); - s16 new_input_val = input_val; + s16 input_val, new_input_val; + input_val = new_input_val = getObjectPtr()->getInputValue(); u8 max_figure = 0; if (dComIfGs_getRupee() >= 1000) { @@ -941,6 +667,11 @@ void jmessage_tReference::inputNumber() { /* 80229730-80229744 224070 0014+00 5/5 0/0 0/0 .text getWord__19jmessage_tReferenceFi */ char* jmessage_tReference::getWord(int i_no) { + if (i_no >= 10) { + JUT_WARN(1093, "%s", "message stack over!!"); + JUT_ASSERT(1094, i_no < (10)); + } + return mWord[i_no]; } @@ -953,14 +684,14 @@ void jmessage_tReference::resetWord() { } /* 80229768-80229788 2240A8 0020+00 3/3 0/0 0/0 .text setCharactor__19jmessage_tReferenceFUs */ -void jmessage_tReference::setCharactor(u16 param_0) { - mCharactor.data[mCharactor.field_0x40c] = param_0; +void jmessage_tReference::setCharactor(u16 i_character) { + mCharactor.data[mCharactor.field_0x40c] = i_character; mCharactor.field_0x40c++; } /* 80229788-802297B0 2240C8 0028+00 3/3 0/0 0/0 .text addCharactor__19jmessage_tReferenceFUs */ -void jmessage_tReference::addCharactor(u16 param_0) { - if (param_0 == mCharactor.data[mCharactor.field_0x40e]) { +void jmessage_tReference::addCharactor(u16 i_character) { + if (i_character == mCharactor.data[mCharactor.field_0x40e]) { mCharactor.field_0x40e++; } } @@ -1081,13 +812,11 @@ bool jmessage_tReference::isLightEnd() { /* 802299AC-802299EC 2242EC 0040+00 2/2 0/0 0/0 .text * decideOutFontRupeeColor__19jmessage_tReferenceFi */ void jmessage_tReference::decideOutFontRupeeColor(int i_inputVal) { - s16 payment = getObjectPtr()->getNowTotalPayment(); - s16 price = getObjectPtr()->getNowTotalPrice(); - int diff = price - payment; + int price_diff = getObjectPtr()->getNowTotalPrice() - getObjectPtr()->getNowTotalPayment(); - if (diff > i_inputVal) { + if (price_diff > i_inputVal) { mOutFontRupeeColor = 1; - } else if (diff == i_inputVal) { + } else if (price_diff == i_inputVal) { mOutFontRupeeColor = 0; } else { mOutFontRupeeColor = 2; @@ -1099,8 +828,8 @@ jmessage_tControl::jmessage_tControl() {} /* 80229A28-80229AC4 224368 009C+00 1/1 0/0 0/0 .text * __ct__26jmessage_tMeasureProcessorFPC19jmessage_tReference */ -jmessage_tMeasureProcessor::jmessage_tMeasureProcessor(jmessage_tReference const* param_0) - : TRenderingProcessor(param_0) { +jmessage_tMeasureProcessor::jmessage_tMeasureProcessor(jmessage_tReference const* pReference) + : TRenderingProcessor(pReference) { jmessage_tReference* reference_p = (jmessage_tReference*)getReference(); reference_p->resetCharactor(); @@ -1116,50 +845,52 @@ jmessage_tMeasureProcessor::jmessage_tMeasureProcessor(jmessage_tReference const field_0x49 = 0; mPageLineMax = reference_p->getLineMax(); field_0x4b = 0; - field_0x4c = 0; + mSeSpeaker = 0; field_0x4d = 0; } /* 80229AC4-80229CB4 224404 01F0+00 1/0 0/0 0/0 .text * do_begin__26jmessage_tMeasureProcessorFPCvPCc */ -void jmessage_tMeasureProcessor::do_begin(void const* param_0, char const* param_1) { - jmessage_tReference* reference_p = (jmessage_tReference*)getReference(); +void jmessage_tMeasureProcessor::do_begin(void const* pEntry, char const* pszText) { + (void)pszText; + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); - reference_p->resetCharactor(); - reference_p->setRevoMessageID(0); + pReference->resetCharactor(); + pReference->setRevoMessageID(0); field_0x38 = 1.0f; - field_0x4c = *((u8*)param_0 + 8); - field_0x42 = *((u8*)param_0 + 0xE); + + mSeSpeaker = ((JMSMesgEntry_c*)pEntry)->se_speaker; + mSeMood = ((JMSMesgEntry_c*)pEntry)->se_mood; for (int i = 0; i < 40; i++) { - reference_p->setLineLength(i, 0.0f, 0.0f); - reference_p->setPageLine(i, 0); - reference_p->setPageLineMax(i, 0); - reference_p->setPageType(i, 0); - reference_p->setLineArrange(i, *((u8*)param_0 + 0xD)); - reference_p->setLineScale(i, 100); + pReference->setLineLength(i, 0.0f, 0.0f); + pReference->setPageLine(i, 0); + pReference->setPageLineMax(i, 0); + pReference->setPageType(i, 0); + pReference->setLineArrange(i, ((JMSMesgEntry_c*)pEntry)->unk_0xd); + pReference->setLineScale(i, 100); - if (reference_p->isPlaceName() || reference_p->isStaffRoll() || reference_p->isBossName() || - reference_p->getFukiKind() == 9) + if (pReference->isPlaceName() || pReference->isStaffRoll() || pReference->isBossName() || + pReference->getFukiKind() == 9) { - reference_p->setLineArrange(i, 1); + pReference->setLineArrange(i, 1); } else { - if (*((u16*)param_0 + 0x2) == 0x2A5) { - reference_p->setLineArrange(i, 1); + if (((JMSMesgEntry_c*)pEntry)->message_id == 0x2A5) { + pReference->setLineArrange(i, 1); } - if (*((u8*)param_0 + 0xD) == 0) { - reference_p->setLineArrange(i, 1); + if (((JMSMesgEntry_c*)pEntry)->unk_0xd == 0) { + pReference->setLineArrange(i, 1); } } } for (int i = 0; i < 3; i++) { - reference_p->setSelLength(i, 0.0f); - reference_p->offSelectRubyFlag(i); + pReference->setSelLength(i, 0.0f); + pReference->offSelectRubyFlag(i); } - reference_p->setPageEndCount(0); + pReference->setPageEndCount(0); mTotalLineCnt = 0; field_0x3e = 0; field_0x40 = 0; @@ -1169,18 +900,18 @@ void jmessage_tMeasureProcessor::do_begin(void const* param_0, char const* param field_0x46 = 0; field_0x47 = 0; field_0x49 = 0; - mPageLineMax = reference_p->getLineMax(); - reference_p->resetWord(); + mPageLineMax = pReference->getLineMax(); + pReference->resetWord(); field_0x4b = 0; - dMsgObject_c* object_p = reference_p->getObjectPtr(); + dMsgObject_c* object_p = pReference->getObjectPtr(); object_p->offAutoMessageFlag(); - if (!reference_p->isSelectSetCancelFlag()) { + if (!pReference->isSelectSetCancelFlag()) { object_p->resetSelectBomBag(); } - if (reference_p->getDistanceScale() != 1.0f) { + if (pReference->getDistanceScale() != 1.0f) { do_scale(field_0x38); } } @@ -1191,46 +922,46 @@ void jmessage_tMeasureProcessor::do_end() { field_0x3e++; } - jmessage_tReference* ref = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); if (field_0x46 == 0) { if (field_0x49 > 1) { - ref->setPageLine(field_0x40, field_0x3e - (field_0x49 - 1)); - ref->setPageLineMax(field_0x40, field_0x3e - (field_0x49 - 1)); + pReference->setPageLine(field_0x40, field_0x3e - (field_0x49 - 1)); + pReference->setPageLineMax(field_0x40, field_0x3e - (field_0x49 - 1)); } else { - ref->setPageLine(field_0x40, field_0x3e); - ref->setPageLineMax(field_0x40, field_0x3e); + pReference->setPageLine(field_0x40, field_0x3e); + pReference->setPageLineMax(field_0x40, field_0x3e); } } - ref->setPageEndCount(field_0x40); + pReference->setPageEndCount(field_0x40); do_pageType(field_0x3e); - Z2GetSpeechMgr2()->setString(ref->getCharSoundInfo().data, ref->getCharSoundInfo().field_0x40c, field_0x4c, field_0x42); + Z2GetSpeechMgr2()->setString(pReference->getCharSoundInfo().data, pReference->getCharSoundInfo().field_0x40c, mSeSpeaker, mSeMood); } /* 80229E3C-8022A268 22477C 042C+00 1/0 0/0 0/0 .text do_character__26jmessage_tMeasureProcessorFi */ -void jmessage_tMeasureProcessor::do_character(int param_0) { - jmessage_tReference* ref = (jmessage_tReference*)getReference(); - JUTFont* font = ref->getFont(); +void jmessage_tMeasureProcessor::do_character(int iCharacter) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + JUTFont* font = pReference->getFont(); if (field_0x44 == 0) { - if (font->isLeadByte_ShiftJIS(param_0)) { - if (!isOutfontKanjiCode(param_0)) { - u16 var_r25 = change1ByteTo2Bytes(param_0); - ref->setCharactor(changeKataToHira(var_r25)); + if (font->isLeadByte_ShiftJIS(iCharacter)) { + if (!isOutfontKanjiCode(iCharacter)) { + u16 character2Bytes = change1ByteTo2Bytes(iCharacter); + pReference->setCharactor(changeKataToHira(character2Bytes)); } - } else if (param_0 < 0x8800 && !isOutfontKanjiCode(param_0)) { - ref->setCharactor(changeKataToHira(param_0)); + } else if (iCharacter < 0x8800 && !isOutfontKanjiCode(iCharacter)) { + pReference->setCharactor(changeKataToHira(iCharacter)); } } - if (param_0 == 10) { + if (iCharacter == '\n') { mTotalLineCnt++; field_0x3e++; if (field_0x44 != 0) { - ref->setLineArrange(mTotalLineCnt, 1); + pReference->setLineArrange(mTotalLineCnt, 1); field_0x44--; } @@ -1243,8 +974,8 @@ void jmessage_tMeasureProcessor::do_character(int param_0) { } if (mSelectType == 0 && field_0x3e >= mPageLineMax) { - ref->setPageLine(field_0x40, mPageLineMax - (field_0x49 - 1)); - ref->setPageLineMax(field_0x40, field_0x3e); + pReference->setPageLine(field_0x40, mPageLineMax - (field_0x49 - 1)); + pReference->setPageLineMax(field_0x40, field_0x3e); do_pageType(mPageLineMax - (field_0x49 - 1)); if (field_0x46 == 0) { @@ -1252,39 +983,39 @@ void jmessage_tMeasureProcessor::do_character(int param_0) { } field_0x3e = 0; - mPageLineMax = ref->getLineMax(); + mPageLineMax = pReference->getLineMax(); field_0x49 = 0; if (field_0x46 == 0 && field_0x38 > 1.0f && field_0x48 == 0) { field_0x48 = 1; mPageLineMax--; - JUT_ASSERT(0x665, mPageLineMax > 0); - ref->setPageType(field_0x40, 2); + JUT_ASSERT(1637, mPageLineMax > 0); + pReference->setPageType(field_0x40, 2); } } - if (mTotalLineCnt < ((4)*10)) { - JUT_ASSERT(0x672, mTotalLineCnt < ((4)*10)); + if (mTotalLineCnt >= ((4)*10)) { + JUT_ASSERT(1650, mTotalLineCnt < ((4)*10)); } } else { if (field_0x49 != 0) { field_0x49 = 0; } - ref->addLineLength(mTotalLineCnt, field_0x38 * font->getWidth(param_0) / (f32)font->getCellWidth(), 1.0f); + pReference->addLineLength(mTotalLineCnt, field_0x38 * font->getWidth(iCharacter) / (f32)font->getCellWidth(), 1.0f); if (field_0x46 != 0) { - f32 var_f31 = ref->getSelFontSize() / (f32)font->getCellWidth(); - ref->addSelLength(field_0x46 - 1, (var_f31 * (field_0x38 * font->getWidth(param_0))) + ref->getSelCharSpace()); + f32 var_f31 = pReference->getSelFontSize() / (f32)font->getCellWidth(); + pReference->addSelLength(field_0x46 - 1, (var_f31 * (field_0x38 * font->getWidth(iCharacter))) + pReference->getSelCharSpace()); } if (field_0x38 > 1.0f) { - if (field_0x3e == 1 && ref->getPageType(field_0x40) == 2) { - ref->setPageType(field_0x40, 4); - ref->setLineScale(mTotalLineCnt, ref->getLineScale(0)); - } else if (field_0x3e == 2 && ref->getPageType(field_0x40) == 4) { - ref->setPageType(field_0x40, 5); - ref->setLineScale(mTotalLineCnt, ref->getLineScale(0)); + if (field_0x3e == 1 && pReference->getPageType(field_0x40) == 2) { + pReference->setPageType(field_0x40, 4); + pReference->setLineScale(mTotalLineCnt, pReference->getLineScale(0)); + } else if (field_0x3e == 2 && pReference->getPageType(field_0x40) == 4) { + pReference->setPageType(field_0x40, 5); + pReference->setLineScale(mTotalLineCnt, pReference->getLineScale(0)); } } } @@ -1298,64 +1029,77 @@ static void dummyString() { /* 8022A268-8022B0B0 224BA8 0E48+00 5/0 0/0 0/0 .text do_tag__26jmessage_tMeasureProcessorFUlPCvUl */ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_size) { - jmessage_tReference* reference_p = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); switch (i_tag & 0xFF0000) { - case 0x10000: - case 0x20000: + case MSGTAG_GROUP(1): + case MSGTAG_GROUP(2): return true; - case 0xFF0000: + case MSGTAG_GROUP(255): switch (i_tag) { - case 0xFF0000: + case MSGTAG_COLOR: return true; - case 0xFF0001: + case MSGTAG_SCALE: { u16 scale = *(u16*)i_data; - reference_p->setLineScale(mTotalLineCnt, scale); + pReference->setLineScale(mTotalLineCnt, scale); do_scale(scale / 100.0f); return true; - case 0xFF0002: - case 0xFFFF02: + } + case MSGTAG_RUBY: + case 0xFFFF02: { do_rubyset(i_data, i_size); + if (field_0x46 != 0) { if (mSelectType == 2) { - if (!reference_p->isSelectRubyFlag(field_0x46 - 1)) { - reference_p->onSelectRubyFlag(field_0x46 - 1); + if (!pReference->isSelectRubyFlag(field_0x46 - 1)) { + pReference->onSelectRubyFlag(field_0x46 - 1); } } else if (mSelectType == 3) { - if (!reference_p->isSelectRubyFlag(field_0x46 - 1)) { - reference_p->onSelectRubyFlag(field_0x46 - 1); + if (!pReference->isSelectRubyFlag(field_0x46 - 1)) { + pReference->onSelectRubyFlag(field_0x46 - 1); } } } return true; } - case 0: + } + case MSGTAG_GROUP(0): switch (i_tag) { - case 1: - reference_p->setCharAllAlphaRate(1.0f); + case MSGTAG_INSTANT: + pReference->setCharAllAlphaRate(1.0f); return true; - case 2: + case MSGTAG_TYPE: + case MSGTAG_BOXATMOST: + case MSGTAG_UNK_6: + case MSGTAG_PAUSE: + case MSGTAG_BOXATLEAST: + case MSGTAG_LINE_DOWN: return true; - case 0x3e: - char msg_num1[4]; - sprintf(msg_num1, "%d", dComIfGp_getMessageCountNumber() / 100); - push_word(msg_num1); + case MSGTAG_CURRENT_LETTER_PAGE: { + char buffer[4]; + int number = dComIfGp_getMessageCountNumber() / 100; + sprintf(buffer, "%d", number); + push_word(buffer); return true; - case 0x3f: - char msg_num2[4]; - sprintf(msg_num2, "%d", dComIfGp_getMessageCountNumber() % 100); - push_word(msg_num2); + } + case MSGTAG_MAX_LETTER_PAGE: { + char buffer[4]; + int number = dComIfGp_getMessageCountNumber() % 100; + sprintf(buffer, "%d", number); + push_word(buffer); return true; - case 3: - case 4: + } + case MSGTAG_UNK_3: + case MSGTAG_AUTOBOX: if (*(u16*)i_data != 0) { - reference_p->mpObjectPtr->onAutoMessageFlag(); + dMsgObject_c* objectPtr = pReference->mpObjectPtr; // fakematch, should be getObjectPtr + objectPtr->onAutoMessageFlag(); } return true; - case 0x28: - reference_p->setDemoFrame(*(u32*)i_data); + case MSGTAG_DEMOBOX: + pReference->setDemoFrame(*(u32*)i_data); return true; - case 0: + case MSGTAG_PLAYER_NAME: { if (field_0x49 != 0) { field_0x49 = 0; } @@ -1364,7 +1108,8 @@ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_siz strcpy(player_name, dComIfGs_getPlayerName()); push_word(player_name); return true; - case 0x22: + } + case MSGTAG_HORSE_NAME: { if (field_0x49 != 0) { field_0x49 = 0; } @@ -1373,61 +1118,80 @@ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_siz strcpy(horse_name, dComIfGs_getHorseName()); push_word(horse_name); return true; - case 0x35: + } + case MSGTAG_UNK_53: if (field_0x49 != 0) { field_0x49 = 0; } stack_pushCurrent(dMsgObject_getWord()); return true; - case 0x29: + case MSGTAG_SCENT_NAME: { if (field_0x49 != 0) { field_0x49 = 0; } - stack_pushCurrent(reference_p->getObjectPtr()->getSmellName()); + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + const char* smellname = objectPtr->getSmellName(); + stack_pushCurrent(smellname); return true; - case 0x2b: + } + case MSGTAG_PORTAL_NAME: { if (field_0x49 != 0) { field_0x49 = 0; } - stack_pushCurrent(reference_p->getObjectPtr()->getPortalName()); + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + const char* portalname = objectPtr->getPortalName(); + stack_pushCurrent(portalname); return true; - case 0x2d: + } + case MSGTAG_BOMB_NAME: { if (field_0x49 != 0) { field_0x49 = 0; } - dMsgObject_c* object_p = reference_p->getObjectPtr(); - if (!reference_p->isSelectSetCancelFlag()) { - reference_p->onBombNameUseFlag(); + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + OS_REPORT("ボムカーソル位置 %d\n", dMsgObject_getMsgObjectClass()->getSelectCursorPos()); + + if (!pReference->isSelectSetCancelFlag()) { + pReference->onBombNameUseFlag(); } - stack_pushCurrent(object_p->getBombName()); + const char* bombname = objectPtr->getBombName(); + stack_pushCurrent(bombname); return true; - case 0x3b: + } + case MSGTAG_INSECT_NAME: { if (field_0x49 != 0) { field_0x49 = 0; } - stack_pushCurrent(reference_p->getObjectPtr()->getInsectName()); + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + const char* insectname = objectPtr->getInsectName(); + stack_pushCurrent(insectname); return true; - case 0x3c: + } + case MSGTAG_LETTER_NAME: { if (field_0x49 != 0) { field_0x49 = 0; } - stack_pushCurrent(reference_p->getObjectPtr()->getLetterName()); + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + const char* lettername = objectPtr->getLetterName(); + stack_pushCurrent(lettername); return true; - case 8: + } + case MSGTAG_SELECT_2WAY: + JUT_ASSERT(1916, mSelectType != 0); + if (field_0x46 == 0) { if (field_0x3e > 0) { - reference_p->setPageLine(field_0x40, field_0x3e); - reference_p->setPageLineMax(field_0x40, field_0x3e); + pReference->setPageLine(field_0x40, field_0x3e); + pReference->setPageLineMax(field_0x40, field_0x3e); do_pageType(field_0x3e); field_0x3e = 0; - mPageLineMax = reference_p->getLineMax(); + mPageLineMax = pReference->getLineMax(); field_0x49 = 0; } @@ -1437,21 +1201,23 @@ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_siz } if (*(u8*)i_data == 1) { - reference_p->setSelectPos(field_0x47); + pReference->setSelectPos(field_0x47); } field_0x47++; field_0x46++; - reference_p->setLineArrange(mTotalLineCnt, 1); + pReference->setLineArrange(mTotalLineCnt, 1); return true; - case 9: + case MSGTAG_SELECT_3WAY: + JUT_ASSERT(1944, mSelectType != 0); + if (field_0x46 == 0) { if (field_0x3e > 0) { - reference_p->setPageLine(field_0x40, field_0x3e); - reference_p->setPageLineMax(field_0x40, field_0x3e); + pReference->setPageLine(field_0x40, field_0x3e); + pReference->setPageLineMax(field_0x40, field_0x3e); do_pageType(field_0x3e); field_0x3e = 0; - mPageLineMax = reference_p->getLineMax(); + mPageLineMax = pReference->getLineMax(); field_0x49 = 0; } @@ -1460,206 +1226,209 @@ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_siz } if (*(u8*)i_data == 1) { - reference_p->setSelectPos(field_0x47); + pReference->setSelectPos(field_0x47); } field_0x47++; field_0x46++; - reference_p->setLineArrange(mTotalLineCnt, 1); + pReference->setLineArrange(mTotalLineCnt, 1); return true; - case 0x1f: - case 0x34: - reference_p->setSelectPos(field_0x47); - case 0x1e: - case 0x33: + case MSGTAG_INLINE_2_FIRST: + case MSGTAG_INLINE_3_FIRST: + pReference->setSelectPos(field_0x47); + case MSGTAG_INLINE_2_NEXT: + case MSGTAG_INLINE_3_NEXT: field_0x47++; - reference_p->setLineArrange(mTotalLineCnt, 0); + pReference->setLineArrange(mTotalLineCnt, 0); do_space(0); return true; - case 0x20: + case MSGTAG_AWAIT_CHOICE: mSelectType = 1; field_0x38 = 1.0f; - do_character(10); - stack_pushCurrent(reference_p->getSelMsgPtr()); + do_character('\n'); + stack_pushCurrent(pReference->getSelMsgPtr()); return true; - case 0x21: + case MSGTAG_UNK_33: do_name1(); return true; - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1a: - case 0x1b: - case 0x1c: - case 0x1d: - case 0x23: - case 0x24: - case 0x27: - case 0x2a: - case 0x2c: - case 0x2e: - case 0x2f: - case 0x39: - case 0x3a: + case MSGTAG_ABTN: + case MSGTAG_BBTN: + case MSGTAG_CSTICK: + case MSGTAG_LBTN: + case MSGTAG_RBTN: + case MSGTAG_XBTN: + case MSGTAG_YBTN: + case MSGTAG_ZBTN: + case MSGTAG_DPAD: + case MSGTAG_STICK_CROSS: + case MSGTAG_LEFT_ARROW: + case MSGTAG_RIGHT_ARROW: + case MSGTAG_UP_ARROW: + case MSGTAG_DOWN_ARROW: + case MSGTAG_STICK_UP: + case MSGTAG_STICK_DOWN: + case MSGTAG_STICK_LEFT: + case MSGTAG_STICK_RIGHT: + case MSGTAG_STICK_VERTICAL: + case MSGTAG_STICK_HORIZONTAL: + case MSGTAG_RED_TARGET: + case MSGTAG_YELLOW_TARGET: + case MSGTAG_ABTN_STAR: + case MSGTAG_WHITE_TARGET: + case MSGTAG_WARP_ICON: + case MSGTAG_XYBTN: + case MSGTAG_YXBTN: + case MSGTAG_HEART: + case MSGTAG_QUAVER: do_space(i_tag); return true; - case 0x30: + case MSGTAG_BOMB_BAG_ICON: do_space(i_tag); - if (!reference_p->isSelectSetCancelFlag()) { - reference_p->getObjectPtr()->addSelectBomBag(*(u8*)i_data - 1); + if (!pReference->isSelectSetCancelFlag()) { + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + u8 type = *(u8*)i_data & 0xFF; + objectPtr->addSelectBomBag(type - 1); } return true; - case 0x25: + case MSGTAG_INPUT_VALUE: for (int i = 0; i < 4; i++) { do_space(0); } return true; - case 0x26: + case MSGTAG_ACKNOWLEDGE: return true; - case 0x31: - char bomb_num_text[40]; - u8 sel_bomb_num = reference_p->getObjectPtr()->getSelectBombNum(); - dMsgUnit_setTag(7, sel_bomb_num, bomb_num_text); - push_word(bomb_num_text); + case MSGTAG_BOMB_NUM: { + char buffer[40]; + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + u8 sel_bomb_num = objectPtr->getSelectBombNum(); + dMsgUnit_setTag(7, sel_bomb_num, buffer); + push_word(buffer); return true; - case 0x32: - char bomb_price_text[40]; - s16 sel_bomb_price = reference_p->getObjectPtr()->getSelectBombPrice(); - dMsgUnit_setTag(1, sel_bomb_price, bomb_price_text); - push_word(bomb_price_text); + } + case MSGTAG_BOMB_PRICE: { + char buffer[40]; + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + s16 sel_bomb_price = objectPtr->getSelectBombPrice(); + dMsgUnit_setTag(1, sel_bomb_price, buffer); + push_word(buffer); return true; - case 0x37: + } + case MSGTAG_BOMB_MAX: { u8 bomb_type = fpcNm_ITEM_NORMAL_BOMB; - const u8 spA = *(u8*)i_data; - if (spA == 1) { + const u8 type = *(u8*)i_data; + if (type == 1) { bomb_type = fpcNm_ITEM_WATER_BOMB; - } else if (spA == 2) { + } else if (type == 2) { bomb_type = fpcNm_ITEM_POKE_BOMB; } - char bomb_max_text[40]; - u8 bomb_max = dComIfGs_getBombMax(bomb_type); - dMsgUnit_setTag(7, bomb_max, bomb_max_text); - push_word(bomb_max_text); - return true; - case 0x38: - char arrow_max_text[40]; - u8 arrow_max = dComIfGs_getArrowMax(); - dMsgUnit_setTag(0, arrow_max, arrow_max_text); - push_word(arrow_max_text); + char buffer[40]; + dMsgUnit_setTag(7, dComIfGs_getBombMax(bomb_type), buffer); + push_word(buffer); return true; } + case MSGTAG_ARROW_MAX: { + char buffer[40]; + dMsgUnit_setTag(0, dComIfGs_getArrowMax(), buffer); + push_word(buffer); + return true; + } + } return true; - case 0x40000: + case MSGTAG_GROUP(4): switch (i_tag & 0xFF00FFFF) { - case 0: - push_word(changeCodeToChar(0x24)); + case MSGTAG_GLYPH_DOLLARSIGN: + push_word(changeCodeToChar('$')); return true; - case 1: - push_word(changeCodeToChar(0x5C)); + case MSGTAG_GLYPH_BACKSLASH: + push_word(changeCodeToChar('\\')); return true; - case 2: - push_word(changeCodeToChar(0x40)); + case MSGTAG_GLYPH_ATMARK: + push_word(changeCodeToChar('@')); return true; - case 3: + case MSGTAG_GLYPH_SHARP: push_word(changeCodeToChar(0x81F2)); return true; - case 4: + case MSGTAG_GLYPH_FLAT: push_word(changeCodeToChar(0x81F3)); return true; - case 5: + case MSGTAG_GLYPH_SQRT: push_word(changeCodeToChar(0x81E3)); return true; - case 6: + case MSGTAG_GLYPH_PERCENT: push_word(changeCodeToChar(0x876C)); return true; - case 7: + case MSGTAG_GLYPH_HECTARE: push_word(changeCodeToChar(0x8766)); return true; - case 8: + case MSGTAG_GLYPH_ARE: push_word(changeCodeToChar(0x8765)); return true; - case 9: + case MSGTAG_GLYPH_LITRE: push_word(changeCodeToChar(0x8767)); return true; - case 10: + case MSGTAG_GLYPH_WATT: push_word(changeCodeToChar(0x8768)); return true; - case 11: + case MSGTAG_GLYPH_CALORIE: push_word(changeCodeToChar(0x8769)); return true; - case 12: + case MSGTAG_GLYPH_DOLLAR: push_word(changeCodeToChar(0x876A)); return true; - case 13: + case MSGTAG_GLYPH_CENT: push_word(changeCodeToChar(0x876B)); return true; } return false; - case 0x50000: - char buffer_0[40]; + case MSGTAG_GROUP(5): { + char buffer[40]; switch (i_tag & 0xFF00FFFF) { - case 0: - const u8 sp9 = *(u8*)i_data; - if (sp9 == 0) { - int msg_time_ms = dMeter2Info_getMsgTimeMs(); - dMsgUnit_setTag(4, msg_time_ms, buffer_0); - } else if (sp9 == 2) { - int race_time = dComIfGs_getRaceGameTime(); - dMsgUnit_setTag(4, race_time, buffer_0); + case MSGTAG_TIME_INFO: { + const u8 type = *(u8*)i_data; + if (type == 0) { + dMsgUnit_setTag(4, dMeter2Info_getMsgTimeMs(), buffer); + } else if (type == 2) { + dMsgUnit_setTag(4, dComIfGs_getRaceGameTime(), buffer); } else { - int time_ms = dMeter2Info_getTimeMs(); - dMsgUnit_setTag(4, time_ms, buffer_0); + dMsgUnit_setTag(4, dMeter2Info_getTimeMs(), buffer); } break; + } case 1: - u32 msg_num_ = dComIfGp_getMessageCountNumber(); - dMsgUnit_setTag(0, msg_num_, buffer_0); + dMsgUnit_setTag(0, (s32)dComIfGp_getMessageCountNumber(), buffer); break; case 2: - u32 msg_num = dComIfGp_getMessageCountNumber(); - dMsgUnit_setTag(1, msg_num, buffer_0); + dMsgUnit_setTag(1, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 9: + case MSGTAG_FUNDRAISE_REMAIN: { s16 fund_raise_val = *(u32*)i_data; - reference_p->getObjectPtr()->setFundRaisingValue(fund_raise_val); + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + objectPtr->setFundRaisingValue(fund_raise_val); - int fund_raising = fund_raise_val - dMsgObject_getFundRaising(); - dMsgUnit_setTag(10, fund_raising, buffer_0); + dMsgUnit_setTag(10, fund_raise_val - dMsgObject_getFundRaising(), buffer); break; - case 10: - u32 letter_num = dMeter2Info_getNewLetterNum(); - dMsgUnit_setTag(11, letter_num, buffer_0); + } + case MSGTAG_NEW_LETTER_NUM: + dMsgUnit_setTag(11, dMeter2Info_getNewLetterNum(), buffer); break; - case 11: - u32 poh_num = getPohNum(); - dMsgUnit_setTag(12, poh_num, buffer_0); + case MSGTAG_POE_NUM: + dMsgUnit_setTag(12, getPohNum(), buffer); break; - case 12: - int tmp; - if (*(u8*)i_data == 0) { - tmp = dComIfGp_getMessageCountNumber(); + case MSGTAG_BALLOON_SCORE: { + int number; + u8 type = *(u8*)i_data & 0xFF; + if (type == 0) { + number = dComIfGp_getMessageCountNumber(); } else { - tmp = dComIfGs_getBalloonScore(); + number = dComIfGs_getBalloonScore(); } - dMsgUnit_setTag(13, tmp, buffer_0); + dMsgUnit_setTag(13, number, buffer); break; - case 3: + } + case MSGTAG_INSECT_INFO: { u32 insect_num; if (*(u8*)i_data == 0) { insect_num = dComIfGs_checkGetInsectNum(); @@ -1667,98 +1436,101 @@ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_siz insect_num = 24 - dComIfGs_checkGetInsectNum(); } - dMsgUnit_setTag(2, insect_num, buffer_0); + dMsgUnit_setTag(2, insect_num, buffer); break; + } case 4: - dMsgUnit_setTag(3, 0, buffer_0); + dMsgUnit_setTag(3, 0, buffer); break; case 5: - dMsgUnit_setTag(0x10000, dComIfGp_getNeedLightDropNum(), buffer_0); + dMsgUnit_setTag(0x10000, dComIfGp_getNeedLightDropNum(), buffer); break; case 6: - dMsgUnit_setTag(6, 20 - dComIfGs_getEventReg(0xFF1F), buffer_0); + dMsgUnit_setTag(6, 20 - dComIfGs_getEventReg(0xFF1F), buffer); break; - case 8: - dMsgUnit_setTag(9, (u32)dComIfGp_getMessageCountNumber(), buffer_0); + case MSGTAG_FISH_LENGTH: + dMsgUnit_setTag(9, (u32)dComIfGp_getMessageCountNumber(), buffer); break; - case 13: - dMsgUnit_setTag(14, (u32)dComIfGp_getMessageCountNumber(), buffer_0); + case MSGTAG_FISH_COUNT: + dMsgUnit_setTag(14, (u32)dComIfGp_getMessageCountNumber(), buffer); break; - case 14: - dMsgUnit_setTag(0x10001, (u32)dComIfGp_getMessageCountNumber(), buffer_0); + case MSGTAG_ROLLGOAL_LV: + dMsgUnit_setTag(0x10001, (u32)dComIfGp_getMessageCountNumber(), buffer); break; - case 7: - dMsgUnit_setTag(8, dMeter2Info_getNowCount(), buffer_0); + case MSGTAG_RIVER_POINTS: + dMsgUnit_setTag(8, dMeter2Info_getNowCount(), buffer); break; default: return false; } - push_word(buffer_0); + push_word(buffer); return true; - case 0x60000: - char buffer1[40]; + } + case MSGTAG_GROUP(6): { + char buffer[40]; switch (i_tag & 0xFF00FFFF) { - case 0: - push_word(buffer1); + case MSGTAG_PLAYER_GENITIV: + push_word(buffer); return true; - case 1: - push_word(buffer1); + case MSGTAG_HORSE_GENITIV: + push_word(buffer); return true; - case 2: + case MSGTAG_MALE_ICON: push_word(changeCodeToChar(0xB2)); return true; - case 3: + case MSGTAG_FEMALE_ICON: push_word(changeCodeToChar(0xB3)); return true; - case 4: + case MSGTAG_STAR_ICON: push_word(changeCodeToChar(0xB1)); return true; - case 5: + case MSGTAG_REFMARK: push_word(changeCodeToChar(0x89)); return true; - case 6: + case MSGTAG_THIN_LEFT_ARROW: push_word(changeCodeToChar(0xB9)); return true; - case 7: + case MSGTAG_THIN_RIGHT_ARROW: push_word(changeCodeToChar(0xBC)); return true; - case 8: + case MSGTAG_THIN_UP_ARROW: push_word(changeCodeToChar(0xBD)); return true; - case 9: + case MSGTAG_THIN_DOWN_ARROW: push_word(changeCodeToChar(0xBE)); return true; - case 10: - case 11: + case MSGTAG_BULLET: + case MSGTAG_BULLET_SPACE: do_space(i_tag); return true; } - case 0x30000: + } + case MSGTAG_GROUP(3): switch (i_tag & 0xFF00FFFF) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: + case MSGTAG_WII_ABTN: + case MSGTAG_WII_BBTN: + case MSGTAG_WII_HOMEBTN: + case MSGTAG_WII_MINUSBTN: + case MSGTAG_WII_PLUSBTN: + case MSGTAG_WII_1BTN: + case MSGTAG_WII_2BTN: + case MSGTAG_WII_DPAD_ITEM: + case MSGTAG_WII_DPAD_UP: + case MSGTAG_WII_DPAD_DOWN: + case MSGTAG_WII_DPAD_HORIZONTAL: + case MSGTAG_WII_DPAD_RIGHT: + case MSGTAG_WII_DPAD_LEFT: + case MSGTAG_WII_WIIMOTE: + case MSGTAG_WII_RETICULE: + case MSGTAG_WII_NUNCHUK: + case MSGTAG_WII_WIIMOTE2: + case MSGTAG_WII_FAIRY: + case MSGTAG_WII_CBTN: + case MSGTAG_WII_ZBTN: do_space(i_tag); return true; - case 0: - reference_p->setRevoMessageID(*(u32*)i_data); + case MSGTAG_WII_MSGID_OVERRIDE: + pReference->setRevoMessageID(*(u32*)i_data); return true; } } @@ -1767,9 +1539,9 @@ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_siz } /* 8022B0B0-8022B18C 2259F0 00DC+00 2/2 0/0 0/0 .text do_scale__26jmessage_tMeasureProcessorFf */ -void jmessage_tMeasureProcessor::do_scale(f32 param_0) { - jmessage_tReference* ref = (jmessage_tReference*)getReference(); - field_0x38 = param_0 * ref->getDistanceScale(); +void jmessage_tMeasureProcessor::do_scale(f32 i_scale) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + field_0x38 = i_scale * pReference->getDistanceScale(); if (field_0x38 > 1.0f && field_0x48 == 0) { field_0x48 = 1; @@ -1777,17 +1549,17 @@ void jmessage_tMeasureProcessor::do_scale(f32 param_0) { JUT_ASSERT(0x930, mPageLineMax > 0); if (field_0x3e == 0) { - ref->setPageType(field_0x40, 2); + pReference->setPageType(field_0x40, 2); } else if (field_0x3e == 2 && mPageLineMax == 3) { - if (ref->getPageType(field_0x40) == 4) { - ref->setPageType(field_0x40, 5); + if (pReference->getPageType(field_0x40) == 4) { + pReference->setPageType(field_0x40, 5); } else { - ref->setPageType(field_0x40, 8); + pReference->setPageType(field_0x40, 8); } } else { - ref->setPageType(field_0x40, 3); - if (field_0x3e == 1 && ref->getPageType(field_0x40) == 2) { - ref->setPageType(field_0x40, 4); + pReference->setPageType(field_0x40, 3); + if (field_0x3e == 1 && pReference->getPageType(field_0x40) == 2) { + pReference->setPageType(field_0x40, 4); } } } @@ -1795,118 +1567,118 @@ void jmessage_tMeasureProcessor::do_scale(f32 param_0) { /* 8022B18C-8022B3EC 225ACC 0260+00 2/1 0/0 0/0 .text do_space__26jmessage_tMeasureProcessorFUl */ void jmessage_tMeasureProcessor::do_space(u32 i_tag) { - jmessage_tReference* ref = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); f32 var_f31 = field_0x38; if (field_0x44 == 0) { - u16 var_r30 = 0xFFFF; + u16 character = 0xFFFF; switch (i_tag & 0xFF0000) { - case 0: + case MSGTAG_GROUP(0): switch (i_tag) { - case 10: - var_r30 = 0xFFE0; + case MSGTAG_ABTN: + character = 0xFFE0; break; - case 11: - var_r30 = 0xFFE1; + case MSGTAG_BBTN: + character = 0xFFE1; break; - case 12: - var_r30 = 0xFFE2; + case MSGTAG_CSTICK: + character = 0xFFE2; break; - case 13: - var_r30 = 0xFFE3; + case MSGTAG_LBTN: + character = 0xFFE3; break; - case 14: - var_r30 = 0xFFE4; + case MSGTAG_RBTN: + character = 0xFFE4; break; - case 15: - var_r30 = 0xFFE5; + case MSGTAG_XBTN: + character = 0xFFE5; break; - case 16: - var_r30 = 0xFFE6; + case MSGTAG_YBTN: + character = 0xFFE6; break; - case 17: - var_r30 = 0xFFE7; + case MSGTAG_ZBTN: + character = 0xFFE7; break; - case 18: - var_r30 = 0xFFE8; + case MSGTAG_DPAD: + character = 0xFFE8; break; - case 19: - var_r30 = 0xFFE9; + case MSGTAG_STICK_CROSS: + character = 0xFFE9; break; - case 20: - var_r30 = 0xFFEA; + case MSGTAG_LEFT_ARROW: + character = 0xFFEA; break; - case 21: - var_r30 = 0xFFEB; + case MSGTAG_RIGHT_ARROW: + character = 0xFFEB; break; - case 22: - var_r30 = 0xFFEC; + case MSGTAG_UP_ARROW: + character = 0xFFEC; break; - case 23: - var_r30 = 0xFFED; + case MSGTAG_DOWN_ARROW: + character = 0xFFED; break; - case 24: - var_r30 = 0xFFEE; + case MSGTAG_STICK_UP: + character = 0xFFEE; break; - case 25: - var_r30 = 0xFFF0; + case MSGTAG_STICK_DOWN: + character = 0xFFF0; break; - case 26: - var_r30 = 0xFFF1; + case MSGTAG_STICK_LEFT: + character = 0xFFF1; break; - case 27: - var_r30 = 0xFFF2; + case MSGTAG_STICK_RIGHT: + character = 0xFFF2; break; - case 28: - var_r30 = 0xFFF3; + case MSGTAG_STICK_VERTICAL: + character = 0xFFF3; break; - case 29: - var_r30 = 0xFFF4; + case MSGTAG_STICK_HORIZONTAL: + character = 0xFFF4; break; - case 57: - var_r30 = 0xFFF5; + case MSGTAG_HEART: + character = 0xFFF5; break; - case 58: - var_r30 = 0xFFF6; + case MSGTAG_QUAVER: + character = 0xFFF6; break; } - ref->setCharactor(var_r30); + pReference->setCharactor(character); break; - case 0x30000: + case MSGTAG_GROUP(3): switch (i_tag & 0xFF00FFFF) { - case 3: - case 4: - case 5: - ref->setCharactor(0xFFFF); + case MSGTAG_WII_HOMEBTN: + case MSGTAG_WII_MINUSBTN: + case MSGTAG_WII_PLUSBTN: + pReference->setCharactor(character); break; - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - ref->setCharactor(0xFFFF); + case MSGTAG_WII_DPAD_ITEM: + case MSGTAG_WII_DPAD_UP: + case MSGTAG_WII_DPAD_DOWN: + case MSGTAG_WII_DPAD_HORIZONTAL: + case MSGTAG_WII_DPAD_RIGHT: + case MSGTAG_WII_DPAD_LEFT: + case MSGTAG_WII_WIIMOTE: + case MSGTAG_WII_RETICULE: + pReference->setCharactor(character); break; - case 16: - case 17: - case 18: - case 19: - case 20: - case 6: - case 7: - case 1: - case 2: - ref->setCharactor(0xFFFF); + case MSGTAG_WII_NUNCHUK: + case MSGTAG_WII_WIIMOTE2: + case MSGTAG_WII_FAIRY: + case MSGTAG_WII_CBTN: + case MSGTAG_WII_ZBTN: + case MSGTAG_WII_1BTN: + case MSGTAG_WII_2BTN: + case MSGTAG_WII_ABTN: + case MSGTAG_WII_BBTN: + pReference->setCharactor(character); } break; - case 0x60000: + case MSGTAG_GROUP(6): switch (i_tag) { - case 10: - case 11: - ref->setCharactor(0xFFFF); + case MSGTAG_BULLET: + case MSGTAG_BULLET_SPACE: + pReference->setCharactor(character); break; } break; @@ -1917,71 +1689,74 @@ void jmessage_tMeasureProcessor::do_space(u32 i_tag) { field_0x49 = 0; } - ref->addLineLength(mTotalLineCnt, var_f31, 1.0f); + pReference->addLineLength(mTotalLineCnt, var_f31, 1.0f); if (field_0x46 != 0) { - ref->addSelLength(field_0x46 - 1, var_f31); + pReference->addSelLength(field_0x46 - 1, var_f31); } } /* 8022B3EC-8022B454 225D2C 0068+00 3/3 0/0 0/0 .text do_pageType__26jmessage_tMeasureProcessorFi */ void jmessage_tMeasureProcessor::do_pageType(int param_0) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + if (param_0 == 1) { - if (pRef->getPageType(field_0x40) == 2) { - pRef->setPageType(field_0x40, 1); + if (pReference->getPageType(field_0x40) == 2) { + pReference->setPageType(field_0x40, 1); } } else if (param_0 == 3) { - if (pRef->getPageType(field_0x40) == 2) { - pRef->setPageType(field_0x40, 6); - } else if (pRef->getPageType(field_0x40) == 3) { - pRef->setPageType(field_0x40, 7); + if (pReference->getPageType(field_0x40) == 2) { + pReference->setPageType(field_0x40, 6); + } else if (pReference->getPageType(field_0x40) == 3) { + pReference->setPageType(field_0x40, 7); } } } /* 8022B454-8022B458 225D94 0004+00 1/1 0/0 0/0 .text do_name1__26jmessage_tMeasureProcessorFv */ -void jmessage_tMeasureProcessor::do_name1() {} +void jmessage_tMeasureProcessor::do_name1() { + const char* name = dComIfGs_getPlayerName(); +} /* 8022B458-8022B4E0 225D98 0088+00 1/1 0/0 0/0 .text * do_rubyset__26jmessage_tMeasureProcessorFPCvUl */ -// NONMATCHING - issue with or -void jmessage_tMeasureProcessor::do_rubyset(void const* param_0, u32 param_1) { +void jmessage_tMeasureProcessor::do_rubyset(void const* i_data, u32 i_size) { if (field_0x44 == 0) { - u8 var_r28 = param_1 - 1; - u8* var_r30 = (u8*)param_0; - int var_r29 = 0; + u8 length = i_size - 1; + u8* pRuby = (u8*)i_data; + int index = 0; - var_r30++; + pRuby++; - jmessage_tReference* ref = (jmessage_tReference*)getReference(); - while (var_r29 < var_r28) { - u8 sp10[3]; - sp10[0] = var_r30[var_r29++]; - sp10[1] = var_r30[var_r29++]; - sp10[2] = 0; + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + while (index < length) { + u8 bytes[3]; + bytes[0] = pRuby[index++]; + bytes[1] = pRuby[index++]; + bytes[2] = 0; - int var_r26 = (((s8)sp10[0] & 0xff) << 8) | ((s8)sp10[1] & 0xff); - ref->setCharactor(changeKataToHira(var_r26)); + int character = (((s8)bytes[0] & 0xFF) << 8) | ((s8)bytes[1] & 0xFF); + pReference->setCharactor(changeKataToHira(character)); } } } /* 8022B4E0-8022B558 225E20 0078+00 1/1 0/0 0/0 .text push_word__26jmessage_tMeasureProcessorFPc */ -void jmessage_tMeasureProcessor::push_word(char* param_0) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - strcpy(pRef->getWord(field_0x4b), param_0); - stack_pushCurrent(pRef->getWord(field_0x4b)); +void jmessage_tMeasureProcessor::push_word(char* i_word) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + strcpy(pReference->getWord(field_0x4b), i_word); + stack_pushCurrent(pReference->getWord(field_0x4b)); field_0x4b++; } /* 8022B558-8022B5F4 225E98 009C+00 0/0 1/1 0/0 .text * __ct__27jmessage_tSequenceProcessorFPC19jmessage_tReferenceP17jmessage_tControl */ -// NONMATCHING -jmessage_tSequenceProcessor::jmessage_tSequenceProcessor(jmessage_tReference const* param_0, - jmessage_tControl* param_1) - : JMessage::TSequenceProcessor(param_0, param_1), mMeasureProcessor(param_0) { +jmessage_tSequenceProcessor::jmessage_tSequenceProcessor(jmessage_tReference const* pReference, + jmessage_tControl* pControl) + : JMessage::TSequenceProcessor(pReference, pControl), + mMeasureProcessor(pReference) +{ field_0xa8 = 1; field_0xa4 = field_0xa8; field_0xa6 = 0; @@ -1989,7 +1764,7 @@ jmessage_tSequenceProcessor::jmessage_tSequenceProcessor(jmessage_tReference con mMouthCheck = 0; field_0xb1 = 0; field_0xae = 0; - mForceForm = 0xff; + mForceForm = 0xFF; field_0xb2 = 0; field_0xaa = 0; field_0xb5 = 0; @@ -2003,14 +1778,16 @@ void jmessage_tSequenceProcessor::do_reset() {} /* 8022B658-8022BA3C 225F98 03E4+00 1/0 0/0 0/0 .text * do_begin__27jmessage_tSequenceProcessorFPCvPCc */ -void jmessage_tSequenceProcessor::do_begin(void const* param_1, char const* param_2) { - field_0x9c = param_1; - field_0xa0 = param_2; - if (((u8*)param_1)[9] == 8) { +void jmessage_tSequenceProcessor::do_begin(void const* pEntry, char const* pszText) { + mpEntry = pEntry; + mpText = pszText; + + if (((JMSMesgEntry_c*)pEntry)->fuki_kind == 8) { field_0xa8 = g_MsgObject_HIO_c.mDisplaySpeedSpirit; } else { field_0xa8 = g_MsgObject_HIO_c.mDisplaySpeed; } + field_0xa4 = field_0xa8; field_0xa6 = 0; field_0xad = 0; @@ -2019,136 +1796,164 @@ void jmessage_tSequenceProcessor::do_begin(void const* param_1, char const* para field_0xb2 = 0; field_0xaa = 0; field_0xac = 0; - field_0xb4 = ((u8*)param_1)[8]; - field_0xb3 = ((u8*)param_1)[14]; - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - pRef->resetCharCnt(); - pRef->setNowColorType(0); - pRef->setTopColorType(0); - pRef->setNowWordCount(0); - pRef->setTopWordCount(0); - pRef->setBatchColorFlag(0); - pRef->setTopTagScale(0); - pRef->setNowTagScale(0); - pRef->calcDistance(); - dComIfGp_setMesgAnimeAttrInfo(((u8*)param_1)[16]); - dComIfGp_setMesgFaceAnimeAttrInfo(((u8*)param_1)[17]); + field_0xb4 = ((JMSMesgEntry_c*)pEntry)->se_speaker; + field_0xb3 = ((JMSMesgEntry_c*)pEntry)->se_mood; + + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + pReference->resetCharCnt(); + pReference->setNowColorType(0); + pReference->setTopColorType(0); + pReference->setNowWordCount(0); + pReference->setTopWordCount(0); + pReference->setBatchColorFlag(0); + pReference->setTopTagScale(0); + pReference->setNowTagScale(0); + pReference->calcDistance(); + + dComIfGp_setMesgAnimeAttrInfo(((JMSMesgEntry_c*)pEntry)->base_anm_id); + dComIfGp_setMesgFaceAnimeAttrInfo(((JMSMesgEntry_c*)pEntry)->face_anm_id); + if (dComIfGp_isHeapLockFlag() == 2) { - pRef->setFukiPosType(1); + pReference->setFukiPosType(1); } else { if (dComIfGp_isHeapLockFlag() == 3) { - pRef->setFukiPosType(0); + pReference->setFukiPosType(0); } else { - pRef->setFukiPosType(((u8*)param_1)[11]); + pReference->setFukiPosType(((JMSMesgEntry_c*)pEntry)->fuki_pos_type); } } - pRef->setFukiKind(((u8*)param_1)[9]); - if (dMsgObject_getMsgOutputType() != 0xff) { - pRef->setForm(dMsgObject_getMsgOutputType()); + + pReference->setFukiKind(((JMSMesgEntry_c*)pEntry)->fuki_kind); + + if (dMsgObject_getMsgOutputType() != 0xFF) { + pReference->setForm(dMsgObject_getMsgOutputType()); } else { - pRef->setForm(((u8*)param_1)[10]); + pReference->setForm(((JMSMesgEntry_c*)pEntry)->output_type); } - pRef->setArrange(((u8*)param_1)[13]); - pRef->setForm(((u8*)param_1)[13]); - pRef->setMsgID(((u16*)param_1)[2]); - if (((u16*)param_1)[3] != 0) { - dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[((u16*)param_1)[3]]); + + pReference->setArrange(((JMSMesgEntry_c*)pEntry)->unk_0xd); + pReference->setForm(((JMSMesgEntry_c*)pEntry)->unk_0xd); + pReference->setMsgID(((JMSMesgEntry_c*)pEntry)->message_id); + + if (((JMSMesgEntry_c*)pEntry)->event_label_id != 0) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[((JMSMesgEntry_c*)pEntry)->event_label_id]); } - pRef->getObjectPtr()->talkStartInit(); - mMeasureProcessor.process_messageEntryText(this, param_1, param_2); - if (pRef->isBombNameUseFlag()) { - pRef->offBombNameUseFlag(); + + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + objectPtr->talkStartInit(); + mMeasureProcessor.process_messageEntryText(this, pEntry, pszText); + + if (pReference->isBombNameUseFlag()) { + pReference->offBombNameUseFlag(); calcStringLength(); } - f32 tboxWidth = pRef->getSelLength(0); - if (tboxWidth < pRef->getSelLength(1)) { - tboxWidth = pRef->getSelLength(1); + + f32 tboxWidth = pReference->getSelLength(0); + if (tboxWidth < pReference->getSelLength(1)) { + tboxWidth = pReference->getSelLength(1); } - if (tboxWidth < pRef->getSelLength(2)) { - tboxWidth = pRef->getSelLength(2); + + if (tboxWidth < pReference->getSelLength(2)) { + tboxWidth = pReference->getSelLength(2); } + tboxWidth += 10.0f; - if (tboxWidth > pRef->getSelTBoxWidth()) { - pRef->setSelTBoxWidth(tboxWidth); + + if (tboxWidth > pReference->getSelTBoxWidth()) { + pReference->setSelTBoxWidth(tboxWidth); } - if (dMsgObject_getMsgOutputType() != 0xff) { + + if (dMsgObject_getMsgOutputType() != 0xFF) { field_0xae = dMsgObject_getMsgOutputType(); } else { - field_0xae = ((u8*)param_1)[10]; + field_0xae = ((JMSMesgEntry_c*)pEntry)->output_type; } - if (mForceForm != 0xff) { + + if (mForceForm != 0xFF) { field_0xae = mForceForm; } - pRef->setAddCharAlpha(255.0f); - pRef->setAddCharAllAlphaRate(1.0f); - pRef->setCharAllAlphaRate(1.0f); + + pReference->setAddCharAlpha(255.0f); + pReference->setAddCharAllAlphaRate(1.0f); + pReference->setCharAllAlphaRate(1.0f); + if (field_0xae == 3) { - pRef->setAddCharAllAlphaRate(1.0f / (1.0f + g_MsgObject_HIO_c.mBatchDisplayWeight_3)); - pRef->setCharAllAlphaRate(0.0f); + pReference->setAddCharAllAlphaRate(1.0f / (1.0f + g_MsgObject_HIO_c.mBatchDisplayWeight_3)); + pReference->setCharAllAlphaRate(0.0f); } else if (field_0xae == 8) { - pRef->setAddCharAllAlphaRate(1.0f / (1.0f + g_MsgObject_HIO_c.mBatchDisplayWeight_8)); - pRef->setCharAllAlphaRate(0.0f); + pReference->setAddCharAllAlphaRate(1.0f / (1.0f + g_MsgObject_HIO_c.mBatchDisplayWeight_8)); + pReference->setCharAllAlphaRate(0.0f); } else if (field_0xae == 9) { - pRef->setAddCharAllAlphaRate(1.0f / (1.0f + g_MsgObject_HIO_c.mBatchDisplayWeight_9)); - pRef->setCharAllAlphaRate(0.0f); + pReference->setAddCharAllAlphaRate(1.0f / (1.0f + g_MsgObject_HIO_c.mBatchDisplayWeight_9)); + pReference->setCharAllAlphaRate(0.0f); } else if (field_0xae == 5) { field_0xa4 = g_MsgObject_HIO_c.mCharDisplayWeight_5; - pRef->setAddCharAlpha(255.0f / (1.0f + field_0xa4)); + pReference->setAddCharAlpha(255.0f / (1.0f + field_0xa4)); } - pRef->resetReference(); + + pReference->resetReference(); field_0xb5 = 0; } /* 8022BA3C-8022BB7C 22637C 0140+00 1/0 0/0 0/0 .text do_end__27jmessage_tSequenceProcessorFv */ void jmessage_tSequenceProcessor::do_end() { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + if (dMsgObject_getSelectWordFlag() != 0) { - pRef->setSelectNum(dMsgObject_getSelectWordFlag()); - pRef->setSelectType(0); - pRef->setSelectPos(0); + pReference->setSelectNum(dMsgObject_getSelectWordFlag()); + pReference->setSelectType(0); + pReference->setSelectPos(0); } + mMouthCheck = 0; - if (pRef->getSelectNum() == 2) { - if (pRef->getSelectType() == 0) { - pRef->setStopFlag(2); + + if (pReference->getSelectNum() == 2) { + if (pReference->getSelectType() == 0) { + pReference->setStopFlag(2); } else { - pRef->setStopFlag(4); + pReference->setStopFlag(4); } } else { - if (pRef->getSelectNum() == 3) { - if (pRef->getSelectType() == 0) { - if (!pRef->isMidona()) { - pRef->setStopFlag(3); + if (pReference->getSelectNum() == 3) { + if (pReference->getSelectType() == 0) { + if (!pReference->isMidona()) { + pReference->setStopFlag(3); } } else { - pRef->setStopFlag(5); + pReference->setStopFlag(5); } } else { - if (pRef->getSendFlag() == 5) { - pRef->setStopFlag(6); + if (pReference->getSendFlag() == 5) { + pReference->setStopFlag(6); } else { - pRef->setStopFlag(7); + pReference->setStopFlag(7); } } } + if (dComIfGp_checkMesgBgm()) { dComIfGp_setMesgBgmOff(); } - if (mForceForm != 0xff) { - mForceForm = 0xff; + + if (mForceForm != 0xFF) { + mForceForm = 0xFF; } - if (pRef->isLightBatchFlag()) { - pRef->allsetCharCountBuffer(); + + if (pReference->isLightBatchFlag()) { + pReference->allsetCharCountBuffer(); } - pRef->setNowLightCount(0xff); + + pReference->setNowLightCount(0xFF); } /* 8022BB7C-8022BFE0 2264BC 0464+00 2/0 0/0 0/0 .text do_isReady__27jmessage_tSequenceProcessorFv */ bool jmessage_tSequenceProcessor::do_isReady() { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); #ifdef DEBUG - if (pRef->getRevoMessageID() == 0) { + if (pReference->getRevoMessageID() != 0) { + return 0; + } #endif if (dComIfGp_checkMesgBgm()) { @@ -2161,69 +1966,72 @@ bool jmessage_tSequenceProcessor::do_isReady() { } if (isItemMusicPlaying) { - return 0; + return false; } } - if (pRef->isButtonTagStopFlag()) { - if (mDoCPd_c::getTrigA(0) != 0) { - pRef->offButtonTagStopFlag(); - pRef->onLightBatchFlag(); + if (pReference->isButtonTagStopFlag()) { + if (mDoCPd_c::getTrigA(PAD_1)) { + pReference->offButtonTagStopFlag(); + pReference->onLightBatchFlag(); } - return 0; + return false; } - if (pRef->isKanban() || pRef->isPlaceName() || pRef->isStaffRoll() || - pRef->isBossName() || pRef->isSaveSeq() || pRef->isHowl()) + if (pReference->isKanban() || pReference->isPlaceName() || pReference->isStaffRoll() || + pReference->isBossName() || pReference->isSaveSeq() || pReference->isHowl()) { - if (pRef->getStatus() == 2 || pRef->getStatus() == 6 || pRef->getStatus() == 11 || - pRef->getStatus() == 5) + if (pReference->getStatus() == 2 || pReference->getStatus() == 6 || pReference->getStatus() == 11 || + pReference->getStatus() == 5) { - if (pRef->getLineCount() < pRef->getNowPageLineMax() || pRef->getStatus() == 11) { + if (pReference->getLineCount() < pReference->getNowPageLineMax() || pReference->getStatus() == 11) { field_0xae = 1; field_0xa4 = 0; - pRef->onBatchFlag(); - pRef->setCharCnt(0x200); + pReference->onBatchFlag(); + pReference->setCharCnt(0x200); field_0xa4 = field_0xa8; - return 1; + return true; } - if (field_0xaa == pRef->getPageEndCount()) { - return 1; + + if (field_0xaa == pReference->getPageEndCount()) { + return true; } - pRef->setStopFlag(1); + + pReference->setStopFlag(1); field_0xaa++; } - } else if (pRef->isBook()) { - if (pRef->getStatus() == 2 || - pRef->getStatus() == 6) + } else if (pReference->isBook()) { + if (pReference->getStatus() == 2 || + pReference->getStatus() == 6) { - if (pRef->getLineCount() < pRef->getNowPageLineMax()) { + if (pReference->getLineCount() < pReference->getNowPageLineMax()) { field_0xae = 1; field_0xa4 = 0; - pRef->onBatchFlag(); - pRef->setCharCnt(0x200); - return 1; + pReference->onBatchFlag(); + pReference->setCharCnt(0x200); + return true; } - if (pRef->getPageEndCount() == pRef->getPageNum()) { - return 1; + if (pReference->getPageEndCount() == pReference->getPageNum()) { + return true; } - pRef->setStopFlag(1); - field_0xaa = field_0xaa + 1; + + pReference->setStopFlag(1); + field_0xaa++; } - } else if ((pRef->getStatus() == 6 || pRef->getStatus() == 11 || - (pRef->getStatus() == 8 || pRef->getStatus() == 9) && pRef->isMidona()) || - (pRef->getStatus() == 2 && pRef->isMidona())) + } else if ((pReference->getStatus() == 6 || pReference->getStatus() == 11 || + (pReference->getStatus() == 8 || pReference->getStatus() == 9) && pReference->isMidona()) || + (pReference->getStatus() == 2 && pReference->isMidona())) { - if (pRef->getLineCount() < pRef->getNowPageLineMax()) { + if (pReference->getLineCount() < pReference->getNowPageLineMax()) { switch (field_0xae) { case 0: case 5: case 6: - if (mDoCPd_c::getTrigA(0) != 0 || field_0xb2 != 0) { + if (mDoCPd_c::getTrigA(PAD_1) || field_0xb2 != 0) { field_0xa4 = 0; - pRef->onBatchFlag(); - pRef->setCharCnt(0x200); + pReference->onBatchFlag(); + pReference->setCharCnt(0x200); } break; case 1: @@ -2231,8 +2039,8 @@ bool jmessage_tSequenceProcessor::do_isReady() { case 8: case 9: field_0xa4 = 0; - pRef->onBatchFlag(); - pRef->setCharCnt(0x200); + pReference->onBatchFlag(); + pReference->setCharCnt(0x200); break; case 2: if (field_0xb2 != 0) { @@ -2243,7 +2051,7 @@ bool jmessage_tSequenceProcessor::do_isReady() { if (field_0xa4 > 0) { field_0xa4--; - return 0; + return false; } field_0xa6++; @@ -2261,55 +2069,57 @@ bool jmessage_tSequenceProcessor::do_isReady() { if (field_0xae == 5) { field_0xa4 = g_MsgObject_HIO_c.mCharDisplayWeight_5; } - return 1; + + return true; } - if (pRef->getPageEndCount() == pRef->getPageNum()) { - return 1; + if (pReference->getPageEndCount() == pReference->getPageNum()) { + return true; } - pRef->setStopFlag(1); + + pReference->setStopFlag(1); mMouthCheck = 0; field_0xaa++; } - #ifdef DEBUG - } - #endif - return 0; + return false; } /* 8022BFE0-8022C1A0 226920 01C0+00 1/0 0/0 0/0 .text * do_character__27jmessage_tSequenceProcessorFi */ -void jmessage_tSequenceProcessor::do_character(int c) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); +void jmessage_tSequenceProcessor::do_character(int iCharacter) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + if (field_0xac == 0) { - if (JUTFont::isLeadByte_ShiftJIS(c)) { - if (!isOutfontKanjiCode(c)) { - pRef->addCharactor(changeKataToHira(change1ByteTo2Bytes(c))); + if (JUTFont::isLeadByte_ShiftJIS(iCharacter)) { + if (!isOutfontKanjiCode(iCharacter)) { + u16 character2Bytes = change1ByteTo2Bytes(iCharacter); + pReference->addCharactor(changeKataToHira(character2Bytes)); } - } else if (c < 0x8800 && !isOutfontKanjiCode(c)) { - pRef->addCharactor(changeKataToHira(c)); + } else if (iCharacter < 0x8800 && !isOutfontKanjiCode(iCharacter)) { + pReference->addCharactor(changeKataToHira(iCharacter)); } - pRef->addNowLightCount(); + + pReference->addNowLightCount(); } if (field_0xb3 != 0) { - cXyz actorPos = pRef->getActorPos(); + cXyz actorPos = pReference->getActorPos(); messageSePlay(field_0xb4, field_0xb3, &actorPos); field_0xb3 = 0; } - switch(c) { + switch(iCharacter) { case '!': mMouthCheck = 0; field_0xb1 = 1; break; - case 10: - pRef->addLineCount(); - pRef->addEndLineCount(); + case '\n': + pReference->addLineCount(); + pReference->addEndLineCount(); break; default: - if ((0x8140 <= c && c <= 0x81fc) || (0x839f <= c && c <= 0x879c)) { + if ((0x8140 <= iCharacter && iCharacter <= 0x81FC) || (0x839F <= iCharacter && iCharacter <= 0x879C)) { mMouthCheck = 0; field_0xb1 = 1; } @@ -2320,325 +2130,331 @@ void jmessage_tSequenceProcessor::do_character(int c) { /* 8022C1A0-8022C8FC 226AE0 075C+00 2/0 0/0 0/0 .text * do_tag__27jmessage_tSequenceProcessorFUlPCvUl */ bool jmessage_tSequenceProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_size) { - jmessage_tReference* reference_p = - (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); switch (i_tag & 0xFF0000) { - case 0x10000: { - cXyz pos = reference_p->getActorPos(); - messageSePlay(field_0xb4, i_tag & 0xFF, &pos); + case MSGTAG_GROUP(1): { + cXyz pos = pReference->getActorPos(); + messageSePlay(field_0xb4, (i_tag & 0xFFFF) & 0xFF, &pos); return true; } - case 0x20000: - dComIfGp_setMesgCameraTagInfo(i_tag & 0xFF); + case MSGTAG_GROUP(2): + dComIfGp_setMesgCameraTagInfo((i_tag & 0xFFFF) & 0xFF); return true; - case 0xFF0000: + case MSGTAG_GROUP(255): switch (i_tag) { - case 0xFF0000: - reference_p->setNowColorType(*(u8*)i_data); + case MSGTAG_COLOR: + pReference->setNowColorType(*(u8*)i_data & 0xFF); return true; - case 0xFF0001: - reference_p->setNowTagScale(*(u16*)i_data); + case MSGTAG_SCALE: + pReference->setNowTagScale(*(u16*)i_data & 0xFFFF); return true; - case 0xFF0002: + case MSGTAG_RUBY: case 0xFFFF02: do_rubyset(i_data, i_size); return true; } - case 0: + case MSGTAG_GROUP(0): switch (i_tag) { - case 0: - case 0x22: + case MSGTAG_PLAYER_NAME: + case MSGTAG_HORSE_NAME: push_word(); return true; - case 0x35: + case MSGTAG_UNK_53: JMessage::TSequenceProcessor::stack_pushCurrent(dMsgObject_getWord()); return true; - case 0x29: - JMessage::TSequenceProcessor::stack_pushCurrent( - reference_p->getObjectPtr()->getSmellName()); + case MSGTAG_SCENT_NAME: { + JMessage::TSequenceProcessor::stack_pushCurrent(pReference->getObjectPtr()->getSmellName()); return true; - case 0x2b: - JMessage::TSequenceProcessor::stack_pushCurrent( - reference_p->getObjectPtr()->getPortalName()); + } + case MSGTAG_PORTAL_NAME: { + JMessage::TSequenceProcessor::stack_pushCurrent(pReference->getObjectPtr()->getPortalName()); return true; - case 0x2d: - JMessage::TSequenceProcessor::stack_pushCurrent( - reference_p->getObjectPtr()->getBombName()); + } + case MSGTAG_BOMB_NAME: { + JMessage::TSequenceProcessor::stack_pushCurrent(pReference->getObjectPtr()->getBombName()); return true; - case 0x3b: - JMessage::TSequenceProcessor::stack_pushCurrent( - reference_p->getObjectPtr()->getInsectName()); + } + case MSGTAG_INSECT_NAME: { + JMessage::TSequenceProcessor::stack_pushCurrent(pReference->getObjectPtr()->getInsectName()); return true; - case 0x3c: - JMessage::TSequenceProcessor::stack_pushCurrent( - reference_p->getObjectPtr()->getLetterName()); + } + case MSGTAG_LETTER_NAME: { + JMessage::TSequenceProcessor::stack_pushCurrent(pReference->getObjectPtr()->getLetterName()); return true; - case 0x3d: + } + case MSGTAG_LINE_DOWN: return true; - case 0x3e: - case 0x3f: + case MSGTAG_CURRENT_LETTER_PAGE: + case MSGTAG_MAX_LETTER_PAGE: push_word(); return true; - case 1: + case MSGTAG_INSTANT: field_0xb2 = 1; - reference_p->setBatchColorFlag(1); + pReference->setBatchColorFlag(1); return true; - case 2: + case MSGTAG_TYPE: field_0xb2 = 0; return true; - case 3: - case 4: - reference_p->setSendTimer(*(u16*)i_data); - if (reference_p->getSendTimer() == 0) { - reference_p->setSendFlag(3); + case MSGTAG_UNK_3: + case MSGTAG_AUTOBOX: + pReference->setSendTimer(*(u16*)i_data); + if (pReference->getSendTimer() == 0) { + pReference->setSendFlag(3); } else { - reference_p->setSendFlag(1); + pReference->setSendFlag(1); } return true; - case 5: - reference_p->setSendTimer(*(u16*)i_data); - reference_p->setSendFlag(2); + case MSGTAG_BOXATMOST: + pReference->setSendTimer(*(u16*)i_data); + pReference->setSendFlag(2); return true; - case 0x36: + case MSGTAG_BOXATLEAST: dMeter2Info_setMsgKeyWaitTimer(*(u16*)i_data); - reference_p->setSendTimer(*(u16*)i_data); - reference_p->setSendFlag(6); + pReference->setSendTimer(*(u16*)i_data); + pReference->setSendFlag(6); return true; - case 0x28: - reference_p->setDemoFrame(*(u32*)i_data); - reference_p->setSendFlag(4); + case MSGTAG_DEMOBOX: + pReference->setDemoFrame(*(u32*)i_data); + pReference->setSendFlag(4); return true; - case 6: + case MSGTAG_UNK_6: field_0xa8 = *(u16*)i_data; field_0xa4 = field_0xa8; return true; - case 7: + case MSGTAG_PAUSE: field_0xa4 = *(u16*)i_data; mMouthCheck = 0; return true; - case 8: - if (reference_p->getSelectNum() == 0) { - reference_p->setSelectNum(2); - reference_p->setSelectType(0); + case MSGTAG_SELECT_2WAY: + if (pReference->getSelectNum() == 0) { + pReference->setSelectNum(2); + pReference->setSelectType(0); field_0xb2 = 1; } if (*(u8*)i_data == 1) { - reference_p->setSelectPos(field_0xad); + pReference->setSelectPos(field_0xad); } field_0xad++; field_0xac = 1; return true; - case 9: - if (reference_p->getSelectNum() == 0) { - reference_p->setSelectNum(3); - reference_p->setSelectType(0); + case MSGTAG_SELECT_3WAY: + if (pReference->getSelectNum() == 0) { + pReference->setSelectNum(3); + pReference->setSelectType(0); field_0xb2 = 1; } if (*(u8*)i_data == 1) { - reference_p->setSelectPos(field_0xad); + pReference->setSelectPos(field_0xad); } field_0xad++; field_0xac = 1; return true; - case 0x1e: - if (reference_p->getSelectNum() != 2 || reference_p->getSelectType() != 1) { - reference_p->setSelectNum(2); - reference_p->setSelectType(1); + case MSGTAG_INLINE_2_NEXT: + if (pReference->getSelectNum() != 2 || pReference->getSelectType() != 1) { + pReference->setSelectNum(2); + pReference->setSelectType(1); } field_0xb2 = 1; return true; - case 0x1f: - if (reference_p->getSelectNum() != 2 || reference_p->getSelectType() != 1) { - reference_p->setSelectNum(2); - reference_p->setSelectType(1); - reference_p->setSelectPos(0); + case MSGTAG_INLINE_2_FIRST: + if (pReference->getSelectNum() != 2 || pReference->getSelectType() != 1) { + pReference->setSelectNum(2); + pReference->setSelectType(1); + pReference->setSelectPos(0); } else { - reference_p->setSelectPos(1); + pReference->setSelectPos(1); } field_0xb2 = 1; return true; - case 0x33: - if (reference_p->getSelectNum() != 3 || reference_p->getSelectType() != 1) { - reference_p->setSelectNum(3); - reference_p->setSelectType(1); + case MSGTAG_INLINE_3_NEXT: + if (pReference->getSelectNum() != 3 || pReference->getSelectType() != 1) { + pReference->setSelectNum(3); + pReference->setSelectType(1); } field_0xad++; field_0xb2 = 1; return true; - case 0x34: - if (reference_p->getSelectNum() != 3 || reference_p->getSelectType() != 1) { - reference_p->setSelectNum(3); - reference_p->setSelectType(1); + case MSGTAG_INLINE_3_FIRST: + if (pReference->getSelectNum() != 3 || pReference->getSelectType() != 1) { + pReference->setSelectNum(3); + pReference->setSelectType(1); } - reference_p->setSelectPos(field_0xad); + pReference->setSelectPos(field_0xad); field_0xb2 = 1; return true; - case 0x20: - do_character(10); - JMessage::TSequenceProcessor::stack_pushCurrent(reference_p->getSelMsgPtr()); + case MSGTAG_AWAIT_CHOICE: + do_character('\n'); + JMessage::TSequenceProcessor::stack_pushCurrent(pReference->getSelMsgPtr()); return true; - case 0x21: + case MSGTAG_UNK_33: do_name1(); return true; - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1a: - case 0x1b: - case 0x1c: - case 0x1d: - case 0x23: - case 0x24: - case 0x27: - case 0x2a: - case 0x2c: - case 0x2e: - case 0x2f: - case 0x30: - case 0x39: - case 0x3a: + case MSGTAG_ABTN: + case MSGTAG_BBTN: + case MSGTAG_CSTICK: + case MSGTAG_LBTN: + case MSGTAG_RBTN: + case MSGTAG_XBTN: + case MSGTAG_YBTN: + case MSGTAG_ZBTN: + case MSGTAG_DPAD: + case MSGTAG_STICK_CROSS: + case MSGTAG_LEFT_ARROW: + case MSGTAG_RIGHT_ARROW: + case MSGTAG_UP_ARROW: + case MSGTAG_DOWN_ARROW: + case MSGTAG_STICK_UP: + case MSGTAG_STICK_DOWN: + case MSGTAG_STICK_LEFT: + case MSGTAG_STICK_RIGHT: + case MSGTAG_STICK_VERTICAL: + case MSGTAG_STICK_HORIZONTAL: + case MSGTAG_RED_TARGET: + case MSGTAG_YELLOW_TARGET: + case MSGTAG_ABTN_STAR: + case MSGTAG_WHITE_TARGET: + case MSGTAG_WARP_ICON: + case MSGTAG_XYBTN: + case MSGTAG_YXBTN: + case MSGTAG_BOMB_BAG_ICON: + case MSGTAG_HEART: + case MSGTAG_QUAVER: do_space(i_tag); return true; - case 0x25: - reference_p->decideOutFontRupeeColor(0); - dMsgObject_c* object_p = reference_p->getObjectPtr(); + case MSGTAG_INPUT_VALUE: { + pReference->decideOutFontRupeeColor(0); + dMsgObject_c* object_p = pReference->getObjectPtr(); object_p->setInputValue(0); object_p->onInputFlag(); - reference_p->resetInputFigure(); - reference_p->setSendFlag(5); + pReference->resetInputFigure(); + pReference->setSendFlag(5); if (*(u32*)i_data == 1) { dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[80]); } return true; - case 0x26: - reference_p->onButtonTagStopFlag(); + } + case MSGTAG_ACKNOWLEDGE: + pReference->onButtonTagStopFlag(); return true; - case 0x31: - char buffer1[40]; - u8 sel_bomb_num = reference_p->getObjectPtr()->getSelectBombNum(); - dMsgUnit_setTag(7, sel_bomb_num, buffer1); - strcpy((char*)reference_p->getWord(field_0xb5), buffer1); - push_word(); - return true; - case 0x32: - char buffer2[40]; - s16 sel_bomb_price = reference_p->getObjectPtr()->getSelectBombPrice(); - dMsgUnit_setTag(1, sel_bomb_price, buffer2); - strcpy((char*)reference_p->getWord(field_0xb5), buffer2); - push_word(); - return true; - case 0x37: - case 0x38: + case MSGTAG_BOMB_NUM: { + char buffer[40]; + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + + u8 sel_bomb_num = objectPtr->getSelectBombNum(); + dMsgUnit_setTag(7, sel_bomb_num, buffer); + strcpy((char*)pReference->getWord(field_0xb5), buffer); push_word(); return true; } - case 0x40000: - switch (i_tag & 0xFF00FFFF) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: + case MSGTAG_BOMB_PRICE: { + char buffer[40]; + dMsgObject_c* objectPtr = pReference->getObjectPtr(); + + s16 sel_bomb_price = objectPtr->getSelectBombPrice(); + dMsgUnit_setTag(1, sel_bomb_price, buffer); + strcpy((char*)pReference->getWord(field_0xb5), buffer); push_word(); return true; } - case 0x50000: - switch (i_tag & 0xFF00FFFF) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: + case MSGTAG_BOMB_MAX: + case MSGTAG_ARROW_MAX: push_word(); return true; } - case 0x60000: + case MSGTAG_GROUP(4): switch (i_tag & 0xFF00FFFF) { - case 0: + case MSGTAG_GLYPH_DOLLARSIGN: + case MSGTAG_GLYPH_BACKSLASH: + case MSGTAG_GLYPH_ATMARK: + case MSGTAG_GLYPH_SHARP: + case MSGTAG_GLYPH_FLAT: + case MSGTAG_GLYPH_SQRT: + case MSGTAG_GLYPH_PERCENT: + case MSGTAG_GLYPH_HECTARE: + case MSGTAG_GLYPH_ARE: + case MSGTAG_GLYPH_LITRE: + case MSGTAG_GLYPH_WATT: + case MSGTAG_GLYPH_CALORIE: + case MSGTAG_GLYPH_DOLLAR: + case MSGTAG_GLYPH_CENT: + push_word(); + return true; + } + case MSGTAG_GROUP(5): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_TIME_INFO: case 1: case 2: - case 3: + case MSGTAG_INSECT_INFO: case 4: case 5: case 6: - case 7: - case 8: - case 9: + case MSGTAG_RIVER_POINTS: + case MSGTAG_FISH_LENGTH: + case MSGTAG_FUNDRAISE_REMAIN: + case MSGTAG_NEW_LETTER_NUM: + case MSGTAG_POE_NUM: + case MSGTAG_BALLOON_SCORE: + case MSGTAG_FISH_COUNT: + case MSGTAG_ROLLGOAL_LV: push_word(); return true; - case 10: - case 11: + } + case MSGTAG_GROUP(6): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_PLAYER_GENITIV: + case MSGTAG_HORSE_GENITIV: + case MSGTAG_MALE_ICON: + case MSGTAG_FEMALE_ICON: + case MSGTAG_STAR_ICON: + case MSGTAG_REFMARK: + case MSGTAG_THIN_LEFT_ARROW: + case MSGTAG_THIN_RIGHT_ARROW: + case MSGTAG_THIN_UP_ARROW: + case MSGTAG_THIN_DOWN_ARROW: + push_word(); + return true; + case MSGTAG_BULLET: + case MSGTAG_BULLET_SPACE: do_space(i_tag); return true; } - case 0x30000: + case MSGTAG_GROUP(3): switch (i_tag & 0xFF00FFFF) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: + case MSGTAG_WII_ABTN: + case MSGTAG_WII_BBTN: + case MSGTAG_WII_HOMEBTN: + case MSGTAG_WII_MINUSBTN: + case MSGTAG_WII_PLUSBTN: + case MSGTAG_WII_1BTN: + case MSGTAG_WII_2BTN: + case MSGTAG_WII_DPAD_ITEM: + case MSGTAG_WII_DPAD_UP: + case MSGTAG_WII_DPAD_DOWN: + case MSGTAG_WII_DPAD_HORIZONTAL: + case MSGTAG_WII_DPAD_RIGHT: + case MSGTAG_WII_DPAD_LEFT: + case MSGTAG_WII_WIIMOTE: + case MSGTAG_WII_RETICULE: + case MSGTAG_WII_NUNCHUK: + case MSGTAG_WII_WIIMOTE2: + case MSGTAG_WII_FAIRY: + case MSGTAG_WII_CBTN: + case MSGTAG_WII_ZBTN: do_space(i_tag); return true; - case 0: + case MSGTAG_WII_MSGID_OVERRIDE: return true; } } @@ -2654,104 +2470,107 @@ bool jmessage_tSequenceProcessor::do_jump_isReady() { /* 8022C904-8022C908 227244 0004+00 1/1 0/0 0/0 .text do_name1__27jmessage_tSequenceProcessorFv */ void jmessage_tSequenceProcessor::do_name1() { - /* empty function */ + const char* name = dComIfGs_getPlayerName(); } /* 8022C908-8022CA24 227248 011C+00 2/1 0/0 0/0 .text do_space__27jmessage_tSequenceProcessorFUl */ -void jmessage_tSequenceProcessor::do_space(u32 param_1) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - pRef->addNowLightCount(); +void jmessage_tSequenceProcessor::do_space(u32 i_tag) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + pReference->addNowLightCount(); + if (field_0xac == 0) { - u16 uVar1 = 0xffff; - switch (param_1) { - case 10: - uVar1 = 0xffe0; + u16 character = 0xFFFF; + switch (i_tag) { + case MSGTAG_ABTN: + character = 0xFFE0; break; - case 0xb: - uVar1 = 0xffe1; + case MSGTAG_BBTN: + character = 0xFFE1; break; - case 0xc: - uVar1 = 0xffe2; + case MSGTAG_CSTICK: + character = 0xFFE2; break; - case 0xd: - uVar1 = 0xffe3; + case MSGTAG_LBTN: + character = 0xFFE3; break; - case 0xe: - uVar1 = 0xffe4; + case MSGTAG_RBTN: + character = 0xFFE4; break; - case 0xf: - uVar1 = 0xffe5; + case MSGTAG_XBTN: + character = 0xFFE5; break; - case 0x10: - uVar1 = 0xffe6; + case MSGTAG_YBTN: + character = 0xFFE6; break; - case 0x11: - uVar1 = 0xffe7; + case MSGTAG_ZBTN: + character = 0xFFE7; break; - case 0x12: - uVar1 = 0xffe8; + case MSGTAG_DPAD: + character = 0xFFE8; break; - case 0x13: - uVar1 = 0xffe9; + case MSGTAG_STICK_CROSS: + character = 0xFFE9; break; - case 0x14: - uVar1 = 0xffea; + case MSGTAG_LEFT_ARROW: + character = 0xFFEA; break; - case 0x15: - uVar1 = 0xffeb; + case MSGTAG_RIGHT_ARROW: + character = 0xFFEB; break; - case 0x16: - uVar1 = 0xffec; + case MSGTAG_UP_ARROW: + character = 0xFFEC; break; - case 0x17: - uVar1 = 0xffed; + case MSGTAG_DOWN_ARROW: + character = 0xFFED; break; - case 0x18: - uVar1 = 0xffee; + case MSGTAG_STICK_UP: + character = 0xFFEE; break; - case 0x19: - uVar1 = 0xfff0; + case MSGTAG_STICK_DOWN: + character = 0xFFF0; break; - case 0x1a: - uVar1 = 0xfff1; + case MSGTAG_STICK_LEFT: + character = 0xFFF1; break; - case 0x1b: - uVar1 = 0xfff2; + case MSGTAG_STICK_RIGHT: + character = 0xFFF2; break; - case 0x1c: - uVar1 = 0xfff3; + case MSGTAG_STICK_VERTICAL: + character = 0xFFF3; break; - case 0x1d: - uVar1 = 0xfff4; + case MSGTAG_STICK_HORIZONTAL: + character = 0xFFF4; break; - case 0x39: - uVar1 = 0xfff5; + case MSGTAG_HEART: + character = 0xFFF5; break; - case 0x3a: - uVar1 = 0xfff6; + case MSGTAG_QUAVER: + character = 0xFFF6; } - pRef->addCharactor(uVar1); + + pReference->addCharactor(character); } } /* 8022CA24-8022CAAC 227364 0088+00 1/1 0/0 0/0 .text * do_rubyset__27jmessage_tSequenceProcessorFPCvUl */ -// NONMATCHING - or logic -void jmessage_tSequenceProcessor::do_rubyset(void const* param_0, u32 param_1) { +void jmessage_tSequenceProcessor::do_rubyset(void const* i_data, u32 i_size) { if (field_0xac == 0) { - u8 size = param_1 - 1; - u8* r30 = (u8*)param_0; - int i = 0; - r30++; - jmessage_tReference* pRef = (jmessage_tReference*)JMessage::TSequenceProcessor::getReference(); - while (i < size) { - u8 x[3]; - x[0] = r30[i++]; - x[1] = r30[i++]; - x[2] = 0; - int kata = (((s8)x[0] & 0xff) << 8) | ((s8)x[1] & 0xff); - pRef->addCharactor(changeKataToHira(kata)); + u8 length = i_size - 1; + u8* pRuby = (u8*)i_data; + int index = 0; + pRuby++; + + jmessage_tReference* pReference = (jmessage_tReference*)JMessage::TSequenceProcessor::getReference(); + while (index < length) { + u8 bytes[3]; + bytes[0] = pRuby[index++]; + bytes[1] = pRuby[index++]; + bytes[2] = 0; + + int character = (((s8)bytes[0] & 0xFF) << 8) | ((s8)bytes[1] & 0xFF); + pReference->addCharactor(changeKataToHira(character)); } } } @@ -2759,64 +2578,67 @@ void jmessage_tSequenceProcessor::do_rubyset(void const* param_0, u32 param_1) { /* 8022CAAC-8022CB10 2273EC 0064+00 1/1 0/0 0/0 .text push_word__27jmessage_tSequenceProcessorFv */ void jmessage_tSequenceProcessor::push_word() { - jmessage_tReference* pRef = (jmessage_tReference*)JMessage::TSequenceProcessor::getReference(); - JMessage::TSequenceProcessor::stack_pushCurrent(pRef->getWord(field_0xb5)); + jmessage_tReference* pReference = (jmessage_tReference*)JMessage::TSequenceProcessor::getReference(); + JMessage::TSequenceProcessor::stack_pushCurrent(pReference->getWord(field_0xb5)); field_0xb5++; - pRef->setNowWordCount(field_0xb5); + pReference->setNowWordCount(field_0xb5); } /* 8022CB10-8022CBE4 227450 00D4+00 2/2 0/0 0/0 .text * messageSePlay__27jmessage_tSequenceProcessorFUcUcP4cXyz */ -void jmessage_tSequenceProcessor::messageSePlay(u8 param_1, u8 param_2, cXyz* param_3) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - dMsgObject_c* pObject = pRef->getObjectPtr(); - if (param_3 != NULL && pObject->isNoDemoFlag()) { +void jmessage_tSequenceProcessor::messageSePlay(u8 i_speaker, u8 i_mood, cXyz* i_pos) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + dMsgObject_c* pObject = pReference->getObjectPtr(); + + if (i_pos != NULL && pObject->isNoDemoFlag()) { if (dComIfGp_roomControl_getStayNo() != 0) { s8 reverb = dComIfGp_getReverb(dComIfGp_roomControl_getStayNo()); - OS_REPORT("message se play1===>%d\n", param_2); - Z2GetSpeechMgr2()->playOneShotVoice(param_1, param_2, param_3, reverb); + OS_REPORT("message se play1===>%d\n", i_mood); + Z2GetSpeechMgr2()->playOneShotVoice(i_speaker, i_mood, i_pos, reverb); } else { - OS_REPORT("message se play2===>%d\n", param_2); - Z2GetSpeechMgr2()->playOneShotVoice(param_1, param_2, param_3, 0); + OS_REPORT("message se play2===>%d\n", i_mood); + Z2GetSpeechMgr2()->playOneShotVoice(i_speaker, i_mood, i_pos, 0); } } else { if (dComIfGp_roomControl_getStayNo() != 0) { s8 reverb = dComIfGp_getReverb(dComIfGp_roomControl_getStayNo()); - OS_REPORT("message se play3===>%d\n", param_2); - Z2GetSpeechMgr2()->playOneShotVoice(param_1, param_2, NULL, reverb); + OS_REPORT("message se play3===>%d\n", i_mood); + Z2GetSpeechMgr2()->playOneShotVoice(i_speaker, i_mood, NULL, reverb); } else { - OS_REPORT("message se play4===>%d\n", param_2); - Z2GetSpeechMgr2()->playOneShotVoice(param_1, param_2, NULL, 0); + OS_REPORT("message se play4===>%d\n", i_mood); + Z2GetSpeechMgr2()->playOneShotVoice(i_speaker, i_mood, NULL, 0); } } } /* 8022CBE4-8022CBE8 227524 0004+00 1/0 0/0 0/0 .text * do_jump__27jmessage_tSequenceProcessorFPCvPCc */ -void jmessage_tSequenceProcessor::do_jump(void const* param_0, char const* param_1) {} +void jmessage_tSequenceProcessor::do_jump(void const* pEntry, char const* pszText) {} /* 8022CBE8-8022CCB0 227528 00C8+00 2/2 0/0 0/0 .text * calcStringLength__27jmessage_tSequenceProcessorFv */ void jmessage_tSequenceProcessor::calcStringLength() { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - pRef->onSelectSetCancelFlag(); - mMeasureProcessor.process_messageEntryText(this, field_0x9c, field_0xa0); - pRef->offSelectSetCancelFlag(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + pReference->onSelectSetCancelFlag(); + mMeasureProcessor.process_messageEntryText(this, mpEntry, mpText); + pReference->offSelectSetCancelFlag(); } /* 8022CCB0-8022CDC8 2275F0 0118+00 0/0 1/1 0/0 .text * __ct__28jmessage_tRenderingProcessorFPC19jmessage_tReference */ -jmessage_tRenderingProcessor::jmessage_tRenderingProcessor(jmessage_tReference const* param_0) : JMessage::TRenderingProcessor(param_0) { - mpOutFont = 0; - mCharInfoPtr = 0; +jmessage_tRenderingProcessor::jmessage_tRenderingProcessor(jmessage_tReference const* pReference) : JMessage::TRenderingProcessor(pReference) { + mpOutFont = NULL; + mCharInfoPtr = NULL; mpCharInfoCnt = 0; field_0x44 = 0.0f; field_0x48 = field_0x4c = 0.0f; mTextInitPosX = mTextInitPosY = 0.0f; mTextInitScaleX = mTextInitScaleY = 1.0f; + for (int i = 0; i < 3; i++) { mSelTextInitPosX[i] = mSelTextInitPosY[i] = 0.0f; } + field_0x11c = 0; field_0x128 = 0.0f; field_0x12c = 0.0f; @@ -2831,17 +2653,18 @@ jmessage_tRenderingProcessor::jmessage_tRenderingProcessor(jmessage_tReference c field_0x14a = 0; field_0x13c = 0; field_0x13e = 0; - field_0x184[2] = 0; - field_0x184[1] = 0; - field_0x184[0] = 0; + field_0x184[0] = field_0x184[1] = field_0x184[2] = 0; field_0x14d = 0; field_0x14e = 0; - mCCColor = 0xffffffff; - mGCColor = 0xffffffff; + + mCCColor = 0xFFFFFFFF; + mGCColor = 0xFFFFFFFF; + field_0x14f = 0; mColorNo = 0; field_0x151 = 0; field_0x138 = 0.0f; + for (int i = 0; i < 40; i++) { field_0x7c[i] = 0.0f; } @@ -2851,17 +2674,15 @@ jmessage_tRenderingProcessor::jmessage_tRenderingProcessor(jmessage_tReference c */ void jmessage_tRenderingProcessor::do_reset() {} -/* ############################################################################################## */ -/* 80399610-80399610 025C70 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399617 = ""; -#pragma pop +static void dummyString2() { + DEAD_STRING(""); +} /* 8022CDCC-8022CFD8 22770C 020C+00 1/0 0/0 0/0 .text * do_begin__28jmessage_tRenderingProcessorFPCvPCc */ -void jmessage_tRenderingProcessor::do_begin(void const* param_0, char const* param_1) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); +void jmessage_tRenderingProcessor::do_begin(void const* pEntry, char const* pszText) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + field_0x128 = 0.0f; field_0x12c = 0.0f; field_0x130 = 0.0f; @@ -2875,44 +2696,54 @@ void jmessage_tRenderingProcessor::do_begin(void const* param_0, char const* par field_0x13c = 0; field_0x13e = 0; field_0x138 = 0.0f; - field_0x184[2] = 0; - field_0x184[1] = 0; - field_0x184[0] = 0; - if (mCharInfoPtr != 0) { + field_0x184[0] = field_0x184[1] = field_0x184[2] = 0; + + if (mCharInfoPtr != NULL) { mpCharInfoCnt = (s16*)((u8*)mCharInfoPtr + 0x1068); *mpCharInfoCnt = 0; } + field_0x14d = 0; field_0x140 = 0; field_0x44 = 1.0f; field_0x14e = 0; - mCCColor = 0xffffffff; - mGCColor = 0xffffffff; - field_0x14f = pRef->getTopWordCount(); + + mCCColor = 0xFFFFFFFF; + mGCColor = 0xFFFFFFFF; + + field_0x14f = pReference->getTopWordCount(); field_0x187 = 0; field_0x48 = mTextInitPosX; field_0x4c = mTextInitPosY; field_0x151 = 0; + mpOutFont->initialize(); - for (int i = 0; i < 0x28; i++) { + + for (int i = 0; i < 40; i++) { field_0x7c[i] = 0.0f; } + field_0x11c = 0; - strcpy(pRef->getTextPtr(), ""); - strcpy(pRef->getTextSPtr(), ""); - strcpy(pRef->getRubyPtr(), ""); + strcpy(pReference->getTextPtr(), ""); + strcpy(pReference->getTextSPtr(), ""); + strcpy(pReference->getRubyPtr(), ""); + for (int i = 0; i < 3; i++) { - strcpy(pRef->getSelTextPtr(i), ""); - strcpy(pRef->getSelRubyPtr(i), ""); + strcpy(pReference->getSelTextPtr(i), ""); + strcpy(pReference->getSelRubyPtr(i), ""); } - if (1.0f != pRef->getDistanceScale()) { + + if (1.0f != pReference->getDistanceScale()) { do_scale(field_0x44); } - do_color(pRef->getTopColorType()); - pRef->resetDrawLightCount(); + + do_color(pReference->getTopColorType()); + pReference->resetDrawLightCount(); + do_widthcenter(); do_heightcenter(); - field_0x13c = pRef->getTopTagScale(); + + field_0x13c = pReference->getTopTagScale(); if (field_0x13c != 0) { do_scale(field_0x13c / 100.0f); } @@ -2920,293 +2751,305 @@ void jmessage_tRenderingProcessor::do_begin(void const* param_0, char const* par /* 8022CFD8-8022D0A0 227918 00C8+00 1/0 0/0 0/0 .text do_end__28jmessage_tRenderingProcessorFv */ void jmessage_tRenderingProcessor::do_end() { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + if (dMsgObject_getSelectWordFlag() != 0) { for (int i = 0; i < dMsgObject_getSelectWordFlag(); i++) { - char acStack_e0[200]; - strcpy(acStack_e0, dMsgObject_getSelectWord(i)); - if (pRef->getSelectNum() == 2) { - strcat(pRef->getSelTextPtr(i + 1), acStack_e0); - } else { - if (pRef->getSelectNum() == 3) { - strcat(pRef->getSelTextPtr(i), acStack_e0); - } + char buffer[200]; + strcpy(buffer, dMsgObject_getSelectWord(i)); + + if (pReference->getSelectNum() == 2) { + strcat(pReference->getSelTextPtr(i + 1), buffer); + } else if (pReference->getSelectNum() == 3) { + strcat(pReference->getSelTextPtr(i), buffer); } } } - u8 batchColorFlag = pRef->getBatchColorFlag(); + + u8 batchColorFlag = pReference->getBatchColorFlag(); if (batchColorFlag != 0) { - pRef->setBatchColorFlag(batchColorFlag - 1); + batchColorFlag--; + pReference->setBatchColorFlag(batchColorFlag); } } /* 8022D0A0-8022D74C 2279E0 06AC+00 1/0 0/0 0/0 .text * do_character__28jmessage_tRenderingProcessorFi */ -void jmessage_tRenderingProcessor::do_character(int param_1) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - JUTFont* pFont = pRef->getFont(); +void jmessage_tRenderingProcessor::do_character(int i_character) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + JUTFont* pFont = pReference->getFont(); + char local_d4[3]; local_d4[2] = 0; - if ((param_1 & 0xff00) != 0) { - local_d4[0] = ((param_1 & 0xff00) >> 8); - local_d4[1] = param_1 & 0xff; + + if ((i_character & 0xFF00) != 0) { + local_d4[0] = ((i_character & 0xFF00) >> 8); + local_d4[1] = i_character & 0xFF; } else { - local_d4[0] = param_1 & 0xff; + local_d4[0] = i_character & 0xFF; local_d4[1] = 0; } - if (param_1 == 10) { + + if (i_character == 10) { field_0x142++; + if (field_0x14e != 0) { field_0x48 = mSelTextInitPosX[field_0x14e - 1]; } else { field_0x48 = mTextInitPosX; } - field_0x4c = field_0x4c + pRef->getLineSpace(); - if (field_0x140 != 0 && - pRef->getNowPageType() != 4 && - pRef->getNowPageType() != 5) + + field_0x4c = field_0x4c + pReference->getLineSpace(); + if (field_0x140 != 0 && pReference->getNowPageType() != 4 && pReference->getNowPageType() != 5) { if (field_0x44 > 1.0f) { field_0x44 = 1.0f; } field_0x140 = 0; } - do_strcat((char*)local_d4, true, true, false); + + do_strcat(local_d4, true, true, false); field_0x12c = 0.0f; + if (field_0x14e != 0) { - do_rubystrcat((char*)local_d4, pRef->getSelRubyPtr(field_0x14e - 1), pRef->getSelRubyCharSpace(), 0.0f); + do_rubystrcat(local_d4, pReference->getSelRubyPtr(field_0x14e - 1), pReference->getSelRubyCharSpace(), 0.0f); } else { - do_rubystrcat((char*)local_d4, pRef->getRubyPtr(), pRef->getRubyCharSpace(), 0.0f); - pRef->addDrawLightCount(); + do_rubystrcat(local_d4, pReference->getRubyPtr(), pReference->getRubyCharSpace(), 0.0f); + pReference->addDrawLightCount(); } + do_widthcenter(); do_heightcenter(); } else { - f32 fVar1; + f32 var_f31; if (field_0x187 == 0) { - fVar1 = pRef->getFontSizeX() / pFont->getCellWidth(); + var_f31 = pReference->getFontSizeX() / pFont->getCellWidth(); if (1.0f != field_0x44) { - s16 iVar9 = 0.5f + field_0x44 * pRef->getFontSizeX(); - fVar1 = (f32)iVar9 / (f32)pFont->getCellWidth(); + s16 iVar9 = 0.5f + field_0x44 * pReference->getFontSizeX(); + var_f31 = (f32)iVar9 / (f32)pFont->getCellWidth(); } - field_0x7c[field_0x142] = fVar1 * pFont->getOffset(param_1); + field_0x7c[field_0x142] = var_f31 * pFont->getOffset(i_character); field_0x48 += field_0x7c[field_0x142]; field_0x187 = 1; } if (field_0x14e != 0) { - fVar1 = pRef->getSelFontSize() / pFont->getCellWidth(); - field_0x48 += (fVar1 * (field_0x44 * pFont->getWidth(param_1)) + pRef->getSelCharSpace()); + var_f31 = pReference->getSelFontSize() / pFont->getCellWidth(); + field_0x48 += (var_f31 * (field_0x44 * pFont->getWidth(i_character)) + pReference->getSelCharSpace()); } else { - pRef->addDrawLightCount(); - fVar1 = pRef->getFontSizeX() / pFont->getCellWidth(); - if (checkCharInfoCharactor(param_1) && mCharInfoPtr != NULL) { - f32 cellWidth = pFont->getCellWidth(); - f32 dVar14 = pFont->getWidth() / cellWidth; - f32 dVar13 = fVar1 * (field_0x44 * pFont->getWidth(param_1)); - f32 dVar17 = dVar14 * (field_0x44 * pRef->getFontSizeY()); - f32 fVar1 = 1.0f; - if (param_1 == 0x8145) { - fVar1 = 0.3f; + pReference->addDrawLightCount(); + var_f31 = pReference->getFontSizeX() / pFont->getCellWidth(); + + if (checkCharInfoCharactor(i_character) && mCharInfoPtr != NULL) { + f32 var_f29 = (f32)pFont->getWidth() / pFont->getCellWidth(); + f32 var_f28 = var_f31 * (field_0x44 * pFont->getWidth(i_character)); + f32 var_f27 = var_f29 * (field_0x44 * pReference->getFontSizeY()); + + f32 var_f30 = 1.0f; + if (i_character == 0x8145) { + var_f30 = 0.3f; } - f32 fVar5 = mTextInitPosY + mTextInitScaleY * (field_0x4c - mTextInitPosY); - f32 fVar6 = mTextInitPosX + mTextInitScaleX * (field_0x48 - mTextInitPosX); - getCharInfo(0.5f + (fVar6 + (0.5f * dVar13)), - field_0x138 + (fVar5 + 0.5f * dVar17), - field_0x44 * fVar1, field_0x44 * fVar1, 1.0f); + + f32 var_f26 = mTextInitPosY + mTextInitScaleY * (field_0x4c - mTextInitPosY); + f32 var_f25 = mTextInitPosX + mTextInitScaleX * (field_0x48 - mTextInitPosX); + getCharInfo(0.5f + (var_f25 + (0.5f * var_f28)), + field_0x138 + (var_f26 + 0.5f * var_f27), + field_0x44 * var_f30, field_0x44 * var_f30, 1.0f); } - f32 dVar12 = pRef->getCharSpace(); - fVar1 = pRef->getFontSizeX() / pFont->getCellWidth(); + + f32 var_f24 = pReference->getCharSpace(); + var_f31 = pReference->getFontSizeX() / pFont->getCellWidth(); if (1.0f != field_0x44) { - s16 iVar9 = 0.5f + field_0x44 * pRef->getFontSizeX(); - fVar1 = (f32)iVar9 / (f32)pFont->getCellWidth(); + s16 iVar9 = 0.5f + field_0x44 * pReference->getFontSizeX(); + var_f31 = (f32)iVar9 / (f32)pFont->getCellWidth(); } - field_0x48 += dVar12 + (fVar1 * pFont->getWidth(param_1)); + field_0x48 += var_f24 + (var_f31 * pFont->getWidth(i_character)); } if (field_0x14c != 0) { --field_0x14c; if (field_0x14c == 0) { if (field_0x14e != 0) { - f32 dVar13 = - (field_0x48 - mSelTextInitPosX[field_0x14e - 1] - pRef->getSelCharSpace()); - do_rubystrcat(field_0x152, pRef->getSelRubyPtr(field_0x14e - 1), - pRef->getSelRubyCharSpace(), dVar13); + f32 var_f23 = (field_0x48 - mSelTextInitPosX[field_0x14e - 1] - pReference->getSelCharSpace()); + do_rubystrcat(field_0x152, pReference->getSelRubyPtr(field_0x14e - 1), + pReference->getSelRubyCharSpace(), var_f23); } else { - f32 dVar13 = (field_0x48 - mTextInitPosX) - pRef->getCharSpace(); - do_rubystrcat(field_0x152, pRef->getRubyPtr(), pRef->getRubyCharSpace(), - dVar13); + f32 var_f22 = (field_0x48 - mTextInitPosX) - pReference->getCharSpace(); + do_rubystrcat(field_0x152, pReference->getRubyPtr(), pReference->getRubyCharSpace(), + var_f22); } } } - do_strcat((char*)local_d4, true, true, false); + + do_strcat(local_d4, true, true, false); } } /* 8022D74C-8022E12C 22808C 09E0+00 3/0 0/0 0/0 .text * do_tag__28jmessage_tRenderingProcessorFUlPCvUl */ -bool jmessage_tRenderingProcessor::do_tag(u32 param_1, void const* param_2, u32 param_3) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - switch(param_1 & 0xff0000) { - case 0x10000: - case 0x20000: +bool jmessage_tRenderingProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_size) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + + switch(i_tag & 0xFF0000) { + case MSGTAG_GROUP(1): + case MSGTAG_GROUP(2): return 1; - case 0xff0000: - switch (param_1) { - case 0xff0000: - do_color(*(u8*)param_2 & 0xff); + case MSGTAG_GROUP(255): + switch (i_tag) { + case MSGTAG_COLOR: + do_color(*(u8*)i_data & 0xFF); return 1; - case 0xff0001: - field_0x13c = *(u16*)param_2 & 0xffff; + case MSGTAG_SCALE: + field_0x13c = *(u16*)i_data & 0xFFFF; do_scale(field_0x13c / 100.0f); return 1; - case 0xff0002: - case 0xffff02: - do_rubyset(param_2, param_3); + case MSGTAG_RUBY: + case 0xFFFF02: + do_rubyset(i_data, i_size); return 1; } - case 0: - switch (param_1) { - case 0: - case 0x22: + case MSGTAG_GROUP(0): + switch (i_tag) { + case MSGTAG_PLAYER_NAME: + case MSGTAG_HORSE_NAME: push_word(); return 1; - case 0x35: + case MSGTAG_UNK_53: stack_pushCurrent(dMsgObject_getWord()); field_0x151 = dMsgObject_getSelectWordFlag(); return 1; - case 0x29: - stack_pushCurrent(pRef->getObjectPtr()->getSmellName()); + case MSGTAG_SCENT_NAME: + stack_pushCurrent(pReference->getObjectPtr()->getSmellName()); return 1; - case 0x2b: - stack_pushCurrent(pRef->getObjectPtr()->getPortalName()); + case MSGTAG_PORTAL_NAME: + stack_pushCurrent(pReference->getObjectPtr()->getPortalName()); return 1; - case 0x2d: - stack_pushCurrent(pRef->getObjectPtr()->getBombName()); + case MSGTAG_BOMB_NAME: + stack_pushCurrent(pReference->getObjectPtr()->getBombName()); return 1; - case 0x3b: - stack_pushCurrent(pRef->getObjectPtr()->getInsectName()); + case MSGTAG_INSECT_NAME: + stack_pushCurrent(pReference->getObjectPtr()->getInsectName()); return 1; - case 0x3c: - stack_pushCurrent(pRef->getObjectPtr()->getLetterName()); + case MSGTAG_LETTER_NAME: + stack_pushCurrent(pReference->getObjectPtr()->getLetterName()); return 1; - case 0x3d: - do_linedown(*(u16*)param_2); + case MSGTAG_LINE_DOWN: + do_linedown(*(u16*)i_data); return 1; - case 0x3e: - case 0x3f: + case MSGTAG_CURRENT_LETTER_PAGE: + case MSGTAG_MAX_LETTER_PAGE: push_word(); return 1; - case 8: + case MSGTAG_SELECT_2WAY: if (field_0x14e == 0) { field_0x14e = 1; } - case 9: + case MSGTAG_SELECT_3WAY: field_0x14e++; field_0x11c = 0; field_0x48 = mSelTextInitPosX[field_0x14e - 1]; do_selwidthcenter(field_0x14e - 1); return 1; - case 0x1e: - case 0x1f: + case MSGTAG_INLINE_2_NEXT: + case MSGTAG_INLINE_2_FIRST: do_arrow2(); return 1; - case 0x33: - case 0x34: + case MSGTAG_INLINE_3_NEXT: + case MSGTAG_INLINE_3_FIRST: do_arrow2(); return 1; - case 0x20: - do_character(10); - stack_pushCurrent(pRef->getSelMsgPtr()); + case MSGTAG_AWAIT_CHOICE: + do_character('\n'); + stack_pushCurrent(pReference->getSelMsgPtr()); return 1; - case 0x21: + case MSGTAG_UNK_33: do_name1(); return 1; - case 10: + case MSGTAG_ABTN: do_outfont(0, 0); return 1; - case 0xb: + case MSGTAG_BBTN: do_outfont(1, 0); return 1; - case 0xc: + case MSGTAG_CSTICK: do_outfont(2, 0); return 1; - case 0xd: + case MSGTAG_LBTN: do_outfont(3, 0); return 1; - case 0xe: + case MSGTAG_RBTN: do_outfont(4, 0); return 1; - case 0xf: + case MSGTAG_XBTN: do_outfont(5, 0); return 1; - case 0x10: + case MSGTAG_YBTN: do_outfont(6, 0); return 1; - case 0x11: + case MSGTAG_ZBTN: do_outfont(7, 0); return 1; - case 0x12: + case MSGTAG_DPAD: do_outfont(8, 0); return 1; - case 0x13: + case MSGTAG_STICK_CROSS: do_outfont(9, 0); return 1; - case 0x14: + case MSGTAG_LEFT_ARROW: do_outfont(10, 0); return 1; - case 0x15: + case MSGTAG_RIGHT_ARROW: do_outfont(11, 0); return 1; - case 0x16: + case MSGTAG_UP_ARROW: do_outfont(12, 0); return 1; - case 0x17: + case MSGTAG_DOWN_ARROW: do_outfont(13, 0); return 1; - case 0x18: + case MSGTAG_STICK_UP: do_outfont(14, 0); return 1; - case 0x19: + case MSGTAG_STICK_DOWN: do_outfont(15, 0); return 1; - case 0x1a: + case MSGTAG_STICK_LEFT: do_outfont(16, 0); return 1; - case 0x1b: + case MSGTAG_STICK_RIGHT: do_outfont(17, 0); return 1; - case 0x1c: + case MSGTAG_STICK_VERTICAL: do_outfont(18, 0); return 1; - case 0x1d: + case MSGTAG_STICK_HORIZONTAL: do_outfont(19, 0); return 1; - case 0x23: + case MSGTAG_RED_TARGET: do_outfont(20, 0); return 1; - case 0x24: + case MSGTAG_YELLOW_TARGET: do_outfont(21, 0); return 1; - case 0x25: { + case MSGTAG_INPUT_VALUE: { do_outfont(30, 0); - dMsgObject_c* pMsgObject = pRef->mpObjectPtr; + dMsgObject_c* pMsgObject = pReference->mpObjectPtr; do_numset(pMsgObject->getInputValue()); return 1; } - case 0x26: + case MSGTAG_ACKNOWLEDGE: return 1; - case 0x27: + case MSGTAG_ABTN_STAR: do_outfont(23, 0); return 1; - case 0x2a: + case MSGTAG_WHITE_TARGET: do_outfont(24, 0); return 1; - case 0x2c: + case MSGTAG_WARP_ICON: do_outfont(25, 0); return 1; - case 0x2e: { - dMsgObject_c* pMsgObject = pRef->getObjectPtr(); + case MSGTAG_XYBTN: { + dMsgObject_c* pMsgObject = pReference->getObjectPtr(); if (pMsgObject->getItemEquipButton() == 0) { do_outfont(5, 0); } else { @@ -3214,180 +3057,180 @@ bool jmessage_tRenderingProcessor::do_tag(u32 param_1, void const* param_2, u32 } return 1; } - case 0x2f: - if (pRef->getObjectPtr()->getItemEquipButton() == 0) { + case MSGTAG_YXBTN: + if (pReference->getObjectPtr()->getItemEquipButton() == 0) { do_outfont(6, 0); } else { do_outfont(5, 0); } return 1; - case 0x30: + case MSGTAG_BOMB_BAG_ICON: do_outfont(41, 0); return 1; - case 0x39: + case MSGTAG_HEART: do_outfont(27, 0); return 1; - case 0x3a: + case MSGTAG_QUAVER: do_outfont(28, 0); return 1; - case 0x31: { - char acStack_50[40]; - u8 bombNum = pRef->getObjectPtr()->getSelectBombNum(); - dMsgUnit_setTag(7, bombNum, acStack_50); - strcpy(pRef->getWord(field_0x14f), acStack_50); + case MSGTAG_BOMB_NUM: { + char buffer[40]; + u8 bombNum = pReference->getObjectPtr()->getSelectBombNum(); + dMsgUnit_setTag(7, bombNum, buffer); + strcpy(pReference->getWord(field_0x14f), buffer); push_word(); return 1; } - case 0x32: { - char acStack_78[40]; - s16 bombPrice = pRef->getObjectPtr()->getSelectBombPrice(); - dMsgUnit_setTag(1, bombPrice, acStack_78); - strcpy(pRef->getWord(field_0x14f), acStack_78); + case MSGTAG_BOMB_PRICE: { + char buffer[40]; + s16 bombPrice = pReference->getObjectPtr()->getSelectBombPrice(); + dMsgUnit_setTag(1, bombPrice, buffer); + strcpy(pReference->getWord(field_0x14f), buffer); push_word(); return 1; } - case 0x37: - case 0x38: - push_word(); - return 1; + case MSGTAG_BOMB_MAX: + case MSGTAG_ARROW_MAX: + push_word(); + return 1; + case MSGTAG_INSTANT: + case MSGTAG_TYPE: + case MSGTAG_UNK_3: + case MSGTAG_AUTOBOX: + case MSGTAG_BOXATMOST: + case MSGTAG_UNK_6: + case MSGTAG_PAUSE: + case MSGTAG_DEMOBOX: + case MSGTAG_BOXATLEAST: + return 1; + } + case MSGTAG_GROUP(4): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_GLYPH_DOLLARSIGN: + case MSGTAG_GLYPH_BACKSLASH: + case MSGTAG_GLYPH_ATMARK: + case MSGTAG_GLYPH_SHARP: + case MSGTAG_GLYPH_FLAT: + case MSGTAG_GLYPH_SQRT: + case MSGTAG_GLYPH_PERCENT: + case MSGTAG_GLYPH_HECTARE: + case MSGTAG_GLYPH_ARE: + case MSGTAG_GLYPH_LITRE: + case MSGTAG_GLYPH_WATT: + case MSGTAG_GLYPH_CALORIE: + case MSGTAG_GLYPH_DOLLAR: + case MSGTAG_GLYPH_CENT: + push_word(); + return 1; + } + case MSGTAG_GROUP(5): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_TIME_INFO: case 1: case 2: - case 3: + case MSGTAG_INSECT_INFO: case 4: case 5: case 6: - case 7: - case 0x28: - case 0x36: - return 1; - } - case 0x40000: - switch (param_1 & 0xff00ffff) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: + case MSGTAG_RIVER_POINTS: + case MSGTAG_FISH_LENGTH: + case MSGTAG_FUNDRAISE_REMAIN: + case MSGTAG_NEW_LETTER_NUM: + case MSGTAG_POE_NUM: + case MSGTAG_BALLOON_SCORE: + case MSGTAG_FISH_COUNT: + case MSGTAG_ROLLGOAL_LV: push_word(); return 1; } - case 0x50000: - switch (param_1 & 0xff00ffff) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: + case MSGTAG_GROUP(6): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_PLAYER_GENITIV: + case MSGTAG_HORSE_GENITIV: + case MSGTAG_MALE_ICON: + case MSGTAG_FEMALE_ICON: + case MSGTAG_STAR_ICON: + case MSGTAG_REFMARK: + case MSGTAG_THIN_LEFT_ARROW: + case MSGTAG_THIN_RIGHT_ARROW: + case MSGTAG_THIN_UP_ARROW: + case MSGTAG_THIN_DOWN_ARROW: push_word(); return 1; - } - case 0x60000: - switch (param_1 & 0xff00ffff) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - push_word(); + case MSGTAG_BULLET: + do_outfont(42, 0); return 1; - case 10: - do_outfont('*', 0); - return 1; - case 11: - do_outfont('+', 0); + case MSGTAG_BULLET_SPACE: + do_outfont(43, 0); return 1; } - case 0x30000: - switch (param_1 & 0xff00ffff) { - case 1: + case MSGTAG_GROUP(3): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_WII_ABTN: do_outfont(0, 0); return 1; - case 2: - do_outfont('3', 0); + case MSGTAG_WII_BBTN: + do_outfont(51, 0); return 1; - case 3: - do_outfont('4', 0); + case MSGTAG_WII_HOMEBTN: + do_outfont(52, 0); return 1; - case 4: - do_outfont('5', 0); + case MSGTAG_WII_MINUSBTN: + do_outfont(53, 0); return 1; - case 5: - do_outfont('6', 0); + case MSGTAG_WII_PLUSBTN: + do_outfont(54, 0); return 1; - case 6: - do_outfont('?', 0); + case MSGTAG_WII_1BTN: + do_outfont(63, 0); return 1; - case 7: - do_outfont('@', 0); + case MSGTAG_WII_2BTN: + do_outfont(64, 0); return 1; - case 8: - do_outfont('2', 0); + case MSGTAG_WII_DPAD_ITEM: + do_outfont(50, 0); return 1; - case 9: - do_outfont('1', 0); + case MSGTAG_WII_DPAD_UP: + do_outfont(49, 0); return 1; - case 10: - do_outfont('A', 0); + case MSGTAG_WII_DPAD_DOWN: + do_outfont(65, 0); return 1; - case 0xb: - do_outfont('B', 0); + case MSGTAG_WII_DPAD_HORIZONTAL: + do_outfont(66, 0); return 1; - case 0xc: - do_outfont('C', 0); + case MSGTAG_WII_DPAD_RIGHT: + do_outfont(67, 0); return 1; - case 0xd: - do_outfont('D', 0); + case MSGTAG_WII_DPAD_LEFT: + do_outfont(68, 0); return 1; - case 0xe: + case MSGTAG_WII_WIIMOTE: if (dComIfGs_getOptPointer() == 0) { do_outfont(9, 0); } else { - do_outfont(',', 0); + do_outfont(44, 0); } return 1; - case 0xf: - do_outfont('E', 0); + case MSGTAG_WII_RETICULE: + do_outfont(69, 0); return 1; - case 0x10: - do_outfont('-', 0); + case MSGTAG_WII_NUNCHUK: + do_outfont(45, 0); return 1; - case 0x11: - do_outfont(',', 0); + case MSGTAG_WII_WIIMOTE2: + do_outfont(44, 0); return 1; - case 0x12: - do_outfont('>', 0); + case MSGTAG_WII_FAIRY: + do_outfont(62, 0); return 1; - case 0x13: + case MSGTAG_WII_CBTN: do_outfont(2, 0); return 1; - case 0x14: + case MSGTAG_WII_ZBTN: do_outfont(7, 0); return 1; - case 0: + case MSGTAG_WII_MSGID_OVERRIDE: return 1; default: break; @@ -3414,150 +3257,147 @@ void jmessage_tRenderingProcessor::resetRendering() { * do_widthcenter__28jmessage_tRenderingProcessorFv */ void jmessage_tRenderingProcessor::do_widthcenter() { field_0x187 = 0; - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - s16 sVar3 = field_0x142 + pRef->getStartLineCount(); - if (pRef->getLineArrange(sVar3) == 1 || pRef->getLineArrange(sVar3) == 2) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + + s16 sVar3 = field_0x142 + pReference->getStartLineCount(); + if (pReference->getLineArrange(sVar3) == 1 || pReference->getLineArrange(sVar3) == 2) { return; } - f32 fVar6 = 0.5f + - (pRef->getTBoxWidth() - getLineLength(field_0x142)) / 2; + f32 fVar6 = 0.5f + (pReference->getTBoxWidth() - getLineLength(field_0x142)) / 2; if (fVar6 >= 1.0f) { - char acStack_48[16]; - snprintf(acStack_48, 0xf, "\x1B" "CR[%d]", (int)fVar6); - do_strcat(acStack_48, false, true, true); - field_0x48 += + fVar6; + char buffer[16]; + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)fVar6); + do_strcat(buffer, false, true, true); + field_0x48 += fVar6; } } /* 8022E260-8022E318 228BA0 00B8+00 1/1 0/0 0/0 .text * do_selwidthcenter__28jmessage_tRenderingProcessorFi */ void jmessage_tRenderingProcessor::do_selwidthcenter(int param_1) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - f32 fVar5 = 0.5f + (pRef->getSelTBoxWidth() - pRef->getSelLength(param_1)) / 2; + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + + f32 fVar5 = 0.5f + (pReference->getSelTBoxWidth() - pReference->getSelLength(param_1)) / 2; if (fVar5 >= 1.0f) { - char acStack_44[16]; - snprintf(acStack_44, 0xf, "\x1B" "CR[%d]", (int)fVar5); - do_strcat(acStack_44, false, true, false); - field_0x48 += + fVar5; + char buffer[16]; + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)fVar5); + do_strcat(buffer, false, true, false); + field_0x48 += fVar5; } } /* 8022E318-8022E7CC 228C58 04B4+00 3/2 0/0 0/0 .text * do_heightcenter__28jmessage_tRenderingProcessorFv */ void jmessage_tRenderingProcessor::do_heightcenter() { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); field_0x138 = 0.0f; - f32 dVar13; + + f32 var_f31; if (field_0x142 == 0) { - f32 lineSpace = pRef->getLineSpace(); - f32 fontSizeY = pRef->getFontSizeY(); - f32 tboxHeight = pRef->getTBoxHeight(); - f32 dVar15 = pRef->getLineMax() - 1; - dVar15 = lineSpace * dVar15; - dVar15 = fontSizeY + dVar15; - dVar13 = (tboxHeight - dVar15) / 2; + var_f31 = (pReference->getTBoxHeight() - (pReference->getFontSizeY() + (pReference->getLineSpace() * (pReference->getLineMax() - 1)))) / 2; } else { - dVar13 = 0.0f; + var_f31 = 0.0f; } - switch (pRef->getNowPageType()) { + + switch (pReference->getNowPageType()) { case 0: if (field_0x142 == 0) { - int nowPageLine = pRef->getNowPageLine(); - if (pRef->getLineMax() != (s16)nowPageLine) { - f32 lineSpace = pRef->getLineSpace(); - f32 dVar14 = 0.5f * (pRef->getLineMax() - nowPageLine); - dVar13 += lineSpace * dVar14; + int nowPageLine = pReference->getNowPageLine(); + if (pReference->getLineMax() != (s16)nowPageLine) { + var_f31 += pReference->getLineSpace() * (0.5f * (pReference->getLineMax() - (s16)nowPageLine)); } } break; case 1: { if (field_0x142 == 0) { - int nowPageLine = pRef->getNowPageLine(); + int nowPageLine = pReference->getNowPageLine(); if (nowPageLine == 1) { - f32 lineSpace = pRef->getLineSpace(); - f32 dVar14 = 0.5f * (pRef->getLineMax() - nowPageLine); - field_0x138 = (lineSpace * dVar14); - dVar13 += field_0x138; + field_0x138 = pReference->getLineSpace() * (0.5f * (pReference->getLineMax() - (s16)nowPageLine)); + var_f31 += field_0x138; } } break; } case 2: if (field_0x142 == 0) { - field_0x138 = pRef->getLineSpace(); - dVar13 += field_0x138; + field_0x138 = pReference->getLineSpace(); + var_f31 += field_0x138; } else { - field_0x138 = 0.5f * pRef->getLineSpace(); - dVar13 += field_0x138; + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; } break; - case 3: - pRef->getNowPageLine(); - field_0x138 = 0.5f * pRef->getLineSpace(); - dVar13 += field_0x138; + case 3: { + int nowPageLine = pReference->getNowPageLine(); + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; break; + } case 4: { if (field_0x142 == 0) { - int nowPageLine = pRef->getNowPageLine(); - f32 lineSpace = pRef->getLineSpace(); - f32 dVar14 = 0.5f * (pRef->getLineMax() - nowPageLine); - field_0x138 = lineSpace * dVar14; - dVar13 += field_0x138; + int nowPageLine = pReference->getNowPageLine(); + field_0x138 = pReference->getLineSpace() * (0.5f * (pReference->getLineMax() - (s16)nowPageLine)); + var_f31 += field_0x138; } if (field_0x142 == 1) { - field_0x138 = 0.5f * pRef->getLineSpace(); - dVar13 += field_0x138; + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; } - f32 dVar14 = (pRef->getLineScale(field_0x142) / 100.0f) * pRef->getFontSizeY(); - f32 dVar15 = ((pRef->getLineSpace() - dVar14) / 2); + f32 spC = pReference->getLineScale(field_0x142) / 100.0f; + f32 dVar15 = ((pReference->getLineSpace() - (spC * pReference->getFontSizeY())) / 2); field_0x138 += dVar15; - dVar13 += dVar15; + var_f31 += dVar15; break; } case 5: { if (field_0x142 >= 1) { - field_0x138 = 0.5f * pRef->getLineSpace(); - dVar13 += field_0x138; + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; } - f32 dVar14 = (pRef->getLineScale(field_0x142) / 100.0f) * pRef->getFontSizeY(); - f32 dVar15 = (pRef->getLineSpace() - dVar14) / 2; + + f32 sp8 = pReference->getLineScale(field_0x142) / 100.0f; + f32 dVar15 = (pReference->getLineSpace() - (sp8 * pReference->getFontSizeY())) / 2; field_0x138 += dVar15; - dVar13 += dVar15; + var_f31 += dVar15; break; } case 6: if (field_0x142 <= 1) { - field_0x138 = 0.5f * pRef->getLineSpace(); - dVar13 += field_0x138; + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; } break; case 7: if (field_0x142 == 1 || field_0x142 == 2) { - field_0x138 = 0.5f * pRef->getLineSpace(); - dVar13 += field_0x138; + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; } break; case 8: if (field_0x142 == 2) { - field_0x138 = 0.5f * pRef->getLineSpace(); - dVar13 += field_0x138; + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; } } + if (field_0x142 == 0) { field_0x138 = 0.0f; } - if (0.0f != dVar13) { - field_0x4c += dVar13; - char acStack_80[16]; - snprintf(acStack_80, 0xf, "\x1B" "CD[%d]", (int)dVar13); - do_strcat(acStack_80, false, true, true); + + if (0.0f != var_f31) { + field_0x4c += var_f31; + + char buffer[16]; + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CD[%d]", (int)var_f31); + do_strcat(buffer, false, true, true); + if (field_0x14e != 0) { - do_rubystrcat(acStack_80, pRef->getSelRubyPtr(field_0x14e - 1), pRef->getSelRubyCharSpace(), 0.0f); + do_rubystrcat(buffer, pReference->getSelRubyPtr(field_0x14e - 1), pReference->getSelRubyCharSpace(), 0.0f); } else { - do_rubystrcat(acStack_80, pRef->getRubyPtr(), pRef->getRubyCharSpace(), 0.0f); + do_rubystrcat(buffer, pReference->getRubyPtr(), pReference->getRubyCharSpace(), 0.0f); } } } @@ -3584,29 +3424,31 @@ void jmessage_tRenderingProcessor::do_color(u8 i_colorNo) { /* 8022E860-8022E960 2291A0 0100+00 2/2 0/0 0/0 .text do_scale__28jmessage_tRenderingProcessorFf */ void jmessage_tRenderingProcessor::do_scale(f32 param_1) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - f32 dVar10 = (param_1 * pRef->getDistanceScale()); - int iVar1 = 0.5f + (dVar10 * pRef->getFontSizeX()); - int iVar2 = 0.5f + (dVar10 * pRef->getFontSizeY()); - int uVar6 = pRef->getNowPageType() - 4 == 0; - int sVar7 = iVar2; + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + + f32 dVar10 = (param_1 * pReference->getDistanceScale()); + int scale_x = 0.5f + (dVar10 * pReference->getFontSizeX()); + int iVar2 = 0.5f + (dVar10 * pReference->getFontSizeY()); + int uVar6 = pReference->getNowPageType() - 4 == 0; + int scale_y = iVar2; + if (field_0x44 != dVar10) { - int iVar2 = - 0.5f + (field_0x44 * pRef->getFontSizeY()); - s16 sVar5 = ((s16)sVar7 - (s16)iVar2) / 2; + int iVar2 = 0.5f + (field_0x44 * pReference->getFontSizeY()); + s16 sVar5 = ((s16)scale_y - (s16)iVar2) / 2; field_0x44 = dVar10; field_0x140 += sVar5; do_transY(sVar5, true); field_0x13e = sVar5; } - char acStack_70[32]; - sprintf(acStack_70, + + char buffer[32]; + sprintf(buffer, "\x1B" "FX[%d]" "\x1B" "FY[%d]", - (s16)iVar1, (s16)sVar7); - do_strcat(acStack_70, false, true, false); + (s16)scale_x, (s16)scale_y); + do_strcat(buffer, false, true, false); } /* 8022E960-8022E9C0 2292A0 0060+00 1/1 0/0 0/0 .text @@ -3620,144 +3462,158 @@ void jmessage_tRenderingProcessor::do_linedown(s16 param_0) { /* 8022E9C0-8022EAE4 229300 0124+00 1/1 0/0 0/0 .text do_transY__28jmessage_tRenderingProcessorFsb */ -void jmessage_tRenderingProcessor::do_transY(s16 param_1, bool param_2) { - if (param_1 != 0) { - char acStack_38[16]; - char acStack_48[16]; - if (param_1 < 0) { - sprintf(acStack_38, "\x1B" "CU[%d]", -param_1); - sprintf(acStack_48, "\x1B" "CD[%d]", -param_1); +void jmessage_tRenderingProcessor::do_transY(s16 i_transY, bool unused) { + if (i_transY != 0) { + char buffer0[16]; + char buffer1[16]; + + if (i_transY < 0) { + sprintf(buffer0, "\x1B" "CU[%d]", -i_transY); + sprintf(buffer1, "\x1B" "CD[%d]", -i_transY); } else { - sprintf(acStack_38, "\x1B" "CD[%d]", param_1); - sprintf(acStack_48, "\x1B" "CU[%d]", param_1); + sprintf(buffer0, "\x1B" "CD[%d]", i_transY); + sprintf(buffer1, "\x1B" "CU[%d]", i_transY); } - field_0x4c -= param_1; - do_strcat(acStack_38, false, true, true); - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - do_rubystrcat(acStack_48, pRef->getRubyPtr(), pRef->getRubyCharSpace(), 0.0f); + + field_0x4c -= i_transY; + + do_strcat(buffer0, false, true, true); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + do_rubystrcat(buffer1, pReference->getRubyPtr(), pReference->getRubyCharSpace(), 0.0f); } } /* 8022EAE4-8022ED10 229424 022C+00 2/2 0/0 0/0 .text * do_outfont__28jmessage_tRenderingProcessorFUcUl */ -void jmessage_tRenderingProcessor::do_outfont(u8 param_1, u32 param_2) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - JUTFont* font = pRef->getFont(); - s32 cellWidth = font->getCellWidth(); - s32 width = font->getWidth(); - int r28 = 1; - f32 dVar14 = (24.0f * field_0x44 * mTextInitScaleX); - f32 dVar13 = (24.0f * field_0x44 * mTextInitScaleY); - f32 dVar12 = (mTextInitPosX + mTextInitScaleX * (field_0x48 - mTextInitPosX)); - f32 dVar11 = (mTextInitPosY + mTextInitScaleY * (field_0x4c - mTextInitPosY)); +void jmessage_tRenderingProcessor::do_outfont(u8 i_iconNo, u32 i_color) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + JUTFont* pFont = pReference->getFont(); // fakematch + f32 cellWidth = pFont->getCellWidth(); + f32 width = pFont->getWidth() / cellWidth; + + int var_r28 = 1; + f32 sizeX = (24.0f * field_0x44 * mTextInitScaleX); + f32 sizeY = (24.0f * field_0x44 * mTextInitScaleY); + f32 posX = (mTextInitPosX + mTextInitScaleX * (field_0x48 - mTextInitPosX)); + f32 posY = (mTextInitPosY + mTextInitScaleY * (field_0x4c - mTextInitPosY)); + u32 color; - if (param_2 == 0) { + if (i_color == 0) { color = mCCColor; } else { - color = param_2; + color = i_color; } - if (param_1 == 30) { - mpOutFont->setRupeeColor(pRef->getOutFontRupeeColor()); + + if (i_iconNo == 30) { + mpOutFont->setRupeeColor(pReference->getOutFontRupeeColor()); } - mpOutFont->drawFont(NULL, param_1, dVar12 - field_0x7c[field_0x142], dVar11, dVar14, dVar13, - color, 0xff); - pRef->addDrawLightCount(); + + mpOutFont->drawFont(NULL, i_iconNo, posX - field_0x7c[field_0x142], posY, sizeX, sizeY, color, 0xFF); + pReference->addDrawLightCount(); + if (mCharInfoPtr != NULL) { - getCharInfo(0.5f + (dVar12 + (0.5f * dVar14)), field_0x138 + (dVar11 + (0.5f * dVar13)), + getCharInfo(0.5f + (posX + (0.5f * sizeX)), field_0x138 + (posY + (0.5f * sizeY)), field_0x44, field_0x44, 1.0f); } - f32 fVar7 = 0.5f + ((field_0x44 * (dVar14 * r28)) + pRef->getCharSpace()); - field_0x48 += (int)fVar7; - char acStack_b8[16]; - snprintf(acStack_b8, sizeof(acStack_b8) - 1, "\x1B" "CR[%d]", (int)fVar7); - do_strcat(acStack_b8, false, true, false); + + f32 spacing = 0.5f + ((field_0x44 * (sizeX * var_r28)) + pReference->getCharSpace()); + field_0x48 += (int)spacing; + + char buffer[16]; + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)spacing); + do_strcat(buffer, false, true, false); } /* 8022ED10-8022EECC 229650 01BC+00 1/1 0/0 0/0 .text do_arrow2__28jmessage_tRenderingProcessorFv */ void jmessage_tRenderingProcessor::do_arrow2() { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - JUTFont* font = pRef->getFont(); - f32 cellWidth = font->getCellWidth(); - f32 width = font->getWidth(); - f32 dVar11 = width / cellWidth; - if (field_0x14d == pRef->getSelectPos()) { - mpOutFont->drawFont(NULL, 0x1d, - (mTextInitPosX + mTextInitScaleX * (field_0x48 - mTextInitPosX)) - - field_0x7c[field_0x142], - field_0x4c, (dVar11 * (field_0x44 * pRef->getFontSizeX())), - dVar11 * (field_0x44 * pRef->getFontSizeY()), mCCColor, 0xff); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + JUTFont* pFont = pReference->getFont(); // fakematch + f32 cellWidth = pFont->getCellWidth(); + f32 dVar11 = pFont->getWidth() / cellWidth; + + if (field_0x14d == pReference->getSelectPos()) { + mpOutFont->drawFont(NULL, 29, + (mTextInitPosX + mTextInitScaleX * (field_0x48 - mTextInitPosX)) - field_0x7c[field_0x142], + field_0x4c, (dVar11 * (field_0x44 * pReference->getFontSizeX())), + dVar11 * (field_0x44 * pReference->getFontSizeY()), mCCColor, 0xFF); } - f32 dVar13 = 0.5f + ((field_0x44 * pRef->getFontSizeX()) + pRef->getCharSpace()); - field_0x48 += (int)dVar13; - char acStack_58[16]; - snprintf(acStack_58, sizeof(acStack_58) - 1, "\x1B" "CR[%d]", (int)dVar13); - do_strcat(acStack_58, false, true, false); + + f32 spacing = 0.5f + ((field_0x44 * pReference->getFontSizeX()) + pReference->getCharSpace()); + field_0x48 += (int)spacing; + + char buffer[16]; + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)spacing); + do_strcat(buffer, false, true, false); field_0x14d++; } /* 8022EECC-8022EF00 22980C 0034+00 1/1 0/0 0/0 .text * getLineLength__28jmessage_tRenderingProcessorFi */ -f32 jmessage_tRenderingProcessor::getLineLength(int lineNo) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - s16 lineCount = pRef->getStartLineCount(); - return pRef->getStrLength(lineNo + lineCount) * pRef->getFontSizeX() + - pRef->getSpaceLength(lineNo + lineCount) * pRef->getCharSpace(); +f32 jmessage_tRenderingProcessor::getLineLength(int i_lineNo) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + + int lineNo = i_lineNo + (s16)pReference->getStartLineCount(); + f32 var_f31 = pReference->getStrLength(lineNo) * pReference->getFontSizeX(); + f32 var_f30 = pReference->getSpaceLength(lineNo) * pReference->getCharSpace(); + return var_f31 + var_f30; } /* 8022EF00-8022F148 229840 0248+00 10/10 0/0 0/0 .text * do_strcat__28jmessage_tRenderingProcessorFPcbbb */ -void jmessage_tRenderingProcessor::do_strcat(char* param_1, bool param_2, bool param_3, - bool param_4) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - if (pRef->isCharSend() || !param_2) { - field_0x11c += strlen(param_1); +void jmessage_tRenderingProcessor::do_strcat(char* i_str, bool param_2, bool param_3, bool param_4) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + + if (pReference->isCharSend() || !param_2) { + field_0x11c += strlen(i_str); if (field_0x14e != 0) { - if (field_0x11c < 0x32) { - strcat(pRef->getSelTextPtr(field_0x14e - 1), param_1); + if (field_0x11c < 50) { + strcat(pReference->getSelTextPtr(field_0x14e - 1), i_str); } else { JUT_WARN(5316, "%s", "TextBox Alloc Byte Over!!"); } } else if (field_0x11c < 0x200) { if (param_2) { field_0x146++; - if (pRef->getBatchColorFlag() != 0) { - pRef->setCharCnt(field_0x146); - } else if (field_0x146 > pRef->getCharCnt() || - (field_0x146 == pRef->getCharCnt() && pRef->getCharAlpha() < 255.0f)) + if (pReference->getBatchColorFlag() != 0) { + pReference->setCharCnt(field_0x146); + } else if (field_0x146 > pReference->getCharCnt() || (field_0x146 == pReference->getCharCnt() && pReference->getCharAlpha() < 255.0f)) { - if (field_0x146 > pRef->getCharCnt()) { - pRef->setCharAlpha(0.0f); - pRef->setCharCnt(field_0x146); + if (field_0x146 > pReference->getCharCnt()) { + pReference->setCharAlpha(0.0f); + pReference->setCharCnt(field_0x146); } - if (pRef->getCharAlpha() < 255.0f) { - pRef->addCharAlpha(); + + if (pReference->getCharAlpha() < 255.0f) { + pReference->addCharAlpha(); if (field_0x148 != 0) { - char* pcVar4 = pRef->getTextPtr(); - pcVar4[field_0x148] = 0; - strcat(pcVar4, field_0x184); + char* textPtr = pReference->getTextPtr(); + textPtr[field_0x148] = 0; + strcat(textPtr, field_0x184); } if (field_0x14a != 0) { - char* pcVar4 = pRef->getTextSPtr(); - pcVar4[field_0x14a] = 0; - strcat(pcVar4, field_0x184); + char* textPtr = pReference->getTextSPtr(); + textPtr[field_0x14a] = 0; + strcat(textPtr, field_0x184); } - int dVar8 = pRef->getCharAlpha(); - u32 uVar1 = mCCColor; - int dVar9 = pRef->getCharAlpha(); - char acStack_58[36]; - sprintf( - acStack_58, "\x1b" "CC[%08x]" "\x1b" "GC[%08x]", - (uVar1 & 0xffffff00) | (dVar8 & 0xff), - (mGCColor & 0xffffff00) | (dVar9 & 0xff)); - if (field_0x11c + (int)strlen(acStack_58) < 0x200) { - field_0x148 = strlen(pRef->getTextPtr()); - field_0x14a = strlen(pRef->getTextSPtr()); - strcpy(field_0x184, param_1); - strcat(pRef->getTextPtr(), acStack_58); - strcat(pRef->getTextSPtr(), acStack_58); + + u32 charColor = (mCCColor & 0xFFFFFF00) | ((int)pReference->getCharAlpha() & 0xFF); + u32 gradColor = (mGCColor & 0xFFFFFF00) | ((int)pReference->getCharAlpha() & 0xFF); + char buffer[36]; + sprintf(buffer, "\x1b" "CC[%08x]" "\x1b" "GC[%08x]", charColor, gradColor); + + int length = 0; + length = strlen(buffer); + + if (field_0x11c + length < 0x200) { + field_0x148 = strlen(pReference->getTextPtr()); + field_0x14a = strlen(pReference->getTextSPtr()); + + strcpy(field_0x184, i_str); + strcat(pReference->getTextPtr(), buffer); + strcat(pReference->getTextSPtr(), buffer); } else { JUT_WARN(5362, "%s", "TextBox Alloc Byte Over!!"); } @@ -3768,9 +3624,9 @@ void jmessage_tRenderingProcessor::do_strcat(char* param_1, bool param_2, bool p field_0x14a = 0; } - strcat(pRef->getTextPtr(), param_1); + strcat(pReference->getTextPtr(), i_str); if (param_3) { - strcat(pRef->getTextSPtr(), param_1); + strcat(pReference->getTextSPtr(), i_str); } } else { JUT_WARN(5380, "%s", "TextBox Alloc Byte Over!!"); @@ -3780,138 +3636,148 @@ void jmessage_tRenderingProcessor::do_strcat(char* param_1, bool param_2, bool p /* 8022F148-8022F384 229A88 023C+00 1/1 0/0 0/0 .text * do_rubyset__28jmessage_tRenderingProcessorFPCvUl */ -// NONMATCHING - buffer initialization -void jmessage_tRenderingProcessor::do_rubyset(void const* param_0, u32 param_1) { - jmessage_tReference* pRef = (jmessage_tReference*) getReference(); - JUTFont* pFont = pRef->getFont(); - u8 mRubyCnt = param_1 - 1; - u8* r28 = (u8*)param_0; - int iVar7 = 0; +void jmessage_tRenderingProcessor::do_rubyset(void const* i_data, u32 i_size) { + jmessage_tReference* pReference = (jmessage_tReference*) getReference(); + JUTFont* pFont = pReference->getFont(); + + u8 mRubyCnt = i_size - 1; + u8* pRuby = (u8*)i_data; + int index = 0; + JUT_ASSERT(5405, mRubyCnt < (50)); - field_0x14c = *(u8*)param_0 & 0xff; - r28++; + field_0x14c = *(u8*)i_data & 0xFF; + pRuby++; + field_0x152[0] = 0; field_0x128 = 0.0f; - for (; iVar7 < mRubyCnt; ) { + + while (index < mRubyCnt) { u8 buffer[3]; - buffer[0] = r28[iVar7++]; - buffer[1] = r28[iVar7++]; + buffer[0] = pRuby[index++]; + buffer[1] = pRuby[index++]; buffer[2] = 0; strcat(field_0x152, (const char*)buffer); - int uVar6 = ((char)buffer[0] & 0xffU) << 8 | (char)buffer[1] & 0xffU; + + int character = (((char)buffer[0] & 0xFF) << 8) | ((char)buffer[1] & 0xFF); if (field_0x14e != 0) { field_0x128 += - (pRef->getSelRubyCharSpace() + - pFont->getWidth(uVar6) * (pRef->getSelRubySize() / pFont->getCellWidth())); + (pReference->getSelRubyCharSpace() + + pFont->getWidth(character) * (pReference->getSelRubySize() / pFont->getCellWidth())); } else { - field_0x128 += (pRef->getRubyCharSpace() + - pFont->getWidth(uVar6) * (pRef->getRubySize() / pFont->getCellWidth())); + field_0x128 += (pReference->getRubyCharSpace() + + pFont->getWidth(character) * (pReference->getRubySize() / pFont->getCellWidth())); } } + if (field_0x14e != 0) { - field_0x128 -= pRef->getSelRubyCharSpace(); + field_0x128 -= pReference->getSelRubyCharSpace(); field_0x130 = field_0x48 - mSelTextInitPosX[field_0x14e - 1]; } else { - field_0x128 -= pRef->getRubyCharSpace(); + field_0x128 -= pReference->getRubyCharSpace(); field_0x130 = field_0x48 - mTextInitPosX; } } -/* ############################################################################################## */ -/* 80399610-80399610 025C70 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399652 = "" - "\x1B" - "CL[%d]"; -#pragma pop - /* 8022F384-8022F53C 229CC4 01B8+00 3/3 0/0 0/0 .text * do_rubystrcat__28jmessage_tRenderingProcessorFPcPcff */ -void jmessage_tRenderingProcessor::do_rubystrcat(char* param_1, char* param_2, f32 param_3, - f32 param_4) { - jmessage_tReference* pRef = (jmessage_tReference*) getReference(); - if (pRef->isCharSend()) { +void jmessage_tRenderingProcessor::do_rubystrcat(char* i_src, char* i_dst, f32 i_charSpace, f32 param_4) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + if (pReference->isCharSend()) { if (0.0f != param_4) { field_0x134 = param_4; - f32 fVar5 = (0.5f * (field_0x130 + field_0x134) - 0.5f * field_0x128) - field_0x12c; - if (fVar5 >= 1.0f) { + f32 cursor_trans = (0.5f * (field_0x130 + field_0x134) - 0.5f * field_0x128) - field_0x12c; + if (cursor_trans >= 1.0f) { char buffer[16]; - snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)fVar5); - strcat(param_2, buffer); - field_0x12c += (int)fVar5; - } else if (fVar5 <= -1.0f) { + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)cursor_trans); + strcat(i_dst, buffer); + field_0x12c += (int)cursor_trans; + } else if (cursor_trans <= -1.0f) { char buffer[16]; - snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CL[%d]", (int)-fVar5); - strcat(param_2, buffer); - field_0x12c += (int)fVar5; + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CL[%d]", (int)-cursor_trans); + strcat(i_dst, buffer); + field_0x12c += (int)cursor_trans; } - field_0x12c += field_0x128 + param_3; + field_0x12c += field_0x128 + i_charSpace; } - strcat(param_2, param_1); + + strcat(i_dst, i_src); } } /* 8022F53C-8022F540 229E7C 0004+00 1/1 0/0 0/0 .text do_name1__28jmessage_tRenderingProcessorFv */ -void jmessage_tRenderingProcessor::do_name1() {} +void jmessage_tRenderingProcessor::do_name1() { + const char* name = dComIfGs_getPlayerName(); +} /* 8022F540-8022F734 229E80 01F4+00 1/1 0/0 0/0 .text do_numset__28jmessage_tRenderingProcessorFs */ -void jmessage_tRenderingProcessor::do_numset(s16 param_0) { - if (9999 < param_0) { - param_0 = 9999; +void jmessage_tRenderingProcessor::do_numset(s16 i_num) { + if (9999 < i_num) { + i_num = 9999; } - if (param_0 < 0) { - param_0 = 0; + + if (i_num < 0) { + i_num = 0; } - jmessage_tReference* pRef = (jmessage_tReference*) getReference(); - if (pRef->getInputFigure() == 3) { - do_outfont(getOutFontNumberType(param_0 / 1000), 0xff0000ff); + + u32 color = 0xFF0000FF; + jmessage_tReference* pReference = (jmessage_tReference*) getReference(); + if (pReference->getInputFigure() == 3) { + do_outfont(getOutFontNumberType(i_num / 1000), color); } else { - do_outfont(getOutFontNumberType(param_0 / 1000), 0); + do_outfont(getOutFontNumberType(i_num / 1000), 0); } - if (pRef->getInputFigure() == 2) { - do_outfont(getOutFontNumberType(param_0 % 1000 / 100), 0xff0000ff); + + if (pReference->getInputFigure() == 2) { + do_outfont(getOutFontNumberType(i_num % 1000 / 100), color); } else { - do_outfont(getOutFontNumberType(param_0 % 1000 / 100), 0); + do_outfont(getOutFontNumberType(i_num % 1000 / 100), 0); } - if (pRef->getInputFigure() == 1) { - do_outfont(getOutFontNumberType(param_0 % 100 / 10), 0xff0000ff); + + if (pReference->getInputFigure() == 1) { + do_outfont(getOutFontNumberType(i_num % 100 / 10), color); } else { - do_outfont(getOutFontNumberType(param_0 % 100 / 10), 0); + do_outfont(getOutFontNumberType(i_num % 100 / 10), 0); } - if (pRef->getInputFigure() == 0) { - do_outfont(getOutFontNumberType(param_0 % 10), 0xff0000ff); + + if (pReference->getInputFigure() == 0) { + do_outfont(getOutFontNumberType(i_num % 10), color); } else { - do_outfont(getOutFontNumberType(param_0 % 10), 0); + do_outfont(getOutFontNumberType(i_num % 10), 0); } } /* 8022F734-8022F784 22A074 0050+00 1/1 0/0 0/0 .text push_word__28jmessage_tRenderingProcessorFv */ void jmessage_tRenderingProcessor::push_word() { - jmessage_tReference* tRef = (jmessage_tReference*)getReference(); - stack_pushCurrent(tRef->getWord(field_0x14f)); + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + stack_pushCurrent(pReference->getWord(field_0x14f)); field_0x14f++; } /* 8022F784-8022F8C0 22A0C4 013C+00 2/2 0/0 0/0 .text * getCharInfo__28jmessage_tRenderingProcessorFfffff */ -void jmessage_tRenderingProcessor::getCharInfo(f32 param_1, f32 param_2, f32 param_3, - f32 param_4, f32 param_5) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - if ( pRef->isLightSend()) { - JUT_ASSERT(5608, *mpCharInfoCnt <= 0x95); +void jmessage_tRenderingProcessor::getCharInfo(f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + + if (pReference->isLightSend()) { + if (*mpCharInfoCnt >= 150) { + JUT_WARN(5608, "%s", "CharInfo stack over!!"); + JUT_ASSERT(5609, *mpCharInfoCnt < (150)); + } + mCharInfoPtr[*mpCharInfoCnt].field_0x00 = param_1; mCharInfoPtr[*mpCharInfoCnt].field_0x04 = param_2; mCharInfoPtr[*mpCharInfoCnt].field_0x08 = param_3; mCharInfoPtr[*mpCharInfoCnt].field_0x0c = param_4; mCharInfoPtr[*mpCharInfoCnt].field_0x10 = param_5; mCharInfoPtr[*mpCharInfoCnt].mColorNo = mColorNo; - if (!pRef->isBatchFlag() && mCharInfoPtr[*mpCharInfoCnt].field_0x19 == 0) { + + if (!pReference->isBatchFlag() && mCharInfoPtr[*mpCharInfoCnt].field_0x19 == 0) { mCharInfoPtr[*mpCharInfoCnt].field_0x19 = 1; } + (*mpCharInfoCnt)++; } } @@ -3921,10 +3787,12 @@ jmessage_string_tReference::jmessage_string_tReference() { mPanePtr = NULL; mRubyPanePtr = NULL; mpFont = mDoExt_getMesgFont(); + for (int i = 0; i < 12; i++) { mLineLength[i] = 0.0f; mOutfontLength[i] = 0.0f; } + resetCharactor(); } @@ -4020,11 +3888,12 @@ void jmessage_string_tReference::clearOutfontLength(int param_0) { * getLineCountNowPage__26jmessage_string_tReferenceFv */ s16 jmessage_string_tReference::getLineCountNowPage() { s16 rv = -1; - s32 iVar4 = getNowPage() * getLineMax(); - s32 uVar1 = iVar4 + getLineMax(); + s32 iVar4 = mNowPage * mLineMax; + s32 uVar1 = iVar4 + mLineMax; if (mLineCount >= iVar4 && mLineCount < uVar1) { rv = mLineCount - iVar4; } + return rv; } @@ -4034,15 +3903,16 @@ jmessage_string_tControl::jmessage_string_tControl() {} /* 8022FB98-8022FBE4 22A4D8 004C+00 1/1 0/0 0/0 .text * __ct__33jmessage_string_tMeasureProcessorFPC26jmessage_string_tReference */ -jmessage_string_tMeasureProcessor::jmessage_string_tMeasureProcessor( - jmessage_string_tReference const* param_0) : JMessage::TRenderingProcessor(param_0) { +jmessage_string_tMeasureProcessor::jmessage_string_tMeasureProcessor(jmessage_string_tReference const* pReference) : JMessage::TRenderingProcessor(pReference) { mpReference = (jmessage_string_tReference*)getReference(); mpReference->resetCharactor(); } /* 8022FBE4-8022FC14 22A524 0030+00 1/0 0/0 0/0 .text * do_begin__33jmessage_string_tMeasureProcessorFPCvPCc */ -void jmessage_string_tMeasureProcessor::do_begin(void const* param_0, char const* param_1) { +void jmessage_string_tMeasureProcessor::do_begin(void const* pEntry, char const* pszText) { + (void)pEntry; + (void)pszText; mpReference->setLineCount(0); mpReference->resetCharactor(); } @@ -4055,29 +3925,31 @@ void jmessage_string_tMeasureProcessor::do_end() { /* 8022FC28-8022FDF0 22A568 01C8+00 1/0 0/0 0/0 .text * do_character__33jmessage_string_tMeasureProcessorFi */ -void jmessage_string_tMeasureProcessor::do_character(int param_0) { +void jmessage_string_tMeasureProcessor::do_character(int iCharacter) { JUTFont* pFont = mpReference->getFont(); - if (JUTFont::isLeadByte_ShiftJIS(param_0)) { - if (!isOutfontKanjiCode(param_0)) { - mpReference->setCharactor(changeKataToHira(change1ByteTo2Bytes(param_0))); + if (JUTFont::isLeadByte_ShiftJIS(iCharacter)) { + if (!isOutfontKanjiCode(iCharacter)) { + u16 character2Bytes = change1ByteTo2Bytes(iCharacter); + mpReference->setCharactor(changeKataToHira(character2Bytes)); } - } else if (param_0 < 0x8800 && !isOutfontKanjiCode(param_0)) { - mpReference->setCharactor(changeKataToHira(param_0)); + } else if (iCharacter < 0x8800 && !isOutfontKanjiCode(iCharacter)) { + mpReference->setCharactor(changeKataToHira(iCharacter)); } - float charSpace; + + f32 charSpace; J2DTextBox::TFontSize fontSize; if (mpReference->getPanePtr() != NULL) { charSpace = mpReference->getPanePtr()->getCharSpace(); mpReference->getPanePtr()->getFontSize(fontSize); } else { charSpace = 0.0f; - fontSize.mSizeX = 20.0f; - fontSize.mSizeY = 20.0f; + fontSize.mSizeY = fontSize.mSizeX = 20.0f; } - if (param_0 == 10) { + + if (iCharacter == '\n') { mpReference->addLineCount(); } else { - f32 finalLength = charSpace + fontSize.mSizeX * ((f32)pFont->getWidth(param_0) / pFont->getCellWidth()); + f32 finalLength = charSpace + fontSize.mSizeX * ((f32)pFont->getWidth(iCharacter) / pFont->getCellWidth()); mpReference->addLineLength(mpReference->getLineCountNowPage(), finalLength); mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); } @@ -4085,348 +3957,355 @@ void jmessage_string_tMeasureProcessor::do_character(int param_0) { /* 8022FDF0-8023098C 22A730 0B9C+00 5/0 0/0 0/0 .text * do_tag__33jmessage_string_tMeasureProcessorFUlPCvUl */ -bool jmessage_string_tMeasureProcessor::do_tag(u32 param_1, void const* param_2, u32 param_3) { - f32 dVar13; - J2DTextBox::TFontSize local_130; +bool jmessage_string_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_size) { + f32 var_f30; + J2DTextBox::TFontSize fontsize; if (mpReference->getPanePtr() != NULL) { - dVar13 = ((J2DTextBox*)mpReference->getPanePtr())->getCharSpace(); - ((J2DTextBox*)mpReference->getPanePtr())->getFontSize(local_130); + var_f30 = ((J2DTextBox*)mpReference->getPanePtr())->getCharSpace(); + ((J2DTextBox*)mpReference->getPanePtr())->getFontSize(fontsize); } else { - dVar13 = 0.0f; - local_130.mSizeX = local_130.mSizeY = 20.0f; + var_f30 = 0.0f; + fontsize.mSizeX = fontsize.mSizeY = 20.0f; } - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - switch(param_1 & 0xff0000) { - case 0xff0000: - switch(param_1) { - case 0xff0002: - case 0xffff02: - do_rubyset(param_2, param_3); + + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + switch(i_tag & 0xFF0000) { + case MSGTAG_GROUP(255): + switch(i_tag) { + case MSGTAG_RUBY: + case 0xFFFF02: + do_rubyset(i_data, i_size); break; } break; - case 0: - switch (param_1) { - case 0: + case MSGTAG_GROUP(0): + switch (i_tag) { + case MSGTAG_PLAYER_NAME: stack_pushCurrent(dComIfGs_getPlayerName()); break; - case 0x22: + case MSGTAG_HORSE_NAME: stack_pushCurrent(dComIfGs_getHorseName()); break; - case 0x35: + case MSGTAG_UNK_53: stack_pushCurrent(dMsgObject_getWord()); break; - case 0x29: + case MSGTAG_SCENT_NAME: stack_pushCurrent(dMsgObject_getMsgObjectClass()->getSmellName()); break; - case 0x2b: + case MSGTAG_PORTAL_NAME: stack_pushCurrent(dMsgObject_getMsgObjectClass()->getPortalName()); break; - case 0x2d: + case MSGTAG_BOMB_NAME: stack_pushCurrent(dMsgObject_getMsgObjectClass()->getBombName()); break; - case 0x3b: + case MSGTAG_INSECT_NAME: stack_pushCurrent(dMsgObject_getMsgObjectClass()->getInsectName()); break; - case 0x3c: + case MSGTAG_LETTER_NAME: stack_pushCurrent(dMsgObject_getMsgObjectClass()->getLetterName()); break; - case 0x3e: { - char acStack_168[4]; - sprintf(acStack_168, "%d", dComIfGp_getMessageCountNumber() / 100); - stack_pushCurrent(acStack_168); + case MSGTAG_CURRENT_LETTER_PAGE: { + char buffer[4]; + sprintf(buffer, "%d", dComIfGp_getMessageCountNumber() / 100); + stack_pushCurrent(buffer); break; } - case 0x3f: { - char acStack_16c[4]; - sprintf(acStack_16c, "%d", dComIfGp_getMessageCountNumber() % 100); - stack_pushCurrent(acStack_16c); + case MSGTAG_MAX_LETTER_PAGE: { + char buffer[4]; + sprintf(buffer, "%d", dComIfGp_getMessageCountNumber() % 100); + stack_pushCurrent(buffer); break; } - case 10: - case 0xb: - case 0xc: - case 0xd: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1a: - case 0x1b: - case 0x1c: - case 0x1d: - case 0x23: - case 0x24: - case 0x27: - case 0x2a: - case 0x2c: - case 0x2e: - case 0x2f: - case 0x30: - case 0x39: - case 0x3a: { - mpReference->setCharactor(0xffff); - f32 dVar14 = local_130.mSizeX + dVar13; - mpReference->addLineLength(mpReference->getLineCountNowPage(), dVar14); - mpReference->setOutfontLength(mpReference->getLineCountNowPage(), dVar14); + case MSGTAG_ABTN: + case MSGTAG_BBTN: + case MSGTAG_CSTICK: + case MSGTAG_LBTN: + case MSGTAG_RBTN: + case MSGTAG_XBTN: + case MSGTAG_YBTN: + case MSGTAG_ZBTN: + case MSGTAG_DPAD: + case MSGTAG_STICK_CROSS: + case MSGTAG_LEFT_ARROW: + case MSGTAG_RIGHT_ARROW: + case MSGTAG_UP_ARROW: + case MSGTAG_DOWN_ARROW: + case MSGTAG_STICK_UP: + case MSGTAG_STICK_DOWN: + case MSGTAG_STICK_LEFT: + case MSGTAG_STICK_RIGHT: + case MSGTAG_STICK_VERTICAL: + case MSGTAG_STICK_HORIZONTAL: + case MSGTAG_RED_TARGET: + case MSGTAG_YELLOW_TARGET: + case MSGTAG_ABTN_STAR: + case MSGTAG_WHITE_TARGET: + case MSGTAG_WARP_ICON: + case MSGTAG_XYBTN: + case MSGTAG_YXBTN: + case MSGTAG_BOMB_BAG_ICON: + case MSGTAG_HEART: + case MSGTAG_QUAVER: { + mpReference->setCharactor(0xFFFF); + f32 length = fontsize.mSizeX + var_f30; + mpReference->addLineLength(mpReference->getLineCountNowPage(), length); + mpReference->setOutfontLength(mpReference->getLineCountNowPage(), length); break; } - case 0x25: + case MSGTAG_INPUT_VALUE: { int i = 0; - local_130.mSizeX += dVar13; + fontsize.mSizeX += var_f30; for (; i < 4; i++) { - mpReference->addLineLength(mpReference->getLineCountNowPage(), local_130.mSizeX); - mpReference->setOutfontLength(mpReference->getLineCountNowPage(), local_130.mSizeX); + mpReference->addLineLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); + mpReference->setOutfontLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); } break; - case 0x31: { - char bombNumStr[40]; + } + case MSGTAG_BOMB_NUM: { + char buffer[40]; u8 bombNum = dMsgObject_getMsgObjectClass()->getSelectBombNum(); - dMsgUnit_setTag(7, bombNum, bombNumStr); - stack_pushCurrent(bombNumStr); + dMsgUnit_setTag(7, bombNum, buffer); + stack_pushCurrent(buffer); mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); break; } - case 0x32: - char bombPriceStr[40]; + case MSGTAG_BOMB_PRICE: { + char buffer[40]; s16 bombPrice = dMsgObject_getMsgObjectClass()->getSelectBombPrice(); - dMsgUnit_setTag(1, bombPrice, bombPriceStr); - stack_pushCurrent(bombPriceStr); + dMsgUnit_setTag(1, bombPrice, buffer); + stack_pushCurrent(buffer); mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); break; - case 0x37: + } + case MSGTAG_BOMB_MAX: { u8 bombType = fpcNm_ITEM_NORMAL_BOMB; - if ((*(u8*)param_2 ) == 1) { + if ((*(u8*)i_data) == 1) { bombType = fpcNm_ITEM_WATER_BOMB; - } else if ((*(s8*)param_2 & 0xffU) == 2) { + } else if ((*(s8*)i_data & 0xFFU) == 2) { bombType = fpcNm_ITEM_POKE_BOMB; } - char bombMax[40]; - dMsgUnit_setTag(7, dComIfGs_getBombMax(bombType), bombMax); - stack_pushCurrent(bombMax); - mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); - break; - case 0x38: - char arrowMax[40]; - dMsgUnit_setTag(0, dComIfGs_getArrowMax(), arrowMax); - stack_pushCurrent(arrowMax); + + char buffer[40]; + dMsgUnit_setTag(7, dComIfGs_getBombMax(bombType), buffer); + stack_pushCurrent(buffer); mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); break; } + case MSGTAG_ARROW_MAX: { + char buffer[40]; + dMsgUnit_setTag(0, dComIfGs_getArrowMax(), buffer); + stack_pushCurrent(buffer); + mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); + break; + } + } break; - case 0x40000: - switch (param_1 & 0xff00ffff) { - case 0: + case MSGTAG_GROUP(4): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_GLYPH_DOLLARSIGN: stack_pushCurrent(changeCodeToChar(0x24)); break; - case 1: - stack_pushCurrent(changeCodeToChar(0x5c)); + case MSGTAG_GLYPH_BACKSLASH: + stack_pushCurrent(changeCodeToChar(0x5C)); break; - case 2: + case MSGTAG_GLYPH_ATMARK: stack_pushCurrent(changeCodeToChar(0x40)); break; - case 3: - stack_pushCurrent(changeCodeToChar(0x81f2)); + case MSGTAG_GLYPH_SHARP: + stack_pushCurrent(changeCodeToChar(0x81F2)); break; - case 4: - stack_pushCurrent(changeCodeToChar(0x81f3)); + case MSGTAG_GLYPH_FLAT: + stack_pushCurrent(changeCodeToChar(0x81F3)); break; - case 5: - stack_pushCurrent(changeCodeToChar(0x81e3)); + case MSGTAG_GLYPH_SQRT: + stack_pushCurrent(changeCodeToChar(0x81E3)); break; - case 6: - stack_pushCurrent(changeCodeToChar(0x876c)); + case MSGTAG_GLYPH_PERCENT: + stack_pushCurrent(changeCodeToChar(0x876C)); break; - case 7: + case MSGTAG_GLYPH_HECTARE: stack_pushCurrent(changeCodeToChar(0x8766)); break; - case 8: + case MSGTAG_GLYPH_ARE: stack_pushCurrent(changeCodeToChar(0x8765)); break; - case 9: + case MSGTAG_GLYPH_LITRE: stack_pushCurrent(changeCodeToChar(0x8767)); break; - case 10: + case MSGTAG_GLYPH_WATT: stack_pushCurrent(changeCodeToChar(0x8768)); break; - case 0xb: + case MSGTAG_GLYPH_CALORIE: stack_pushCurrent(changeCodeToChar(0x8769)); break; - case 0xc: - stack_pushCurrent(changeCodeToChar(0x876a)); + case MSGTAG_GLYPH_DOLLAR: + stack_pushCurrent(changeCodeToChar(0x876A)); break; - case 0xd: - stack_pushCurrent(changeCodeToChar(0x876b)); + case MSGTAG_GLYPH_CENT: + stack_pushCurrent(changeCodeToChar(0x876B)); break; } mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); break; - case 0x50000: { - char acStack_100[40]; - switch (param_1 & 0xff00ffff) { - case 0: - if (*(u8*)param_2 == 0) { - dMsgUnit_setTag(4, dMeter2Info_getMsgTimeMs(), acStack_100); - } else if ((*(s8*)param_2 & 0xffU) == 2) { - dMsgUnit_setTag(4, dComIfGs_getRaceGameTime(), acStack_100); + case MSGTAG_GROUP(5): { + char buffer[40]; + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_TIME_INFO: + if (*(u8*)i_data == 0) { + dMsgUnit_setTag(4, dMeter2Info_getMsgTimeMs(), buffer); + } else if ((*(s8*)i_data & 0xFFU) == 2) { + dMsgUnit_setTag(4, dComIfGs_getRaceGameTime(), buffer); } else { - dMsgUnit_setTag(4, dMeter2Info_getTimeMs(), acStack_100); + dMsgUnit_setTag(4, dMeter2Info_getTimeMs(), buffer); } break; case 1: - dMsgUnit_setTag(0, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_100); + dMsgUnit_setTag(0, (s32)dComIfGp_getMessageCountNumber(), buffer); break; case 2: - dMsgUnit_setTag(1, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_100); + dMsgUnit_setTag(1, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 9: { - s16 uVar9 = *(int*)param_2; + case MSGTAG_FUNDRAISE_REMAIN: { + s16 uVar9 = *(int*)i_data; dMsgObject_getMsgObjectClass()->setFundRaisingValue(uVar9); - dMsgUnit_setTag(10, uVar9 - dMsgObject_getFundRaising(), acStack_100); + dMsgUnit_setTag(10, uVar9 - dMsgObject_getFundRaising(), buffer); break; } - case 10: - dMsgUnit_setTag(0xb, dMeter2Info_getNewLetterNum(), acStack_100); + case MSGTAG_NEW_LETTER_NUM: + dMsgUnit_setTag(0xb, dMeter2Info_getNewLetterNum(), buffer); break; - case 0xb: - dMsgUnit_setTag(0xc, getPohNum(), acStack_100); + case MSGTAG_POE_NUM: + dMsgUnit_setTag(0xc, getPohNum(), buffer); break; - case 0xc: { + case MSGTAG_BALLOON_SCORE: { int local_15c; - if (*(u8*)param_2 == 0) { + if (*(u8*)i_data == 0) { local_15c = dComIfGp_getMessageCountNumber(); } else { local_15c = dComIfGs_getBalloonScore(); } - dMsgUnit_setTag(0xd, local_15c, acStack_100); + dMsgUnit_setTag(0xd, local_15c, buffer); break; } - case 3: { + case MSGTAG_INSECT_INFO: { int insectNum; - if (*(u8*)param_2 == 0) { + if (*(u8*)i_data == 0) { insectNum = dComIfGs_checkGetInsectNum(); } else { insectNum = 0x18 - dComIfGs_checkGetInsectNum(); } - dMsgUnit_setTag(2, insectNum, acStack_100); + dMsgUnit_setTag(2, insectNum, buffer); break; } case 4: - dMsgUnit_setTag(3, 0, acStack_100); + dMsgUnit_setTag(3, 0, buffer); break; case 5: - dMsgUnit_setTag(0x10000, dComIfGp_getNeedLightDropNum(), acStack_100); + dMsgUnit_setTag(0x10000, dComIfGp_getNeedLightDropNum(), buffer); break; case 6: - dMsgUnit_setTag(6, 0x14 - dComIfGs_getEventReg(0xff1f), acStack_100); + dMsgUnit_setTag(6, 0x14 - dComIfGs_getEventReg(0xff1f), buffer); break; - case 8: - dMsgUnit_setTag(9, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_100); + case MSGTAG_FISH_LENGTH: + dMsgUnit_setTag(9, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 0xd: - dMsgUnit_setTag(0xe, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_100); + case MSGTAG_FISH_COUNT: + dMsgUnit_setTag(0xe, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 0xe: - dMsgUnit_setTag(0x10001, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_100); + case MSGTAG_ROLLGOAL_LV: + dMsgUnit_setTag(0x10001, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 7: - dMsgUnit_setTag(8, g_meter2_info.mNowCount, acStack_100); + case MSGTAG_RIVER_POINTS: + dMsgUnit_setTag(8, dMeter2Info_getNowCount(), buffer); break; default: return false; } - stack_pushCurrent(acStack_100); + + stack_pushCurrent(buffer); mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); break; } - case 0x60000: { - char acStack_128[40]; - switch (param_1 & 0xff00ffff) { - case 0: - // @bug acStack_128 is uninitialized - stack_pushCurrent(acStack_128); + case MSGTAG_GROUP(6): { + char buffer[40]; + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_PLAYER_GENITIV: + // @bug buffer is uninitialized + stack_pushCurrent(buffer); break; - case 1: - stack_pushCurrent(acStack_128); + case MSGTAG_HORSE_GENITIV: + stack_pushCurrent(buffer); break; - case 2: - stack_pushCurrent(changeCodeToChar(0xb2)); + case MSGTAG_MALE_ICON: + stack_pushCurrent(changeCodeToChar(0xB2)); break; - case 3: - stack_pushCurrent(changeCodeToChar(0xb3)); + case MSGTAG_FEMALE_ICON: + stack_pushCurrent(changeCodeToChar(0xB3)); break; - case 4: - stack_pushCurrent(changeCodeToChar(0xb1)); + case MSGTAG_STAR_ICON: + stack_pushCurrent(changeCodeToChar(0xB1)); break; - case 5: + case MSGTAG_REFMARK: stack_pushCurrent(changeCodeToChar(0x89)); break; - case 6: - stack_pushCurrent(changeCodeToChar(0xb9)); + case MSGTAG_THIN_LEFT_ARROW: + stack_pushCurrent(changeCodeToChar(0xB9)); break; - case 7: - stack_pushCurrent(changeCodeToChar(0xbc)); + case MSGTAG_THIN_RIGHT_ARROW: + stack_pushCurrent(changeCodeToChar(0xBC)); break; - case 8: - stack_pushCurrent(changeCodeToChar(0xbd)); + case MSGTAG_THIN_UP_ARROW: + stack_pushCurrent(changeCodeToChar(0xBD)); break; - case 9: - stack_pushCurrent(changeCodeToChar(0xbe)); + case MSGTAG_THIN_DOWN_ARROW: + stack_pushCurrent(changeCodeToChar(0xBE)); break; - case 10: - case 0xb: - local_130.mSizeX += dVar13; - mpReference->addLineLength(mpReference->getLineCountNowPage(), local_130.mSizeX); - mpReference->setOutfontLength(mpReference->getLineCountNowPage(), local_130.mSizeX); + case MSGTAG_BULLET: + case MSGTAG_BULLET_SPACE: + fontsize.mSizeX += var_f30; + mpReference->addLineLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); + mpReference->setOutfontLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); } mpReference->clearOutfontLength(mpReference->getLineCountNowPage()); break; - case 0x30000: - switch(param_1 & 0xff00ffff) { - case 1: - case 2: - case 6: - case 7: - case 16: - case 17: - case 18: - case 19: - case 20: - mpReference->setCharactor(0xffff); - local_130.mSizeX += dVar13; - mpReference->addLineLength(mpReference->getLineCountNowPage(), local_130.mSizeX); - mpReference->setOutfontLength(mpReference->getLineCountNowPage(), local_130.mSizeX); + case MSGTAG_GROUP(3): + switch(i_tag & 0xFF00FFFF) { + case MSGTAG_WII_ABTN: + case MSGTAG_WII_BBTN: + case MSGTAG_WII_1BTN: + case MSGTAG_WII_2BTN: + case MSGTAG_WII_NUNCHUK: + case MSGTAG_WII_WIIMOTE2: + case MSGTAG_WII_FAIRY: + case MSGTAG_WII_CBTN: + case MSGTAG_WII_ZBTN: + mpReference->setCharactor(0xFFFF); + fontsize.mSizeX += var_f30; + mpReference->addLineLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); + mpReference->setOutfontLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); break; - case 3: - case 4: - case 5: - mpReference->setCharactor(0xffff); - local_130.mSizeX += dVar13; - mpReference->addLineLength(mpReference->getLineCountNowPage(), local_130.mSizeX); - mpReference->setOutfontLength(mpReference->getLineCountNowPage(), local_130.mSizeX); + case MSGTAG_WII_HOMEBTN: + case MSGTAG_WII_MINUSBTN: + case MSGTAG_WII_PLUSBTN: + mpReference->setCharactor(0xFFFF); + fontsize.mSizeX += var_f30; + mpReference->addLineLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); + mpReference->setOutfontLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); break; - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - mpReference->setCharactor(0xffff); - local_130.mSizeX += dVar13; - mpReference->addLineLength(mpReference->getLineCountNowPage(), local_130.mSizeX); - mpReference->setOutfontLength(mpReference->getLineCountNowPage(), local_130.mSizeX); + case MSGTAG_WII_DPAD_ITEM: + case MSGTAG_WII_DPAD_UP: + case MSGTAG_WII_DPAD_DOWN: + case MSGTAG_WII_DPAD_HORIZONTAL: + case MSGTAG_WII_DPAD_RIGHT: + case MSGTAG_WII_DPAD_LEFT: + case MSGTAG_WII_WIIMOTE: + case MSGTAG_WII_RETICULE: + mpReference->setCharactor(0xFFFF); + fontsize.mSizeX += var_f30; + mpReference->addLineLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); + mpReference->setOutfontLength(mpReference->getLineCountNowPage(), fontsize.mSizeX); break; - case 0: + case MSGTAG_WII_MSGID_OVERRIDE: break; } break; @@ -4438,18 +4317,20 @@ bool jmessage_string_tMeasureProcessor::do_tag(u32 param_1, void const* param_2, /* 8023098C-80230A08 22B2CC 007C+00 1/1 0/0 0/0 .text * do_rubyset__33jmessage_string_tMeasureProcessorFPCvUl */ -void jmessage_string_tMeasureProcessor::do_rubyset(void const* param_1, u32 param_2) { - u8 len = param_2 - 1; - u8* pStr = (u8*)param_1; +void jmessage_string_tMeasureProcessor::do_rubyset(void const* i_data, u32 i_size) { + u8 len = i_size - 1; + u8* pRuby = (u8*)i_data; int i = 0; - pStr++; + pRuby++; + while (i < len) { - u8 arr[3]; - arr[0] = pStr[i++]; - arr[1] = pStr[i++]; - arr[2] = 0; - int kata = (((char)arr[0] & 0xff) << 8) | ((char)arr[1] & 0xff); - mpReference->setCharactor(changeKataToHira(kata)); + u8 bytes[3]; + bytes[0] = pRuby[i++]; + bytes[1] = pRuby[i++]; + bytes[2] = 0; + + int character = (((char)bytes[0] & 0xFF) << 8) | ((char)bytes[1] & 0xFF); + mpReference->setCharactor(changeKataToHira(character)); } } @@ -4457,9 +4338,10 @@ void jmessage_string_tMeasureProcessor::do_rubyset(void const* param_1, u32 para * __ct__34jmessage_string_tSequenceProcessorFPC26jmessage_string_tReferenceP24jmessage_string_tControl */ jmessage_string_tSequenceProcessor::jmessage_string_tSequenceProcessor( - jmessage_string_tReference const* param_0, jmessage_string_tControl* param_1) : - JMessage::TSequenceProcessor(param_0, param_1), mMeasureProcessor(param_0) { -} + jmessage_string_tReference const* pReference, jmessage_string_tControl* pControl) : + JMessage::TSequenceProcessor(pReference, pControl), + mMeasureProcessor(pReference) + {} /* 80230ABC-80230AC0 22B3FC 0004+00 1/0 0/0 0/0 .text * do_reset__34jmessage_string_tSequenceProcessorFv */ @@ -4467,9 +4349,9 @@ void jmessage_string_tSequenceProcessor::do_reset() {} /* 80230AC0-80230B7C 22B400 00BC+00 1/0 0/0 0/0 .text * do_begin__34jmessage_string_tSequenceProcessorFPCvPCc */ -void jmessage_string_tSequenceProcessor::do_begin(void const* param_0, char const* param_1) { +void jmessage_string_tSequenceProcessor::do_begin(void const* pEntry, char const* pszText) { mpSeqReference = (jmessage_string_tReference*)JMessage::TSequenceProcessor::getReference(); - mMeasureProcessor.process_messageEntryText(this, param_0, param_1); + mMeasureProcessor.process_messageEntryText(this, pEntry, pszText); } /* 80230B7C-80230B80 22B4BC 0004+00 1/0 0/0 0/0 .text @@ -4484,16 +4366,16 @@ bool jmessage_string_tSequenceProcessor::do_isReady() { /* 80230B88-80230B8C 22B4C8 0004+00 1/0 0/0 0/0 .text * do_character__34jmessage_string_tSequenceProcessorFi */ -void jmessage_string_tSequenceProcessor::do_character(int param_0) {} +void jmessage_string_tSequenceProcessor::do_character(int iCharacter) {} /* 80230B8C-80230BBC 22B4CC 0030+00 1/0 0/0 0/0 .text * do_tag__34jmessage_string_tSequenceProcessorFUlPCvUl */ -bool jmessage_string_tSequenceProcessor::do_tag(u32 param_0, void const* param_1, u32 param_2) { - switch (param_0 & 0xff0000) { - case 0: - switch(param_0) { - case 0x36: - dMeter2Info_setMsgKeyWaitTimer(*(u16*)param_1); +bool jmessage_string_tSequenceProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_size) { + switch (i_tag & 0xFF0000) { + case MSGTAG_GROUP(0): + switch(i_tag) { + case MSGTAG_BOXATLEAST: + dMeter2Info_setMsgKeyWaitTimer(*(u16*)i_data); break; } break; @@ -4509,13 +4391,13 @@ bool jmessage_string_tSequenceProcessor::do_jump_isReady() { /* 80230BC4-80230BC8 22B504 0004+00 1/0 0/0 0/0 .text * do_jump__34jmessage_string_tSequenceProcessorFPCvPCc */ -void jmessage_string_tSequenceProcessor::do_jump(void const* param_0, char const* param_1) {} +void jmessage_string_tSequenceProcessor::do_jump(void const* pEntry, char const* pszText) {} /* 80230BC8-80230C20 22B508 0058+00 0/0 1/1 0/0 .text * __ct__35jmessage_string_tRenderingProcessorFPC26jmessage_string_tReference */ jmessage_string_tRenderingProcessor::jmessage_string_tRenderingProcessor( - jmessage_string_tReference const* param_0) - : JMessage::TRenderingProcessor(param_0) { + jmessage_string_tReference const* pReference) + : JMessage::TRenderingProcessor(pReference) { mpReference = (jmessage_string_tReference*)getReference(); do_reset(); } @@ -4554,7 +4436,7 @@ void jmessage_string_tRenderingProcessor::do_reset() { /* 80230CA0-80230CE8 22B5E0 0048+00 1/0 0/0 0/0 .text * do_begin__35jmessage_string_tRenderingProcessorFPCvPCc */ -void jmessage_string_tRenderingProcessor::do_begin(void const* param_0, char const* param_1) { +void jmessage_string_tRenderingProcessor::do_begin(void const* pEntry, char const* pszText) { do_reset(); do_widthcenter(); do_heightcenter(); @@ -4563,31 +4445,30 @@ void jmessage_string_tRenderingProcessor::do_begin(void const* param_0, char con /* 80230CE8-80230D48 22B628 0060+00 1/0 0/0 0/0 .text * do_end__35jmessage_string_tRenderingProcessorFv */ void jmessage_string_tRenderingProcessor::do_end() { - J2DTextBox* pane = mpReference->getPanePtr(); - if (pane != NULL) { - strcpy(pane->getStringPtr(), field_0x54); + if (mpReference->getPanePtr() != NULL) { + strcpy(mpReference->getPanePtr()->getStringPtr(), field_0x54); } - J2DTextBox* rubyPane = mpReference->getRubyPanePtr(); - if (rubyPane != NULL) { - strcpy(rubyPane->getStringPtr(), field_0x254); + if (mpReference->getRubyPanePtr() != NULL) { + strcpy(mpReference->getRubyPanePtr()->getStringPtr(), field_0x254); } } /* 80230D48-80231110 22B688 03C8+00 1/0 0/0 0/0 .text * do_character__35jmessage_string_tRenderingProcessorFi */ -void jmessage_string_tRenderingProcessor::do_character(int param_1) { +void jmessage_string_tRenderingProcessor::do_character(int iCharacter) { JUTFont* pFont = mpReference->getFont(); - if (JUTFont::isLeadByte_ShiftJIS(param_1)) { - if (!isOutfontKanjiCode(param_1)) { - u16 kata = change1ByteTo2Bytes(param_1); - mpReference->addCharactor(changeKataToHira(kata)); + if (JUTFont::isLeadByte_ShiftJIS(iCharacter)) { + if (!isOutfontKanjiCode(iCharacter)) { + u16 character2Bytes = change1ByteTo2Bytes(iCharacter); + mpReference->addCharactor(changeKataToHira(character2Bytes)); } } else { - if (param_1 < 0x8800 && !isOutfontKanjiCode(param_1)) { - mpReference->addCharactor(changeKataToHira(param_1)); + if (iCharacter < 0x8800 && !isOutfontKanjiCode(iCharacter)) { + mpReference->addCharactor(changeKataToHira(iCharacter)); } } + f32 dVar12; J2DTextBox::TFontSize fontSize; if (mpReference->getPanePtr() != NULL) { @@ -4600,15 +4481,15 @@ void jmessage_string_tRenderingProcessor::do_character(int param_1) { char local_a6[3]; local_a6[0] = local_a6[1] = local_a6[2] = 0; - if ((param_1 & 0xff00U) != 0) { - local_a6[0] = ((int)(param_1 & 0xff00U) >> 8); - local_a6[1] = param_1 & 0xff; + if ((iCharacter & 0xFF00) != 0) { + local_a6[0] = ((int)(iCharacter & 0xFF00) >> 8); + local_a6[1] = iCharacter & 0xFF; } else { - local_a6[0] = param_1 & 0xff; + local_a6[0] = iCharacter & 0xFF; local_a6[1] = 0; } - if (param_1 == 10) { + if (iCharacter == '\n') { do_strcat(local_a6); do_rubystrcat(local_a6); field_0x552++; @@ -4620,7 +4501,7 @@ void jmessage_string_tRenderingProcessor::do_character(int param_1) { do_widthcenter(); } else { f32 fVar2; - f32 fVar1 = dVar12 + fontSize.mSizeX * (pFont->getWidth(param_1) / (f32)pFont->getCellWidth()); + f32 fVar1 = dVar12 + fontSize.mSizeX * (pFont->getWidth(iCharacter) / (f32)pFont->getCellWidth()); field_0x4c += fVar1; if (field_0x554 != 0) { field_0x40 += fVar1; @@ -4656,426 +4537,430 @@ void jmessage_string_tRenderingProcessor::do_character(int param_1) { /* 80231110-80231D70 22BA50 0C60+00 6/0 0/0 0/0 .text * do_tag__35jmessage_string_tRenderingProcessorFUlPCvUl */ -bool jmessage_string_tRenderingProcessor::do_tag(u32 param_1, void const* param_2, u32 param_3) { - jmessage_tReference* pRef = (jmessage_tReference*)getReference(); - switch(param_1 & 0xff0000) { - case 0xff0000: - switch(param_1) { - case 0xff0000: - do_color(*(u8*)param_2 & 0xff); +bool jmessage_string_tRenderingProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_size) { + jmessage_tReference* pReference = (jmessage_tReference*)getReference(); + switch(i_tag & 0xFF0000) { + case MSGTAG_GROUP(255): + switch(i_tag) { + case MSGTAG_COLOR: + do_color(*(u8*)i_data & 0xFF); break; - case 0xff0001: - do_scale(*(u16*)param_2 / 100.0f); + case MSGTAG_SCALE: + do_scale(*(u16*)i_data / 100.0f); break; - case 0xff0002: - case 0xffff02: - do_rubyset(param_2, param_3); + case MSGTAG_RUBY: + case 0xFFFF02: + do_rubyset(i_data, i_size); break; } break; - case 0: - switch (param_1) { - case 0: + case MSGTAG_GROUP(0): + switch (i_tag) { + case MSGTAG_PLAYER_NAME: push_word(dComIfGs_getPlayerName()); break; - case 0x22: + case MSGTAG_HORSE_NAME: push_word(dComIfGs_getHorseName()); break; - case 0x35: + case MSGTAG_UNK_53: push_word(dMsgObject_getWord()); break; - case 0x29: + case MSGTAG_SCENT_NAME: push_word(dMsgObject_getMsgObjectClass()->getSmellName()); break; - case 0x2b: + case MSGTAG_PORTAL_NAME: push_word(dMsgObject_getMsgObjectClass()->getPortalName()); break; - case 0x2d: + case MSGTAG_BOMB_NAME: push_word(dMsgObject_getMsgObjectClass()->getBombName()); break; - case 0x3b: + case MSGTAG_INSECT_NAME: push_word(dMsgObject_getMsgObjectClass()->getInsectName()); break; - case 0x3c: + case MSGTAG_LETTER_NAME: push_word(dMsgObject_getMsgObjectClass()->getLetterName()); break; - case 0x3d: - do_linedown(*(u16*)param_2); + case MSGTAG_LINE_DOWN: + do_linedown(*(u16*)i_data); break; - case 0x3e: - char acStack_148[4]; - sprintf(acStack_148, "%d", dComIfGp_getMessageCountNumber() / 100); - push_word(acStack_148); + case MSGTAG_CURRENT_LETTER_PAGE: { + char buffer[4]; + sprintf(buffer, "%d", dComIfGp_getMessageCountNumber() / 100); + push_word(buffer); break; - case 0x3f: - char acStack_14c[4]; - sprintf(acStack_14c, "%d", dComIfGp_getMessageCountNumber() % 100); - push_word(acStack_14c); + } + case MSGTAG_MAX_LETTER_PAGE: { + char buffer[4]; + sprintf(buffer, "%d", dComIfGp_getMessageCountNumber() % 100); + push_word(buffer); break; - case 10: + } + case MSGTAG_ABTN: do_outfont(0); break; - case 0xb: + case MSGTAG_BBTN: do_outfont(1); break; - case 0xc: + case MSGTAG_CSTICK: do_outfont(2); break; - case 0xd: + case MSGTAG_LBTN: do_outfont(3); break; - case 0xe: + case MSGTAG_RBTN: do_outfont(4); break; - case 0xf: + case MSGTAG_XBTN: do_outfont(5); break; - case 0x10: + case MSGTAG_YBTN: do_outfont(6); break; - case 0x11: + case MSGTAG_ZBTN: do_outfont(7); break; - case 0x12: + case MSGTAG_DPAD: do_outfont(8); break; - case 0x13: + case MSGTAG_STICK_CROSS: do_outfont(9); break; - case 0x14: + case MSGTAG_LEFT_ARROW: do_outfont(10); break; - case 0x15: + case MSGTAG_RIGHT_ARROW: do_outfont(11); break; - case 0x16: + case MSGTAG_UP_ARROW: do_outfont(12); break; - case 0x17: + case MSGTAG_DOWN_ARROW: do_outfont(13); break; - case 0x18: + case MSGTAG_STICK_UP: do_outfont(14); break; - case 0x19: + case MSGTAG_STICK_DOWN: do_outfont(15); break; - case 0x1a: + case MSGTAG_STICK_LEFT: do_outfont(16); break; - case 0x1b: + case MSGTAG_STICK_RIGHT: do_outfont(17); break; - case 0x1c: + case MSGTAG_STICK_VERTICAL: do_outfont(18); break; - case 0x1d: + case MSGTAG_STICK_HORIZONTAL: do_outfont(19); break; - case 0x23: + case MSGTAG_RED_TARGET: do_outfont(20); break; - case 0x24: + case MSGTAG_YELLOW_TARGET: do_outfont(21); break; - case 0x25: + case MSGTAG_INPUT_VALUE: do_outfont(30); do_numset(dMsgObject_getMsgObjectClass()->getInputValue()); break; - case 0x27: + case MSGTAG_ABTN_STAR: do_outfont(23); break; - case 0x2a: + case MSGTAG_WHITE_TARGET: do_outfont(24); break; - case 0x2c: + case MSGTAG_WARP_ICON: do_outfont(25); break; - case 0x2e: + case MSGTAG_XYBTN: if (dMsgObject_getItemEquipButton() == 0) { do_outfont(5); } else { do_outfont(6); } break; - case 0x2f: + case MSGTAG_YXBTN: if (dMsgObject_getItemEquipButton() == 0) { do_outfont(6); } else { do_outfont(5); } break; - case 0x30: + case MSGTAG_BOMB_BAG_ICON: do_outfont(41); break; - case 0x39: + case MSGTAG_HEART: do_outfont(27); break; - case 0x3a: + case MSGTAG_QUAVER: do_outfont(28); break; - case 0x31: { - char acStack_48[40]; - u8 uVar7 = dMsgObject_getMsgObjectClass()->getSelectBombNum(); - dMsgUnit_setTag(7, uVar7, acStack_48); - push_word(acStack_48); + case MSGTAG_BOMB_NUM: { + char buffer[40]; + u8 num = dMsgObject_getMsgObjectClass()->getSelectBombNum(); + dMsgUnit_setTag(7, num, buffer); + push_word(buffer); break; } - case 0x32: { - char acStack_70[40]; - s16 local_140 = dMsgObject_getMsgObjectClass()->getSelectBombPrice(); - dMsgUnit_setTag(1, local_140, acStack_70); - push_word(acStack_70); + case MSGTAG_BOMB_PRICE: { + char buffer[40]; + s16 price = dMsgObject_getMsgObjectClass()->getSelectBombPrice(); + dMsgUnit_setTag(1, price, buffer); + push_word(buffer); break; } - case 0x37: + case MSGTAG_BOMB_MAX: { u8 bombType = fpcNm_ITEM_NORMAL_BOMB; - if ((*(u8*)param_2 ) == 1) { + if ((*(u8*)i_data) == 1) { bombType = fpcNm_ITEM_WATER_BOMB; - } else if ((*(s8*)param_2 & 0xffU) == 2) { + } else if ((*(s8*)i_data & 0xFFU) == 2) { bombType = fpcNm_ITEM_POKE_BOMB; } - char bombMax[40]; - dMsgUnit_setTag(7, dComIfGs_getBombMax(bombType), bombMax); - push_word(bombMax); + + char buffer[40]; + dMsgUnit_setTag(7, dComIfGs_getBombMax(bombType), buffer); + push_word(buffer); break; - case 0x38: { - char acStack_c0[40]; - dMsgUnit_setTag(0, dComIfGs_getArrowMax(), acStack_c0); - push_word(acStack_c0); + } + case MSGTAG_ARROW_MAX: { + char buffer[40]; + dMsgUnit_setTag(0, dComIfGs_getArrowMax(), buffer); + push_word(buffer); break; } } break; - case 0x40000: - switch (param_1 & 0xff00ffff) { - case 0: + case MSGTAG_GROUP(4): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_GLYPH_DOLLARSIGN: push_word(changeCodeToChar(0x24)); break; - case 1: - push_word(changeCodeToChar(0x5c)); + case MSGTAG_GLYPH_BACKSLASH: + push_word(changeCodeToChar(0x5C)); break; - case 2: + case MSGTAG_GLYPH_ATMARK: push_word(changeCodeToChar(0x40)); break; - case 3: - push_word(changeCodeToChar(0x81f2)); + case MSGTAG_GLYPH_SHARP: + push_word(changeCodeToChar(0x81F2)); break; - case 4: - push_word(changeCodeToChar(0x81f3)); + case MSGTAG_GLYPH_FLAT: + push_word(changeCodeToChar(0x81F3)); break; - case 5: - push_word(changeCodeToChar(0x81e3)); + case MSGTAG_GLYPH_SQRT: + push_word(changeCodeToChar(0x81E3)); break; - case 6: - push_word(changeCodeToChar(0x876c)); + case MSGTAG_GLYPH_PERCENT: + push_word(changeCodeToChar(0x876C)); break; - case 7: + case MSGTAG_GLYPH_HECTARE: push_word(changeCodeToChar(0x8766)); break; - case 8: + case MSGTAG_GLYPH_ARE: push_word(changeCodeToChar(0x8765)); break; - case 9: + case MSGTAG_GLYPH_LITRE: push_word(changeCodeToChar(0x8767)); break; - case 10: + case MSGTAG_GLYPH_WATT: push_word(changeCodeToChar(0x8768)); break; - case 0xb: + case MSGTAG_GLYPH_CALORIE: push_word(changeCodeToChar(0x8769)); break; - case 0xc: - push_word(changeCodeToChar(0x876a)); + case MSGTAG_GLYPH_DOLLAR: + push_word(changeCodeToChar(0x876A)); break; - case 0xd: - push_word(changeCodeToChar(0x876b)); + case MSGTAG_GLYPH_CENT: + push_word(changeCodeToChar(0x876B)); break; } break; - case 0x50000: { - char acStack_e8[40]; - switch (param_1 & 0xff00ffff) { - case 0: - if (*(u8*)param_2 == 0) { - dMsgUnit_setTag(4, dMeter2Info_getMsgTimeMs(), acStack_e8); - } else if ((*(s8*)param_2 & 0xffU) == 2) { - dMsgUnit_setTag(4, dComIfGs_getRaceGameTime(), acStack_e8); + case MSGTAG_GROUP(5): { + char buffer[40]; + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_TIME_INFO: + if (*(u8*)i_data == 0) { + dMsgUnit_setTag(4, dMeter2Info_getMsgTimeMs(), buffer); + } else if ((*(s8*)i_data & 0xFFU) == 2) { + dMsgUnit_setTag(4, dComIfGs_getRaceGameTime(), buffer); } else { - dMsgUnit_setTag(4, dMeter2Info_getTimeMs(), acStack_e8); + dMsgUnit_setTag(4, dMeter2Info_getTimeMs(), buffer); } break; case 1: - dMsgUnit_setTag(0, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_e8); + dMsgUnit_setTag(0, (s32)dComIfGp_getMessageCountNumber(), buffer); break; case 2: - dMsgUnit_setTag(1, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_e8); + dMsgUnit_setTag(1, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 9: { - s16 uVar9 = *(int*)param_2; + case MSGTAG_FUNDRAISE_REMAIN: { + s16 uVar9 = *(int*)i_data; dMsgObject_getMsgObjectClass()->setFundRaisingValue(uVar9); - dMsgUnit_setTag(10, uVar9 - dMsgObject_getFundRaising(), acStack_e8); + dMsgUnit_setTag(10, uVar9 - dMsgObject_getFundRaising(), buffer); break; } - case 10: - dMsgUnit_setTag(0xb, dMeter2Info_getNewLetterNum(), acStack_e8); + case MSGTAG_NEW_LETTER_NUM: + dMsgUnit_setTag(0xb, dMeter2Info_getNewLetterNum(), buffer); break; - case 0xb: - dMsgUnit_setTag(0xc, getPohNum(), acStack_e8); + case MSGTAG_POE_NUM: + dMsgUnit_setTag(0xc, getPohNum(), buffer); break; - case 0xc:{ + case MSGTAG_BALLOON_SCORE:{ int local_15c; - if (*(u8*)param_2 == 0) { + if (*(u8*)i_data == 0) { local_15c = dComIfGp_getMessageCountNumber(); } else { local_15c = dComIfGs_getBalloonScore(); } - dMsgUnit_setTag(0xd, local_15c, acStack_e8); + dMsgUnit_setTag(0xd, local_15c, buffer); break; } - case 3: { + case MSGTAG_INSECT_INFO: { int insectNum; - if (*(u8*)param_2 == 0) { + if (*(u8*)i_data == 0) { insectNum = dComIfGs_checkGetInsectNum(); } else { - insectNum = 0x18 - dComIfGs_checkGetInsectNum(); + insectNum = 24 - dComIfGs_checkGetInsectNum(); } - dMsgUnit_setTag(2, insectNum, acStack_e8); + dMsgUnit_setTag(2, insectNum, buffer); break; } case 4: - dMsgUnit_setTag(3, 0, acStack_e8); + dMsgUnit_setTag(3, 0, buffer); break; case 5: - dMsgUnit_setTag(0x10000, dComIfGp_getNeedLightDropNum(), acStack_e8); + dMsgUnit_setTag(0x10000, dComIfGp_getNeedLightDropNum(), buffer); break; case 6: - dMsgUnit_setTag(6, 0x14 - dComIfGs_getEventReg(0xff1f), acStack_e8); + dMsgUnit_setTag(6, 20 - dComIfGs_getEventReg(0xFF1F), buffer); break; - case 8: - dMsgUnit_setTag(9, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_e8); + case MSGTAG_FISH_LENGTH: + dMsgUnit_setTag(9, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 0xd: - dMsgUnit_setTag(0xe, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_e8); + case MSGTAG_FISH_COUNT: + dMsgUnit_setTag(0xe, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 0xe: - dMsgUnit_setTag(0x10001, g_dComIfG_gameInfo.play.mItemInfo.mMessageCountNum, acStack_e8); + case MSGTAG_ROLLGOAL_LV: + dMsgUnit_setTag(0x10001, (s32)dComIfGp_getMessageCountNumber(), buffer); break; - case 7: - dMsgUnit_setTag(8, g_meter2_info.mNowCount, acStack_e8); + case MSGTAG_RIVER_POINTS: + dMsgUnit_setTag(8, dMeter2Info_getNowCount(), buffer); break; default: return 0; } - push_word(acStack_e8); + push_word(buffer); break; } - case 0x60000: { - char acStack_110[40]; - switch (param_1 & 0xff00ffff) { - case 0: - // @bug acStack_110 is uninitialized - push_word(acStack_110); + case MSGTAG_GROUP(6): { + char buffer[40]; + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_PLAYER_GENITIV: + // @bug buffer is uninitialized + push_word(buffer); break; - case 1: - push_word(acStack_110); + case MSGTAG_HORSE_GENITIV: + push_word(buffer); break; - case 2: - push_word(changeCodeToChar(0xb2)); + case MSGTAG_MALE_ICON: + push_word(changeCodeToChar(0xB2)); break; - case 3: - push_word(changeCodeToChar(0xb3)); + case MSGTAG_FEMALE_ICON: + push_word(changeCodeToChar(0xB3)); break; - case 4: - push_word(changeCodeToChar(0xb1)); + case MSGTAG_STAR_ICON: + push_word(changeCodeToChar(0xB1)); break; - case 5: + case MSGTAG_REFMARK: push_word(changeCodeToChar(0x89)); break; - case 6: - push_word(changeCodeToChar(0xb9)); + case MSGTAG_THIN_LEFT_ARROW: + push_word(changeCodeToChar(0xB9)); break; - case 7: - push_word(changeCodeToChar(0xbc)); + case MSGTAG_THIN_RIGHT_ARROW: + push_word(changeCodeToChar(0xBC)); break; - case 8: - push_word(changeCodeToChar(0xbd)); + case MSGTAG_THIN_UP_ARROW: + push_word(changeCodeToChar(0xBD)); break; - case 9: - push_word(changeCodeToChar(0xbe)); + case MSGTAG_THIN_DOWN_ARROW: + push_word(changeCodeToChar(0xBE)); break; - case 10: + case MSGTAG_BULLET: do_outfont(42); break; - case 0xb: + case MSGTAG_BULLET_SPACE: do_outfont(43); } break; } - case 0x30000: - switch (param_1 & 0xff00ffff) { - case 1: + case MSGTAG_GROUP(3): + switch (i_tag & 0xFF00FFFF) { + case MSGTAG_WII_ABTN: do_outfont(0); break; - case 2: + case MSGTAG_WII_BBTN: do_outfont(51); break; - case 3: + case MSGTAG_WII_HOMEBTN: do_outfont(52); break; - case 4: + case MSGTAG_WII_MINUSBTN: do_outfont(53); break; - case 5: + case MSGTAG_WII_PLUSBTN: do_outfont(54); break; - case 6: + case MSGTAG_WII_1BTN: do_outfont(63); break; - case 7: + case MSGTAG_WII_2BTN: do_outfont(64); break; - case 8: + case MSGTAG_WII_DPAD_ITEM: do_outfont(50); break; - case 9: + case MSGTAG_WII_DPAD_UP: do_outfont(49); break; - case 10: + case MSGTAG_WII_DPAD_DOWN: do_outfont(65); break; - case 0xb: + case MSGTAG_WII_DPAD_HORIZONTAL: do_outfont(66); break; - case 0xc: + case MSGTAG_WII_DPAD_RIGHT: do_outfont(67); break; - case 0xd: + case MSGTAG_WII_DPAD_LEFT: do_outfont(68); break; - case 0xe: + case MSGTAG_WII_WIIMOTE: if (dComIfGs_getOptPointer() == 0) { do_outfont(9); } else { do_outfont(44); } break; - case 0xf: + case MSGTAG_WII_RETICULE: do_outfont(69); break; - case 0x10: + case MSGTAG_WII_NUNCHUK: do_outfont(45); break; - case 0x11: + case MSGTAG_WII_WIIMOTE2: do_outfont(44); break; - case 0x12: + case MSGTAG_WII_FAIRY: do_outfont(62); break; - case 0x13: + case MSGTAG_WII_CBTN: do_outfont(2); break; - case 0x14: + case MSGTAG_WII_ZBTN: do_outfont(7); break; } @@ -5093,8 +4978,9 @@ void jmessage_string_tRenderingProcessor::do_widthcenter() { f32 width; f32 lineLength; f32 dVar9; - char acStack_68[16]; + char buffer[16]; int outFontLen; + if (getLineCountNowPage() >= 0 && mpReference->getPanePtr() != NULL) { if (mpReference->isFlag(1) == 0) { if (mpReference->getPanePtr()->getHBinding() != HBIND_CENTER) { @@ -5117,17 +5003,18 @@ void jmessage_string_tRenderingProcessor::do_widthcenter() { width = scale * mpReference->getPanePtr()->getWidth(); lineLength = mpReference->getLineLength(getLineCountNowPage()); - dVar9 = - (0.5f + (width - lineLength) / 2); + dVar9 = (0.5f + (width - lineLength) / 2); + if (mpReference->getPanePtr()->getHBinding() == HBIND_CENTER) { - snprintf(acStack_68, sizeof(acStack_68) - 1, "\x1B" "CL[%d]", (int)mpReference->getOutfontLength(getLineCountNowPage())); - do_strcat(acStack_68); + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CL[%d]", (int)mpReference->getOutfontLength(getLineCountNowPage())); + do_strcat(buffer); } + if (dVar9 >= 1.0f) { field_0x4c += (int)dVar9; if (mpReference->getPanePtr()->getHBinding() != HBIND_CENTER) { - snprintf(acStack_68, sizeof(acStack_68) - 1, "\x1B" "CR[%d]", (int)dVar9); - do_strcat(acStack_68); + snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)dVar9); + do_strcat(buffer); } } } @@ -5142,6 +5029,7 @@ void jmessage_string_tRenderingProcessor::do_heightcenter() { f32 dVar11; f32 dVar9; char buffer[16]; + if (mpReference->getLineCountNowPage() >= 0 && mpReference->getPanePtr() != NULL) { if (mpReference->isFlag(2) == 0) { if (mpReference->getPanePtr()->getHBinding() != HBIND_CENTER) @@ -5153,6 +5041,7 @@ void jmessage_string_tRenderingProcessor::do_heightcenter() { lineSpace = mpReference->getPanePtr()->getLineSpace(); dVar11 = ((lineSpace * mpReference->getLineCountNowPage()) - (lineSpace - fontSize.mSizeY)); dVar9 = 0.5f + (height - dVar11) / 2; + if (dVar9 >= 1.0f) { field_0x50 += dVar9; if (mpReference->getPanePtr()->getHBinding() != HBIND_CENTER) { @@ -5166,42 +5055,50 @@ void jmessage_string_tRenderingProcessor::do_heightcenter() { /* 80232044-802320B0 22C984 006C+00 7/7 0/0 0/0 .text * do_strcat__35jmessage_string_tRenderingProcessorFPc */ -void jmessage_string_tRenderingProcessor::do_strcat(char* param_0) { +void jmessage_string_tRenderingProcessor::do_strcat(char* i_str) { if (getLineCountNowPage() >= 0) { - field_0x54e += strlen(param_0); + field_0x54e += strlen(i_str); if (field_0x54e < 512) { - strcat(field_0x54, param_0); + strcat(field_0x54, i_str); + } else { + JUT_WARN(7531, "%s", "Message Alloc Byte Over!!"); } } } /* 802320B0-80232260 22C9F0 01B0+00 1/1 0/0 0/0 .text * do_rubyset__35jmessage_string_tRenderingProcessorFPCvUl */ -void jmessage_string_tRenderingProcessor::do_rubyset(void const* param_0, u32 param_1) { +void jmessage_string_tRenderingProcessor::do_rubyset(void const* i_data, u32 i_size) { if (getLineCountNowPage() >= 0) { if (mpReference->getRubyPanePtr() != NULL) { JUTFont* pFont = mpReference->getFont(); f32 charSpace = mpReference->getRubyPanePtr()->getCharSpace(); J2DTextBox::TFontSize fontSize; mpReference->getRubyPanePtr()->getFontSize(fontSize); - u8 m_rubycount = param_1 - 1; - u8* pArr = (u8*)param_0; + + u8 m_rubycount = i_size - 1; + u8* pRuby = (u8*)i_data; + int i = 0; JUT_ASSERT(7565, m_rubycount < (50)); - field_0x554 = *(u8*)param_0 & 0xff; - pArr++; + field_0x554 = *(u8*)i_data & 0xFF; + pRuby++; + field_0x454[0] = 0; field_0x44 = 0.0f; + while (i < (int)m_rubycount) { - u8 local_64[3]; - local_64[0] = pArr[i++]; - local_64[1] = pArr[i++]; - local_64[2] = 0; - strcat(field_0x454, (const char*)local_64); - int uVar10 = (((char)local_64[0] & 0xff) << 8) | ((char)local_64[1] & 0xff); - field_0x44 += charSpace + fontSize.mSizeX * ((f32)pFont->getWidth(uVar10) / pFont->getCellWidth()); - mpReference->addCharactor(changeKataToHira(uVar10)); + u8 bytes[3]; + bytes[0] = pRuby[i++]; + bytes[1] = pRuby[i++]; + bytes[2] = 0; + strcat(field_0x454, (const char*)bytes); + + int character = (((char)bytes[0] & 0xFF) << 8) | ((char)bytes[1] & 0xFF); + field_0x44 += charSpace + fontSize.mSizeX * ((f32)pFont->getWidth(character) / pFont->getCellWidth()); + mpReference->addCharactor(changeKataToHira(character)); } + field_0x44 -= charSpace; field_0x3c = field_0x4c; field_0x40 = 0.0f; @@ -5211,24 +5108,28 @@ void jmessage_string_tRenderingProcessor::do_rubyset(void const* param_0, u32 pa /* 80232260-802322CC 22CBA0 006C+00 2/2 0/0 0/0 .text * do_rubystrcat__35jmessage_string_tRenderingProcessorFPc */ -void jmessage_string_tRenderingProcessor::do_rubystrcat(char* param_0) { +void jmessage_string_tRenderingProcessor::do_rubystrcat(char* i_str) { if (getLineCountNowPage() >= 0) { - field_0x550 += strlen(param_0); + field_0x550 += strlen(i_str); if (field_0x550 < 512) { - strcat(field_0x254, param_0); + strcat(field_0x254, i_str); + } else { + JUT_WARN(7613, "%s", "Message Alloc Byte Over!!"); } } } /* 802322CC-8023256C 22CC0C 02A0+00 2/2 0/0 0/0 .text * do_outfont__35jmessage_string_tRenderingProcessorFUc */ -void jmessage_string_tRenderingProcessor::do_outfont(u8 param_1) { +void jmessage_string_tRenderingProcessor::do_outfont(u8 i_iconNo) { if (mpReference->getPanePtr() != NULL) { - f32 dVar11 = mpReference->getPanePtr()->getCharSpace(); + f32 charSpace = mpReference->getPanePtr()->getCharSpace(); f32 dVar13 = 0.0f; int r28 = 1; - J2DTextBox::TFontSize local_60; - mpReference->getPanePtr()->getFontSize(local_60); + + J2DTextBox::TFontSize fontSize; + mpReference->getPanePtr()->getFontSize(fontSize); + if (mpReference->getOutFontPtr() != NULL) { J2DPane* pane = mpReference->getPanePtr(); f32 paneBounds0 = pane->getBounds().i.x; @@ -5236,60 +5137,58 @@ void jmessage_string_tRenderingProcessor::do_outfont(u8 param_1) { f32 scales[2]; scales[0] = mpReference->getPanePtr()->getScaleX(); scales[1] = mpReference->getPanePtr()->getScaleX(); + for (pane = pane->getParentPane(); pane != NULL; pane = pane->getParentPane()) { paneBounds0 += pane->getBounds().i.x; paneBounds1 += pane->getBounds().i.y; } - f32 stack_2c = local_60.mSizeX; - f32 stack_28 = local_60.mSizeY; - f32 local_8c = 0.0f; - f32 local_90 = 0.0f; + + f32 stack_2c = fontSize.mSizeX; + f32 stack_28 = fontSize.mSizeY; + f32 posX = 0.0f; + f32 posY = 0.0f; if (mpReference->isFlag(4)) { - f32 dVar14 = mpReference->getPanePtr()->getWidth(); - f32 dVar12 = mpReference->getLineLength(getLineCountNowPage()); - local_8c = 0.5f + (dVar14 - dVar12) / 2; + f32 width = mpReference->getPanePtr()->getWidth(); + f32 lineLen = mpReference->getLineLength(getLineCountNowPage()); + posX = 0.5f + (width - lineLen) / 2; } - if (mpReference->isFlag( - #if VERSION == VERSION_SHIELD_DEBUG - 8 - #else - 8 - #endif - )) { - f32 dVar14 = mpReference->getPanePtr()->getHeight(); - J2DTextBox::TFontSize TStack_68; - mpReference->getPanePtr()->getFontSize(TStack_68); - f32 dVar12 = mpReference->getPanePtr()->getLineSpace(); - f32 stack_c = (dVar12 * mpReference->getLineCountNowPage() - (dVar12 - TStack_68.mSizeY)); - local_90 = - 0.5f + - (dVar14 - stack_c) / 2; + + if (mpReference->isFlag(8)) { + f32 height = mpReference->getPanePtr()->getHeight(); + J2DTextBox::TFontSize fontSize; + mpReference->getPanePtr()->getFontSize(fontSize); + + f32 lineSpace = mpReference->getPanePtr()->getLineSpace(); + f32 stack_c = (lineSpace * mpReference->getLineCountNowPage() - (lineSpace - fontSize.mSizeY)); + posY = 0.5f + (height - stack_c) / 2; } - mpReference->getOutFontPtr()->drawFont( - mpReference->getPanePtr(), param_1, field_0x4c + local_8c, field_0x50 + local_90, - local_60.mSizeX, local_60.mSizeY, 0xffffffff, 0xff); - dVar13 = (0.5f + (dVar11 + local_60.mSizeX * r28)); + + mpReference->getOutFontPtr()->drawFont(mpReference->getPanePtr(), i_iconNo, field_0x4c + posX, field_0x50 + posY, + fontSize.mSizeX, fontSize.mSizeY, 0xFFFFFFFF, 0xFF); + dVar13 = (0.5f + (charSpace + fontSize.mSizeX * r28)); } + field_0x4c += (int) dVar13; char buffer[16]; snprintf(buffer, sizeof(buffer) - 1, "\x1B" "CR[%d]", (int)dVar13); do_strcat(buffer); - mpReference->addCharactor(0xffff); + mpReference->addCharactor(0xFFFF); } } /* 8023256C-80232600 22CEAC 0094+00 1/1 0/0 0/0 .text * do_color__35jmessage_string_tRenderingProcessorFUc */ -void jmessage_string_tRenderingProcessor::do_color(u8 param_0) { +void jmessage_string_tRenderingProcessor::do_color(u8 i_colorNo) { u32 ccColor; u32 gcColor; - if (param_0 == 0) { + if (i_colorNo == 0) { ccColor = ((jmessage_string_tReference*)getReference())->getCCColor(); gcColor = ((jmessage_string_tReference*)getReference())->getGCColor(); } else { - ccColor = getFontCCColorTable(param_0, 0); - gcColor = getFontGCColorTable(param_0, 0); + ccColor = getFontCCColorTable(i_colorNo, 0); + gcColor = getFontGCColorTable(i_colorNo, 0); } + char buffer[32]; sprintf(buffer, "\x1b" "CC[%08x]" "\x1b" "GC[%08x]", ccColor, gcColor); do_strcat(buffer); @@ -5297,42 +5196,44 @@ void jmessage_string_tRenderingProcessor::do_color(u8 param_0) { /* 80232600-80232690 22CF40 0090+00 1/1 0/0 0/0 .text * do_scale__35jmessage_string_tRenderingProcessorFf */ -void jmessage_string_tRenderingProcessor::do_scale(f32 param_0) { +void jmessage_string_tRenderingProcessor::do_scale(f32 i_scale) { J2DTextBox::TFontSize fontSize; mpReference->getPanePtr()->getFontSize(fontSize); - s16 local_60 = 0.5f + fontSize.mSizeX * param_0; - s16 local_58 = 0.5f + fontSize.mSizeY * param_0; + s16 scaleX = 0.5f + fontSize.mSizeX * i_scale; + s16 scaleY = 0.5f + fontSize.mSizeY * i_scale; + char buffer[32]; - sprintf(buffer, "\x1b" "FX[%d]" "\x1b" "FY[%d]", local_60, local_58); + sprintf(buffer, "\x1b" "FX[%d]" "\x1b" "FY[%d]", scaleX, scaleY); do_strcat(buffer); } /* 80232690-802326E4 22CFD0 0054+00 1/1 0/0 0/0 .text * do_linedown__35jmessage_string_tRenderingProcessorFs */ -void jmessage_string_tRenderingProcessor::do_linedown(s16 param_0) { +void jmessage_string_tRenderingProcessor::do_linedown(s16 i_lineNo) { char buffer[16]; - sprintf(buffer, "\x1B" "CD[%d]", param_0); + sprintf(buffer, "\x1B" "CD[%d]", i_lineNo); do_strcat(buffer); } /* 802326E4-802327BC 22D024 00D8+00 1/1 0/0 0/0 .text * do_numset__35jmessage_string_tRenderingProcessorFs */ -void jmessage_string_tRenderingProcessor::do_numset(s16 param_0) { - if (9999 < param_0) { - param_0 = 9999; +void jmessage_string_tRenderingProcessor::do_numset(s16 i_num) { + if (9999 < i_num) { + i_num = 9999; } - if (param_0 < 0) { - param_0 = 0; + if (i_num < 0) { + i_num = 0; } - do_outfont(getOutFontNumberType(param_0 / 1000)); - do_outfont(getOutFontNumberType(param_0 % 1000 / 100)); - do_outfont(getOutFontNumberType(param_0 % 100 / 10)); - do_outfont(getOutFontNumberType(param_0 % 10)); + + do_outfont(getOutFontNumberType(i_num / 1000)); + do_outfont(getOutFontNumberType(i_num % 1000 / 100)); + do_outfont(getOutFontNumberType(i_num % 100 / 10)); + do_outfont(getOutFontNumberType(i_num % 10)); } /* 802327BC-802327F8 22D0FC 003C+00 1/1 0/0 0/0 .text * push_word__35jmessage_string_tRenderingProcessorFPCc */ -void jmessage_string_tRenderingProcessor::push_word(char const* param_0) { - strcpy(field_0x486, param_0); +void jmessage_string_tRenderingProcessor::push_word(char const* i_word) { + strcpy(field_0x486, i_word); stack_pushCurrent(field_0x486); } diff --git a/src/d/d_msg_object.cpp b/src/d/d_msg_object.cpp index afe4f472ef..1c86837757 100644 --- a/src/d/d_msg_object.cpp +++ b/src/d/d_msg_object.cpp @@ -1784,8 +1784,11 @@ bool dMsgObject_c::isKanbanMessage() { } /* 802370E8-802370FC 231A28 0014+00 6/6 3/3 0/0 .text isHowlMessage__12dMsgObject_cFv */ -u8 dMsgObject_c::isHowlMessage() { - return mFukiKind == 17; +bool dMsgObject_c::isHowlMessage() { + if (mFukiKind == 17) { + return true; + } + return false; } /* 802370FC-80237138 231A3C 003C+00 3/3 2/2 0/0 .text isMidonaMessage__12dMsgObject_cFv diff --git a/src/d/d_msg_unit.cpp b/src/d/d_msg_unit.cpp index 26383285bc..731bb4cdc1 100644 --- a/src/d/d_msg_unit.cpp +++ b/src/d/d_msg_unit.cpp @@ -33,89 +33,94 @@ dMsgUnit_c::~dMsgUnit_c() {} /* 80238CEC-8023907C 23362C 0390+00 0/0 5/5 0/0 .text setTag__10dMsgUnit_cFiiPcb */ // NONMATCHING - regalloc -void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) { - *param_3 = 0; +void dMsgUnit_c::setTag(int i_type, int i_value, char* o_buffer, bool param_4) { + *o_buffer = 0; bool stack9 = false; bool stack8 = false; - int param_2b = param_2; - if (param_1 == 0x10000) { - sprintf(param_3, "%d", param_2); - } else if (param_1 == 0x10001) { - int tens_digit = param_2 / 10; - int ones_digit = param_2 % 10; - sprintf(param_3, "%d-%d", tens_digit, ones_digit); - } else if (param_1 == 4 && param_4 == true) { - int r6 = param_2 / 1000; - int r5 = r6 / 60; - r6 -= r5 * 60; - if (r5 > 99) { - r5 = 99; - r6 = 59; + int param_2b = i_value; + + if (i_type == 0x10000) { + sprintf(o_buffer, "%d", i_value); + } else if (i_type == 0x10001) { + int tens_digit = i_value / 10; + int ones_digit = i_value % 10; + sprintf(o_buffer, "%d-%d", tens_digit, ones_digit); + } else if (i_type == 4 && param_4 == true) { + int seconds = i_value / 1000; + int minutes = seconds / 60; + seconds -= minutes * 60; + if (minutes > 99) { + minutes = 99; + seconds = 59; } - if (r5 != 0 || r6 != 0) { - sprintf(param_3, "%d:%02d", r5, r6); + if (minutes != 0 || seconds != 0) { + sprintf(o_buffer, "%d:%02d", minutes, seconds); } - } else if (param_1 == 3 && param_4 == true) { + } else if (i_type == 3 && param_4 == true) { f32 iVar8b; f32 dayTime = g_env_light.getDaytime(); - f32 fVar1 = dayTime / 15.0f; + f32 hour = dayTime / 15.0f; + iVar8b = ((s32)(1000000.0f * dayTime) % 15000000) / 1000000.0f; - f32 iVar8c = 60.0f * (iVar8b / 15.0f); + f32 minute = 60.0f * (iVar8b / 15.0f); + iVar8b = ((s32)(1000000.0f * dayTime) % 250000) / 1000000.0f; f32 iVar9 = 60.0f * (iVar8b / 0.25f); - sprintf(param_3, "%d:%02d", (s32)(fVar1), (s32)iVar8c); + sprintf(o_buffer, "%d:%02d", (s32)hour, (s32)minute); } else { - if (param_1 == 9 && param_4 == true) { - int param_2c = param_2; - sprintf(param_3, "%d", param_2c); + if (i_type == 9 && param_4 == true) { + int value = i_value; + sprintf(o_buffer, "%d", value); stack8 = true; } if (!stack9) { - bmg_header_t* iVar9 = (bmg_header_t*)dMeter2Info_getMsgUnitResource(); - dMsgUnit_inf1_section_t* inf1 = NULL; - const void* dat1 = NULL; - str1_section_t* str1 = NULL; - int local_114 = sizeof(bmg_header_t); - u32 size = iVar9->size; - bmg_section_t* piVar12 = (bmg_section_t*)(((u8*)iVar9) + local_114); - for (; local_114 < size; local_114 += piVar12->size) { - switch(piVar12->magic) { + bmg_header_t* pHeader = (bmg_header_t*)dMeter2Info_getMsgUnitResource(); + dMsgUnit_inf1_section_t* pInfoBlock = NULL; + const void* pMsgDataBlock = NULL; + str1_section_t* pStrAttributeBlock = NULL; + int filepos = sizeof(bmg_header_t); + u32 filesize = pHeader->size; + bmg_section_t* pSection = (bmg_section_t*)(((u8*)pHeader) + filepos); + + for (; filepos < filesize; filepos += pSection->size) { + switch(pSection->magic) { case 'FLW1': break; case 'FLI1': break; case 'INF1': - inf1 = (dMsgUnit_inf1_section_t*)piVar12; + pInfoBlock = (dMsgUnit_inf1_section_t*)pSection; break; case 'DAT1': - dat1 = piVar12; + pMsgDataBlock = pSection; break; case 'STR1': - str1 = (str1_section_t*)piVar12; + pStrAttributeBlock = (str1_section_t*)pSection; break; } - piVar12 = (bmg_section_t*)((u8*)piVar12 + piVar12->size); + pSection = (bmg_section_t*)((u8*)pSection + pSection->size); } // This section is weird. The debug seems like entriesStr is outside the condition - // but the normal build doesn't really work with that. Same for inf1->entries. + // but the normal build doesn't really work with that. Same for pInfoBlock->entries. #ifdef DEBUG - dMsgUnit_inf1_entry* entry = &inf1->entries[param_1]; + dMsgUnit_inf1_entry* entry = &pInfoBlock->entries[i_type]; u32 dat1EntryOffset = entry->dat1EntryOffset; u16 startFrame = entry->startFrame; u16 endFrame = entry->endFrame; - const char* entriesStr = str1->entries->str; + const char* entriesStr = pStrAttributeBlock->entries->str; #else - u16 startFrame = inf1->entries[param_1].startFrame; - u16 endFrame = inf1->entries[param_1].endFrame; + u16 startFrame = pInfoBlock->entries[i_type].startFrame; + u16 endFrame = pInfoBlock->entries[i_type].endFrame; const char* entriesStr; #endif + const char* uVar5; - if (param_2 == 1 + if (i_value == 1 #ifdef DEBUG - || (dComIfGs_getPalLanguage() == 3 && param_2 == 0) + || (dComIfGs_getPalLanguage() == 3 && i_value == 0) #endif ) { #ifdef DEBUG @@ -123,26 +128,29 @@ void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) { } else { uVar5 = entriesStr + startFrame; #else - uVar5 = str1->entries->str + endFrame; + uVar5 = pStrAttributeBlock->entries->str + endFrame; } else { - uVar5 = str1->entries->str + startFrame; + uVar5 = pStrAttributeBlock->entries->str + startFrame; #endif } + if (strcmp(uVar5, "") == 0) { - sprintf(param_3, "%d%s", param_2, uVar5); + sprintf(o_buffer, "%d%s", i_value, uVar5); } else { - sprintf(param_3, "%d %s", param_2, uVar5); + sprintf(o_buffer, "%d %s", i_value, uVar5); } } - if (param_1 == 3 && param_4 == true) { - char acStack_d8[20]; - setTag(4, 0, acStack_d8, false); - strcat(param_3, acStack_d8); + + if (i_type == 3 && param_4 == true) { + char buffer[20]; + setTag(4, 0, buffer, false); + strcat(o_buffer, buffer); } - if (param_1 == 4 && param_4 == true) { - char acStack_ec[20]; - setTag(5, param_2b, acStack_ec, false); - strcat(param_3, acStack_ec); + + if (i_type == 4 && param_4 == true) { + char buffer[20]; + setTag(5, param_2b, buffer, false); + strcat(o_buffer, buffer); } } }