through ItemMenu_StartFadeToExitCallback

This commit is contained in:
PikalaxALT
2020-01-18 09:36:16 -05:00
parent 2ce545fc21
commit 1c3f865acf
5 changed files with 192 additions and 354 deletions
-249
View File
@@ -5,255 +5,6 @@
.text
thumb_func_start sub_81089BC
sub_81089BC: @ 81089BC
push {r4,r5,lr}
ldr r0, _081089F0 @ =gUnknown_203ACFC
movs r2, 0
movs r1, 0
strh r1, [r0, 0x6]
strb r2, [r0, 0x5]
movs r2, 0
adds r5, r0, 0
adds r5, 0x8
movs r3, 0
adds r4, r0, 0
adds r4, 0xE
_081089D4:
lsls r1, r2, 1
adds r0, r1, r5
strh r3, [r0]
adds r1, r4
strh r3, [r1]
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x2
bls _081089D4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_081089F0: .4byte gUnknown_203ACFC
thumb_func_end sub_81089BC
thumb_func_start sub_81089F4
sub_81089F4: @ 81089F4
push {r4-r7,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r2, _08108A60 @ =gUnknown_203ACFC
lsls r1, r4, 1
adds r0, r2, 0
adds r0, 0xE
adds r3, r1, r0
ldrh r0, [r3]
adds r7, r2, 0
ldr r6, _08108A64 @ =gUnknown_203AD10
cmp r0, 0
beq _08108A2E
adds r2, r0, 0
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0xD
adds r0, r4
ldrb r5, [r0]
adds r2, r5
adds r1, 0xA
adds r1, r4
ldrb r1, [r1]
adds r0, r1, 0x1
cmp r2, r0
ble _08108A2E
subs r0, r5, 0x1
subs r0, r1, r0
strh r0, [r3]
_08108A2E:
lsls r2, r4, 1
adds r0, r7, 0
adds r0, 0xE
adds r0, r2, r0
ldrh r1, [r0]
adds r0, r7, 0
adds r0, 0x8
adds r2, r0
ldrh r0, [r2]
adds r1, r0
ldr r0, [r6]
adds r0, 0xA
adds r0, r4
ldrb r0, [r0]
adds r3, r0, 0x1
cmp r1, r3
blt _08108A58
cmp r3, 0x1
bgt _08108A56
movs r0, 0
_08108A56:
strh r0, [r2]
_08108A58:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08108A60: .4byte gUnknown_203ACFC
_08108A64: .4byte gUnknown_203AD10
thumb_func_end sub_81089F4
thumb_func_start sub_8108A68
sub_8108A68: @ 8108A68
push {r4,lr}
movs r4, 0
_08108A6C:
adds r0, r4, 0
bl sub_81089F4
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x2
bls _08108A6C
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8108A68
thumb_func_start sub_8108A84
sub_8108A84: @ 8108A84
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r6, 0
ldr r0, _08108AF8 @ =gUnknown_203ACFC+8
mov r8, r0
_08108A90:
lsls r2, r6, 1
mov r3, r8
adds r1, r2, r3
ldrh r0, [r1]
adds r7, r6, 0x1
cmp r0, 0x3
bls _08108AE6
movs r5, 0
subs r0, 0x3
cmp r5, r0
bgt _08108AE6
ldr r0, _08108AFC @ =gUnknown_203ACFC+14
ldr r3, _08108B00 @ =gUnknown_203AD10
mov r12, r3
adds r4, r2, r0
adds r3, r1, 0
_08108AB0:
ldrh r2, [r4]
mov r0, r12
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0xD
adds r0, r6
ldrb r0, [r0]
adds r2, r0
adds r1, 0xA
adds r1, r6
ldrb r0, [r1]
adds r0, 0x1
cmp r2, r0
beq _08108AE6
ldrh r0, [r3]
subs r0, 0x1
strh r0, [r3]
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r3]
subs r0, 0x3
cmp r5, r0
ble _08108AB0
_08108AE6:
lsls r0, r7, 24
lsrs r6, r0, 24
cmp r6, 0x2
bls _08108A90
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08108AF8: .4byte gUnknown_203ACFC+8
_08108AFC: .4byte gUnknown_203ACFC+14
_08108B00: .4byte gUnknown_203AD10
thumb_func_end sub_8108A84
thumb_func_start sub_8108B04
sub_8108B04: @ 8108B04
push {lr}
ldr r0, _08108B40 @ =gUnknown_203AD10
ldr r0, [r0]
cmp r0, 0
beq _08108B12
bl Free
_08108B12:
ldr r0, _08108B44 @ =gUnknown_203AD14
ldr r0, [r0]
cmp r0, 0
beq _08108B1E
bl Free
_08108B1E:
ldr r0, _08108B48 @ =gUnknown_203AD18
ldr r0, [r0]
cmp r0, 0
beq _08108B2A
bl Free
_08108B2A:
ldr r0, _08108B4C @ =gUnknown_203AD1C
ldr r0, [r0]
cmp r0, 0
beq _08108B36
bl Free
_08108B36:
bl FreeAllWindowBuffers
pop {r0}
bx r0
.align 2, 0
_08108B40: .4byte gUnknown_203AD10
_08108B44: .4byte gUnknown_203AD14
_08108B48: .4byte gUnknown_203AD18
_08108B4C: .4byte gUnknown_203AD1C
thumb_func_end sub_8108B04
thumb_func_start ItemMenu_StartFadeToExitCallback
ItemMenu_StartFadeToExitCallback: @ 8108B50
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
negs r0, r0
movs r1, 0x2
negs r1, r1
movs r2, 0
str r2, [sp]
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r1, _08108B84 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r1, _08108B88 @ =sub_8108B8C
str r1, [r0]
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08108B84: .4byte gTasks
_08108B88: .4byte sub_8108B8C
thumb_func_end ItemMenu_StartFadeToExitCallback
thumb_func_start sub_8108B8C
sub_8108B8C: @ 8108B8C
push {r4,r5,lr}
-55
View File
@@ -6,61 +6,6 @@
.section .rodata
.align 2
gUnknown_8452CF4:: @ 8452CF4
.4byte 0x000001f0
@ {
@ .bg = 0,
@ .charBaseIndex = 0,
@ .mapBaseIndex = 31,
@ .screenSize = 0,
@ .paletteMode = 0,
@ .priority = 0,
@ .baseTile = 0x0000
@ }
.4byte 0x000011ed
@ {
@ .bg = 1,
@ .charBaseIndex = 3,
@ .mapBaseIndex = 30,
@ .screenSize = 0,
@ .paletteMode = 0,
@ .priority = 1,
@ .baseTile = 0x0000
@ }
gUnknown_8452CFC:: @ 8452CFC
.4byte gUnknown_84162CD
.4byte gUnknown_84162DE
.4byte gUnknown_84162D3
gUnknown_8452D08:: @ 8452D08
.incbin "graphics/item_menu/bagmap_0.bin"
.incbin "graphics/item_menu/bagmap_1.bin"
.incbin "graphics/item_menu/bagmap_2.bin"
.incbin "graphics/item_menu/bagmap_3.bin"
.incbin "graphics/item_menu/bagmap_4.bin"
.incbin "graphics/item_menu/bagmap_5.bin"
.incbin "graphics/item_menu/bagmap_6.bin"
.incbin "graphics/item_menu/bagmap_7.bin"
.incbin "graphics/item_menu/bagmap_8.bin"
.incbin "graphics/item_menu/bagmap_9.bin"
.incbin "graphics/item_menu/bagmap_A.bin"
.incbin "graphics/item_menu/bagmap_B.bin"
gUnknown_8452EB8:: @ 8452EB8
.4byte gOtherText_Use, sub_8109C50
.4byte gOtherText_Toss, sub_8109CC0
.4byte gUnknown_84161A9, sub_810A000
.4byte gOtherText_Give, sub_810A0A8
.4byte gFameCheckerText_Cancel, sub_810A2DC
.4byte gOtherText_Use, sub_810A324
.4byte gUnknown_84161E9, sub_8109C50
.4byte gUnknown_84161F4, sub_8109C50
.4byte gUnknown_84161F4, sub_810A324
.4byte gUnknown_84161BC, sub_8109C50
.4byte gUnknown_84161F9, sub_810A000
.4byte gString_Dummy, NULL
gUnknown_8452F18:: @ 8452F18
.byte 0x00, 0x03, 0x01, 0x04
.byte 0x00, 0x02, 0x04, 0x0b
+8
View File
@@ -1039,6 +1039,14 @@ extern const u8 gText_SaveFailedScreen_BackupMemoryDamaged[];
extern const u8 gText_SaveFailedScreen_SaveCompleted[];
// item_menu
extern const u8 gUnknown_84161A9[];
extern const u8 gUnknown_84161BC[];
extern const u8 gUnknown_84161E9[];
extern const u8 gUnknown_84161F4[];
extern const u8 gUnknown_84161F9[];
extern const u8 gUnknown_84162CD[];
extern const u8 gUnknown_84162D3[];
extern const u8 gUnknown_84162DE[];
extern const u8 gUnknown_84162F5[];
#endif //GUARD_STRINGS_H
+1
View File
@@ -518,6 +518,7 @@ SECTIONS {
src/pokedex_screen.o(.rodata);
data/pokedex_screen.o(.rodata);
src/list_menu.o(.rodata);
src/item_menu.o(.rodata);
data/item_menu.o(.rodata);
src/save_location.o(.rodata);
src/bag.o(.rodata);
+183 -50
View File
@@ -9,6 +9,7 @@
#include "item_menu.h"
#include "item_menu_icons.h"
#include "list_menu.h"
#include "menu.h"
#include "menu_indicators.h"
#include "new_menu_helpers.h"
#include "overworld.h"
@@ -17,19 +18,21 @@
#include "constants/items.h"
#include "constants/songs.h"
#define FREE_IF_SET(ptr) ({ if (ptr) Free(ptr); })
struct BagMenuAlloc
{
u32 field_00;
u8 field_04;
u8 field_05_0:4;
u8 field_05_4:2;
u8 itemMenuIcon:2;
u8 field_05_6:2;
u16 field_06;
u8 field_08;
u8 field_09;
u8 field_0A[3];
u8 field_0D[3];
u8 field_10[4];
u16 contextMenuSelectedItem;
u8 pocketScrollArrowsTask;
u8 pocketSwitchArrowsTask;
u8 nItems[3];
u8 maxShowed[3];
u8 data[4];
};
EWRAM_DATA struct BagStruct gUnknown_203ACFC = {};
@@ -60,9 +63,16 @@ void sub_810899C(void);
void sub_8108A68(void);
void sub_8108A84(void);
void sub_8108B04(void);
void sub_8108B8C(u8 taskId);
void sub_8108C10(void);
void sub_8108E54(void);
void sub_8108F0C(u8 taskId);
void sub_8109C50(u8 taskId);
void sub_8109CC0(u8 taskId);
void sub_810A000(u8 taskId);
void sub_810A0A8(u8 taskId);
void sub_810A2DC(u8 taskId);
void sub_810A324(u8 taskId);
bool8 sub_810ADAC(void);
void sub_810AF9C(u8 taskId);
void sub_810B1D4(u8 taskId);
@@ -70,8 +80,62 @@ void sub_810B378(u8 taskId);
void sub_810B4BC(u8 taskId);
void sub_810B5D4(u8 taskId);
extern const struct BgTemplate gUnknown_8452CF4[2];
extern const u8 *const gUnknown_8452CFC[];
const struct BgTemplate gUnknown_8452CF4[2] = {
{
.bg = 0,
.charBaseIndex = 0,
.mapBaseIndex = 31,
.screenSize = 0,
.paletteMode = 0,
.priority = 0,
.baseTile = 0x000
}, {
.bg = 1,
.charBaseIndex = 3,
.mapBaseIndex = 30,
.screenSize = 0,
.paletteMode = 0,
.priority = 1,
.baseTile = 0x000
}
};
const u8 *const gUnknown_8452CFC[] = {
gUnknown_84162CD,
gUnknown_84162DE,
gUnknown_84162D3
};
const u16 gUnknown_8452D08[][18] = {
INCBIN_U16("graphics/item_menu/bagmap_0.bin"),
INCBIN_U16("graphics/item_menu/bagmap_1.bin"),
INCBIN_U16("graphics/item_menu/bagmap_2.bin"),
INCBIN_U16("graphics/item_menu/bagmap_3.bin"),
INCBIN_U16("graphics/item_menu/bagmap_4.bin"),
INCBIN_U16("graphics/item_menu/bagmap_5.bin"),
INCBIN_U16("graphics/item_menu/bagmap_6.bin"),
INCBIN_U16("graphics/item_menu/bagmap_7.bin"),
INCBIN_U16("graphics/item_menu/bagmap_8.bin"),
INCBIN_U16("graphics/item_menu/bagmap_9.bin"),
INCBIN_U16("graphics/item_menu/bagmap_A.bin"),
INCBIN_U16("graphics/item_menu/bagmap_B.bin")
};
const struct MenuAction gUnknown_8452EB8[] = {
{gOtherText_Use, {.void_u8 = sub_8109C50}},
{gOtherText_Toss, {.void_u8 = sub_8109CC0}},
{gUnknown_84161A9, {.void_u8 = sub_810A000}},
{gOtherText_Give, {.void_u8 = sub_810A0A8}},
{gFameCheckerText_Cancel, {.void_u8 = sub_810A2DC}},
{gOtherText_Use, {.void_u8 = sub_810A324}},
{gUnknown_84161E9, {.void_u8 = sub_8109C50}},
{gUnknown_84161F4, {.void_u8 = sub_8109C50}},
{gUnknown_84161F4, {.void_u8 = sub_810A324}},
{gUnknown_84161BC, {.void_u8 = sub_8109C50}},
{gUnknown_84161F9, {.void_u8 = sub_810A000}},
{gString_Dummy, {.void_u8 = NULL}}
};
extern const u8 gUnknown_8452F60[];
extern const u8 gUnknown_8452F66[];
extern const struct ScrollArrowsTemplate gUnknown_8452F6C;
@@ -93,10 +157,10 @@ void GoToBagMenu(u8 location, u8 a1, MainCallback a2)
gUnknown_203ACFC.bagCallback = a2;
gUnknown_203AD10->field_00 = 0;
gUnknown_203AD10->field_04 = 0xFF;
gUnknown_203AD10->field_05_4 = 0;
gUnknown_203AD10->itemMenuIcon = 0;
gUnknown_203AD10->field_05_6 = 0;
gUnknown_203AD10->field_08 = 0xFF;
gUnknown_203AD10->field_09 = 0xFF;
gUnknown_203AD10->pocketScrollArrowsTask = 0xFF;
gUnknown_203AD10->pocketSwitchArrowsTask = 0xFF;
if (location == 3)
gUnknown_203AD10->field_05_0 = 1;
else if (location == 6)
@@ -105,7 +169,7 @@ void GoToBagMenu(u8 location, u8 a1, MainCallback a2)
gUnknown_203AD10->field_05_0 = 0;
for (i = 0; i < 4; i++)
{
gUnknown_203AD10->field_10[i] = 0;
gUnknown_203AD10->data[i] = 0;
}
if (a1 == 0 || a1 == 1 || a1 == 2)
gUnknown_203ACFC.pocket = a1;
@@ -196,7 +260,7 @@ bool8 sub_8107F3C(void)
case 7:
if (sub_81081D0())
{
gUnknown_203AD10->field_10[0] = 0;
gUnknown_203AD10->data[0] = 0;
gMain.state++;
}
else
@@ -326,12 +390,12 @@ bool8 sub_81081D0(void)
bool8 sub_8108240(void)
{
switch (gUnknown_203AD10->field_10[0])
switch (gUnknown_203AD10->data[0])
{
case 0:
ResetTempTileDataBuffers();
DecompressAndCopyTileDataToVram(1, gUnknown_8E830CC, 0, 0, 0);
gUnknown_203AD10->field_10[0]++;
gUnknown_203AD10->data[0]++;
break;
case 1:
if (FreeTempTileDataBuffersIfPossible() != TRUE)
@@ -340,33 +404,33 @@ bool8 sub_8108240(void)
LZDecompressWram(gUnknown_8E832C0, gUnknown_203AD14);
else
LZDecompressWram(gUnknown_8E83444, gUnknown_203AD14);
gUnknown_203AD10->field_10[0]++;
gUnknown_203AD10->data[0]++;
}
break;
case 2:
LoadCompressedPalette(gUnknown_8E835B4, 0x00, 0x60);
if (!sub_810ADAC() && gSaveBlock2Ptr->playerGender != MALE)
LoadCompressedPalette(gUnknown_8E83604, 0x00, 0x20);
gUnknown_203AD10->field_10[0]++;
gUnknown_203AD10->data[0]++;
break;
case 3:
if (sub_810ADAC() == TRUE || gSaveBlock2Ptr->playerGender == MALE)
LoadCompressedSpriteSheet(&gUnknown_83D41E4);
else
LoadCompressedSpriteSheet(&gUnknown_83D41EC);
gUnknown_203AD10->field_10[0]++;
gUnknown_203AD10->data[0]++;
break;
case 4:
LoadCompressedSpritePalette(&gUnknown_83D41F4);
gUnknown_203AD10->field_10[0]++;
gUnknown_203AD10->data[0]++;
break;
case 5:
LoadCompressedSpriteSheet(&gBagSwapSpriteSheet);
gUnknown_203AD10->field_10[0]++;
gUnknown_203AD10->data[0]++;
break;
default:
LoadCompressedSpritePalette(&gBagSwapSpritePalette);
gUnknown_203AD10->field_10[0] = 0;
gUnknown_203AD10->data[0] = 0;
return TRUE;
}
@@ -407,7 +471,7 @@ void sub_810842C(u8 pocket)
{
u16 i;
struct BagPocket * bagPocket = &gBagPockets[pocket];
for (i = 0; i < gUnknown_203AD10->field_0A[pocket]; i++)
for (i = 0; i < gUnknown_203AD10->nItems[pocket]; i++)
{
sub_8108560(gUnknown_203AD1C[i], bagPocket->itemSlots[i].itemId);
gUnknown_203AD18[i].label = gUnknown_203AD1C[i];
@@ -418,7 +482,7 @@ void sub_810842C(u8 pocket)
gUnknown_203AD18[i].label = gUnknown_203AD1C[i];
gUnknown_203AD18[i].index = i;
gMultiuseListMenuTemplate.items = gUnknown_203AD18;
gMultiuseListMenuTemplate.totalItems = gUnknown_203AD10->field_0A[pocket] + 1;
gMultiuseListMenuTemplate.totalItems = gUnknown_203AD10->nItems[pocket] + 1;
gMultiuseListMenuTemplate.windowId = 0;
gMultiuseListMenuTemplate.header_X = 0;
gMultiuseListMenuTemplate.item_X = 9;
@@ -426,7 +490,7 @@ void sub_810842C(u8 pocket)
gMultiuseListMenuTemplate.lettersSpacing = 0;
gMultiuseListMenuTemplate.itemVerticalPadding = 2;
gMultiuseListMenuTemplate.upText_Y = 2;
gMultiuseListMenuTemplate.maxShowed = gUnknown_203AD10->field_0D[pocket];
gMultiuseListMenuTemplate.maxShowed = gUnknown_203AD10->maxShowed[pocket];
gMultiuseListMenuTemplate.fontId = 2;
gMultiuseListMenuTemplate.cursorPal = 2;
gMultiuseListMenuTemplate.fillValue = 0;
@@ -455,12 +519,12 @@ void sub_81085A4(s32 itemIndex, bool8 onInit, struct ListMenu *list)
}
if (gUnknown_203AD10->field_04 == 0xFF)
{
DestroyItemMenuIcon(gUnknown_203AD10->field_05_4 ^ 1);
if (gUnknown_203AD10->field_0A[gUnknown_203ACFC.pocket] != itemIndex)
CreateItemMenuIcon(BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, itemIndex), gUnknown_203AD10->field_05_4);
DestroyItemMenuIcon(gUnknown_203AD10->itemMenuIcon ^ 1);
if (gUnknown_203AD10->nItems[gUnknown_203ACFC.pocket] != itemIndex)
CreateItemMenuIcon(BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, itemIndex), gUnknown_203AD10->itemMenuIcon);
else
CreateItemMenuIcon(ITEM_N_A, gUnknown_203AD10->field_05_4);
gUnknown_203AD10->field_05_4 ^= 1;
CreateItemMenuIcon(ITEM_N_A, gUnknown_203AD10->itemMenuIcon);
gUnknown_203AD10->itemMenuIcon ^= 1;
if (gUnknown_203AD10->field_05_6 == 0)
sub_8108818(itemIndex);
}
@@ -477,7 +541,7 @@ void sub_8108654(u8 windowId, s32 itemId, u8 y)
else
bag_menu_print_cursor(y, 0xFF);
}
if (itemId != -2 && gUnknown_203AD10->field_0A[gUnknown_203ACFC.pocket] != itemId)
if (itemId != -2 && gUnknown_203AD10->nItems[gUnknown_203ACFC.pocket] != itemId)
{
bagItemId = BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, itemId);
bagItemQuantity = BagGetQuantityByPocketPosition(gUnknown_203ACFC.pocket + 1, itemId);
@@ -520,7 +584,7 @@ void sub_81087EC(void)
void sub_8108818(s32 itemIndex)
{
const u8 *description;
if (itemIndex != gUnknown_203AD10->field_0A[gUnknown_203ACFC.pocket])
if (itemIndex != gUnknown_203AD10->nItems[gUnknown_203ACFC.pocket])
description = ItemId_GetDescription(BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, itemIndex));
else
description = gUnknown_84162F5;
@@ -530,12 +594,12 @@ void sub_8108818(s32 itemIndex)
void sub_8108888(void)
{
gUnknown_203AD10->field_08 = AddScrollIndicatorArrowPairParameterized(
2,
gUnknown_203AD10->pocketScrollArrowsTask = AddScrollIndicatorArrowPairParameterized(
SCROLL_ARROW_UP,
160,
8,
104,
gUnknown_203AD10->field_0A[gUnknown_203ACFC.pocket] - gUnknown_203AD10->field_0D[gUnknown_203ACFC.pocket] + 1,
gUnknown_203AD10->nItems[gUnknown_203ACFC.pocket] - gUnknown_203AD10->maxShowed[gUnknown_203ACFC.pocket] + 1,
110,
110,
&gUnknown_203ACFC.cursorPos[gUnknown_203ACFC.pocket]
@@ -546,55 +610,124 @@ void sub_81088D8(void)
{
if (gUnknown_203AD10->field_05_0 != 1)
{
gUnknown_203AD10->field_09 = AddScrollIndicatorArrowPair(&gUnknown_8452F6C, &gUnknown_203ACFC.pocket);
gUnknown_203AD10->pocketSwitchArrowsTask = AddScrollIndicatorArrowPair(&gUnknown_8452F6C, &gUnknown_203ACFC.pocket);
}
}
void sub_8108908(void)
{
gUnknown_203AD10->field_06 = 1;
gUnknown_203AD10->field_08 = AddScrollIndicatorArrowPairParameterized(
2,
gUnknown_203AD10->contextMenuSelectedItem = 1;
gUnknown_203AD10->pocketScrollArrowsTask = AddScrollIndicatorArrowPairParameterized(
SCROLL_ARROW_UP,
152,
72,
104,
2,
110,
110,
&gUnknown_203AD10->field_06
&gUnknown_203AD10->contextMenuSelectedItem
);
}
void sub_8108940(void)
{
gUnknown_203AD10->field_06 = 1;
gUnknown_203AD10->field_08 = AddScrollIndicatorArrowPairParameterized(
2,
gUnknown_203AD10->contextMenuSelectedItem = 1;
gUnknown_203AD10->pocketScrollArrowsTask = AddScrollIndicatorArrowPairParameterized(
SCROLL_ARROW_UP,
212,
120,
152,
2,
110,
110,
&gUnknown_203AD10->field_06
&gUnknown_203AD10->contextMenuSelectedItem
);
}
void sub_8108978(void)
{
if (gUnknown_203AD10->field_08 != 0xFF)
if (gUnknown_203AD10->pocketScrollArrowsTask != 0xFF)
{
RemoveScrollIndicatorArrowPair(gUnknown_203AD10->field_08);
gUnknown_203AD10->field_08 = 0xFF;
RemoveScrollIndicatorArrowPair(gUnknown_203AD10->pocketScrollArrowsTask);
gUnknown_203AD10->pocketScrollArrowsTask = 0xFF;
}
sub_810899C();
}
void sub_810899C(void)
{
if (gUnknown_203AD10->field_09 != 0xFF)
if (gUnknown_203AD10->pocketSwitchArrowsTask != 0xFF)
{
RemoveScrollIndicatorArrowPair(gUnknown_203AD10->field_09);
gUnknown_203AD10->field_09 = 0xFF;
RemoveScrollIndicatorArrowPair(gUnknown_203AD10->pocketSwitchArrowsTask);
gUnknown_203AD10->pocketSwitchArrowsTask = 0xFF;
}
}
void sub_81089BC(void)
{
u8 i;
gUnknown_203ACFC.pocket = POCKET_ITEMS - 1;
gUnknown_203ACFC.unk5 = 0;
for (i = 0; i < 3; i++)
{
gUnknown_203ACFC.itemsAbove[i] = 0;
gUnknown_203ACFC.cursorPos[i] = 0;
}
}
void sub_81089F4(u8 pocketId)
{
if (gUnknown_203ACFC.cursorPos[pocketId] != 0 && gUnknown_203ACFC.cursorPos[pocketId] + gUnknown_203AD10->maxShowed[pocketId] > gUnknown_203AD10->nItems[pocketId] + 1)
{
gUnknown_203ACFC.cursorPos[pocketId] = (gUnknown_203AD10->nItems[pocketId] + 1) - gUnknown_203AD10->maxShowed[pocketId];
}
if (gUnknown_203ACFC.cursorPos[pocketId] + gUnknown_203ACFC.itemsAbove[pocketId] >= gUnknown_203AD10->nItems[pocketId] + 1)
{
if (gUnknown_203AD10->nItems[pocketId] + 1 < 2)
gUnknown_203ACFC.itemsAbove[pocketId] = 0;
else
gUnknown_203ACFC.itemsAbove[pocketId] = gUnknown_203AD10->nItems[pocketId];
}
}
void sub_8108A68(void)
{
u8 i;
for (i = 0; i < 3; i++)
{
sub_81089F4(i);
}
}
void sub_8108A84(void)
{
u8 i;
u8 j;
for (i = 0; i < 3; i++)
{
if (gUnknown_203ACFC.itemsAbove[i] > 3)
{
for (j = 0; j <= gUnknown_203ACFC.itemsAbove[i] - 3; gUnknown_203ACFC.itemsAbove[i]--, gUnknown_203ACFC.cursorPos[i]++, j++)
{
if (gUnknown_203ACFC.cursorPos[i] + gUnknown_203AD10->maxShowed[i] == gUnknown_203AD10->nItems[i] + 1)
break;
}
}
}
}
void sub_8108B04(void)
{
FREE_IF_SET(gUnknown_203AD10);
FREE_IF_SET(gUnknown_203AD14);
FREE_IF_SET(gUnknown_203AD18);
FREE_IF_SET(gUnknown_203AD1C);
FreeAllWindowBuffers();
}
void ItemMenu_StartFadeToExitCallback(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
gTasks[taskId].func = sub_8108B8C;
}