mirror of
https://github.com/zeldaret/mm.git
synced 2026-05-31 01:15:20 -04:00
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:
@@ -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,3 +1,4 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "fault.h"
|
||||
#include "libc64/fixed_point.h"
|
||||
#include "libc64/sprintf.h"
|
||||
|
||||
+3
-3
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+76
-71
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user