diff options
| author | Caroline Madsen <69010899+randomsalience@users.noreply.github.com> | 2025-04-09 16:45:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-09 13:45:30 -0700 |
| commit | c6f76e7240dde8bbcf40a88d6d88cf87cab616b4 (patch) | |
| tree | bf9afbb1c32e66f45bdba30f61a9e4f0d92f804a /src/JSystem/JMessage | |
| parent | 6672817e41064e04951ec28d51070b66fc8377ac (diff) | |
Various JSystem work (#2383)
* JKernel and JStudio cleanup
* JMessage cleanup
* JAudio cleanup
* JASBNKParser work
* functionvalue work
* fvb work
* J2D and J3D cleanup
* steal from tww
* J2DPictureEx mostly done
* fix build
Diffstat (limited to 'src/JSystem/JMessage')
| -rw-r--r-- | src/JSystem/JMessage/control.cpp | 19 | ||||
| -rw-r--r-- | src/JSystem/JMessage/locale.cpp | 66 | ||||
| -rw-r--r-- | src/JSystem/JMessage/processor.cpp | 161 | ||||
| -rw-r--r-- | src/JSystem/JMessage/resource.cpp | 112 |
4 files changed, 77 insertions, 281 deletions
diff --git a/src/JSystem/JMessage/control.cpp b/src/JSystem/JMessage/control.cpp index 4df07dd994..321de9a6a2 100644 --- a/src/JSystem/JMessage/control.cpp +++ b/src/JSystem/JMessage/control.cpp @@ -5,24 +5,6 @@ #include "JSystem/JMessage/control.h" -// -// External References: -// - -extern "C" void reset__Q28JMessage10TProcessorFv(); -extern "C" void getResource_groupID__Q28JMessage10TProcessorCFUs(); -extern "C" void toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb(); -extern "C" void process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process__Q28JMessage18TSequenceProcessorFPCc(); -extern "C" void process__Q28JMessage19TRenderingProcessorFPCc(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); - -// -// Declarations: -// - /* 802A7548-802A758C 2A1E88 0044+00 0/0 2/2 0/0 .text __ct__Q28JMessage8TControlFv */ JMessage::TControl::TControl() : pSequenceProcessor_(NULL), pRenderingProcessor_(NULL), messageCode_(0xFFFF), @@ -66,7 +48,6 @@ int JMessage::TControl::update() { } /* 802A76BC-802A77E8 2A1FFC 012C+00 0/0 5/5 0/0 .text render__Q28JMessage8TControlFv */ -// NONMATCHING void JMessage::TControl::render() { if (isReady_render_()) { pRenderingProcessor_->setBegin_messageEntryText(pResourceCache_, pEntry_, field_0x20); diff --git a/src/JSystem/JMessage/locale.cpp b/src/JSystem/JMessage/locale.cpp index ad40686faa..93ea6af5ea 100644 --- a/src/JSystem/JMessage/locale.cpp +++ b/src/JSystem/JMessage/locale.cpp @@ -6,39 +6,16 @@ #include "JSystem/JMessage/locale.h" #include <dolphin.h> -// -// Forward References: -// - -extern "C" void parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc(); -extern "C" void parseCharacter_UTF8__Q28JMessage6localeFPPCc(); - -// -// External References: -// - -// -// Declarations: -// - /* 802A9528-802A958C 2A3E68 0064+00 0/0 1/0 0/0 .text * parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc */ -// NONMATCHING int JMessage::locale::parseCharacter_ShiftJIS(char const** str) { - int c; - int ret; - u8* temp_r4_2; - u8* temp_r5; - - temp_r5 = (u8*)*str; - c = *temp_r5; - ret = c; - + u8 c = **str; + int ret = c; *str = *str + 1; if (isLeadByte_ShiftJIS(c)) { - temp_r4_2 = (u8*)*str; - ret = (c << 8) | *temp_r4_2; + ret <<= 8; + ret |= *(u8*)*str; *str = *str + 1; } @@ -47,6 +24,37 @@ int JMessage::locale::parseCharacter_ShiftJIS(char const** str) { /* 802A958C-802A968C 2A3ECC 0100+00 0/0 1/0 0/0 .text parseCharacter_UTF8__Q28JMessage6localeFPPCc */ -int JMessage::locale::parseCharacter_UTF8(char const** param_0) { - // NONMATCHING +int JMessage::locale::parseCharacter_UTF8(char const** str) { + int c = *(u8*)*str; + int ret = c; + *str = *str + 1; + + 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; + } else { + ret = -1; + } + } + + return ret; } diff --git a/src/JSystem/JMessage/processor.cpp b/src/JSystem/JMessage/processor.cpp index fe33fcddd7..7df27c1ada 100644 --- a/src/JSystem/JMessage/processor.cpp +++ b/src/JSystem/JMessage/processor.cpp @@ -7,102 +7,6 @@ #include "JSystem/JMessage/control.h" #include "JSystem/JUtility/JUTAssert.h" -// -// Forward References: -// - -extern "C" void __dt__Q28JMessage10TReferenceFv(); -extern "C" bool do_word__Q28JMessage10TReferenceCFUl(); -extern "C" void __dt__Q28JMessage10TProcessorFv(); -extern "C" void reset__Q28JMessage10TProcessorFv(); -extern "C" void stack_pushCurrent__Q28JMessage10TProcessorFPCc(); -extern "C" void stack_popCurrent__Q28JMessage10TProcessorFv(); -extern "C" void getResource_groupID__Q28JMessage10TProcessorCFUs(); -extern "C" void toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb(); -extern "C" void on_select_begin__Q28JMessage10TProcessorFPFPQ28JMessage10TProcessor_PCcPCvPCcUl(); -extern "C" void on_select_end__Q28JMessage10TProcessorFv(); -extern "C" void on_select_separate__Q28JMessage10TProcessorFv(); -extern "C" void do_reset__Q28JMessage10TProcessorFv(); -extern "C" void do_begin__Q28JMessage10TProcessorFPCvPCc(); -extern "C" void do_end__Q28JMessage10TProcessorFv(); -extern "C" void do_character__Q28JMessage10TProcessorFi(); -extern "C" bool do_tag__Q28JMessage10TProcessorFUlPCvUl(); -extern "C" void do_select_begin__Q28JMessage10TProcessorFUl(); -extern "C" void do_select_end__Q28JMessage10TProcessorFv(); -extern "C" void do_select_separate__Q28JMessage10TProcessorFv(); -extern "C" void on_tag___Q28JMessage10TProcessorFv(); -extern "C" void do_resetStatus___Q28JMessage10TProcessorFPCc(); -extern "C" bool do_setBegin_isReady___Q28JMessage10TProcessorCFv(); -extern "C" void do_tag___Q28JMessage10TProcessorFUlPCvUl(); -extern "C" void process_character___Q28JMessage10TProcessorFv(); -extern "C" void process_onCharacterEnd_normal___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process_onCharacterEnd_select___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor(); -extern "C" void -__ct__Q28JMessage18TSequenceProcessorFPCQ28JMessage10TReferencePQ28JMessage8TControl(); -extern "C" void __dt__Q28JMessage18TSequenceProcessorFv(); -extern "C" void process__Q28JMessage18TSequenceProcessorFPCc(); -extern "C" void on_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" void -on_jump_register__Q28JMessage18TSequenceProcessorFPFPCQ28JMessage18TSequenceProcessor_PCvUl(); -extern "C" void on_jump_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" void on_jump__Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" void -on_branch_register__Q28JMessage18TSequenceProcessorFPFPCQ28JMessage18TSequenceProcessorUl_PCvPCvUl(); -extern "C" void on_branch_query__Q28JMessage18TSequenceProcessorFUl(); -extern "C" void on_branch_queryResult__Q28JMessage18TSequenceProcessorFv(); -extern "C" void on_branch__Q28JMessage18TSequenceProcessorFPCvPCc(); -extern "C" bool do_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" bool do_jump_isReady__Q28JMessage18TSequenceProcessorFv(); -extern "C" void do_jump__Q28JMessage18TSequenceProcessorFPCvPCc(); -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 process_setMessageIndex_reserved___Q28JMessage18TSequenceProcessorFUs(); -extern "C" void -process_setMessageCode___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUsUs(); -extern "C" void -process_onJump_limited___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessor(); -extern "C" void -process_onJump___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessor(); -extern "C" void -process_onBranch_limited___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUl(); -extern "C" void -process_onBranch___Q28JMessage18TSequenceProcessorFPCQ28JMessage18TSequenceProcessorUl(); -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 on_message__Q28JMessage10TProcessorCFUl(); -extern "C" void getMessageText_messageCode__Q28JMessage10TProcessorCFUl(); - -// -// External References: -// - -extern "C" void setMessageCode_inSequence___Q28JMessage8TControlFPCQ28JMessage10TProcessorUsUs(); -extern "C" void toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb(); -extern "C" void Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); - -// -// Declarations: -// - /* 802A7AF8-802A7B40 2A2438 0048+00 1/0 2/2 0/0 .text __dt__Q28JMessage10TReferenceFv */ JMessage::TReference::~TReference() {} @@ -152,13 +56,14 @@ const JMessage::TResource* JMessage::TProcessor::getResource_groupID(u16 groupID /* 802A7CD4-802A7E38 2A2614 0164+00 0/0 1/1 0/0 .text * toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb */ -// NONMATCHING - TContainerEnumerator_const stack issues -u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, - bool* param_2) const { +// NONMATCHING regalloc +u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, bool* param_2) const { const TResource* this_00 = getResourceCache(); - u16 uVar4; - if (this_00 != NULL && (uVar4 = this_00->toMessageIndex_messageID(param_0, param_1, param_2)) != 0xffff) { - return uVar4 | (this_00->getGroupID() << 16); + 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); + } } TResourceContainer* this_01 = getResourceContainer(); if (this_01 == NULL) { @@ -167,13 +72,15 @@ u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, JGadget::TContainerEnumerator_const<JMessage::TResource, 0> enumerator(this_01->getResourceContainer()); const TResource* this_02; - while (!enumerator) { + while (enumerator) { this_02 = (const TResource*)&(*enumerator); - if (this_02 == this_00 || (uVar4 = this_02->toMessageIndex_messageID(param_0, param_1, param_2)) == 0xffff) { - continue; + 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); + } } - ((JMessage::TProcessor*)this)->pResourceCache_ = this_02; - return uVar4 | (this_02->getGroupID() << 0x10); } return -1; } @@ -280,11 +187,11 @@ void JMessage::TProcessor::do_tag_(u32 uTag, void const* data, u32 uSize) { switch (code) { case 4: stack_pushCurrent( - on_word(JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse(data))); + on_word(JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(data))); break; case 5: stack_pushCurrent(on_message( - JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse(data))); + JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(data))); break; } break; @@ -353,7 +260,7 @@ 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<u16, TParseValue_endian_big_>::parse((u16*)pThis->oProcess_.rData.pOffset); + u16 data = JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse((u16*)pThis->oProcess_.rData.pOffset); pThis->oProcess_.rData.pOffset = (void*)((u8*)pThis->oProcess_.rData.pOffset + 2); @@ -364,7 +271,7 @@ const char* JMessage::TProcessor::process_onSelect_limited_(JMessage::TProcessor /* 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<u32, TParseValue_endian_big_>::parse((u32*)pThis->oProcess_.rData.pOffset); + u32 data = JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse((u32*)pThis->oProcess_.rData.pOffset); pThis->oProcess_.rData.pOffset = (void*)((u8*)pThis->oProcess_.rData.pOffset + 4); @@ -388,7 +295,7 @@ const char* JMessage::TSequenceProcessor::process(char const* param_0) { switch (eStatus_) { case STATUS_NORMAL: break; - case STATUS_JUMP: + case STATUS_JUMP: { if (!on_jump_isReady()) { return pszCurrent_; } @@ -399,6 +306,7 @@ const char* JMessage::TSequenceProcessor::process(char const* param_0) { on_jump(data, pControl_->getMessageText_begin()); } break; + } case STATUS_BRANCH: u32 tmp = on_branch_queryResult(); if (tmp > 0x7FFFFFFF) { @@ -564,10 +472,11 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize case 2: case 3: break; - case 6: - u32 tmp = JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse(temp); + case 6: { + u32 tmp = JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(temp); on_jump_register(process_onJump_, tmp); break; + } case 7: break; default: @@ -589,12 +498,12 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize break; case 0xF8: on_branch_register(process_onBranch_limited_, temp + 2, - JGadget::binary::TParseValue<u16, TParseValue_endian_big_>::parse(temp)); + JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(temp)); on_branch_query(code); break; case 0xF7: on_branch_register(process_onBranch_, temp + 2, - JGadget::binary::TParseValue<u16, TParseValue_endian_big_>::parse(temp)); + JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(temp)); on_branch_query(code); break; default: @@ -608,9 +517,10 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize // NONMATCHING void JMessage::TSequenceProcessor::process_setMessageIndex_reserved_(u16 u16Index) { JUT_ASSERT(890, u16Index >= 0xff00); - if (u16Index != -1) { + switch (u16Index) { + case 0xffff: return; - } + } } /* 802A8944-802A89B8 2A3284 0074+00 4/4 0/0 0/0 .text @@ -651,7 +561,7 @@ const void* JMessage::TSequenceProcessor::process_onBranch_limited_(JMessage::TSequenceProcessor const* param_0, u32 uTargetIndex) { return process_setMessageIndex_( - param_0, JGadget::binary::TParseValue<u16, TParseValue_endian_big_>::parse( + param_0, JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse( param_0->oProcess2_.process.branch_process.pTarget, uTargetIndex)); } @@ -661,7 +571,7 @@ const void* JMessage::TSequenceProcessor::process_onBranch_(JMessage::TSequenceProcessor const* param_0, u32 uTargetIndex) { return process_setMessageCode_( - param_0, JGadget::binary::TParseValue<u32, TParseValue_endian_big_>::parse( + param_0, JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse( param_0->oProcess2_.process.branch_process.pTarget, uTargetIndex)); } @@ -729,14 +639,3 @@ void JMessage::TRenderingProcessor::do_tag_(u32 uTag, void const* data, u32 uSiz break; } } - -/* 802A8C24-802A8C44 2A3564 0020+00 1/1 0/0 0/0 .text on_message__Q28JMessage10TProcessorCFUl */ -const char* JMessage::TProcessor::on_message(u32 param_0) const { - return getMessageText_messageCode(param_0); -} - -/* 802A8C44-802A8CDC 2A3584 0098+00 1/1 0/0 0/0 .text - * getMessageText_messageCode__Q28JMessage10TProcessorCFUl */ -const char* JMessage::TProcessor::getMessageText_messageCode(u32 param_0) const { - return getMessageText_messageCode(param_0 >> 0x10, param_0 & 0xFFFF); -} diff --git a/src/JSystem/JMessage/resource.cpp b/src/JSystem/JMessage/resource.cpp index 7c829f5ab7..b3fac0ab0d 100644 --- a/src/JSystem/JMessage/resource.cpp +++ b/src/JSystem/JMessage/resource.cpp @@ -4,71 +4,15 @@ // #include "JSystem/JMessage/resource.h" +#include "JSystem/JGadget/search.h" #include <algorithm.h> -#include "dol2asm.h" #include "string.h" -// -// Types: -// - -namespace std { -template <typename A1, typename B1> -void lower_bound(/* ... */); -/* 802A94D4 */ /* std::lower_bound<u32 const*, u32> */ -void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&); -}; // namespace std - -// -// Forward References: -// - -extern "C" void toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb(); -extern "C" void __ct__Q38JMessage18TResourceContainer10TCResourceFv(); -extern "C" void __dt__Q38JMessage18TResourceContainer10TCResourceFv(); -extern "C" void Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs(); -extern "C" void Do_create__Q38JMessage18TResourceContainer10TCResourceFv(); -extern "C" void Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource(); -extern "C" void __ct__Q28JMessage18TResourceContainerFv(); -extern "C" void setEncoding__Q28JMessage18TResourceContainerFUc(); -extern "C" void setEncoding___Q28JMessage18TResourceContainerFUc(); -extern "C" void __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer(); -extern "C" void __dt__Q28JMessage6TParseFv(); -extern "C" void parseHeader_next__Q28JMessage6TParseFPPCvPUlUl(); -extern "C" void parseBlock_next__Q28JMessage6TParseFPPCvPUlUl(); -extern "C" void parseCharacter_1Byte__Q28JMessage6localeFPPCc(); -extern "C" void parseCharacter_2Byte__Q28JMessage6localeFPPCc(); -extern "C" void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&); -extern "C" void* sapfnParseCharacter___Q28JMessage18TResourceContainer[5]; - -// -// External References: -// - -extern "C" void parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc(); -extern "C" void parseCharacter_UTF8__Q28JMessage6localeFPPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv(); -extern "C" void __dt__Q27JGadget13TNodeLinkListFv(); -extern "C" void -Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode(); -extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5]; -extern "C" f32 ga4cSignature__Q28JMessage4data[1 + 1 /* padding */]; - -// -// Declarations: -// - /* 802A8CDC-802A8EC0 2A361C 01E4+00 0/0 1/1 0/0 .text * toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb */ -// NONMATCHING - instruction order u16 JMessage::TResource::toMessageIndex_messageID(u32 lowerHalf, u32 upperHalf, bool* isMsgValid) const { - if (!mMessageID.get()) { + if (!mMessageID.getRaw()) { return 0xFFFF; } @@ -118,21 +62,19 @@ u16 JMessage::TResource::toMessageIndex_messageID(u32 lowerHalf, u32 upperHalf, return 0xFFFF; } - const u32* first = (u32*)mMessageID.getContent(); - const u32* last = (u32*)(first + mMessageID.get_number()); + int number = mMessageID.get_number(); + const u32* first = mMessageID.getContent(); + const u32* last = first + number; const u32* lower; if (mMessageID.get_isOrdered()) { - lower = std::lower_bound<const u32*, u32>(first, last, val); + lower = std::lower_bound(first, last, val); if (lower == last || *lower != val) { return 0xFFFF; } } else { - lower = first; - while (lower != last && *lower != val) { - lower++; - } + lower = std::find(first, last, val); if (lower == last) { return 0xFFFF; } @@ -150,41 +92,12 @@ JMessage::locale::parseCharacter_function JMessage::TResourceContainer::sapfnPar JMessage::locale::parseCharacter_UTF8, }; -/* 803C9C94-803C9CA8 026DB4 0014+00 2/2 0/0 0/0 .data __vt__Q28JMessage6TParse */ -SECTION_DATA extern void* __vt__Q28JMessage6TParse[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q28JMessage6TParseFv, - (void*)parseHeader_next__Q28JMessage6TParseFPPCvPUlUl, - (void*)parseBlock_next__Q28JMessage6TParseFPPCvPUlUl, -}; - -/* 803C9CA8-803C9CBC 026DC8 0014+00 2/2 0/0 0/0 .data - * __vt__Q38JMessage18TResourceContainer10TCResource */ -SECTION_DATA extern void* __vt__Q38JMessage18TResourceContainer10TCResource[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q38JMessage18TResourceContainer10TCResourceFv, - (void*)Do_create__Q38JMessage18TResourceContainer10TCResourceFv, - (void*)Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource, -}; - -/* 803C9CBC-803C9CD0 026DDC 0014+00 2/2 0/0 0/0 .data - * __vt__Q27JGadget42TLinkList_factory<Q28JMessage9TResource,0> */ -SECTION_DATA extern void* data_803C9CBC[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, -}; - /* 802A8EC0-802A8EF8 2A3800 0038+00 1/1 0/0 0/0 .text * __ct__Q38JMessage18TResourceContainer10TCResourceFv */ -// need to fix TLinkList_factory vtable stuff -JMessage::TResourceContainer::TCResource::TCResource() { - // NONMATCHING -} +JMessage::TResourceContainer::TCResource::TCResource() {} /* 802A8EF8-802A8F6C 2A3838 0074+00 1/0 2/2 0/0 .text * __dt__Q38JMessage18TResourceContainer10TCResourceFv */ -// need to fix TLinkList_factory vtable stuff JMessage::TResourceContainer::TCResource::~TCResource() {} /* 802A8F6C-802A8FFC 2A38AC 0090+00 0/0 1/1 0/0 .text @@ -209,6 +122,7 @@ JMessage::TResource* JMessage::TResourceContainer::TCResource::Do_create() { /* 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; } @@ -247,7 +161,7 @@ JMessage::TParse::~TParse() {} /* 802A91B8-802A92F4 2A3AF8 013C+00 1/0 0/0 0/0 .text * parseHeader_next__Q28JMessage6TParseFPPCvPUlUl */ -// NONMATCHING +// NONMATCHING regalloc, missing clrlwi bool JMessage::TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_out, u32 param_2) { const void* pData = *ppData_inout; @@ -317,9 +231,3 @@ int JMessage::locale::parseCharacter_2Byte(char const** string) { return parse_char; } - -/* 802A94D4-802A9528 2A3E14 0054+00 1/1 0/0 0/0 .text lower_bound<PCUl,Ul>__3stdFPCUlPCUlRCUl */ -/* extern "C" void func_802A94D4(void* _this, u32 const* param_0, u32 const* param_1, - u32 const& param_2) { - // NONMATCHING -} */ |
