pokeruby/asm/item_use.s
2017-01-02 22:58:06 -08:00

2171 lines
40 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "constants/species_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80C962C
sub_80C962C: @ 80C962C
push {r4-r6,lr}
lsls r1, 16
lsrs r3, r1, 16
lsls r2, 16
lsrs r4, r2, 16
ldrb r2, [r0, 0x3]
ldr r5, [r0, 0x10]
movs r1, 0
cmp r1, r2
bge _080C9680
lsls r0, r3, 16
asrs r6, r0, 16
lsls r0, r4, 16
asrs r4, r0, 16
adds r3, r5, 0
_080C964A:
ldrb r0, [r3, 0x5]
cmp r0, 0x7
bne _080C9678
ldrh r0, [r3]
cmp r6, r0
bne _080C9678
ldrh r0, [r3, 0x2]
cmp r4, r0
bne _080C9678
movs r1, 0x96
lsls r1, 2
adds r0, r1, 0
ldrh r3, [r3, 0xA]
adds r0, r3
lsls r0, 16
lsrs r0, 16
bl FlagGet
lsls r0, 24
cmp r0, 0
bne _080C9680
movs r0, 0x1
b _080C9682
_080C9678:
adds r3, 0xC
adds r1, 0x1
cmp r1, r2
blt _080C964A
_080C9680:
movs r0, 0
_080C9682:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80C962C
thumb_func_start sub_80C9688
sub_80C9688: @ 80C9688
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
bl mapconnection_get_mapheader
adds r3, r0, 0
ldrb r0, [r4]
cmp r0, 0x2
beq _080C96B0
cmp r0, 0x2
bgt _080C96A6
cmp r0, 0x1
beq _080C96C4
b _080C9704
_080C96A6:
cmp r0, 0x3
beq _080C96DC
cmp r0, 0x4
beq _080C96E6
b _080C9704
_080C96B0:
ldr r0, [r4, 0x4]
adds r0, 0x7
subs r0, r5, r0
lsls r0, 16
lsrs r1, r0, 16
ldr r0, [r3]
ldr r0, [r0, 0x4]
subs r0, 0x7
adds r0, r6
b _080C96FA
_080C96C4:
ldr r0, [r4, 0x4]
adds r0, 0x7
subs r0, r5, r0
lsls r0, 16
lsrs r1, r0, 16
ldr r0, _080C96D8 @ =gMapHeader
ldr r0, [r0]
ldr r0, [r0, 0x4]
b _080C96F6
.align 2, 0
_080C96D8: .4byte gMapHeader
_080C96DC:
ldr r0, [r3]
ldr r0, [r0]
subs r0, 0x7
adds r0, r5
b _080C96F0
_080C96E6:
ldr r0, _080C9700 @ =gMapHeader
ldr r0, [r0]
ldr r0, [r0]
adds r0, 0x7
subs r0, r5, r0
_080C96F0:
lsls r0, 16
lsrs r1, r0, 16
ldr r0, [r4, 0x4]
_080C96F6:
adds r0, 0x7
subs r0, r6, r0
_080C96FA:
lsls r0, 16
lsrs r2, r0, 16
b _080C9708
.align 2, 0
_080C9700: .4byte gMapHeader
_080C9704:
movs r0, 0
b _080C971A
_080C9708:
ldr r0, [r3, 0x4]
lsls r1, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
bl sub_80C962C
lsls r0, 24
lsrs r0, 24
_080C971A:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80C9688
thumb_func_start sub_80C9720
sub_80C9720: @ 80C9720
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
ldr r0, _080C9834 @ =gMapHeader
ldr r1, [r0]
ldr r0, [r1]
adds r0, 0x7
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0x8]
ldr r0, [r1, 0x4]
adds r0, 0x7
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0xC]
mov r4, sp
adds r4, 0x2
mov r0, sp
adds r1, r4, 0
bl PlayerGetDestCoords
mov r0, sp
ldrh r0, [r0]
subs r0, 0x7
lsls r0, 16
lsrs r3, r0, 16
asrs r0, 16
mov r1, sp
movs r2, 0
ldrsh r1, [r1, r2]
adds r1, 0x7
cmp r0, r1
bgt _080C9824
_080C976E:
mov r5, sp
ldrh r0, [r5, 0x2]
subs r0, 0x5
lsls r0, 16
lsrs r4, r0, 16
lsls r2, r4, 16
asrs r1, r2, 16
movs r6, 0x2
ldrsh r0, [r5, r6]
adds r0, 0x5
lsls r3, 16
mov r8, r3
cmp r1, r0
bgt _080C980E
movs r0, 0x7
str r0, [sp, 0x10]
mov r1, r8
asrs r1, 16
mov r9, r1
mov r10, r0
_080C9796:
ldr r3, [sp, 0x10]
cmp r3, r9
bgt _080C97B8
ldr r5, [sp, 0x8]
lsls r0, r5, 16
asrs r0, 16
cmp r9, r0
bge _080C97B8
asrs r1, r2, 16
cmp r10, r1
bgt _080C97B8
ldr r6, [sp, 0xC]
lsls r0, r6, 16
asrs r0, 16
lsls r7, r4, 16
cmp r1, r0
blt _080C97F6
_080C97B8:
mov r0, r8
asrs r5, r0, 16
lsls r4, 16
asrs r6, r4, 16
adds r0, r5, 0
adds r1, r6, 0
bl sub_8056BA0
adds r7, r4, 0
cmp r0, 0
beq _080C97F6
adds r1, r5, 0
adds r2, r6, 0
bl sub_80C9688
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080C97F6
mov r0, sp
ldrh r1, [r0]
subs r1, r5, r1
lsls r1, 16
asrs r1, 16
ldrh r2, [r0, 0x2]
subs r2, r6, r2
lsls r2, 16
asrs r2, 16
ldr r0, [sp, 0x4]
bl sub_80C9838
_080C97F6:
movs r1, 0x80
lsls r1, 9
adds r0, r7, r1
lsrs r4, r0, 16
lsls r2, r4, 16
asrs r1, r2, 16
mov r3, sp
movs r5, 0x2
ldrsh r0, [r3, r5]
adds r0, 0x5
cmp r1, r0
ble _080C9796
_080C980E:
movs r1, 0x80
lsls r1, 9
add r1, r8
lsrs r3, r1, 16
asrs r1, 16
mov r0, sp
movs r6, 0
ldrsh r0, [r0, r6]
adds r0, 0x7
cmp r1, r0
ble _080C976E
_080C9824:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080C9834: .4byte gMapHeader
thumb_func_end sub_80C9720
thumb_func_start sub_80C9838
sub_80C9838: @ 80C9838
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
lsls r1, 16
lsrs r7, r1, 16
lsls r2, 16
lsrs r2, 16
mov r12, r2
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _080C986C @ =gTasks + 0x8
adds r3, r1, r0
movs r1, 0x4
ldrsh r0, [r3, r1]
cmp r0, 0
bne _080C9870
strh r7, [r3]
mov r0, r12
strh r0, [r3, 0x2]
movs r0, 0x1
strh r0, [r3, 0x4]
b _080C98FA
.align 2, 0
_080C986C: .4byte gTasks + 0x8
_080C9870:
movs r1, 0
ldrsh r0, [r3, r1]
cmp r0, 0
bge _080C9880
negs r0, r0
lsls r0, 16
lsrs r4, r0, 16
b _080C9882
_080C9880:
ldrh r4, [r3]
_080C9882:
movs r1, 0x2
ldrsh r0, [r3, r1]
ldrh r1, [r3, 0x2]
mov r9, r1
cmp r0, 0
bge _080C9896
negs r0, r0
lsls r0, 16
lsrs r2, r0, 16
b _080C9898
_080C9896:
ldrh r2, [r3, 0x2]
_080C9898:
lsls r1, r7, 16
asrs r0, r1, 16
cmp r0, 0
bge _080C98A8
negs r0, r0
lsls r0, 16
lsrs r6, r0, 16
b _080C98AA
_080C98A8:
lsrs r6, r1, 16
_080C98AA:
mov r1, r12
lsls r0, r1, 16
asrs r1, r0, 16
mov r8, r0
cmp r1, 0
bge _080C98BC
negs r0, r1
lsls r0, 16
b _080C98BE
_080C98BC:
mov r0, r8
_080C98BE:
lsrs r5, r0, 16
lsls r0, r4, 16
asrs r0, 16
lsls r1, r2, 16
asrs r2, r1, 16
adds r4, r0, r2
lsls r0, r6, 16
asrs r0, 16
lsls r1, r5, 16
asrs r1, 16
adds r0, r1
cmp r4, r0
ble _080C98E0
strh r7, [r3]
mov r1, r12
strh r1, [r3, 0x2]
b _080C98FA
_080C98E0:
cmp r4, r0
bne _080C98FA
cmp r2, r1
bgt _080C98F4
cmp r2, r1
bne _080C98FA
mov r1, r9
lsls r0, r1, 16
cmp r0, r8
bge _080C98FA
_080C98F4:
strh r7, [r3]
mov r0, r12
strh r0, [r3, 0x2]
_080C98FA:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80C9838
thumb_func_start GetPlayerDirectionTowardsHiddenItem
GetPlayerDirectionTowardsHiddenItem: @ 80C9908
push {r4,r5,lr}
lsls r0, 16
lsls r1, 16
lsrs r1, 16
lsrs r2, r0, 16
cmp r0, 0
bne _080C991A
cmp r1, 0
beq _080C9974
_080C991A:
lsls r0, r2, 16
asrs r2, r0, 16
adds r5, r0, 0
cmp r2, 0
bge _080C992C
negs r0, r2
lsls r0, 16
lsrs r4, r0, 16
b _080C992E
_080C992C:
lsrs r4, r5, 16
_080C992E:
lsls r0, r1, 16
asrs r2, r0, 16
adds r1, r0, 0
cmp r2, 0
bge _080C9940
negs r0, r2
lsls r0, 16
lsrs r3, r0, 16
b _080C9942
_080C9940:
lsrs r3, r1, 16
_080C9942:
lsls r0, r4, 16
asrs r2, r0, 16
lsls r0, r3, 16
asrs r0, 16
cmp r2, r0
ble _080C995A
cmp r5, 0
bge _080C9956
movs r0, 0x4
b _080C9976
_080C9956:
movs r0, 0x2
b _080C9976
_080C995A:
cmp r2, r0
bge _080C9964
cmp r1, 0
blt _080C996C
b _080C9970
_080C9964:
cmp r2, r0
bne _080C9974
cmp r1, 0
bge _080C9970
_080C996C:
movs r0, 0x1
b _080C9976
_080C9970:
movs r0, 0x3
b _080C9976
_080C9974:
movs r0, 0
_080C9976:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetPlayerDirectionTowardsHiddenItem
thumb_func_start SetPlayerDirectionTowardsItem
SetPlayerDirectionTowardsItem: @ 80C997C
push {r4,r5,lr}
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
movs r0, 0xFF
movs r1, 0
movs r2, 0
bl GetFieldObjectIdByLocalIdAndMap
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r4, _080C99E8 @ =gMapObjects
adds r0, r4
bl FieldObjectClearAnimIfSpecialAnimFinished
movs r0, 0xFF
movs r1, 0
movs r2, 0
bl GetFieldObjectIdByLocalIdAndMap
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r4
bl FieldObjectClearAnim
movs r0, 0xFF
movs r1, 0
movs r2, 0
bl GetFieldObjectIdByLocalIdAndMap
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r4
bl UnfreezeMapObject
adds r0, r5, 0
bl PlayerTurnInPlace
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C99E8: .4byte gMapObjects
thumb_func_end SetPlayerDirectionTowardsItem
thumb_func_start DisplayItemRespondingMessageAndExitItemfinder
DisplayItemRespondingMessageAndExitItemfinder: @ 80C99EC
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0xFF
movs r1, 0
movs r2, 0
bl GetFieldObjectIdByLocalIdAndMap
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080C9A2C @ =gMapObjects
adds r0, r1
bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080C9A24
ldr r1, _080C9A30 @ =gOtherText_ItemfinderResponding
ldr r2, _080C9A34 @ =ExitItemfinder
adds r0, r4, 0
movs r3, 0
bl DisplayItemMessageOnField
_080C9A24:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9A2C: .4byte gMapObjects
_080C9A30: .4byte gOtherText_ItemfinderResponding
_080C9A34: .4byte ExitItemfinder
thumb_func_end DisplayItemRespondingMessageAndExitItemfinder
thumb_func_start RotatePlayerAndExitItemfinder
RotatePlayerAndExitItemfinder: @ 80C9A38
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, _080C9AB4 @ =gTasks + 0x8
adds r4, r0, r1
movs r0, 0xFF
movs r1, 0
movs r2, 0
bl GetFieldObjectIdByLocalIdAndMap
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _080C9AB8 @ =gMapObjects
adds r0, r1
bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080C9A78
movs r1, 0x4
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080C9AAE
_080C9A78:
ldr r1, _080C9ABC @ =gItemFinderDirections
movs r2, 0xA
ldrsh r0, [r4, r2]
adds r0, r1
ldrb r0, [r0]
bl SetPlayerDirectionTowardsItem
movs r0, 0x1
strh r0, [r4, 0x4]
ldrh r0, [r4, 0xA]
adds r0, 0x1
movs r1, 0x3
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0x6]
adds r0, 0x1
strh r0, [r4, 0x6]
lsls r0, 16
asrs r0, 16
cmp r0, 0x4
bne _080C9AAE
ldr r1, _080C9AC0 @ =gOtherText_ItemfinderItemUnderfoot
ldr r2, _080C9AC4 @ =ExitItemfinder
adds r0, r5, 0
movs r3, 0
bl DisplayItemMessageOnField
_080C9AAE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C9AB4: .4byte gTasks + 0x8
_080C9AB8: .4byte gMapObjects
_080C9ABC: .4byte gItemFinderDirections
_080C9AC0: .4byte gOtherText_ItemfinderItemUnderfoot
_080C9AC4: .4byte ExitItemfinder
thumb_func_end RotatePlayerAndExitItemfinder
thumb_func_start ItemUseOutOfBattle_PokeblockCase
ItemUseOutOfBattle_PokeblockCase: @ 80C9AC8
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
bl sub_80F9344
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080C9AF4
ldr r0, _080C9AF0 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
ldrb r1, [r1, 0xC]
adds r0, r4, 0
bl DisplayDadsAdviceCannotUseItemMessage
b _080C9B2A
.align 2, 0
_080C9AF0: .4byte gTasks
_080C9AF4:
ldr r0, _080C9B14 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r2, 0xC
ldrsh r0, [r1, r2]
cmp r0, 0x1
beq _080C9B18
movs r0, 0
bl sub_810BA7C
adds r0, r4, 0
bl ItemMenu_ConfirmNormalFade
b _080C9B2A
.align 2, 0
_080C9B14: .4byte gTasks
_080C9B18:
ldr r1, _080C9B30 @ =gUnknown_0300485C
ldr r0, _080C9B34 @ =sub_8080E28
str r0, [r1]
movs r0, 0x1
bl sub_810BA7C
adds r0, r5, 0
bl ItemMenu_ConfirmComplexFade
_080C9B2A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C9B30: .4byte gUnknown_0300485C
_080C9B34: .4byte sub_8080E28
thumb_func_end ItemUseOutOfBattle_PokeblockCase
thumb_func_start ItemUseOutOfBattle_CoinCase
ItemUseOutOfBattle_CoinCase: @ 80C9B38
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r4, _080C9B8C @ =gStringVar1
bl GetCoins
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
movs r2, 0
movs r3, 0x4
bl ConvertIntToDecimalStringN
ldr r4, _080C9B90 @ =gStringVar4
ldr r1, _080C9B94 @ =gOtherText_Coins3
adds r0, r4, 0
bl StringExpandPlaceholders
ldr r1, _080C9B98 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r1, 0xC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080C9BA0
movs r0, 0
movs r1, 0xD
movs r2, 0xD
movs r3, 0x14
bl MenuZeroFillWindowRect
ldr r2, _080C9B9C @ =CleanUpItemMenuMessage
adds r0, r5, 0
adds r1, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
b _080C9BAC
.align 2, 0
_080C9B8C: .4byte gStringVar1
_080C9B90: .4byte gStringVar4
_080C9B94: .4byte gOtherText_Coins3
_080C9B98: .4byte gTasks
_080C9B9C: .4byte CleanUpItemMenuMessage
_080C9BA0:
ldr r2, _080C9BB4 @ =CleanUpOverworldMessage
adds r0, r5, 0
adds r1, r4, 0
movs r3, 0
bl DisplayItemMessageOnField
_080C9BAC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C9BB4: .4byte CleanUpOverworldMessage
thumb_func_end ItemUseOutOfBattle_CoinCase
thumb_func_start sub_80C9BB8
sub_80C9BB8: @ 80C9BB8
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080C9BD4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080C9BD0
adds r0, r2, 0
bl CleanUpItemMenuMessage
_080C9BD0:
pop {r0}
bx r0
.align 2, 0
_080C9BD4: .4byte gMain
thumb_func_end sub_80C9BB8
thumb_func_start sub_80C9BD8
sub_80C9BD8: @ 80C9BD8
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080C9BF4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080C9BF0
adds r0, r2, 0
bl CleanUpOverworldMessage
_080C9BF0:
pop {r0}
bx r0
.align 2, 0
_080C9BF4: .4byte gMain
thumb_func_end sub_80C9BD8
thumb_func_start unref_sub_80C9BF8
unref_sub_80C9BF8: @ 80C9BF8
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080C9C3C @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r1, 0xC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080C9C4C
movs r0, 0
movs r1, 0xD
movs r2, 0xD
movs r3, 0x14
bl MenuZeroFillWindowRect
ldr r4, _080C9C40 @ =gUnknown_083D61DC
ldr r0, _080C9C44 @ =gScriptItemId
ldrh r0, [r0]
bl ItemId_GetSecondaryId
lsls r0, 24
lsrs r0, 22
adds r0, r4
ldr r1, [r0]
ldr r2, _080C9C48 @ =sub_80C9BB8
adds r0, r5, 0
movs r3, 0x1
bl DisplayItemMessageOnField
b _080C9C68
.align 2, 0
_080C9C3C: .4byte gTasks
_080C9C40: .4byte gUnknown_083D61DC
_080C9C44: .4byte gScriptItemId
_080C9C48: .4byte sub_80C9BB8
_080C9C4C:
ldr r4, _080C9C70 @ =gUnknown_083D61DC
ldr r0, _080C9C74 @ =gScriptItemId
ldrh r0, [r0]
bl ItemId_GetSecondaryId
lsls r0, 24
lsrs r0, 22
adds r0, r4
ldr r1, [r0]
ldr r2, _080C9C78 @ =sub_80C9BD8
adds r0, r5, 0
movs r3, 0
bl DisplayItemMessageOnField
_080C9C68:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C9C70: .4byte gUnknown_083D61DC
_080C9C74: .4byte gScriptItemId
_080C9C78: .4byte sub_80C9BD8
thumb_func_end unref_sub_80C9BF8
thumb_func_start sub_80C9C7C
sub_80C9C7C: @ 80C9C7C
push {r4,lr}
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
bl IsPlayerFacingPlantedBerryTree
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080C9CE4
ldr r1, _080C9CC8 @ =gUnknown_03005D00
ldr r0, _080C9CCC @ =sub_80C9D00
str r0, [r1]
ldr r1, _080C9CD0 @ =gUnknown_0300485C
ldr r0, _080C9CD4 @ =ExecuteItemUseFromBlackPalette
str r0, [r1]
ldr r1, _080C9CD8 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r2, _080C9CDC @ =c2_exit_to_overworld_2_switch
lsrs r1, r2, 16
movs r3, 0
strh r1, [r0, 0x18]
strh r2, [r0, 0x1A]
ldr r1, _080C9CE0 @ =HandleItemMenuPaletteFade
str r1, [r0]
movs r0, 0x1
negs r0, r0
str r3, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _080C9CF4
.align 2, 0
_080C9CC8: .4byte gUnknown_03005D00
_080C9CCC: .4byte sub_80C9D00
_080C9CD0: .4byte gUnknown_0300485C
_080C9CD4: .4byte ExecuteItemUseFromBlackPalette
_080C9CD8: .4byte gTasks
_080C9CDC: .4byte c2_exit_to_overworld_2_switch
_080C9CE0: .4byte HandleItemMenuPaletteFade
_080C9CE4:
ldr r0, _080C9CFC @ =gScriptItemId
ldrh r0, [r0]
bl ItemId_GetFieldFunc
adds r1, r0, 0
adds r0, r4, 0
bl _call_via_r1
_080C9CF4:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9CFC: .4byte gScriptItemId
thumb_func_end sub_80C9C7C
thumb_func_start sub_80C9D00
sub_80C9D00: @ 80C9D00
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080C9D28 @ =gScriptItemId
ldrh r0, [r0]
movs r1, 0x1
bl RemoveBagItem
bl ScriptContext2_Enable
ldr r0, _080C9D2C @ =gUnknown_081A1654
bl ScriptContext1_SetupScript
adds r0, r4, 0
bl DestroyTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9D28: .4byte gScriptItemId
_080C9D2C: .4byte gUnknown_081A1654
thumb_func_end sub_80C9D00
thumb_func_start ItemUseOutOfBattle_WailmerPail
ItemUseOutOfBattle_WailmerPail: @ 80C9D30
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl TryToWaterBerryTree
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080C9D58
ldr r1, _080C9D50 @ =gUnknown_03005D00
ldr r0, _080C9D54 @ =sub_80C9D74
str r0, [r1]
adds r0, r4, 0
bl SetUpItemUseOnFieldCallback
b _080C9D6A
.align 2, 0
_080C9D50: .4byte gUnknown_03005D00
_080C9D54: .4byte sub_80C9D74
_080C9D58:
ldr r0, _080C9D70 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
ldrb r1, [r1, 0xC]
adds r0, r4, 0
bl DisplayDadsAdviceCannotUseItemMessage
_080C9D6A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9D70: .4byte gTasks
thumb_func_end ItemUseOutOfBattle_WailmerPail
thumb_func_start sub_80C9D74
sub_80C9D74: @ 80C9D74
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl ScriptContext2_Enable
ldr r0, _080C9D94 @ =gUnknown_081A168F
bl ScriptContext1_SetupScript
adds r0, r4, 0
bl DestroyTask
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9D94: .4byte gUnknown_081A168F
thumb_func_end sub_80C9D74
thumb_func_start sub_80C9D98
sub_80C9D98: @ 80C9D98
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080C9DAC @ =gUnknown_02038561
movs r1, 0
strb r1, [r2]
bl ItemMenu_ConfirmNormalFade
pop {r0}
bx r0
.align 2, 0
_080C9DAC: .4byte gUnknown_02038561
thumb_func_end sub_80C9D98
thumb_func_start ItemUseOutOfBattle_Medicine
ItemUseOutOfBattle_Medicine: @ 80C9DB0
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080C9DC4 @ =gUnknown_03004AE4
ldr r1, _080C9DC8 @ =UseMedicine
str r1, [r2]
bl sub_80C9D98
pop {r0}
bx r0
.align 2, 0
_080C9DC4: .4byte gUnknown_03004AE4
_080C9DC8: .4byte UseMedicine
thumb_func_end ItemUseOutOfBattle_Medicine
thumb_func_start ItemUseOutOfBattle_SacredAsh
ItemUseOutOfBattle_SacredAsh: @ 80C9DCC
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _080C9DDC @ =gUnknown_03005CE0
movs r0, 0
strb r0, [r1]
movs r5, 0
b _080C9DE6
.align 2, 0
_080C9DDC: .4byte gUnknown_03005CE0
_080C9DE0:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
_080C9DE6:
cmp r5, 0x5
bhi _080C9E10
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _080C9E28 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
cmp r0, 0
beq _080C9DE0
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
cmp r0, 0
bne _080C9DE0
ldr r0, _080C9E2C @ =gUnknown_03005CE0
strb r5, [r0]
_080C9E10:
ldr r1, _080C9E30 @ =gUnknown_03004AE4
ldr r0, _080C9E34 @ =sub_8070048
str r0, [r1]
ldr r1, _080C9E38 @ =gUnknown_02038561
movs r0, 0x4
strb r0, [r1]
adds r0, r6, 0
bl ItemMenu_ConfirmNormalFade
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080C9E28: .4byte gPlayerParty
_080C9E2C: .4byte gUnknown_03005CE0
_080C9E30: .4byte gUnknown_03004AE4
_080C9E34: .4byte sub_8070048
_080C9E38: .4byte gUnknown_02038561
thumb_func_end ItemUseOutOfBattle_SacredAsh
thumb_func_start ItemUseOutOfBattle_PPRecovery
ItemUseOutOfBattle_PPRecovery: @ 80C9E3C
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080C9E50 @ =gUnknown_03004AE4
ldr r1, _080C9E54 @ =DoPPRecoveryItemEffect
str r1, [r2]
bl sub_80C9D98
pop {r0}
bx r0
.align 2, 0
_080C9E50: .4byte gUnknown_03004AE4
_080C9E54: .4byte DoPPRecoveryItemEffect
thumb_func_end ItemUseOutOfBattle_PPRecovery
thumb_func_start ItemUseOutOfBattle_PPUp
ItemUseOutOfBattle_PPUp: @ 80C9E58
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080C9E6C @ =gUnknown_03004AE4
ldr r1, _080C9E70 @ =DoPPUpItemEffect
str r1, [r2]
bl sub_80C9D98
pop {r0}
bx r0
.align 2, 0
_080C9E6C: .4byte gUnknown_03004AE4
_080C9E70: .4byte DoPPUpItemEffect
thumb_func_end ItemUseOutOfBattle_PPUp
thumb_func_start ItemUseOutOfBattle_RareCandy
ItemUseOutOfBattle_RareCandy: @ 80C9E74
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080C9E88 @ =gUnknown_03004AE4
ldr r1, _080C9E8C @ =DoRareCandyItemEffect
str r1, [r2]
bl sub_80C9D98
pop {r0}
bx r0
.align 2, 0
_080C9E88: .4byte gUnknown_03004AE4
_080C9E8C: .4byte DoRareCandyItemEffect
thumb_func_end ItemUseOutOfBattle_RareCandy
thumb_func_start ItemUseOutOfBattle_TMHM
ItemUseOutOfBattle_TMHM: @ 80C9E90
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0
movs r1, 0xD
movs r2, 0xD
movs r3, 0x14
bl MenuZeroFillWindowRect
ldr r0, _080C9EBC @ =gScriptItemId
ldrh r1, [r0]
movs r0, 0xA9
lsls r0, 1
cmp r1, r0
bls _080C9EC8
ldr r1, _080C9EC0 @ =gOtherText_BootedHM
ldr r2, _080C9EC4 @ =sub_80C9EE4
adds r0, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
b _080C9ED4
.align 2, 0
_080C9EBC: .4byte gScriptItemId
_080C9EC0: .4byte gOtherText_BootedHM
_080C9EC4: .4byte sub_80C9EE4
_080C9EC8:
ldr r1, _080C9EDC @ =gOtherText_BootedTM
ldr r2, _080C9EE0 @ =sub_80C9EE4
adds r0, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
_080C9ED4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9EDC: .4byte gOtherText_BootedTM
_080C9EE0: .4byte sub_80C9EE4
thumb_func_end ItemUseOutOfBattle_TMHM
thumb_func_start sub_80C9EE4
sub_80C9EE4: @ 80C9EE4
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x2
bl PlaySE
ldr r1, _080C9F08 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r1, _080C9F0C @ =sub_80C9F10
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9F08: .4byte gTasks
_080C9F0C: .4byte sub_80C9F10
thumb_func_end sub_80C9EE4
thumb_func_start sub_80C9F10
sub_80C9F10: @ 80C9F10
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080C9F64 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080C9F2A
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080C9F5C
_080C9F2A:
ldr r4, _080C9F68 @ =gStringVar1
ldr r0, _080C9F6C @ =gScriptItemId
ldrh r0, [r0]
bl ItemIdToBattleMoveId
lsls r0, 16
lsrs r0, 16
movs r1, 0xD
muls r1, r0
ldr r0, _080C9F70 @ =gMoveNames
adds r1, r0
adds r0, r4, 0
bl StringCopy
ldr r4, _080C9F74 @ =gStringVar4
ldr r1, _080C9F78 @ =gOtherText_ContainsMove
adds r0, r4, 0
bl StringExpandPlaceholders
ldr r2, _080C9F7C @ =sub_80C9F80
adds r0, r5, 0
adds r1, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
_080C9F5C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C9F64: .4byte gMain
_080C9F68: .4byte gStringVar1
_080C9F6C: .4byte gScriptItemId
_080C9F70: .4byte gMoveNames
_080C9F74: .4byte gStringVar4
_080C9F78: .4byte gOtherText_ContainsMove
_080C9F7C: .4byte sub_80C9F80
thumb_func_end sub_80C9F10
thumb_func_start sub_80C9F80
sub_80C9F80: @ 80C9F80
push {r4,lr}
sub sp, 0x8
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x7
movs r1, 0x7
movs r2, 0x1
bl DisplayYesNoMenu
ldr r0, _080C9FB8 @ =gBGTilemapBuffers + 0x800
movs r1, 0x4
str r1, [sp]
movs r1, 0x1
str r1, [sp, 0x4]
movs r1, 0x8
movs r2, 0x8
movs r3, 0x5
bl sub_80A3FA0
ldr r1, _080C9FBC @ =gUnknown_083D61F4
adds r0, r4, 0
bl sub_80F914C
add sp, 0x8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C9FB8: .4byte gBGTilemapBuffers + 0x800
_080C9FBC: .4byte gUnknown_083D61F4
thumb_func_end sub_80C9F80
thumb_func_start sub_80C9FC0
sub_80C9FC0: @ 80C9FC0
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080C9FD4 @ =gUnknown_03004AE4
ldr r1, _080C9FD8 @ =TeachMonTMMove
str r1, [r2]
bl sub_80C9D98
pop {r0}
bx r0
.align 2, 0
_080C9FD4: .4byte gUnknown_03004AE4
_080C9FD8: .4byte TeachMonTMMove
thumb_func_end sub_80C9FC0
thumb_func_start sub_80C9FDC
sub_80C9FDC: @ 80C9FDC
push {r4,lr}
ldr r4, _080CA004 @ =gScriptItemId
ldrh r0, [r4]
movs r1, 0x1
bl RemoveBagItem
bl sub_80A3E0C
ldrh r0, [r4]
ldr r1, _080CA008 @ =gStringVar2
bl CopyItemName
ldr r0, _080CA00C @ =gStringVar4
ldr r1, _080CA010 @ =gOtherText_UsedItem
bl StringExpandPlaceholders
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA004: .4byte gScriptItemId
_080CA008: .4byte gStringVar2
_080CA00C: .4byte gStringVar4
_080CA010: .4byte gOtherText_UsedItem
thumb_func_end sub_80C9FDC
thumb_func_start ItemUseOutOfBattle_Repel
ItemUseOutOfBattle_Repel: @ 80CA014
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r5, _080CA050 @ =0x00004021
adds r0, r5, 0
bl VarGet
lsls r0, 16
cmp r0, 0
bne _080CA060
ldr r0, _080CA054 @ =gScriptItemId
ldrh r0, [r0]
bl ItemId_GetHoldEffectParam
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
bl VarSet
bl sub_80C9FDC
ldr r1, _080CA058 @ =gStringVar4
ldr r2, _080CA05C @ =CleanUpItemMenuMessage
adds r0, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
b _080CA06C
.align 2, 0
_080CA050: .4byte 0x00004021
_080CA054: .4byte gScriptItemId
_080CA058: .4byte gStringVar4
_080CA05C: .4byte CleanUpItemMenuMessage
_080CA060:
ldr r1, _080CA074 @ =gOtherText_RepelLingers
ldr r2, _080CA078 @ =CleanUpItemMenuMessage
adds r0, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
_080CA06C:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080CA074: .4byte gOtherText_RepelLingers
_080CA078: .4byte CleanUpItemMenuMessage
thumb_func_end ItemUseOutOfBattle_Repel
thumb_func_start sub_80CA07C
sub_80CA07C: @ 80CA07C
push {lr}
bl sub_80A3E0C
ldr r0, _080CA090 @ =gScriptItemId
ldrh r0, [r0]
ldr r1, _080CA094 @ =gStringVar2
bl CopyItemName
pop {r0}
bx r0
.align 2, 0
_080CA090: .4byte gScriptItemId
_080CA094: .4byte gStringVar2
thumb_func_end sub_80CA07C
thumb_func_start sub_80CA098
sub_80CA098: @ 80CA098
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080CA0D0 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _080CA0C8
movs r0, 0x75
bl PlaySE
ldr r1, _080CA0D4 @ =gStringVar4
ldr r2, _080CA0D8 @ =CleanUpItemMenuMessage
adds r0, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
_080CA0C8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA0D0: .4byte gTasks
_080CA0D4: .4byte gStringVar4
_080CA0D8: .4byte CleanUpItemMenuMessage
thumb_func_end sub_80CA098
thumb_func_start ItemUseOutOfBattle_BlackWhiteFlute
ItemUseOutOfBattle_BlackWhiteFlute: @ 80CA0DC
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
ldr r0, _080CA10C @ =gScriptItemId
ldrh r0, [r0]
cmp r0, 0x2B
bne _080CA124
ldr r0, _080CA110 @ =0x0000084d
bl FlagSet
ldr r0, _080CA114 @ =0x0000084e
bl FlagReset
bl sub_80CA07C
ldr r0, _080CA118 @ =gStringVar4
ldr r1, _080CA11C @ =gOtherText_UsedFlute
bl StringExpandPlaceholders
ldr r1, _080CA120 @ =gTasks
lsls r0, r4, 2
adds r0, r4
b _080CA146
.align 2, 0
_080CA10C: .4byte gScriptItemId
_080CA110: .4byte 0x0000084d
_080CA114: .4byte 0x0000084e
_080CA118: .4byte gStringVar4
_080CA11C: .4byte gOtherText_UsedFlute
_080CA120: .4byte gTasks
_080CA124:
cmp r0, 0x2A
bne _080CA152
ldr r0, _080CA158 @ =0x0000084e
bl FlagSet
ldr r0, _080CA15C @ =0x0000084d
bl FlagReset
bl sub_80CA07C
ldr r0, _080CA160 @ =gStringVar4
ldr r1, _080CA164 @ =gOtherText_UsedRepel
bl StringExpandPlaceholders
ldr r1, _080CA168 @ =gTasks
lsls r0, r5, 2
adds r0, r5
_080CA146:
lsls r0, 3
adds r0, r1
ldr r1, _080CA16C @ =sub_80CA098
str r1, [r0]
movs r1, 0
strh r1, [r0, 0x26]
_080CA152:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080CA158: .4byte 0x0000084e
_080CA15C: .4byte 0x0000084d
_080CA160: .4byte gStringVar4
_080CA164: .4byte gOtherText_UsedRepel
_080CA168: .4byte gTasks
_080CA16C: .4byte sub_80CA098
thumb_func_end ItemUseOutOfBattle_BlackWhiteFlute
thumb_func_start task08_080A1C44
task08_080A1C44: @ 80CA170
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl player_avatar_init_params_reset
bl sub_80878A8
adds r0, r4, 0
bl DestroyTask
pop {r4}
pop {r0}
bx r0
thumb_func_end task08_080A1C44
thumb_func_start sub_80CA18C
sub_80CA18C: @ 80CA18C
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl sub_8053014
bl sub_80C9FDC
ldr r1, _080CA1BC @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
movs r1, 0
strh r1, [r0, 0x8]
ldr r1, _080CA1C0 @ =gStringVar4
ldr r2, _080CA1C4 @ =task08_080A1C44
adds r0, r4, 0
movs r3, 0
bl DisplayItemMessageOnField
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA1BC: .4byte gTasks
_080CA1C0: .4byte gStringVar4
_080CA1C4: .4byte task08_080A1C44
thumb_func_end sub_80CA18C
thumb_func_start sub_80CA1C8
sub_80CA1C8: @ 80CA1C8
push {lr}
ldr r0, _080CA1D8 @ =gMapHeader
ldrb r0, [r0, 0x17]
cmp r0, 0x4
beq _080CA1DC
movs r0, 0
b _080CA1DE
.align 2, 0
_080CA1D8: .4byte gMapHeader
_080CA1DC:
movs r0, 0x1
_080CA1DE:
pop {r1}
bx r1
thumb_func_end sub_80CA1C8
thumb_func_start ItemUseOutOfBattle_EscapeRope
ItemUseOutOfBattle_EscapeRope: @ 80CA1E4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl sub_80CA1C8
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080CA20C
ldr r1, _080CA204 @ =gUnknown_03005D00
ldr r0, _080CA208 @ =sub_80CA18C
str r0, [r1]
adds r0, r4, 0
bl SetUpItemUseOnFieldCallback
b _080CA21E
.align 2, 0
_080CA204: .4byte gUnknown_03005D00
_080CA208: .4byte sub_80CA18C
_080CA20C:
ldr r0, _080CA224 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
ldrb r1, [r1, 0xC]
adds r0, r4, 0
bl DisplayDadsAdviceCannotUseItemMessage
_080CA21E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA224: .4byte gTasks
thumb_func_end ItemUseOutOfBattle_EscapeRope
thumb_func_start ItemUseOutOfBattle_EvolutionStone
ItemUseOutOfBattle_EvolutionStone: @ 80CA228
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080CA23C @ =gUnknown_03004AE4
ldr r1, _080CA240 @ =DoEvolutionStoneItemEffect
str r1, [r2]
bl sub_80C9D98
pop {r0}
bx r0
.align 2, 0
_080CA23C: .4byte gUnknown_03004AE4
_080CA240: .4byte DoEvolutionStoneItemEffect
thumb_func_end ItemUseOutOfBattle_EvolutionStone
thumb_func_start ItemUseInBattle_PokeBall
ItemUseInBattle_PokeBall: @ 80CA244
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl PlayerPartyAndPokemonStorageFull
lsls r0, 24
cmp r0, 0
bne _080CA26C
ldr r0, _080CA268 @ =gScriptItemId
ldrh r0, [r0]
movs r1, 0x1
bl RemoveBagItem
adds r0, r4, 0
bl sub_80A7094
b _080CA284
.align 2, 0
_080CA268: .4byte gScriptItemId
_080CA26C:
movs r0, 0
movs r1, 0xD
movs r2, 0xD
movs r3, 0x14
bl MenuZeroFillWindowRect
ldr r1, _080CA28C @ =gOtherText_BoxIsFull
ldr r2, _080CA290 @ =CleanUpItemMenuMessage
adds r0, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
_080CA284:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA28C: .4byte gOtherText_BoxIsFull
_080CA290: .4byte CleanUpItemMenuMessage
thumb_func_end ItemUseInBattle_PokeBall
thumb_func_start sub_80CA294
sub_80CA294: @ 80CA294
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _080CA2B8 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080CA2AE
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080CA2B4
_080CA2AE:
adds r0, r2, 0
bl sub_80A7094
_080CA2B4:
pop {r0}
bx r0
.align 2, 0
_080CA2B8: .4byte gMain
thumb_func_end sub_80CA294
thumb_func_start sub_80CA2BC
sub_80CA2BC: @ 80CA2BC
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080CA304 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x26]
adds r0, 0x1
strh r0, [r1, 0x26]
lsls r0, 16
asrs r0, 16
cmp r0, 0x7
ble _080CA2FC
movs r0, 0x1
bl PlaySE
ldr r4, _080CA308 @ =gScriptItemId
ldrh r0, [r4]
movs r1, 0x1
bl RemoveBagItem
ldrh r0, [r4]
bl sub_803F378
adds r1, r0, 0
ldr r2, _080CA30C @ =sub_80CA294
adds r0, r5, 0
movs r3, 0x1
bl DisplayItemMessageOnField
_080CA2FC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080CA304: .4byte gTasks
_080CA308: .4byte gScriptItemId
_080CA30C: .4byte sub_80CA294
thumb_func_end sub_80CA2BC
thumb_func_start ItemUseInBattle_StatIncrease
ItemUseInBattle_StatIncrease: @ 80CA310
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080CA35C @ =gUnknown_02024A6A
ldr r0, _080CA360 @ =gUnknown_02024E6C
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r4, [r0]
movs r0, 0
movs r1, 0xD
movs r2, 0xD
movs r3, 0x14
bl MenuZeroFillWindowRect
movs r0, 0x64
muls r0, r4
ldr r1, _080CA364 @ =gPlayerParty
adds r0, r1
ldr r1, _080CA368 @ =gScriptItemId
ldrh r1, [r1]
lsls r4, 24
lsrs r4, 24
adds r2, r4, 0
movs r3, 0
bl ExecuteTableBasedItemEffect_
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0
beq _080CA374
ldr r1, _080CA36C @ =gOtherText_WontHaveAnyEffect
ldr r2, _080CA370 @ =CleanUpItemMenuMessage
adds r0, r5, 0
movs r3, 0x1
bl DisplayItemMessageOnField
b _080CA384
.align 2, 0
_080CA35C: .4byte gUnknown_02024A6A
_080CA360: .4byte gUnknown_02024E6C
_080CA364: .4byte gPlayerParty
_080CA368: .4byte gScriptItemId
_080CA36C: .4byte gOtherText_WontHaveAnyEffect
_080CA370: .4byte CleanUpItemMenuMessage
_080CA374:
ldr r0, _080CA38C @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
ldr r0, _080CA390 @ =sub_80CA2BC
str r0, [r1]
strh r2, [r1, 0x26]
_080CA384:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080CA38C: .4byte gTasks
_080CA390: .4byte sub_80CA2BC
thumb_func_end ItemUseInBattle_StatIncrease
thumb_func_start sub_80CA394
sub_80CA394: @ 80CA394
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080CA3BC @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080CA3B4
bl sub_8094E4C
bl gpu_pal_allocator_reset__manage_upper_four
adds r0, r4, 0
bl DestroyTask
_080CA3B4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA3BC: .4byte gPaletteFade
thumb_func_end sub_80CA394
thumb_func_start sub_80CA3C0
sub_80CA3C0: @ 80CA3C0
push {lr}
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
ldr r2, _080CA3EC @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _080CA3F0 @ =sub_80CA394
str r0, [r1]
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_080CA3EC: .4byte gTasks
_080CA3F0: .4byte sub_80CA394
thumb_func_end sub_80CA3C0
thumb_func_start ItemUseInBattle_Medicine
ItemUseInBattle_Medicine: @ 80CA3F4
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080CA408 @ =gUnknown_03004AE4
ldr r1, _080CA40C @ =UseMedicine
str r1, [r2]
bl sub_80CA3C0
pop {r0}
bx r0
.align 2, 0
_080CA408: .4byte gUnknown_03004AE4
_080CA40C: .4byte UseMedicine
thumb_func_end ItemUseInBattle_Medicine
thumb_func_start unref_sub_80CA410
unref_sub_80CA410: @ 80CA410
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080CA424 @ =gUnknown_03004AE4
ldr r1, _080CA428 @ =sub_8070048
str r1, [r2]
bl sub_80CA3C0
pop {r0}
bx r0
.align 2, 0
_080CA424: .4byte gUnknown_03004AE4
_080CA428: .4byte sub_8070048
thumb_func_end unref_sub_80CA410
thumb_func_start ItemUseInBattle_PPRecovery
ItemUseInBattle_PPRecovery: @ 80CA42C
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080CA440 @ =gUnknown_03004AE4
ldr r1, _080CA444 @ =DoPPRecoveryItemEffect
str r1, [r2]
bl sub_80CA3C0
pop {r0}
bx r0
.align 2, 0
_080CA440: .4byte gUnknown_03004AE4
_080CA444: .4byte DoPPRecoveryItemEffect
thumb_func_end ItemUseInBattle_PPRecovery
thumb_func_start unref_sub_80CA448
unref_sub_80CA448: @ 80CA448
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
movs r1, 0xD
movs r2, 0xD
movs r3, 0x14
bl MenuZeroFillWindowRect
ldr r4, _080CA494 @ =gScriptItemId
ldrh r1, [r4]
movs r0, 0
movs r2, 0
bl ExecuteTableBasedItemEffect__
lsls r0, 24
cmp r0, 0
bne _080CA4AC
ldrh r0, [r4]
movs r1, 0x1
bl RemoveBagItem
ldr r0, _080CA498 @ =gPlayerParty
ldr r1, _080CA49C @ =gStringVar1
bl GetMonNickname
ldr r4, _080CA4A0 @ =gStringVar4
ldr r1, _080CA4A4 @ =gOtherText_SnapConfusion
adds r0, r4, 0
bl StringExpandPlaceholders
ldr r2, _080CA4A8 @ =sub_80A7094
adds r0, r5, 0
adds r1, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
b _080CA4B8
.align 2, 0
_080CA494: .4byte gScriptItemId
_080CA498: .4byte gPlayerParty
_080CA49C: .4byte gStringVar1
_080CA4A0: .4byte gStringVar4
_080CA4A4: .4byte gOtherText_SnapConfusion
_080CA4A8: .4byte sub_80A7094
_080CA4AC:
ldr r1, _080CA4C0 @ =gOtherText_WontHaveAnyEffect
ldr r2, _080CA4C4 @ =CleanUpItemMenuMessage
adds r0, r5, 0
movs r3, 0x1
bl DisplayItemMessageOnField
_080CA4B8:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080CA4C0: .4byte gOtherText_WontHaveAnyEffect
_080CA4C4: .4byte CleanUpItemMenuMessage
thumb_func_end unref_sub_80CA448
thumb_func_start ItemUseInBattle_Escape
ItemUseInBattle_Escape: @ 80CA4C8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0
movs r1, 0xD
movs r2, 0xD
movs r3, 0x14
bl MenuZeroFillWindowRect
ldr r0, _080CA4F8 @ =gBattleTypeFlags
ldrh r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _080CA504
bl sub_80C9FDC
ldr r1, _080CA4FC @ =gStringVar4
ldr r2, _080CA500 @ =sub_80A7094
adds r0, r4, 0
movs r3, 0x1
bl DisplayItemMessageOnField
b _080CA516
.align 2, 0
_080CA4F8: .4byte gBattleTypeFlags
_080CA4FC: .4byte gStringVar4
_080CA500: .4byte sub_80A7094
_080CA504:
ldr r0, _080CA51C @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
ldrb r1, [r1, 0xC]
adds r0, r4, 0
bl DisplayDadsAdviceCannotUseItemMessage
_080CA516:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA51C: .4byte gTasks
thumb_func_end ItemUseInBattle_Escape
thumb_func_start ItemUseOutOfBattle_EnigmaBerry
ItemUseOutOfBattle_EnigmaBerry: @ 80CA520
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080CA544 @ =gScriptItemId
ldrh r0, [r0]
bl GetItemEffectType
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
cmp r0, 0x14
bls _080CA53A
b _080CA62C
_080CA53A:
lsls r0, 2
ldr r1, _080CA548 @ =_080CA54C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080CA544: .4byte gScriptItemId
_080CA548: .4byte _080CA54C
.align 2, 0
_080CA54C:
.4byte _080CA5D8
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA62C
.4byte _080CA62C
.4byte _080CA5BC
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA5A0
.4byte _080CA62C
.4byte _080CA5F4
.4byte _080CA5F4
.4byte _080CA610
_080CA5A0:
ldr r0, _080CA5B8 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x1
strh r0, [r1, 0x26]
adds r0, r4, 0
bl ItemUseOutOfBattle_Medicine
b _080CA640
.align 2, 0
_080CA5B8: .4byte gTasks
_080CA5BC:
ldr r0, _080CA5D4 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x1
strh r0, [r1, 0x26]
adds r0, r4, 0
bl ItemUseOutOfBattle_SacredAsh
b _080CA640
.align 2, 0
_080CA5D4: .4byte gTasks
_080CA5D8:
ldr r0, _080CA5F0 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x1
strh r0, [r1, 0x26]
adds r0, r4, 0
bl ItemUseOutOfBattle_RareCandy
b _080CA640
.align 2, 0
_080CA5F0: .4byte gTasks
_080CA5F4:
ldr r0, _080CA60C @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x1
strh r0, [r1, 0x26]
adds r0, r4, 0
bl ItemUseOutOfBattle_PPUp
b _080CA640
.align 2, 0
_080CA60C: .4byte gTasks
_080CA610:
ldr r0, _080CA628 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x1
strh r0, [r1, 0x26]
adds r0, r4, 0
bl ItemUseOutOfBattle_PPRecovery
b _080CA640
.align 2, 0
_080CA628: .4byte gTasks
_080CA62C:
ldr r0, _080CA648 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r0, 0x4
strh r0, [r1, 0x26]
adds r0, r4, 0
bl ItemUseOutOfBattle_CannotUse
_080CA640:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080CA648: .4byte gTasks
thumb_func_end ItemUseOutOfBattle_EnigmaBerry
thumb_func_start ItemUseInBattle_EnigmaBerry
ItemUseInBattle_EnigmaBerry: @ 80CA64C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _080CA66C @ =gScriptItemId
ldrh r0, [r0]
bl GetItemEffectType
lsls r0, 24
lsrs r0, 24
cmp r0, 0x15
bhi _080CA6E4
lsls r0, 2
ldr r1, _080CA670 @ =_080CA674
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080CA66C: .4byte gScriptItemId
_080CA670: .4byte _080CA674
.align 2, 0
_080CA674:
.4byte _080CA6CC
.4byte _080CA6E4
.4byte _080CA6D4
.4byte _080CA6D4
.4byte _080CA6D4
.4byte _080CA6D4
.4byte _080CA6D4
.4byte _080CA6D4
.4byte _080CA6D4
.4byte _080CA6D4
.4byte _080CA6E4
.4byte _080CA6D4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6E4
.4byte _080CA6DC
_080CA6CC:
adds r0, r4, 0
bl ItemUseInBattle_StatIncrease
b _080CA6EA
_080CA6D4:
adds r0, r4, 0
bl ItemUseInBattle_Medicine
b _080CA6EA
_080CA6DC:
adds r0, r4, 0
bl ItemUseInBattle_PPRecovery
b _080CA6EA
_080CA6E4:
adds r0, r4, 0
bl ItemUseOutOfBattle_CannotUse
_080CA6EA:
pop {r4}
pop {r0}
bx r0
thumb_func_end ItemUseInBattle_EnigmaBerry
thumb_func_start ItemUseOutOfBattle_CannotUse
ItemUseOutOfBattle_CannotUse: @ 80CA6F0
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080CA70C @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldrb r1, [r1, 0xC]
bl DisplayDadsAdviceCannotUseItemMessage
pop {r0}
bx r0
.align 2, 0
_080CA70C: .4byte gTasks
thumb_func_end ItemUseOutOfBattle_CannotUse
.align 2, 0 @ Don't pad with nop.