summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-10-02 20:02:21 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-10-02 20:16:47 -0400
commitd9ab841b0d72a52676131846447de26e59e7a16d (patch)
treedae3b90cb5f7ea7428cf3cf89527980769875188
parent872d5eaf4ad70598f597a64469cdf5cd32d44ba4 (diff)
parent32f2bb3ddaf1107f8e6bb02c0acadc96ecc55772 (diff)
Merge pull request #106 from PikalaxALT/berry_pouch
Berry pouch
-rw-r--r--asm/berry_pouch.s3819
-rw-r--r--asm/item_menu.s18
-rw-r--r--asm/new_game.s2
-rw-r--r--baserom.ipsbin2014788 -> 2012420 bytes
-rw-r--r--data/berry_pouch.s59
-rw-r--r--data/graphics.s24
-rw-r--r--data/itemfinder.s4
-rw-r--r--data/strings.s22
-rw-r--r--graphics/berry_pouch/unk_8E8560C.pngbin0 -> 782 bytes
-rw-r--r--graphics/berry_pouch/unk_8E859D0.pngbin0 -> 444 bytes
-rw-r--r--graphics/berry_pouch/unk_8E85BA4.pal51
-rw-r--r--graphics/berry_pouch/unk_8E85BF4.pal19
-rw-r--r--graphics/berry_pouch/unk_8E85C1C.pal19
-rw-r--r--graphics/berry_pouch/unk_8E85C44.binbin0 -> 2048 bytes
-rw-r--r--include/berry_pouch.h19
-rw-r--r--include/graphics.h8
-rw-r--r--include/item.h8
-rw-r--r--include/menu_helpers.h3
-rw-r--r--include/party_menu.h1
-rw-r--r--include/strings.h9
-rw-r--r--ld_script.txt4
-rw-r--r--src/berry_pouch.c1528
-rw-r--r--src/item_use.c8
-rw-r--r--src/menu_helpers.c2
-rw-r--r--sym_ewram.txt31
25 files changed, 1703 insertions, 3955 deletions
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
deleted file mode 100644
index 60d6873e6..000000000
--- a/asm/berry_pouch.s
+++ /dev/null
@@ -1,3819 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start InitBerryPouch
-InitBerryPouch: @ 813CD50
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r7, _0813CD78 @ =gUnknown_203F36C
- ldr r0, _0813CD7C @ =0x00000814
- bl Alloc
- str r0, [r7]
- cmp r0, 0
- bne _0813CD80
- adds r0, r4, 0
- bl SetMainCallback2
- b _0813CDE2
- .align 2, 0
-_0813CD78: .4byte gUnknown_203F36C
-_0813CD7C: .4byte 0x00000814
-_0813CD80:
- cmp r5, 0x6
- beq _0813CD88
- ldr r0, _0813CDEC @ =gUnknown_203F370
- strb r5, [r0, 0x4]
-_0813CD88:
- cmp r6, 0xFF
- beq _0813CD90
- ldr r0, _0813CDEC @ =gUnknown_203F370
- strb r6, [r0, 0x5]
-_0813CD90:
- cmp r4, 0
- beq _0813CD98
- ldr r0, _0813CDEC @ =gUnknown_203F370
- str r4, [r0]
-_0813CD98:
- ldr r1, [r7]
- movs r0, 0
- str r0, [r1]
- strb r0, [r1, 0x9]
- ldr r1, [r7]
- movs r0, 0xFF
- strb r0, [r1, 0x6]
- movs r2, 0
- ldr r6, _0813CDF0 @ =gTextFlags
- ldr r0, _0813CDF4 @ =gSpecialVar_ItemId
- mov r12, r0
- ldr r1, _0813CDF8 @ =sub_813CE30
- mov r8, r1
- adds r5, r7, 0
- ldr r4, _0813CDFC @ =0x0000080c
- movs r3, 0
-_0813CDB8:
- ldr r0, [r5]
- lsls r1, r2, 1
- adds r0, r4
- adds r0, r1
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _0813CDB8
- ldrb r0, [r6]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r6]
- movs r0, 0
- mov r1, r12
- strh r0, [r1]
- mov r0, r8
- bl SetMainCallback2
-_0813CDE2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813CDEC: .4byte gUnknown_203F370
-_0813CDF0: .4byte gTextFlags
-_0813CDF4: .4byte gSpecialVar_ItemId
-_0813CDF8: .4byte sub_813CE30
-_0813CDFC: .4byte 0x0000080c
- thumb_func_end InitBerryPouch
-
- thumb_func_start sub_813CE00
-sub_813CE00: @ 813CE00
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl DoScheduledBgTilemapCopiesToVram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_813CE00
-
- thumb_func_start sub_813CE1C
-sub_813CE1C: @ 813CE1C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_813CE1C
-
- thumb_func_start sub_813CE30
-sub_813CE30: @ 813CE30
- push {lr}
-_0813CE32:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0813CE56
- bl sub_813CE5C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0813CE56
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813CE32
-_0813CE56:
- pop {r0}
- bx r0
- thumb_func_end sub_813CE30
-
- thumb_func_start sub_813CE5C
-sub_813CE5C: @ 813CE5C
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0813CE7C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x12
- bls _0813CE70
- b _0813CFE8
-_0813CE70:
- lsls r0, 2
- ldr r1, _0813CE80 @ =_0813CE84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813CE7C: .4byte gMain
-_0813CE80: .4byte _0813CE84
- .align 2, 0
-_0813CE84:
- .4byte _0813CED0
- .4byte _0813CEDA
- .4byte _0813CEE0
- .4byte _0813CEE6
- .4byte _0813CEEC
- .4byte _0813CEF2
- .4byte _0813CEF8
- .4byte _0813CF08
- .4byte _0813CF24
- .4byte _0813CF30
- .4byte _0813CF36
- .4byte _0813CF44
- .4byte _0813CF56
- .4byte _0813CF5C
- .4byte _0813CF62
- .4byte _0813CFA4
- .4byte _0813CFAA
- .4byte _0813CFB0
- .4byte _0813CFBE
-_0813CED0:
- bl SetVBlankHBlankCallbacksToNull
- bl ClearScheduledBgCopiesToVram
- b _0813CFD2
-_0813CEDA:
- bl ScanlineEffect_Stop
- b _0813CFD2
-_0813CEE0:
- bl FreeAllSpritePalettes
- b _0813CFD2
-_0813CEE6:
- bl ResetPaletteFade
- b _0813CFD2
-_0813CEEC:
- bl ResetSpriteData
- b _0813CFD2
-_0813CEF2:
- bl ResetItemMenuIconState
- b _0813CFD2
-_0813CEF8:
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- cmp r0, 0
- bne _0813CFD2
- bl ResetTasks
- b _0813CFD2
-_0813CF08:
- bl sub_813D07C
- ldr r0, _0813CF1C @ =gUnknown_203F36C
- ldr r0, [r0]
- ldr r1, _0813CF20 @ =0x0000080c
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _0813CFD2
- .align 2, 0
-_0813CF1C: .4byte gUnknown_203F36C
-_0813CF20: .4byte 0x0000080c
-_0813CF24:
- bl sub_813D0E4
- lsls r0, 24
- cmp r0, 0
- beq _0813D000
- b _0813CFD2
-_0813CF30:
- bl sub_813E910
- b _0813CFD2
-_0813CF36:
- bl sub_813D8AC
- bl sub_813D6F4
- bl sub_813D754
- b _0813CFD2
-_0813CF44:
- bl sub_813D1C0
- lsls r0, 24
- cmp r0, 0
- bne _0813CFD2
- bl sub_813D00C
- movs r0, 0x1
- b _0813D002
-_0813CF56:
- bl sub_813D204
- b _0813CFD2
-_0813CF5C:
- bl sub_813D6A4
- b _0813CFD2
-_0813CF62:
- ldr r0, _0813CF94 @ =sub_813DA68
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813CF98 @ =gMultiuseListMenuTemplate
- ldr r2, _0813CF9C @ =gUnknown_203F370
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0x8]
- bl ListMenuInit
- ldr r2, _0813CFA0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x8]
- strh r2, [r1, 0x18]
- b _0813CFD2
- .align 2, 0
-_0813CF94: .4byte sub_813DA68
-_0813CF98: .4byte gMultiuseListMenuTemplate
-_0813CF9C: .4byte gUnknown_203F370
-_0813CFA0: .4byte gTasks
-_0813CFA4:
- bl sub_813EC08
- b _0813CFD2
-_0813CFAA:
- bl sub_813D5BC
- b _0813CFD2
-_0813CFB0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- b _0813CFD2
-_0813CFBE:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_0813CFD2:
- ldr r1, _0813CFE4 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0813D000
- .align 2, 0
-_0813CFE4: .4byte gMain
-_0813CFE8:
- ldr r0, _0813CFF8 @ =sub_813CE1C
- bl SetVBlankCallback
- ldr r0, _0813CFFC @ =sub_813CE00
- bl SetMainCallback2
- movs r0, 0x1
- b _0813D002
- .align 2, 0
-_0813CFF8: .4byte sub_813CE1C
-_0813CFFC: .4byte sub_813CE00
-_0813D000:
- movs r0, 0
-_0813D002:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_813CE5C
-
- thumb_func_start sub_813D00C
-sub_813D00C: @ 813D00C
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0813D03C @ =sub_813D048
- movs r1, 0
- bl CreateTask
- ldr r0, _0813D040 @ =sub_813CE1C
- bl SetVBlankCallback
- ldr r0, _0813D044 @ =sub_813CE00
- bl SetMainCallback2
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0813D03C: .4byte sub_813D048
-_0813D040: .4byte sub_813CE1C
-_0813D044: .4byte sub_813CE00
- thumb_func_end sub_813D00C
-
- thumb_func_start sub_813D048
-sub_813D048: @ 813D048
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813D074 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0813D06C
- ldr r0, _0813D078 @ =gUnknown_203F370
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_813D7CC
- adds r0, r4, 0
- bl DestroyTask
-_0813D06C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D074: .4byte gPaletteFade
-_0813D078: .4byte gUnknown_203F370
- thumb_func_end sub_813D048
-
- thumb_func_start sub_813D07C
-sub_813D07C: @ 813D07C
- push {r4,lr}
- bl ResetAllBgsCoordinatesAndBgCntRegs
- ldr r4, _0813D0DC @ =gUnknown_203F36C
- ldr r0, [r4]
- adds r0, 0xC
- movs r2, 0x80
- lsls r2, 4
- movs r1, 0
- bl memset
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0813D0E0 @ =gUnknown_846434C
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r1, [r4]
- adds r1, 0xC
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D0DC: .4byte gUnknown_203F36C
-_0813D0E0: .4byte gUnknown_846434C
- thumb_func_end sub_813D07C
-
- thumb_func_start sub_813D0E4
-sub_813D0E4: @ 813D0E4
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r5, _0813D104 @ =gUnknown_203F36C
- ldr r0, [r5]
- ldr r6, _0813D108 @ =0x0000080c
- adds r0, r6
- movs r1, 0
- ldrsh r4, [r0, r1]
- cmp r4, 0x1
- beq _0813D130
- cmp r4, 0x1
- bgt _0813D10C
- cmp r4, 0
- beq _0813D116
- b _0813D190
- .align 2, 0
-_0813D104: .4byte gUnknown_203F36C
-_0813D108: .4byte 0x0000080c
-_0813D10C:
- cmp r4, 0x2
- beq _0813D14C
- cmp r4, 0x3
- beq _0813D178
- b _0813D190
-_0813D116:
- bl ResetTempTileDataBuffers
- ldr r1, _0813D12C @ =gUnknown_8E859D0
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- b _0813D17E
- .align 2, 0
-_0813D12C: .4byte gUnknown_8E859D0
-_0813D130:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0813D1B4
- ldr r0, _0813D148 @ =gUnknown_8E85C44
- ldr r1, [r5]
- adds r1, 0xC
- bl LZDecompressWram
- b _0813D17E
- .align 2, 0
-_0813D148: .4byte gUnknown_8E85C44
-_0813D14C:
- ldr r0, _0813D16C @ =gUnknown_8E85BA4
- movs r1, 0
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r0, _0813D170 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq _0813D17E
- ldr r0, _0813D174 @ =gUnknown_8E85BF4
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- b _0813D17E
- .align 2, 0
-_0813D16C: .4byte gUnknown_8E85BA4
-_0813D170: .4byte gSaveBlock2Ptr
-_0813D174: .4byte gUnknown_8E85BF4
-_0813D178:
- ldr r0, _0813D18C @ =gUnknown_84644A8
- bl LoadCompressedSpriteSheet
-_0813D17E:
- ldr r1, [r5]
- adds r1, r6
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0813D1B4
- .align 2, 0
-_0813D18C: .4byte gUnknown_84644A8
-_0813D190:
- ldr r0, _0813D1A8 @ =gUnknown_84644B0
- bl LoadCompressedSpritePalette
- ldr r0, _0813D1AC @ =gUnknown_203F36C
- ldr r0, [r0]
- ldr r1, _0813D1B0 @ =0x0000080c
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- movs r0, 0x1
- b _0813D1B6
- .align 2, 0
-_0813D1A8: .4byte gUnknown_84644B0
-_0813D1AC: .4byte gUnknown_203F36C
-_0813D1B0: .4byte 0x0000080c
-_0813D1B4:
- movs r0, 0
-_0813D1B6:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_813D0E4
-
- 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}
- sub sp, 0x10
- ldr r4, _0813D648 @ =gUnknown_203F36C
- ldr r1, [r4]
- movs r0, 0x1
- strh r0, [r1, 0x4]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r1, 0x4
- str r1, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xD4
- movs r2, 0x78
- movs r3, 0x98
- bl AddScrollIndicatorArrowPairParameterized
- ldr r1, [r4]
- strb r0, [r1, 0x6]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D648: .4byte gUnknown_203F36C
- thumb_func_end sub_813D614
-
- thumb_func_start sub_813D64C
-sub_813D64C: @ 813D64C
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _0813D680 @ =gUnknown_203F36C
- ldr r1, [r4]
- movs r0, 0x1
- strh r0, [r1, 0x4]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r1, 0x4
- str r1, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x98
- movs r2, 0x48
- movs r3, 0x68
- bl AddScrollIndicatorArrowPairParameterized
- ldr r1, [r4]
- strb r0, [r1, 0x6]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D680: .4byte gUnknown_203F36C
- thumb_func_end sub_813D64C
-
- thumb_func_start sub_813D684
-sub_813D684: @ 813D684
- push {r4,lr}
- ldr r4, _0813D6A0 @ =gUnknown_203F36C
- ldr r1, [r4]
- ldrb r0, [r1, 0x6]
- cmp r0, 0xFF
- beq _0813D69A
- bl RemoveScrollIndicatorArrowPair
- ldr r1, [r4]
- movs r0, 0xFF
- strb r0, [r1, 0x6]
-_0813D69A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D6A0: .4byte gUnknown_203F36C
- thumb_func_end sub_813D684
-
- thumb_func_start sub_813D6A4
-sub_813D6A4: @ 813D6A4
- push {r4,lr}
- sub sp, 0x14
- ldr r4, _0813D6E0 @ =gUnknown_841670A
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- movs r3, 0x48
- subs r3, r0
- lsrs r3, 1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x2
- movs r1, 0x1
- adds r2, r4, 0
- bl sub_813E9A0
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D6E0: .4byte gUnknown_841670A
- thumb_func_end sub_813D6A4
-
- thumb_func_start sub_813D6E4
-sub_813D6E4: @ 813D6E4
- ldr r1, _0813D6F0 @ =gUnknown_203F370
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r0, [r1, 0xA]
- bx lr
- .align 2, 0
-_0813D6F0: .4byte gUnknown_203F370
- thumb_func_end sub_813D6E4
-
- thumb_func_start sub_813D6F4
-sub_813D6F4: @ 813D6F4
- push {r4,lr}
- ldr r0, _0813D70C @ =gUnknown_203F370
- ldrb r1, [r0, 0x4]
- adds r4, r0, 0
- cmp r1, 0x5
- beq _0813D714
- ldr r0, _0813D710 @ =gUnknown_203F36C
- ldr r1, [r0]
- ldrb r1, [r1, 0x7]
- adds r2, r1, 0x1
- adds r1, r0, 0
- b _0813D71A
- .align 2, 0
-_0813D70C: .4byte gUnknown_203F370
-_0813D710: .4byte gUnknown_203F36C
-_0813D714:
- ldr r1, _0813D744 @ =gUnknown_203F36C
- ldr r0, [r1]
- ldrb r2, [r0, 0x7]
-_0813D71A:
- ldrh r0, [r4, 0xA]
- cmp r0, 0
- beq _0813D72E
- ldr r1, [r1]
- ldrb r1, [r1, 0x8]
- adds r0, r1
- cmp r0, r2
- ble _0813D72E
- subs r0, r2, r1
- strh r0, [r4, 0xA]
-_0813D72E:
- adds r3, r4, 0
- ldrh r0, [r3, 0xA]
- ldrh r1, [r3, 0x8]
- adds r0, r1
- cmp r0, r2
- blt _0813D74C
- cmp r2, 0x1
- bhi _0813D748
- movs r0, 0
- strh r0, [r3, 0x8]
- b _0813D74C
- .align 2, 0
-_0813D744: .4byte gUnknown_203F36C
-_0813D748:
- subs r0, r2, 0x1
- strh r0, [r4, 0x8]
-_0813D74C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_813D6F4
-
- thumb_func_start sub_813D754
-sub_813D754: @ 813D754
- push {r4-r6,lr}
- ldr r0, _0813D770 @ =gUnknown_203F370
- ldrb r1, [r0, 0x4]
- adds r5, r0, 0
- cmp r1, 0x5
- beq _0813D778
- ldr r1, _0813D774 @ =gUnknown_203F36C
- ldr r0, [r1]
- ldrb r0, [r0, 0x7]
- adds r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- b _0813D77E
- .align 2, 0
-_0813D770: .4byte gUnknown_203F370
-_0813D774: .4byte gUnknown_203F36C
-_0813D778:
- ldr r1, _0813D7C8 @ =gUnknown_203F36C
- ldr r0, [r1]
- ldrb r4, [r0, 0x7]
-_0813D77E:
- adds r6, r1, 0
- ldrh r0, [r5, 0x8]
- cmp r0, 0x4
- bls _0813D7C2
- movs r3, 0
- subs r0, 0x4
- cmp r3, r0
- bgt _0813D7C2
- ldrh r0, [r5, 0xA]
- ldr r1, [r6]
- ldrb r1, [r1, 0x8]
- adds r0, r1
- cmp r0, r4
- beq _0813D7C2
- adds r2, r5, 0
-_0813D79C:
- ldrh r0, [r2, 0x8]
- subs r0, 0x1
- strh r0, [r2, 0x8]
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- ldrh r0, [r2, 0x8]
- subs r0, 0x4
- cmp r3, r0
- bgt _0813D7C2
- ldrh r0, [r5, 0xA]
- ldr r1, [r6]
- ldrb r1, [r1, 0x8]
- adds r0, r1
- cmp r0, r4
- bne _0813D79C
-_0813D7C2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D7C8: .4byte gUnknown_203F36C
- thumb_func_end sub_813D754
-
- thumb_func_start sub_813D7CC
-sub_813D7CC: @ 813D7CC
- push {lr}
- ldr r0, _0813D7FC @ =gUnknown_203F36C
- ldr r0, [r0]
- cmp r0, 0
- beq _0813D7DA
- bl Free
-_0813D7DA:
- ldr r0, _0813D800 @ =gUnknown_203F37C
- ldr r0, [r0]
- cmp r0, 0
- beq _0813D7E6
- bl Free
-_0813D7E6:
- ldr r0, _0813D804 @ =gUnknown_203F380
- ldr r0, [r0]
- cmp r0, 0
- beq _0813D7F2
- bl Free
-_0813D7F2:
- bl FreeAllWindowBuffers
- pop {r0}
- bx r0
- .align 2, 0
-_0813D7FC: .4byte gUnknown_203F36C
-_0813D800: .4byte gUnknown_203F37C
-_0813D804: .4byte gUnknown_203F380
- thumb_func_end sub_813D7CC
-
- thumb_func_start BerryPouch_StartFadeToExitCallback
-BerryPouch_StartFadeToExitCallback: @ 813D808
- 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, _0813D83C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0813D840 @ =sub_813D844
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D83C: .4byte gTasks
-_0813D840: .4byte sub_813D844
- thumb_func_end BerryPouch_StartFadeToExitCallback
-
- thumb_func_start sub_813D844
-sub_813D844: @ 813D844
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0813D87C @ =gTasks+0x8
- adds r2, r0, r1
- ldr r0, _0813D880 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0813D8A4
- ldrb r0, [r2]
- ldr r4, _0813D884 @ =gUnknown_203F37A
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl DestroyListMenuTask
- ldr r0, _0813D888 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _0813D88C
- bl SetMainCallback2
- b _0813D896
- .align 2, 0
-_0813D87C: .4byte gTasks+0x8
-_0813D880: .4byte gPaletteFade
-_0813D884: .4byte gUnknown_203F37A
-_0813D888: .4byte gUnknown_203F36C
-_0813D88C:
- adds r0, r4, 0
- subs r0, 0xA
- ldr r0, [r0]
- bl SetMainCallback2
-_0813D896:
- bl sub_813D684
- bl sub_813D7CC
- adds r0, r5, 0
- bl DestroyTask
-_0813D8A4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813D844
-
- thumb_func_start sub_813D8AC
-sub_813D8AC: @ 813D8AC
- push {r4,lr}
- ldr r4, _0813D904 @ =gBagPockets + 0x20
- adds r0, r4, 0
- bl SortAndCompactBagPocket
- ldr r3, _0813D908 @ =gUnknown_203F36C
- ldr r1, [r3]
- movs r0, 0
- strb r0, [r1, 0x7]
- movs r2, 0
- ldrb r0, [r4, 0x4]
- cmp r2, r0
- bcs _0813D8EE
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0813D8EE
-_0813D8CE:
- ldr r0, [r3]
- ldrb r1, [r0, 0x7]
- adds r1, 0x1
- strb r1, [r0, 0x7]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldrb r0, [r4, 0x4]
- cmp r2, r0
- bcs _0813D8EE
- ldr r0, [r4]
- lsls r1, r2, 2
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _0813D8CE
-_0813D8EE:
- ldr r0, _0813D90C @ =gUnknown_203F370
- ldrb r0, [r0, 0x4]
- cmp r0, 0x5
- beq _0813D910
- ldr r0, _0813D908 @ =gUnknown_203F36C
- ldr r1, [r0]
- ldrb r1, [r1, 0x7]
- adds r2, r1, 0x1
- adds r1, r0, 0
- b _0813D916
- .align 2, 0
-_0813D904: .4byte gBagPockets + 0x20
-_0813D908: .4byte gUnknown_203F36C
-_0813D90C: .4byte gUnknown_203F370
-_0813D910:
- ldr r1, _0813D924 @ =gUnknown_203F36C
- ldr r0, [r1]
- ldrb r2, [r0, 0x7]
-_0813D916:
- cmp r2, 0x7
- bls _0813D928
- ldr r1, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x8]
- b _0813D92C
- .align 2, 0
-_0813D924: .4byte gUnknown_203F36C
-_0813D928:
- ldr r0, [r1]
- strb r2, [r0, 0x8]
-_0813D92C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_813D8AC
-
- thumb_func_start BerryPouch_SetExitCallback
-BerryPouch_SetExitCallback: @ 813D934
- ldr r1, _0813D93C @ =gUnknown_203F36C
- ldr r1, [r1]
- str r0, [r1]
- bx lr
- .align 2, 0
-_0813D93C: .4byte gUnknown_203F36C
- thumb_func_end BerryPouch_SetExitCallback
-
- thumb_func_start sub_813D940
-sub_813D940: @ 813D940
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x14
- adds r6, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0813D9E8 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x8
- bl sub_813EA08
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- ldr r1, _0813D9EC @ =gStringVar1
- mov r10, r1
- bl sub_813D39C
- ldr r0, _0813D9F0 @ =gStringVar4
- mov r9, r0
- adds r1, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [sp]
- movs r6, 0x1
- str r6, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0
- mov r8, r1
- str r1, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0x2
- mov r2, r9
- movs r3, 0
- bl sub_813E9A0
- movs r0, 0
- bl sub_813EA08
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, r10
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r1, _0813D9F4 @ =gText_TimesStrVar1
- mov r0, r9
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0
- mov r2, r9
- movs r3, 0x4
- bl sub_813E9A0
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813D9E8: .4byte gTasks+0x8
-_0813D9EC: .4byte gStringVar1
-_0813D9F0: .4byte gStringVar4
-_0813D9F4: .4byte gText_TimesStrVar1
- thumb_func_end sub_813D940
-
- thumb_func_start sub_813D9F8
-sub_813D9F8: @ 813D9F8
- push {r4-r6,lr}
- sub sp, 0x14
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- bl sub_813EB10
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, _0813DA5C @ =gStringVar1
- lsls r4, 16
- asrs r4, 16
- adds r1, r4, 0
- movs r2, 0x2
- adds r3, r5, 0
- bl ConvertIntToDecimalStringN
- ldr r4, _0813DA60 @ =gStringVar4
- ldr r1, _0813DA64 @ =gText_TimesStrVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x4
- bl sub_813E9A0
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DA5C: .4byte gStringVar1
-_0813DA60: .4byte gStringVar4
-_0813DA64: .4byte gText_TimesStrVar1
- thumb_func_end sub_813D9F8
-
- thumb_func_start sub_813DA68
-sub_813DA68: @ 813DA68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0813DAD8 @ =gTasks+0x8
- adds r7, r0, r1
- ldr r0, _0813DADC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0
- beq _0813DA90
- b _0813DB9E
-_0813DA90:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813DA9E
- b _0813DB9E
-_0813DA9E:
- ldrb r0, [r7]
- bl ListMenu_ProcessInput
- adds r5, r0, 0
- ldrb r0, [r7]
- ldr r4, _0813DAE0 @ =gUnknown_203F37A
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl ListMenuGetScrollAndRow
- ldr r0, _0813DAE4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0813DAEC
- adds r0, r4, 0
- subs r0, 0xA
- ldrb r0, [r0, 0x5]
- cmp r0, 0x1
- bne _0813DAEC
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0813DAE8 @ =gSpecialVar_ItemId
- mov r1, r8
- strh r1, [r0]
- b _0813DB48
- .align 2, 0
-_0813DAD8: .4byte gTasks+0x8
-_0813DADC: .4byte gPaletteFade
-_0813DAE0: .4byte gUnknown_203F37A
-_0813DAE4: .4byte gMain
-_0813DAE8: .4byte gSpecialVar_ItemId
-_0813DAEC:
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _0813DAFC
- adds r0, 0x1
- cmp r5, r0
- bne _0813DB10
- b _0813DB9E
-_0813DAFC:
- ldr r0, _0813DB0C @ =gUnknown_203F370
- ldrb r0, [r0, 0x4]
- cmp r0, 0x5
- beq _0813DB9E
- movs r0, 0x5
- bl PlaySE
- b _0813DB42
- .align 2, 0
-_0813DB0C: .4byte gUnknown_203F370
-_0813DB10:
- movs r0, 0x5
- bl PlaySE
- ldr r3, _0813DB30 @ =gUnknown_203F370
- mov r8, r3
- ldrb r0, [r3, 0x4]
- cmp r0, 0x5
- bne _0813DB38
- lsls r1, r5, 16
- lsrs r1, 16
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- ldr r1, _0813DB34 @ =gSpecialVar_ItemId
- b _0813DB46
- .align 2, 0
-_0813DB30: .4byte gUnknown_203F370
-_0813DB34: .4byte gSpecialVar_ItemId
-_0813DB38:
- ldr r0, _0813DB50 @ =gUnknown_203F36C
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r5, r0
- bne _0813DB58
-_0813DB42:
- ldr r1, _0813DB54 @ =gSpecialVar_ItemId
- movs r0, 0
-_0813DB46:
- strh r0, [r1]
-_0813DB48:
- adds r0, r6, 0
- bl BerryPouch_StartFadeToExitCallback
- b _0813DB9E
- .align 2, 0
-_0813DB50: .4byte gUnknown_203F36C
-_0813DB54: .4byte gSpecialVar_ItemId
-_0813DB58:
- bl sub_813D684
- movs r0, 0x1
- bl sub_813D594
- ldrb r0, [r7]
- movs r1, 0x2
- bl sub_813D4B0
- strh r5, [r7, 0x2]
- lsls r4, r5, 16
- lsrs r4, 16
- movs r0, 0x5
- adds r1, r4, 0
- bl BagGetQuantityByPocketPosition
- strh r0, [r7, 0x4]
- movs r0, 0x5
- adds r1, r4, 0
- bl BagGetItemIdByPocketPosition
- ldr r1, _0813DBA8 @ =gSpecialVar_ItemId
- strh r0, [r1]
- ldr r0, _0813DBAC @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r2, _0813DBB0 @ =gUnknown_8464358
- mov r3, r8
- ldrb r0, [r3, 0x4]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
-_0813DB9E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DBA8: .4byte gSpecialVar_ItemId
-_0813DBAC: .4byte gTasks
-_0813DBB0: .4byte gUnknown_8464358
- thumb_func_end sub_813DA68
-
- thumb_func_start sub_813DBB4
-sub_813DBB4: @ 813DBB4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_813D594
- bl sub_813D5BC
- ldr r1, _0813DBDC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0813DBE0 @ =sub_813DA68
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DBDC: .4byte gTasks
-_0813DBE0: .4byte sub_813DA68
- thumb_func_end sub_813DBB4
-
- thumb_func_start sub_813DBE4
-sub_813DBE4: @ 813DBE4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0813DC10 @ =gTasks+0x8
- adds r7, r1, r0
- ldr r0, _0813DC14 @ =gUnknown_203F370
- ldrb r0, [r0, 0x4]
- cmp r0, 0x4
- bne _0813DC24
- ldr r1, _0813DC18 @ =gUnknown_203F384
- ldr r0, _0813DC1C @ =gUnknown_84643B0
- str r0, [r1]
- ldr r1, _0813DC20 @ =gUnknown_203F388
- movs r0, 0x3
- b _0813DC86
- .align 2, 0
-_0813DC10: .4byte gTasks+0x8
-_0813DC14: .4byte gUnknown_203F370
-_0813DC18: .4byte gUnknown_203F384
-_0813DC1C: .4byte gUnknown_84643B0
-_0813DC20: .4byte gUnknown_203F388
-_0813DC24:
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0813DC38
- bl InUnionRoom
- cmp r0, 0x1
- bne _0813DC7C
-_0813DC38:
- ldr r0, _0813DC54 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl sub_80BF6A8
- lsls r0, 24
- cmp r0, 0
- bne _0813DC64
- ldr r1, _0813DC58 @ =gUnknown_203F384
- ldr r0, _0813DC5C @ =gUnknown_84643AC
- str r0, [r1]
- ldr r1, _0813DC60 @ =gUnknown_203F388
- movs r0, 0x1
- b _0813DC86
- .align 2, 0
-_0813DC54: .4byte gSpecialVar_ItemId
-_0813DC58: .4byte gUnknown_203F384
-_0813DC5C: .4byte gUnknown_84643AC
-_0813DC60: .4byte gUnknown_203F388
-_0813DC64:
- ldr r1, _0813DC70 @ =gUnknown_203F384
- ldr r0, _0813DC74 @ =gUnknown_84643A8
- str r0, [r1]
- ldr r1, _0813DC78 @ =gUnknown_203F388
- movs r0, 0x2
- b _0813DC86
- .align 2, 0
-_0813DC70: .4byte gUnknown_203F384
-_0813DC74: .4byte gUnknown_84643A8
-_0813DC78: .4byte gUnknown_203F388
-_0813DC7C:
- ldr r1, _0813DD58 @ =gUnknown_203F384
- ldr r0, _0813DD5C @ =gUnknown_84643A4
- str r0, [r1]
- ldr r1, _0813DD60 @ =gUnknown_203F388
- movs r0, 0x4
-_0813DC86:
- strb r0, [r1]
- mov r8, r1
- mov r1, r8
- ldrb r0, [r1]
- adds r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- bl sub_813EA08
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x2
- movs r1, 0x2
- bl GetFontAttribute
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r1, r8
- ldrb r0, [r1]
- str r0, [sp, 0x8]
- ldr r0, _0813DD64 @ =gUnknown_846437C
- str r0, [sp, 0xC]
- ldr r0, _0813DD58 @ =gUnknown_203F384
- ldr r0, [r0]
- str r0, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0x2
- bl AddItemMenuActionTextPrinters
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- mov r1, r8
- ldrb r0, [r1]
- str r0, [sp, 0x4]
- movs r0, 0
- mov r8, r0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0x6
- bl sub_813EA08
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, _0813DD68 @ =gStringVar1
- bl sub_813D39C
- ldr r5, _0813DD6C @ =gStringVar4
- ldr r1, _0813DD70 @ =gOtherText_StrVar1
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r0, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl sub_813E9A0
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DD58: .4byte gUnknown_203F384
-_0813DD5C: .4byte gUnknown_84643A4
-_0813DD60: .4byte gUnknown_203F388
-_0813DD64: .4byte gUnknown_846437C
-_0813DD68: .4byte gStringVar1
-_0813DD6C: .4byte gStringVar4
-_0813DD70: .4byte gOtherText_StrVar1
- thumb_func_end sub_813DBE4
-
- thumb_func_start sub_813DD74
-sub_813DD74: @ 813DD74
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_813DBE4
- ldr r1, _0813DD98 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0813DD9C @ =sub_813DDA0
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DD98: .4byte gTasks
-_0813DD9C: .4byte sub_813DDA0
- thumb_func_end sub_813DD74
-
- thumb_func_start sub_813DDA0
-sub_813DDA0: @ 813DDA0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0813DDFE
- bl Menu_ProcessInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _0813DDFE
- adds r0, 0x1
- cmp r4, r0
- bne _0813DDE0
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0813DDDC @ =gUnknown_846437C
- ldr r1, [r0, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- b _0813DDFE
- .align 2, 0
-_0813DDDC: .4byte gUnknown_846437C
-_0813DDE0:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0813DE04 @ =gUnknown_846437C
- ldr r0, _0813DE08 @ =gUnknown_203F384
- ldr r0, [r0]
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl _call_via_r1
-_0813DDFE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DE04: .4byte gUnknown_846437C
-_0813DE08: .4byte gUnknown_203F384
- thumb_func_end sub_813DDA0
-
- thumb_func_start sub_813DE0C
-sub_813DE0C: @ 813DE0C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0813DE5C @ =gUnknown_203F388
- ldrb r0, [r0]
- adds r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- bl sub_813EA98
- movs r0, 0x6
- bl sub_813EA98
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _0813DE60 @ =gUnknown_203F370
- ldrb r0, [r0, 0x4]
- cmp r0, 0x4
- bne _0813DE78
- ldr r4, _0813DE64 @ =gSpecialVar_ItemId
- ldrh r0, [r4]
- bl ItemId_GetBattleFunc
- cmp r0, 0
- bne _0813DE68
- adds r0, r5, 0
- bl FieldUseFunc_OakStopsYou
- b _0813DEB0
- .align 2, 0
-_0813DE5C: .4byte gUnknown_203F388
-_0813DE60: .4byte gUnknown_203F370
-_0813DE64: .4byte gSpecialVar_ItemId
-_0813DE68:
- ldrh r0, [r4]
- bl ItemId_GetBattleFunc
- adds r1, r0, 0
- adds r0, r5, 0
- bl _call_via_r1
- b _0813DEB0
-_0813DE78:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _0813DEA0
- ldr r0, _0813DE9C @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl ItemId_GetType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813DEA0
- adds r0, r5, 0
- bl sub_813E274
- b _0813DEB0
- .align 2, 0
-_0813DE9C: .4byte gSpecialVar_ItemId
-_0813DEA0:
- ldr r0, _0813DEB8 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl ItemId_GetFieldFunc
- adds r1, r0, 0
- adds r0, r5, 0
- bl _call_via_r1
-_0813DEB0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DEB8: .4byte gSpecialVar_ItemId
- thumb_func_end sub_813DE0C
-
- thumb_func_start sub_813DEBC
-sub_813DEBC: @ 813DEBC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r7, r0, 3
- ldr r0, _0813DF24 @ =gTasks+0x8
- mov r8, r0
- adds r5, r7, r0
- ldr r4, _0813DF28 @ =gUnknown_203F388
- ldrb r0, [r4]
- adds r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- bl sub_813EB10
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- movs r0, 0x6
- bl sub_813EB10
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- ldrb r0, [r4]
- adds r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- bl sub_813EA98
- movs r0, 0x6
- bl sub_813EA98
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- strh r0, [r5, 0x10]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _0813DF2C
- adds r0, r6, 0
- bl sub_813DF54
- b _0813DF42
- .align 2, 0
-_0813DF24: .4byte gTasks+0x8
-_0813DF28: .4byte gUnknown_203F388
-_0813DF2C:
- ldr r1, _0813DF4C @ =gUnknown_84163DB
- adds r0, r6, 0
- bl sub_813D940
- bl sub_813D614
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0813DF50 @ =sub_813E010
- str r1, [r0]
-_0813DF42:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DF4C: .4byte gUnknown_84163DB
-_0813DF50: .4byte sub_813E010
- thumb_func_end sub_813DEBC
-
- thumb_func_start sub_813DF54
-sub_813DF54: @ 813DF54
- push {r4,r5,lr}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- ldr r0, _0813DFB4 @ =gTasks+0x8
- adds r1, r0
- ldr r0, _0813DFB8 @ =gStringVar2
- movs r2, 0x10
- ldrsh r1, [r1, r2]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r5, _0813DFBC @ =gStringVar4
- ldr r1, _0813DFC0 @ =gUnknown_8416409
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x7
- bl sub_813EA08
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- str r1, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl sub_813E9A0
- ldr r1, _0813DFC4 @ =gUnknown_846436C
- adds r0, r4, 0
- bl sub_813EB7C
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813DFB4: .4byte gTasks+0x8
-_0813DFB8: .4byte gStringVar2
-_0813DFBC: .4byte gStringVar4
-_0813DFC0: .4byte gUnknown_8416409
-_0813DFC4: .4byte gUnknown_846436C
- thumb_func_end sub_813DF54
-
- thumb_func_start sub_813DFC8
-sub_813DFC8: @ 813DFC8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0813E00C @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x7
- bl sub_813EA98
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_813D4B0
- adds r0, r5, 0
- bl sub_813DBB4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E00C: .4byte gTasks+0x8
- thumb_func_end sub_813DFC8
-
- thumb_func_start sub_813E010
-sub_813E010: @ 813E010
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0813E044 @ =gTasks+0x8
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x10
- ldrh r1, [r4, 0x4]
- bl AdjustQuantityAccordingToDPadInput
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813E048
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r0, 0
- movs r2, 0x3
- bl sub_813D9F8
- b _0813E0D4
- .align 2, 0
-_0813E044: .4byte gTasks+0x8
-_0813E048:
- ldr r0, _0813E08C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813E090
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x8
- bl sub_813EB10
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- movs r0, 0x8
- bl sub_813EA98
- movs r0, 0
- bl sub_813EA98
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- bl sub_813D684
- adds r0, r5, 0
- bl sub_813DF54
- b _0813E0D4
- .align 2, 0
-_0813E08C: .4byte gMain
-_0813E090:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0813E0D4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x8
- bl sub_813EA98
- movs r0, 0
- bl sub_813EA98
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_813D4B0
- bl sub_813D684
- adds r0, r6, 0
- bl sub_813DBB4
-_0813E0D4:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_813E010
-
- thumb_func_start sub_813E0DC
-sub_813E0DC: @ 813E0DC
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r6, _0813E14C @ =gTasks+0x8
- adds r5, r4, r6
- movs r0, 0x7
- bl sub_813EA98
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- ldr r1, _0813E150 @ =gStringVar1
- bl sub_813D39C
- ldr r0, _0813E154 @ =gStringVar2
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r5, _0813E158 @ =gStringVar4
- ldr r1, _0813E15C @ =gUnknown_84163F4
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x9
- bl sub_813EA08
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- str r1, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl sub_813E9A0
- subs r6, 0x8
- adds r4, r6
- ldr r0, _0813E160 @ =sub_813E164
- str r0, [r4]
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E14C: .4byte gTasks+0x8
-_0813E150: .4byte gStringVar1
-_0813E154: .4byte gStringVar2
-_0813E158: .4byte gStringVar4
-_0813E15C: .4byte gUnknown_84163F4
-_0813E160: .4byte sub_813E164
- thumb_func_end sub_813E0DC
-
- thumb_func_start sub_813E164
-sub_813E164: @ 813E164
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0813E1EC @ =gTasks+0x8
- adds r5, r0, r1
- ldr r0, _0813E1F0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0813E18A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0813E1E4
-_0813E18A:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0813E1F4 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldrh r1, [r5, 0x10]
- bl RemoveBagItem
- movs r0, 0x9
- bl sub_813EA98
- ldrb r0, [r5]
- ldr r4, _0813E1F8 @ =gUnknown_203F37A
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl DestroyListMenuTask
- bl sub_813D8AC
- bl sub_813D6F4
- bl sub_813D204
- ldr r0, _0813E1FC @ =gMultiuseListMenuTemplate
- subs r4, 0xA
- ldrh r1, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_813D4B0
- adds r0, r6, 0
- bl sub_813DBB4
-_0813E1E4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E1EC: .4byte gTasks+0x8
-_0813E1F0: .4byte gMain
-_0813E1F4: .4byte gSpecialVar_ItemId
-_0813E1F8: .4byte gUnknown_203F37A
-_0813E1FC: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_813E164
-
- thumb_func_start sub_813E200
-sub_813E200: @ 813E200
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813E244 @ =gUnknown_203F388
- ldrb r0, [r0]
- adds r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- bl sub_813EA98
- movs r0, 0x6
- bl sub_813EA98
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _0813E248
- adds r0, r4, 0
- bl sub_813E274
- b _0813E25E
- .align 2, 0
-_0813E244: .4byte gUnknown_203F388
-_0813E248:
- ldr r0, _0813E264 @ =gUnknown_203F36C
- ldr r1, [r0]
- ldr r0, _0813E268 @ =sub_8126EDC
- str r0, [r1]
- ldr r1, _0813E26C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0813E270 @ =BerryPouch_StartFadeToExitCallback
- str r1, [r0]
-_0813E25E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E264: .4byte gUnknown_203F36C
-_0813E268: .4byte sub_8126EDC
-_0813E26C: .4byte gTasks
-_0813E270: .4byte BerryPouch_StartFadeToExitCallback
- thumb_func_end sub_813E200
-
- thumb_func_start sub_813E274
-sub_813E274: @ 813E274
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0813E288 @ =gText_ThereIsNoPokemon
- ldr r3, _0813E28C @ =sub_813E290
- movs r1, 0x2
- bl DisplayItemMessageInBerryPouch
- pop {r0}
- bx r0
- .align 2, 0
-_0813E288: .4byte gText_ThereIsNoPokemon
-_0813E28C: .4byte sub_813E290
- thumb_func_end sub_813E274
-
- thumb_func_start sub_813E290
-sub_813E290: @ 813E290
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813E2B4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813E2AE
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_813E2B8
-_0813E2AE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E2B4: .4byte gMain
- thumb_func_end sub_813E290
-
- thumb_func_start sub_813E2B8
-sub_813E2B8: @ 813E2B8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- ldr r0, _0813E314 @ =gTasks+0x8
- adds r5, r0
- movs r0, 0x5
- bl sub_813EACC
- ldrb r0, [r5]
- ldr r4, _0813E318 @ =gUnknown_203F37A
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl DestroyListMenuTask
- bl sub_813D8AC
- bl sub_813D6F4
- bl sub_813D204
- ldr r0, _0813E31C @ =gMultiuseListMenuTemplate
- subs r4, 0xA
- ldrh r1, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_813D4B0
- adds r0, r6, 0
- bl sub_813DBB4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E314: .4byte gTasks+0x8
-_0813E318: .4byte gUnknown_203F37A
-_0813E31C: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_813E2B8
-
- thumb_func_start sub_813E320
-sub_813E320: @ 813E320
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813E374 @ =gUnknown_203F388
- ldrb r0, [r0]
- adds r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- bl sub_813EA98
- movs r0, 0x6
- bl sub_813EA98
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _0813E378 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- bl sub_813D4B0
- adds r0, r4, 0
- bl sub_813DBB4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E374: .4byte gUnknown_203F388
-_0813E378: .4byte gTasks
- thumb_func_end sub_813E320
-
- thumb_func_start sub_813E37C
-sub_813E37C: @ 813E37C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _0813E3C4 @ =gTasks+0x8
- adds r0, r6, r7
- ldrh r1, [r0, 0x2]
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_80BF6A8
- lsls r0, 24
- cmp r0, 0
- bne _0813E3D8
- ldr r1, _0813E3C8 @ =gStringVar1
- adds r0, r4, 0
- bl CopyItemName
- ldr r4, _0813E3CC @ =gStringVar4
- ldr r1, _0813E3D0 @ =gUnknown_8416374
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r3, _0813E3D4 @ =sub_813E290
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageInBerryPouch
- b _0813E3EA
- .align 2, 0
-_0813E3C4: .4byte gTasks+0x8
-_0813E3C8: .4byte gStringVar1
-_0813E3CC: .4byte gStringVar4
-_0813E3D0: .4byte gUnknown_8416374
-_0813E3D4: .4byte sub_813E290
-_0813E3D8:
- ldr r0, _0813E3F0 @ =gUnknown_203F36C
- ldr r1, [r0]
- ldr r0, _0813E3F4 @ =c2_8123744
- str r0, [r1]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0813E3F8 @ =BerryPouch_StartFadeToExitCallback
- str r1, [r0]
-_0813E3EA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E3F0: .4byte gUnknown_203F36C
-_0813E3F4: .4byte c2_8123744
-_0813E3F8: .4byte BerryPouch_StartFadeToExitCallback
- thumb_func_end sub_813E37C
-
- thumb_func_start sub_813E3FC
-sub_813E3FC: @ 813E3FC
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813E418 @ =gUnknown_203F36C
- ldr r2, [r1]
- ldr r1, _0813E41C @ =sub_808CE60
- str r1, [r2]
- ldr r2, _0813E420 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _0813E424 @ =BerryPouch_StartFadeToExitCallback
- str r0, [r1]
- bx lr
- .align 2, 0
-_0813E418: .4byte gUnknown_203F36C
-_0813E41C: .4byte sub_808CE60
-_0813E420: .4byte gTasks
-_0813E424: .4byte BerryPouch_StartFadeToExitCallback
- thumb_func_end sub_813E3FC
-
- thumb_func_start sub_813E428
-sub_813E428: @ 813E428
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0813E470 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r6, _0813E474 @ =gSpecialVar_ItemId
- ldrh r0, [r6]
- bl itemid_get_market_price
- lsls r0, 16
- cmp r0, 0
- bne _0813E488
- ldrh r0, [r6]
- ldr r1, _0813E478 @ =gStringVar1
- bl CopyItemName
- ldr r4, _0813E47C @ =gStringVar4
- ldr r1, _0813E480 @ =gText_OhNoICantBuyThat
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0813E484 @ =sub_813E2B8
- adds r0, r5, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBerryPouch
- b _0813E4CE
- .align 2, 0
-_0813E470: .4byte gTasks+0x8
-_0813E474: .4byte gSpecialVar_ItemId
-_0813E478: .4byte gStringVar1
-_0813E47C: .4byte gStringVar4
-_0813E480: .4byte gText_OhNoICantBuyThat
-_0813E484: .4byte sub_813E2B8
-_0813E488:
- movs r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _0813E4A0
- bl sub_813EBD4
- adds r0, r5, 0
- bl sub_813E4E4
- b _0813E4CE
-_0813E4A0:
- cmp r0, 0x63
- ble _0813E4A8
- movs r0, 0x63
- strh r0, [r4, 0x4]
-_0813E4A8:
- ldrh r0, [r6]
- ldr r1, _0813E4D4 @ =gStringVar1
- bl CopyItemName
- ldr r4, _0813E4D8 @ =gStringVar4
- ldr r1, _0813E4DC @ =gText_HowManyWouldYouLikeToSell
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0813E4E0 @ =sub_813E5B8
- adds r0, r7, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBerryPouch
-_0813E4CE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E4D4: .4byte gStringVar1
-_0813E4D8: .4byte gStringVar4
-_0813E4DC: .4byte gText_HowManyWouldYouLikeToSell
-_0813E4E0: .4byte sub_813E5B8
- thumb_func_end sub_813E428
-
- thumb_func_start sub_813E4E4
-sub_813E4E4: @ 813E4E4
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0813E540 @ =gTasks+0x8
- adds r4, r0
- ldr r6, _0813E544 @ =gStringVar3
- ldrh r1, [r4, 0x2]
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- muls r1, r0
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _0813E548 @ =gStringVar4
- ldr r1, _0813E54C @ =gText_ICanPayThisMuch_WouldThatBeOkay
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0813E550 @ =sub_813E554
- adds r0, r5, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBerryPouch
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E540: .4byte gTasks+0x8
-_0813E544: .4byte gStringVar3
-_0813E548: .4byte gStringVar4
-_0813E54C: .4byte gText_ICanPayThisMuch_WouldThatBeOkay
-_0813E550: .4byte sub_813E554
- thumb_func_end sub_813E4E4
-
- thumb_func_start sub_813E554
-sub_813E554: @ 813E554
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813E564 @ =gUnknown_8464374
- bl sub_813EBA8
- pop {r0}
- bx r0
- .align 2, 0
-_0813E564: .4byte gUnknown_8464374
- thumb_func_end sub_813E554
-
- thumb_func_start sub_813E568
-sub_813E568: @ 813E568
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0813E5B4 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x2
- bl sub_813EA98
- movs r0, 0x5
- bl sub_813EACC
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_813D4B0
- adds r0, r5, 0
- bl sub_813DBB4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E5B4: .4byte gTasks+0x8
- thumb_func_end sub_813E568
-
- thumb_func_start sub_813E5B8
-sub_813E5B8: @ 813E5B8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 3
- ldr r6, _0813E654 @ =gTasks+0x8
- adds r0, r5, r6
- mov r9, r0
- movs r0, 0x1
- bl sub_813EA08
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813E658 @ =gStringVar1
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r2, _0813E65C @ =gStringVar4
- mov r8, r2
- ldr r1, _0813E660 @ =gText_TimesStrVar1
- mov r0, r8
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0
- mov r2, r8
- movs r3, 0x4
- bl sub_813E9A0
- mov r3, r9
- ldrh r1, [r3, 0x2]
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- mov r2, r9
- movs r3, 0x10
- ldrsh r1, [r2, r3]
- muls r0, r1
- bl sub_813E668
- bl sub_813EBD4
- bl sub_813D64C
- subs r6, 0x8
- adds r5, r6
- ldr r0, _0813E664 @ =sub_813E690
- str r0, [r5]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E654: .4byte gTasks+0x8
-_0813E658: .4byte gStringVar1
-_0813E65C: .4byte gStringVar4
-_0813E660: .4byte gText_TimesStrVar1
-_0813E664: .4byte sub_813E690
- thumb_func_end sub_813E5B8
-
- thumb_func_start sub_813E668
-sub_813E668: @ 813E668
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0x1
- bl sub_813EB10
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- str r1, [sp]
- movs r1, 0x38
- movs r2, 0xA
- adds r3, r4, 0
- bl PrintMoneyAmount
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_813E668
-
- thumb_func_start sub_813E690
-sub_813E690: @ 813E690
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0813E6E0 @ =gTasks+0x8
- adds r5, r0, r1
- adds r0, r5, 0
- adds r0, 0x10
- ldrh r1, [r5, 0x4]
- bl AdjustQuantityAccordingToDPadInput
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813E6E4
- movs r0, 0x10
- ldrsh r1, [r5, r0]
- movs r0, 0x1
- movs r2, 0x2
- bl sub_813D9F8
- ldrh r1, [r5, 0x2]
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- muls r0, r1
- bl sub_813E668
- b _0813E762
- .align 2, 0
-_0813E6E0: .4byte gTasks+0x8
-_0813E6E4:
- ldr r0, _0813E714 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813E718
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl sub_813EA98
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl sub_813D684
- adds r0, r4, 0
- bl sub_813E4E4
- b _0813E762
- .align 2, 0
-_0813E714: .4byte gMain
-_0813E718:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0813E762
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl sub_813EA98
- movs r0, 0x2
- bl sub_813EA98
- movs r0, 0x5
- bl sub_813EACC
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl sub_813D684
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_813D4B0
- adds r0, r6, 0
- bl sub_813DBB4
-_0813E762:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_813E690
-
- thumb_func_start sub_813E768
-sub_813E768: @ 813E768
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0813E7D4 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _0813E7D8 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldr r1, _0813E7DC @ =gStringVar1
- bl CopyItemName
- ldr r6, _0813E7E0 @ =gStringVar3
- ldrh r1, [r4, 0x2]
- movs r0, 0x5
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- muls r1, r0
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _0813E7E4 @ =gStringVar4
- ldr r1, _0813E7E8 @ =gText_TurnedOverItemsWorthYen
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r3, _0813E7EC @ =sub_813E7F0
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageInBerryPouch
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E7D4: .4byte gTasks+0x8
-_0813E7D8: .4byte gSpecialVar_ItemId
-_0813E7DC: .4byte gStringVar1
-_0813E7E0: .4byte gStringVar3
-_0813E7E4: .4byte gStringVar4
-_0813E7E8: .4byte gText_TurnedOverItemsWorthYen
-_0813E7EC: .4byte sub_813E7F0
- thumb_func_end sub_813E768
-
- thumb_func_start sub_813E7F0
-sub_813E7F0: @ 813E7F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r6, r0, 2
- adds r6, r0
- lsls r6, 3
- ldr r0, _0813E8BC @ =gTasks+0x8
- mov r9, r0
- adds r1, r6, 0
- add r1, r9
- mov r8, r1
- movs r0, 0xF8
- bl PlaySE
- ldr r5, _0813E8C0 @ =gSpecialVar_ItemId
- ldrh r0, [r5]
- mov r2, r8
- ldrh r1, [r2, 0x10]
- bl RemoveBagItem
- ldr r7, _0813E8C4 @ =gSaveBlock1Ptr
- ldr r4, [r7]
- movs r3, 0xA4
- lsls r3, 2
- mov r10, r3
- add r4, r10
- ldrh r0, [r5]
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- mov r2, r8
- movs r3, 0x10
- ldrsh r1, [r2, r3]
- muls r1, r0
- adds r0, r4, 0
- bl AddMoney
- ldrh r0, [r5]
- mov r2, r8
- ldrh r1, [r2, 0x10]
- movs r2, 0x2
- bl sub_809C09C
- mov r3, r8
- ldrb r0, [r3]
- ldr r4, _0813E8C8 @ =gUnknown_203F37A
- subs r2, r4, 0x2
- adds r1, r4, 0
- bl DestroyListMenuTask
- bl sub_813D8AC
- bl sub_813D6F4
- bl sub_813D204
- ldr r0, _0813E8CC @ =gMultiuseListMenuTemplate
- subs r4, 0xA
- ldrh r1, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- strh r0, [r1]
- movs r1, 0x2
- bl sub_813D4B0
- movs r0, 0x2
- bl sub_813EB10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, [r7]
- add r0, r10
- bl GetMoney
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- bl PrintMoneyAmountInMoneyBox
- movs r2, 0x8
- negs r2, r2
- add r9, r2
- add r6, r9
- ldr r0, _0813E8D0 @ =sub_813E8D4
- str r0, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E8BC: .4byte gTasks+0x8
-_0813E8C0: .4byte gSpecialVar_ItemId
-_0813E8C4: .4byte gSaveBlock1Ptr
-_0813E8C8: .4byte gUnknown_203F37A
-_0813E8CC: .4byte gMultiuseListMenuTemplate
-_0813E8D0: .4byte sub_813E8D4
- thumb_func_end sub_813E7F0
-
- thumb_func_start sub_813E8D4
-sub_813E8D4: @ 813E8D4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813E90C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0813E8EE
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0813E906
-_0813E8EE:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- bl sub_813EA98
- movs r0, 0x2
- bl PutWindowTilemap
- adds r0, r4, 0
- bl sub_813E2B8
-_0813E906:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E90C: .4byte gMain
- thumb_func_end sub_813E8D4
-
- thumb_func_start sub_813E910
-sub_813E910: @ 813E910
- push {r4,lr}
- ldr r0, _0813E994 @ =gUnknown_84643B8
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xE0
- bl TextWindow_SetUserSelectedFrame
- movs r0, 0
- movs r1, 0x13
- movs r2, 0xD0
- bl TextWindow_LoadResourcesStdFrame0
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xC0
- bl TextWindow_SetStdFrame0_WithPal
- ldr r0, _0813E998 @ =gTMCaseMainWindowPalette
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- movs r4, 0
-_0813E946:
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0813E946
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- movs r4, 0
- ldr r3, _0813E99C @ =gUnknown_203F38C
- movs r2, 0xFF
-_0813E97C:
- adds r0, r4, r3
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xD
- bls _0813E97C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813E994: .4byte gUnknown_84643B8
-_0813E998: .4byte gTMCaseMainWindowPalette
-_0813E99C: .4byte gUnknown_203F38C
- thumb_func_end sub_813E910
-
- thumb_func_start sub_813E9A0
-sub_813E9A0: @ 813E9A0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r3
- ldr r3, [sp, 0x30]
- ldr r4, [sp, 0x34]
- ldr r6, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- mov r8, r5
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- mov r9, r7
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r6, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, _0813EA04 @ =gUnknown_8464448
- adds r4, r5
- str r4, [sp, 0x8]
- mov r4, r8
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- str r2, [sp, 0x10]
- mov r2, r9
- bl AddTextPrinterParameterized4
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EA04: .4byte gUnknown_8464448
- thumb_func_end sub_813E9A0
-
- thumb_func_start sub_813EA08
-sub_813EA08: @ 813EA08
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813EA4C @ =gUnknown_203F38C
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0xFF
- bne _0813EA6C
- lsls r0, r4, 3
- ldr r1, _0813EA50 @ =gUnknown_84643D8
- adds r0, r1
- bl AddWindow
- strb r0, [r5]
- cmp r4, 0x2
- beq _0813EA38
- cmp r4, 0x6
- beq _0813EA38
- cmp r4, 0x7
- beq _0813EA38
- cmp r4, 0x8
- beq _0813EA38
- cmp r4, 0x9
- bne _0813EA54
-_0813EA38:
- ldr r0, _0813EA4C @ =gUnknown_203F38C
- adds r0, r4, r0
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0xC
- bl DrawStdFrameWithCustomTileAndPalette
- b _0813EA60
- .align 2, 0
-_0813EA4C: .4byte gUnknown_203F38C
-_0813EA50: .4byte gUnknown_84643D8
-_0813EA54:
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0x1
- movs r3, 0xE
- bl DrawStdFrameWithCustomTileAndPalette
-_0813EA60:
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _0813EA74 @ =gUnknown_203F38C
- adds r0, r4, r0
- ldrb r0, [r0]
-_0813EA6C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0813EA74: .4byte gUnknown_203F38C
- thumb_func_end sub_813EA08
-
- thumb_func_start sub_813EA78
-sub_813EA78: @ 813EA78
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EA94 @ =gUnknown_203F38C
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0x1
- movs r3, 0xE
- bl DrawStdFrameWithCustomTileAndPalette
- pop {r0}
- bx r0
- .align 2, 0
-_0813EA94: .4byte gUnknown_203F38C
- thumb_func_end sub_813EA78
-
- thumb_func_start sub_813EA98
-sub_813EA98: @ 813EA98
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813EAC8 @ =gUnknown_203F38C
- adds r4, r0
- ldrb r0, [r4]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0xFF
- strb r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EAC8: .4byte gUnknown_203F38C
- thumb_func_end sub_813EA98
-
- thumb_func_start sub_813EACC
-sub_813EACC: @ 813EACC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EB0C @ =gUnknown_203F38C
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0813EB04
- movs r1, 0
- bl ClearDialogWindowAndFrameToTransparent
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0xFF
- strb r0, [r4]
-_0813EB04:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EB0C: .4byte gUnknown_203F38C
- thumb_func_end sub_813EACC
-
- thumb_func_start sub_813EB10
-sub_813EB10: @ 813EB10
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EB1C @ =gUnknown_203F38C
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0813EB1C: .4byte gUnknown_203F38C
- thumb_func_end sub_813EB10
-
- thumb_func_start DisplayItemMessageInBerryPouch
-DisplayItemMessageInBerryPouch: @ 813EB20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r2, 0
- mov r8, r3
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _0813EB74 @ =gUnknown_203F38C
- ldrb r0, [r4, 0x5]
- cmp r0, 0xFF
- bne _0813EB44
- ldr r0, _0813EB78 @ =gUnknown_8464400
- bl AddWindow
- strb r0, [r4, 0x5]
-_0813EB44:
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4, 0x5]
- str r5, [sp]
- str r0, [sp, 0x4]
- str r7, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r2, 0x13
- movs r3, 0xD
- bl DisplayMessageAndContinueTask
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EB74: .4byte gUnknown_203F38C
-_0813EB78: .4byte gUnknown_8464400
- thumb_func_end DisplayItemMessageInBerryPouch
-
- thumb_func_start sub_813EB7C
-sub_813EB7C: @ 813EB7C
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EBA4 @ =gUnknown_84643F0
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0xE
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x2
- movs r3, 0
- bl CreateYesNoMenuWithCallbacks
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0813EBA4: .4byte gUnknown_84643F0
- thumb_func_end sub_813EB7C
-
- thumb_func_start sub_813EBA8
-sub_813EBA8: @ 813EBA8
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813EBD0 @ =gUnknown_84643F8
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0xE
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x2
- movs r3, 0
- bl CreateYesNoMenuWithCallbacks
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0813EBD0: .4byte gUnknown_84643F8
- thumb_func_end sub_813EBA8
-
- thumb_func_start sub_813EBD4
-sub_813EBD4: @ 813EBD4
- push {r4,lr}
- movs r0, 0x2
- bl sub_813EA08
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813EC04 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 2
- adds r0, r1
- bl GetMoney
- adds r3, r0, 0
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0xC
- bl PrintMoneyAmountInMoneyBoxWithBorder
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC04: .4byte gSaveBlock1Ptr
- thumb_func_end sub_813EBD4
-
- thumb_func_start sub_813EC08
-sub_813EC08: @ 813EC08
- push {lr}
- ldr r0, _0813EC20 @ =gUnknown_84644B8
- movs r1, 0x28
- movs r2, 0x4C
- movs r3, 0
- bl CreateSprite
- ldr r1, _0813EC24 @ =gUnknown_203F39C
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC20: .4byte gUnknown_84644B8
-_0813EC24: .4byte gUnknown_203F39C
- thumb_func_end sub_813EC08
-
- thumb_func_start sub_813EC28
-sub_813EC28: @ 813EC28
- push {r4,lr}
- ldr r0, _0813EC58 @ =gUnknown_203F39C
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0813EC5C @ =gSprites
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0813EC52
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _0813EC60 @ =sub_813EC64
- str r0, [r4, 0x1C]
-_0813EC52:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC58: .4byte gUnknown_203F39C
-_0813EC5C: .4byte gSprites
-_0813EC60: .4byte sub_813EC64
- thumb_func_end sub_813EC28
-
- thumb_func_start sub_813EC64
-sub_813EC64: @ 813EC64
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0813EC80
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r0, _0813EC88 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_0813EC80:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813EC88: .4byte SpriteCallbackDummy
- thumb_func_end sub_813EC64
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 46fa08f33..e58abf87f 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -3922,7 +3922,7 @@ sub_8109CC0: @ 8109CC0
_08109D14: .4byte gTasks+0x8
_08109D18:
ldrh r0, [r4, 0x2]
- ldr r1, _08109D30 @ =gUnknown_84163DB
+ ldr r1, _08109D30 @ =gText_TossOutHowManyStrVar1s
bl sub_810971C
adds r0, r7, 0
subs r0, 0x8
@@ -3934,7 +3934,7 @@ _08109D2A:
pop {r0}
bx r0
.align 2, 0
-_08109D30: .4byte gUnknown_84163DB
+_08109D30: .4byte gText_TossOutHowManyStrVar1s
_08109D34: .4byte sub_8109DEC
thumb_func_end sub_8109CC0
@@ -3957,7 +3957,7 @@ sub_8109D38: @ 8109D38
movs r3, 0x3
bl ConvertIntToDecimalStringN
ldr r5, _08109DA4 @ =gStringVar4
- ldr r1, _08109DA8 @ =gUnknown_8416409
+ ldr r1, _08109DA8 @ =gText_ThrowAwayStrVar2OfThisItemQM
adds r0, r5, 0
bl StringExpandPlaceholders
movs r0, 0x6
@@ -3988,7 +3988,7 @@ sub_8109D38: @ 8109D38
_08109D9C: .4byte gTasks+0x8
_08109DA0: .4byte gStringVar2
_08109DA4: .4byte gStringVar4
-_08109DA8: .4byte gUnknown_8416409
+_08109DA8: .4byte gText_ThrowAwayStrVar2OfThisItemQM
_08109DAC: .4byte gUnknown_8452F50
thumb_func_end sub_8109D38
@@ -4133,7 +4133,7 @@ sub_8109EA8: @ 8109EA8
movs r3, 0x3
bl ConvertIntToDecimalStringN
ldr r6, _08109F38 @ =gStringVar4
- ldr r1, _08109F3C @ =gUnknown_84163F4
+ ldr r1, _08109F3C @ =gText_ThrewAwayStrVar2StrVar1s
adds r0, r6, 0
bl StringExpandPlaceholders
movs r0, 0x6
@@ -4167,7 +4167,7 @@ _08109F2C: .4byte gUnknown_203ACFC
_08109F30: .4byte gStringVar1
_08109F34: .4byte gStringVar2
_08109F38: .4byte gStringVar4
-_08109F3C: .4byte gUnknown_84163F4
+_08109F3C: .4byte gText_ThrewAwayStrVar2StrVar1s
_08109F40: .4byte sub_8109F44
thumb_func_end sub_8109EA8
@@ -4706,7 +4706,7 @@ _0810A3C4: .4byte gUnknown_841630F
_0810A3C8: .4byte sub_810A1D0
_0810A3CC:
movs r0, 0xB6
- lsls r0, 1
+ lsls r0, 1 @ ITEM_TM_CASE
cmp r4, r0
bne _0810A3DC
ldr r0, _0810A3D8 @ =sub_810A434
@@ -4714,7 +4714,7 @@ _0810A3CC:
.align 2, 0
_0810A3D8: .4byte sub_810A434
_0810A3DC:
- ldr r0, _0810A3F0 @ =0x0000016d
+ ldr r0, _0810A3F0 @ =ITEM_BERRY_POUCH
cmp r4, r0
bne _0810A3F8
ldr r0, _0810A3F4 @ =sub_810A448
@@ -4724,7 +4724,7 @@ _0810A3E4:
bl ItemMenu_StartFadeToExitCallback
b _0810A426
.align 2, 0
-_0810A3F0: .4byte 0x0000016d
+_0810A3F0: .4byte 0x0000016d @ ITEM_BERRY_POUCH
_0810A3F4: .4byte sub_810A448
_0810A3F8:
mov r1, r8
diff --git a/asm/new_game.s b/asm/new_game.s
index e2b9c876f..15c06e8eb 100644
--- a/asm/new_game.s
+++ b/asm/new_game.s
@@ -184,7 +184,7 @@ ResetMenuAndMonGlobals: @ 8054A28
bl ZeroEnemyPartyMons
bl sub_81089BC
bl ResetTMCaseCursorPos
- bl sub_813D6E4
+ bl BerryPouch_CursorResetToTop
bl sub_811089C
bl Random
lsls r0, 16
diff --git a/baserom.ips b/baserom.ips
index 9a674ecd3..e4c815c03 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/berry_pouch.s b/data/berry_pouch.s
deleted file mode 100644
index 172443b5e..000000000
--- a/data/berry_pouch.s
+++ /dev/null
@@ -1,59 +0,0 @@
- .section .rodata
- .align 2
-
-gUnknown_846434C:: @ 846434C
- .incbin "baserom.gba", 0x46434C, 0xC
-
-gUnknown_8464358:: @ 8464358
- .incbin "baserom.gba", 0x464358, 0x14
-
-gUnknown_846436C:: @ 846436C
- .incbin "baserom.gba", 0x46436C, 0x8
-
-gUnknown_8464374:: @ 8464374
- .incbin "baserom.gba", 0x464374, 0x8
-
-gUnknown_846437C:: @ 846437C
- .incbin "baserom.gba", 0x46437C, 0x28
-
-gUnknown_84643A4:: @ 84643A4
- .incbin "baserom.gba", 0x4643A4, 0x4
-
-gUnknown_84643A8:: @ 84643A8
- .incbin "baserom.gba", 0x4643A8, 0x4
-
-gUnknown_84643AC:: @ 84643AC
- .incbin "baserom.gba", 0x4643AC, 0x4
-
-gUnknown_84643B0:: @ 84643B0
- .incbin "baserom.gba", 0x4643B0, 0x4
-
-gUnknown_84643B4:: @ 84643B4
- .incbin "baserom.gba", 0x4643B4, 0x4
-
-gUnknown_84643B8:: @ 84643B8
- .incbin "baserom.gba", 0x4643B8, 0x20
-
-gUnknown_84643D8:: @ 84643D8
- .incbin "baserom.gba", 0x4643D8, 0x18
-
-gUnknown_84643F0:: @ 84643F0
- .incbin "baserom.gba", 0x4643F0, 0x8
-
-gUnknown_84643F8:: @ 84643F8
- .incbin "baserom.gba", 0x4643F8, 0x8
-
-gUnknown_8464400:: @ 8464400
- .incbin "baserom.gba", 0x464400, 0x48
-
-gUnknown_8464448:: @ 8464448
- .incbin "baserom.gba", 0x464448, 0x60
-
-gUnknown_84644A8:: @ 84644A8
- .incbin "baserom.gba", 0x4644A8, 0x8
-
-gUnknown_84644B0:: @ 84644B0
- .incbin "baserom.gba", 0x4644B0, 0x8
-
-gUnknown_84644B8:: @ 84644B8
- .incbin "baserom.gba", 0x4644B8, 0x32C
diff --git a/data/graphics.s b/data/graphics.s
index 96ef720e9..9c5d1c3f9 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -13988,23 +13988,23 @@ gItemPcBgPals:: @ 8E85408
gItemPcTilemap:: @ 8E85458
.incbin "graphics/item_pc/unk_8E85458.bin.lz"
-gUnknown_8E8560C:: @ 8E8560C
- .incbin "baserom.gba", 0xE8560C, 0x3C4
+gBerryPouchSpriteTiles:: @ 8E8560C
+ .incbin "graphics/berry_pouch/unk_8E8560C.4bpp.lz"
-gUnknown_8E859D0:: @ 8E859D0
- .incbin "baserom.gba", 0xE859D0, 0x1D4
+gBerryPouchBgGfx:: @ 8E859D0
+ .incbin "graphics/berry_pouch/unk_8E859D0.4bpp.lz"
-gUnknown_8E85BA4:: @ 8E85BA4
- .incbin "baserom.gba", 0xE85BA4, 0x50
+gBerryPouchBgPals:: @ 8E85BA4
+ .incbin "graphics/berry_pouch/unk_8E85BA4.gbapal.lz"
-gUnknown_8E85BF4:: @ 8E85BF4
- .incbin "baserom.gba", 0xE85BF4, 0x28
+gBerryPouchBgPal0FemaleOverride:: @ 8E85BF4
+ .incbin "graphics/berry_pouch/unk_8E85BF4.gbapal.lz"
-gUnknown_8E85C1C:: @ 8E85C1C
- .incbin "baserom.gba", 0xE85C1C, 0x28
+gBerryPouchSpritePalette:: @ 8E85C1C
+ .incbin "graphics/berry_pouch/unk_8E85C1C.gbapal.lz"
-gUnknown_8E85C44:: @ 8E85C44
- .incbin "baserom.gba", 0xE85C44, 0x184
+gBerryPouchBg1Tilemap:: @ 8E85C44
+ .incbin "graphics/berry_pouch/unk_8E85C44.bin.lz"
gUnknown_8E85DC8:: @ 8E85DC8
.incbin "baserom.gba", 0xE85DC8, 0x134
diff --git a/data/itemfinder.s b/data/itemfinder.s
index 3a955deeb..88e9910f4 100644
--- a/data/itemfinder.s
+++ b/data/itemfinder.s
@@ -1,5 +1,9 @@
.section .rodata
.align 2
+
+gUnknown_84644D0:: @ 84644D0
+ .incbin "baserom.gba", 0x4644D0, 0x314
+
gUnknown_84647E4:: @ 84647E4
.incbin "baserom.gba", 0x4647E4, 0x18
diff --git a/data/strings.s b/data/strings.s
index 603bce34f..05bd47c88 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -372,7 +372,7 @@ gUnknown_8416195::
gOtherText_Use::
.string "USE$"
-gUnknown_84161A4::
+gOtherText_Toss::
.string "TOSS$"
gUnknown_84161A9::
@@ -555,25 +555,25 @@ gOtherText_WhereShouldTheStrVar1BePlaced:: @ 841633F
gText_ItemCantBeHeld:: @ 841635E
.string "The {STR_VAR_1} can't be held.$"
-gUnknown_8416374:: @ 8416374
+gText_TheStrVar1CantBeHeldHere:: @ 8416374
.string "The {STR_VAR_1} can't be held\nhere.$"
gUnknown_841638F:: @ 841638F
- .string "Deposit how many\n{STR_VAR_1}シsス?$"
+ .string "Deposit how many\n{STR_VAR_1}(s)?$"
gUnknown_84163A7:: @ 84163A7
- .string "Deposited {STR_VAR_2}\n{STR_VAR_1}シsス.$"
+ .string "Deposited {STR_VAR_2}\n{STR_VAR_1}(s).$"
gUnknown_84163BB:: @ 84163BB
.string "There's no room to\nstore items.$"
-gUnknown_84163DB:: @ 84163DB
- .string "Toss out how many\n{STR_VAR_1}シsス?$"
+gText_TossOutHowManyStrVar1s:: @ 84163DB
+ .string "Toss out how many\n{STR_VAR_1}(s)?$"
-gUnknown_84163F4:: @ 84163F4
- .string "Threw away {STR_VAR_2}\n{STR_VAR_1}シsス.$"
+gText_ThrewAwayStrVar2StrVar1s:: @ 84163F4
+ .string "Threw away {STR_VAR_2}\n{STR_VAR_1}(s).$"
-gUnknown_8416409:: @ 8416409
+gText_ThrowAwayStrVar2OfThisItemQM:: @ 8416409
.string "Throw away {STR_VAR_2} of\nthis item?$"
gUnknown_8416425:: @ 8416425
@@ -654,10 +654,10 @@ gText_FontSize2:: @ 8416703
gUnknown_8416707:: @ 8416707
.string " $"
-gUnknown_841670A:: @ 841670A
+gText_BerryPouch:: @ 841670A
.string "BERRY POUCH$"
-gUnknown_8416716:: @ 8416716
+gText_TheBerryPouchWillBePutAway:: @ 8416716
.string "The BERRY POUCH will be\nput away.$"
gUnknown_8416738:: @ 0x8416738
diff --git a/graphics/berry_pouch/unk_8E8560C.png b/graphics/berry_pouch/unk_8E8560C.png
new file mode 100644
index 000000000..bb714c130
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E8560C.png
Binary files differ
diff --git a/graphics/berry_pouch/unk_8E859D0.png b/graphics/berry_pouch/unk_8E859D0.png
new file mode 100644
index 000000000..094b4ef39
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E859D0.png
Binary files differ
diff --git a/graphics/berry_pouch/unk_8E85BA4.pal b/graphics/berry_pouch/unk_8E85BA4.pal
new file mode 100644
index 000000000..3398ff143
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E85BA4.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 65 90
+255 0 255
+41 57 82
+65 180 164
+255 0 255
+255 0 255
+106 205 197
+164 205 238
+189 238 255
+255 255 205
+180 189 180
+148 148 148
+238 230 172
+106 106 106
+106 156 238
+0 90 131
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+189 213 213
+238 255 255
+222 246 255
+255 255 255
+164 222 255
+16 172 222
+0 82 115
+0 115 139
+0 123 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+189 213 213
+238 255 255
+222 246 255
+255 255 255
+164 222 255
+24 82 180
+0 90 131
+24 82 180
+24 82 180
diff --git a/graphics/berry_pouch/unk_8E85BF4.pal b/graphics/berry_pouch/unk_8E85BF4.pal
new file mode 100644
index 000000000..e7bd18cbf
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E85BF4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 65 90
+255 0 255
+41 57 82
+213 139 115
+255 0 255
+255 0 255
+255 172 148
+164 205 238
+189 238 255
+255 255 205
+180 189 180
+148 148 148
+238 230 172
+106 106 106
+106 156 238
+0 90 131
diff --git a/graphics/berry_pouch/unk_8E85C1C.pal b/graphics/berry_pouch/unk_8E85C1C.pal
new file mode 100644
index 000000000..87d0fc7fb
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E85C1C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+222 222 90
+98 115 123
+255 205 156
+230 189 139
+213 164 115
+189 139 90
+156 82 0
+115 57 0
+197 205 213
+246 115 0
+222 57 0
+230 148 98
+255 172 123
+222 230 230
+49 57 57
+255 255 255
diff --git a/graphics/berry_pouch/unk_8E85C44.bin b/graphics/berry_pouch/unk_8E85C44.bin
new file mode 100644
index 000000000..7c89a8bf0
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E85C44.bin
Binary files differ
diff --git a/include/berry_pouch.h b/include/berry_pouch.h
index 8e652225b..cd9866d81 100644
--- a/include/berry_pouch.h
+++ b/include/berry_pouch.h
@@ -3,10 +3,21 @@
#include "task.h"
+enum BerryPouchType
+{
+ BERRYPOUCH_FROMFIELD,
+ BERRYPOUCH_FROMPARTYGIVE,
+ BERRYPOUCH_FROMMARTSELL,
+ BERRYPOUCH_FROMPOKEMONSTORAGEPC,
+ BERRYPOUCH_FROMBATTLE,
+ BERRYPOUCH_FROMBERRYCRUSH,
+ BERRYPOUCH_NA
+};
+
void BerryPouch_StartFadeToExitCallback(u8 taskId);
-void BerryPouch_SetExitCallback(void (*)(void));
-void InitBerryPouch(u8, void (*)(void), u8);
-void DisplayItemMessageInBerryPouch(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc);
-void sub_813E2B8(u8 taskId);
+void BerryPouch_SetExitCallback(void (*exitCallback)(void));
+void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect);
+void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc);
+void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId);
#endif //GUARD_BERRY_POUCH_H
diff --git a/include/graphics.h b/include/graphics.h
index e8d4f9cee..5e133ee01 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -998,4 +998,12 @@ extern const u16 gCreditsAllRightsReservedGfxPal[];
extern const u8 gCreditsAllRightsReservedGfxTiles[];
extern const u8 gCreditsAllRightsReservedGfxMap[];
+// berry_pouch
+extern const u32 gBerryPouchSpriteTiles[];
+extern const u8 gBerryPouchBgGfx[];
+extern const u32 gBerryPouchBgPals[];
+extern const u32 gBerryPouchBgPal0FemaleOverride[];
+extern const u32 gBerryPouchSpritePalette[];
+extern const u8 gBerryPouchBg1Tilemap[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item.h b/include/item.h
index 0f0adbca8..583a47cdc 100644
--- a/include/item.h
+++ b/include/item.h
@@ -64,18 +64,18 @@ u8 ItemId_GetSecondaryId(u16 itemId);
u16 itemid_get_market_price(u16 itemId);
void ClearItemSlotsInAllBagPockets(void);
void ClearPCItemSlots(void);
-void CopyItemName(u16, u8 *);
void sub_809A824(u16 itemId);
bool8 AddBagItem(u16 itemId, u16 amount);
-void SortPocketAndPlaceHMsFirst(struct BagPocket *);
-u16 BagGetItemIdByPocketPosition(u8 a0, u16 a1);
-u16 BagGetQuantityByPocketPosition(u8 a0, u16 a1);
+void SortPocketAndPlaceHMsFirst(struct BagPocket * pocket);
+u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 itemId);
+u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 itemId);
bool8 itemid_is_unique(u16 itemId);
void BagPocketCompaction(struct ItemSlot * slots, u8 capacity);
u16 GetPcItemQuantity(u16 *);
void ItemPcCompaction(void);
void RemoveItemFromPC(u16 itemId, u16 quantity);
+void SortAndCompactBagPocket(struct BagPocket * pocket);
#endif // GUARD_ITEM_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 7fe8c19b2..6ea771500 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -3,6 +3,7 @@
#include "global.h"
#include "task.h"
+#include "window.h"
struct YesNoFuncTable
{
@@ -22,7 +23,7 @@ void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 palet
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
u8 GetLRKeysState(void);
u8 sub_80BF66C(void);
-bool8 sub_80BF6A8(u16 itemId);
+bool8 itemid_link_can_give_berry(u16 itemId);
bool8 itemid_80BF6D8_mail_related(u16 itemId);
void ClearVramOamPltt(void);
diff --git a/include/party_menu.h b/include/party_menu.h
index cd2a5bc37..bea5dcdde 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -81,5 +81,6 @@ void sub_8127DA8(u8 battlerId, u8 multiplayerFlag);
void OpenPartyMenuInBattle(u8 arg);
void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex);
bool8 IsMultiBattle(void);
+void sub_8126EDC(void);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/strings.h b/include/strings.h
index dfedb4afa..b0221b8e9 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -94,6 +94,7 @@ extern const u8 gText_Pokemon[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gOtherText_Use[];
+extern const u8 gOtherText_Toss[];
extern const u8 gOtherText_Give[];
extern const u8 gOtherText_Exit[];
extern const u8 gText_ThreeHyphens[];
@@ -315,4 +316,12 @@ 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 gText_TheStrVar1CantBeHeldHere[];
+extern const u8 gText_TossOutHowManyStrVar1s[];
+extern const u8 gText_ThrewAwayStrVar2StrVar1s[];
+extern const u8 gText_ThrowAwayStrVar2OfThisItemQM[];
+extern const u8 gText_BerryPouch[];
+extern const u8 gText_TheBerryPouchWillBePutAway[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 97e7171fc..a61f88d14 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -251,7 +251,7 @@ SECTIONS {
src/help_system.o(.text);
asm/wild_pokemon_area.o(.text);
src/dynamic_placeholder_text_util.o(.text);
- asm/berry_pouch.o(.text);
+ src/berry_pouch.o(.text);
asm/itemfinder.o(.text);
src/buy_menu_helpers.o(.text);
src/slot_machine.o(.text);
@@ -466,7 +466,7 @@ SECTIONS {
src/help_system.o(.rodata);
data/wild_pokemon_area.o(.rodata);
src/dynamic_placeholder_text_util.o(.rodata);
- data/berry_pouch.o(.rodata);
+ src/berry_pouch.o(.rodata);
data/itemfinder.o(.rodata);
src/buy_menu_helpers.o(.rodata);
src/slot_machine.o(.rodata);
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
new file mode 100644
index 000000000..525249514
--- /dev/null
+++ b/src/berry_pouch.c
@@ -0,0 +1,1528 @@
+#include "global.h"
+#include "malloc.h"
+#include "bg.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "text.h"
+#include "berry_pouch.h"
+#include "item_menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "scanline_effect.h"
+#include "item_menu_icons.h"
+#include "list_menu.h"
+#include "graphics.h"
+#include "berry.h"
+#include "item.h"
+#include "item_use.h"
+#include "party_menu.h"
+#include "text_window.h"
+#include "strings.h"
+#include "string_util.h"
+#include "sound.h"
+#include "link.h"
+#include "money.h"
+#include "shop.h"
+#include "menu.h"
+#include "menu_indicators.h"
+#include "pokemon_storage_system.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+
+struct BerryPouchStruct_203F36C
+{
+ void (*exitCallback)(void);
+ u16 indicatorOffset;
+ u8 indicatorTaskId;
+ u8 listMenuNumItems;
+ u8 listMenuMaxShowed;
+ u8 itemMenuIconId;
+ u8 ALIGNED(4) bg1TilemapBuffer[BG_SCREEN_SIZE];
+ s16 data[4];
+};
+
+struct BerryPouchStruct_203F370
+{
+ void (*savedCallback)(void);
+ u8 type;
+ u8 allowSelect;
+ u8 unused_06;
+ u16 listMenuSelectedRow;
+ u16 listMenuScrollOffset;
+};
+
+enum
+{
+ BP_ACTION_USE = 0,
+ BP_ACTION_TOSS,
+ BP_ACTION_GIVE,
+ BP_ACTION_EXIT,
+ BP_ACTION_DUMMY
+};
+
+static EWRAM_DATA struct BerryPouchStruct_203F36C *sResources = NULL;
+static EWRAM_DATA struct BerryPouchStruct_203F370 sStaticCnt = {};
+static EWRAM_DATA struct ListMenuItem *sListMenuItems = NULL;
+static EWRAM_DATA u8 * sListMenuStrbuf = NULL;
+static EWRAM_DATA const u8 * sContextMenuOptions = NULL;
+static EWRAM_DATA u8 sContextMenuNumOptions = 0;
+static ALIGNED(4) EWRAM_DATA u8 sVariableWindowIds[14] = {};
+static ALIGNED(4) EWRAM_DATA u8 sBerryPouchSpriteId = 0;
+
+static void CB2_InitBerryPouch(void);
+static bool8 RunBerryPouchInit(void);
+static void AbortBerryPouchLoading(void);
+static void Task_AbortBerryPouchLoading_WaitFade(u8 taskId);
+static void BerryPouchInitBgs(void);
+static bool8 BerryPouchLoadGfx(void);
+static bool8 AllocateListMenuBuffers(void);
+static void SetUpListMenuTemplate(void);
+static void GetBerryNameAndIndexForMenu(u8 * dest, u16 itemId);
+static void BerryPouchMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+static void BerryPouchItemPrintFunc(u8 windowId, s32 itemId, u8 y);
+static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx);
+static void PrintSelectedBerryDescription(s32 itemIndex);
+static void CreateScrollIndicatorArrows_BerryPouchList(void);
+static void PrintBerryPouchHeaderCentered(void);
+static void SanitizeListMenuSelectionParams(void);
+static void UpdateListMenuScrollOffset(void);
+static void BerryPouch_DestroyResources(void);
+static void Task_BerryPouchFadeToExitCallback(u8 taskId);
+static void SortAndCountBerries(void);
+static void Task_BerryPouchMain(u8 taskId);
+static void Task_NormalContextMenu(u8 taskId);
+static void Task_NormalContextMenu_HandleInput(u8 taskId);
+static void Task_BerryPouch_Use(u8 taskId);
+static void Task_BerryPouch_Toss(u8 taskId);
+static void Task_AskTossMultiple(u8 taskId);
+static void Task_TossNo(u8 taskId);
+static void Task_Toss_SelectMultiple(u8 taskId);
+static void Task_TossYes(u8 taskId);
+static void Task_WaitButtonThenTossBerries(u8 taskId);
+static void Task_BerryPouch_Give(u8 taskId);
+static void Task_Give_PrintThereIsNoPokemon(u8 taskId);
+static void Task_WaitButtonBeforeDialogueWindowDestruction(u8 taskId);
+static void Task_BerryPouch_Exit(u8 taskId);
+static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId);
+static void Task_ContextMenu_FromPokemonPC(u8 taskId);
+static void Task_ContextMenu_Sell(u8 taskId);
+static void Task_AskSellMultiple(u8 taskId);
+static void Task_SellMultiple_CreateYesNoMenu(u8 taskId);
+static void Task_SellNo(u8 taskId);
+static void Task_Sell_PrintSelectMultipleUI(u8 taskId);
+static void SellMultiple_UpdateSellPriceDisplay(s32 price);
+static void Task_Sell_SelectMultiple(u8 taskId);
+static void Task_SellYes(u8 taskId);
+static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId);
+static void Task_SellBerries_WaitButton(u8 taskId);
+static void BerryPouchInitWindows(void);
+static void BerryPouchPrint(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
+static u8 GetOrCreateVariableWindow(u8 winIdx);
+static void DestroyVariableWindow(u8 winIdx);
+static void TryDestroyVariableWindow(u8 winIdx);
+static u8 GetVariableWindowId(u8 winIdx);
+static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable *ptrs);
+static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable *ptrs);
+static void PrintMoneyInWin2(void);
+static void CreateBerryPouchSprite(void);
+static void StartBerryPouchSpriteWobbleAnim(void);
+static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite *sprite);
+
+static const struct BgTemplate sBgTemplates[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }
+};
+
+static const TaskFunc sBerryPouchContextMenuTasks[] = {
+ Task_NormalContextMenu,
+ Task_ContextMenu_FromPartyGiveMenu,
+ Task_ContextMenu_Sell,
+ Task_ContextMenu_FromPokemonPC,
+ Task_NormalContextMenu
+};
+
+static const struct YesNoFuncTable sYesNoFuncs_Toss = {
+ .yesFunc = Task_TossYes,
+ .noFunc = Task_TossNo
+};
+
+static const struct YesNoFuncTable sYesNoFuncs_Sell = {
+ .yesFunc = Task_SellYes,
+ .noFunc = Task_SellNo
+};
+
+static const struct MenuAction sContextMenuActions[] = {
+ {gOtherText_Use, Task_BerryPouch_Use},
+ {gOtherText_Toss, Task_BerryPouch_Toss},
+ {gOtherText_Give, Task_BerryPouch_Give},
+ {gOtherText_Exit, Task_BerryPouch_Exit},
+ {gString_Dummy, NULL}
+};
+
+static const u8 sOptions_UseGiveTossExit[] = {
+ BP_ACTION_USE,
+ BP_ACTION_GIVE,
+ BP_ACTION_TOSS,
+ BP_ACTION_EXIT
+};
+
+static const u8 sOptions_GiveExit[] = {
+ BP_ACTION_GIVE,
+ BP_ACTION_EXIT,
+ BP_ACTION_DUMMY,
+ BP_ACTION_DUMMY
+};
+
+static const u8 sOptions_Exit[] = {
+ BP_ACTION_EXIT,
+ BP_ACTION_DUMMY,
+ BP_ACTION_DUMMY,
+ BP_ACTION_DUMMY
+};
+
+static const u8 sOptions_UseToss_Exit[] = {
+ BP_ACTION_USE,
+ BP_ACTION_TOSS,
+ BP_ACTION_EXIT,
+ BP_ACTION_DUMMY
+};
+
+static const u8 sText_Space[] = _(" ");
+
+static const struct WindowTemplate sWindowTemplates_Main[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 11,
+ .tilemapTop = 1,
+ .width = 18,
+ .height = 14,
+ .paletteNum = 15,
+ .baseBlock = 0x027
+ }, {
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 16,
+ .width = 25,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x123
+ }, {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 9,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x187
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sWindowTemplates_Variable[] = {
+ {
+ .bg = 0x02,
+ .tilemapLeft = 0x18,
+ .tilemapTop = 0x0f,
+ .width = 0x05,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x1d1
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x11,
+ .tilemapTop = 0x09,
+ .width = 0x0c,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x1d1
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x01,
+ .width = 0x08,
+ .height = 0x03,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x201
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x17,
+ .tilemapTop = 0x0f,
+ .width = 0x06,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x219
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x15,
+ .tilemapTop = 0x09,
+ .width = 0x06,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x219
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x02,
+ .tilemapTop = 0x0f,
+ .width = 0x1a,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x231
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x0e,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x231
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x0f,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x269
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x10,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x2a5
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x17,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x2e5
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x11,
+ .width = 0x07,
+ .height = 0x02,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x199
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0f,
+ .width = 0x07,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x199
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0d,
+ .width = 0x07,
+ .height = 0x06,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x199
+ }, {
+ .bg = 0x02,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0b,
+ .width = 0x07,
+ .height = 0x08,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x199
+ }
+};
+
+static const u8 sTextColors[][3] = {
+ { 0, 1, 2 },
+ { 0, 2, 3 },
+ { 0, 3, 2 }
+};
+
+static const struct OamData sOamData = {
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = ST_OAM_SIZE_3,
+ .priority = 1
+};
+
+static const union AnimCmd sSpriteAnim_Dummy[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable[] = {
+ sSpriteAnim_Dummy
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_Static[] = {
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_Wobble[] = {
+ AFFINEANIMCMD_FRAME(0, 0, -2, 2),
+ AFFINEANIMCMD_FRAME(0, 0, 2, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -2, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 2, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable[] = {
+ sSpriteAffineAnim_Static,
+ sSpriteAffineAnim_Wobble
+};
+
+static const struct CompressedSpriteSheet sBerryPouchSpriteSheet = {
+ gBerryPouchSpriteTiles, 0x800, 100
+};
+
+static const struct CompressedSpritePalette sBerryPouchSpritePal = {
+ gBerryPouchSpritePalette, 100
+};
+
+static const struct SpriteTemplate sSpriteTemplate_BerryPouch = {
+ 100, 100, &sOamData, sSpriteAnimTable, NULL, sSpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect)
+{
+ u8 i;
+
+ sResources = Alloc(sizeof(struct BerryPouchStruct_203F36C));
+ if (sResources == NULL)
+ {
+ SetMainCallback2(savedCallback);
+ }
+ else
+ {
+ if (type != BERRYPOUCH_NA)
+ sStaticCnt.type = type;
+ if (allowSelect != 0xFF)
+ sStaticCnt.allowSelect = allowSelect;
+ if (savedCallback != NULL)
+ sStaticCnt.savedCallback = savedCallback;
+ sResources->exitCallback = NULL;
+ sResources->itemMenuIconId = 0;
+ sResources->indicatorTaskId = 0xFF;
+ for (i = 0; i < 4; i++)
+ sResources->data[i] = 0;
+ gTextFlags.autoScroll = FALSE;
+ gSpecialVar_ItemId = ITEM_NONE;
+ SetMainCallback2(CB2_InitBerryPouch);
+ }
+}
+
+static void CB2_BerryPouchIdle(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ DoScheduledBgTilemapCopiesToVram();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_BerryPouchIdle(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_InitBerryPouch(void)
+{
+ while (1)
+ {
+ if (sub_80BF72C() == TRUE)
+ break;
+ if (RunBerryPouchInit() == TRUE)
+ break;
+ if (MenuHelpers_LinkSomething() == TRUE)
+ break;
+ }
+}
+
+static bool8 RunBerryPouchInit(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ ClearScheduledBgCopiesToVram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 3:
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 4:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 5:
+ ResetItemMenuIconState();
+ gMain.state++;
+ break;
+ case 6:
+ if (!MenuHelpers_LinkSomething())
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 7:
+ BerryPouchInitBgs();
+ sResources->data[0] = 0;
+ gMain.state++;
+ break;
+ case 8:
+ if (BerryPouchLoadGfx())
+ gMain.state++;
+ break;
+ case 9:
+ BerryPouchInitWindows();
+ gMain.state++;
+ break;
+ case 10:
+ SortAndCountBerries();
+ SanitizeListMenuSelectionParams();
+ UpdateListMenuScrollOffset();
+ gMain.state++;
+ break;
+ case 11:
+ if (!AllocateListMenuBuffers())
+ {
+ AbortBerryPouchLoading();
+ return TRUE;
+ }
+ gMain.state++;
+ break;
+ case 12:
+ SetUpListMenuTemplate();
+ gMain.state++;
+ break;
+ case 13:
+ PrintBerryPouchHeaderCentered();
+ gMain.state++;
+ break;
+ case 14:
+ taskId = CreateTask(Task_BerryPouchMain, 0);
+ gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow);
+ gTasks[taskId].data[8] = 0;
+ gMain.state++;
+ break;
+ case 15:
+ CreateBerryPouchSprite();
+ gMain.state++;
+ break;
+ case 16:
+ CreateScrollIndicatorArrows_BerryPouchList();
+ gMain.state++;
+ break;
+ case 17:
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ gMain.state++;
+ break;
+ case 18:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(VBlankCB_BerryPouchIdle);
+ SetMainCallback2(CB2_BerryPouchIdle);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void AbortBerryPouchLoading(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ CreateTask(Task_AbortBerryPouchLoading_WaitFade, 0);
+ SetVBlankCallback(VBlankCB_BerryPouchIdle);
+ SetMainCallback2(CB2_BerryPouchIdle);
+}
+
+static void Task_AbortBerryPouchLoading_WaitFade(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sStaticCnt.savedCallback);
+ BerryPouch_DestroyResources();
+ DestroyTask(taskId);
+ }
+}
+
+static void BerryPouchInitBgs(void)
+{
+ ResetAllBgsCoordinatesAndBgCntRegs();
+ memset(sResources->bg1TilemapBuffer, 0, BG_SCREEN_SIZE);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
+ SetBgTilemapBuffer(1, sResources->bg1TilemapBuffer);
+ ScheduleBgCopyTilemapToVram(1);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+}
+
+static bool8 BerryPouchLoadGfx(void)
+{
+ switch (sResources->data[0])
+ {
+ case 0:
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gBerryPouchBgGfx, 0, 0, 0);
+ sResources->data[0]++;
+ break;
+ case 1:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ LZDecompressWram(gBerryPouchBg1Tilemap, sResources->bg1TilemapBuffer);
+ sResources->data[0]++;
+ }
+ break;
+ case 2:
+ LoadCompressedPalette(gBerryPouchBgPals, 0, 0x60);
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ LoadCompressedPalette(gBerryPouchBgPal0FemaleOverride, 0, 0x20);
+ sResources->data[0]++;
+ break;
+ case 3:
+ LoadCompressedSpriteSheet(&sBerryPouchSpriteSheet);
+ sResources->data[0]++;
+ break;
+ default:
+ LoadCompressedSpritePalette(&sBerryPouchSpritePal);
+ sResources->data[0] = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 AllocateListMenuBuffers(void)
+{
+ sListMenuItems = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem));
+ if (sListMenuItems == NULL)
+ return FALSE;
+ sListMenuStrbuf = Alloc(sResources->listMenuNumItems * 27);
+ if (sListMenuStrbuf == NULL)
+ return FALSE;
+ return TRUE;
+}
+
+static void SetUpListMenuTemplate(void)
+{
+ u16 i;
+ struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1];
+ for (i = 0; i < sResources->listMenuNumItems; i++)
+ {
+ GetBerryNameAndIndexForMenu(&sListMenuStrbuf[i * 27], pocket->itemSlots[i].itemId);
+ sListMenuItems[i].label = &sListMenuStrbuf[i * 27];
+ sListMenuItems[i].index = i;
+ }
+ sListMenuItems[i].label = gText_Close;
+ sListMenuItems[i].index = i;
+ gMultiuseListMenuTemplate.items = sListMenuItems;
+ if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH)
+ gMultiuseListMenuTemplate.totalItems = sResources->listMenuNumItems + 1;
+ else
+ gMultiuseListMenuTemplate.totalItems = sResources->listMenuNumItems;
+ 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 = sResources->listMenuMaxShowed;
+ gMultiuseListMenuTemplate.fontId = 2;
+ gMultiuseListMenuTemplate.cursorPal = 2;
+ gMultiuseListMenuTemplate.fillValue = 0;
+ gMultiuseListMenuTemplate.cursorShadowPal = 3;
+ gMultiuseListMenuTemplate.moveCursorFunc = BerryPouchMoveCursorFunc;
+ gMultiuseListMenuTemplate.itemPrintFunc = BerryPouchItemPrintFunc;
+ gMultiuseListMenuTemplate.cursorKind = 0;
+ gMultiuseListMenuTemplate.scrollMultiple = 0;
+}
+
+static void GetBerryNameAndIndexForMenu(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, sText_Space);
+ StringAppend(gStringVar4, gText_FontSize2);
+ StringAppend(gStringVar4, gStringVar1);
+ StringCopy(dest, gStringVar4);
+}
+
+static void CopySelectedListMenuItemName(s16 itemIdx, u8 * dest)
+{
+ StringCopy(dest, &sListMenuStrbuf[itemIdx * 27]);
+}
+
+static void BerryPouchMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (onInit != TRUE)
+ {
+ PlaySE(SE_W287B);
+ StartBerryPouchSpriteWobbleAnim();
+ }
+ DestroyItemMenuIcon(sResources->itemMenuIconId ^ 1);
+ if (sResources->listMenuNumItems != itemIndex)
+ sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), sResources->itemMenuIconId);
+ else
+ sub_80989A0(ITEM_N_A, sResources->itemMenuIconId);
+ sResources->itemMenuIconId ^= 1;
+ PrintSelectedBerryDescription(itemIndex);
+}
+
+static void BerryPouchItemPrintFunc(u8 windowId, s32 itemId, u8 y)
+{
+ u16 unused;
+ u16 itemQuantity;
+ if (itemId != -2 && sResources->listMenuNumItems != 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);
+ BerryPouchPrint(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1);
+ }
+}
+
+static void BerryPouchSetArrowCursorFromListMenu(u8 taskId, u8 colorIdx)
+{
+ BerryPouchSetArrowCursorAt(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx);
+}
+
+static void BerryPouchSetArrowCursorAt(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
+ {
+ BerryPouchPrint(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx);
+ }
+}
+
+static void PrintSelectedBerryDescription(s32 itemIdx)
+{
+ const u8 * str;
+ if (itemIdx != sResources->listMenuNumItems)
+ str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIdx));
+ else
+ str = gText_TheBerryPouchWillBePutAway;
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ BerryPouchPrint(1, 2, str, 0, 2, 2, 0, 0, 0);
+}
+
+static void SetDescriptionWindowBorderPalette(s32 pal)
+{
+ SetBgRectPal(1, 0, 16, 30, 4, pal + 1);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+static void CreateScrollIndicatorArrows_BerryPouchList(void)
+{
+ if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH)
+ sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, sResources->listMenuNumItems - sResources->listMenuMaxShowed + 1, 110, 110, &sStaticCnt.listMenuScrollOffset);
+ else
+ sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, sResources->listMenuNumItems - sResources->listMenuMaxShowed, 110, 110, &sStaticCnt.listMenuScrollOffset);
+}
+
+static void CreateScrollIndicatorArrows_TossQuantity(void)
+{
+ sResources->indicatorOffset = 1;
+ sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &sResources->indicatorOffset);
+}
+
+static void CreateScrollIndicatorArrows_SellQuantity(void)
+{
+ sResources->indicatorOffset = 1;
+ sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 152, 72, 104, 2, 110, 110, &sResources->indicatorOffset);
+}
+
+static void DestroyScrollIndicatorArrows(void)
+{
+ if (sResources->indicatorTaskId != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sResources->indicatorTaskId);
+ sResources->indicatorTaskId = 0xFF;
+ }
+}
+
+static void PrintBerryPouchHeaderCentered(void)
+{
+ u32 slack = 72 - GetStringWidth(1, gText_BerryPouch, 0);
+ BerryPouchPrint(2, 1, gText_BerryPouch, slack / 2, 1, 0, 0, 0, 0);
+}
+
+void BerryPouch_CursorResetToTop(void)
+{
+ sStaticCnt.listMenuSelectedRow = 0;
+ sStaticCnt.listMenuScrollOffset = 0;
+}
+
+static void SanitizeListMenuSelectionParams(void)
+{
+ s32 r2;
+ if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH)
+ r2 = sResources->listMenuNumItems + 1;
+ else
+ r2 = sResources->listMenuNumItems;
+ if (sStaticCnt.listMenuScrollOffset != 0 && sStaticCnt.listMenuScrollOffset + sResources->listMenuMaxShowed > r2)
+ sStaticCnt.listMenuScrollOffset = r2 - sResources->listMenuMaxShowed;
+ if (sStaticCnt.listMenuScrollOffset + sStaticCnt.listMenuSelectedRow >= r2)
+ {
+ if (r2 == 0 || r2 == 1)
+ sStaticCnt.listMenuSelectedRow = 0;
+ else
+ sStaticCnt.listMenuSelectedRow = r2 - 1;
+ }
+}
+
+static void UpdateListMenuScrollOffset(void)
+{
+ u8 lim;
+ u8 i;
+ if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH)
+ lim = sResources->listMenuNumItems + 1;
+ else
+ lim = sResources->listMenuNumItems;
+ if (sStaticCnt.listMenuSelectedRow > 4)
+ {
+ for (i = 0; i <= sStaticCnt.listMenuSelectedRow - 4; sStaticCnt.listMenuSelectedRow--, sStaticCnt.listMenuScrollOffset++, i++)
+ {
+ if (sStaticCnt.listMenuScrollOffset + sResources->listMenuMaxShowed == lim)
+ break;
+ }
+ }
+}
+
+static void BerryPouch_DestroyResources(void)
+{
+ if (sResources != NULL)
+ Free(sResources);
+ if (sListMenuItems != NULL)
+ Free(sListMenuItems);
+ if (sListMenuStrbuf != NULL)
+ Free(sListMenuStrbuf);
+ FreeAllWindowBuffers();
+}
+
+void BerryPouch_StartFadeToExitCallback(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_BerryPouchFadeToExitCallback;
+}
+
+static void Task_BerryPouchFadeToExitCallback(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
+ if (sResources->exitCallback != NULL)
+ SetMainCallback2(sResources->exitCallback);
+ else
+ SetMainCallback2(sStaticCnt.savedCallback);
+ DestroyScrollIndicatorArrows();
+ BerryPouch_DestroyResources();
+ DestroyTask(taskId);
+ }
+}
+
+static void SortAndCountBerries(void)
+{
+ u16 i;
+ u32 r2;
+ struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1];
+ SortAndCompactBagPocket(pocket);
+ sResources->listMenuNumItems = 0;
+ for (i = 0; i < pocket->capacity; i++)
+ {
+ if (pocket->itemSlots[i].itemId == ITEM_NONE)
+ break;
+ sResources->listMenuNumItems++;
+ }
+ if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH)
+ r2 = sResources->listMenuNumItems + 1;
+ else
+ r2 = sResources->listMenuNumItems;
+ if (r2 > 7)
+ sResources->listMenuMaxShowed = 7;
+ else
+ sResources->listMenuMaxShowed = r2;
+}
+
+void BerryPouch_SetExitCallback(void (*callback)(void))
+{
+ sResources->exitCallback = callback;
+}
+
+void InitTossQuantitySelectUI(u8 taskId, const u8 * str)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 windowId = GetOrCreateVariableWindow(8);
+ u8 windowId2;
+ CopySelectedListMenuItemName(data[1], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, str);
+ BerryPouchPrint(windowId, 2, gStringVar4, 0, 2, 1, 2, 0, 1);
+ windowId2 = GetOrCreateVariableWindow(0);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ BerryPouchPrint(windowId2, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+}
+
+static void PrintxQuantityOnWindow(u8 whichWindow, s16 quantity, u8 ndigits)
+{
+ u8 windowId = GetVariableWindowId(whichWindow);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, ndigits);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ BerryPouchPrint(windowId, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+}
+
+static void Task_BerryPouchMain(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s32 menuInput;
+ if (!gPaletteFade.active && sub_80BF72C() != TRUE)
+ {
+ menuInput = ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
+ if (JOY_NEW(SELECT_BUTTON) && sStaticCnt.allowSelect == 1)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = 0;
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ switch (menuInput)
+ {
+ case -1:
+ return;
+ case -2:
+ if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = 0;
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ if (sStaticCnt.type == BERRYPOUCH_FROMBERRYCRUSH)
+ {
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput);
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else if (menuInput == sResources->listMenuNumItems)
+ {
+ gSpecialVar_ItemId = 0;
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ DestroyScrollIndicatorArrows();
+ SetDescriptionWindowBorderPalette(1);
+ BerryPouchSetArrowCursorFromListMenu(data[0], 2);
+ data[1] = menuInput;
+ data[2] = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, menuInput);
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput);
+ gTasks[taskId].func = sBerryPouchContextMenuTasks[sStaticCnt.type];
+ }
+ break;
+ }
+ }
+ }
+}
+
+static void Task_CleanUpAndReturnToMain(u8 taskId)
+{
+ SetDescriptionWindowBorderPalette(0);
+ CreateScrollIndicatorArrows_BerryPouchList();
+ gTasks[taskId].func = Task_BerryPouchMain;
+}
+
+static void CreateNormalContextMenu(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 windowId;
+ u8 windowId2;
+
+ if (sStaticCnt.type == BERRYPOUCH_FROMBATTLE)
+ {
+ sContextMenuOptions = sOptions_UseToss_Exit;
+ sContextMenuNumOptions = 3;
+ }
+ else if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE)
+ {
+ if (!itemid_link_can_give_berry(gSpecialVar_ItemId))
+ {
+ sContextMenuOptions = sOptions_Exit;
+ sContextMenuNumOptions = 1;
+ }
+ else
+ {
+ sContextMenuOptions = sOptions_GiveExit;
+ sContextMenuNumOptions = 2;
+ }
+ }
+ else
+ {
+ sContextMenuOptions = sOptions_UseGiveTossExit;
+ sContextMenuNumOptions = 4;
+ }
+ windowId = GetOrCreateVariableWindow(sContextMenuNumOptions + 9);
+ AddItemMenuActionTextPrinters(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumOptions, sContextMenuActions, sContextMenuOptions);
+ Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumOptions, 0);
+ windowId2 = GetOrCreateVariableWindow(6);
+ CopySelectedListMenuItemName(data[1], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
+ BerryPouchPrint(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1);
+}
+
+static void Task_NormalContextMenu(u8 taskId)
+{
+ CreateNormalContextMenu(taskId);
+ gTasks[taskId].func = Task_NormalContextMenu_HandleInput;
+}
+
+static void Task_NormalContextMenu_HandleInput(u8 taskId)
+{
+ s8 input;
+ if (sub_80BF72C() != TRUE)
+ {
+ input = Menu_ProcessInputNoWrapAround();
+ switch (input)
+ {
+ case -2:
+ break;
+ case -1:
+ PlaySE(SE_SELECT);
+ sContextMenuActions[BP_ACTION_EXIT].func.void_u8(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sContextMenuActions[sContextMenuOptions[input]].func.void_u8(taskId);
+ break;
+ }
+ }
+}
+
+static void Task_BerryPouch_Use(u8 taskId)
+{
+ DestroyVariableWindow(sContextMenuNumOptions + 9);
+ DestroyVariableWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ if (sStaticCnt.type == BERRYPOUCH_FROMBATTLE)
+ {
+ if (ItemId_GetBattleFunc(gSpecialVar_ItemId) == NULL)
+ FieldUseFunc_OakStopsYou(taskId);
+ else
+ ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId);
+ }
+ else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1)
+ Task_Give_PrintThereIsNoPokemon(taskId);
+ else
+ ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
+}
+
+static void Task_BerryPouch_Toss(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ ClearWindowTilemap(GetVariableWindowId(sContextMenuNumOptions + 9));
+ ClearWindowTilemap(GetVariableWindowId(6));
+ DestroyVariableWindow(sContextMenuNumOptions + 9);
+ DestroyVariableWindow(6);
+ PutWindowTilemap(0);
+ data[8] = 1;
+ if (data[2] == 1)
+ Task_AskTossMultiple(taskId);
+ else
+ {
+ InitTossQuantitySelectUI(taskId, gText_TossOutHowManyStrVar1s);
+ CreateScrollIndicatorArrows_TossQuantity();
+ gTasks[taskId].func = Task_Toss_SelectMultiple;
+ }
+}
+
+static void Task_AskTossMultiple(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_ThrowAwayStrVar2OfThisItemQM);
+ BerryPouchPrint(GetOrCreateVariableWindow(7), 2, gStringVar4, 0, 2, 1, 2, 0, 1);
+ CreateYesNoMenuWin3(taskId, &sYesNoFuncs_Toss);
+}
+
+static void Task_TossNo(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ DestroyVariableWindow(7);
+ PutWindowTilemap(1);
+ PutWindowTilemap(0);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ BerryPouchSetArrowCursorFromListMenu(data[0], 1);
+ Task_CleanUpAndReturnToMain(taskId);
+}
+
+static void Task_Toss_SelectMultiple(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ PrintxQuantityOnWindow(0, data[8], 3);
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ ClearWindowTilemap(GetVariableWindowId(8));
+ DestroyVariableWindow(8);
+ DestroyVariableWindow(0);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ DestroyScrollIndicatorArrows();
+ Task_AskTossMultiple(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ DestroyVariableWindow(8);
+ DestroyVariableWindow(0);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ BerryPouchSetArrowCursorFromListMenu(data[0], 1);
+ DestroyScrollIndicatorArrows();
+ Task_CleanUpAndReturnToMain(taskId);
+ }
+}
+
+static void Task_TossYes(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ DestroyVariableWindow(7);
+ CopySelectedListMenuItemName(data[1], gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_ThrewAwayStrVar2StrVar1s);
+ BerryPouchPrint(GetOrCreateVariableWindow(9), 2, gStringVar4, 0, 2, 1, 2, 0, 1);
+ gTasks[taskId].func = Task_WaitButtonThenTossBerries;
+}
+
+static void Task_WaitButtonThenTossBerries(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ RemoveBagItem(gSpecialVar_ItemId, data[8]);
+ DestroyVariableWindow(9);
+ DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
+ SortAndCountBerries();
+ SanitizeListMenuSelectionParams();
+ SetUpListMenuTemplate();
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ BerryPouchSetArrowCursorFromListMenu(data[0], 1);
+ Task_CleanUpAndReturnToMain(taskId);
+ }
+}
+
+static void Task_BerryPouch_Give(u8 taskId)
+{
+ DestroyVariableWindow(sContextMenuNumOptions + 9);
+ DestroyVariableWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ if (CalculatePlayerPartyCount() == 0)
+ Task_Give_PrintThereIsNoPokemon(taskId);
+ else
+ {
+ sResources->exitCallback = sub_8126EDC;
+ gTasks[taskId].func = BerryPouch_StartFadeToExitCallback;
+ }
+}
+
+static void Task_Give_PrintThereIsNoPokemon(u8 taskId)
+{
+ DisplayItemMessageInBerryPouch(taskId, 2, gText_ThereIsNoPokemon, Task_WaitButtonBeforeDialogueWindowDestruction);
+}
+
+static void Task_WaitButtonBeforeDialogueWindowDestruction(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(taskId);
+ }
+}
+
+void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ TryDestroyVariableWindow(5);
+ DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
+ SortAndCountBerries();
+ SanitizeListMenuSelectionParams();
+ SetUpListMenuTemplate();
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow);
+ ScheduleBgCopyTilemapToVram(0);
+ BerryPouchSetArrowCursorFromListMenu(data[0], 1);
+ Task_CleanUpAndReturnToMain(taskId);
+}
+
+static void Task_BerryPouch_Exit(u8 taskId)
+{
+ DestroyVariableWindow(sContextMenuNumOptions + 9);
+ DestroyVariableWindow(6);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ BerryPouchSetArrowCursorFromListMenu(gTasks[taskId].data[0], 1);
+ Task_CleanUpAndReturnToMain(taskId);
+}
+
+static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1]);
+ if (!itemid_link_can_give_berry(itemId))
+ {
+ CopyItemName(itemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_TheStrVar1CantBeHeldHere);
+ DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, Task_WaitButtonBeforeDialogueWindowDestruction);
+ }
+ else
+ {
+ sResources->exitCallback = c2_8123744;
+ gTasks[taskId].func = BerryPouch_StartFadeToExitCallback;
+ }
+}
+
+static void Task_ContextMenu_FromPokemonPC(u8 taskId)
+{
+ sResources->exitCallback = sub_808CE60;
+ gTasks[taskId].func = BerryPouch_StartFadeToExitCallback;
+}
+
+static void Task_ContextMenu_Sell(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (itemid_get_market_price(gSpecialVar_ItemId) == 0)
+ {
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat);
+ DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu);
+ }
+ else
+ {
+ data[8] = 1;
+ if (data[2] == 1)
+ {
+ PrintMoneyInWin2();
+ Task_AskSellMultiple(taskId);
+ }
+ else
+ {
+ if (data[2] > 99)
+ data[2] = 99;
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell);
+ DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_Sell_PrintSelectMultipleUI);
+ }
+ }
+}
+
+static void Task_AskSellMultiple(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay);
+ DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_SellMultiple_CreateYesNoMenu);
+}
+
+static void Task_SellMultiple_CreateYesNoMenu(u8 taskId)
+{
+ CreateYesNoMenuWin4(taskId, &sYesNoFuncs_Sell);
+}
+
+static void Task_SellNo(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ DestroyVariableWindow(2);
+ TryDestroyVariableWindow(5);
+ PutWindowTilemap(2);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ BerryPouchSetArrowCursorFromListMenu(data[0], 1);
+ Task_CleanUpAndReturnToMain(taskId);
+}
+
+static void Task_Sell_PrintSelectMultipleUI(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 windowId = GetOrCreateVariableWindow(1);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ BerryPouchPrint(windowId, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1);
+ SellMultiple_UpdateSellPriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]);
+ PrintMoneyInWin2();
+ CreateScrollIndicatorArrows_SellQuantity();
+ gTasks[taskId].func = Task_Sell_SelectMultiple;
+}
+
+static void SellMultiple_UpdateSellPriceDisplay(s32 price)
+{
+ PrintMoneyAmount(GetVariableWindowId(1), 56, 10, price, 0);
+}
+
+static void Task_Sell_SelectMultiple(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ {
+ PrintxQuantityOnWindow(1, data[8], 2);
+ SellMultiple_UpdateSellPriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]);
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ DestroyVariableWindow(1);
+ PutWindowTilemap(0);
+ ScheduleBgCopyTilemapToVram(0);
+ DestroyScrollIndicatorArrows();
+ Task_AskSellMultiple(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ DestroyVariableWindow(1);
+ DestroyVariableWindow(2);
+ TryDestroyVariableWindow(5);
+ PutWindowTilemap(2);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ DestroyScrollIndicatorArrows();
+ BerryPouchSetArrowCursorFromListMenu(data[0], 1);
+ Task_CleanUpAndReturnToMain(taskId);
+ }
+}
+
+static void Task_SellYes(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ PutWindowTilemap(0);
+ ScheduleBgCopyTilemapToVram(0);
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen);
+ DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, Task_SellBerries_PlaySfxAndRemoveBerries);
+}
+
+static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ PlaySE(SE_CASHIER);
+ RemoveBagItem(gSpecialVar_ItemId, data[8]);
+ AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
+ sub_809C09C(gSpecialVar_ItemId, data[8], 2);
+ DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
+ SortAndCountBerries();
+ SanitizeListMenuSelectionParams();
+ SetUpListMenuTemplate();
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow);
+ BerryPouchSetArrowCursorFromListMenu(data[0], 2);
+ PrintMoneyAmountInMoneyBox(GetVariableWindowId(2), GetMoney(&gSaveBlock1Ptr->money), 0);
+ gTasks[taskId].func = Task_SellBerries_WaitButton;
+}
+
+static void Task_SellBerries_WaitButton(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ DestroyVariableWindow(2);
+ PutWindowTilemap(2);
+ Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(taskId);
+ }
+}
+
+static void BerryPouchInitWindows(void)
+{
+ u8 i;
+ InitWindows(sWindowTemplates_Main);
+ DeactivateAllTextPrinters();
+ TextWindow_SetUserSelectedFrame(0, 0x001, 0xE0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x013, 0xD0);
+ TextWindow_SetStdFrame0_WithPal(0, 0x00A, 0xC0);
+ LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20);
+ for (i = 0; i < 3; i++)
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(2);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ for (i = 0; i < 14; i++)
+ sVariableWindowIds[i] = 0xFF;
+}
+
+static void BerryPouchPrint(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
+{
+ AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, sTextColors[colorIdx], speed, str);
+}
+
+static u8 GetOrCreateVariableWindow(u8 winIdx)
+{
+ u8 retval = sVariableWindowIds[winIdx];
+ if (retval == 0xFF)
+ {
+ sVariableWindowIds[winIdx] = AddWindow(&sWindowTemplates_Variable[winIdx]);
+ if (winIdx == 2 || winIdx == 6 || winIdx == 7 || winIdx == 8 || winIdx == 9)
+ DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x00A, 0xC);
+ else
+ DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x001, 0xE);
+ ScheduleBgCopyTilemapToVram(2);
+ retval = sVariableWindowIds[winIdx];
+ }
+ return retval;
+}
+
+static void VariableWindowSetAltFrameTileAndPalette(u8 winIdx)
+{
+ DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x001, 0xE);
+}
+
+static void DestroyVariableWindow(u8 winIdx)
+{
+ ClearStdWindowAndFrameToTransparent(sVariableWindowIds[winIdx], FALSE);
+ ClearWindowTilemap(sVariableWindowIds[winIdx]);
+ RemoveWindow(sVariableWindowIds[winIdx]);
+ ScheduleBgCopyTilemapToVram(2);
+ sVariableWindowIds[winIdx] = 0xFF;
+}
+
+static void TryDestroyVariableWindow(u8 winIdx)
+{
+ if (sVariableWindowIds[winIdx] != 0xFF)
+ {
+ ClearDialogWindowAndFrameToTransparent(sVariableWindowIds[winIdx], FALSE);
+ ClearWindowTilemap(sVariableWindowIds[winIdx]);
+ RemoveWindow(sVariableWindowIds[winIdx]);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(2);
+ sVariableWindowIds[winIdx] = 0xFF;
+ }
+}
+
+static u8 GetVariableWindowId(u8 winIdx)
+{
+ return sVariableWindowIds[winIdx];
+}
+
+void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc)
+{
+ if (sVariableWindowIds[5] == 0xFF)
+ sVariableWindowIds[5] = AddWindow(&sWindowTemplates_Variable[5]);
+ DisplayMessageAndContinueTask(taskId, sVariableWindowIds[5], 0x013, 0xD, fontId, GetTextSpeedSetting(), str, followUpFunc);
+ ScheduleBgCopyTilemapToVram(2);
+}
+
+static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable *ptrs)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[3], 2, 0, 2, 0x001, 0xE, ptrs);
+}
+
+static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable *ptrs)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[4], 2, 0, 2, 0x001, 0xE, ptrs);
+}
+
+static void PrintMoneyInWin2(void)
+{
+ PrintMoneyAmountInMoneyBoxWithBorder(GetOrCreateVariableWindow(2), 0x00A, 0xC, GetMoney(&gSaveBlock1Ptr->money));
+}
+
+static void CreateBerryPouchSprite(void)
+{
+ sBerryPouchSpriteId = CreateSprite(&sSpriteTemplate_BerryPouch, 40, 76, 0);
+}
+
+static void StartBerryPouchSpriteWobbleAnim(void)
+{
+ struct Sprite *sprite = &gSprites[sBerryPouchSpriteId];
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = SpriteCB_BerryPouchWaitWobbleAnim;
+ }
+}
+
+static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
diff --git a/src/item_use.c b/src/item_use.c
index 3653a1699..5fa9390c1 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -435,7 +435,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
void InitBerryPouchFromBag(void)
{
- InitBerryPouch(0, ReturnToBagFromKeyItem, 0);
+ InitBerryPouch(BERRYPOUCH_FROMFIELD, ReturnToBagFromKeyItem, 0);
}
void Task_InitBerryPouchFromField(u8 taskId)
@@ -444,7 +444,7 @@ void Task_InitBerryPouchFromField(u8 taskId)
{
CleanupOverworldWindowsAndTilemaps();
sub_80A1184();
- InitBerryPouch(0, CB2_ReturnToField, 1);
+ InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_ReturnToField, 1);
DestroyTask(taskId);
}
}
@@ -457,7 +457,7 @@ void BattleUseFunc_BerryPouch(u8 taskId)
void InitBerryPouchFromBattle(void)
{
- InitBerryPouch(4, sub_8107ECC, 0);
+ InitBerryPouch(BERRYPOUCH_FROMBATTLE, sub_8107ECC, 0);
}
void FieldUseFunc_TeachyTv(u8 taskId)
@@ -852,7 +852,7 @@ void FieldUseFunc_OakStopsYou(u8 taskId)
if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
{
StringExpandPlaceholders(gStringVar4, gUnknown_8416425);
- DisplayItemMessageInBerryPouch(taskId, 4, gStringVar4, sub_813E2B8);
+ DisplayItemMessageInBerryPouch(taskId, 4, gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu);
}
else
sub_80A1110(taskId, gTasks[taskId].data[3]);
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index fdcb9a56e..06e7bb08b 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -95,7 +95,7 @@ u8 sub_80BF66C(void)
return 0;
}
-bool8 sub_80BF6A8(u16 itemId)
+bool8 itemid_link_can_give_berry(u16 itemId)
{
if (itemId != ITEM_ENIGMA_BERRY)
return TRUE;
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 1979326b2..9acd767d0 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1325,35 +1325,10 @@ gUnknown_203B170: @ 203B170
.align 2
.include "src/help_system.o"
+ .align 2
.include "src/dynamic_placeholder_text_util.o"
-
-gUnknown_203F36C: @ 203F36C
- .space 0x4
-
-gUnknown_203F370: @ 203F370
- .space 0xA
-
-gUnknown_203F37A: @ 203F37A
- .space 0x2
-
-gUnknown_203F37C: @ 203F37C
- .space 0x4
-
-gUnknown_203F380: @ 203F380
- .space 0x4
-
-gUnknown_203F384: @ 203F384
- .space 0x4
-
-gUnknown_203F388: @ 203F388
- .space 0x4
-
-gUnknown_203F38C: @ 203F38C
- .space 0x10
-
-gUnknown_203F39C: @ 203F39C
- .space 0x4
-
+ .align 2
+ .include "src/berry_pouch.o"
.align 2
.include "src/slot_machine.o"