3#include "message_ids.h"
7#include "charset/postcard.png.h"
8#include "charset/letter_content_1.png.h"
19#define MSG_ROM_START (s32)msg_ROM_START
21#define MSG_ROM_START 0x1D40000
23#define MSG_ROM_START 0x1B83000
27#define CHOICE_POINTER_MOVE_RATE 5.0
29#define CHOICE_POINTER_MOVE_RATE 6.0
36 .vscale = {640, 480, 511, 0},
37 .vtrans = {640, 480, 511, 0},
54void* D_PAL_8014AE50[] = {
65 {{{ -16, 9, 0 }, 0, { 0x000, 0x000 }, { 255, 255, 255, 255 }}},
66 {{{ 16, 9, 0 }, 0, { 0x400, 0x000 }, { 255, 255, 255, 255 }}},
67 {{{ -16, -9, 0 }, 0, { 0x000, 0x240 }, { 255, 255, 255, 255 }}},
68 {{{ 16, -9, 0 }, 0, { 0x400, 0x240 }, { 255, 255, 255, 255 }}},
72 gsDPSetCycleType(G_CYC_2CYCLE),
73 gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
74 gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH),
75 gsDPSetColorDither(G_CD_DISABLE),
76 gsDPSetAlphaDither(G_AD_DISABLE),
77 gsDPSetAlphaCompare(G_AC_NONE),
78 gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
79 gsDPSetTexturePersp(G_TP_PERSP),
80 gsDPSetTextureLUT(G_TT_NONE),
81 gsDPSetTextureFilter(G_TF_AVERAGE),
82 gsDPSetRenderMode(IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | G_RM_PASS, IM_RD | CVG_DST_SAVE | ZMODE_XLU |
83 FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)),
95static char gMessageBuffers[2][1024];
100static u8 gMessageMsgVars[3][32];
101static s16 D_80155C98;
102static Mtx gMessageWindowProjMatrix[2];
136 .digitWidth = {11, 8, 11, 11, 11, 11, 11, 11, 11, 11},
143 .digitWidth = {9, 8, 9, 9, 9, 9, 9, 9, 9, 9},
152 .digitWidth = {11, 8, 11, 11, 11, 11, 11, 11, 11, 11},
159 .digitWidth = {9, 8, 9, 9, 9, 9, 9, 9, 9, 9},
167 gsDPSetCycleType(G_CYC_1CYCLE),
168 gsDPSetTextureFilter(G_TF_POINT),
169 gsDPSetTexturePersp(G_TP_NONE),
170 gsDPSetColorDither(G_CD_DISABLE),
171 gsDPSetAlphaDither(G_AD_DISABLE),
172 gsDPSetCombineKey(G_CK_NONE),
173 gsDPSetAlphaCompare(G_AC_NONE),
174 gsDPSetTextureLUT(G_TT_RGBA16),
175 gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
176 gsSPEndDisplayList(),
180 u16 clipULy, u16 clipLRx, u16 clipRLy);
199 for (i = 0; i <
ARRAY_COUNT(gMessagePrinters); i++) {
206 for (i = 0; i <
ARRAY_COUNT(gMessageMsgVars); i++) {
207 gMessageMsgVars[i][0] = 0;
220 u8* base = charset_ROM_START + (s32) offset;
226 if (font != D_80155C98) {
241 for (s32 i = 0; i < 80; i++) {
245 }
else if (font == 1) {
261 for (i = 0; i <
ARRAY_COUNT(gMessagePrinters); i++) {
291 if (speechPan < 5.0) {
293 }
else if (speechPan > 122.0) {
495 if (endPosDist >= 15) {
497 }
else if (endPosDist >= 9) {
500 }
else if (endPosDist > 96) {
502 }
else if (endPosDist > 48) {
504 }
else if (endPosDist >= 24) {
506 }
else if (endPosDist >= 16) {
508 }
else if (endPosDist >= 8) {
510 }
else if (endPosDist > 4) {
577 for (i = 0; i <
ARRAY_COUNT(gMessagePrinters); i++) {
580 guOrtho(matrix, 0.0f, 319.0f, -240.0f, 0.0f, -500.0f, 500.0f, 1.0f);
581 gSPMatrix(
gMainGfxPos++, OS_K0_TO_PHYSICAL(matrix), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
584 gSPClearGeometryMode(
gMainGfxPos++, G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
585 G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH);
586 gSPSetGeometryMode(
gMainGfxPos++, G_SHADE | G_SHADING_SMOOTH);
591 for (i = 0; i <
ARRAY_COUNT(gMessagePrinters); i++) {
622 volTemp = (f32)printer->
volume / 100.0;
623 pitchShift = ((character % 20) * 10) + (printer->
speechPitchShift - baseShift);
624 volume = ((
rand_int(15) + 78) * volTemp);
630 if (character & flag) {
664 u8 nextArg = *srcBuf;
676 printer->
stateFlags &= ~MSG_STATE_FLAG_SPEAKING;
677 printer->
stateFlags &= ~MSG_STATE_FLAG_PRINT_QUICKLY;
685 printer->
stateFlags &= ~MSG_STATE_FLAG_SPEAKING;
725 printer->
style = arg;
810 dma_copy(romAddr, romAddr + (charset_letter_content_1_png_width * charset_letter_content_1_png_height), printer->
letterContentImg);
863 *printBuf++ = printer->
font = *srcBuf++;
873 *printBuf++ = *srcBuf++;
880 printer->
stateFlags &= ~MSG_STATE_FLAG_PRINT_QUICKLY;
888 *printBuf++ = *srcBuf++;
915 *printBuf++ = *srcBuf++;
916 *printBuf++ = arg = *srcBuf++;
917 printer->
sizeScale = (arg >> 4) + (arg & 0xF) * 0.0625f;
932 *printBuf++ = *srcBuf++;
933 *printBuf++ = *srcBuf++;
938 *printBuf++ = *srcBuf++;
943 *printBuf++ = *srcBuf++;
948 *printBuf++ = *srcBuf++;
953 *printBuf++ = *srcBuf++;
958 *printBuf++ = *srcBuf++;
971 *printBuf++ = *srcBuf++;
972 *printBuf++ = *srcBuf++;
973 *printBuf++ = *srcBuf++;
990 offset = arg << 8 | argQ;
1037 *printBuf++ = *srcBuf++;
1038 *printBuf++ = *srcBuf++;
1039 *printBuf++ = *srcBuf++;
1045 *printBuf++ = *srcBuf++;
1046 *printBuf++ = *srcBuf++;
1051 *printBuf++ = *srcBuf++;
1068 *printBuf++ = *srcBuf++;
1085 *printBuf++ = *srcBuf++;
1094 printer->
stateFlags &= ~MSG_STATE_FLAG_SPEAKING;
1095 printer->
stateFlags &= ~MSG_STATE_FLAG_PRINT_QUICKLY;
1135 *printBuf++ = *srcBuf++;
1142 *printBuf++ = *srcBuf++;
1199 for (i = 0; i < a0; i++) {
1201 *printBuf++ = sp10[i];
1230 printer->
volume = *srcBuf++;
1237 printer->
speechSoundIDA = (arg << 0x18) + (argQ << 0x10) + (argW << 0x8) + (argE);
1242 printer->
speechSoundIDB = (arg << 0x18) + (argQ << 0x10) + (argW << 0x8) + (argE);
1247 *printBuf++ = *srcBuf++;
1253 printer->
stateFlags &= ~MSG_STATE_FLAG_40000;
1265 if (c >= MSG_CHAR_MULTIBYTE_FIRST && c <= MSG_CHAR_MULTIBYTE_LAST) {
1266 *printBuf++ = nextArg;
1272 printer->
stateFlags &= ~MSG_STATE_FLAG_SPEAKING;
1384 u8* addr = (u8*) langPtr + (msgID >> 14);
1387 dma_copy(addr, addr + 4, &offset[0]);
1389 new_langPtr = langPtr;
1390 new_langPtr = offset[0] + ((u32) new_langPtr);
1391 addr = new_langPtr + ((msgID & 0xFFFF) * 4);
1395 dma_copy(&langPtr[(u32)offset[0]], &langPtr[(u32)offset[1]], dest);
1402 dma_copy(addr, addr + 4, &offset[0]);
1423 return prevBufferPos;
1437 s32 maxLinesPerPage;
1440 if (msgID == MSG_NONE) {
1444 srcBuffer = (s8*) msgID;
1449 for (i = 0; i <
ARRAY_COUNT(gMessagePrinters); i++) {
1450 printer = &gMessagePrinters[i];
1456 printer->
msgID = msgID;
1458 get_msg_properties(msgID, &height, &width, &maxLineChars, &numLines, &maxLinesPerPage,
nullptr, 0);
1466 if (donePrintingWriteback !=
nullptr) {
1467 *donePrintingWriteback =
false;
1482 buffer = (s8*) msgID;
1523 u8* mallocSpace =
nullptr;
1530 msgID = (s32)mallocSpace;
1534 msgVars = gMessageMsgVars[index];
1536 msgVars[i] = ((u8*)msgID)[i];
1547 if (mallocSpace !=
nullptr) {
1553 s8 strBuffer[
ARRAY_COUNT(gMessageMsgVars[index])];
1559 for (i = 0, bufferIt = strBuffer; i <
ARRAY_COUNT(gMessageMsgVars[index]) - 1; i++) {
1560 s8 thisChar = bufferIt[i];
1562 if (thisChar == 0) {
1571 msgPrintState->
stateFlags &= ~MSG_STATE_FLAG_40;
1575#define CHAR_SPACE_MULTIPLIER 0.7
1577#define CHAR_SPACE_MULTIPLIER 0.6
1591 if (character >= MSG_CHAR_MULTIBYTE_FIRST && character <= MSG_CHAR_MULTIBYTE_LAST) {
1593 return charWidth * msgScale;
1597 if (overrideCharWidth != 0) {
1598 charWidth = overrideCharWidth;
1599 }
else if (
flags != 0) {
1602 if (charWidthTable !=
nullptr
1606 charWidth = charWidthTable[character];
1618 f64 retWidth = charWidth * msgScale;
1622 return charWidth * msgScale * 0.5;
1627 return charWidth * msgScale;
1640 if (overrideCharWidth != 0) {
1641 baseWidth = overrideCharWidth;
1645 if (charWidthTable !=
nullptr
1649 baseWidth = charWidthTable[character];
1661 f64 charWidth = baseWidth * msgScale;
1665 return baseWidth * msgScale * 0.5;
1670 return baseWidth * msgScale;
1673void get_msg_properties(s32 msgID, s32* height, s32* width, s32* maxLineChars, s32* numLines, s32* maxLinesPerPage, s32* numSpaces, u16 charset) {
1689 u16 lineCharNumbers[32];
1690 u16 linesPerPage[32];
1696 u16 maxCharsPerLine;
1712 maxCharsPerLine = 0;
1716 if (msgID == MSG_NONE) {
1725 message = (u8*)msgID;
1755 if (linesOnPage != 0) {
1756 linesPerPage[pageCount] = linesOnPage;
1758 if (pageCount >= 32) {
1765 lineWidths[lineIndex] = lineWidth;
1766 lineCharNumbers[lineIndex] = charCount;
1768 if (lineIndex >= 32) {
1776 msgStyle = message[i++];
1797 lineWidths[lineIndex] = lineWidth;
1798 lineCharNumbers[lineIndex] = charCount;
1803 functionCode = message[i++];
1804 switch (functionCode) {
1806 font = message[i++];
1860 if (message[i] == 0) {
1871 packedScaleY = message[i + 1];
1873 scale = (f32)(packedScaleY >> 4) + ((packedScaleY & 0xF) * 0.0625f);
1879 switch (message[i++]) {
1900 lineWidth +=
get_msg_width((s32)gMessageMsgVars[message[i++]], 0);
1919 if (prevChar >= MSG_CHAR_MULTIBYTE_FIRST && prevChar <= MSG_CHAR_MULTIBYTE_LAST) {
1930 if (buffer !=
nullptr) {
1934 for (i = 0; i < lineIndex; i++) {
1935 if (maxLineWidth < lineWidths[i]) {
1936 maxLineWidth = lineWidths[i];
1938 if (maxCharsPerLine < lineCharNumbers[i]) {
1939 maxCharsPerLine = lineCharNumbers[i];
1943 if (pageCount == 0) {
1944 maxLinesOnPage = linesOnPage;
1946 for (i = 0; i < pageCount; i++) {
1947 if (maxLinesOnPage < linesPerPage[i]) {
1948 maxLinesOnPage = linesPerPage[i];
1953 if (width !=
nullptr) {
1954 *width = maxLineWidth;
1956 if (height !=
nullptr) {
1959 if (maxLineChars !=
nullptr) {
1960 *maxLineChars = maxCharsPerLine;
1962 if (numLines !=
nullptr) {
1963 *numLines = lineCount;
1965 if (maxLinesPerPage !=
nullptr) {
1966 *maxLinesPerPage = maxLinesOnPage;
1968 if (numSpaces !=
nullptr) {
1969 *numSpaces = spaceCount;
1976 get_msg_properties(msgID,
nullptr, &width,
nullptr,
nullptr,
nullptr,
nullptr, charset);
1984 get_msg_properties(msgID,
nullptr,
nullptr,
nullptr, &numLines,
nullptr,
nullptr, 0);
1989void draw_msg(s32 msgID, s32 posX, s32 posY, s32 opacity, s32 palette, u8 style) {
2000 mallocSpace =
nullptr;
2009 if (opacity < 0xFF) {
2013 printer = &stackPrinter;
2057 if (mallocSpace !=
nullptr) {
2067 f32 colorG = 255.0f;
2068 f32 colorR = 255.0f;
2069 f32 colorB = 255.0f;
2085 scale = temp * 0.2 + 0.5;
2117 gDPSetPrimColor(
gMainGfxPos++, 0, 0, colorR, colorG, colorB, 255);
2135 guScaleF(sp58, scale, scale, 1.0f);
2141 gDPLoadTextureTile(
gMainGfxPos++,
ui_msg_star_png, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, 0, 0, 15, 17, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD);
2142 gDPLoadMultiTile_4b(
gMainGfxPos++,
ui_msg_star_silhouette_png, 0x0100, 1, G_IM_FMT_I, 16, 0, 0, 0, 15, 18, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 4, 5, G_TX_NOLOD, G_TX_NOLOD);
2144 gSP2Triangles(
gMainGfxPos++, 0, 2, 1, 0, 1, 2, 3, 0);
2162 s32 pointerAlpha = 255;
2163 s32 shadowAlpha = 72;
2171 s32 baseX, baseY, targetX, targetY;
2176 posX = baseX + (targetX - baseX) * moveToTargetAlpha;
2180 posY = baseY + (targetY - baseY) * moveToTargetAlpha;
2184 posX += (
cosine(posInterpPhase * 38 + 270) + 1.0) * 0.5 * 3.2;
2190 pointerAlpha = opacity;
2192 shadowAlpha = opacity;
2198 gDPSetRenderMode(
gMainGfxPos++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
2200 gDPSetPrimColor(
gMainGfxPos++, 0, 0, 40, 40, 40, shadowAlpha);
2201 draw_image_with_clipping(
ui_point_right_png, 16, 16, G_IM_FMT_CI, G_IM_SIZ_4b, posX + 2, posY + 2, 10, 10, 300, 220);
2202 draw_ci_image_with_clipping(
ui_point_right_png, 16, 16, G_IM_FMT_CI, G_IM_SIZ_4b,
ui_point_right_pal, posX, posY, 20, 20, 300, 200, pointerAlpha);
2214 G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
2215 G_TX_NOMASK, G_TX_NOMASK,
2216 G_TX_NOLOD, G_TX_NOLOD);
2225void draw_number(s32 value, s32 x, s32 y, s32 charset, s32 palette, s32 opacity, u16 style) {
2238 if (y < 0 || y > 240) {
2244 for (i = 0; i < 10; i++) {
2246 if (valueStr[i] ==
'\0') {
2251 if (valueStr[i] ==
'-') {
2256 digit = valueStr[i] -
'0';
2267 for (i = count - 1; i >= 0; i--) {
2273 digitPosX[i] = posX;
2276 for (i = 0; i < count; i++) {
2277 digitPosX[i] = posX;
2287 for (i = 0; i < count; i++) {
2289 gDPSetRenderMode(
gMainGfxPos++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
2291 gDPSetPrimColor(
gMainGfxPos++, 0, 0, 40, 40, 40, 72);
2292 draw_digit(raster + digits[i] * texSize, charset, digitPosX[i] + 2, y + 2);
2297 if (opacity == 255) {
2298 gDPSetRenderMode(
gMainGfxPos++, G_RM_TEX_EDGE, G_RM_TEX_EDGE2);
2299 gDPSetCombineMode(
gMainGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA);
2301 gDPSetRenderMode(
gMainGfxPos++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
2303 gDPSetPrimColor(
gMainGfxPos++, 0, 0, 255, 255, 255, opacity);
2307 for (i = 0; i < count; i++) {
2308 posX = digitPosX[i];
2309 if (posX > 0 && posX < 320) {
2310 draw_digit(raster + digits[i] * texSize, charset, posX, y);
unsigned char charset_standard_pal_OFFSET[]
unsigned char charset_postcard_OFFSET[]
unsigned short charset_postcard_pal_OFFSET[]
unsigned char charset_standard_OFFSET[]
unsigned char charset_subtitle_pal_OFFSET[]
unsigned char charset_subtitle_OFFSET[]
unsigned char charset_title_OFFSET[]
s32 * closedWritebackBool
MessageCharData * rasters
u16 * letterBackgroundPal
s16 rewindArrowSwingPhase
#define general_heap_malloc
@ DRAW_MSG_STYLE_DROP_SHADOW
@ DRAW_NUMBER_STYLE_ALIGN_RIGHT
drawn to the left of posX
@ DRAW_NUMBER_STYLE_DROP_SHADOW
@ DRAW_NUMBER_STYLE_MONOSPACE
@ MSG_STATE_FLAG_PRINT_QUICKLY
@ MSG_STATE_FLAG_SPEAKING
@ MSG_READ_FUNC_RESTORE_COLOR
@ MSG_READ_FUNC_RESET_GFX
@ MSG_READ_FUNC_INPUT_OFF
@ MSG_READ_FUNC_SET_CURSOR
@ MSG_READ_FUNC_SET_CANCEL
@ MSG_READ_FUNC_DELAY_OFF
@ MSG_PRINT_FUNC_ITEM_ICON
@ MSG_READ_FUNC_SAVE_COLOR
@ MSG_READ_FUNC_CUSTOM_VOICE
@ MSG_PRINT_FUNC_ANIM_DELAY
@ MSG_READ_FUNC_INLINE_IMAGE
@ MSG_PRINT_FUNC_ANIM_LOOP
@ MSG_PRINT_FUNC_ANIM_SPRITE
@ MSG_PRINT_FUNC_INLINE_IMAGE
@ MSG_PRINT_FUNC_SIZE_RESET
@ MSG_PRINT_FUNC_SAVE_COLOR
@ MSG_READ_FUNC_RESTORE_POS
@ MSG_READ_FUNC_ENABLE_CDOWN_NEXT
@ MSG_READ_FUNC_HIDE_IMAGE
@ MSG_PRINT_FUNC_RESTORE_COLOR
@ MSG_PRINT_FUNC_START_FX
@ MSG_READ_FUNC_END_CHOICE
@ MSG_PRINT_FUNC_RESTORE_POS
@ MSG_READ_FUNC_ANIM_LOOP
@ MSG_READ_FUNC_ANIM_DELAY
@ MSG_READ_FUNC_ITEM_ICON
@ MSG_READ_FUNC_SET_REWIND
@ MSG_PRINT_FUNC_ANIM_DONE
@ MSG_READ_FUNC_SIZE_RESET
@ MSG_PRINT_FUNC_CENTER_X
@ MSG_PRINT_FUNC_SAVE_POS
@ MSG_READ_FUNC_ANIM_SPRITE
@ MSG_READ_FUNC_ANIM_DONE
@ SOUND_MENU_CHANGE_SELECTION
@ MSG_CHAR_READ_HALF_SPACE
@ MSG_CHAR_READ_FULL_SPACE
@ MSG_CHAR_READ_UNK_CHAR_FA
@ MSG_CHAR_PRINT_FULL_SPACE
@ MSG_CHAR_PRINT_VARIANT0
@ MSG_CHAR_PRINT_FUNCTION
@ MSG_CHAR_PRINT_UNK_CHAR_FA
@ MSG_CHAR_PRINT_HALF_SPACE
@ MSG_WINDOW_STATE_WAITING
@ MSG_WINDOW_STATE_WAITING_FOR_CHOICE
@ MSG_WINDOW_STATE_OPENING
@ MSG_WINDOW_STATE_SCROLLING
@ MSG_WINDOW_STATE_PRINTING
@ MSG_WINDOW_STATE_SCROLLING_BACK
@ MSG_WINDOW_STATE_CLOSING
@ MSG_WINDOW_STATE_VIEWING_PREV
f32 update_lerp(s32 easing, f32 start, f32 end, s32 elapsed, s32 duration)
s32 draw_ci_image_with_clipping(u8 *raster, s32 width, s32 height, s32 fmt, s32 bitDepth, u16 *palette, s16 posX, s16 posY, u16 clipULx, u16 clipULy, u16 clipLRx, u16 clipRLy, u8 opacity)
u32 dma_copy(Addr romStart, Addr romEnd, void *vramDest)
s32 general_heap_free(void *data)
char * int_to_string(s32, char *, s32)
void * heap_malloc(s32 size)
s32 gItemIconPaletteOffsets[]
void msg_draw_rewind_arrow(s32)
void get_msg_properties(s32 msgID, s32 *height, s32 *width, s32 *maxLineChars, s32 *numLines, s32 *maxLinesPerPage, s32 *numSpaces, u16 charset)
IMG_BIN ui_msg_rewind_arrow_png[]
void msg_printer_set_origin_pos(MessagePrintState *msgPrintState, s32 x, s32 y)
MessagePrintState * _msg_get_printer_for_msg(s32 msgID, s32 *donePrintingWriteback, s32 arg2)
s32 cancel_message(MessagePrintState *msgPrintState)
s8 * load_message_to_buffer(s32 msgID)
IMG_BIN MsgCharImgSubtitle[]
void render_messages(void)
s32 draw_image_with_clipping(IMG_PTR raster, s32 width, s32 height, s32 fmt, s32 bitDepth, s16 posX, s16 posY, u16 clipULx, u16 clipULy, u16 clipLRx, u16 clipRLy)
IMG_BIN D_80159B50[0x200]
void clear_character_set(void)
s16 MsgStyleVerticalLineOffsets[]
PAL_PTR MsgLetterPaletteOffsets[]
s32 msg_get_print_char_width(s32 character, s32 charset, s32 variation, f32 msgScale, s32 overrideCharWidth, u8 flags)
PAL_BIN ui_msg_rewind_arrow_pal[]
void close_message(MessagePrintState *msgPrintState)
void appendGfx_message(MessagePrintState *, s16, s16, u16, u16, u16, u8)
void draw_digit(IMG_PTR img, s32 charset, s32 posX, s32 posY)
IMG_BIN MsgCharImgTitle[]
void clear_printers(void)
MessageImageData * MessageImageDataList[1]
s32 gItemIconRasterOffsets[]
#define CHOICE_POINTER_MOVE_RATE
u16 gMsgGlobalWaveCounter
Gfx gMsgDlistInitDrawNumber[]
void dma_load_msg(u32 msgID, void *dest)
s32 msg_get_draw_char_width(s32 character, s32 charset, s32 variation, f32 msgScale, s32 overrideCharWidth, u16 flags)
void msg_play_speech_sound(MessagePrintState *printer, u8 character)
void initialize_printer(MessagePrintState *printer, s32 arg1, s32 arg2)
void load_font_data(Addr offset, u16 size, void *dest)
IMG_BIN ui_msg_star_png[]
IMG_BIN MsgCharImgNormal[]
s32 get_msg_lines(s32 msgID)
MessageNumber gMsgNumbers[]
PAL_BIN D_802F4560[80][8]
void set_message_int_var(s32 value, s32 index)
void set_message_text_var(s32 msgID, s32 index)
IMG_BIN ui_msg_star_silhouette_png[]
void msg_update_rewind_arrow(s32)
MessagePrintState * msg_get_printer_for_msg(s32 msgID, s32 *donePrintingWriteback)
void draw_message_window(MessagePrintState *printer)
void msg_copy_to_print_buffer(MessagePrintState *printer, s32 arg1, s32 arg2)
void draw_number(s32 value, s32 x, s32 y, s32 charset, s32 palette, s32 opacity, u16 style)
void set_message_images(MessageImageData *images)
MessageImageDataList gMsgVarImages
IMG_BIN ui_point_right_png[]
s32 msg_printer_load_msg(s32 msgID, MessagePrintState *printer)
s32 _update_message(MessagePrintState *printer)
MessageCharset * MsgCharsets[5]
void msg_draw_choice_pointer(MessagePrintState *printer)
#define CHAR_SPACE_MULTIPLIER
IMG_PTR MsgLetterRasterOffsets[]
void update_messages(void)
PAL_BIN ui_point_right_pal[]
@ REWIND_ARROW_STATE_NEUTRAL
@ REWIND_ARROW_STATE_INIT
@ REWIND_ARROW_STATE_CHANGE_COLOR_BACK
@ REWIND_ARROW_STATE_GROW
@ REWIND_ARROW_STATE_CHANGE_COLOR
IMG_BIN MsgCharImgLatin[]
IMG_BIN MsgCharImgMenuKana[]
IMG_BIN MsgCharImgMenuLatin[]
void sfx_play_sound_with_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift)
#define PM_CC_MSG_UP_ARROW
#define VIRTUAL_TO_PHYSICAL(addr)
u8 Addr[]
Linker symbol address, as in ld_addrs.h.
GameStatus * gGameStatusPtr
s32 gCurrentDisplayContextIndex
DisplayContext * gDisplayContext