diff --git a/asm/JSystem/JMessage/processor/do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl.s b/asm/JSystem/JMessage/processor/do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl.s deleted file mode 100644 index b4875891c96..00000000000 --- a/asm/JSystem/JMessage/processor/do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_802A8BAC: -/* 802A8BAC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802A8BB0 7C 08 02 A6 */ mflr r0 -/* 802A8BB4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802A8BB8 54 80 86 3E */ rlwinm r0, r4, 0x10, 0x18, 0x1f -/* 802A8BBC 54 87 04 3E */ clrlwi r7, r4, 0x10 -/* 802A8BC0 2C 00 00 FF */ cmpwi r0, 0xff -/* 802A8BC4 41 82 00 1C */ beq lbl_802A8BE0 -/* 802A8BC8 40 80 00 48 */ bge lbl_802A8C10 -/* 802A8BCC 2C 00 00 FD */ cmpwi r0, 0xfd -/* 802A8BD0 40 80 00 40 */ bge lbl_802A8C10 -/* 802A8BD4 2C 00 00 F7 */ cmpwi r0, 0xf7 -/* 802A8BD8 40 80 00 3C */ bge lbl_802A8C14 -/* 802A8BDC 48 00 00 34 */ b lbl_802A8C10 -lbl_802A8BE0: -/* 802A8BE0 2C 07 00 06 */ cmpwi r7, 6 -/* 802A8BE4 40 80 00 18 */ bge lbl_802A8BFC -/* 802A8BE8 2C 07 00 04 */ cmpwi r7, 4 -/* 802A8BEC 40 80 00 1C */ bge lbl_802A8C08 -/* 802A8BF0 2C 07 00 00 */ cmpwi r7, 0 -/* 802A8BF4 40 80 00 20 */ bge lbl_802A8C14 -/* 802A8BF8 48 00 00 10 */ b lbl_802A8C08 -lbl_802A8BFC: -/* 802A8BFC 2C 07 00 08 */ cmpwi r7, 8 -/* 802A8C00 40 80 00 08 */ bge lbl_802A8C08 -/* 802A8C04 48 00 00 10 */ b lbl_802A8C14 -lbl_802A8C08: -/* 802A8C08 4B FF F4 89 */ bl do_tag___Q28JMessage10TProcessorFUlPCvUl -/* 802A8C0C 48 00 00 08 */ b lbl_802A8C14 -lbl_802A8C10: -/* 802A8C10 4B FF F4 81 */ bl do_tag___Q28JMessage10TProcessorFUlPCvUl -lbl_802A8C14: -/* 802A8C14 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802A8C18 7C 08 03 A6 */ mtlr r0 -/* 802A8C1C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802A8C20 4E 80 00 20 */ blr diff --git a/asm/JSystem/JMessage/processor/getResource_groupID__Q28JMessage10TProcessorCFUs.s b/asm/JSystem/JMessage/processor/getResource_groupID__Q28JMessage10TProcessorCFUs.s deleted file mode 100644 index 2a31f61e71f..00000000000 --- a/asm/JSystem/JMessage/processor/getResource_groupID__Q28JMessage10TProcessorCFUs.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_802A7C54: -/* 802A7C54 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802A7C58 7C 08 02 A6 */ mflr r0 -/* 802A7C5C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802A7C60 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802A7C64 7C 7F 1B 78 */ mr r31, r3 -/* 802A7C68 38 C0 00 00 */ li r6, 0 -/* 802A7C6C 80 63 00 08 */ lwz r3, 8(r3) -/* 802A7C70 28 03 00 00 */ cmplwi r3, 0 -/* 802A7C74 41 82 00 1C */ beq lbl_802A7C90 -/* 802A7C78 80 A3 00 0C */ lwz r5, 0xc(r3) -/* 802A7C7C A0 A5 00 0C */ lhz r5, 0xc(r5) -/* 802A7C80 54 80 04 3E */ clrlwi r0, r4, 0x10 -/* 802A7C84 7C 00 28 40 */ cmplw r0, r5 -/* 802A7C88 40 82 00 08 */ bne lbl_802A7C90 -/* 802A7C8C 38 C0 00 01 */ li r6, 1 -lbl_802A7C90: -/* 802A7C90 54 C0 06 3F */ clrlwi. r0, r6, 0x18 -/* 802A7C94 41 82 00 08 */ beq lbl_802A7C9C -/* 802A7C98 48 00 00 28 */ b lbl_802A7CC0 -lbl_802A7C9C: -/* 802A7C9C 80 7F 00 04 */ lwz r3, 4(r31) -/* 802A7CA0 80 63 00 04 */ lwz r3, 4(r3) -/* 802A7CA4 28 03 00 00 */ cmplwi r3, 0 -/* 802A7CA8 40 82 00 0C */ bne lbl_802A7CB4 -/* 802A7CAC 38 60 00 00 */ li r3, 0 -/* 802A7CB0 48 00 00 0C */ b lbl_802A7CBC -lbl_802A7CB4: -/* 802A7CB4 38 63 00 08 */ addi r3, r3, 8 -/* 802A7CB8 48 00 12 B5 */ bl Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs -lbl_802A7CBC: -/* 802A7CBC 90 7F 00 08 */ stw r3, 8(r31) -lbl_802A7CC0: -/* 802A7CC0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802A7CC4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802A7CC8 7C 08 03 A6 */ mtlr r0 -/* 802A7CCC 38 21 00 10 */ addi r1, r1, 0x10 -/* 802A7CD0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JMessage/processor/process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s b/asm/JSystem/JMessage/processor/process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s deleted file mode 100644 index db4bd818813..00000000000 --- a/asm/JSystem/JMessage/processor/process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_802A8358: -/* 802A8358 80 A3 00 30 */ lwz r5, 0x30(r3) -/* 802A835C 80 85 00 00 */ lwz r4, 0(r5) -/* 802A8360 38 05 00 04 */ addi r0, r5, 4 -/* 802A8364 90 03 00 30 */ stw r0, 0x30(r3) -/* 802A8368 80 03 00 2C */ lwz r0, 0x2c(r3) -/* 802A836C 7C 60 22 14 */ add r3, r0, r4 -/* 802A8370 4E 80 00 20 */ blr diff --git a/asm/JSystem/JMessage/processor/process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s b/asm/JSystem/JMessage/processor/process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s deleted file mode 100644 index 6e122a82b0f..00000000000 --- a/asm/JSystem/JMessage/processor/process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_802A833C: -/* 802A833C 80 A3 00 30 */ lwz r5, 0x30(r3) -/* 802A8340 A0 85 00 00 */ lhz r4, 0(r5) -/* 802A8344 38 05 00 02 */ addi r0, r5, 2 -/* 802A8348 90 03 00 30 */ stw r0, 0x30(r3) -/* 802A834C 80 03 00 2C */ lwz r0, 0x2c(r3) -/* 802A8350 7C 60 22 14 */ add r3, r0, r4 -/* 802A8354 4E 80 00 20 */ blr diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index f322a59046a..932f0f27054 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -31,6 +31,12 @@ struct TNodeLinkList { struct const_iterator { const_iterator(TLinkListNode* pNode) { node = pNode; } const_iterator(const const_iterator& iter) { *this = iter; } + const_iterator(iterator iter) { *this = iter; } + TLinkListNode* operator->() const { return node; } + const_iterator& operator++() { + node = node->getNext(); + return *this; + } TLinkListNode* node; }; @@ -74,11 +80,25 @@ struct TLinkList : public TNodeLinkList { iterator(TNodeLinkList::iterator iter) : TNodeLinkList::iterator(iter) {} }; - TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; } + struct const_iterator : TNodeLinkList::const_iterator { + const_iterator(TNodeLinkList::const_iterator iter) : TNodeLinkList::const_iterator(iter) {} + const_iterator(iterator iter) : TNodeLinkList::const_iterator(iter) {} + const T* operator->() const { + return Element_toValue(TNodeLinkList::const_iterator::operator->()); + } + const T& operator*() const { return *operator->();} + const_iterator& operator++() { + TNodeLinkList::const_iterator::operator++(); + return *this; + } + }; - void Insert(TLinkList::iterator iter, T* element) { + TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; } + static T* Element_toValue(TLinkListNode* node) { return (T*)node; } + + iterator Insert(TLinkList::iterator iter, T* element) { TLinkListNode* node = Element_toNode(element); - TNodeLinkList::Insert(iter, node); + return TNodeLinkList::Insert(iter, node); } iterator Erase(T* element) { @@ -92,18 +112,36 @@ struct TLinkList : public TNodeLinkList { return iter; } + TLinkList::const_iterator end() const { + return TLinkList::const_iterator(((TLinkList*)this)->end()); + } + TLinkList::iterator begin() { TNodeLinkList::iterator node_iter = TNodeLinkList::begin(); TLinkList::iterator iter(node_iter); return iter; } + TLinkList::const_iterator begin() const { + return TLinkList::const_iterator(((TLinkList*)this)->begin()); + } + void Push_back(T* element) { TLinkList::iterator iter(TLinkList::end()); this->Insert(iter, element); } }; +template +bool operator==(const typename TLinkList::const_iterator iter1, const typename TLinkList::const_iterator iter2) { + return iter1->node == iter2->node; +} + +template +bool operator!=(const typename TLinkList::const_iterator iter1, const typename TLinkList::const_iterator iter2) { + return !(iter1 == iter2); +} + template struct TLinkList_factory : public TLinkList { virtual ~TLinkList_factory() {} @@ -113,12 +151,27 @@ struct TLinkList_factory : public TLinkList { template struct TEnumerator { - TLinkList field_0x0; - TLinkList field_0x4; + inline TEnumerator(typename TLinkList::const_iterator _current, typename TLinkList::const_iterator _end) : + current(_current), end(_end) + {} + + bool isEnd() const { return current.node == end.node; } + operator bool() const { return isEnd(); } + T& operator*() { + T& rv = (T&)*current; + ++current; + return rv; + } + + TLinkList::const_iterator current; + TLinkList::const_iterator end; }; template -struct TContainerEnumerator_const : public TEnumerator {}; +struct TContainerEnumerator_const : public TEnumerator { + inline TContainerEnumerator_const(const T* param_0) : TEnumerator(param_0->begin(), param_0->end()) + {} +}; }; // namespace JGadget diff --git a/include/JSystem/JMessage/data.h b/include/JSystem/JMessage/data.h index 1b474168837..ab1532b8efa 100644 --- a/include/JSystem/JMessage/data.h +++ b/include/JSystem/JMessage/data.h @@ -43,8 +43,8 @@ struct data { TParse_TBlock_color(const void* data) : TParse_TBlock(data) {} }; - static u16 getTagCode(u32 tag) { return tag & 0xFFFF; } - static u8 getTagGroup(u32 tag) { return (tag >> 0x10) & 0xFF; } + static u32 getTagCode(u32 tag) { return tag & 0xFFFF; } + static u32 getTagGroup(u32 tag) { return (tag >> 0x10) & 0xFF; } static u32 ga4cSignature; diff --git a/include/JSystem/JMessage/processor.h b/include/JSystem/JMessage/processor.h index 4b7190ed8c4..20678170a4e 100644 --- a/include/JSystem/JMessage/processor.h +++ b/include/JSystem/JMessage/processor.h @@ -24,6 +24,8 @@ struct TReference { return pcResource_->getResource_groupID(groupID); } + TResourceContainer* getResourceContainer() const { return pcResource_; } + /* 0x4 */ TResourceContainer* pcResource_; }; @@ -192,6 +194,14 @@ struct TProcessor { return pResourceCache_ != NULL && groupID == pResourceCache_->getGroupID(); } + TResourceContainer* getResourceContainer() const { + if (pReference_ == NULL) { + return NULL; + } + + return pReference_->getResourceContainer(); + } + /* 0x04 */ const TReference* pReference_; /* 0x08 */ const TResource* pResourceCache_; /* 0x0C */ const char* pszCurrent_; diff --git a/include/JSystem/JMessage/resource.h b/include/JSystem/JMessage/resource.h index a2ebe79f387..61c2bb2fadf 100644 --- a/include/JSystem/JMessage/resource.h +++ b/include/JSystem/JMessage/resource.h @@ -7,11 +7,11 @@ #include "JSystem/JStudio/JStudio/fvb-data.h" namespace JMessage { -struct TResource : public JGadget::TLinkListNode { +struct TResource { TResource() : field_0x8(NULL), field_0xc(NULL), field_0x10(NULL), field_0x14(0), field_0x18(NULL) {} - /* 802A8CDC */ void toMessageIndex_messageID(u32, u32, bool*) const; + /* 802A8CDC */ u16 toMessageIndex_messageID(u32, u32, bool*) const; bool isContained_messageIndex(u16 messageIndex) const { return messageIndex < getMessageEntryNumber(); @@ -46,7 +46,7 @@ struct TResource : public JGadget::TLinkListNode { void setData_header(const void* pData) { field_0x8.setRaw(pData); } - + JGadget::TLinkListNode ocObject_; /* 0x08 */ data::TParse_THeader field_0x8; /* 0x0C */ data::TParse_TBlock_info field_0xc; /* 0x10 */ char* field_0x10; @@ -81,7 +81,8 @@ struct TResourceContainer { TResource* getResource_groupID(u16 groupID) { return resContainer_.Get_groupID(groupID); } TResource* getResource_groupID(u16 groupID) const { return getResource_groupID(groupID); } - bool isEncodingSettable(u8 e) const { return mEncodingType == e || e == 0; } + bool isEncodingSettable(u8 e) const { return mEncodingType == e || mEncodingType == 0; } + const TCResource* getResourceContainer() const { return &resContainer_; } static JMessage::locale::parseCharacter_function sapfnParseCharacter_[5]; diff --git a/libs/JSystem/JMessage/processor.cpp b/libs/JSystem/JMessage/processor.cpp index 0802340b0b5..8d864246cb6 100644 --- a/libs/JSystem/JMessage/processor.cpp +++ b/libs/JSystem/JMessage/processor.cpp @@ -5,6 +5,7 @@ #include "JSystem/JMessage/processor.h" #include "JSystem/JMessage/control.h" +#include "JSystem/JUtility/JUTAssert.h" // // Forward References: @@ -139,28 +140,45 @@ void JMessage::TProcessor::stack_popCurrent() { /* 802A7C54-802A7CD4 2A2594 0080+00 1/1 1/1 0/0 .text * getResource_groupID__Q28JMessage10TProcessorCFUs */ -#ifdef NONMATCHING const JMessage::TResource* JMessage::TProcessor::getResource_groupID(u16 groupID) const { if (isResourceCache_groupID(groupID)) { return pResourceCache_; } - pResourceCache_ = getResource_groupID_uncached(groupID); + // Is there another way to do this? + ((JMessage::TProcessor*)this)->pResourceCache_ = getResource_groupID_uncached(groupID); return pResourceCache_; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm const JMessage::TResource* JMessage::TProcessor::getResource_groupID(u16 param_0) const { - nofralloc -#include "asm/JSystem/JMessage/processor/getResource_groupID__Q28JMessage10TProcessorCFUs.s" -} -#pragma pop -#endif /* 802A7CD4-802A7E38 2A2614 0164+00 0/0 1/1 0/0 .text * toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb */ +// TContainerEnumerator_const inline issues + while condition +#ifdef NONMATCHING +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); + } + TResourceContainer* this_01 = getResourceContainer(); + if (this_01 == NULL) { + return -1; + } + + JGadget::TContainerEnumerator_const enumerator(this_01->getResourceContainer()); + const TResource* this_02; + 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; + } + ((JMessage::TProcessor*)this)->pResourceCache_ = this_02; + return uVar4 | (this_02->getGroupID() << 0x10); + } + return -1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -170,6 +188,7 @@ asm u32 JMessage::TProcessor::toMessageCode_messageID(u32 param_0, u32 param_1, #include "asm/JSystem/JMessage/processor/toMessageCode_messageID__Q28JMessage10TProcessorCFUlUlPb.s" } #pragma pop +#endif /* 802A7E38-802A7EDC 2A2778 00A4+00 1/1 0/0 0/0 .text * on_select_begin__Q28JMessage10TProcessorFPFPQ28JMessage10TProcessor_PCcPCvPCcUl */ @@ -265,8 +284,8 @@ 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) { - u8 group = data::getTagGroup(uTag); - u16 code = data::getTagCode(uTag); + u32 group = data::getTagGroup(uTag); + u32 code = data::getTagCode(uTag); switch (group) { case 0xFF: @@ -345,38 +364,25 @@ bool JMessage::TProcessor::process_onCharacterEnd_select_(JMessage::TProcessor* /* 802A833C-802A8358 2A2C7C 001C+00 1/1 0/0 0/0 .text * process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ -// r4 vs r5 -#ifdef NONMATCHING const char* JMessage::TProcessor::process_onSelect_limited_(JMessage::TProcessor* pThis) { - u16* ptr = (u16*)pThis->oProcess_.rData.pOffset; - u16 data = *ptr; + u16 data = JGadget::binary::TParseValue::parse((u16*)pThis->oProcess_.rData.pOffset); pThis->oProcess_.rData.pOffset = - JGadget::binary::TParseValue::parse(ptr) + 2; + (void*)((u8*)pThis->oProcess_.rData.pOffset + 2); return &pThis->oProcess_.rData.pcBase[data]; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm const char* JMessage::TProcessor::process_onSelect_limited_(JMessage::TProcessor* param_0) { - nofralloc -#include "asm/JSystem/JMessage/processor/process_onSelect_limited___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s" -} -#pragma pop -#endif /* 802A8358-802A8374 2A2C98 001C+00 1/1 0/0 0/0 .text * process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm const char* JMessage::TProcessor::process_onSelect_(JMessage::TProcessor* param_0) { - nofralloc -#include "asm/JSystem/JMessage/processor/process_onSelect___Q28JMessage10TProcessorFPQ28JMessage10TProcessor.s" +const char* JMessage::TProcessor::process_onSelect_(JMessage::TProcessor* pThis) { + u32 data = JGadget::binary::TParseValue::parse((u32*)pThis->oProcess_.rData.pOffset); + + pThis->oProcess_.rData.pOffset = + (void*)((u8*)pThis->oProcess_.rData.pOffset + 4); + + return &pThis->oProcess_.rData.pcBase[data]; } -#pragma pop /* 802A8374-802A83B8 2A2CB4 0044+00 0/0 2/2 0/0 .text * __ct__Q28JMessage18TSequenceProcessorFPCQ28JMessage10TReferencePQ28JMessage8TControl */ @@ -559,8 +565,8 @@ void JMessage::TSequenceProcessor::do_end_() { * do_tag___Q28JMessage18TSequenceProcessorFUlPCvUl */ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize) { char* temp = (char*)data; - u8 group = data::getTagGroup(uTag); - u16 code = data::getTagCode(uTag); + u32 group = data::getTagGroup(uTag); + u32 code = data::getTagCode(uTag); switch (group) { case 0xFF: @@ -613,9 +619,10 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* data, u32 uSize * process_setMessageIndex_reserved___Q28JMessage18TSequenceProcessorFUs */ #ifdef NONMATCHING void JMessage::TSequenceProcessor::process_setMessageIndex_reserved_(u16 u16Index) { + JUT_ASSERT(890, u16Index >= 0xff00); if (u16Index != -1) { return; - } + } } #else #pragma push @@ -711,11 +718,9 @@ void JMessage::TRenderingProcessor::do_end_() {} /* 802A8BAC-802A8C24 2A34EC 0078+00 1/0 4/0 0/0 .text * do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl */ -// r0 / r7 swapped -#ifdef NONMATCHING void JMessage::TRenderingProcessor::do_tag_(u32 uTag, void const* data, u32 uSize) { - u8 group = data::getTagGroup(uTag); - u16 code = data::getTagCode(uTag); + u32 group = data::getTagGroup(uTag); + u32 code = data::getTagCode(uTag); switch (group) { case 0xFF: @@ -746,16 +751,6 @@ void JMessage::TRenderingProcessor::do_tag_(u32 uTag, void const* data, u32 uSiz break; } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JMessage::TRenderingProcessor::do_tag_(u32 param_0, void const* param_1, u32 param_2) { - nofralloc -#include "asm/JSystem/JMessage/processor/do_tag___Q28JMessage19TRenderingProcessorFUlPCvUl.s" -} -#pragma pop -#endif /* 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 { diff --git a/libs/JSystem/JMessage/resource.cpp b/libs/JSystem/JMessage/resource.cpp index 71401dea172..39a414d01c3 100644 --- a/libs/JSystem/JMessage/resource.cpp +++ b/libs/JSystem/JMessage/resource.cpp @@ -67,7 +67,7 @@ extern "C" f32 ga4cSignature__Q28JMessage4data[1 + 1 /* padding */]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JMessage::TResource::toMessageIndex_messageID(u32 param_0, u32 param_1, +asm u16 JMessage::TResource::toMessageIndex_messageID(u32 param_0, u32 param_1, bool* param_2) const { nofralloc #include "asm/JSystem/JMessage/resource/toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb.s" @@ -230,16 +230,13 @@ bool JMessage::TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_ return 1; } - pResource_ = pContainer_->resContainer_.Do_create(); + TResourceContainer::TCResource* resContainer = &pContainer_->resContainer_; + pResource_ = resContainer->Do_create(); if (pResource_ == NULL) { - if (param_2 & 0x20) { - return 0; - } else { - return 1; - } + return param_2 & 0x20; } else { - pContainer_->resContainer_.Push_back_hack(pResource_); + resContainer->Push_back(pResource_); pResource_->setData_header(header.getRaw()); return 1; }