summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/item_menu.s902
-rw-r--r--include/item.h2
-rw-r--r--src/item.c2
-rw-r--r--src/item_menu.c274
4 files changed, 273 insertions, 907 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 7a9799fec..563c1b98e 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -6,908 +6,6 @@
.text
- thumb_func_start ItemListMenu_ChangeDescription
-ItemListMenu_ChangeDescription: @ 80A49AC
- push {r4,r5,lr}
- sub sp, 0x64
- adds r4, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, _080A49E8 @ =gUnknown_03005D10
- ldr r0, _080A49EC @ =gUnknown_02038559
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x1]
- ldrb r2, [r0]
- adds r1, r2
- ldrb r0, [r0, 0x2]
- cmp r1, r0
- bne _080A4A18
- cmp r4, 0
- bne _080A49F4
- movs r0, 0
- movs r1, 0xD
- movs r2, 0xD
- movs r3, 0x14
- bl MenuZeroFillWindowRect
- ldr r0, _080A49F0 @ =gOtherText_ReturnTo
- movs r1, 0x4
- movs r2, 0x68
- b _080A4A08
- .align 2, 0
-_080A49E8: .4byte gUnknown_03005D10
-_080A49EC: .4byte gUnknown_02038559
-_080A49F0: .4byte gOtherText_ReturnTo
-_080A49F4:
- cmp r4, 0x1
- bne _080A4A4C
- ldr r1, _080A4A10 @ =gUnknown_0840E740
- ldr r0, _080A4A14 @ =gUnknown_03000701
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x4
- movs r2, 0x78
-_080A4A08:
- movs r3, 0
- bl MenuPrint_PixelCoords
- b _080A4A4C
- .align 2, 0
-_080A4A10: .4byte gUnknown_0840E740
-_080A4A14: .4byte gUnknown_03000701
-_080A4A18:
- cmp r4, 0
- bne _080A4A28
- movs r0, 0
- movs r1, 0xD
- movs r2, 0xD
- movs r3, 0x14
- bl MenuZeroFillWindowRect
-_080A4A28:
- lsls r1, r5, 16
- asrs r1, 16
- mov r0, sp
- adds r2, r4, 0
- bl ItemId_CopyDescription
- cmp r0, 0
- beq _080A4A4C
- lsls r2, r4, 20
- movs r0, 0xD0
- lsls r0, 15
- adds r2, r0
- lsrs r2, 16
- mov r0, sp
- movs r1, 0x4
- movs r3, 0
- bl MenuPrint_PixelCoords
-_080A4A4C:
- add sp, 0x64
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ItemListMenu_ChangeDescription
-
- thumb_func_start sub_80A4A54
-sub_80A4A54: @ 80A4A54
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r2, 0x1
- adds r2, r1, 0
- adds r1, r5, 0
-_080A4A5E:
- ldrb r3, [r2]
- adds r0, r3, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080A4A8A
- subs r4, 0x1
- cmp r4, 0
- bne _080A4A78
- movs r0, 0xFF
- strb r0, [r1]
- movs r0, 0x1
- b _080A4A92
-_080A4A78:
- lsls r0, r3, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080A4A84
- movs r0, 0
- b _080A4A92
-_080A4A84:
- adds r1, r5, 0
- adds r2, 0x1
- b _080A4A5E
-_080A4A8A:
- strb r3, [r1]
- adds r2, 0x1
- adds r1, 0x1
- b _080A4A5E
-_080A4A92:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80A4A54
-
- thumb_func_start sub_80A4A98
-sub_80A4A98: @ 80A4A98
- push {r4,r5,lr}
- sub sp, 0x64
- adds r5, r0, 0
- adds r4, r1, 0
- cmp r4, 0
- bne _080A4AB0
- movs r0, 0
- movs r1, 0xD
- movs r2, 0xD
- movs r3, 0x14
- bl MenuZeroFillWindowRect
-_080A4AB0:
- mov r0, sp
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_80A4A54
- cmp r0, 0
- beq _080A4AD2
- lsls r2, r4, 20
- movs r0, 0xD0
- lsls r0, 15
- adds r2, r0
- lsrs r2, 16
- mov r0, sp
- movs r1, 0x4
- movs r3, 0
- bl MenuPrint_PixelCoords
-_080A4AD2:
- add sp, 0x64
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A4A98
-
- thumb_func_start sub_80A4ADC
-sub_80A4ADC: @ 80A4ADC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A4B0C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080A4AFA
- movs r0, 0
- bl sub_80A7528
-_080A4AFA:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _080A4B10 @ =gUnknown_0203855C
- movs r0, 0x1
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080A4B0C: .4byte gTasks
-_080A4B10: .4byte gUnknown_0203855C
- thumb_func_end sub_80A4ADC
-
- thumb_func_start sub_80A4B14
-sub_80A4B14: @ 80A4B14
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r2, _080A4B50 @ =gUnknown_03005D10
- ldr r1, _080A4B54 @ =gUnknown_02038559
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 2
- adds r1, r2
- lsrs r0, 24
- ldrb r2, [r1, 0x1]
- adds r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0
- bl MoveMenuCursor
- bl sub_80A73C0
- bl sub_80A763C
- adds r0, r4, 0
- bl sub_80A4ADC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4B50: .4byte gUnknown_03005D10
-_080A4B54: .4byte gUnknown_02038559
- thumb_func_end sub_80A4B14
-
- thumb_func_start sub_80A4B58
-sub_80A4B58: @ 80A4B58
- push {r4,lr}
- adds r4, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 24
- asrs r0, 24
- bl MoveMenuCursor
- ldr r2, _080A4B88 @ =gUnknown_03005D10
- ldr r1, _080A4B8C @ =gUnknown_02038559
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 2
- adds r1, r2
- strb r0, [r1]
- bl sub_80A73C0
- adds r0, r4, 0
- bl sub_80A4ADC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4B88: .4byte gUnknown_03005D10
-_080A4B8C: .4byte gUnknown_02038559
- thumb_func_end sub_80A4B58
-
- thumb_func_start sub_80A4B90
-sub_80A4B90: @ 80A4B90
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x6
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _080A4BBC
- ldr r0, _080A4BB4 @ =0x00000103
- cmp r4, r0
- beq _080A4BAE
- adds r0, 0xD
- cmp r4, r0
- bne _080A4BBC
-_080A4BAE:
- ldr r0, _080A4BB8 @ =gOtherText_Walk
- b _080A4BE6
- .align 2, 0
-_080A4BB4: .4byte 0x00000103
-_080A4BB8: .4byte gOtherText_Walk
-_080A4BBC:
- adds r0, r4, 0
- bl ItemIsMail
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A4BE4
- ldr r1, _080A4BDC @ =gUnknown_083C1640
- ldr r0, _080A4BE0 @ =gUnknown_03000704
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- b _080A4BE6
- .align 2, 0
-_080A4BDC: .4byte gUnknown_083C1640
-_080A4BE0: .4byte gUnknown_03000704
-_080A4BE4:
- ldr r0, _080A4BEC @ =gOtherText_Check
-_080A4BE6:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080A4BEC: .4byte gOtherText_Check
- thumb_func_end sub_80A4B90
-
- thumb_func_start sub_80A4BF0
-sub_80A4BF0: @ 80A4BF0
- push {r4-r7,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r7, _080A4C38 @ =gUnknown_02038564
- ldrb r4, [r7]
- cmp r4, 0x4
- beq _080A4C00
- b _080A4CF8
-_080A4C00:
- movs r0, 0
- movs r1, 0x7
- movs r2, 0xD
- movs r3, 0xC
- bl MenuDrawTextWindow
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x8
- movs r3, 0xC
- bl sub_80A4008
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A4C40
- ldr r0, _080A4C3C @ =gUnknown_03000701
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _080A4C40
- movs r0, 0x1
- movs r1, 0
- bl sub_80A7834
- b _080A4CA0
- .align 2, 0
-_080A4C38: .4byte gUnknown_02038564
-_080A4C3C: .4byte gUnknown_03000701
-_080A4C40:
- movs r6, 0
- ldr r0, _080A4C5C @ =gUnknown_02038564
- ldrb r0, [r0]
- cmp r6, r0
- bcs _080A4CA0
- ldr r4, _080A4C60 @ =gUnknown_083C1640
-_080A4C4C:
- cmp r6, 0
- bne _080A4C68
- ldr r0, _080A4C64 @ =gScriptItemId
- ldrh r0, [r0]
- bl sub_80A4B90
- adds r3, r0, 0
- b _080A4C76
- .align 2, 0
-_080A4C5C: .4byte gUnknown_02038564
-_080A4C60: .4byte gUnknown_083C1640
-_080A4C64: .4byte gScriptItemId
-_080A4C68:
- ldr r0, _080A4CC4 @ =gUnknown_03000704
- ldr r0, [r0]
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r4
- ldr r3, [r0]
-_080A4C76:
- lsrs r0, r6, 1
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x1
- ands r2, r6
- lsls r2, 1
- adds r2, 0x8
- adds r0, r3, 0
- bl MenuPrint
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080A4CC8 @ =gUnknown_02038564
- ldrb r0, [r0]
- cmp r6, r0
- bcc _080A4C4C
-_080A4CA0:
- ldr r0, _080A4CCC @ =gUnknown_03000701
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _080A4CD4
- ldr r0, _080A4CC8 @ =gUnknown_02038564
- ldrb r3, [r0]
- ldr r0, _080A4CD0 @ =gUnknown_03000700
- ldrb r0, [r0]
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x8
- bl InitMenu
- b _080A4CEA
- .align 2, 0
-_080A4CC4: .4byte gUnknown_03000704
-_080A4CC8: .4byte gUnknown_02038564
-_080A4CCC: .4byte gUnknown_03000701
-_080A4CD0: .4byte gUnknown_03000700
-_080A4CD4:
- ldr r0, _080A4CF4 @ =gUnknown_02038564
- ldrb r3, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x8
- bl InitMenu
-_080A4CEA:
- movs r0, 0x2F
- bl sub_8072DCC
- b _080A4D8A
- .align 2, 0
-_080A4CF4: .4byte gUnknown_02038564
-_080A4CF8:
- movs r0, 0
- movs r1, 0x5
- movs r2, 0xD
- movs r3, 0xC
- bl MenuDrawTextWindow
- movs r0, 0x6
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x6
- movs r3, 0xC
- bl sub_80A4008
- movs r6, 0
- ldrb r7, [r7]
- cmp r6, r7
- bcs _080A4D6E
- ldr r7, _080A4D98 @ =gUnknown_083C1640
-_080A4D1E:
- ldr r0, _080A4D9C @ =gUnknown_03000704
- ldr r0, [r0]
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r7
- ldr r5, [r0]
- adds r0, r6, 0
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 1
- adds r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0x3
- bl __umodsi3
- adds r2, r0, 0
- lsls r2, 25
- movs r0, 0xC0
- lsls r0, 19
- adds r2, r0
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl MenuPrint
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080A4DA0 @ =gUnknown_02038564
- ldrb r0, [r0]
- cmp r6, r0
- bcc _080A4D1E
-_080A4D6E:
- ldr r0, _080A4DA0 @ =gUnknown_02038564
- ldrb r3, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x6
- bl InitMenu
- movs r0, 0x2F
- bl sub_8072DCC
-_080A4D8A:
- movs r0, 0x2
- bl sub_80A7528
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4D98: .4byte gUnknown_083C1640
-_080A4D9C: .4byte gUnknown_03000704
-_080A4DA0: .4byte gUnknown_02038564
- thumb_func_end sub_80A4BF0
-
- thumb_func_start sub_80A4DA4
-sub_80A4DA4: @ 80A4DA4
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl sub_80A73FC
- movs r0, 0x6
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x6
- movs r3, 0xD
- bl sub_80A36B8
- movs r0, 0
- movs r1, 0x5
- movs r2, 0xD
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- bl sub_80A7590
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A4DA4
-
- thumb_func_start sub_80A4DD8
-sub_80A4DD8: @ 80A4DD8
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- adds r4, r1, 0
- adds r1, r2, 0
- adds r6, r3, 0
- ldr r5, [sp, 0x20]
- ldr r2, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldr r3, _080A4E84 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- movs r0, 0x1
- strh r0, [r2, 0xA]
- adds r0, r4, 0x2
- mov r9, r0
- strh r0, [r2, 0xC]
- adds r0, r1, 0x1
- mov r8, r0
- strh r0, [r2, 0xE]
- adds r2, r4, r6
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, r5
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- bl MenuDrawTextWindow
- ldr r0, _080A4E88 @ =gBGTilemapBuffers + 0x800
- adds r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- subs r6, 0x1
- lsls r6, 24
- lsrs r6, 24
- subs r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp]
- adds r1, r4, 0
- mov r2, r8
- adds r3, r6, 0
- bl sub_80A4008
- mov r2, r9
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- mov r0, r10
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0x1
- mov r3, r8
- bl sub_80A418C
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4E84: .4byte gTasks
-_080A4E88: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80A4DD8
-
- thumb_func_start sub_80A4E8C
-sub_80A4E8C: @ 80A4E8C
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- bl sub_80F979C
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80F979C
- movs r0, 0x2
- movs r1, 0x1
- bl sub_80F979C
- movs r0, 0x3
- movs r1, 0x1
- bl sub_80F979C
- movs r0, 0
- bl PauseVerticalScrollIndicator
- movs r0, 0x1
- bl PauseVerticalScrollIndicator
- movs r0, 0x2
- bl PauseVerticalScrollIndicator
- movs r0, 0x3
- bl PauseVerticalScrollIndicator
- ldr r5, _080A4F04 @ =gBGTilemapBuffers + 0x1000
- lsls r4, 24
- asrs r4, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80A3B04
- ldr r0, _080A4F08 @ =gUnknown_02038559
- ldrb r1, [r0]
- adds r0, r5, 0
- bl sub_80A3AC0
- bl sub_80A3770
- bl sub_80A7C64
- adds r0, r6, 0
- bl CreateBagPokeballSprite
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4F04: .4byte gBGTilemapBuffers + 0x1000
-_080A4F08: .4byte gUnknown_02038559
- thumb_func_end sub_80A4E8C
-
- thumb_func_start sub_80A4F0C
-sub_80A4F0C: @ 80A4F0C
- push {r4,lr}
- ldr r0, _080A4F38 @ =gUnknown_03000701
- ldrb r0, [r0]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080A4F60
- ldr r4, _080A4F3C @ =gMain
- ldrh r0, [r4, 0x2E]
- cmp r0, 0x10
- beq _080A4F30
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080A4F40
-_080A4F30:
- movs r0, 0x1
- movs r1, 0x2
- b _080A4F58
- .align 2, 0
-_080A4F38: .4byte gUnknown_03000701
-_080A4F3C: .4byte gMain
-_080A4F40:
- ldrh r0, [r4, 0x2E]
- cmp r0, 0x20
- beq _080A4F52
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A4F60
-_080A4F52:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x1
-_080A4F58:
- bl sub_80A4E8C
- movs r0, 0x1
- b _080A4F62
-_080A4F60:
- movs r0, 0
-_080A4F62:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80A4F0C
-
- thumb_func_start sub_80A4F68
-sub_80A4F68: @ 80A4F68
- push {lr}
- bl sub_80A4F0C
- pop {r0}
- bx r0
- thumb_func_end sub_80A4F68
-
- thumb_func_start sub_80A4F74
-sub_80A4F74: @ 80A4F74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r2, r4, 0
- movs r5, 0
- ldr r0, _080A4FAC @ =gMain
- ldrh r0, [r0, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _080A4FE8
- ldr r1, _080A4FB0 @ =gUnknown_03005D10
- ldr r0, _080A4FB4 @ =gUnknown_02038559
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- beq _080A4FB8
- movs r0, 0x1
- negs r0, r0
- adds r1, r4, 0
- bl sub_80A4B58
- b _080A4FC8
- .align 2, 0
-_080A4FAC: .4byte gMain
-_080A4FB0: .4byte gUnknown_03005D10
-_080A4FB4: .4byte gUnknown_02038559
-_080A4FB8:
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _080A4FC8
- movs r0, 0x1
- negs r0, r0
- adds r1, r4, 0
- bl sub_80A4B14
-_080A4FC8:
- ldr r0, _080A4FE0 @ =gLinkOpen
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080A50AE
- ldr r1, _080A4FE4 @ =gMain
- ldrh r0, [r1, 0x32]
- cmp r0, 0x5
- bne _080A50AE
- movs r0, 0xB
- strh r0, [r1, 0x32]
- b _080A50AE
- .align 2, 0
-_080A4FE0: .4byte gLinkOpen
-_080A4FE4: .4byte gMain
-_080A4FE8:
- cmp r1, 0x80
- bne _080A5088
- ldr r0, _080A5020 @ =gUnknown_03000701
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _080A502C
- ldr r1, _080A5024 @ =gUnknown_03005D10
- ldr r0, _080A5028 @ =gUnknown_02038559
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 2
- adds r2, r0, r1
- ldrb r0, [r2]
- ldrb r1, [r2, 0x3]
- cmp r0, r1
- bne _080A504E
- ldrb r0, [r2, 0x1]
- ldrb r1, [r2]
- adds r0, r1
- ldrb r2, [r2, 0x2]
- cmp r0, r2
- beq _080A5068
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80A4B14
- b _080A5068
- .align 2, 0
-_080A5020: .4byte gUnknown_03000701
-_080A5024: .4byte gUnknown_03005D10
-_080A5028: .4byte gUnknown_02038559
-_080A502C:
- ldr r1, _080A5058 @ =gUnknown_03005D10
- ldr r0, _080A505C @ =gUnknown_02038559
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 2
- adds r2, r0, r1
- ldrb r1, [r2, 0x1]
- ldrb r3, [r2]
- adds r1, r3
- ldrb r0, [r2, 0x2]
- subs r0, 0x1
- cmp r1, r0
- beq _080A5068
- ldrb r2, [r2, 0x3]
- cmp r3, r2
- beq _080A5060
-_080A504E:
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80A4B58
- b _080A5068
- .align 2, 0
-_080A5058: .4byte gUnknown_03005D10
-_080A505C: .4byte gUnknown_02038559
-_080A5060:
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80A4B14
-_080A5068:
- movs r5, 0x1
- ldr r0, _080A5080 @ =gLinkOpen
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080A50C0
- ldr r1, _080A5084 @ =gMain
- ldrh r0, [r1, 0x32]
- cmp r0, 0x5
- bne _080A50C0
- movs r0, 0xB
- strh r0, [r1, 0x32]
- b _080A50C0
- .align 2, 0
-_080A5080: .4byte gLinkOpen
-_080A5084: .4byte gMain
-_080A5088:
- ldr r0, _080A50B4 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r4, r1, r0
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A50BC
- bl sub_80A4F0C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A50BC
- bl sub_80A73F0
- ldr r0, _080A50B8 @ =sub_80A4F68
- str r0, [r4]
-_080A50AE:
- movs r5, 0x1
- b _080A50C0
- .align 2, 0
-_080A50B4: .4byte gTasks
-_080A50B8: .4byte sub_80A4F68
-_080A50BC:
- bl sub_80A73C0
-_080A50C0:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80A4F74
-
thumb_func_start sub_80A50C8
sub_80A50C8: @ 80A50C8
push {r4-r7,lr}
diff --git a/include/item.h b/include/item.h
index 54a252302..80a460caa 100644
--- a/include/item.h
+++ b/include/item.h
@@ -51,7 +51,7 @@ u16 ItemId_GetPrice(u16 itemId);
u8 ItemId_GetHoldEffect(u16 itemId);
u8 ItemId_GetHoldEffectParam(u16 itemId);
u8 *ItemId_GetDescription(u16 itemId);
-bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c);
+bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c);
u8 ItemId_GetImportance(u16 itemId);
u8 ItemId_GetUnknownValue(u16 itemId);
u8 ItemId_GetPocket(u16 itemId);
diff --git a/src/item.c b/src/item.c
index 6070a0329..22ac6e7cd 100644
--- a/src/item.c
+++ b/src/item.c
@@ -587,7 +587,7 @@ u8 *ItemId_GetDescription(u16 itemId)
return gItems[SanitizeItemId(itemId)].description;
}
-bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c)
+bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c)
{
u32 r5 = c + 1;
u8 *description = gItems[SanitizeItemId(itemId)].description;
diff --git a/src/item_menu.c b/src/item_menu.c
index b8d9f788a..972a2c748 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -1,8 +1,12 @@
#include "global.h"
#include "data2.h"
#include "decompress.h"
+#include "field_player_avatar.h"
#include "graphics.h"
#include "item.h"
+#include "items.h"
+#include "item_use.h"
+#include "mail_data.h"
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
@@ -48,6 +52,8 @@ extern void gpu_pal_allocator_reset__manage_upper_four(void);
extern void sub_80F9020(void);
extern void sub_80F9988();
extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16);
+extern void PauseVerticalScrollIndicator();
+extern u8 sub_80F9284(void);
extern const struct CompressedSpriteSheet gUnknown_083C1CC8;
extern const struct CompressedSpriteSheet gUnknown_083C1CD0;
@@ -114,10 +120,13 @@ void sub_80A3D40(void);
void sub_80A40D0(void);
void sub_80A48E8(u16, int, int);
void ItemListMenu_InitDescription(s16);
-void ItemListMenu_ChangeDescription();
+void ItemListMenu_ChangeDescription(s16, int);
void sub_80A4F68(u8);
void sub_80A50C8(u8);
void ItemListMenu_InitMenu(void);
+void sub_80A73C0(void);
+void sub_80A73F0(void);
+void sub_80A73FC(void);
void sub_80A740C(void);
void sub_80A751C(void);
void sub_80A7528();
@@ -127,9 +136,11 @@ void sub_80A763C(void);
void sub_80A76A0(void);
void sub_80A770C(void);
void sub_80A7828(void);
+void sub_80A7834();
void sub_80A78B8(void);
void CreateBagSprite(void);
void CreateBagPokeballSprite();
+void sub_80A7C64(void);
void sub_80A3118(void)
{
@@ -460,7 +471,7 @@ void sub_80A37F8(u8 taskId)
{
u32 val = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0;
- ItemListMenu_ChangeDescription((s16)gUnknown_03005D24[val].itemId, gUnknown_02038562);
+ ItemListMenu_ChangeDescription(gUnknown_03005D24[val].itemId, gUnknown_02038562);
gUnknown_02038562++;
}
else
@@ -469,7 +480,7 @@ void sub_80A37F8(u8 taskId)
{
u32 val = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0;
- ItemListMenu_ChangeDescription((s16)gUnknown_03005D24[val].itemId, gUnknown_02038562);
+ ItemListMenu_ChangeDescription(gUnknown_03005D24[val].itemId, gUnknown_02038562);
gUnknown_02038562++;
}
}
@@ -1315,3 +1326,260 @@ void ItemListMenu_InitDescription(s16 itemId)
if (r5 < 3)
MenuZeroFillWindowRect(0, 13 + r5 * 2, 13, 20);
}
+
+void ItemListMenu_ChangeDescription(s16 itemId, int b)
+{
+ u8 description[100];
+
+ if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 == gUnknown_03005D10[gUnknown_02038559].unk2)
+ {
+ if (b == 0)
+ {
+ MenuZeroFillWindowRect(0, 13, 13, 20);
+ MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0);
+ }
+ else if (b == 1)
+ {
+ MenuPrint_PixelCoords(gUnknown_0840E740[gUnknown_03000701], 4, 0x78, 0);
+ }
+ }
+ else
+ {
+ if (b == 0)
+ MenuZeroFillWindowRect(0, 13, 13, 20);
+ if (ItemId_CopyDescription(description, itemId, b))
+ MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0);
+ }
+}
+
+bool32 sub_80A4A54(u8 *a, const u8 *b, u32 c)
+{
+ u32 r4 = c + 1;
+ const u8 *src = b;
+ u8 *dst = a;
+
+ while (1)
+ {
+ if (*src == CHAR_NEWLINE || *src == EOS)
+ {
+ if (--r4 == 0)
+ {
+ *dst = EOS;
+ return TRUE;
+ }
+ if (*src == EOS)
+ return FALSE;
+ dst = a;
+ src++;
+ }
+ else
+ {
+ *dst++ = *src++;
+ }
+ }
+}
+
+void sub_80A4A98(u8 *a, u32 b)
+{
+ u8 text[100];
+
+ if (b == 0)
+ MenuZeroFillWindowRect(0, 13, 13, 20);
+ if (sub_80A4A54(text, a, b))
+ MenuPrint_PixelCoords(text, 4, 104 + b * 16, 0);
+}
+
+void sub_80A4ADC(u8 taskId)
+{
+ if (gTasks[taskId].data[10] == 0)
+ sub_80A7528(0);
+ PlaySE(SE_SELECT);
+ gUnknown_0203855C = 1;
+}
+
+void sub_80A4B14(s8 a, u8 b)
+{
+ gUnknown_03005D10[gUnknown_02038559].unk1 += a;
+ MoveMenuCursor(0);
+ sub_80A73C0();
+ sub_80A763C();
+ sub_80A4ADC(b);
+}
+
+void sub_80A4B58(s8 a, u8 b)
+{
+ gUnknown_03005D10[gUnknown_02038559].unk0 = MoveMenuCursor(a);
+ sub_80A73C0();
+ sub_80A4ADC(b);
+}
+
+const u8 *sub_80A4B90(u16 itemId)
+{
+ if (TestPlayerAvatarFlags(6))
+ {
+ if (itemId == ITEM_MACH_BIKE || itemId == ITEM_ACRO_BIKE)
+ return gOtherText_Walk;
+ }
+ if (ItemIsMail(itemId) == TRUE)
+ return gOtherText_Check;
+ return gUnknown_083C1640[gUnknown_03000704[0]].text;
+}
+
+void sub_80A4BF0(u16 *a)
+{
+ u8 i;
+
+ if (gUnknown_02038564 == 4)
+ {
+ MenuDrawTextWindow(0, 7, 13, 12);
+ sub_80A4008(a, 1, 8, 12, 4);
+ if (sub_80F9344() == 1 && gUnknown_03000701 == 5)
+ {
+ sub_80A7834(1, 0);
+ }
+ else
+ {
+ for (i = 0; i < gUnknown_02038564; i++)
+ {
+ const u8 *text;
+
+ if (i == 0)
+ text = sub_80A4B90(gScriptItemId);
+ else
+ text = gUnknown_083C1640[gUnknown_03000704[i]].text;
+ MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2);
+ }
+ }
+ if (gUnknown_03000701 == 5)
+ InitMenu(0, 1, 8, gUnknown_02038564, gUnknown_03000700, 1);
+ else
+ InitMenu(0, 1, 8, gUnknown_02038564, 0, 1);
+ sub_8072DCC(0x2F);
+ }
+ else
+ {
+ MenuDrawTextWindow(0, 5, 13, 12);
+ sub_80A4008(a, 1, 6, 12, 6);
+ for (i = 0; i < gUnknown_02038564; i++)
+ MenuPrint(gUnknown_083C1640[gUnknown_03000704[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2);
+ InitMenu(0, 1, 6, gUnknown_02038564, 0, 1);
+ sub_8072DCC(0x2F);
+ }
+ sub_80A7528(2);
+}
+
+void sub_80A4DA4(u16 *a)
+{
+ sub_80A73FC();
+ sub_80A36B8(a, 0, 6, 13, 6);
+ MenuZeroFillWindowRect(0, 5, 13, 12);
+ sub_80A7590();
+}
+
+void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 f)
+{
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[2] = b + 2;
+ gTasks[taskId].data[3] = c + 1;
+ MenuDrawTextWindow(b, c, b + d, c + e);
+ sub_80A4008(gBGTilemapBuffers[1], b + 1, c + 1, d - 1, e - 1);
+ sub_80A418C(1, 1, b + 2, c + 1, f);
+}
+
+void sub_80A4E8C(s8 a, u8 b)
+{
+ PlaySE(SE_SELECT);
+ sub_80F979C(0, 1);
+ sub_80F979C(1, 1);
+ sub_80F979C(2, 1);
+ sub_80F979C(3, 1);
+ PauseVerticalScrollIndicator(0);
+ PauseVerticalScrollIndicator(1);
+ PauseVerticalScrollIndicator(2);
+ PauseVerticalScrollIndicator(3);
+ sub_80A3B04(gBGTilemapBuffers[2], a);
+ sub_80A3AC0(gBGTilemapBuffers[2], gUnknown_02038559);
+ sub_80A3770();
+ sub_80A7C64();
+ CreateBagPokeballSprite(b);
+}
+
+static bool8 sub_80A4F0C(void)
+{
+ if (gUnknown_03000701 == 5 || gUnknown_03000701 == 4)
+ return FALSE;
+ if (gMain.newKeys == DPAD_RIGHT || sub_80F9284() == 2)
+ {
+ sub_80A4E8C(1, 2);
+ return TRUE;
+ }
+ if (gMain.newKeys == DPAD_LEFT || sub_80F9284() == 1)
+ {
+ sub_80A4E8C(-1, 1);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_80A4F68(u8 taskId)
+{
+ sub_80A4F0C();
+}
+
+bool8 sub_80A4F74(u8 a)
+{
+ bool8 retVal = FALSE;
+
+ if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk0 != 0)
+ sub_80A4B58(-1, a);
+ else if (gUnknown_03005D10[gUnknown_02038559].unk1 != 0)
+ sub_80A4B14(-1, a);
+ if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5)
+ gMain.keyRepeatCounter = 11;
+ retVal = TRUE;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ if (gUnknown_03000701 != 5)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk0 == gUnknown_03005D10[gUnknown_02038559].unk3)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk2)
+ sub_80A4B14(1, a);
+ }
+ else
+ {
+ sub_80A4B58(1, a);
+ }
+ }
+ else
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk2 - 1)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk3)
+ sub_80A4B58(1, a);
+ else
+ sub_80A4B14(1, a);
+ }
+ }
+ retVal = TRUE;
+ if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5)
+ gMain.keyRepeatCounter = 11;
+ }
+ else
+ {
+ if (gTasks[a].data[10] == 0 && sub_80A4F0C() == TRUE)
+ {
+ sub_80A73F0();
+ gTasks[a].func = sub_80A4F68;
+ retVal = TRUE;
+ }
+ else
+ {
+ sub_80A73C0();
+ }
+ }
+ return retVal;
+}