111 s32 i, pageIndex, itemIndex;
114 s32 currentItemColumn;
125 s32 isSelected, itemOffsetX, itemOffsetY;
128 s32 msg, msgX, msgY, opacity1;
129 s32 selectedPosX, selectedPosY;
130 s32 cursorOffsetX, cursorOffsetY;
134 currentItemColumn = gPauseItemsSelectedIndex / gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
135 currentItemRow = gPauseItemsSelectedIndex % gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
136 draw_box(
DRAW_FLAG_NO_CLIP, &
gPauseWS_18, baseX + 68, baseY, 0, width - 68, height, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
140 x2 = baseX + width - 1;
141 y2 = baseY + height - 7;
165 gDPSetScissor(
gMainGfxPos++, G_SC_NON_INTERLACE, x1, y1, x2, y2);
167 for (i = 0; i < 3; i++) {
168 for (pageIndex = 0; pageIndex < 20; pageIndex++) {
169 iconIDs = gPauseItemsIconIDs;
171 page = &gPauseItemsPages[pageIndex];
178 for (itemIndex = 0; itemIndex < page->
count; itemIndex++) {
179 itemID = gPauseItemsItemIDs[page->
startIndex + itemIndex];
191 gPauseItemsLevel == 1 &&
232 itemIcon = iconIDs[totalItemIndex];
236 itemIcon = gPauseItemsIconIDs[19];
249 if (totalItemIndex == 0) {
263 x2 = baseX + width - 1;
264 y2 = baseY + height - 1;
285 gDPSetScissor(
gMainGfxPos++, G_SC_NON_INTERLACE, x1, y1, x2, y2);
288 if (gPauseItemsCurrentPage > 0) {
293 if (gPauseItemsPages [gPauseItemsCurrentPage + 1].enabled) {
300 91, 34, 255, gPauseItemsCurrentTab == 1 ? 128 : 0, 0, 0,
305 if (gPauseItemsCurrentTab == 0) {
310 if (gPauseItemsCurrentTab == 1) {
316 91, 34, 255, gPauseItemsCurrentTab == 0 ? 128 : 0, 0, 0,
321 if (gPauseItemsCurrentTab == 1) {
326 if (gPauseItemsCurrentTab == 0) {
332 if (gPauseItemsLevel == 0) {
335 selectedPosX =
pause_items_get_pos_x(gPauseItemsCurrentPage, gPauseItemsSelectedIndex - gPauseItemsPages[gPauseItemsCurrentPage].listStart * gPauseItemsPages[gPauseItemsCurrentPage].numCols);
336 selectedPosY =
pause_items_get_pos_y(gPauseItemsCurrentPage, gPauseItemsSelectedIndex - gPauseItemsPages[gPauseItemsCurrentPage].listStart * gPauseItemsPages[gPauseItemsCurrentPage].numCols);
339 if (cursorOffsetY < 0) {
341 }
else if (cursorOffsetY > 112) {
345 if (gPauseItemsCurrentScrollPos != gPauseItemsTargetScrollPos) {
360 s16* itemMenuNumItems;
364 s16* itemMenuItemIDs;
367 if (invItems == TRUE) {
369 if (playerData->
invItems[i] != ITEM_NONE) {
370 gPauseItemsItemIDs[totalItems] = playerData->
invItems[i];
376 if (playerData->
keyItems[i] != ITEM_NONE) {
377 gPauseItemsItemIDs[totalItems] = playerData->
keyItems[i];
383 if (totalItems == 0) {
390 gPauseItemsNumItems = totalItems;
392 for (i = totalItems; i <
ARRAY_COUNT(gPauseItemsItemIDs); i++) {
396 page = gPauseItemsPages;
397 gPauseItemsSelectedIndex = 0;
398 gPauseItemsSelectedItem = 0;
400 gPauseItemsTargetScrollIndex = 0;
401 gPauseItemsCurrentPage = 0;
403 for (i = 0; i < gPauseItemsNumItems / 8; i++, page++) {
412 if ((gPauseItemsNumItems % 8) != 0) {
417 page->
count = gPauseItemsNumItems % 8;
423 for (; i <
ARRAY_COUNT(gPauseItemsPages); i++, page++) {
452 s32 oldSelectedIndex = gPauseItemsSelectedIndex;
453 s32 row = gPauseItemsSelectedIndex / gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
454 s32 column = gPauseItemsSelectedIndex % gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
460 gPauseItemsLevel = 1;
466 if (gPauseItemsNumItems != 0) {
467 if (gPauseItemsLevel == 0) {
468 oldTab = gPauseItemsCurrentTab;
470 gPauseItemsCurrentTab ^= 1;
473 if (oldTab != gPauseItemsCurrentTab) {
485 if (row < gPauseItemsPages[gPauseItemsCurrentPage].listStart) {
486 gPauseItemsCurrentPage--;
489 gPauseItemsCurrentPage--;
490 if (gPauseItemsCurrentPage < 0) {
491 gPauseItemsCurrentPage = 0;
493 row = gPauseItemsPages[gPauseItemsCurrentPage].
listStart;
500 if (row >= gPauseItemsPages[gPauseItemsCurrentPage].listStart + gPauseItemsPages[gPauseItemsCurrentPage].numRows) {
501 gPauseItemsCurrentPage++;
503 if (!gPauseItemsPages[gPauseItemsCurrentPage].enabled) {
504 gPauseItemsCurrentPage--;
509 gPauseItemsCurrentPage++;
511 if (!gPauseItemsPages[gPauseItemsCurrentPage].enabled) {
512 gPauseItemsCurrentPage--;
514 row = gPauseItemsPages[gPauseItemsCurrentPage].
listStart;
519 if (gPauseItemsItemIDs[row * gPauseItemsPages[gPauseItemsCurrentPage].numCols] !=
ITEM_NONE_STANDIN) {
524 column = gPauseItemsPages[gPauseItemsCurrentPage].
numCols - 1;
528 if (column >= gPauseItemsPages[gPauseItemsCurrentPage].numCols) {
536 gPauseItemsSelectedIndex = column + row * gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
537 if (gPauseItemsSelectedIndex != oldSelectedIndex) {
541 gPauseItemsSelectedItem = gPauseItemsItemIDs[gPauseItemsSelectedIndex];
545 if (gPauseItemsLevel == 1) {
553 if (gPauseItemsCurrentTab == 1) {
563 if (gPauseItemsLevel == 0) {
568 gPauseItemsLevel = 0;
574 PauseItemPage* page = &gPauseItemsPages[gPauseItemsCurrentPage];
575 s32 selectedIndex = (gPauseItemsSelectedIndex / page->
numCols) - page->
listStart;
577 if (selectedIndex < 2 || page->numRows < 9) {
578 gPauseItemsTargetScrollIndex = 0;
579 }
else if (selectedIndex >= page->
numRows - 2) {
580 gPauseItemsTargetScrollIndex = page->
numRows - 8;
581 }
else if (selectedIndex - gPauseItemsTargetScrollIndex > 6) {
582 gPauseItemsTargetScrollIndex = selectedIndex - 6;
583 }
else if (selectedIndex - gPauseItemsTargetScrollIndex < 1) {
584 gPauseItemsTargetScrollIndex = selectedIndex - 1;