diff options
-rw-r--r-- | asm/berry_pouch.s | 551 | ||||
-rw-r--r-- | baserom.ips | bin | 2012785 -> 2012786 bytes | |||
-rw-r--r-- | data/berry_pouch.s | 3 | ||||
-rw-r--r-- | include/strings.h | 3 | ||||
-rw-r--r-- | src/berry_pouch.c | 162 |
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 Binary files differindex 3de64bdf6..9d0a620e2 100644 --- a/baserom.ips +++ b/baserom.ips 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); +} |