Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
8a860_len_3f30.c
Go to the documentation of this file.
1#include "common.h"
2#include "hud_element.h"
3#include "message_ids.h"
4
5#define LINE_HEIGHT 13
6
16
19
20#if VERSION_JP
21#define WINDOW_KEY_WIDTH 242
22#define ALREADY_PARTNER_HEIGHT 32
23#define EMPTY_BAR_X 67
24#define DIARY_PAGE_X 0
25#define PARTNER_LIST_X1 50
26#define PARTNER_LIST_X2 66
27#define BADGE_PRICE_X 108
28#define ITEM_PRICE_X 106
29#define MENU_OFFSET_Y1 9
30#define MENU_OFFSET_Y2 7
31#define POPUP_PARTNER_WIDTH 80
32#else
33#define WINDOW_KEY_WIDTH 280
34#define ALREADY_PARTNER_HEIGHT 40
35#define EMPTY_BAR_X 73
36#define DIARY_PAGE_X 8
37#define PARTNER_LIST_X1 85
38#define PARTNER_LIST_X2 91
39#define BADGE_PRICE_X 115
40#define ITEM_PRICE_X 121
41#define MENU_OFFSET_Y1 8
42#define MENU_OFFSET_Y2 6
43#define POPUP_PARTNER_WIDTH 100
44#endif
45
46#if !VERSION_JP
63
80#endif
81
122
124
140
141void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening);
142void popup_menu_draw_title_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening);
143void func_800F48F4(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening);
144void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening);
145void func_800F4C1C(s32* userData, s32 x, s32 y);
146void popup_draw_cost_icon(s32* userData, s32 x, s32 y);
147void popup_draw_already_have_partner(s32* userData, s32 x, s32 y);
148void func_800F4D28(s32* userData, s32 x, s32 y);
149
150void hide_popup_menu(void) {
151 if (PopupNotBattle) {
152 switch (gPopupMenu->popupType) {
166 break;
171 break;
172 }
174 } else {
175 switch (gPopupMenu->popupType) {
189 break;
194 break;
195 }
196 }
197
201 }
204 }
208 }
211}
212
253
254void func_800F16CC(void) {
255 if (PopupNotBattle) {
256 switch (gPopupMenu->popupType) {
269 break;
275 break;
281 break;
282 }
284 } else {
285 switch (gPopupMenu->popupType) {
297 break;
302 break;
307 break;
308 }
309 }
310
314 }
317 }
320 }
326
330 }
334 }
337 }
340 }
344}
345
346#if VERSION_PAL
347s32 popup_menu_update(void);
348INCLUDE_ASM(s32, "8a860_len_3f30", popup_menu_update);
349#else
351 s32 posX;
352 s32 posY;
353 s32 width;
354 s32 height;
355 s32 elementID;
356 s32 cond;
357 s32 buttons;
358 s32 msgID;
359 s32 one;
360 s32 i;
361
362 s32 var_s5 = 0;
363 s32 var_s6 = 0; // maybe 6 before 5
364 s32 msgWidth;
365 s32 width2;
366 s32 posX2;
367
368 switch (gPopupState) {
369 case POPUP_STATE_INIT:
370#if VERSION_JP
371 D_8010D67C = 32;
372 D_8010D67E = 72;
373 D_8010D680 = 32;
375#else
376 D_8010D67C = 20;
377 D_8010D67E = 72;
378 D_8010D680 = 20;
379#endif
380 D_8010D682 = 186;
381 D_8010D684 = 16;
382 D_8010D686 = 88;
383#if !VERSION_JP
385#endif
387 if (PopupNotBattle) {
388#if VERSION_JP
389
390 switch (gPopupMenu->popupType) {
398 D_8010D67C += 144;
399 break;
401 D_8010D67C += 122;
402 break;
404 D_8010D67C += 134;
405 break;
407 D_8010D67C += 122;
408 break;
413 D_8010D67C += 160;
414 break;
415 }
416#else
418#endif
419 }
421#if VERSION_JP
422 D_8010D67E -= 10;
423#else
424 D_8010D67E = 62;
425#endif
426 }
427 D_8010D68C = 0;
428 elementID = hud_element_create(&HES_EmptyBar);
429 PopupMenu_EmptybarHEID = elementID;
431 hud_element_set_tint(elementID, 255, 255, 255);
434 }
435
436 one = POPUP_MENU_SWITCH_PARTNER; // required to match (why is 1 loaded so early?)
437 elementID = hud_element_create(gPopupMenu->ptrIcon[0]);
438 PopupMenu_EntryIconHEID = elementID;
439 hud_element_set_scale(elementID, 0.45f);
441
443 PopupMenu_CursorHEID = elementID;
445
447 PopupMenu_UpArrowHEID = elementID;
449
451 PopupMenu_DownArrowHEID = elementID;
453
456 elementID = PopupMenu_TitleIconHEID;
458 hud_element_set_tint(elementID, 255, 255, 255);
459 }
462 elementID = PopupMenu_TitleIconHEID;
464 hud_element_set_tint(elementID, 255, 255, 255);
465 }
468 elementID = PopupMenu_TitleIconHEID;
470 hud_element_set_tint(elementID, 255, 255, 255);
471 }
474 elementID = PopupMenu_TimesHEID;
476 hud_element_set_tint(elementID, 255, 255, 255);
477 }
480 elementID = PopupMenu_PartnerLevelHEID;
482 hud_element_set_tint(elementID, 255, 255, 255);
483 }
484
485 D_8010D65A = -200;
487 if (!PopupNotBattle) {
488 D_8010D644 = 1;
489 }
491
492 posX = D_8010D67C;
493 posY = D_8010D67E;
494
495#if VERSION_PAL
496 gPopupMenu->unk_338 = 0;
497 gPopupMenu->unk_340 = 0;
498
499 switch (gPopupMenu->popupType) {
501 gPopupMenu->unk_33C = MSG_Menus_0061;
502 switch (gPopupMenu->dipMode) {
503 case 0:
504 gPopupMenu->unk_330 = MSG_Menus_Items;
505 break;
506 case 1:
507 gPopupMenu->unk_330 = MSG_Menus_DoubleDip;
508 break;
509 case 2:
510 gPopupMenu->unk_330 = MSG_Menus_TripleDip;
511 break;
512 }
514 gPopupMenu->unk_330 = MSG_Menus_Items;
515 gPopupMenu->unk_33C = MSG_Menus_0064;
517 gPopupMenu->unk_330 = MSG_Menus_Items;
518 gPopupMenu->unk_33C = MSG_Menus_0066;
520 gPopupMenu->unk_330 = MSG_Menus_Items;
521 gPopupMenu->unk_33C = MSG_Menus_0067;
523 var_s6 = 145;
524 var_s5 = 145;
525 gPopupMenu->unk_33C = MSG_Menus_0062;
526 gPopupMenu->unk_330 = MSG_Menus_Items;
527 break;
529 var_s6 = 139;
530 var_s5 = 139;
531 gPopupMenu->unk_330 = MSG_Menus_PartyMember;
532 gPopupMenu->unk_338 = 1;
533 gPopupMenu->unk_33C = MSG_Menus_0063;
534 break;
536 var_s6 = 162;
537 var_s5 = 140;
538 gPopupMenu->unk_340 = -16;
539 gPopupMenu->unk_330 = MSG_MenuTip_0032;
540 gPopupMenu->unk_33C = MSG_Menus_0070;
541 break;
543 var_s6 = 146;
544 var_s5 = 140;
545 gPopupMenu->unk_340 = -8;
546 gPopupMenu->unk_330 = MSG_Menus_PartyMember;
547 gPopupMenu->unk_338 = 1;
548 gPopupMenu->unk_33C = MSG_Menus_006A;
549 break;
551 var_s6 = 167;
552 var_s5 = 145;
553 gPopupMenu->unk_340 = -24;
554 gPopupMenu->unk_330 = MSG_Menus_Items;
555 gPopupMenu->unk_33C = MSG_Menus_0065;
556 break;
558 var_s6 = 170;
559 var_s5 = 170;
560 gPopupMenu->unk_340 = -32;
561 gPopupMenu->unk_330 = MSG_MenuTip_0033;
562 gPopupMenu->unk_33C = MSG_Menus_006D;
563 break;
565 var_s6 = 145;
566 var_s5 = 145;
567 gPopupMenu->unk_330 = MSG_Menus_00D7;
568 gPopupMenu->unk_33C = MSG_Menus_00D6;
569 break;
571 var_s6 = 140;
572 var_s5 = 140;
573 gPopupMenu->unk_340 = -16;
574 gPopupMenu->unk_330 = MSG_Menus_00CE;
575 gPopupMenu->unk_33C = MSG_Menus_006C;
576 break;
578 var_s6 = 149;
579 var_s5 = 149;
580 gPopupMenu->unk_340 = -16;
581 gPopupMenu->unk_330 = MSG_Menus_00D0;
582 gPopupMenu->unk_33C = MSG_Menus_006D;
583 break;
585 var_s6 = 131;
586 var_s5 = 131;
587 gPopupMenu->unk_330 = MSG_Menus_PartyMember;
588 gPopupMenu->unk_338 = 1;
589 gPopupMenu->unk_33C = MSG_Menus_006F;
590 break;
591 }
592 msgWidth = get_msg_width(gPopupMenu->unk_330, 0);
593 width2 = msgWidth + (((var_s5 - msgWidth) * 2) / 5);
594 posX2 = (var_s5 - width2) / 2;
595 gPopupMenu->unk_334 = (width2 - msgWidth) / 2;
597 width2 = 125;
598 posX2 = (var_s5 - width2) / 2;
599 gPopupMenu->unk_334 = (80 - msgWidth) / 2;
600 }
603 if (gPopupMenu->unk_338 == 0) {
608 } else {
613 }
614#elif VERSION_JP
615 switch (gPopupMenu->popupType) {
626 break;
632 break;
638 break;
644 break;
650 break;
656 break;
662 break;
668 break;
674 break;
675 }
676#else
677 switch (gPopupMenu->popupType) {
684 if (gPopupMenu->dipMode == 0) {
686 } else {
688 }
691 break;
697 break;
703 break;
709 break;
715 break;
721 break;
727 break;
733 break;
739 break;
745 break;
746 }
747#endif
748
749#if VERSION_JP
750 switch (gPopupMenu->popupType) {
753 break;
756 break;
759 break;
760 }
761#else
762 switch (gPopupMenu->popupType) {
765 break;
768 break;
769 }
770#endif
771
776 }
777
778 do {
779 cond = FALSE;
786 }
787 } else {
788 cond = TRUE;
789 }
790 }
791 } while (cond);
792
797 {
798 posX = D_8010D680;
799 posY = D_8010D682;
801 }
802
803 posX = D_8010D684;
804 posY = D_8010D686;
805
806#if VERSION_PAL
807 height = 32;
808 if (get_msg_lines(gPopupMenu->unk_33C) == 2) {
809 height = 40;
810 }
811 set_window_properties(WIN_POPUP_PROMPT, posX, posY, gPopupMenu->unk_340 + 144, height, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
812#else
813 switch (gPopupMenu->popupType) {
814#if VERSION_JP
826 switch (gPopupMenu->dipMode) {
827 case 0:
829 break;
830 case 1:
832 break;
833 case 2:
835 break;
836 }
837 break;
840 break;
843 break;
846 break;
847#else
854 break;
859 break;
864 break;
867 break;
870 break;
873 break;
874#endif
875 }
876#endif
877
878 if (!PopupNotBattle) {
879 switch (gPopupMenu->popupType) {
891 break;
896 break;
901 break;
902 }
903 } else {
904 switch (gPopupMenu->popupType) {
917 break;
923 break;
929 break;
930 }
932 }
933
937 }
940 }
943 }
945 break;
947 if (D_8010D644 != 0) {
948 D_8010D644--;
949 } else {
951
952 // change selection on up input
955 {
957 }
958
959 // change selection on down input
961 ((PopupMenu_SelectedIndex < gPopupMenu->numEntries - 1) || (gGameStatusPtr->pressedButtons[0] & (BUTTON_STICK_DOWN | BUTTON_R))))
962 {
964 }
965
966 // wrap selected index
967 if (PopupMenu_SelectedIndex < 0) {
969 }
972 }
973
976 }
977
978 // ensure one option is displayed above the selected index, if applicable
979 // shift up to 4 entries at a time on list wrap
980 for (i = 0; i < 4; i++) {
985 }
986 }
987 }
988
989 // ensure one option is displayed after the selected index, if applicable
990 // shift up to 4 entries at a time on list wrap
991 for (i = 0; i < 4; i++) {
998 }
999 }
1000 }
1002 }
1003
1004 // make selection on A button input
1006 switch (gPopupMenu->popupType) {
1009 if (!PopupNotBattle) {
1011 } else {
1013 }
1014 break;
1017 if (!PopupNotBattle) {
1019 } else {
1021 }
1022 break;
1023 default:
1026 if (!PopupNotBattle) {
1028 } else {
1030 }
1031 break;
1032 }
1036 break;
1037 }
1040 }
1041 break;
1042 }
1043 } else {
1044 switch (gPopupMenu->popupType) {
1051 case POPUP_MENU_USEKEY:
1052 if (PopupNotBattle) {
1053 buttons = BUTTON_B | BUTTON_C_LEFT;
1054 } else {
1055 buttons = BUTTON_B;
1056 }
1057 break;
1060 if (PopupNotBattle) {
1061 buttons = BUTTON_B | BUTTON_C_RIGHT;
1062 } else {
1063 buttons = BUTTON_B;
1064 }
1065 break;
1071 buttons = BUTTON_B;
1072 break;
1073 default:
1074 buttons = 0;
1075 break;
1076 }
1077
1078 if (gGameStatusPtr->pressedButtons[0] & buttons) {
1080 if (PopupNotDipping) {
1081 if (!PopupNotBattle) {
1083 } else {
1085 }
1086 } else {
1087 if (PopupDipMode == 0) {
1089 } else {
1091 }
1092 }
1093 break;
1094 }
1095
1096 switch (gPopupMenu->popupType) {
1097 default:
1098 buttons = 0;
1099 break;
1101 buttons = BUTTON_C_RIGHT;
1102 break;
1104 buttons = BUTTON_C_LEFT;
1105 break;
1106 }
1107
1108 if (PopupNotBattle && (gGameStatusPtr->pressedButtons[0] & buttons)) {
1111 break;
1112 }
1113 }
1114 }
1115 break;
1126 }
1130 }
1133 }
1136 }
1138
1140 return PopupMenu_SelectedIndex + 1;
1143 return PopupMenu_SelectedIndex + 1;
1145 switch (gPopupMenu->popupType) {
1154 case POPUP_MENU_USEKEY:
1157 break;
1162 break;
1167 break;
1168 }
1173 return 255;
1178 return 255;
1181 return 255;
1185 return 255;
1186 case POPUP_STATE_10:
1187 D_8010D644--;
1188 if (D_8010D644 == 0) {
1191 return PopupMenu_SelectedIndex + 1;
1192 }
1193 break;
1194 case POPUP_STATE_20:
1195 D_8010D644++;
1196 if (D_8010D644 >= D_8010D692) {
1199 return PopupMenu_SelectedIndex + 1;
1200 }
1201 break;
1205 return 0;
1209 if (PopupNotBattle) {
1211 }
1212#if VERSION_PAL
1213 width = get_msg_width(MSG_Menus_006B, 0) + 32;
1214 if (get_msg_lines(MSG_Menus_006B) == 1) {
1215 posY = 76;
1216 } else {
1217 posY = 72;
1218 }
1219 set_window_properties(WIN_BTL_POPUP, 160 - (width / 2), posY, width, 40, WINDOW_PRIORITY_20, popup_draw_already_have_partner, NULL, -1);
1220#else
1221 width = get_msg_width(MSG_Menus_006B, 0) + 23;
1223#endif
1225 D_8010D644 = 60;
1227 return 0;
1230 D_8010D644 = 0;
1231 }
1232 if (D_8010D644 != 0) {
1233 D_8010D644--;
1234 return 0;
1235 }
1239 if (PopupNotBattle) {
1241 }
1244 break;
1252
1256 }
1260 }
1263 }
1266 }
1267
1268 switch (gPopupMenu->popupType) {
1277 case POPUP_MENU_USEKEY:
1280 break;
1285 break;
1290 break;
1291 }
1292
1294 if (PopupDipMode == 1) {
1295 msgID = MSG_Menus_0068;
1296 } else {
1297 msgID = MSG_Menus_0069;
1298 }
1299#if VERSION_PAL
1300 width = get_msg_width(msgID, 0) + 32;
1301 if (get_msg_lines(msgID) == 1) {
1302 height = 32;
1303 posY = 76;
1304 } else {
1305 height = 40;
1306 posY = 72;
1307 }
1308 set_window_properties(WIN_POPUP_PROMPT, 160 - (width / 2), posY, width, height, WINDOW_PRIORITY_19, func_800F4C1C, NULL, -1);
1309#else
1310 width = get_msg_width(msgID, 0) + 23;
1311 set_window_properties(WIN_POPUP_PROMPT, 160 - (width / 2), 76, width, 32, WINDOW_PRIORITY_19, func_800F4C1C, NULL, -1);
1312#endif
1314 D_8010D6A0 = msg_get_printer_for_msg(MSG_Choice_001D, &D_8010D6A4);
1317 break;
1319 if (D_8010D6A4 == 1) {
1321 switch (D_8010D6A0->curOption) {
1322 case 0:
1324 break;
1325 case 1:
1327 break;
1328 }
1329 }
1330 break;
1333 break;
1343 }
1347 }
1350 }
1353 }
1355
1356 switch (gPopupMenu->popupType) {
1365 case POPUP_MENU_USEKEY:
1368 break;
1373 break;
1378 break;
1379 }
1382 break;
1383 }
1385 return 0;
1386}
1387#endif
1388
1389void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) {
1390 s32 x, y;
1391 s32 x1, y1;
1392 s32 offset;
1393 s32 sp28;
1394 s32 dy;
1395 s32 i, j;
1396 s32 id;
1397 s32 msgPal;
1398 s32 a0;
1399 s32 v0;
1400 s32 t;
1401
1402 switch (gPopupState) {
1403 case POPUP_STATE_10:
1412 case POPUP_STATE_20:
1417 case POPUP_STATE_104:
1418 case POPUP_STATE_105:
1419 break;
1420 default:
1421 return;
1422 }
1423
1424 baseX += 2;
1425 baseY += 15;
1427 y1 = D_8010D658;
1428 dy = y - y1;
1429
1430 if (dy < 130) {
1431 dy *= 0.5;
1432 } else {
1433 dy = dy * 100 / 150;
1434 }
1435 if (dy != 0) {
1436 y1 += dy;
1437 } else {
1438 y1 = y;
1439 }
1440 D_8010D658 = y1;
1441 sp28 = -D_8010D658 / LINE_HEIGHT;
1442
1443 x = baseX;
1444 y = baseY;
1446 switch (gPopupMenu->popupType) {
1448#if VERSION_JP
1450#endif
1459 case POPUP_MENU_USEKEY:
1461 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 112, y1);
1462 break;
1465 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 90, y1);
1466 break;
1467#if !VERSION_JP
1469 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 160, y1);
1470 break;
1471#endif
1472 }
1473
1474 y = baseY + D_8010D658 + 8;
1476 y = baseY + D_8010D658 + 21;
1477 }
1479 hud_element_set_render_pos(id, baseX + EMPTY_BAR_X, y - 3);
1481 if (PopupMenu_MaxDisplayableEntryCount < gPopupMenu->numEntries) {
1483 }
1484 x = baseX;
1485 y = baseY + 2;
1488 y = baseY;
1489 y1++;
1490 }
1491
1492#if VERSION_JP
1493 switch (gPopupMenu->popupType) {
1502 case POPUP_MENU_USEKEY:
1504 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 112, y1);
1505 break;
1507 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 98, y1);
1508 break;
1510 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 144, y1);
1511 break;
1513 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 144, y1);
1514 break;
1516 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 140, y1);
1517 break;
1518 }
1519#else
1520 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + PopupContentScissorWidths[gPopupMenu->popupType], y1);
1521#endif
1522
1523 x = baseX + 32;
1524 y = baseY + D_8010D658 + 2;
1525 offset = 0;
1527 y = baseY + D_8010D658;
1528 offset = 2;
1529 }
1530
1531 t = 0;
1532 for (i = 0; i < gPopupMenu->numEntries; i++, t++) {
1533 if (sp28 - 1 > i || sp28 + PopupMenu_DisplayedEntryCount < i) {
1534 y += LINE_HEIGHT;
1535 if (i == 0) {
1536 y += offset;
1537 }
1538 } else {
1539 msgPal = D_8010D690;
1541 msgPal = MSG_PAL_STANDARD;
1542 }
1543 if (gPopupMenu->enabled[t] == 0) {
1544 msgPal = MSG_PAL_0B;
1545 }
1546 switch (gPopupMenu->popupType) {
1554 case POPUP_MENU_USEKEY:
1557 break;
1561 break;
1563 if (gPopupMenu->enabled[t] == 2) {
1564 msgPal = MSG_PAL_22;
1565 }
1567 break;
1569 if (gPopupMenu->value[t] != 0) {
1570 msgPal = MSG_PAL_0B;
1571 } else {
1572 msgPal = MSG_PAL_STANDARD;
1573 }
1575 draw_msg(MSG_Menus_00CD, x + DIARY_PAGE_X, y, PopupMenu_Alpha, msgPal, DRAW_MSG_STYLE_MENU);
1576 break;
1578 if (gPopupMenu->value[t] != 0) {
1579 msgPal = MSG_PAL_0B;
1580 } else {
1581 msgPal = MSG_PAL_STANDARD;
1582 }
1583 a0 = gPopupMenu->nameMsg[t];
1584 draw_msg(a0, x, y, PopupMenu_Alpha, msgPal, DRAW_MSG_STYLE_MENU);
1585 break;
1586 }
1587 switch (gPopupMenu->popupType) {
1590 for (j = 0; j < ARRAY_COUNT(D_80109890); j++) {
1592
1593 if (gPopupMenu->enabled[i]) {
1595 } else {
1597 }
1599 hud_element_set_render_pos(id, x + PARTNER_LIST_X1 + j * 13, y + 10);
1600 } else {
1601 hud_element_set_render_pos(id, x + PARTNER_LIST_X2 + j * 13, y + 10);
1602 }
1603 if (j < gPopupMenu->value[i]) {
1605 }
1606 }
1607 break;
1610 break;
1613 break;
1614 }
1615 y += LINE_HEIGHT;
1616 if (i == 0) {
1617 y += offset;
1618 }
1619 }
1620 }
1621
1622 x = baseX + 24;
1623 y = baseY + D_8010D658 + MENU_OFFSET_Y1;
1624 offset = 0;
1626 y = baseY + D_8010D658 + MENU_OFFSET_Y2;
1627 offset = 2;
1628 }
1629
1630 switch (gPopupMenu->popupType) {
1641 case POPUP_MENU_USEKEY:
1643 for (i = 0; i < gPopupMenu->numEntries; i++) {
1644 if (sp28 - 1 > i || sp28 + PopupMenu_DisplayedEntryCount < i) {
1645 y += LINE_HEIGHT;
1646 if (i == 0) {
1647 y += offset;
1648 }
1649 } else {
1654 hud_element_set_scale(id, 0.45f);
1656 y += LINE_HEIGHT;
1657 if (i == 0) {
1658 y += offset;
1659 }
1660 }
1661 }
1662 break;
1664 for (i = 0; i < gPopupMenu->numEntries; i++) {
1665 if (sp28 - 1 > i || sp28 + PopupMenu_DisplayedEntryCount < i) {
1666 y += LINE_HEIGHT;
1667 if (i == 0) {
1668 y += offset;
1669 }
1670 } else {
1675 hud_element_set_scale(id, 0.45f);
1677 y += LINE_HEIGHT;
1678 if (i == 0) {
1679 y += offset;
1680 }
1681 }
1682 }
1683 break;
1685 for (i = 0; i < gPopupMenu->numEntries; i++) {
1686 if (sp28 - 1 > i || sp28 + PopupMenu_DisplayedEntryCount < i) {
1687 y += LINE_HEIGHT;
1688 if (i == 0) {
1689 y += offset;
1690 }
1691 } else {
1696 hud_element_set_scale(id, 0.45f);
1698 y += LINE_HEIGHT;
1699 if (i == 0) {
1700 y += offset;
1701 }
1702 }
1703 }
1704 break;
1705 }
1706
1708 x = baseX + 8;
1709 y = baseY + 9 + v0;
1711
1713 y -= 2;
1714 }
1718
1719 x = baseX;
1720 y = baseY - 6;
1722 switch (gPopupMenu->popupType) {
1733 case POPUP_MENU_USEKEY:
1735 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 112, y1);
1736 break;
1739 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + POPUP_PARTNER_WIDTH, y1);
1740 break;
1741 }
1742
1743 switch (gPopupMenu->popupType) {
1744#if VERSION_JP
1746 offset = 31;
1747 break;
1749 offset = 32;
1750 break;
1752 offset = 31;
1753 break;
1754 default:
1755 offset = 31;
1756 break;
1760 offset = 31;
1761 break;
1762 case POPUP_MENU_USEKEY:
1763 offset = 31;
1764 break;
1766 offset = 13;
1767 break;
1769 offset = 21;
1770 break;
1773 offset = 14;
1774 break;
1775#else
1777 offset = 35;
1778 break;
1781 offset = 35;
1782 break;
1784 offset = 31;
1785 break;
1787 offset = 31;
1788 break;
1792 offset = 31;
1793 break;
1794 default:
1795 offset = 37;
1796 break;
1798 offset = 29;
1799 break;
1801 offset = 21;
1802 break;
1805 offset = 30;
1806 break;
1807#endif
1808 }
1809
1812 x = baseX + offset;
1813 y = baseY;
1814 hud_element_set_render_pos(id, x + 35, y - 1);
1817 }
1818
1819 if (PopupMenu_LastDisplayIndex < gPopupMenu->numEntries) {
1821 x = baseX + offset;
1822 y = baseY;
1824 hud_element_set_render_pos(id, x + 35, y + 5);
1827 }
1828}
1829
1830#if VERSION_PAL
1831void popup_menu_draw_title_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) {
1832 draw_msg(gPopupMenu->unk_330, baseX + gPopupMenu->unk_334, baseY + 2, PopupMenu_Alpha, gPopupMenu->unk_338 == 0 ? MSG_PAL_32 : MSG_PAL_34, DRAW_MSG_STYLE_MENU);
1833
1834 switch (gPopupMenu->popupType) {
1840 switch (gPopupMenu->dipMode) {
1841 case 1:
1842 draw_number(gPopupMenu->titleNumber, baseX + 94, baseY + 2, 1, MSG_PAL_32, PopupMenu_Alpha,
1844 draw_number(2, baseX + 114, baseY + 2, 1, MSG_PAL_32, PopupMenu_Alpha,
1846 draw_msg(MSG_MenuTip_0034, baseX + 94, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1847 break;
1848 case 2:
1849 draw_number(gPopupMenu->titleNumber, baseX + 94, baseY + 2, 1, MSG_PAL_32, PopupMenu_Alpha,
1851 draw_number(3, baseX + 114, baseY + 2, 1, MSG_PAL_32, PopupMenu_Alpha,
1853 draw_msg(MSG_MenuTip_0034, baseX + 94, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1854 break;
1855 }
1856 break;
1857 }
1858}
1859#else
1860
1861#if VERSION_JP
1862#define POPUP_ITEM_X 35
1863#define POPUP_ITEMDIP_NUMBER_X 82
1864#define POPUP_ITEMDIP_X 102
1865#define POPUP_TRIPLE_DIP_X 4
1866#define POPUP_BADGE_X 38
1867#define POPUP_CHEST_X 31
1868#define POPUP_POSTCARD_X 16
1869#define POPUP_ITEM_KEY_X 35
1870#define POPUP_POSTOFFICE_X 23
1871#else
1872#define POPUP_ITEM_X 26
1873#define POPUP_ITEMDIP_NUMBER_X 94
1874#define POPUP_ITEMDIP_X 114
1875#define POPUP_TRIPLE_DIP_X 6
1876#define POPUP_BADGE_X 27
1877#define POPUP_CHEST_X 4
1878#define POPUP_POSTCARD_X 6
1879#define POPUP_ITEM_KEY_X 27
1880#define POPUP_POSTOFFICE_X 8
1881#endif
1882
1884 s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
1885{
1886 switch (gPopupMenu->popupType) {
1892 switch (gPopupMenu->dipMode) {
1893 case 0:
1894#if VERSION_JP
1895 draw_msg(MSG_Menus_JP_004F, baseX + POPUP_ITEM_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1896#else
1897 draw_msg(MSG_Menus_Items, baseX + POPUP_ITEM_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1898#endif
1899 break;
1900 case 1:
1901 draw_msg(MSG_Menus_DoubleDip, baseX + 4, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1905 break;
1906 case 2:
1907 draw_msg(MSG_Menus_TripleDip, baseX + POPUP_TRIPLE_DIP_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1912 break;
1913 }
1914 break;
1916 draw_msg(MSG_MenuTip_0032, baseX + POPUP_BADGE_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1917 break;
1918#if VERSION_JP
1920 draw_msg(MSG_Menus_PartyMember, baseX + 20, baseY + 2, PopupMenu_Alpha, MSG_PAL_34, DRAW_MSG_STYLE_MENU);
1921 break;
1922#endif
1924 draw_msg(MSG_MenuTip_0033, baseX + 23, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1925 break;
1927 draw_msg(MSG_Menus_00D7, baseX + POPUP_CHEST_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1928 break;
1930 draw_msg(MSG_Menus_00CE, baseX + 8, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1931 break;
1933 draw_msg(MSG_Menus_00D0, baseX + POPUP_POSTCARD_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1934 break;
1935 case POPUP_MENU_USEKEY:
1936#if VERSION_JP
1937 draw_msg(MSG_Menus_KeyItems, baseX + POPUP_ITEM_KEY_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1938#else
1939 draw_msg(MSG_Menus_Items, baseX + POPUP_ITEM_KEY_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
1940#endif
1941 break;
1943#if !VERSION_JP
1945#endif
1947 draw_msg(MSG_Menus_PartyMember, baseX + POPUP_POSTOFFICE_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_34, DRAW_MSG_STYLE_MENU);
1948 break;
1949 }
1950}
1951#endif
1952
1953void func_800F48F4(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) {
1955}
1956
1957#if VERSION_PAL
1958void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) {
1959 s32 x = baseX;
1960 s32 y = baseY + 7;
1961
1962 if (PopupNotBattle) {
1963 s32 msgWidth = get_msg_width(gPopupMenu->unk_33C, 0);
1964 s32 msgLines = get_msg_lines(gPopupMenu->unk_33C);
1965
1966 x += ((gPopupMenu->unk_340 + 144) / 2) - (msgWidth / 2);
1967
1968 draw_msg(gPopupMenu->unk_33C, x, msgLines != 1 ? y - 4 : y, 255, MSG_PAL_0F, 0);
1969 }
1970}
1971#else
1972void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) {
1973 s32 msgWidth;
1974
1975#if VERSION_JP
1976 baseY += 6;
1977
1978 if (PopupNotBattle) {
1979 switch (gPopupMenu->popupType) {
1981 msgWidth = get_msg_width(MSG_Menus_0061, 0) + 18;
1982 baseX += 76 - (msgWidth / 2);
1983 draw_msg(MSG_Menus_0061, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
1984 break;
1986 msgWidth = get_msg_width(MSG_Menus_0063, 0) + 18;
1987 baseX += 76 - (msgWidth / 2);
1988 draw_msg(MSG_Menus_0063, baseX + 8, baseY + 2, 255, MSG_PAL_0F, 0);
1989 break;
1991 msgWidth = get_msg_width(MSG_Menus_0064, 0) + 18;
1992 baseX += 76 - (msgWidth / 2);
1993 draw_msg(MSG_Menus_0064, baseX + 4, baseY + 2, 255, MSG_PAL_0F, 0);
1994 break;
1996 msgWidth = get_msg_width(MSG_Menus_0070, 0) + 18;
1997 baseX += 76 - (msgWidth / 2);
1998 draw_msg(MSG_Menus_0070, baseX + 4, baseY + 2, 255, MSG_PAL_0F, 0);
1999 break;
2001 msgWidth = get_msg_width(MSG_Menus_006A, 0) + 18;
2002 baseX += 76 - (msgWidth / 2);
2003 draw_msg(MSG_Menus_006A, baseX + 4, baseY + 2, 255, MSG_PAL_0F, 0);
2004 break;
2006 msgWidth = get_msg_width(MSG_Menus_0065, 0) + 18;
2007 baseX += 76 - (msgWidth / 2);
2008 draw_msg(MSG_Menus_0065, baseX - 4, baseY + 2, 255, MSG_PAL_0F, 0);
2009 break;
2011 msgWidth = get_msg_width(MSG_Menus_0066, 0) + 18;
2012 baseX += 76 - (msgWidth / 2);
2013 draw_msg(MSG_Menus_0066, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2014 break;
2016 msgWidth = get_msg_width(MSG_Menus_0067, 0) + 18;
2017 baseX += 76 - (msgWidth / 2);
2018 draw_msg(MSG_Menus_0067, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2019 break;
2021 msgWidth = get_msg_width(MSG_Menus_JP_0081, 0) + 18;
2022 baseX += 76 - (msgWidth / 2);
2023 draw_msg(MSG_Menus_JP_0081, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2024 break;
2026 msgWidth = get_msg_width(MSG_Menus_00D6, 0) + 18;
2027 baseX += 76 - (msgWidth / 2);
2028 draw_msg(MSG_Menus_00D6, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2029 break;
2031 msgWidth = get_msg_width(MSG_Menus_006C, 0) + 18;
2032 baseX += 76 - (msgWidth / 2);
2033 draw_msg(MSG_Menus_006C, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2034 break;
2036 msgWidth = get_msg_width(MSG_Menus_006D, 0) + 18;
2037 baseX += 76 - (msgWidth / 2);
2038 draw_msg(MSG_Menus_006D, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2039 break;
2040 case POPUP_MENU_USEKEY:
2041 msgWidth = get_msg_width(MSG_Menus_0062, 0) + 18;
2042 baseX += 76 - (msgWidth / 2);
2043 draw_msg(MSG_Menus_0062, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2044 break;
2046 msgWidth = get_msg_width(MSG_Menus_006F, 0) + 18;
2047 baseX += 76 - (msgWidth / 2);
2048 draw_msg(MSG_Menus_006F, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
2049 break;
2050 }
2051 }
2052#else
2053 baseY += 7;
2054
2055 if (PopupNotBattle) {
2056 switch (gPopupMenu->popupType) {
2058 msgWidth = get_msg_width(MSG_Menus_0061, 0);
2059 baseX += 72 - (msgWidth / 2);
2060 draw_msg(MSG_Menus_0061, baseX, baseY, 255, MSG_PAL_0F, 0);
2061 break;
2063 msgWidth = get_msg_width(MSG_Menus_0063, 0);
2064 baseX += 72 - (msgWidth / 2);
2065 draw_msg(MSG_Menus_0063, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2066 break;
2068 msgWidth = get_msg_width(MSG_Menus_0064, 0);
2069 baseX += 72 - (msgWidth / 2);
2070 draw_msg(MSG_Menus_0064, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2071 break;
2073 msgWidth = get_msg_width(MSG_Menus_0070, 0);
2074 baseX += 64 - (msgWidth / 2);
2075 draw_msg(MSG_Menus_0070, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2076 break;
2078 msgWidth = get_msg_width(MSG_Menus_006A, 0);
2079 baseX += 68 - (msgWidth / 2);
2080 draw_msg(MSG_Menus_006A, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2081 break;
2083 msgWidth = get_msg_width(MSG_Menus_0065, 0);
2084 baseX += 60 - (msgWidth / 2);
2085 draw_msg(MSG_Menus_0065, baseX, baseY, 255, MSG_PAL_0F, 0);
2086 break;
2088 msgWidth = get_msg_width(MSG_Menus_0066, 0);
2089 baseX += 72 - (msgWidth / 2);
2090 draw_msg(MSG_Menus_0066, baseX, baseY, 255, MSG_PAL_0F, 0);
2091 break;
2093 msgWidth = get_msg_width(MSG_Menus_0067, 0);
2094 baseX += 72 - (msgWidth / 2);
2095 draw_msg(MSG_Menus_0067, baseX, baseY, 255, MSG_PAL_0F, 0);
2096 break;
2098 msgWidth = get_msg_width(MSG_Menus_006F, 0);
2099 baseX += 72 - (msgWidth / 2);
2100 draw_msg(MSG_Menus_006F, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2101 break;
2103 msgWidth = get_msg_width(MSG_Menus_006D, 0);
2104 baseX += 56 - (msgWidth / 2);
2105 draw_msg(MSG_Menus_006D, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2106 break;
2108 msgWidth = get_msg_width(MSG_Menus_00D6, 0);
2109 baseX += 72 - (msgWidth / 2);
2110 draw_msg(MSG_Menus_00D6, baseX, baseY, 255, MSG_PAL_0F, 0);
2111 break;
2113 msgWidth = get_msg_width(MSG_Menus_006C, 0);
2114 baseX += 64 - (msgWidth / 2);
2115 draw_msg(MSG_Menus_006C, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2116 break;
2118 msgWidth = get_msg_width(MSG_Menus_006D, 0);
2119 baseX += 64 - (msgWidth / 2);
2120 draw_msg(MSG_Menus_006D, baseX, baseY - 4, 255, MSG_PAL_0F, 0);
2121 break;
2122 case POPUP_MENU_USEKEY:
2123 msgWidth = get_msg_width(MSG_Menus_0062, 0);
2124 baseX += 72 - (msgWidth / 2);
2125 draw_msg(MSG_Menus_0062, baseX, baseY, 255, MSG_PAL_0F, 0);
2126 break;
2127 }
2128 }
2129#endif
2130}
2131#endif
2132
2133#if VERSION_PAL
2134#define X_800F4C1C 16
2135#else
2136#define X_800F4C1C 11
2137#endif
2138
2139void func_800F4C1C(s32* userData, s32 x, s32 y) {
2140 s32 xPos = x + X_800F4C1C;
2141 s32 yPos = y + 8;
2142 s32 msg;
2143
2144 if (PopupDipMode == 1) {
2145 msg = MSG_Menus_0068;
2146 } else {
2147 msg = MSG_Menus_0069;
2148 }
2149
2150#if VERSION_PAL
2151 if (get_msg_lines(msg) != 1) {
2152 yPos -= 4;
2153 }
2154#endif
2155 draw_msg(msg, xPos, yPos, 255, MSG_PAL_0F, 0);
2156}
2157
2158void popup_draw_cost_icon(s32* userData, s32 x, s32 y) {
2159 s32 hudElement;
2160 s32 xPos;
2161 s32 yPos;
2162
2163 switch (gPopupMenu->popupType) {
2165 xPos = x + 16;
2166 hudElement = PopupMenu_TitleIconHEID;
2167 yPos = y + 16;
2168 break;
2169#if VERSION_JP
2171 draw_msg(MSG_Menus_006E, x + 7, y + 2, PopupMenu_Alpha, MSG_PAL_34, 1);
2172 return;
2173#endif
2175 xPos = x + 17;
2176 hudElement = PopupMenu_TitleIconHEID;
2177 yPos = y + 17;
2178 break;
2179 default:
2180 return;
2181 }
2182
2183 hud_element_set_render_pos(hudElement, xPos, yPos);
2185 hud_element_draw_clipped(hudElement);
2186}
2187
2188void popup_draw_already_have_partner(s32* userData, s32 x, s32 y) {
2189#if VERSION_JP
2190 draw_msg(MSG_Menus_006B, x + 11, y + 8, 255, MSG_PAL_0F, 0);
2191#else
2192 draw_msg(MSG_Menus_006B, x + 16, y + 2, 255, MSG_PAL_0F, 0);
2193#endif
2194}
2195
2196void func_800F4D28(s32* userData, s32 x, s32 y) {
2197 s32 hudElement = PopupMenu_TitleIconHEID;
2198 PlayerData* playerData = &gPlayerData;
2199 s32 xPos = x + 14;
2200 s32 yPos = y + 9;
2201 s32 type;
2202
2204
2206 hud_element_set_render_pos(hudElement, xPos, yPos);
2207 } else {
2208 hud_element_set_render_pos(hudElement, xPos, y + 10);
2209 }
2210
2211 hud_element_draw_clipped(hudElement);
2212
2213 hudElement = PopupMenu_TimesHEID;
2214 hud_element_set_render_pos(hudElement, x + 26, y + 11);
2216 hud_element_draw_clipped(hudElement);
2217
2218 type = gPopupMenu->popupType;
2219 if (type == POPUP_TYPE_TRADE_FOR_BADGE) {
2221 }
2222}
2223
2225 PopupMenu* otherPopup;
2226 s8 entryCount;
2227 s32 initialPos;
2228 s32 numEntries;
2229
2233 gPopupMenu = popup;
2235 popup->dipMode = 0;
2236 popup->titleNumber = 0;
2237 PopupDipMode = 0;
2238 PopupNotDipping = TRUE;
2239 if (popup->popupType >= POPUP_MENU_DOUBLE_DIP) {
2241 PopupDipMode = 1;
2242 if (popup->popupType >= POPUP_MENU_DOUBLE_DIP) {
2244 PopupDipMode = 2;
2245 }
2246 PopupNotDipping = FALSE;
2247 }
2248
2249 PopupNotBattle = TRUE;
2252
2253 initialPos = gPopupMenu->initialPos;
2254 numEntries = gPopupMenu->numEntries;
2255 PopupMenu_SelectedIndex = initialPos;
2256 if (initialPos >= numEntries) {
2257 PopupMenu_SelectedIndex = numEntries - 1;
2258 }
2261
2262 entryCount = gPopupMenu->numEntries;
2263 PopupMenu_DisplayedEntryCount = entryCount;
2264 if (PopupMenu_MaxDisplayableEntryCount < entryCount) {
2266 }
2267
2271 }
2272
2273 PopupMenu_Alpha = 255;
2274 D_8010D691 = 4;
2275 D_8010D692 = 6;
2276 gPopupWorker = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL);
2277}
2278
2280 gPopupMenu = popup;
2281
2283 popup->dipMode = 0;
2284 popup->titleNumber = 0;
2286 PopupDipMode = 0;
2287 PopupNotDipping = TRUE;
2290 PopupDipMode = 1;
2293 PopupDipMode = 2;
2294 }
2295 PopupNotDipping = FALSE;
2296 }
2297
2298 PopupNotBattle = TRUE;
2304 }
2308
2311 }
2312
2316 }
2317
2318 PopupMenu_Alpha = 255;
2319 D_8010D691 = 4;
2320 D_8010D692 = 6;
2321 gPopupWorker = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL);
2322}
2323
2325 gPopupMenu = popup;
2326
2328 D_8010D693 = popup->titleNumber;
2330 PopupDipMode = 0;
2331 PopupNotDipping = TRUE;
2334 PopupDipMode = 1;
2337 PopupDipMode = 2;
2338 }
2339 PopupNotDipping = FALSE;
2340 }
2341
2342 PopupNotBattle = FALSE;
2348 }
2352
2355 }
2356
2360 }
2361
2362 PopupMenu_Alpha = 255;
2363 D_8010D691 = 9;
2364 D_8010D692 = 2;
2365 gPopupWorker = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL);
2366}
2367
2368void func_800F52BC(void) {
2370}
BSS s8 D_8010D690
#define POPUP_ITEMDIP_X
#define WINDOW_KEY_WIDTH
void create_battle_popup_menu(PopupMenu *popup)
void popup_menu_draw_menu_contents(s32 *userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
BSS s32 D_8010D644
HudScript HES_EmptyBar
void func_800F48F4(s32 *userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
s16 PopupContentScissorWidths[]
BSS s16 D_8010D686
BSS s16 D_8010D68C
BSS s32 PopupMenu_PrevSelectedIndex
BSS s8 D_8010D692
HudScript HES_HandPointer
void popup_menu_draw_title_contents(s32 *userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
void func_800F4944(s32 *userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
#define POPUP_POSTOFFICE_X
BSS s32 PopupMenu_TimesHEID
#define DIARY_PAGE_X
BSS s8 PopupNotBattle
BSS s16 D_8010D684
BSS s32 PopupMenu_Alpha
void hide_popup_menu(void)
BSS s16 PopupMenu_StarPieceCounterPosY
#define BADGE_PRICE_X
BSS s16 D_8010D67E
#define POPUP_TRIPLE_DIP_X
BSS MessagePrintState * D_8010D6A0
#define MENU_OFFSET_Y1
#define ALREADY_PARTNER_HEIGHT
#define EMPTY_BAR_X
#define PARTNER_LIST_X2
BSS s8 PopupMenu_FirstDisplayIndex
BSS s8 PopupMenu_DisplayedEntryCount
#define POPUP_BADGE_X
HudScript HES_GreenArrowDown
s32 popup_menu_update(void)
HudScript HES_PartnerRank1B
BSS s8 PopupDipMode
BSS s32 PopupMenu_PartnerLevelHEID
HudScript HES_PartnerRank2B
#define POPUP_ITEM_X
#define ITEM_PRICE_X
BSS s8 PopupNotDipping
void destroy_popup_menu(void)
#define X_800F4C1C
HudScript * D_80109890[]
BSS s16 D_8010D682
PopupTypes
@ POPUP_TYPE_READ_POSTCARD
@ POPUP_TYPE_SWITCH_PARTNER
@ POPUP_TYPE_TAKE_FROM_CHEST
@ POPUP_TYPE_USE_KEY
@ POPUP_TYPE_TRADE_FOR_BADGE
@ POPUP_TYPE_USE_ITEM
@ POPUP_TYPE_CLAIM_ITEM
@ POPUP_TYPE_THROW_AWAY_ITEM
@ POPUP_TYPE_UPGRADE_PARTNER
@ POPUP_TYPE_SELL_ITEM
@ POPUP_TYPE_CHECK_ITEM
@ POPUP_TYPE_READ_LETTER
@ POPUP_TYPE_READ_DIARY_PAGE
void create_standard_popup_menu(PopupMenu *popup)
BSS s32 PopupMenu_UpArrowHEID
void popup_draw_cost_icon(s32 *userData, s32 x, s32 y)
#define POPUP_POSTCARD_X
HudScript HES_GreenArrowUp
BSS s16 PopupMenu_StarPieceCounterPosX
void func_800F52BC(void)
HudScript HES_PartnerRank1A
void func_800F4C1C(s32 *userData, s32 x, s32 y)
#define LINE_HEIGHT
BSS s16 D_8010D658
BSS s16 D_8010D65A
HudScript HES_PartnerRank2A
#define POPUP_CHEST_X
BSS s32 gPopupWorker
#define POPUP_ITEM_KEY_X
BSS s32 PopupMenu_CursorHEID
#define PARTNER_LIST_X1
BSS s32 PopupMenu_EntryIconHEID
BSS s8 PopupMenu_LastDisplayIndex
BSS s32 PopupMenu_TitleIconHEID
#define POPUP_ITEMDIP_NUMBER_X
s8 status_bar_is_ignoring_changes(void)
Definition inventory.c:1512
BSS s8 D_8010D691
void popup_draw_already_have_partner(s32 *userData, s32 x, s32 y)
void create_shop_popup_menu(PopupMenu *popup)
BSS s32 D_8010D6A4
void func_800F4D28(s32 *userData, s32 x, s32 y)
BSS s16 D_8010D67C
HudScript * D_80109898[]
BSS s32 gPopupState
HudScript HES_StatusStarPiece
BSS s32 PopupMenu_SelectedIndex
BSS s16 D_8010D680
void func_800F16CC(void)
#define MENU_OFFSET_Y2
BSS s8 PopupMenu_WasStatusBarIgnoringChanges
BSS s32 PopupMenu_DownArrowHEID
BSS PopupMenu * gPopupMenu
#define POPUP_PARTNER_WIDTH
BSS s8 PopupMenu_MaxDisplayableEntryCount
BSS s8 D_8010D693
s16 PopupWorldStartX[]
BSS s32 PopupMenu_EmptybarHEID
u32 pressedButtons[4]
#define get_msg_width
#define draw_msg
@ DRAW_MSG_STYLE_MENU
Definition enums.h:5385
@ DRAW_NUMBER_STYLE_ALIGN_RIGHT
drawn to the left of posX
Definition enums.h:5393
@ DRAW_NUMBER_STYLE_MONOSPACE
Definition enums.h:5394
@ DRAW_NUMBER_STYLE_MONOSPACE_RIGHT
Definition enums.h:5395
@ BUTTON_A
Definition enums.h:2790
@ BUTTON_R
Definition enums.h:2781
@ BUTTON_STICK_UP
Definition enums.h:2791
@ BUTTON_STICK_DOWN
Definition enums.h:2792
@ BUTTON_B
Definition enums.h:2789
@ BUTTON_C_RIGHT
Definition enums.h:2777
@ BUTTON_C_LEFT
Definition enums.h:2778
@ BUTTON_Z
Definition enums.h:2788
@ POPUP_MENU_TRADE_FOR_BADGE
Definition enums.h:3134
@ POPUP_MENU_READ_DIARY_PAGE
Definition enums.h:3141
@ POPUP_MENU_SELL_ITEM
Definition enums.h:3136
@ POPUP_MENU_CHECK_ITEM
Definition enums.h:3137
@ POPUP_MENU_POST_OFFICE
Definition enums.h:3144
@ POPUP_MENU_DOUBLE_DIP
Definition enums.h:3145
@ POPUP_MENU_USE_ITEM
Definition enums.h:3131
@ POPUP_MENU_TAKE_FROM_CHEST
Definition enums.h:3140
@ POPUP_MENU_USEKEY
Definition enums.h:3143
@ POPUP_MENU_CLAIM_ITEM
Definition enums.h:3138
@ POPUP_MENU_READ_LETTER
Definition enums.h:3139
@ POPUP_MENU_UPGRADE_PARTNER
Definition enums.h:3135
@ POPUP_MENU_THROW_AWAY_ITEM
Definition enums.h:3133
@ POPUP_MENU_SWITCH_PARTNER
Definition enums.h:3132
@ POPUP_MENU_READ_POSTCARD
Definition enums.h:3142
@ WINDOW_PRIORITY_21
Definition enums.h:3187
@ WINDOW_PRIORITY_19
Definition enums.h:3185
@ WINDOW_PRIORITY_20
Definition enums.h:3186
@ MSG_PAL_0F
Definition enums.h:5420
@ MSG_PAL_22
Definition enums.h:5439
@ MSG_PAL_34
Definition enums.h:5457
@ MSG_PAL_0D
Definition enums.h:5418
@ MSG_PAL_STANDARD
Definition enums.h:5415
@ MSG_PAL_0B
Definition enums.h:5416
@ MSG_PAL_32
Definition enums.h:5455
@ WINDOW_UPDATE_SHOW
Definition enums.h:5311
@ WINDOW_UPDATE_HIDE
Definition enums.h:5312
@ DRAW_NUMBER_CHARSET_THIN
Definition enums.h:5401
@ POPUP_RESULT_CANCEL
Definition enums.h:3178
@ POPUP_RESULT_CHOOSING
Definition enums.h:3177
@ POPUP_RESULT_INVALID
Definition enums.h:3175
@ POPUP_RESULT_SWAP_MENU
Definition enums.h:3176
@ CONTEXT_WORLD
Definition enums.h:3529
@ SOUND_OPEN_POPUP_1
Definition enums.h:548
@ SOUND_MENU_BACK
Definition enums.h:701
@ SOUND_OPEN_POPUP_2
Definition enums.h:549
@ SOUND_MENU_CHANGE_SELECTION
Definition enums.h:698
@ SOUND_MENU_NEXT
Definition enums.h:700
@ SOUND_MENU_ERROR
Definition enums.h:933
@ POPUP_STATE_CHOSE_SWAP
Definition enums.h:3169
@ POPUP_STATE_MINUS_8
Definition enums.h:3171
@ POPUP_STATE_10
Definition enums.h:3152
@ POPUP_STATE_104
Definition enums.h:3162
@ POPUP_STATE_CHOSE_WORLD
Definition enums.h:3164
@ POPUP_STATE_11
Definition enums.h:3153
@ POPUP_STATE_MINUS_4
Definition enums.h:3167
@ POPUP_STATE_MINUS_3
Definition enums.h:3166
@ POPUP_STATE_ALREADY_HAVE_PARTNER_SHOW
Definition enums.h:3156
@ POPUP_STATE_INIT
Definition enums.h:3150
@ POPUP_STATE_105
Definition enums.h:3163
@ POPUP_STATE_CHOOSING
Definition enums.h:3151
@ POPUP_STATE_ALREADY_HAVE_PARTNER_BEGIN
Definition enums.h:3155
@ POPUP_STATE_ALREADY_HAVE_PARTNER_AWAIT
Definition enums.h:3157
@ POPUP_STATE_CANCEL_DIP
Definition enums.h:3158
@ POPUP_STATE_CANCEL_DIP_DECLINE
Definition enums.h:3161
@ POPUP_STATE_CANCEL_DIP_AWAIT_CHOICE
Definition enums.h:3159
@ POPUP_STATE_CHOSE_BATTLE
Definition enums.h:3165
@ POPUP_STATE_MINUS_7
Definition enums.h:3170
@ POPUP_STATE_MINUS_5
Definition enums.h:3168
@ POPUP_STATE_20
Definition enums.h:3154
@ POPUP_STATE_CANCEL_DIP_ACCEPT
Definition enums.h:3160
@ WIN_CURRENCY_COUNTER
Definition enums.h:5261
@ WIN_POPUP_DESC
Definition enums.h:5260
@ WIN_POPUP_CONTENT
Definition enums.h:5255
@ WIN_BTL_POPUP
Definition enums.h:5250
@ WIN_POPUP_TITLE_A
Definition enums.h:5256
@ WIN_POPUP_TITLE_B
Definition enums.h:5258
@ WIN_POPUP_COST
Definition enums.h:5257
@ WIN_POPUP_PROMPT
Definition enums.h:5262
@ WIN_PARTNER_COST
Definition enums.h:5259
void msg_printer_set_origin_pos(MessagePrintState *msgPrintState, s32 x, s32 y)
Definition msg.c:1489
void basic_hidden_window_update(s32 windowIndex, s32 *flags, s32 *posX, s32 *posY, s32 *posZ, f32 *scaleX, f32 *scaleY, f32 *rotX, f32 *rotY, f32 *rotZ, s32 *darkening, s32 *opacity)
Definition windows.c:184
void status_bar_ignore_changes(void)
Definition inventory.c:1497
void set_window_update(s32 panelID, s32)
Definition windows.c:434
void open_status_bar_quickly(void)
Definition inventory.c:1430
void basic_window_update(s32 windowIndex, s32 *flags, s32 *posX, s32 *posY, s32 *posZ, f32 *scaleX, f32 *scaleY, f32 *rotX, f32 *rotY, f32 *rotZ, s32 *darkening, s32 *opacity)
Definition windows.c:161
void close_status_bar(void)
Definition inventory.c:1440
void free_worker(s32)
Definition worker.c:176
MessagePrintState * msg_get_printer_for_msg(s32 msgID, s32 *a1)
Definition msg.c:1424
void set_message_int_var(s32 value, s32 index)
Definition msg.c:1550
void set_window_properties(s32 panelID, s32 posX, s32 posY, s32 width, s32 height, u8, void *drawContents, void *drawContentsArg, s8 parent)
Definition windows.c:373
s32 create_worker_frontUI(void(*updateFunc)(void), void(*drawFunc)(void))
Definition worker.c:63
void draw_number(s32 value, s32 x, s32 y, s32 variableWidthChars, s32 palette, s32 opacity, u16 style)
Definition msg.c:2223
void status_bar_respond_to_changes(void)
Definition inventory.c:1508
s32 get_msg_lines(s32 messageID)
Definition msg.c:1979
HudScript HES_AnimatedHandPointer
HudScript HES_StatusCoin
HudScript HES_MenuTimes
void hud_element_set_scale(s32 index, f32 scale)
void hud_element_set_alpha(s32 id, s32 opacity)
void hud_element_draw_without_clipping(s32 id)
void hud_element_set_script(s32 id, HudScript *anim)
void hud_element_draw_next(s32 id)
void hud_element_set_tint(s32 id, s32 r, s32 g, s32 b)
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
s32 hud_element_create(HudScript *anim)
Creates a new HUD element and returns its ID.
void hud_element_set_flags(s32 id, s32 flags)
Turns on the given flags.
void hud_element_draw_clipped(s32 id)
void hud_element_free(s32 id)
s32 userIndex[32]
s32 nameMsg[32]
@ HUD_ELEMENT_FLAG_DISABLED
Definition hud_element.h:74
@ HUD_ELEMENT_FLAG_80
Definition hud_element.h:80
@ HUD_ELEMENT_FLAG_DROP_SHADOW
@ HUD_ELEMENT_FLAG_FILTER_TEX
Definition hud_element.h:88
s32 titleNumber
HudScript * ptrIcon[32]
s32 value[32]
s32 enabled[32]
s32 HudScript[]
Definition hud_element.h:9
s32 descMsg[32]
#define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...)
Definition include_asm.h:21
void sfx_play_sound(s32 soundID)
Definition sfx.c:517
#define BSS
Definition macros.h:7
#define ARRAY_COUNT(arr)
Definition macros.h:40
GameStatus * gGameStatusPtr
Definition main_loop.c:32
Gfx * gMainGfxPos
Definition cam_main.c:15
PlayerData gPlayerData
Definition 77480.c:40