3#include "message_ids.h"
7#include "charset/postcard.png.h"
8#include "charset/letter_content_1.png.h"
12 return (
s32)(f + 0.999f);
60 { .v = { .ob = {1, 0, 0}, .tc = {0, 0}, .cn = {255, 255, 248, 255} } },
61 { .v = { .ob = {0x20, 0, 0}, .tc = {0x400, 0}, .cn = {255, 255, 248, 255} } },
62 { .v = { .ob = {0x1, 0xFFC0, 0}, .tc = {0, 0x800}, .cn = {191, 184, 176, 255} } },
63 { .v = { .ob = {0x20, 0xFFC0, 0}, .tc = {0x400, 0x800}, .cn = {191, 184, 176, 255} } },
67 { .v = { .ob = {0x20, 0, 0}, .tc = {0, 0}, .cn = {255, 255, 248, 255} } },
68 { .v = { .ob = {0xE1, 0, 0}, .tc = {0x100, 0}, .cn = {255, 255, 248, 255} } },
69 { .v = { .ob = {0x20, 0xFFC0, 0}, .tc = {0, 0x800}, .cn = {191, 184, 176, 255} } },
70 { .v = { .ob = {0xE1, 0xFFC0, 0}, .tc = {0x100, 0x800}, .cn = {191, 184, 176, 255} } },
74 { .v = { .ob = {0xE1, 0, 0}, .tc = {0, 0}, .cn = {255, 255, 248, 255} } },
75 { .v = { .ob = {0x100, 0, 0}, .tc = {0x400, 0}, .cn = {255, 255, 248, 255} } },
76 { .v = { .ob = {0xE1, 0xFFC0, 0}, .tc = {0, 0x800}, .cn = {191, 184, 176, 255} } },
77 { .v = { .ob = {0x100, 0xFFC0, 0}, .tc = {0x400, 0x800}, .cn = {191, 184, 176, 255} } },
81 { .v = { .ob = {0xFFF1, 0x001E, 0}, .tc = {0, 0}, .cn = {191, 184, 176, 255} } },
82 { .v = { .ob = {0xF, 0x001E, 0}, .tc = {0x1E0, 0}, .cn = {191, 184, 176, 255} } },
83 { .v = { .ob = {0xFFFF, 0, 0}, .tc = {0, 0x1E0}, .cn = {191, 184, 176, 255} } },
84 { .v = { .ob = {1, 0, 0}, .tc = {0x1E0, 0x1E0}, .cn = {191, 184, 176, 255} } },
88 { .v = { .ob = {0xFFF1, 0x001E, 0}, .tc = {0, 0}, .cn = {191, 184, 176, 255} } },
89 { .v = { .ob = {0xF, 0x001E, 0}, .tc = {0x1E0, 0}, .cn = {191, 184, 176, 255} } },
90 { .v = { .ob = {0xFFFF, 0, 0}, .tc = {0, 0x1E0}, .cn = {191, 184, 176, 255} } },
91 { .v = { .ob = {1, 0, 0}, .tc = {0x1E0, 0x1E0}, .cn = {191, 184, 176, 255} } },
114u8 D_8014C588[] = { 105, 100, 77, 57, 40, 27, 16, 8, 3, 0, 0, 0};
141 switch (
printer->windowState) {
144 rotZ = (4 -
printer->fadeInCounter) * 3;
152 rotZ = -
printer->fadeOutCounter;
160 switch (
printer->windowState) {
177#define MSG_NORMAL_WIDTH 192
178#define MSG_NORMAL_X 32
179#define MSG_NORMAL_WIN_WIDTH 256
180#define MSG_NORMAL_WIN_HEIGHT 64
181#define MSG_NORMAL_TEXT_Y 8
182#define MSG_NORMAL_ARROW_X 253
183#define MSG_NORMAL_ARROW_Y 56
184#define MSG_NORMAL_HEIGHT_CAP 64
185#define MSG_NORMAL_PAGE_HT 16
186#define MSG_INSPECT_TEXT_Y 5
187#define MSG_SIGN_TEXT_Y 13
188#define MSG_SIGN_WIDTH 240
189#define MSG_SIGN_OFFSET_X 20
190#define MSG_POPUP_TEXT_Y 8
191#define MSG_EPILOGUE_TEXT_Y 0
193#define MSG_NORMAL_WIDTH 218
194#define MSG_NORMAL_X 22
195#define MSG_NORMAL_WIN_WIDTH 296
196#define MSG_NORMAL_WIN_HEIGHT 68
197#define MSG_NORMAL_TEXT_Y 6
198#define MSG_NORMAL_ARROW_X 276
199#define MSG_NORMAL_ARROW_Y 57
200#define MSG_NORMAL_HEIGHT_CAP 68
201#define MSG_NORMAL_PAGE_HT 14
202#define MSG_INSPECT_TEXT_Y 3
203#define MSG_SIGN_TEXT_Y 11
204#define MSG_SIGN_WIDTH 280
205#define MSG_SIGN_OFFSET_X 0
206#define MSG_POPUP_TEXT_Y 4
207#define MSG_EPILOGUE_TEXT_Y -2
214 u16 flag,
u8 alpha) {
303 msg_drawState = &D_80155D20;
316 msg_drawState->
clipX[0] = 0;
317 msg_drawState->
clipY[0] = 0;
322 msg_drawState->
unk_29 = 0;
324 msg_drawState->
unk_2C = 0;
331 msg_drawState->
font = 0;
342 msg_drawState->
font = 1;
399 msg_drawState->
nextPos[1] += 5;
431 if (
printer->maxLinesPerPage == 1) {
435 }
else if (
printer->maxLinesPerPage == 2) {
445 switch (
printer->maxLinesPerPage) {
487 printer->windowSize.y = height;
525 if (
printer->fadeInCounter == 7) {
548 if (
printer->fadeOutCounter >= 5) {
556 if (((
u32)(
printer->openStartPos.x - 20) <= 280) && (
printer->openStartPos.y <= 220)) {
562 msg_drawState->
clipX[0] = 20;
584 if (
printer->fadeInCounter == 6) {
609 if (
printer->fadeOutCounter >= 5) {
648 printer->rewindArrowPos.x = msg_drawState->
clipX[1] - 17;
649 printer->rewindArrowPos.y = msg_drawState->
clipY[1] - 17;
671 if (
printer->fadeOutCounter == 4) {
691 msg_drawState->
nextPos[1] -= 2;
705 msg_drawState->
clipY[0] = 40;
708 printer->rewindArrowPos.x = msg_drawState->
clipX[1] - 16;
709 printer->rewindArrowPos.y = msg_drawState->
clipY[1] - 9;
715 if (
printer->fadeInCounter == 3) {
723 if (
printer->fadeOutCounter == 3) {
737 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_sign_side_top_png,
G_IM_FMT_CI, 32, 0, 0, 0, 31, 15, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
741 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_sign_side_left_png,
G_IM_FMT_CI, 16, 0, 0, 0, 15, 31, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
745 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_sign_side_right_png,
G_IM_FMT_CI, 16, 0, 0, 0, 15, 31, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
749 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_sign_side_bottom_png,
G_IM_FMT_CI, 32, 0, 0, 0, 31, 15, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
753 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_sign_fill_png,
G_IM_FMT_CI, 8, 0, 0, 0, 7, 7, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
766 msg_drawState->
clipX[0] = 45;
767 msg_drawState->
clipY[0] = 32;
768 msg_drawState->
clipX[1] = 272;
769 msg_drawState->
clipY[1] = 81;
770 printer->rewindArrowPos.x = msg_drawState->
clipX[1] - 21;
771 printer->rewindArrowPos.y = msg_drawState->
clipY[1] - 20;
781 if (
printer->fadeInCounter == 3) {
789 if (
printer->fadeOutCounter == 3) {
807 msg_drawState->
clipX[0] = 0;
809 msg_drawState->
clipY[0] = 0;
820 printer->windowSize.y, 255, 0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
nullptr, 0,
nullptr,
828 printer->windowBasePos.y = 110;
859 if (
printer->maxLinesPerPage >= 2) {
861 if (
printer->maxLinesPerPage == 2) {
865 if (
printer->unk_4C8 <= 0x10) {
977 msg_drawState->
clipX[0], msg_drawState->
clipY[0], msg_drawState->
clipX[1] - msg_drawState->
clipX[0],
995 msg_drawState->
clipY[0], msg_drawState->
clipX[1] - msg_drawState->
clipX[0],
1085 msg_drawState->
nextPos[0] += 14;
1241 msg_drawState->
nextPos[0] = 0;
1486 if (palette !=
sp9E) {
1521 for (i = 0; i < 5; i++) {
1582 varImgHasBorder =
false;
1583 if (
printer->varImageScreenPos.x != 0) {
1584 s16 varImgFinalAlpha;
1586 varImgFinalAlpha =
printer->varImgFinalAlpha;
1589 switch (
printer->varImgHasBorder) {
1592 if (
printer->varImgHasBorder) {
1593 varImgHasBorder =
true;
1595 switch (
printer->varImageDisplayState) {
1598 varImgFinalAlpha =
printer->varImageFadeTimer *
printer->varImgAlphaFadeStep;
1599 if (
printer->varImgFinalAlpha <= varImgFinalAlpha) {
1600 varImgFinalAlpha =
printer->varImgFinalAlpha;
1601 printer->varImageFadeTimer = 0;
1602 printer->varImageDisplayState = 1;
1610 varImgFinalAlpha =
printer->varImgFinalAlpha -
printer->varImgAlphaFadeStep *
printer->varImageFadeTimer;
1611 if (varImgFinalAlpha < 1) {
1612 printer->varImageScreenPos.x = 0;
1622 if (varImgFinalAlpha > 0) {
1623 if (varImgHasBorder) {
1630 printer->varImageScreenPos.x,
printer->varImageScreenPos.y, 0, 0,
1658 s32 ulx, texOffsetX;
1659 s32 uly, texOffsetY;
1808 switch (msg_drawState->
unk_29) {
1830 if (opacity == 255 && scaleX == 1.0 && scaleY == 1.0) {
1863 if (scaleX != 1.0 || scaleY != 1.0) {
1881 if (
printer->maxLinesPerPage == 3) {
1887 if (opacity >= 255) {
1911 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_bubble_left_png,
G_IM_FMT_CI, 32, 0, 0, 0, 31, 63, 0,
1915 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_bubble_mid_png,
G_IM_FMT_CI, 8, 0, 0, 0, 7, 63, 0,
1919 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_bubble_right_png,
G_IM_FMT_CI, 32, 0, 0, 0, 31, 63, 0,
1927 s16 targetX, targetY;
1940 if (
printer->openStartPos.x == 0) {
1947 printer->maxLinesPerPage == 3) {
1961 if (
printer->openStartPos.x < targetX) {
1965 if (
abs(angle) < 45) {
1972 if (
printer->openStartPos.x > targetX) {
1976 if (
abs(angle) < 45) {
2005 if (
abs(angle) >= 75) {
2033 gDPLoadTextureTile_4b(
gMainGfxPos++,
ui_msg_arrow_png,
G_IM_FMT_CI, 16, 0, 0, 0, 15, 15, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
G_TX_NOMIRROR |
G_TX_WRAP, 4, 4,
G_TX_NOLOD,
G_TX_NOLOD);
2048 if (sizeX < 16 || sizeY < 16) {
2084 if (posX + sizeX - 8 > 0) {
2102 gDPLoadTextureBlock_4b(
gMainGfxPos++,
ui_msg_background_png,
G_IM_FMT_I, 64, 64, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
G_TX_NOMIRROR |
G_TX_WRAP, 6, 6,
G_TX_NOLOD,
G_TX_NOLOD);
2115 quads[2].ulx = (posX + 16) * 4;
2116 quads[2].uly = posY * 4;
2117 quads[2].lrx = (posX + sizeX - 16) * 4;
2118 quads[2].lry = (posY + 8) * 4;
2120 quads[13].ulx = (posX + 16) * 4;
2121 quads[13].uly = (posY + sizeY - 8) * 4;
2122 quads[13].lrx = (posX + sizeX - 16) * 4;
2123 quads[13].lry = (posY + sizeY) * 4;
2124 }
else if (sizeX > 16 && sizeX < 24) {
2125 quads[2].ulx = (posX + 8) * 4;
2126 quads[2].uly = posY * 4;
2127 quads[2].lrx = (posX + sizeX - 8) * 4;
2128 quads[2].lry = (posY + 8) * 4;
2130 quads[13].ulx = (posX + 8) * 4;
2131 quads[13].uly = (posY + sizeY - 8) * 4;
2132 quads[13].lrx = (posX + sizeX - 8) * 4;
2133 quads[13].lry = (posY + sizeY) * 4;
2135 quads[2].ulx = 10000;
2136 quads[13].ulx = 10000;
2140 quads[7].ulx = posX * 4;
2141 quads[7].uly = (posY + 16) * 4;
2142 quads[7].lrx = (posX + 8) * 4;
2143 quads[7].lry = (posY + sizeY - 16) * 4;
2145 quads[8].ulx = (posX + sizeX - 8) * 4;
2146 quads[8].uly = (posY + 16) * 4;
2147 quads[8].lrx = (posX + sizeX) * 4;
2148 quads[8].lry = (posY + sizeY - 16) * 4;
2149 }
else if (sizeY > 16 && sizeY < 24) {
2150 quads[7].ulx = posX * 4;
2151 quads[7].uly = (posY + 8) * 4;
2152 quads[7].lrx = (posX + 8) * 4;
2153 quads[7].lry = (posY + sizeY - 8) * 4;
2155 quads[8].ulx = (posX + sizeX - 8) * 4;
2156 quads[8].uly = (posY + 8) * 4;
2157 quads[8].lrx = (posX + sizeX) * 4;
2158 quads[8].lry = (posY + sizeY - 8) * 4;
2160 quads[7].ulx = 10000;
2161 quads[8].ulx = 10000;
2165 quads[1].ulx = (posX + 8) * 4;
2166 quads[1].uly = posY * 4;
2167 quads[1].lrx = (posX + 16) * 4;
2168 quads[1].lry = (posY + 8) * 4;
2170 quads[3].ulx = (posX + sizeX - 16) * 4;
2171 quads[3].uly = posY * 4;
2172 quads[3].lrx = (posX + sizeX - 8) * 4;
2173 quads[3].lry = (posY + 8) * 4;
2175 quads[12].ulx = (posX + 8) * 4;
2176 quads[12].uly = (posY + sizeY - 8) * 4;
2177 quads[12].lrx = (posX + 16) * 4;
2178 quads[12].lry = (posY + sizeY) * 4;
2180 quads[14].ulx = (posX + sizeX - 16) * 4;
2181 quads[14].uly = (posY + sizeY - 8) * 4;
2182 quads[14].lrx = (posX + sizeX - 8) * 4;
2183 quads[14].lry = (posY + sizeY) * 4;
2185 quads[1].ulx = 10000;
2186 quads[3].ulx = 10000;
2187 quads[12].ulx = 10000;
2188 quads[14].ulx = 10000;
2192 quads[5].ulx = posX * 4;
2193 quads[5].uly = (posY + 8) * 4;
2194 quads[5].lrx = (posX + 8) * 4;
2195 quads[5].lry = (posY + 16) * 4;
2197 quads[6].ulx = (posX + sizeX - 8) * 4;
2198 quads[6].uly = (posY + 8) * 4;
2199 quads[6].lrx = (posX + sizeX) * 4;
2200 quads[6].lry = (posY + 16) * 4;
2202 quads[9].ulx = posX * 4;
2203 quads[9].uly = (posY + sizeY - 16) * 4;
2204 quads[9].lrx = (posX + 8) * 4;
2205 quads[9].lry = (posY + sizeY - 8) * 4;
2207 quads[10].ulx = (posX + sizeX - 8) * 4;
2208 quads[10].uly = (posY + sizeY - 16) * 4;
2209 quads[10].lrx = (posX + sizeX) * 4;
2210 quads[10].lry = (posY + sizeY - 8) * 4;
2212 quads[5].ulx = 10000;
2213 quads[6].ulx = 10000;
2214 quads[9].ulx = 10000;
2215 quads[10].ulx = 10000;
2218 quads[0].ulx = posX * 4;
2219 quads[0].uly = posY * 4;
2220 quads[0].lrx = (posX + 8) * 4;
2221 quads[0].lry = (posY + 8) * 4;
2223 quads[4].ulx = (posX + sizeX - 8) * 4;
2224 quads[4].uly = posY * 4;
2225 quads[4].lrx = (posX + sizeX) * 4;
2226 quads[4].lry = (posY + 8) * 4;
2228 quads[11].ulx = posX * 4;
2229 quads[11].uly = (posY + sizeY - 8) * 4;
2230 quads[11].lrx = (posX + 8) * 4;
2231 quads[11].lry = (posY + sizeY) * 4;
2233 quads[15].ulx = (posX + sizeX - 8) * 4;
2234 quads[15].uly = (posY + sizeY - 8) * 4;
2235 quads[15].lrx = (posX + sizeX) * 4;
2236 quads[15].lry = (posY + sizeY) * 4;
2267 gDPLoadTextureTile_4b(
gMainGfxPos++,
textures[i],
G_IM_FMT_CI, 8, 8, 0, 0, 7, 7, 0,
G_TX_WRAP,
G_TX_WRAP, 3, 3,
G_TX_NOLOD,
G_TX_NOLOD);
2283 out->charHeight =
out->texSize.y;
BSS s32 PopupMenu_SelectedIndex
unsigned char charset_standard_OFFSET[]
MessageCharData * rasters
@ MSG_FX_FLAG_DROP_SHADOW
@ MSG_FX_FLAG_GLOBAL_WAVE
@ MSG_FX_FLAG_GLOBAL_RAINBOW
@ MSG_FX_FLAG_NOISE_OUTLINE
@ MSG_FX_FLAG_SIZE_JITTER
@ MSG_FX_FLAG_DITHER_FADE
@ MSG_PRINT_FUNC_ITEM_ICON
@ MSG_PRINT_FUNC_ANIM_DELAY
@ 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_PRINT_FUNC_RESTORE_COLOR
@ MSG_PRINT_FUNC_SET_FRAME_PALETTE
@ MSG_PRINT_FUNC_START_FX
@ MSG_PRINT_FUNC_RESTORE_POS
@ MSG_PRINT_FUNC_ANIM_DONE
@ MSG_PRINT_FUNC_CENTER_X
@ MSG_PRINT_FUNC_SAVE_POS
@ MSG_CHAR_PRINT_VARIANT2
@ MSG_CHAR_PRINT_VARIANT1
@ MSG_CHAR_PRINT_FULL_SPACE
@ MSG_CHAR_PRINT_VARIANT0
@ MSG_CHAR_PRINT_FUNCTION
@ MSG_CHAR_PRINT_VARIANT3
@ MSG_CHAR_PRINT_UNK_CHAR_FA
@ MSG_CHAR_PRINT_HALF_SPACE
@ MSG_WINDOW_STATE_WAITING_FOR_CHOICE
@ MSG_WINDOW_STATE_OPENING
@ MSG_WINDOW_STATE_PRINTING
@ MSG_WINDOW_STATE_CLOSING
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)
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)
void load_font_data(Addr offset, u16 size, void *dest)
IMG_BIN ui_msg_bubble_mid_png[]
void drawbox_message_delegate(s32 data, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
#define MSG_SIGN_OFFSET_X
void msg_draw_speech_bubble(MessagePrintState *printer, s16 posX, s16 posY, s16 straightWidth, s16 curveWidth, s16 height, f32 scaleX, f32 scaleY, u8 opacity, s32 arg9)
s32 gMessageBoxFrameParts[2][16]
IMG_BIN ui_msg_lamppost_corner_bottomright_png[]
IMG_BIN D_80159B50[0x200]
IMG_BIN ui_msg_sign_side_top_png[]
s16 MsgStyleVerticalLineOffsets[]
PAL_BIN ui_msg_lamppost_pal[]
void appendGfx_message(MessagePrintState *, s16, s16, u16, u16, u16, u8)
void msg_draw_char(MessagePrintState *printer, MessageDrawState *drawState, s32 charIndex, s32 palette, s32 posX, s32 posY)
IMG_BIN ui_msg_sign_corner_topright_png[]
#define MSG_NORMAL_WIN_WIDTH
MessageImageData * MessageImageDataList[1]
void msg_draw_frame(s32 posX, s32 posY, s32 sizeX, s32 sizeY, s32 style, s32 palette, s32 fading, s32 bgAlpha, s32 frameAlpha)
#define MSG_EPILOGUE_TEXT_Y
IMG_BIN ui_msg_bubble_right_png[]
IMG_BIN ui_msg_sign_fill_png[]
IMG_BIN ui_msg_background_png[]
void appendGfx_msg_prim_rect(u8 r, u8 g, u8 b, u8 a, u16 ulX, u16 ulY, u16 lrX, u16 lrY)
u16 gMsgGlobalWaveCounter
void msg_draw_prim_rect(u8 r, u8 g, u8 b, u8 a, u16 posX, u16 posY, u16 sizeX, u16 sizeY)
s32 msg_get_draw_char_width(s32 character, s32 charset, s32 variation, f32 msgScale, s32 overrideCharWidth, u16 flags)
PAL_BIN ui_msg_sign_pal[]
#define MSG_NORMAL_TEXT_Y
void msg_reset_gfx_state(void)
#define MSG_NORMAL_ARROW_X
IMG_BIN ui_msg_sign_side_bottom_png[]
#define MSG_NORMAL_PAGE_HT
PAL_BIN D_802F4560[80][8]
IMG_BIN ui_msg_sign_side_right_png[]
IMG_BIN ui_msg_sign_corner_bottomleft_png[]
#define MSG_NORMAL_WIN_HEIGHT
void msg_draw_speech_arrow(MessagePrintState *printer)
IMG_BIN ui_msg_sign_corner_bottomright_png[]
unsigned char ui_msg_palettes[16][32]
void msg_get_glyph(s32 font, s32 variation, s32 charIndex, s32 palette, MesasgeFontGlyphData *out)
void draw_message_window(MessagePrintState *printer)
IMG_BIN ui_msg_bubble_left_png[]
MessageImageDataList gMsgVarImages
#define MSG_INSPECT_TEXT_Y
IMG_BIN ui_msg_sign_corner_topleft_png[]
#define MSG_NORMAL_ARROW_Y
#define MSG_NORMAL_HEIGHT_CAP
MessageCharset * MsgCharsets[5]
IMG_BIN ui_msg_arrow_png[]
IMG_BIN ui_msg_sign_side_left_png[]
Vtx gMsgSpeechBoxLQuad[4]
#define UNPACK_PAL_B(color)
#define PM_CC_PRIM_FULL_ALPHA
#define UNPACK_PAL_R(color)
#define PM_CC_MSG_NOISE_OUTLINE
#define UNPACK_PAL_G(color)
#define VIRTUAL_TO_PHYSICAL(addr)
s32 spr_get_npc_raster_info(SpriteRasterInfo *out, s32 npcSpriteID, s32 rasterIndex)
GameStatus * gGameStatusPtr
s32 gCurrentDisplayContextIndex
DisplayContext * gDisplayContext