Match Both Message Decodes (#1479)

* WIP

* match Message_DecodeNES

* cleanup

* another cleanup

* match Message_Decode

* more cleanup

* oops

* add back void
This commit is contained in:
engineer124
2023-11-10 02:57:56 +11:00
committed by GitHub
parent 5b17c3793e
commit 7681c97df0
2 changed files with 302 additions and 326 deletions
+137 -147
View File
@@ -2151,36 +2151,30 @@ u16 D_801D027C[] = { 0x2001, 0x2003, 0x2004, 0x2002 };
// Counterpart to NES sMaskCodeTextENG
u16 D_801D0284[] = { 0x90D4, 0x90C2, 0x89A9, 0x97CE };
#ifdef NON_MATCHING
// https://decomp.me/scratch/ZTbP4
void Message_Decode(PlayState* play) {
MessageContext* msgCtx = &play->msgCtx;
Font* font = &msgCtx->font; // spF0
Player* player; // spEC
s16 decodedBufPos; // spEA
Font* font = &msgCtx->font;
Player* player = GET_PLAYER(play);
s16 decodedBufPos;
s16 loadChar;
u32 timeToMoonCrash;
s16 temp2;
s16 spE0;
s32 pad4;
s16 digits[4]; // spD4/D6/D8/DA
s16 var_v0;
s16 numLines;
u8* fontBuf;
s16 digits[4];
s16 spD2;
f32 timeInSeconds;
s32 charTexIdx; // spC8
s16 var_v0;
s16 loadChar;
f32 spC0;
s32 charTexIndex;
f32 var_fs0;
f32 spC0;
s16 index;
s16 value;
s16 playerNameLen;
s16 i; // s1
s16 i;
u16 index2 = 0;
s16 spAC[4];
u8 var_s3_8;
u16 curChar;
u32 temp;
u8* ptr2;
player = GET_PLAYER(play);
msgCtx->textDelayTimer = 0;
msgCtx->textDelay = msgCtx->textDelayTimer;
msgCtx->textFade = 0;
@@ -2189,9 +2183,9 @@ void Message_Decode(PlayState* play) {
if ((gSaveContext.options.language == LANGUAGE_JPN) && !msgCtx->textIsCredits) {
spD2 = 0;
spE0 = 0;
numLines = 0;
decodedBufPos = 0;
charTexIdx = 0;
charTexIndex = 0;
Message_SetupLoadItemIcon(play);
while (true) {
@@ -2211,29 +2205,27 @@ void Message_Decode(PlayState* play) {
spC0 = 0.0f;
if (curChar == 0xB) {
if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) {
if (spE0 < 2) {
if (numLines < 2) {
msgCtx->unk11FFA = msgCtx->textboxY + 0x16;
} else if (spE0 == 2) {
} else if (numLines == 2) {
msgCtx->unk11FFA = msgCtx->textboxY + 0xE;
}
}
} else {
s32 requiredScopeTemp;
if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) {
if (spE0 == 0) {
if (numLines == 0) {
msgCtx->unk11FFA = msgCtx->textboxY + 0x16;
} else if (spE0 == 1) {
} else if (numLines == 1) {
msgCtx->unk11FFA = msgCtx->textboxY + 0xE;
}
}
}
{
s32 pad;
if ((curChar == 0x110) || (curChar == 0x111) || (curChar == 0x112)) {
msgCtx->decodedBuffer.wchar[++decodedBufPos] = font->msgBuf.wchar[msgCtx->msgBufPos + 1];
msgCtx->msgBufPos += 2;
}
if ((curChar == 0x110) || (curChar == 0x111) || (curChar == 0x112)) {
msgCtx->decodedBuffer.wchar[++decodedBufPos] = font->msgBuf.wchar[msgCtx->msgBufPos + 1];
msgCtx->msgBufPos += 2;
}
msgCtx->decodedTextLen = decodedBufPos;
@@ -2243,6 +2235,7 @@ void Message_Decode(PlayState* play) {
(msgCtx->textBoxType == TEXTBOX_TYPE_B) || (msgCtx->unk11F0C == 3)) {
msgCtx->textDrawPos = msgCtx->decodedTextLen;
}
msgCtx->unk120C8 = msgCtx->unk120CE;
msgCtx->unk120CA = msgCtx->unk120D0;
msgCtx->unk120CC = msgCtx->unk120D2;
@@ -2252,32 +2245,35 @@ void Message_Decode(PlayState* play) {
if (curChar == 0x100) {
for (playerNameLen = ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); playerNameLen > 0;
playerNameLen--) {
if (gSaveContext.save.saveInfo.playerData.playerName[playerNameLen - 1] != 0x3E) {
if (((void)0, gSaveContext.save.saveInfo.playerData.playerName[playerNameLen - 1]) != 0x3E) {
break;
}
}
for (i = 0; i < playerNameLen; i++) {
ptr2 = &font->fontBuf[((void)0, gSaveContext.save.saveInfo.playerData.playerName[i]) *
FONT_CHAR_TEX_SIZE];
curChar = gSaveContext.save.saveInfo.playerData.playerName[i];
index2 = curChar & 0xFFFF;
fontBuf = &font->fontBuf[index2 * FONT_CHAR_TEX_SIZE];
msgCtx->decodedBuffer.wchar[decodedBufPos + i] = 0x100;
for (var_v0 = 0; var_v0 < FONT_CHAR_TEX_SIZE; var_v0 += 4) {
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 0] =
ptr2[var_v0 + 0] & 0xFF; //! FAKE: Fixes later regalloc
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 1] = ptr2[var_v0 + 1];
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 2] = ptr2[var_v0 + 2];
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 3] = ptr2[var_v0 + 3];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 0] = fontBuf[var_v0 + 0];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 1] = fontBuf[var_v0 + 1];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 2] = fontBuf[var_v0 + 2];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 3] = fontBuf[var_v0 + 3];
}
charTexIdx += FONT_CHAR_TEX_SIZE;
charTexIndex += FONT_CHAR_TEX_SIZE;
}
//! FAKE:
fontBuf = &font->fontBuf[index2 * FONT_CHAR_TEX_SIZE];
decodedBufPos += playerNameLen - 1;
spC0 += playerNameLen * (16.0f * msgCtx->textCharScale);
} else if (curChar == 0x201) {
DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1000, SEGMENT_ROM_START(message_texture_static), 0x900);
DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1900, SEGMENT_ROM_START(message_texture_static) + 0x900,
0x900);
spE0 = 2;
numLines = 2;
spD2 = 2;
msgCtx->unk12012 = msgCtx->textboxY + 8;
msgCtx->unk11F18 = 1;
@@ -2298,7 +2294,7 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, spAC[i + 3] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, spAC[i + 3] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
@@ -2313,7 +2309,7 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, spAC[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, spAC[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
@@ -2335,18 +2331,18 @@ void Message_Decode(PlayState* play) {
}
for (i = 0; i < 4; i++) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
if (i == 1) {
Font_LoadChar(play, 0x8E9E, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, 0x8E9E, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8E9E;
decodedBufPos++;
} else if (i == 3) {
Font_LoadChar(play, 0x95AA, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, 0x95AA, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x95AA;
}
}
@@ -2374,28 +2370,28 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
}
}
Message_LoadChar(play, 0x9543, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x9543, &charTexIndex, &spC0, decodedBufPos);
} else if (curChar == 0x20C) {
decodedBufPos++;
msgCtx->unk120BE = spD2;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 2;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
digits[0] = digits[1] = digits[2] = 0;
for (i = 0; i < 3; i++) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0);
func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0);
} else if (curChar == 0x20D) {
digits[0] = digits[1] = 0;
digits[2] = msgCtx->bankRupeesSelected;
@@ -2416,11 +2412,11 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0);
func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0);
} else if (curChar == 0x20E) {
digits[0] = digits[1] = digits[2] = 0;
digits[3] = msgCtx->bankRupees;
@@ -2444,13 +2440,13 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0);
func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0);
} else if (curChar == 0x20F) {
Message_LoadTime(play, curChar, &charTexIdx, &spC0, &decodedBufPos);
Message_LoadTime(play, curChar, &charTexIndex, &spC0, &decodedBufPos);
} else if (curChar == 0x21C) {
digits[0] = digits[1] = 0;
digits[2] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex];
@@ -2470,13 +2466,13 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
Message_LoadChar(play, 0x906C, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x906C, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
Message_LoadChar(play, 0x96DA, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x96DA, &charTexIndex, &spC0, decodedBufPos);
} else if (curChar == 0x21D) {
digits[0] = digits[1] = 0;
digits[2] = Inventory_GetSkullTokenCount(play->sceneId);
@@ -2496,11 +2492,11 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
Message_LoadChar(play, 0x9543, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x9543, &charTexIndex, &spC0, decodedBufPos);
} else if (curChar == 0x21E) {
digits[0] = 0;
digits[1] = gSaveContext.minigameScore;
@@ -2512,7 +2508,7 @@ void Message_Decode(PlayState* play) {
for (i = 0; i < 2; i++) {
if ((i == 1) || (digits[i] != 0)) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
@@ -2540,7 +2536,7 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
@@ -2551,59 +2547,58 @@ void Message_Decode(PlayState* play) {
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
digits[0] = digits[1] = digits[2] = 0;
for (i = 0; i < 2; i++) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0);
func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0);
} else if (curChar == 0x221) {
decodedBufPos++;
msgCtx->unk120BE = spD2;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
for (i = 0; i < 5; i++) {
msgCtx->unk12054[i] = 1;
Message_LoadChar(play, 0x8250, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x8250, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
decodedBufPos--;
} else if (curChar == 0x223) {
if (gSaveContext.save.timeSpeedOffset == 0x12) {
var_s3_8 = 0;
} else if (gSaveContext.save.timeSpeedOffset == 0) {
var_s3_8 = 1;
if (((void)0, gSaveContext.save.timeSpeedOffset) == 0x12) {
index = 0;
} else if (((void)0, gSaveContext.save.timeSpeedOffset) == 0) {
index = 1;
} else {
var_s3_8 = 2;
index = 2;
}
for (i = 0; i < 3; i++) {
msgCtx->decodedBuffer.wchar[decodedBufPos] = D_801D0268[var_s3_8][i];
Font_LoadChar(play, D_801D0268[var_s3_8][i], charTexIdx);
decodedBufPos++;
charTexIdx += FONT_CHAR_TEX_SIZE;
for (i = 0; i < 3; i++, decodedBufPos++) {
msgCtx->decodedBuffer.wchar[decodedBufPos] = D_801D0268[index][i];
Font_LoadChar(play, D_801D0268[index][i], charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
}
decodedBufPos--;
spC0 += 3.0f * (16.0f * msgCtx->textCharScale);
msgCtx->choiceIndex = var_s3_8;
msgCtx->choiceIndex = index;
} else if (curChar == 0x224) {
Message_LoadOwlWarpText(play, &charTexIdx, &spC0, &decodedBufPos);
Message_LoadOwlWarpText(play, &charTexIndex, &spC0, &decodedBufPos);
} else if (curChar == 0x225) {
decodedBufPos++;
msgCtx->unk120BE = spD2;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
for (i = 0; i < 3; i++) {
msgCtx->unk12054[i] = 1;
Font_LoadChar(play, 0x8250, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, 0x8250, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8250;
spC0 += 16.0f * msgCtx->textCharScale;
decodedBufPos++;
@@ -2614,13 +2609,14 @@ void Message_Decode(PlayState* play) {
msgCtx->decodedBuffer.wchar[decodedBufPos] =
D_801D027C[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[i])];
decodedBufPos++;
Message_LoadChar(play, i + 0x8250, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, i + 0x8250, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x2000;
} else if ((curChar >= 0x227) && (curChar < 0x22B)) {
digits[0] = digits[1] = 0;
digits[2] = 15 - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0x227];
digits[2] =
STRAY_FAIRY_SCATTERED_TOTAL - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0x227];
while (digits[2] >= 100) {
digits[0]++;
@@ -2637,14 +2633,14 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
}
}
Message_LoadChar(play, 0x906C, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x906C, &charTexIndex, &spC0, decodedBufPos);
} else if (curChar == 0x22B) {
digits[0] = digits[1] = digits[2] = 0;
digits[3] = gSaveContext.minigameScore;
@@ -2668,14 +2664,14 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
}
}
Message_LoadChar(play, 0x94AD, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x94AD, &charTexIndex, &spC0, decodedBufPos);
} else if ((curChar == 0x22C) || (curChar == 0x22D)) {
if (curChar == 0x22C) {
digits[0] = gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][0];
@@ -2687,8 +2683,8 @@ void Message_Decode(PlayState* play) {
digits[2] = HS_GET_LOTTERY_CODE_GUESS() & 0xF;
}
for (i = 0; i < 3; i++) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
@@ -2717,33 +2713,32 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
}
}
func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0);
func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0);
} else if (curChar == 0x22F) {
for (i = 0; i < 5; i++) {
digits[i] = gSaveContext.save.saveInfo.bomberCode[i];
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
}
decodedBufPos--;
} else if ((curChar >= 0x231) && (curChar < 0x237)) {
// index = curChar - 0x231;
msgCtx->decodedBuffer.wchar[decodedBufPos] =
D_801D027C[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0x231)])];
decodedBufPos++;
Message_LoadChar(
play,
D_801D0284[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0x231)])],
&charTexIdx, &spC0, decodedBufPos);
&charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x2000;
} else if (curChar == 0x237) {
@@ -2762,20 +2757,20 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
}
}
Font_LoadChar(play, 0x8E9E, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, 0x8E9E, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8E9E;
decodedBufPos++;
Font_LoadChar(play, 0x8AD4, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, 0x8AD4, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8E9E;
spC0 += 2.0f * (16.0f * msgCtx->textCharScale);
} else if (curChar == 0x238) {
Message_LoadTime(play, curChar, &charTexIdx, &spC0, &decodedBufPos);
Message_LoadTime(play, curChar, &charTexIndex, &spC0, &decodedBufPos);
} else if ((curChar == 0x300) || (curChar == 0x301) || (curChar == 0x302) || (curChar == 0x308)) {
if (curChar == 0x308) {
value = (s32)HS_GET_HIGH_SCORE_3_LOWER();
@@ -2811,8 +2806,8 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
@@ -2837,8 +2832,8 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, spAC[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, spAC[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = spAC[i] + 0x824F;
decodedBufPos++;
} else {
@@ -2848,9 +2843,9 @@ void Message_Decode(PlayState* play) {
spC0 += var_fs0 * (16.0f * msgCtx->textCharScale);
decodedBufPos--;
} else if ((curChar == 0x303) || (curChar == 0x304) || (curChar == 0x305)) {
temp2 = HIGH_SCORE(curChar - 0x303 + HS_BOAT_ARCHERY);
value = HIGH_SCORE(curChar - 0x303 + HS_BOAT_ARCHERY);
digits[0] = digits[1] = digits[2] = 0;
digits[3] = temp2;
digits[3] = value;
while (digits[3] >= 60) {
digits[1]++;
@@ -2866,18 +2861,18 @@ void Message_Decode(PlayState* play) {
}
for (i = 0; i < 4; i++) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
if (i == 1) {
Font_LoadChar(play, 0x95AA, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, 0x95AA, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x95AA;
decodedBufPos++;
} else if (i == 3) {
Font_LoadChar(play, 0x9562, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, 0x9562, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x9562;
}
}
@@ -2905,38 +2900,37 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
}
}
Message_LoadChar(play, 0x9543, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x9543, &charTexIndex, &spC0, decodedBufPos);
} else if ((curChar == 0x30D) || (curChar == 0x30E) || (curChar == 0x30F)) {
//! Removing index and casting one version causes gSaveContext to be reloaded
// index = curChar - 0x30D;
index = curChar - 0x30D;
for (playerNameLen = 8; playerNameLen > 0; playerNameLen--) {
if (gSaveContext.save.saveInfo.inventory
.dekuPlaygroundPlayerName[(s16)(curChar - 0x30D)][playerNameLen - 1] != 0x3E) {
if (gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[index][playerNameLen - 1] !=
0x3E) {
break;
}
}
for (i = 0; i < playerNameLen; i++) {
ptr2 = &font->fontBuf[((void)0, gSaveContext.save.saveInfo.inventory
.dekuPlaygroundPlayerName[curChar - 0x30D][i]) *
FONT_CHAR_TEX_SIZE];
curChar = ((void)0, gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[index][i]);
//! FAKE: 0xFFFF
fontBuf = &font->fontBuf[(curChar & 0xFFFF) * FONT_CHAR_TEX_SIZE];
msgCtx->decodedBuffer.wchar[decodedBufPos + i] = 0x30D;
for (var_v0 = 0; var_v0 < FONT_CHAR_TEX_SIZE; var_v0 += 4) {
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 0] = ptr2[var_v0 + 0];
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 1] = ptr2[var_v0 + 1];
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 2] = ptr2[var_v0 + 2];
font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 3] = ptr2[var_v0 + 3];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 0] = fontBuf[var_v0 + 0];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 1] = fontBuf[var_v0 + 1];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 2] = fontBuf[var_v0 + 2];
font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 3] = fontBuf[var_v0 + 3];
}
charTexIdx += FONT_CHAR_TEX_SIZE;
charTexIndex += FONT_CHAR_TEX_SIZE;
}
decodedBufPos += playerNameLen - 1;
spC0 += playerNameLen * (16.0f * msgCtx->textCharScale);
@@ -2963,14 +2957,14 @@ void Message_Decode(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadChar(play, digits[i] + 0x824F, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, digits[i] + 0x824F, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F;
decodedBufPos++;
spC0 += 16.0f * msgCtx->textCharScale;
}
}
Message_LoadChar(play, 0x94AD, &charTexIdx, &spC0, decodedBufPos);
Message_LoadChar(play, 0x94AD, &charTexIndex, &spC0, decodedBufPos);
} else if (curChar == 0x1F) {
decodedBufPos--;
for (i = 0; i < font->msgBuf.wchar[msgCtx->msgBufPos + 1]; i++) {
@@ -2986,7 +2980,7 @@ void Message_Decode(PlayState* play) {
spD2++;
spC0 = 0.0f;
if (curChar == 0xA) {
spE0++;
numLines++;
}
} else if ((curChar == 0x101) || (curChar == 0x102) || (curChar == 0x104) ||
((curChar >= 0x130) && (curChar < 0x137))) {
@@ -3005,8 +2999,8 @@ void Message_Decode(PlayState* play) {
} else if (curChar == 0x128) {
msgCtx->decodedBuffer.wchar[++decodedBufPos] = font->msgBuf.wchar[++msgCtx->msgBufPos];
} else if ((curChar != 0x20) && ((curChar < 0x2000) || (curChar >= 0x2009))) {
Font_LoadChar(play, curChar, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadChar(play, curChar, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
if ((curChar == 0x8169) || (curChar == 0x8175)) {
spC0 += 10.0f * msgCtx->textCharScale;
} else if (curChar == 0x8145) {
@@ -3038,10 +3032,6 @@ void Message_Decode(PlayState* play) {
Message_DecodeNES(play);
}
}
#else
void Message_Decode(PlayState* play);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/Message_Decode.s")
#endif
void func_80150A84(PlayState* play) {
MessageContext* msgCtx = &play->msgCtx;
+165 -179
View File
@@ -544,11 +544,9 @@ void Message_DrawTextNES(PlayState* play, Gfx** gfxP, u16 textDrawPos) {
case 0x17: // MESSAGE_QUICKTEXT_ENABLE
if ((i + 1) == msgCtx->textDrawPos) {
j = i;
if ((msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) ||
((msgCtx->msgMode >= MSGMODE_OCARINA_STARTING) && (msgCtx->msgMode <= MSGMODE_26))) {
//! FAKE:
dummy:;
j = i;
while (true) {
if ((msgCtx->decodedBuffer.schar[j] != 0x18) && (msgCtx->decodedBuffer.schar[j] != 0x1A) &&
(msgCtx->decodedBuffer.schar[j] != 0x19) && (msgCtx->decodedBuffer.schar[j] != 0xE0) &&
@@ -954,41 +952,33 @@ u8 sMaskCodeTextLengthENG[] = {
sizeof(GREEN_STR) - 1,
};
#ifdef NON_MATCHING
// https://decomp.me/scratch/w2ckG
void Message_DecodeNES(PlayState* play) {
f32 var_fs0;
MessageContext* msgCtx = &play->msgCtx;
u8* ptr;
Font* font = &msgCtx->font; // spE0
Player* player; // spDC
s16 decodedBufPos; // spDA
Font* font = &msgCtx->font;
Player* player = GET_PLAYER(play);
s16 decodedBufPos = 0;
s16 value;
u32 timeToMoonCrash;
s16 i; // s1
s16 spD0; // numLines
s16 digits[4]; // spC8/CA/CC/CE
s16 spC6;
f32 timeInSeconds;
s32 charTexIdx; // spBC
s16 i;
s16 numLines;
s16 digits[4];
s16 spC6 = 0;
u16 sfxHi;
f32 var_fs0;
s32 charTexIndex = 0;
s16 loadChar;
s16 index;
s16 spA8[8];
f32 spA4;
s16 playerNameLen; // s0
u8* fontBuf;
s16 playerNameLen;
s16 var_v1_3;
u8 curChar; // sp78
s8 charOffset;
s16 temp_s2_2;
s16 var_s2_9;
u8 curChar;
player = GET_PLAYER(play);
decodedBufPos = 0;
spC6 = 0;
charTexIdx = 0;
spD0 = 0;
numLines = 0;
msgCtx->textDelayTimer = 0;
msgCtx->textDelay = msgCtx->textDelayTimer;
msgCtx->textFade = 0;
msgCtx->textFade = false;
spA4 = 0.0f;
font->unk_11D88 = (font->unk_11D88 ^ 1) & 1;
Message_SetupLoadItemIcon(play);
@@ -1010,39 +1000,44 @@ void Message_DecodeNES(PlayState* play) {
if (msgCtx->unk11F18 != 0) {
msgCtx->unk11F1A[spC6] = (s16)((msgCtx->textCharScale * 16.0f * 16.0f) - spA4) / 2;
}
spA4 = 0.0f;
if (curChar == 0x12) {
if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) {
if (spD0 < 2) {
if (numLines < 2) {
msgCtx->unk11FFA = msgCtx->textboxY + XREG(10);
} else if (spD0 == 2) {
} else if (numLines == 2) {
msgCtx->unk11FFA = msgCtx->textboxY + XREG(11);
} else if (spD0 == 3) {
} else if (numLines == 3) {
msgCtx->unk11FFA = msgCtx->textboxY + XREG(12);
}
}
} else {
if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) {
if (spD0 == 0) {
if (numLines == 0) {
msgCtx->unk11FFA = msgCtx->textboxY + XREG(13) + XREG(10);
} else if (spD0 == 1) {
} else if (numLines == 1) {
msgCtx->unk11FFA = msgCtx->textboxY + XREG(13) + XREG(11);
} else if (spD0 == 2) {
} else if (numLines == 2) {
msgCtx->unk11FFA = msgCtx->textboxY + XREG(13) + XREG(12);
}
}
}
//! FAKE: Perhaps a locally required temp for scoping
dummy:;
if ((curChar == 0x1B) || (curChar == 0x1C) || (curChar == 0x1D)) {
//! FAKE: & 0xFFFF to fix regalloc
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 1] & 0xFFFF;
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 2];
msgCtx->msgBufPos += 3;
{
s8 requiredScopeTemp;
if ((curChar == 0x1B) || (curChar == 0x1C) || (curChar == 0x1D)) {
//! FAKE: & 0xFFFF to fix regalloc
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[(msgCtx->msgBufPos & 0xFFFF) + 1];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 2];
msgCtx->msgBufPos += 3;
}
}
msgCtx->decodedTextLen = decodedBufPos;
msgCtx->unk120D8 = spD0;
msgCtx->unk120D8 = numLines;
if (msgCtx->textboxSkipped || (msgCtx->textBoxType == TEXTBOX_TYPE_1) ||
(msgCtx->textBoxType == TEXTBOX_TYPE_3) || (msgCtx->textBoxType == TEXTBOX_TYPE_6) ||
(msgCtx->textBoxType == TEXTBOX_TYPE_8) || (msgCtx->textBoxType == TEXTBOX_TYPE_9) ||
@@ -1071,29 +1066,28 @@ void Message_DecodeNES(PlayState* play) {
} else if (curChar == 0x3F) {
curChar = '-';
} else if (curChar < 0xA) {
charOffset = curChar;
curChar = '0' + charOffset;
curChar += 0;
curChar = '0' + curChar;
} else if (curChar < 0x24) {
charOffset = curChar;
curChar = 'A' - 10 + charOffset;
curChar += 0;
curChar = 'A' - 10 + curChar;
} else if (curChar < 0x3E) {
charOffset = curChar;
curChar = 'a' - 36 + charOffset;
curChar += 0;
curChar = 'a' - 36 + curChar;
}
if (curChar != ' ') {
Font_LoadCharNES(play, curChar, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, curChar, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
}
msgCtx->decodedBuffer.schar[decodedBufPos] = curChar;
decodedBufPos++;
}
decodedBufPos--;
} else if (curChar == 0xC1) {
//! TODO: + 0x900 on the first one?
DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1000, SEGMENT_ROM_START(message_texture_static), 0x900);
DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1900,
(uintptr_t)SEGMENT_ROM_START(message_texture_static) + 0x900, 0x900);
spD0 = 2;
DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1900, SEGMENT_ROM_START(message_texture_static) + 0x900,
0x900);
numLines = 2;
spC6 = 2;
msgCtx->unk12012 = msgCtx->textboxY + 8;
msgCtx->unk11F18 = 1;
@@ -1114,7 +1108,7 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, spA8[i + 3], &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, spA8[i + 3], &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
@@ -1129,41 +1123,39 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, spA8[i], &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, spA8[i], &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
decodedBufPos--;
} else if (curChar == 0xCA) {
digits[0] = 0;
timeInSeconds = TIME_TO_MINUTES_F(gSaveContext.save.time);
digits[1] = timeInSeconds / 60.0f;
digits[1] = TIME_TO_MINUTES_F(gSaveContext.save.time) / 60.0f;
while (digits[1] >= 10) {
digits[0]++;
digits[1] -= 10;
}
digits[2] = 0;
digits[3] = (s32)timeInSeconds % 60;
digits[3] = (s32)TIME_TO_MINUTES_F(gSaveContext.save.time) % 60;
while (digits[3] >= 10) {
digits[2]++;
digits[3] -= 10;
}
for (i = 0; i < 4; i++) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
if (i == 1) {
Font_LoadCharNES(play, '"', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, '"', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = 0x22;
decodedBufPos++;
} else if (i == 3) {
Font_LoadCharNES(play, 0x27, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, 0x27, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = 0x27;
}
}
@@ -1191,8 +1183,8 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
@@ -1205,14 +1197,14 @@ void Message_DecodeNES(PlayState* play) {
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 2;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
digits[0] = digits[1] = digits[2] = 0;
for (i = 0; i < 3; i++) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
Message_LoadLocalizedRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4);
Message_LoadLocalizedRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4);
} else if (curChar == 0xCD) {
digits[0] = digits[1] = 0;
digits[2] = msgCtx->bankRupeesSelected;
@@ -1233,11 +1225,11 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
Message_LoadRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4, msgCtx->bankRupeesSelected);
Message_LoadRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4, msgCtx->bankRupeesSelected);
} else if (curChar == 0xCE) {
digits[0] = digits[1] = digits[2] = 0;
digits[3] = msgCtx->bankRupees;
@@ -1261,13 +1253,13 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
Message_LoadRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4, msgCtx->bankRupees);
Message_LoadRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4, msgCtx->bankRupees);
} else if (curChar == 0xCF) {
Message_LoadTimeNES(play, curChar, &charTexIdx, &spA4, &decodedBufPos);
Message_LoadTimeNES(play, curChar, &charTexIndex, &spA4, &decodedBufPos);
} else if (curChar == 0xC) {
digits[0] = digits[1] = 0;
digits[2] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex];
@@ -1287,30 +1279,30 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 1) ||
(gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 21)) {
Message_LoadCharNES(play, 's', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 's', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos);
} else if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 2) ||
(gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 22)) {
Message_LoadCharNES(play, 'n', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'n', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos);
} else if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 3) ||
(gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 23)) {
Message_LoadCharNES(play, 'r', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'r', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos);
} else {
Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'h', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'h', &charTexIndex, &spA4, decodedBufPos);
}
} else if (curChar == 0xD) {
digits[0] = digits[1] = 0;
@@ -1331,30 +1323,30 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
if ((Inventory_GetSkullTokenCount(play->sceneId) == 1) ||
(Inventory_GetSkullTokenCount(play->sceneId) == 21)) {
Message_LoadCharNES(play, 's', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 's', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos);
} else if ((Inventory_GetSkullTokenCount(play->sceneId) == 2) ||
(Inventory_GetSkullTokenCount(play->sceneId) == 22)) {
Message_LoadCharNES(play, 'n', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'n', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos);
} else if ((Inventory_GetSkullTokenCount(play->sceneId) == 3) ||
(Inventory_GetSkullTokenCount(play->sceneId) == 23)) {
Message_LoadCharNES(play, 'r', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'r', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos);
} else {
Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'h', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'h', &charTexIndex, &spA4, decodedBufPos);
}
} else if (curChar == 0xE) {
digits[0] = 0;
@@ -1367,7 +1359,7 @@ void Message_DecodeNES(PlayState* play) {
for (i = 0; i < 2; i++) {
if ((i == 1) || (digits[i] != 0)) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
@@ -1396,7 +1388,7 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
@@ -1407,59 +1399,58 @@ void Message_DecodeNES(PlayState* play) {
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
digits[0] = digits[1] = digits[2] = 0;
for (i = 0; i < 2; i++) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4);
Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4);
} else if (curChar == 0xD1) {
decodedBufPos++;
msgCtx->unk120BE = spC6;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
for (i = 0; i < 5; i++) {
msgCtx->unk12054[i] = 1;
Message_LoadCharNES(play, '1', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, '1', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
decodedBufPos--;
} else if (curChar == 0xD3) {
if (gSaveContext.save.timeSpeedOffset == 18) {
var_s2_9 = 0;
} else if (gSaveContext.save.timeSpeedOffset == 0) {
var_s2_9 = 1;
if (((void)0, gSaveContext.save.timeSpeedOffset) == 18) {
index = 0;
} else if (((void)0, gSaveContext.save.timeSpeedOffset) == 0) {
index = 1;
} else {
var_s2_9 = 2;
index = 2;
}
for (i = 0; i < 4; i++) {
msgCtx->decodedBuffer.schar[decodedBufPos] = D_801D08D8[var_s2_9][i];
Font_LoadCharNES(play, D_801D08D8[var_s2_9][i], charTexIdx);
decodedBufPos++;
charTexIdx += FONT_CHAR_TEX_SIZE;
for (i = 0; i < 4; i++, decodedBufPos++) {
msgCtx->decodedBuffer.schar[decodedBufPos] = D_801D08D8[index][i];
Font_LoadCharNES(play, D_801D08D8[index][i], charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
}
decodedBufPos--;
spA4 += 3.0f * (16.0f * msgCtx->textCharScale);
msgCtx->choiceIndex = var_s2_9;
msgCtx->choiceIndex = index;
} else if (curChar == 0xD4) {
Message_LoadOwlWarpTextNES(play, &charTexIdx, &spA4, &decodedBufPos);
Message_LoadOwlWarpTextNES(play, &charTexIndex, &spA4, &decodedBufPos);
} else if (curChar == 0xD5) {
decodedBufPos++;
msgCtx->unk120BE = spC6;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->unk120C4 = charTexIdx;
msgCtx->unk120C4 = charTexIndex;
for (i = 0; i < 3; i++) {
msgCtx->unk12054[i] = 1;
Font_LoadCharNES(play, '1', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, '1', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = '1';
spA4 += 16.0f * msgCtx->textCharScale;
decodedBufPos++;
@@ -1468,15 +1459,15 @@ void Message_DecodeNES(PlayState* play) {
} else if (curChar == 0xD6) {
for (i = 0; i < 6; i++) {
msgCtx->decodedBuffer.schar[decodedBufPos] =
(s8)D_801D08E4[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[i])];
D_801D08E4[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[i])];
decodedBufPos++;
Message_LoadCharNES(play, i + '1', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, i + '1', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
msgCtx->decodedBuffer.schar[decodedBufPos] = 0;
} else if ((curChar >= 0xD7) && (curChar < 0xDB)) {
digits[0] = digits[1] = 0;
digits[2] = 15 - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0xD7];
digits[2] = STRAY_FAIRY_SCATTERED_TOTAL - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0xD7];
while (digits[2] >= 100) {
digits[0]++;
@@ -1493,8 +1484,8 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
@@ -1523,8 +1514,8 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
@@ -1543,8 +1534,8 @@ void Message_DecodeNES(PlayState* play) {
}
for (i = 0; i < 3; i++) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
@@ -1573,38 +1564,35 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
}
}
Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4);
Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4);
} else if (curChar == 0xDF) {
for (i = 0; i < 5; i++) {
digits[i] = gSaveContext.save.saveInfo.bomberCode[i];
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
}
decodedBufPos--;
} else if ((curChar >= 0xE1) && (curChar < 0xE7)) {
msgCtx->decodedBuffer.schar[decodedBufPos] =
msgCtx->decodedBuffer.schar[decodedBufPos++] =
D_801D08E4[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])];
temp_s2_2 = sMaskCodeTextLengthENG[(
(void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])];
decodedBufPos++;
for (i = 0; i < temp_s2_2; i++) {
index = sMaskCodeTextLengthENG[((void)0,
gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])];
for (playerNameLen = 0; playerNameLen < index; playerNameLen++, decodedBufPos++) {
Message_LoadCharNES(
play,
sMaskCodeTextENG[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])]
[i],
&charTexIdx, &spA4, decodedBufPos);
decodedBufPos++;
[playerNameLen],
&charTexIndex, &spA4, decodedBufPos);
}
msgCtx->decodedBuffer.schar[decodedBufPos] = 0;
@@ -1624,25 +1612,25 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
}
}
msgCtx->decodedBuffer.schar[decodedBufPos] = ' ';
decodedBufPos++;
Message_LoadCharNES(play, 'h', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'h', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'o', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'o', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'u', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'u', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'r', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 'r', &charTexIndex, &spA4, decodedBufPos);
if ((digits[0] != 0) || (digits[1] != 1)) {
decodedBufPos++;
Message_LoadCharNES(play, 's', &charTexIdx, &spA4, decodedBufPos);
Message_LoadCharNES(play, 's', &charTexIndex, &spA4, decodedBufPos);
}
} else if (curChar == 0xE8) {
Message_LoadTimeNES(play, curChar, &charTexIdx, &spA4, &decodedBufPos);
Message_LoadTimeNES(play, curChar, &charTexIndex, &spA4, &decodedBufPos);
} else if ((curChar == 0xF0) || (curChar == 0xF1) || (curChar == 0xF2) || (curChar == 0xF8)) {
if (curChar == 0xF8) {
@@ -1679,8 +1667,8 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
@@ -1705,8 +1693,8 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, spA8[i], charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, spA8[i], charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = spA8[i];
decodedBufPos++;
} else {
@@ -1734,18 +1722,18 @@ void Message_DecodeNES(PlayState* play) {
}
for (i = 0; i < 4; i++) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
if (i == 1) {
Font_LoadCharNES(play, '"', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, '"', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = '"';
decodedBufPos++;
} else if (i == 3) {
Font_LoadCharNES(play, 0x27, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, 0x27, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = 0x27;
}
}
@@ -1773,8 +1761,8 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
@@ -1782,26 +1770,26 @@ void Message_DecodeNES(PlayState* play) {
}
decodedBufPos--;
} else if ((curChar == 0xFD) || (curChar == 0xFE) || (curChar == 0xFF)) {
index = curChar - 0xFD;
for (playerNameLen = 8; playerNameLen > 0; playerNameLen--) {
if (gSaveContext.save.saveInfo.inventory
.dekuPlaygroundPlayerName[(s16)(curChar - 0xFD)][playerNameLen - 1] != 0x3E) {
if (((void)0,
gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[index][playerNameLen - 1]) != 0x3E) {
break;
}
}
for (i = 0; i < playerNameLen; i++) {
ptr = &font->fontBuf[((void)0, gSaveContext.save.saveInfo.inventory
.dekuPlaygroundPlayerName[(s16)(curChar - 0xFD)][i]) *
FONT_CHAR_TEX_SIZE];
curChar = ((void)0, gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[index][i]);
msgCtx->decodedBuffer.schar[decodedBufPos + i] = 0xFD;
fontBuf = &font->fontBuf[(curChar & 0xFFFF) * FONT_CHAR_TEX_SIZE];
for (var_v1_3 = 0; var_v1_3 < FONT_CHAR_TEX_SIZE; var_v1_3 += 4) {
font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 0] = ptr[var_v1_3 + 0];
font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 1] = ptr[var_v1_3 + 1];
font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 2] = ptr[var_v1_3 + 2];
font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 3] = ptr[var_v1_3 + 3];
font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 0] = fontBuf[var_v1_3 + 0];
font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 1] = fontBuf[var_v1_3 + 1];
font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 2] = fontBuf[var_v1_3 + 2];
font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 3] = fontBuf[var_v1_3 + 3];
}
charTexIdx += FONT_CHAR_TEX_SIZE;
charTexIndex += FONT_CHAR_TEX_SIZE;
}
decodedBufPos += playerNameLen - 1;
spA4 += playerNameLen * (16.0f * msgCtx->textCharScale);
@@ -1828,8 +1816,8 @@ void Message_DecodeNES(PlayState* play) {
loadChar = true;
}
if (loadChar) {
Font_LoadCharNES(play, digits[i] + '0', charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, digits[i] + '0', charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0';
decodedBufPos++;
spA4 += 16.0f * msgCtx->textCharScale;
@@ -1851,7 +1839,7 @@ void Message_DecodeNES(PlayState* play) {
spC6++;
spA4 = 0.0f;
if (curChar == 0x11) {
spD0++;
numLines++;
}
} else if ((curChar == 0x17) || (curChar == 0x18) || (curChar == 0x1A)) {
// pass
@@ -1859,8 +1847,8 @@ void Message_DecodeNES(PlayState* play) {
decodedBufPos++;
} else if (curChar == 0x1C) {
msgCtx->textFade = true;
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos] & 0xFF;
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos] & 0xFF;
} else if (curChar == 0x1E) {
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
@@ -1868,15 +1856,16 @@ void Message_DecodeNES(PlayState* play) {
(msgCtx->textBoxType == TEXTBOX_TYPE_3) || (msgCtx->textBoxType == TEXTBOX_TYPE_6) ||
(msgCtx->textBoxType == TEXTBOX_TYPE_8) || (msgCtx->textBoxType == TEXTBOX_TYPE_9) ||
(msgCtx->textBoxType == TEXTBOX_TYPE_B) || (msgCtx->unk11F0C == 3)) {
Audio_PlaySfx((msgCtx->decodedBuffer.schar[decodedBufPos - 1] << 8) |
msgCtx->decodedBuffer.schar[decodedBufPos]);
sfxHi = msgCtx->decodedBuffer.schar[decodedBufPos - 1] << 8;
sfxHi |= msgCtx->decodedBuffer.schar[decodedBufPos];
Audio_PlaySfx(sfxHi);
}
} else if (curChar == 0x1F) {
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
} else if ((curChar != 0x20) && (curChar >= 9)) {
Font_LoadCharNES(play, curChar, charTexIdx);
charTexIdx += FONT_CHAR_TEX_SIZE;
Font_LoadCharNES(play, curChar, charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
spA4 += sNESFontWidths[curChar - ' '] * msgCtx->textCharScale;
} else if (curChar == 0x20) {
spA4 += 6.0f;
@@ -1885,6 +1874,3 @@ void Message_DecodeNES(PlayState* play) {
msgCtx->msgBufPos++;
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message_nes/Message_DecodeNES.s")
#endif