summaryrefslogtreecommitdiff
path: root/src/JSystem/JMessage/processor.cpp
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2024-03-13 16:34:05 -0400
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2024-03-13 16:34:05 -0400
commit786652e0f543abd832eebafb28b4d4cdd570896f (patch)
treede23bd5ee880c0ec3b6422e00a761d635c4f7a9c /src/JSystem/JMessage/processor.cpp
parent4298f20af670407f1072bf7eadac1a922bb81ff4 (diff)
JMessage control OK
Diffstat (limited to 'src/JSystem/JMessage/processor.cpp')
-rw-r--r--src/JSystem/JMessage/processor.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/JSystem/JMessage/processor.cpp b/src/JSystem/JMessage/processor.cpp
index cf2c4081..c2b604b6 100644
--- a/src/JSystem/JMessage/processor.cpp
+++ b/src/JSystem/JMessage/processor.cpp
@@ -32,9 +32,7 @@ bool process_setMessage_index_(TControl* control, u16 index) {
/* 8029EE18-8029EE6C .text process_setMessage_code___Q28JMessage23@unnamed@processor_cpp@FPQ28JMessage8TControlUl */
bool process_setMessage_code_(TControl* control, u32 code) {
- /* Nonmatching */
- u16 messageIndex = code & 0xFFFF;
- if (messageIndex >= 0xFF00) {
+ if ((u16)code >= 0xFF00) {
return process_setMessageIndex_reserved_(code);
} else {
return !!control->setMessageCode(code);
@@ -144,7 +142,7 @@ void TProcessor::on_tag_() {
size = current[1];
mCurrent = (const char*)current + size;
- u32 tag = (current[2] << 16 | current[3] << 8);
+ u32 tag = (current[2] << 16 | (u8)current[3] << 8);
tag |= current[4];
if (!do_tag(tag, &current[5], size - 5)) {
@@ -189,8 +187,8 @@ void TProcessor::do_systemTagCode_(u16 code, const void* data, u32 size) {
/* 8029F2A0-8029F37C .text process_character___Q28JMessage10TProcessorFv */
bool TProcessor::process_character_() {
- /* Nonmatching */
- const char * current = getCurrent();
+ const u8* current = (const u8*)getCurrent();
+ u32 r31 = current[0];
switch (current[0]) {
case 0:
if (!mProcess.mCallBack(this))
@@ -200,7 +198,14 @@ bool TProcessor::process_character_() {
on_tag_();
break;
default:
- // mControl->do_word(current[0]);
+ if (mControl->mResourceContainer->IsLeadByte(r31)) {
+ r31 <<= 8;
+ mCurrent++;
+ current = (const u8*)getCurrent();
+ r31 |= current[0];
+ }
+ mCurrent++;
+ do_character(r31);
break;
}
return true;