Text Extraction + some Message Docs (#1530)

* Some Decoder WIPs

* Improvements

* POC

* Fix bss

* another newline

* Staff OK

* Cleanup + fix progress script

* script cleanup

* Some docs

* makefile

* Extract text from extract_assets.py

* More docs

* Even more docs

* Other message assets

* Small cleanups

* Clean up decoders/encoders

* Message_SetupLoadItemIcon -> Message_DecodeHeader

* Some more docs

* Remove mkdmadata

* Fade Skippable

* More cmd docs

* 1 left

* Last notes

* HS_TIMER -> HS_TIME

* More general docs

* Format

* Note the charmap conversion for buttons in message_data_fmt_nes.h

* Remove trailing whitespace

* Small fixes

* PR
This commit is contained in:
Derek Hensley
2024-01-19 16:16:57 -08:00
committed by GitHub
parent e32e44ff40
commit fe6494187e
147 changed files with 2338 additions and 2480 deletions
+3 -3
View File
@@ -3,9 +3,9 @@
void Setup_SetRegs(void) {
XREG(2) = 0;
XREG(10) = 0x1A;
XREG(11) = 0x14;
XREG(12) = 0xE;
XREG(10) = 26;
XREG(11) = 20;
XREG(12) = 14;
XREG(13) = 0;
R_A_BTN_Y_OFFSET = 0;
R_MAGIC_CONSUME_TIMER_GIANTS_MASK = 80;
+1
View File
@@ -1,3 +1,4 @@
#include "prevent_bss_reordering.h"
#include "fault.h"
#include "libc64/fixed_point.h"
#include "libc64/sprintf.h"
+3 -3
View File
@@ -1052,8 +1052,8 @@ void CutsceneCmd_Text(PlayState* play, CutsceneContext* csCtx, CsCmdText* cmd) {
// a textbox that is expected to be closed by the user is still open.
endFrame = csCtx->curFrame;
talkState = Message_GetState(&play->msgCtx);
if ((talkState != TEXT_STATE_CLOSING) && (talkState != TEXT_STATE_NONE) && (talkState != TEXT_STATE_7) &&
(talkState != TEXT_STATE_8)) {
if ((talkState != TEXT_STATE_CLOSING) && (talkState != TEXT_STATE_NONE) &&
(talkState != TEXT_STATE_SONG_DEMO_DONE) && (talkState != TEXT_STATE_8)) {
csCtx->curFrame--;
if ((talkState == TEXT_STATE_CHOICE) && Message_ShouldAdvance(play)) {
@@ -1096,7 +1096,7 @@ void CutsceneCmd_Text(PlayState* play, CutsceneContext* csCtx, CsCmdText* cmd) {
}
}
if ((talkState == TEXT_STATE_5) && Message_ShouldAdvance(play)) {
if ((talkState == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
Message_DisplayOcarinaStaff(play, cmd->textId);
}
}
+1 -1
View File
@@ -14,7 +14,7 @@ void Font_LoadCharNES(PlayState* play, u8 codePointIndex, s32 offset) {
}
void Font_LoadMessageBoxEndIcon(Font* font, u16 icon) {
DmaMgr_RequestSync(&font->iconBuf, SEGMENT_ROM_START_OFFSET(message_static, 5 * 0x1000 + icon * FONT_CHAR_TEX_SIZE),
DmaMgr_RequestSync(&font->iconBuf, SEGMENT_ROM_START_OFFSET(message_static, 0x5000 + icon * FONT_CHAR_TEX_SIZE),
FONT_CHAR_TEX_SIZE);
}
+166 -145
View File
@@ -1,3 +1,4 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "z64horse.h"
#include "z64shrink_window.h"
@@ -48,9 +49,23 @@ u16 gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_EVENT_MAX] = {
#undef DEFINE_PERSON
#undef DEFINE_EVENT
// TODO: Scripts
// Include message tables D_801C6B98 and D_801CFB08
#include "src/code/z_message_tables.inc.c"
#define DEFINE_MESSAGE(textId, typePos, msg) { textId, typePos, _message_##textId },
MessageTableEntry sMessageTableNES[] = {
#include "assets/text/message_data.h"
{ 0xFFFF, 0, NULL },
};
#undef DEFINE_MESSAGE
#define DEFINE_MESSAGE(textId, typePos, msg) { textId, typePos, _message_##textId##_staff },
MessageTableEntry sMessageTableCredits[] = {
#include "assets/text/staff_message_data.h"
{ 0xFFFF, 0, NULL },
};
#undef DEFINE_MESSAGE
s16 D_801CFC78[TEXTBOX_TYPE_MAX] = {
0, // TEXTBOX_TYPE_0
@@ -135,7 +150,8 @@ bool Message_ShouldAdvance(PlayState* play) {
MessageContext* msgCtx = &play->msgCtx;
Input* controller = CONTROLLER1(&play->state);
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_11)) {
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_THREE_CHOICE)) {
if (CHECK_BTN_ALL(controller->press.button, BTN_A)) {
Audio_PlaySfx(NA_SE_SY_MESSAGE_PASS);
}
@@ -154,7 +170,8 @@ bool Message_ShouldAdvanceSilent(PlayState* play) {
MessageContext* msgCtx = &play->msgCtx;
Input* controller = CONTROLLER1(&play->state);
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_11)) {
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_THREE_CHOICE)) {
return CHECK_BTN_ALL(controller->press.button, BTN_A);
} else {
return CHECK_BTN_ALL(controller->press.button, BTN_A) || CHECK_BTN_ALL(controller->press.button, BTN_B) ||
@@ -168,7 +185,7 @@ void Message_CloseTextbox(PlayState* play) {
if (play->msgCtx.msgLength != 0) {
msgCtx->stateTimer = 2;
msgCtx->msgMode = MSGMODE_TEXT_CLOSING;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_00;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_DEFAULT;
Audio_PlaySfx(NA_SE_NONE);
}
}
@@ -552,9 +569,9 @@ void func_80148D64(PlayState* play) {
sAnalogStickHeld = false;
}
msgCtx->bankRupeesSelected = (msgCtx->decodedBuffer.schar[msgCtx->unk120C0] - '0') * 100;
msgCtx->bankRupeesSelected += (msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + 1] - '0') * 10;
msgCtx->bankRupeesSelected += msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + 2] - '0';
msgCtx->rupeesSelected = (msgCtx->decodedBuffer.schar[msgCtx->unk120C0] - '0') * 100;
msgCtx->rupeesSelected += (msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + 1] - '0') * 10;
msgCtx->rupeesSelected += msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + 2] - '0';
}
void func_80149048(PlayState* play) {
@@ -578,7 +595,7 @@ void func_80149048(PlayState* play) {
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
}
msgCtx->bankRupeesSelected = (msgCtx->decodedBuffer.schar[msgCtx->unk120C0] - '0') * 10;
msgCtx->rupeesSelected = (msgCtx->decodedBuffer.schar[msgCtx->unk120C0] - '0') * 10;
}
void func_801491DC(PlayState* play) {
@@ -782,7 +799,7 @@ void Message_GrowTextbox(PlayState* play) {
void Message_FindMessage(PlayState* play, u16 textId) {
MessageContext* msgCtx = &play->msgCtx;
Font* font = &msgCtx->font;
MessageTableEntry* msgEntry = msgCtx->messageEntryTable;
MessageTableEntry* msgEntry = msgCtx->messageTable;
const char* segment = msgEntry->segment;
const char* foundSegment;
const char* nextSegment;
@@ -799,7 +816,7 @@ void Message_FindMessage(PlayState* play, u16 textId) {
msgEntry++;
}
msgEntry = msgCtx->messageEntryTable;
msgEntry = msgCtx->messageTable;
foundSegment = msgEntry->segment;
msgEntry++;
nextSegment = msgEntry->segment;
@@ -1031,11 +1048,11 @@ Color_RGB16 D_801CFE74[] = {
{ 255, 120, 0 }, { 70, 255, 80 }, { 80, 110, 255 }, { 255, 255, 30 },
{ 90, 180, 255 }, { 210, 100, 255 }, { 170, 170, 170 }, { 255, 130, 30 },
};
Color_RGB16 D_801CFEA4[] = {
static Color_RGB16 sColorsNormalJPN[] = {
{ 255, 60, 60 }, { 70, 255, 80 }, { 80, 90, 255 }, { 255, 255, 50 },
{ 80, 150, 255 }, { 255, 150, 180 }, { 170, 170, 170 }, { 255, 130, 30 },
};
Color_RGB16 D_801CFED4[] = {
static Color_RGB16 sColorsButtonsJPN[] = {
{ 255, 60, 60 }, { 70, 255, 80 }, { 80, 90, 255 }, { 255, 255, 50 },
{ 80, 150, 255 }, { 255, 150, 180 }, { 180, 180, 200 }, { 255, 130, 30 },
};
@@ -1043,12 +1060,12 @@ Color_RGB16 D_801CFF04[] = {
{ 195, 0, 0 }, { 70, 255, 80 }, { 80, 90, 255 }, { 255, 255, 50 },
{ 80, 150, 255 }, { 255, 150, 180 }, { 170, 170, 170 }, { 255, 130, 30 },
};
Color_RGB16 D_801CFF34[] = {
static Color_RGB16 sColorsBombersNotebookJPN[] = {
{ 255, 60, 60 }, { 110, 170, 255 }, { 80, 90, 255 }, { 255, 255, 50 },
{ 80, 150, 255 }, { 255, 150, 180 }, { 170, 170, 170 }, { 255, 130, 30 },
};
u8 D_801CFF64[] = { 2, 1, 3, 6, 6, 6, 3, 3, 3, 3, 1, 6 };
static u8 sButtonColorIndicesJPN[] = { 2, 1, 3, 6, 6, 6, 3, 3, 3, 3, 1, 6 };
#define MESSAGE_ITEM_NONE 9999
@@ -1061,9 +1078,9 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
Gfx* gfx = *gfxP;
u16 character;
s16 sp130;
s16 sp12E;
s16 sp12C;
s16 sp12A;
s16 prevR;
s16 prevG;
s16 prevB;
u16 lookAheadCharacter;
play->msgCtx.textPosX = play->msgCtx.unk11F1A[0] + play->msgCtx.unk11FF8;
@@ -1135,9 +1152,9 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
msgCtx->textColorB = D_801CFE74[(s16)(character - 0x2001)].b + msgCtx->unk120D4;
}
} else if (play->pauseCtx.bombersNotebookOpen) {
msgCtx->textColorR = D_801CFF34[(s16)(character - 0x2001)].r;
msgCtx->textColorG = D_801CFF34[(s16)(character - 0x2001)].g;
msgCtx->textColorB = D_801CFF34[(s16)(character - 0x2001)].b;
msgCtx->textColorR = sColorsBombersNotebookJPN[(s16)(character - 0x2001)].r;
msgCtx->textColorG = sColorsBombersNotebookJPN[(s16)(character - 0x2001)].g;
msgCtx->textColorB = sColorsBombersNotebookJPN[(s16)(character - 0x2001)].b;
} else if (msgCtx->textBoxType == TEXTBOX_TYPE_1) {
msgCtx->textColorR = D_801CFE74[(s16)(character - 0x2001)].r;
msgCtx->textColorG = D_801CFE74[(s16)(character - 0x2001)].g;
@@ -1147,9 +1164,9 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
msgCtx->textColorG = D_801CFF04[(s16)(character - 0x2001)].g;
msgCtx->textColorB = D_801CFF04[(s16)(character - 0x2001)].b;
} else {
msgCtx->textColorR = D_801CFEA4[(s16)(character - 0x2001)].r;
msgCtx->textColorG = D_801CFEA4[(s16)(character - 0x2001)].g;
msgCtx->textColorB = D_801CFEA4[(s16)(character - 0x2001)].b;
msgCtx->textColorR = sColorsNormalJPN[(s16)(character - 0x2001)].r;
msgCtx->textColorG = sColorsNormalJPN[(s16)(character - 0x2001)].g;
msgCtx->textColorB = sColorsNormalJPN[(s16)(character - 0x2001)].b;
}
if ((i + 1) == msgCtx->textDrawPos) {
@@ -1237,9 +1254,9 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
if (msgCtx->unk11F0C == 3) {
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_55;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADE_STAGES_1;
} else {
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_50;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADE_NORMAL;
}
msgCtx->stateTimer = msgCtx->decodedBuffer.wchar[++i];
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 1);
@@ -1253,7 +1270,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
case 0x112:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_52;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADE_SKIPPABLE;
msgCtx->stateTimer = msgCtx->decodedBuffer.wchar[++i];
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 1);
if (play->csCtx.state == CS_STATE_IDLE) {
@@ -1338,7 +1355,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
break;
case 0x202:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_10;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_TWO_CHOICE;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->choiceTextId = msgCtx->currentTextId;
@@ -1348,7 +1365,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
break;
case 0x203:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_11;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_THREE_CHOICE;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->choiceTextId = msgCtx->currentTextId;
@@ -1358,7 +1375,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
break;
case 0x20C:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_60;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_INPUT_BANK;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 1);
@@ -1366,7 +1383,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
break;
case 0x220:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_61;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_INPUT_DOGGY_RACETRACK_BET;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 1);
@@ -1374,7 +1391,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
break;
case 0x221:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_62;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_INPUT_BOMBER_CODE;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 1);
@@ -1384,14 +1401,14 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
case 0x222:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_41;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_PAUSE_MENU;
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 0);
Audio_PlaySfx(NA_SE_SY_MESSAGE_END);
}
break;
case 0x225:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_63;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_INPUT_LOTTERY_CODE;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 1);
@@ -1407,7 +1424,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
return;
}
msgCtx->msgMode = MSGMODE_TEXT_DONE;
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_00) {
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_DEFAULT) {
Audio_PlaySfx(NA_SE_SY_MESSAGE_END);
if (character == 0x500) {
Font_LoadMessageBoxEndIcon(font, 1);
@@ -1428,7 +1445,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Audio_PlaySfx(NA_SE_NONE);
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_30;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_PERSISTENT;
}
*gfxP = gfx;
return;
@@ -1436,7 +1453,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
case 0x103:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_40;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_EVENT;
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 0);
Audio_PlaySfx(NA_SE_SY_MESSAGE_END);
}
@@ -1446,7 +1463,7 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
case 0x230:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_42;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_EVENT2;
Font_LoadMessageBoxEndIcon(&play->msgCtx.font, 1);
Audio_PlaySfx(NA_SE_SY_MESSAGE_END);
}
@@ -1478,16 +1495,16 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
}
if ((character >= 0x839F) && (character < 0x83AB)) {
sp12E = msgCtx->textColorR;
sp12C = msgCtx->textColorG;
sp12A = msgCtx->textColorB;
msgCtx->textColorR = D_801CFED4[(s16)D_801CFF64[character - 0x839F]].r;
msgCtx->textColorG = D_801CFED4[(s16)D_801CFF64[character - 0x839F]].g;
msgCtx->textColorB = D_801CFED4[(s16)D_801CFF64[character - 0x839F]].b;
prevR = msgCtx->textColorR;
prevG = msgCtx->textColorG;
prevB = msgCtx->textColorB;
msgCtx->textColorR = sColorsButtonsJPN[(s16)sButtonColorIndicesJPN[character - 0x839F]].r;
msgCtx->textColorG = sColorsButtonsJPN[(s16)sButtonColorIndicesJPN[character - 0x839F]].g;
msgCtx->textColorB = sColorsButtonsJPN[(s16)sButtonColorIndicesJPN[character - 0x839F]].b;
Message_DrawTextChar(play, &font->charBuf[font->unk_11D88][charTexIndex], &gfx);
msgCtx->textColorR = sp12E;
msgCtx->textColorG = sp12C;
msgCtx->textColorB = sp12A;
msgCtx->textColorR = prevR;
msgCtx->textColorG = prevG;
msgCtx->textColorB = prevB;
} else {
Message_DrawTextChar(play, &font->charBuf[font->unk_11D88][charTexIndex], &gfx);
}
@@ -1952,7 +1969,7 @@ void Message_GetTimerDigits(OSTime time, s16 digits[8]) {
digits[7] = t;
}
void Message_SetupLoadItemIcon(PlayState* play) {
void Message_DecodeHeader(PlayState* play) {
Font* font;
MessageContext* msgCtx = &play->msgCtx;
@@ -2138,15 +2155,13 @@ void Message_LoadOwlWarpText(PlayState* play, s32* offset, f32* arg2, s16* decod
*arg2 = sp3C;
}
// Counterpart to NES D_801D08D8
u16 D_801D0268[][3] = {
u16 sTimeSpeedTextJPN[][3] = {
{ 0x82CD, 0x82E2, 0x82A2 },
{ 0x82D3, 0x82C2, 0x82A4 },
{ 0x82A8, 0x82BB, 0x82A2 },
};
// Counterpart to NES D_801D08E4
u16 D_801D027C[] = { 0x2001, 0x2003, 0x2004, 0x2002 };
u16 sMaskCodeColorCmdJPN[] = { 0x2001, 0x2003, 0x2004, 0x2002 };
// Counterpart to NES sMaskCodeTextENG
u16 D_801D0284[] = { 0x90D4, 0x90C2, 0x89A9, 0x97CE };
@@ -2186,7 +2201,7 @@ void Message_Decode(PlayState* play) {
numLines = 0;
decodedBufPos = 0;
charTexIndex = 0;
Message_SetupLoadItemIcon(play);
Message_DecodeHeader(play);
while (true) {
curChar = msgCtx->decodedBuffer.wchar[decodedBufPos] = font->msgBuf.wchar[msgCtx->msgBufPos];
@@ -2383,7 +2398,7 @@ void Message_Decode(PlayState* play) {
msgCtx->unk120BE = spD2;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 2;
msgCtx->bankRupeesSelected = 0;
msgCtx->rupeesSelected = 0;
msgCtx->unk120C4 = charTexIndex;
digits[0] = digits[1] = digits[2] = 0;
@@ -2394,7 +2409,7 @@ void Message_Decode(PlayState* play) {
func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0);
} else if (curChar == 0x20D) {
digits[0] = digits[1] = 0;
digits[2] = msgCtx->bankRupeesSelected;
digits[2] = msgCtx->rupeesSelected;
while (digits[2] >= 100) {
digits[0]++;
@@ -2419,7 +2434,7 @@ void Message_Decode(PlayState* play) {
func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0);
} else if (curChar == 0x20E) {
digits[0] = digits[1] = digits[2] = 0;
digits[3] = msgCtx->bankRupees;
digits[3] = msgCtx->rupeesTotal;
while (digits[3] >= 1000) {
digits[0]++;
@@ -2546,7 +2561,7 @@ void Message_Decode(PlayState* play) {
msgCtx->unk120BE = spD2;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->rupeesSelected = 0;
msgCtx->unk120C4 = charTexIndex;
digits[0] = digits[1] = digits[2] = 0;
for (i = 0; i < 2; i++) {
@@ -2559,7 +2574,7 @@ void Message_Decode(PlayState* play) {
msgCtx->unk120BE = spD2;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->rupeesSelected = 0;
msgCtx->unk120C4 = charTexIndex;
for (i = 0; i < 5; i++) {
@@ -2578,8 +2593,8 @@ void Message_Decode(PlayState* play) {
}
for (i = 0; i < 3; i++, decodedBufPos++) {
msgCtx->decodedBuffer.wchar[decodedBufPos] = D_801D0268[index][i];
Font_LoadChar(play, D_801D0268[index][i], charTexIndex);
msgCtx->decodedBuffer.wchar[decodedBufPos] = sTimeSpeedTextJPN[index][i];
Font_LoadChar(play, sTimeSpeedTextJPN[index][i], charTexIndex);
charTexIndex += FONT_CHAR_TEX_SIZE;
}
decodedBufPos--;
@@ -2592,7 +2607,7 @@ void Message_Decode(PlayState* play) {
msgCtx->unk120BE = spD2;
msgCtx->unk120C0 = decodedBufPos;
msgCtx->unk120C2 = 0;
msgCtx->bankRupeesSelected = 0;
msgCtx->rupeesSelected = 0;
msgCtx->unk120C4 = charTexIndex;
for (i = 0; i < 3; i++) {
@@ -2607,7 +2622,7 @@ void Message_Decode(PlayState* play) {
} else if (curChar == 0x226) {
for (i = 0; i < 6; i++) {
msgCtx->decodedBuffer.wchar[decodedBufPos] =
D_801D027C[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[i])];
sMaskCodeColorCmdJPN[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[i])];
decodedBufPos++;
Message_LoadChar(play, i + 0x8250, &charTexIndex, &spC0, decodedBufPos);
decodedBufPos++;
@@ -2732,8 +2747,8 @@ void Message_Decode(PlayState* play) {
}
decodedBufPos--;
} else if ((curChar >= 0x231) && (curChar < 0x237)) {
msgCtx->decodedBuffer.wchar[decodedBufPos] =
D_801D027C[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0x231)])];
msgCtx->decodedBuffer.wchar[decodedBufPos] = sMaskCodeColorCmdJPN[(
(void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0x231)])];
decodedBufPos++;
Message_LoadChar(
play,
@@ -3182,7 +3197,7 @@ void Message_OpenText(PlayState* play, u16 textId) {
msgCtx->choiceNum = 0;
msgCtx->textUnskippable = false;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_00;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_DEFAULT;
msgCtx->textDrawPos = 0;
msgCtx->msgBufPos = 0;
msgCtx->decodedTextLen = 0;
@@ -3275,7 +3290,7 @@ void func_801514B0(PlayState* play, u16 arg1, u8 arg2) {
}
msgCtx->choiceNum = 0;
msgCtx->textUnskippable = false;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_00;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_DEFAULT;
msgCtx->textDrawPos = 0;
msgCtx->msgBufPos = 0;
msgCtx->decodedTextLen = 0;
@@ -3285,7 +3300,7 @@ void func_801514B0(PlayState* play, u16 arg1, u8 arg2) {
msgCtx->textBoxPos = arg2;
msgCtx->unk11F0C = msgCtx->unk11F08 & 0xF;
msgCtx->textUnskippable = true;
DmaMgr_RequestSync(msgCtx->textboxSegment, SEGMENT_ROM_START(message_static) + (D_801CFC78[0] << 12), 0x1000);
DmaMgr_RequestSync(msgCtx->textboxSegment, SEGMENT_ROM_START(message_static) + (D_801CFC78[0] * 0x1000), 0x1000);
msgCtx->textboxColorRed = 0;
msgCtx->textboxColorGreen = 0;
msgCtx->textboxColorBlue = 0;
@@ -3610,30 +3625,33 @@ u8 Message_GetState(MessageContext* msgCtx) {
if (msgCtx->msgMode == MSGMODE_TEXT_DONE) {
if (msgCtx->nextTextId != 0xFFFF) {
return TEXT_STATE_1;
return TEXT_STATE_NEXT;
}
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_11)) {
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_THREE_CHOICE)) {
return TEXT_STATE_CHOICE;
}
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_40) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_42) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_30)) {
return TEXT_STATE_5;
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_EVENT) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_EVENT2) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_PERSISTENT)) {
return TEXT_STATE_EVENT;
}
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_41) {
return TEXT_STATE_16;
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_PAUSE_MENU) {
return TEXT_STATE_PAUSE_MENU;
}
if ((msgCtx->textboxEndType >= TEXTBOX_ENDTYPE_50) && (msgCtx->textboxEndType <= TEXTBOX_ENDTYPE_57)) {
return TEXT_STATE_3;
if ((msgCtx->textboxEndType >= TEXTBOX_ENDTYPE_FADE_NORMAL) &&
(msgCtx->textboxEndType <= TEXTBOX_ENDTYPE_FADE_STAGES_3)) {
return TEXT_STATE_FADING;
}
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_60) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_61)) {
return TEXT_STATE_14;
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_INPUT_BANK) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_INPUT_DOGGY_RACETRACK_BET)) {
return TEXT_STATE_INPUT_RUPEES;
}
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_62) {
return TEXT_STATE_15;
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_INPUT_BOMBER_CODE) {
return TEXT_STATE_INPUT_BOMBER_CODE;
}
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_63) {
return TEXT_STATE_17;
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_INPUT_LOTTERY_CODE) {
return TEXT_STATE_INPUT_LOTTERY_CODE;
}
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_12) {
return TEXT_STATE_18;
@@ -3642,10 +3660,10 @@ u8 Message_GetState(MessageContext* msgCtx) {
}
if (msgCtx->msgMode == MSGMODE_TEXT_AWAIT_NEXT) {
return TEXT_STATE_10;
return TEXT_STATE_AWAITING_NEXT;
}
if (msgCtx->msgMode == MSGMODE_SONG_DEMONSTRATION_DONE) {
return TEXT_STATE_7;
return TEXT_STATE_SONG_DEMO_DONE;
}
if ((msgCtx->ocarinaMode == OCARINA_MODE_EVENT) || (msgCtx->msgMode == MSGMODE_37)) {
return TEXT_STATE_8;
@@ -3667,7 +3685,7 @@ u8 Message_GetState(MessageContext* msgCtx) {
return TEXT_STATE_CLOSING;
}
return TEXT_STATE_3;
return TEXT_STATE_FADING;
}
void Message_DrawTextBox(PlayState* play, Gfx** gfxP) {
@@ -4964,7 +4982,7 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
case MSGMODE_TEXT_DONE:
switch (msgCtx->textboxEndType) {
case TEXTBOX_ENDTYPE_60:
case TEXTBOX_ENDTYPE_INPUT_BANK:
temp_v0_33 = msgCtx->unk120BE;
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
func_80147F18(play, &gfx,
@@ -4974,7 +4992,7 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
func_80148D64(play);
break;
case TEXTBOX_ENDTYPE_61:
case TEXTBOX_ENDTYPE_INPUT_DOGGY_RACETRACK_BET:
temp_v0_33 = msgCtx->unk120BE;
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
func_80148558(play, &gfx,
@@ -4983,7 +5001,7 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
func_80149048(play);
break;
case TEXTBOX_ENDTYPE_62:
case TEXTBOX_ENDTYPE_INPUT_BOMBER_CODE:
temp_v0_33 = msgCtx->unk120BE;
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
func_80147F18(play, &gfx,
@@ -4993,7 +5011,7 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
func_801491DC(play);
break;
case TEXTBOX_ENDTYPE_63:
case TEXTBOX_ENDTYPE_INPUT_LOTTERY_CODE:
temp_v0_33 = msgCtx->unk120BE;
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
func_80147F18(play, &gfx,
@@ -5024,11 +5042,11 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
Message_DrawText(play, &gfx);
switch (msgCtx->textboxEndType) {
case TEXTBOX_ENDTYPE_10:
case TEXTBOX_ENDTYPE_TWO_CHOICE:
func_80148CBC(play, &gfx, 1);
break;
case TEXTBOX_ENDTYPE_11:
case TEXTBOX_ENDTYPE_THREE_CHOICE:
func_80148CBC(play, &gfx, 2);
break;
@@ -5036,25 +5054,25 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
func_80148CBC(play, &gfx, 1);
break;
case TEXTBOX_ENDTYPE_30:
case TEXTBOX_ENDTYPE_41:
case TEXTBOX_ENDTYPE_50:
case TEXTBOX_ENDTYPE_52:
case TEXTBOX_ENDTYPE_55:
case TEXTBOX_ENDTYPE_56:
case TEXTBOX_ENDTYPE_57:
case TEXTBOX_ENDTYPE_62:
case TEXTBOX_ENDTYPE_PERSISTENT:
case TEXTBOX_ENDTYPE_PAUSE_MENU:
case TEXTBOX_ENDTYPE_FADE_NORMAL:
case TEXTBOX_ENDTYPE_FADE_SKIPPABLE:
case TEXTBOX_ENDTYPE_FADE_STAGES_1:
case TEXTBOX_ENDTYPE_FADE_STAGES_2:
case TEXTBOX_ENDTYPE_FADE_STAGES_3:
case TEXTBOX_ENDTYPE_INPUT_BOMBER_CODE:
break;
case TEXTBOX_ENDTYPE_40:
case TEXTBOX_ENDTYPE_60:
case TEXTBOX_ENDTYPE_61:
case TEXTBOX_ENDTYPE_EVENT:
case TEXTBOX_ENDTYPE_INPUT_BANK:
case TEXTBOX_ENDTYPE_INPUT_DOGGY_RACETRACK_BET:
default:
Message_DrawTextboxIcon(play, &gfx, 158,
(s16)(D_801D03A8[msgCtx->textBoxType] + msgCtx->textboxYTarget));
break;
case TEXTBOX_ENDTYPE_42:
case TEXTBOX_ENDTYPE_EVENT2:
Message_DrawTextboxIcon(play, &gfx, 158,
(s16)(D_801D03A8[msgCtx->textBoxType] + msgCtx->textboxYTarget));
break;
@@ -5343,7 +5361,7 @@ void Message_Update(PlayState* play) {
} else if (msgCtx->textBoxPos == 2) {
msgCtx->textboxYTarget = sTextboxMidYPositions[var_v1];
} else if (msgCtx->textBoxPos == 7) {
msgCtx->textboxYTarget = 0x9E;
msgCtx->textboxYTarget = 158;
} else {
msgCtx->textboxYTarget = sTextboxLowerYPositions[var_v1];
}
@@ -5352,12 +5370,12 @@ void Message_Update(PlayState* play) {
if ((gSaveContext.options.language == LANGUAGE_JPN) && !msgCtx->textIsCredits) {
msgCtx->unk11FFE[0] = (s16)(msgCtx->textboxYTarget + 7);
msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 0x19);
msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 0x2B);
msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 25);
msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 43);
} else {
msgCtx->unk11FFE[0] = (s16)(msgCtx->textboxYTarget + 0x14);
msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 0x20);
msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 0x2C);
msgCtx->unk11FFE[0] = (s16)(msgCtx->textboxYTarget + 20);
msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 32);
msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 44);
}
if ((msgCtx->textBoxType == TEXTBOX_TYPE_4) || (msgCtx->textBoxType == TEXTBOX_TYPE_5)) {
@@ -5467,10 +5485,11 @@ void Message_Update(PlayState* play) {
break;
case MSGMODE_TEXT_DONE:
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_50) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_52)) {
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_NORMAL) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_SKIPPABLE)) {
msgCtx->stateTimer--;
if ((msgCtx->stateTimer == 0) ||
((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_52) && Message_ShouldAdvance(play))) {
((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_SKIPPABLE) && Message_ShouldAdvance(play))) {
if (msgCtx->nextTextId != 0xFFFF) {
Audio_PlaySfx(NA_SE_SY_MESSAGE_PASS);
Message_ContinueTextbox(play, msgCtx->nextTextId);
@@ -5483,28 +5502,30 @@ void Message_Update(PlayState* play) {
}
}
} else {
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_30) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_40) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_42) || (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_41)) {
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_PERSISTENT) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_EVENT) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_EVENT2) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_PAUSE_MENU)) {
return;
}
switch (msgCtx->textboxEndType) {
case TEXTBOX_ENDTYPE_55:
case TEXTBOX_ENDTYPE_FADE_STAGES_1:
msgCtx->textColorAlpha += 20;
if (msgCtx->textColorAlpha >= 255) {
msgCtx->textColorAlpha = 255;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_56;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADE_STAGES_2;
}
break;
case TEXTBOX_ENDTYPE_56:
case TEXTBOX_ENDTYPE_FADE_STAGES_2:
msgCtx->stateTimer--;
if (msgCtx->stateTimer == 0) {
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_57;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADE_STAGES_3;
}
break;
case TEXTBOX_ENDTYPE_57:
case TEXTBOX_ENDTYPE_FADE_STAGES_3:
msgCtx->textColorAlpha -= 20;
if (msgCtx->textColorAlpha <= 0) {
msgCtx->textColorAlpha = 0;
@@ -5525,11 +5546,11 @@ void Message_Update(PlayState* play) {
}
break;
case TEXTBOX_ENDTYPE_10:
case TEXTBOX_ENDTYPE_TWO_CHOICE:
Message_HandleChoiceSelection(play, 1);
break;
case TEXTBOX_ENDTYPE_11:
case TEXTBOX_ENDTYPE_THREE_CHOICE:
Message_HandleChoiceSelection(play, 2);
break;
@@ -5541,7 +5562,7 @@ void Message_Update(PlayState* play) {
break;
}
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) &&
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) &&
(play->msgCtx.ocarinaMode == OCARINA_MODE_ACTIVE)) {
if (Message_ShouldAdvance(play)) {
if (msgCtx->choiceIndex == 0) {
@@ -5551,7 +5572,7 @@ void Message_Update(PlayState* play) {
}
Message_CloseTextbox(play);
}
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) &&
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) &&
(play->msgCtx.ocarinaMode == OCARINA_MODE_PROCESS_SOT)) {
if (Message_ShouldAdvance(play)) {
if (msgCtx->choiceIndex == 0) {
@@ -5566,7 +5587,7 @@ void Message_Update(PlayState* play) {
Message_CloseTextbox(play);
}
}
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) &&
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) &&
(play->msgCtx.ocarinaMode == OCARINA_MODE_PROCESS_INVERTED_TIME)) {
if (Message_ShouldAdvance(play)) {
if (msgCtx->choiceIndex == 0) {
@@ -5585,7 +5606,7 @@ void Message_Update(PlayState* play) {
Message_CloseTextbox(play);
}
}
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) &&
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) &&
(play->msgCtx.ocarinaMode == OCARINA_MODE_PROCESS_DOUBLE_TIME)) {
if (Message_ShouldAdvance(play)) {
if (msgCtx->choiceIndex == 0) {
@@ -5603,9 +5624,9 @@ void Message_Update(PlayState* play) {
}
Message_CloseTextbox(play);
}
} else if ((msgCtx->textboxEndType != TEXTBOX_ENDTYPE_10) ||
} else if ((msgCtx->textboxEndType != TEXTBOX_ENDTYPE_TWO_CHOICE) ||
(pauseCtx->state != PAUSE_STATE_OWL_WARP_CONFIRM)) {
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) &&
if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) &&
(play->msgCtx.ocarinaMode == OCARINA_MODE_1B)) {
if (Message_ShouldAdvance(play)) {
if (msgCtx->choiceIndex == 0) {
@@ -5617,18 +5638,18 @@ void Message_Update(PlayState* play) {
}
Message_CloseTextbox(play);
}
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_60) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_61) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_10) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_11) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_50) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_52) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_55) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_56) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_57) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_62)) {
} else if ((msgCtx->textboxEndType == TEXTBOX_ENDTYPE_INPUT_BANK) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_INPUT_DOGGY_RACETRACK_BET) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_TWO_CHOICE) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_THREE_CHOICE) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_NORMAL) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_SKIPPABLE) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_STAGES_1) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_STAGES_2) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_STAGES_3) ||
(msgCtx->textboxEndType == TEXTBOX_ENDTYPE_INPUT_BOMBER_CODE)) {
//! FAKE: debug?
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_50) {}
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_FADE_NORMAL) {}
} else if (pauseCtx->itemDescriptionOn) {
if ((input->rel.stick_x != 0) || (input->rel.stick_y != 0) ||
CHECK_BTN_ALL(input->press.button, BTN_A) || CHECK_BTN_ALL(input->press.button, BTN_B) ||
@@ -5748,11 +5769,11 @@ void Message_Update(PlayState* play) {
pauseCtx->itemDescriptionOn = false;
}
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_30) {
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_00;
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_PERSISTENT) {
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_DEFAULT;
play->msgCtx.ocarinaMode = OCARINA_MODE_WARP;
} else {
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_00;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_DEFAULT;
}
if (EQ_MAX_QUEST_HEART_PIECE_COUNT) {
@@ -5989,8 +6010,8 @@ void Message_Update(PlayState* play) {
}
void Message_SetTables(PlayState* play) {
play->msgCtx.messageEntryTableNes = D_801C6B98;
play->msgCtx.messageTableStaff = D_801CFB08;
play->msgCtx.messageTableNES = sMessageTableNES;
play->msgCtx.messageTableCredits = sMessageTableCredits;
}
void Message_Init(PlayState* play) {
@@ -6004,10 +6025,10 @@ void Message_Init(PlayState* play) {
msgCtx->msgMode = MSGMODE_NONE;
msgCtx->msgLength = 0;
msgCtx->currentTextId = 0;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_00;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_DEFAULT;
msgCtx->choiceIndex = 0;
msgCtx->ocarinaAction = msgCtx->textUnskippable = 0;
msgCtx->textColorAlpha = 0xFF;
msgCtx->textColorAlpha = 255;
View_Init(&msgCtx->view, play->state.gfxCtx);
+275 -216
View File
File diff suppressed because it is too large Load Diff
+76 -71
View File
@@ -1,10 +1,11 @@
#include "global.h"
#include "message_data_fmt_staff.h"
#include "message_data_static.h"
void Message_FindCreditsMessage(PlayState* play, u16 textId) {
MessageContext* msgCtx = &play->msgCtx;
Font* font = &msgCtx->font;
MessageTableEntry* msgEntry = msgCtx->messageTableStaff;
MessageTableEntry* msgEntry = msgCtx->messageTableCredits;
const char* segment = msgEntry->segment;
const char* foundSegment;
const char* nextSegment;
@@ -66,7 +67,7 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
character = msgCtx->decodedBuffer.schar[i];
switch (character) {
case 0x1: // MESSAGE_NEWLINE
case MESSAGE_NEWLINE:
msgCtx->textPosX = msgCtx->unk11FF8;
if ((msgCtx->choiceNum == 1) || (msgCtx->choiceNum == 3)) {
msgCtx->textPosX += 32;
@@ -77,14 +78,14 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
msgCtx->textPosY += msgCtx->unk11FFC;
break;
case 0x5: // Remnant of MESSAGE_COLOR
case MESSAGE_COLOR:
break;
case ' ':
msgCtx->textPosX += 6;
break;
case 0x4: // MESSAGE_BOX_BREAK
case MESSAGE_BOX_BREAK:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
if (!msgCtx->textboxSkipped) {
Audio_PlaySfx(NA_SE_NONE);
@@ -99,12 +100,12 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
*gfxP = gfx;
return;
case 0x6: // MESSAGE_SHIFT
case MESSAGE_SHIFT:
msgCtx->textPosX += msgCtx->decodedBuffer.schar[++i];
break;
case 0x7: // MESSAGE_TEXTID
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_20;
case MESSAGE_TEXTID:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_NEXT;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Audio_PlaySfx(NA_SE_NONE);
msgCtx->msgMode = MSGMODE_TEXT_DONE;
@@ -113,7 +114,7 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
*gfxP = gfx;
return;
case 0x8: // MESSAGE_QUICKTEXT_ENABLE
case MESSAGE_QUICKTEXT_ENABLE:
if (((i + 1) == msgCtx->textDrawPos) &&
((msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) ||
((msgCtx->msgMode >= MSGMODE_OCARINA_STARTING) && (msgCtx->msgMode <= MSGMODE_26)))) {
@@ -124,8 +125,10 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
j += 2;
continue;
}
if ((character != 9) && (character != 0xA) && (character != 0xB) && (character != 0xC) &&
(character != 0xD) && (character != 4) && (character != 2)) {
if ((character != MESSAGE_QUICKTEXT_DISABLE) && (character != MESSAGE_PERSISTENT) &&
(character != MESSAGE_EVENT) && (character != MESSAGE_BOX_BREAK_DELAYED) &&
(character != MESSAGE_AWAIT_BUTTON_PRESS) && (character != MESSAGE_BOX_BREAK) &&
(character != MESSAGE_END)) {
j++;
continue;
}
@@ -135,10 +138,10 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
msgCtx->textDrawPos = i + 1;
}
// fallthrough
case 0x9: // MESSAGE_QUICKTEXT_DISABLE
case MESSAGE_QUICKTEXT_DISABLE:
break;
case 0xD: // MESSAGE_AWAIT_BUTTON_PRESS
case MESSAGE_AWAIT_BUTTON_PRESS:
if ((i + 1) == msgCtx->textDrawPos) {
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_AWAIT_INPUT;
@@ -149,7 +152,7 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
}
break;
case 0xC: // MESSAGE_BOX_BREAK_DELAYED
case MESSAGE_BOX_BREAK_DELAYED:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->stateTimer = msgCtx->decodedBuffer.schar[++i];
msgCtx->msgMode = MSGMODE_TEXT_DELAYED_BREAK;
@@ -157,17 +160,17 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
*gfxP = gfx;
return;
case 0x11: // MESSAGE_FADE2
case MESSAGE_FADE2:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_50;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADE_NORMAL;
msgCtx->stateTimer = msgCtx->decodedBuffer.schar[++i] << 8;
msgCtx->stateTimer |= msgCtx->decodedBuffer.schar[++i];
}
*gfxP = gfx;
return;
case 0x12: // MESSAGE_SFX
case MESSAGE_SFX:
if ((msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) && !msgCtx->messageHasSetSfx) {
msgCtx->messageHasSetSfx = true;
sfxHi = msgCtx->decodedBuffer.schar[i + 1];
@@ -177,10 +180,10 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
i += 2;
break;
case 0x13: // remnant of MESSAGE_ITEM_ICON
case MESSAGE_ITEM_ICON:
break;
case 0x15: // MESSAGE_BACKGROUND
case MESSAGE_BACKGROUND:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Audio_PlaySfx(NA_SE_NONE);
}
@@ -192,14 +195,14 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gfx++, (msgCtx->textPosX + 1) << 2, (msgCtx->unk12012 + 1) << 2,
(msgCtx->textPosX + 0x61) << 2, (msgCtx->unk12012 + 0x31) << 2, G_TX_RENDERTILE, 0,
0, 1 << 10, 1 << 10);
(msgCtx->textPosX + 97) << 2, (msgCtx->unk12012 + 49) << 2, G_TX_RENDERTILE, 0, 0,
1 << 10, 1 << 10);
gDPLoadTextureBlock_4b(gfx++, msgCtx->textboxSegment + 0x1900, G_IM_FMT_I, 96, 48, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gfx++, (msgCtx->textPosX + 0x61) << 2, (msgCtx->unk12012 + 1) << 2,
(msgCtx->textPosX + 0xC2) << 2, (msgCtx->unk12012 + 0x31) << 2, 0, 0, 0, 1 << 10,
gSPTextureRectangle(gfx++, (msgCtx->textPosX + 97) << 2, (msgCtx->unk12012 + 1) << 2,
(msgCtx->textPosX + 194) << 2, (msgCtx->unk12012 + 49) << 2, 0, 0, 0, 1 << 10,
1 << 10);
gDPPipeSync(gfx++);
@@ -207,30 +210,30 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
gDPLoadTextureBlock_4b(gfx++, msgCtx->textboxSegment + 0x1000, G_IM_FMT_I, 96, 48, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gfx++, msgCtx->textPosX << 2, msgCtx->unk12012 << 2, (msgCtx->textPosX + 0x60) << 2,
(msgCtx->unk12012 + 0x30) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
gSPTextureRectangle(gfx++, msgCtx->textPosX << 2, msgCtx->unk12012 << 2, (msgCtx->textPosX + 96) << 2,
(msgCtx->unk12012 + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
gDPLoadTextureBlock_4b(gfx++, msgCtx->textboxSegment + 0x1900, G_IM_FMT_I, 96, 48, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gfx++, (msgCtx->textPosX + 0x60) << 2, msgCtx->unk12012 << 2,
(msgCtx->textPosX + 0xC0) << 2, (msgCtx->unk12012 + 0x30) << 2, G_TX_RENDERTILE, 0,
0, 1 << 10, 1 << 10);
gSPTextureRectangle(gfx++, (msgCtx->textPosX + 96) << 2, msgCtx->unk12012 << 2,
(msgCtx->textPosX + 192) << 2, (msgCtx->unk12012 + 48) << 2, G_TX_RENDERTILE, 0, 0,
1 << 10, 1 << 10);
gDPPipeSync(gfx++);
gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0,
PRIMITIVE, 0);
msgCtx->textPosX += 0x20;
msgCtx->textPosX += 32;
break;
case 0x14: // MESSAGE_TEXT_SPEED
case MESSAGE_TEXT_SPEED:
msgCtx->textDelay = msgCtx->decodedBuffer.schar[++i];
break;
case 0x1A: // MESSAGE_UNSKIPPABLE
case MESSAGE_UNSKIPPABLE:
msgCtx->textUnskippable = true;
break;
case 0x1B: // MESSAGE_TWO_CHOICE
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_10;
case MESSAGE_TWO_CHOICE:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_TWO_CHOICE;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->choiceTextId = msgCtx->currentTextId;
msgCtx->stateTimer = 4;
@@ -239,8 +242,8 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
}
break;
case 0x1C: // MESSAGE_THREE_CHOICE
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_11;
case MESSAGE_THREE_CHOICE:
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_THREE_CHOICE;
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->choiceTextId = msgCtx->currentTextId;
msgCtx->stateTimer = 4;
@@ -249,10 +252,10 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
}
break;
case 0x2: // MESSAGE_END
case MESSAGE_END:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_00) {
if (msgCtx->textboxEndType == TEXTBOX_ENDTYPE_DEFAULT) {
Audio_PlaySfx(NA_SE_SY_MESSAGE_END);
Font_LoadMessageBoxEndIcon(font, 1);
if (play->csCtx.state == CS_STATE_IDLE) {
@@ -263,7 +266,7 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
*gfxP = gfx;
return;
case 0x10: // MESSAGE_OCARINA
case MESSAGE_OCARINA:
if ((i + 1) == msgCtx->textDrawPos) {
Message_HandleOcarina(play);
*gfxP = gfx;
@@ -271,10 +274,10 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
}
break;
case 0xE: // MESSAGE_FADE
case MESSAGE_FADE:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_50;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADE_NORMAL;
msgCtx->stateTimer = msgCtx->decodedBuffer.schar[++i];
Font_LoadMessageBoxEndIcon(font, 1);
if (play->csCtx.state == CS_STATE_IDLE) {
@@ -284,19 +287,19 @@ void Message_DrawTextCredits(PlayState* play, Gfx** gfxP) {
*gfxP = gfx;
return;
case 0xA: // MESSAGE_PERSISTENT
case MESSAGE_PERSISTENT:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
Audio_PlaySfx(NA_SE_NONE);
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_30;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_PERSISTENT;
}
*gfxP = gfx;
return;
case 0xB: // MESSAGE_EVENT
case MESSAGE_EVENT:
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
msgCtx->msgMode = MSGMODE_TEXT_DONE;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_40;
msgCtx->textboxEndType = TEXTBOX_ENDTYPE_EVENT;
Font_LoadMessageBoxEndIcon(font, 0);
Audio_PlaySfx(NA_SE_SY_MESSAGE_END);
}
@@ -347,7 +350,8 @@ void Message_DecodeCredits(PlayState* play) {
curChar = font->msgBuf.schar[msgCtx->msgBufPos];
msgCtx->decodedBuffer.schar[decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos];
if ((curChar == 4) || (curChar == 7) || (curChar == 0xC) || (curChar == 0xB) || (curChar == 2)) {
if ((curChar == MESSAGE_BOX_BREAK) || (curChar == MESSAGE_TEXTID) || (curChar == MESSAGE_BOX_BREAK_DELAYED) ||
(curChar == MESSAGE_EVENT) || (curChar == MESSAGE_END)) {
// Textbox decoding ends with any of the above text control characters
msgCtx->msgMode = MSGMODE_TEXT_DISPLAYING;
msgCtx->textDrawPos = 1;
@@ -363,7 +367,7 @@ void Message_DecodeCredits(PlayState* play) {
}
}
if (curChar == 7) {
if (curChar == MESSAGE_TEXTID) {
value = font->msgBuf.schar[msgCtx->msgBufPos + 1];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 1];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 2];
@@ -371,7 +375,7 @@ void Message_DecodeCredits(PlayState* play) {
msgCtx->nextTextId = msgCtx->decodedBuffer.schar[decodedBufPos] | value;
}
if (curChar == 0xC) {
if (curChar == MESSAGE_BOX_BREAK_DELAYED) {
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 1];
msgCtx->msgBufPos += 2;
}
@@ -382,7 +386,7 @@ void Message_DecodeCredits(PlayState* play) {
msgCtx->textDrawPos = msgCtx->decodedTextLen;
}
break;
} else if (curChar == 0xF) {
} else if (curChar == MESSAGE_NAME) {
// Substitute the player name control character for the file's player name.
for (playerNameLen = ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); playerNameLen > 0;
playerNameLen--) {
@@ -418,7 +422,7 @@ void Message_DecodeCredits(PlayState* play) {
decodedBufPos++;
}
decodedBufPos--;
} else if ((curChar == 0x16) || (curChar == 0x17)) {
} else if ((curChar == MESSAGE_MARATHON_TIME) || (curChar == MESSAGE_RACE_TIME)) {
digits[0] = digits[1] = digits[2] = 0;
if (curChar == 0x17) {
digits[3] = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2];
@@ -457,7 +461,7 @@ void Message_DecodeCredits(PlayState* play) {
}
}
} else if (curChar == 0x18) {
} else if (curChar == MESSAGE_POINTS) {
digits[0] = digits[1] = digits[2] = 0;
digits[3] = gSaveContext.minigameScore;
@@ -487,8 +491,8 @@ void Message_DecodeCredits(PlayState* play) {
}
}
decodedBufPos--;
} else if (curChar != 0x19) {
if (curChar == 0x1D) {
} else if (curChar != MESSAGE_TOKENS) {
if (curChar == MESSAGE_FISH_INFO) {
digits[0] = 0;
digits[1] = gSaveContext.minigameScore;
@@ -506,7 +510,7 @@ void Message_DecodeCredits(PlayState* play) {
}
}
decodedBufPos--;
} else if (curChar == 0x1E) {
} else if (curChar == MESSAGE_HIGHSCORE) {
value = HIGH_SCORE((u8)font->msgBuf.schar[++msgCtx->msgBufPos]);
if ((font->msgBuf.schar[msgCtx->msgBufPos] & 0xFF) == HS_FISHING) {
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
@@ -518,9 +522,9 @@ void Message_DecodeCredits(PlayState* play) {
value = SQ((f32)value) * 0.0036f + 0.5f;
}
switch (font->msgBuf.schar[msgCtx->msgBufPos] & 0xFF) {
case 0:
case 1:
case 2:
case HS_BANK_RUPEES:
case HS_UNK_1:
case HS_FISHING:
digits[0] = digits[1] = digits[2] = 0;
digits[3] = value;
@@ -552,9 +556,9 @@ void Message_DecodeCredits(PlayState* play) {
decodedBufPos--;
break;
case 3:
case 4:
case 6:
case HS_BOAT_ARCHERY:
case HS_HORSE_BACK_BALLOON:
case HS_SHOOTING_GALLERY:
digits[0] = digits[1] = digits[2] = 0;
digits[3] = value;
@@ -592,7 +596,7 @@ void Message_DecodeCredits(PlayState* play) {
default:
break;
}
} else if (curChar == 0x1F) {
} else if (curChar == MESSAGE_TIME) {
digits[0] = 0;
timeInSeconds = TIME_TO_MINUTES_F(CURRENT_TIME);
@@ -623,10 +627,10 @@ void Message_DecodeCredits(PlayState* play) {
}
decodedBufPos--;
} else if (curChar == 0x13) {
} else if (curChar == MESSAGE_ITEM_ICON) {
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 1];
Message_LoadItemIcon(play, font->msgBuf.schar[msgCtx->msgBufPos + 1], msgCtx->textboxY + 10);
} else if (curChar == 0x15) {
} else if (curChar == MESSAGE_BACKGROUND) {
DmaMgr_RequestSync(msgCtx->textboxSegment + 0x1000,
(uintptr_t)SEGMENT_ROM_START(message_texture_static) + 0x900, 0x900);
DmaMgr_RequestSync(msgCtx->textboxSegment + 0x1900,
@@ -634,27 +638,28 @@ void Message_DecodeCredits(PlayState* play) {
msgCtx->msgBufPos += 3;
msgCtx->unk12012 = msgCtx->textboxY + 8;
numLines = 2;
} else if (curChar == 5) {
} else if (curChar == MESSAGE_COLOR) {
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
} else if (curChar == 1) {
} else if (curChar == MESSAGE_NEWLINE) {
numLines++;
} else if ((curChar != 8) && (curChar != 9) && (curChar != 0xD) && (curChar != 0x10) && (curChar != 0xA) &&
(curChar != 0x1A)) {
if (curChar == 0xE) {
} else if ((curChar != MESSAGE_QUICKTEXT_ENABLE) && (curChar != MESSAGE_QUICKTEXT_DISABLE) &&
(curChar != MESSAGE_AWAIT_BUTTON_PRESS) && (curChar != MESSAGE_OCARINA) &&
(curChar != MESSAGE_PERSISTENT) && (curChar != MESSAGE_UNSKIPPABLE)) {
if (curChar == MESSAGE_FADE) {
msgCtx->textFade = true;
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
} else if (curChar == 0x11) {
} else if (curChar == MESSAGE_FADE2) {
msgCtx->textFade = true;
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
} else if ((curChar == 6) || (curChar == 0x14)) {
} else if ((curChar == MESSAGE_SHIFT) || (curChar == MESSAGE_TEXT_SPEED)) {
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos] & 0xFF;
} else if (curChar == 0x12) {
} else if (curChar == MESSAGE_SFX) {
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos];
} else if (curChar == 0x1B) {
} else if (curChar == MESSAGE_TWO_CHOICE) {
msgCtx->choiceNum = 2;
} else if (curChar == 0x1C) {
} else if (curChar == MESSAGE_THREE_CHOICE) {
msgCtx->choiceNum = 3;
} else if (curChar != ' ') {
Font_LoadCharNES(play, curChar, charTexIdx);
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -967,7 +967,7 @@ void Play_UpdateMain(PlayState* this) {
if ((gSaveContext.gameMode == GAMEMODE_NORMAL) &&
(((this->msgCtx.msgMode == MSGMODE_NONE)) ||
((this->msgCtx.currentTextId == 0xFF) && (this->msgCtx.msgMode == MSGMODE_TEXT_DONE) &&
(this->msgCtx.textboxEndType == TEXTBOX_ENDTYPE_41)) ||
(this->msgCtx.textboxEndType == TEXTBOX_ENDTYPE_PAUSE_MENU)) ||
((this->msgCtx.currentTextId >= 0x100) && (this->msgCtx.currentTextId <= 0x200))) &&
(this->gameOverCtx.state == GAMEOVER_INACTIVE)) {
KaleidoSetup_Update(this);