diff --git a/include/z64message.h b/include/z64message.h index da4349d69f..4142ef3245 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -211,7 +211,7 @@ typedef struct MessageContext { /* 0x11FF8 */ s16 unk11FF8; /* 0x11FFA */ s16 unk11FFA; /* 0x11FFC */ s16 unk11FFC; - /* 0x11FFE */ s16 unk11FFE[0x3]; + /* 0x11FFE */ s16 choicePosY[0x3]; /* 0x12004 */ s16 textboxXTarget; /* 0x12006 */ s16 textboxYTarget; /* 0x12008 */ s16 unk12008; diff --git a/src/code/z_message.c b/src/code/z_message.c index 375491e821..dbeba7d3f8 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -524,14 +524,17 @@ void Message_HandleChoiceSelection(PlayState* play, u8 numChoices) { } } -void func_80148CBC(PlayState* play, Gfx** gfxP, u8 arg2) { +/** + * Draws the arrow icon next to the currently selected choice. + */ +void Message_DrawChoiceIcon(PlayState* play, Gfx** gfxP, u8 numChoices) { MessageContext* msgCtx = &play->msgCtx; msgCtx->textPosX = 48; - if (arg2 == 1) { - msgCtx->textPosY = msgCtx->unk11FFE[1 + msgCtx->choiceIndex]; + if (numChoices == 1) { + msgCtx->textPosY = msgCtx->choicePosY[1 + msgCtx->choiceIndex]; } else { - msgCtx->textPosY = msgCtx->unk11FFE[msgCtx->choiceIndex]; + msgCtx->textPosY = msgCtx->choicePosY[msgCtx->choiceIndex]; } Message_DrawTextboxIcon(play, gfxP, msgCtx->textPosX, msgCtx->textPosY); } @@ -5051,15 +5054,15 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) { switch (msgCtx->textboxEndType) { case TEXTBOX_ENDTYPE_TWO_CHOICE: - func_80148CBC(play, &gfx, 1); + Message_DrawChoiceIcon(play, &gfx, 1); break; case TEXTBOX_ENDTYPE_THREE_CHOICE: - func_80148CBC(play, &gfx, 2); + Message_DrawChoiceIcon(play, &gfx, 2); break; case TEXTBOX_ENDTYPE_12: - func_80148CBC(play, &gfx, 1); + Message_DrawChoiceIcon(play, &gfx, 1); break; case TEXTBOX_ENDTYPE_PERSISTENT: @@ -5377,13 +5380,13 @@ void Message_Update(PlayState* play) { msgCtx->textboxXTarget = sTextboxXPositions[var_v1]; if ((gSaveContext.options.language == LANGUAGE_JPN) && !msgCtx->textIsCredits) { - msgCtx->unk11FFE[0] = (s16)(msgCtx->textboxYTarget + 7); - msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 25); - msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 43); + msgCtx->choicePosY[0] = (s16)(msgCtx->textboxYTarget + 7); + msgCtx->choicePosY[1] = (s16)(msgCtx->textboxYTarget + 25); + msgCtx->choicePosY[2] = (s16)(msgCtx->textboxYTarget + 43); } else { - msgCtx->unk11FFE[0] = (s16)(msgCtx->textboxYTarget + 20); - msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 32); - msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 44); + msgCtx->choicePosY[0] = (s16)(msgCtx->textboxYTarget + 20); + msgCtx->choicePosY[1] = (s16)(msgCtx->textboxYTarget + 32); + msgCtx->choicePosY[2] = (s16)(msgCtx->textboxYTarget + 44); } if ((msgCtx->textBoxType == TEXTBOX_TYPE_4) || (msgCtx->textBoxType == TEXTBOX_TYPE_5)) { diff --git a/src/code/z_message_nes.c b/src/code/z_message_nes.c index eeea224953..9e475c51ed 100644 --- a/src/code/z_message_nes.c +++ b/src/code/z_message_nes.c @@ -747,9 +747,9 @@ void Message_DrawTextNES(PlayState* play, Gfx** gfxP, u16 textDrawPos) { msgCtx->stateTimer = 4; Font_LoadMessageBoxEndIcon(font, 2); if (msgCtx->unk120D8 != 3) { - msgCtx->unk11FFE[0] = (s16)(msgCtx->textboxYTarget + 14); - msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 26); - msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 38); + msgCtx->choicePosY[0] = (s16)(msgCtx->textboxYTarget + 14); + msgCtx->choicePosY[1] = (s16)(msgCtx->textboxYTarget + 26); + msgCtx->choicePosY[2] = (s16)(msgCtx->textboxYTarget + 38); } } break; @@ -762,9 +762,9 @@ void Message_DrawTextNES(PlayState* play, Gfx** gfxP, u16 textDrawPos) { msgCtx->stateTimer = 4; Font_LoadMessageBoxEndIcon(font, 2); if (msgCtx->unk120D8 != 3) { - msgCtx->unk11FFE[0] = (s16)(msgCtx->textboxYTarget + 14); - msgCtx->unk11FFE[1] = (s16)(msgCtx->textboxYTarget + 26); - msgCtx->unk11FFE[2] = (s16)(msgCtx->textboxYTarget + 38); + msgCtx->choicePosY[0] = (s16)(msgCtx->textboxYTarget + 14); + msgCtx->choicePosY[1] = (s16)(msgCtx->textboxYTarget + 26); + msgCtx->choicePosY[2] = (s16)(msgCtx->textboxYTarget + 38); } } break; diff --git a/tools/disasm/n64-us/functions.txt b/tools/disasm/n64-us/functions.txt index c81547ca8f..3a83647366 100644 --- a/tools/disasm/n64-us/functions.txt +++ b/tools/disasm/n64-us/functions.txt @@ -2826,7 +2826,7 @@ Message_DrawTextboxIcon = 0x80147818; // type:func func_80147F18 = 0x80147F18; // type:func func_80148558 = 0x80148558; // type:func Message_HandleChoiceSelection = 0x80148B98; // type:func -func_80148CBC = 0x80148CBC; // type:func +Message_DrawChoiceIcon = 0x80148CBC; // type:func func_80148D64 = 0x80148D64; // type:func func_80149048 = 0x80149048; // type:func func_801491DC = 0x801491DC; // type:func diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 984d59dbc1..c26e9443e6 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -2343,7 +2343,7 @@ asm/non_matchings/code/z_message/Message_DrawTextboxIcon.s,Message_DrawTextboxIc asm/non_matchings/code/z_message/func_80147F18.s,func_80147F18,0x80147F18,0x190 asm/non_matchings/code/z_message/func_80148558.s,func_80148558,0x80148558,0x190 asm/non_matchings/code/z_message/Message_HandleChoiceSelection.s,Message_HandleChoiceSelection,0x80148B98,0x49 -asm/non_matchings/code/z_message/func_80148CBC.s,func_80148CBC,0x80148CBC,0x2A +asm/non_matchings/code/z_message/Message_DrawChoiceIcon.s,Message_DrawChoiceIcon,0x80148CBC,0x2A asm/non_matchings/code/z_message/func_80148D64.s,func_80148D64,0x80148D64,0xB9 asm/non_matchings/code/z_message/func_80149048.s,func_80149048,0x80149048,0x65 asm/non_matchings/code/z_message/func_801491DC.s,func_801491DC,0x801491DC,0x9E