summaryrefslogtreecommitdiff
path: root/src/JSystem/JMessage
diff options
context:
space:
mode:
authorCaroline Madsen <69010899+randomsalience@users.noreply.github.com>2025-04-09 16:45:30 -0400
committerGitHub <noreply@github.com>2025-04-09 13:45:30 -0700
commitc6f76e7240dde8bbcf40a88d6d88cf87cab616b4 (patch)
treebf9afbb1c32e66f45bdba30f61a9e4f0d92f804a /src/JSystem/JMessage
parent6672817e41064e04951ec28d51070b66fc8377ac (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.cpp19
-rw-r--r--src/JSystem/JMessage/locale.cpp66
-rw-r--r--src/JSystem/JMessage/processor.cpp161
-rw-r--r--src/JSystem/JMessage/resource.cpp112
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
-} */