summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/berry_pouch.s551
-rw-r--r--baserom.ipsbin2012785 -> 2012786 bytes
-rw-r--r--data/berry_pouch.s3
-rw-r--r--include/strings.h3
-rw-r--r--src/berry_pouch.c162
5 files changed, 166 insertions, 553 deletions
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 985be2c93..a34c409e1 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -5,557 +5,6 @@
.text
- thumb_func_start sub_813D1C0
-sub_813D1C0: @ 813D1C0
- push {r4,lr}
- ldr r4, _0813D1F0 @ =gUnknown_203F37C
- movs r0, 0xB0
- lsls r0, 1
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _0813D1FC
- ldr r4, _0813D1F4 @ =gUnknown_203F380
- ldr r0, _0813D1F8 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- subs r0, r1
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _0813D1FC
- movs r0, 0x1
- b _0813D1FE
- .align 2, 0
-_0813D1F0: .4byte gUnknown_203F37C
-_0813D1F4: .4byte gUnknown_203F380
-_0813D1F8: .4byte gUnknown_203F36C
-_0813D1FC:
- movs r0, 0
-_0813D1FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_813D1C0
-
- thumb_func_start sub_813D204
-sub_813D204: @ 813D204
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0813D280 @ =gBagPockets + 0x20
- mov r8, r0
- movs r6, 0
- ldr r0, _0813D284 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r6, r0
- bcs _0813D254
- ldr r7, _0813D288 @ =gUnknown_203F380
-_0813D21C:
- lsls r5, r6, 3
- subs r4, r5, r6
- lsls r4, 2
- subs r4, r6
- ldr r0, [r7]
- adds r0, r4
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r6, 2
- adds r1, r2
- ldrh r1, [r1]
- bl sub_813D31C
- ldr r0, _0813D28C @ =gUnknown_203F37C
- ldr r0, [r0]
- adds r5, r0
- ldr r0, [r7]
- adds r0, r4
- str r0, [r5]
- str r6, [r5, 0x4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _0813D284 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r6, r0
- bcc _0813D21C
-_0813D254:
- ldr r0, _0813D28C @ =gUnknown_203F37C
- ldr r2, [r0]
- lsls r0, r6, 3
- adds r0, r2
- ldr r1, _0813D290 @ =gText_Close
- str r1, [r0]
- str r6, [r0, 0x4]
- ldr r1, _0813D294 @ =gMultiuseListMenuTemplate
- str r2, [r1]
- ldr r0, _0813D298 @ =gUnknown_203F370
- ldrb r0, [r0, 0x4]
- adds r5, r1, 0
- cmp r0, 0x5
- beq _0813D29C
- ldr r1, _0813D284 @ =gUnknown_203F36C
- ldr r0, [r1]
- ldrb r0, [r0, 0x7]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- adds r2, r1, 0
- b _0813D2A6
- .align 2, 0
-_0813D280: .4byte gBagPockets + 0x20
-_0813D284: .4byte gUnknown_203F36C
-_0813D288: .4byte gUnknown_203F380
-_0813D28C: .4byte gUnknown_203F37C
-_0813D290: .4byte gText_Close
-_0813D294: .4byte gMultiuseListMenuTemplate
-_0813D298: .4byte gUnknown_203F370
-_0813D29C:
- ldr r0, _0813D310 @ =gUnknown_203F36C
- ldr r1, [r0]
- ldrb r1, [r1, 0x7]
- strh r1, [r5, 0xC]
- adds r2, r0, 0
-_0813D2A6:
- movs r0, 0
- strb r0, [r5, 0x10]
- strb r0, [r5, 0x11]
- movs r0, 0x9
- strb r0, [r5, 0x12]
- movs r0, 0x1
- strb r0, [r5, 0x13]
- ldrb r0, [r5, 0x16]
- movs r3, 0x8
- negs r3, r3
- ands r3, r0
- movs r0, 0x39
- negs r0, r0
- ands r3, r0
- movs r0, 0x10
- orrs r3, r0
- strb r3, [r5, 0x16]
- ldrb r1, [r5, 0x14]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r4, 0x2
- orrs r0, r4
- strb r0, [r5, 0x14]
- ldr r1, [r2]
- ldrb r1, [r1, 0x8]
- strh r1, [r5, 0xE]
- ldrb r1, [r5, 0x17]
- movs r2, 0x40
- negs r2, r2
- ands r2, r1
- orrs r2, r4
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r5, 0x14]
- movs r0, 0x30
- strb r0, [r5, 0x15]
- ldr r0, _0813D314 @ =sub_813D3C0
- str r0, [r5, 0x4]
- ldr r0, _0813D318 @ =sub_813D430
- str r0, [r5, 0x8]
- movs r0, 0x3F
- ands r2, r0
- strb r2, [r5, 0x17]
- ands r3, r0
- strb r3, [r5, 0x16]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D310: .4byte gUnknown_203F36C
-_0813D314: .4byte sub_813D3C0
-_0813D318: .4byte sub_813D430
- thumb_func_end sub_813D204
-
- thumb_func_start sub_813D31C
-sub_813D31C: @ 813D31C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- lsls r5, r1, 16
- lsrs r5, 16
- ldr r4, _0813D384 @ =gStringVar4
- ldr r1, _0813D388 @ =gText_FontSize0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _0813D38C @ =gOtherText_UnkF9_08_Clear_01
- adds r0, r4, 0
- bl StringAppend
- ldr r6, _0813D390 @ =gStringVar1
- adds r1, r5, 0
- subs r1, 0x84
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- adds r1, r6, 0
- bl StringAppend
- adds r0, r5, 0
- adds r1, r6, 0
- bl CopyItemName
- ldr r1, _0813D394 @ =gUnknown_84643B4
- adds r0, r4, 0
- bl StringAppend
- ldr r1, _0813D398 @ =gText_FontSize2
- adds r0, r4, 0
- bl StringAppend
- adds r0, r4, 0
- adds r1, r6, 0
- bl StringAppend
- mov r0, r8
- adds r1, r4, 0
- bl StringCopy
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D384: .4byte gStringVar4
-_0813D388: .4byte gText_FontSize0
-_0813D38C: .4byte gOtherText_UnkF9_08_Clear_01
-_0813D390: .4byte gStringVar1
-_0813D394: .4byte gUnknown_84643B4
-_0813D398: .4byte gText_FontSize2
- thumb_func_end sub_813D31C
-
- thumb_func_start sub_813D39C
-sub_813D39C: @ 813D39C
- push {lr}
- adds r3, r1, 0
- ldr r1, _0813D3BC @ =gUnknown_203F380
- lsls r0, 16
- asrs r0, 16
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- subs r2, r0
- ldr r1, [r1]
- adds r1, r2
- adds r0, r3, 0
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_0813D3BC: .4byte gUnknown_203F380
- thumb_func_end sub_813D39C
-
- thumb_func_start sub_813D3C0
-sub_813D3C0: @ 813D3C0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _0813D3D6
- movs r0, 0xF5
- bl PlaySE
- bl sub_813EC28
-_0813D3D6:
- ldr r4, _0813D404 @ =gUnknown_203F36C
- ldr r0, [r4]
- ldrb r1, [r0, 0x9]
- movs r0, 0x1
- eors r0, r1
- bl DestroyItemMenuIcon
- ldr r1, [r4]
- ldrb r0, [r1, 0x7]
- cmp r0, r5
- beq _0813D408
- lsls r1, r5, 16
- lsrs r1, 16
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [r4]
- ldrb r1, [r1, 0x9]
- bl sub_80989A0
- b _0813D410
- .align 2, 0
-_0813D404: .4byte gUnknown_203F36C
-_0813D408:
- ldr r0, _0813D428 @ =0x00000177
- ldrb r1, [r1, 0x9]
- bl sub_80989A0
-_0813D410:
- ldr r0, _0813D42C @ =gUnknown_203F36C
- ldr r2, [r0]
- ldrb r0, [r2, 0x9]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r2, 0x9]
- adds r0, r5, 0
- bl sub_813D538
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D428: .4byte 0x00000177
-_0813D42C: .4byte gUnknown_203F36C
- thumb_func_end sub_813D3C0
-
- thumb_func_start sub_813D430
-sub_813D430: @ 813D430
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _0813D498
- ldr r0, _0813D4A0 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r0, r1
- beq _0813D498
- lsls r4, r1, 16
- lsrs r4, 16
- movs r0, 0x5
- adds r1, r4, 0
- bl BagGetItemIdByPocketPosition
- movs r0, 0x5
- adds r1, r4, 0
- bl BagGetQuantityByPocketPosition
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _0813D4A4 @ =gStringVar1
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _0813D4A8 @ =gStringVar4
- ldr r1, _0813D4AC @ =gText_TimesStrVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- str r5, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- movs r0, 0x1
- str r0, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x6E
- bl sub_813E9A0
-_0813D498:
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D4A0: .4byte gUnknown_203F36C
-_0813D4A4: .4byte gStringVar1
-_0813D4A8: .4byte gStringVar4
-_0813D4AC: .4byte gText_TimesStrVar1
- thumb_func_end sub_813D430
-
- thumb_func_start sub_813D4B0
-sub_813D4B0: @ 813D4B0
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- bl ListMenuGetYCoordForPrintingArrowCursor
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_813D4D0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_813D4B0
-
- thumb_func_start sub_813D4D0
-sub_813D4D0: @ 813D4D0
- push {r4,r5,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0xFF
- bne _0813D514
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1
- adds r3, r5, 0
- bl FillWindowPixelRect
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- b _0813D52A
-_0813D514:
- ldr r2, _0813D534 @ =gFameCheckerText_ListMenuCursor
- str r5, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r3, 0x1
- bl sub_813E9A0
-_0813D52A:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D534: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end sub_813D4D0
-
- thumb_func_start sub_813D538
-sub_813D538: @ 813D538
- push {r4,lr}
- sub sp, 0x14
- adds r1, r0, 0
- ldr r0, _0813D560 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r1, r0
- beq _0813D564
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl ItemId_GetDescription
- adds r4, r0, 0
- b _0813D566
- .align 2, 0
-_0813D560: .4byte gUnknown_203F36C
-_0813D564:
- ldr r4, _0813D590 @ =gUnknown_8416716
-_0813D566:
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl sub_813E9A0
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D590: .4byte gUnknown_8416716
- thumb_func_end sub_813D538
-
- thumb_func_start sub_813D594
-sub_813D594: @ 813D594
- push {lr}
- sub sp, 0x8
- movs r1, 0x4
- str r1, [sp]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x1E
- bl SetBgRectPal
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813D594
-
- thumb_func_start sub_813D5BC
-sub_813D5BC: @ 813D5BC
- push {r4,lr}
- sub sp, 0x10
- ldr r2, _0813D5D8 @ =gUnknown_203F370
- ldrb r0, [r2, 0x4]
- cmp r0, 0x5
- beq _0813D5E0
- ldr r4, _0813D5DC @ =gUnknown_203F36C
- ldr r1, [r4]
- ldrb r0, [r1, 0x7]
- ldrb r1, [r1, 0x8]
- subs r0, r1
- adds r0, 0x1
- b _0813D5EA
- .align 2, 0
-_0813D5D8: .4byte gUnknown_203F370
-_0813D5DC: .4byte gUnknown_203F36C
-_0813D5E0:
- ldr r4, _0813D610 @ =gUnknown_203F36C
- ldr r1, [r4]
- ldrb r0, [r1, 0x7]
- ldrb r1, [r1, 0x8]
- subs r0, r1
-_0813D5EA:
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r2, 0
- adds r0, 0xA
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xA0
- movs r2, 0x8
- movs r3, 0x78
- bl AddScrollIndicatorArrowPairParameterized
- ldr r1, [r4]
- strb r0, [r1, 0x6]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D610: .4byte gUnknown_203F36C
- thumb_func_end sub_813D5BC
-
thumb_func_start sub_813D614
sub_813D614: @ 813D614
push {r4,lr}
diff --git a/baserom.ips b/baserom.ips
index 3de64bdf6..9d0a620e2 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/berry_pouch.s b/data/berry_pouch.s
index ac62b258b..7c45b0383 100644
--- a/data/berry_pouch.s
+++ b/data/berry_pouch.s
@@ -28,8 +28,9 @@ gUnknown_84643B0:: @ 84643B0
.incbin "baserom.gba", 0x4643B0, 0x4
gUnknown_84643B4:: @ 84643B4
- .incbin "baserom.gba", 0x4643B4, 0x4
+ .string " $"
+ .align 2
gUnknown_84643B8:: @ 84643B8
.incbin "baserom.gba", 0x4643B8, 0x20
diff --git a/include/strings.h b/include/strings.h
index dfedb4afa..5c3cbb67b 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -315,4 +315,7 @@ extern const u8 gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Gre
extern const u8 gCreditsString_Graphic_Designer[];
extern const u8 gCreditsString_Akira_Kinashi[];
+// berry_pouch
+extern const u8 gUnknown_8416716[];
+
#endif //GUARD_STRINGS_H
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index fb69600fc..c8d6b508c 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -13,14 +13,22 @@
#include "item_menu_icons.h"
#include "list_menu.h"
#include "graphics.h"
+#include "berry.h"
+#include "item.h"
+#include "strings.h"
+#include "string_util.h"
+#include "sound.h"
+#include "menu_indicators.h"
#include "constants/items.h"
+#include "constants/songs.h"
struct BerryPouchStruct_203F36C
{
u32 unk_000;
u8 filler_004[2];
u8 unk_006;
- u8 filler_007[2];
+ u8 unk_007;
+ u8 unk_008;
u8 unk_009;
u8 filler_00a[2];
u8 unk_00C[BG_SCREEN_SIZE];
@@ -39,6 +47,8 @@ struct BerryPouchStruct_203F370
EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL;
EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {};
+EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL;
+EWRAM_DATA u8 *gUnknown_203F380 = NULL;
void sub_813CE30(void);
bool8 sub_813CE5C(void);
@@ -48,6 +58,11 @@ void sub_813D07C(void);
bool8 sub_813D0E4(void);
bool8 sub_813D1C0(void);
void sub_813D204(void);
+void sub_813D31C(u8 * dest, u16 itemId);
+void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+void sub_813D430(u8 windowId, s32 itemId, u8 y);
+void sub_813D4D0(u8 y, u8 colorIdx);
+void sub_813D538(s32 itemIndex);
void sub_813D5BC(void);
void sub_813D6A4(void);
void sub_813D6F4(void);
@@ -55,7 +70,9 @@ void sub_813D754(void);
void sub_813D7CC(void);
void sub_813D8AC(void);
void sub_813DA68(u8 taskId);
+void sub_813EC28(void);
void sub_813E910(void);
+void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
void sub_813EC08(void);
static const struct BgTemplate gUnknown_846434C[] = {
@@ -86,6 +103,8 @@ static const struct BgTemplate gUnknown_846434C[] = {
}
};
+extern const u8 gUnknown_84643B4[];
+
extern const struct CompressedSpriteSheet gUnknown_84644A8;
extern const struct CompressedSpritePalette gUnknown_84644B0;
@@ -315,3 +334,144 @@ bool8 sub_813D0E4(void)
return FALSE;
}
+
+bool8 sub_813D1C0(void)
+{
+ gUnknown_203F37C = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem));
+ if (gUnknown_203F37C == NULL)
+ return FALSE;
+ gUnknown_203F380 = Alloc(gUnknown_203F36C->unk_007 * 27);
+ if (gUnknown_203F380 == NULL)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_813D204(void)
+{
+ u16 i;
+ struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1];
+ for (i = 0; i < gUnknown_203F36C->unk_007; i++)
+ {
+ sub_813D31C(&gUnknown_203F380[i * 27], pocket->itemSlots[i].itemId);
+ gUnknown_203F37C[i].label = &gUnknown_203F380[i * 27];
+ gUnknown_203F37C[i].index = i;
+ }
+ gUnknown_203F37C[i].label = gText_Close;
+ gUnknown_203F37C[i].index = i;
+ gMultiuseListMenuTemplate.items = gUnknown_203F37C;
+ if (gUnknown_203F370.unk_04 != 5)
+ gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007 + 1;
+ else
+ gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007;
+ gMultiuseListMenuTemplate.windowId = 0;
+ gMultiuseListMenuTemplate.header_X = 0;
+ gMultiuseListMenuTemplate.item_X = 9;
+ gMultiuseListMenuTemplate.cursor_X = 1;
+ gMultiuseListMenuTemplate.lettersSpacing = 0;
+ gMultiuseListMenuTemplate.itemVerticalPadding = 2;
+ gMultiuseListMenuTemplate.upText_Y = 2;
+ gMultiuseListMenuTemplate.maxShowed = gUnknown_203F36C->unk_008;
+ gMultiuseListMenuTemplate.fontId = 2;
+ gMultiuseListMenuTemplate.cursorPal = 2;
+ gMultiuseListMenuTemplate.fillValue = 0;
+ gMultiuseListMenuTemplate.cursorShadowPal = 3;
+ gMultiuseListMenuTemplate.moveCursorFunc = sub_813D3C0;
+ gMultiuseListMenuTemplate.itemPrintFunc = sub_813D430;
+ gMultiuseListMenuTemplate.cursorKind = 0;
+ gMultiuseListMenuTemplate.scrollMultiple = 0;
+}
+
+void sub_813D31C(u8 * dest, u16 itemId)
+{
+ StringCopy(gStringVar4, gText_FontSize0);
+ StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01);
+ ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(gStringVar4, gStringVar1);
+ CopyItemName(itemId, gStringVar1);
+ StringAppend(gStringVar4, gUnknown_84643B4);
+ StringAppend(gStringVar4, gText_FontSize2);
+ StringAppend(gStringVar4, gStringVar1);
+ StringCopy(dest, gStringVar4);
+}
+
+void sub_813D39C(s16 a0, u8 *dest)
+{
+ StringCopy(dest, &gUnknown_203F380[a0 * 27]);
+}
+
+void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (onInit != TRUE)
+ {
+ PlaySE(SE_W287B);
+ sub_813EC28();
+ }
+ DestroyItemMenuIcon(gUnknown_203F36C->unk_009 ^ 1);
+ if (gUnknown_203F36C->unk_007 != itemIndex)
+ sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), gUnknown_203F36C->unk_009);
+ else
+ sub_80989A0(ITEM_N_A, gUnknown_203F36C->unk_009);
+ gUnknown_203F36C->unk_009 ^= 1;
+ sub_813D538(itemIndex);
+}
+
+void sub_813D430(u8 windowId, s32 itemId, u8 y)
+{
+ u16 unused;
+ u16 itemQuantity;
+ if (itemId != -2 && gUnknown_203F36C->unk_007 != itemId)
+ {
+ unused = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemId);
+ itemQuantity = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, itemId);
+ ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ sub_813E9A0(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1);
+ }
+}
+
+void sub_813D4B0(u8 taskId, u8 colorIdx)
+{
+ sub_813D4D0(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx);
+}
+
+void sub_813D4D0(u8 y, u8 colorIdx)
+{
+ u8 width;
+ u8 height;
+ if (colorIdx == 0xFF)
+ {
+ width = GetMenuCursorDimensionByFont(2, 0);
+ height = GetMenuCursorDimensionByFont(2, 1);
+ FillWindowPixelRect(0, 0, 1, y, width, height);
+ CopyWindowToVram(0, 2);
+ }
+ else
+ {
+ sub_813E9A0(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx);
+ }
+}
+
+void sub_813D538(s32 itemIdx)
+{
+ const u8 *str;
+ if (itemIdx != gUnknown_203F36C->unk_007)
+ str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIdx));
+ else
+ str = gUnknown_8416716;
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ sub_813E9A0(1, 2, str, 0, 2, 2, 0, 0, 0);
+}
+
+void sub_813D594(s32 pal)
+{
+ SetBgRectPal(1, 0, 16, 30, 4, pal + 1);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+void sub_813D5BC(void)
+{
+ if (gUnknown_203F370.unk_04 != 5)
+ gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008 + 1, 110, 110, &gUnknown_203F370.unk_0A);
+ else
+ gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008, 110, 110, &gUnknown_203F370.unk_0A);
+}