.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start sub_80C8FAC sub_80C8FAC: @ 80C8FAC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080C8FD0 @ =gScriptItemId ldrh r0, [r1] cmp r0, 0xAF bne _080C8FD8 ldr r1, _080C8FD4 @ =gTasks lsls r2, r4, 2 adds r0, r2, r4 lsls r0, 3 adds r0, r1 ldrh r0, [r0, 0x26] subs r0, 0x1 lsls r0, 24 lsrs r3, r0, 24 b _080C8FE6 .align 2, 0 _080C8FD0: .4byte gScriptItemId _080C8FD4: .4byte gTasks _080C8FD8: ldrh r0, [r1] bl ItemId_GetType subs r0, 0x1 lsls r0, 24 lsrs r3, r0, 24 lsls r2, r4, 2 _080C8FE6: ldr r0, _080C9008 @ =gTasks adds r1, r2, r4 lsls r1, 3 adds r1, r0 ldr r2, _080C900C @ =gUnknown_083D61E4 lsls r0, r3, 2 adds r0, r2 ldr r2, [r0] lsrs r0, r2, 16 strh r0, [r1, 0x18] strh r2, [r1, 0x1A] ldr r0, _080C9010 @ =sub_80A5B00 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _080C9008: .4byte gTasks _080C900C: .4byte gUnknown_083D61E4 _080C9010: .4byte sub_80A5B00 thumb_func_end sub_80C8FAC thumb_func_start unknown_ItemMenu_Confirm unknown_ItemMenu_Confirm: @ 80C9014 push {lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 bl sub_80C8FAC 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 thumb_func_end unknown_ItemMenu_Confirm thumb_func_start sub_80C9038 sub_80C9038: @ 80C9038 push {lr} lsls r0, 24 lsrs r0, 24 bl sub_80C8FAC movs r0, 0x1 movs r1, 0 bl fade_screen pop {r0} bx r0 thumb_func_end sub_80C9038 thumb_func_start SetUpItemUseOnFieldCallback SetUpItemUseOnFieldCallback: @ 80C9050 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r1, _080C9078 @ =gTasks lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r1 movs r1, 0xC ldrsh r0, [r0, r1] cmp r0, 0x1 beq _080C9084 ldr r1, _080C907C @ =gUnknown_0300485C ldr r0, _080C9080 @ =sub_80A5CC4 str r0, [r1] adds r0, r2, 0 bl unknown_ItemMenu_Confirm b _080C908E .align 2, 0 _080C9078: .4byte gTasks _080C907C: .4byte gUnknown_0300485C _080C9080: .4byte sub_80A5CC4 _080C9084: ldr r0, _080C9094 @ =gUnknown_03005D00 ldr r1, [r0] adds r0, r2, 0 bl _call_via_r1 _080C908E: pop {r0} bx r0 .align 2, 0 _080C9094: .4byte gUnknown_03005D00 thumb_func_end SetUpItemUseOnFieldCallback thumb_func_start sub_80C9098 sub_80C9098: @ 80C9098 push {r4-r6,lr} adds r4, r1, 0 adds r1, r2, 0 lsls r0, 24 lsrs r6, r0, 24 lsls r4, 24 lsrs r4, 24 ldr r5, _080C90CC @ =gStringVar4 adds r0, r5, 0 bl StringExpandPlaceholders cmp r4, 0 bne _080C90D4 movs r0, 0 movs r1, 0xD movs r2, 0xD movs r3, 0x14 bl MenuZeroFillWindowRect ldr r2, _080C90D0 @ =sub_80A5C48 adds r0, r6, 0 adds r1, r5, 0 movs r3, 0x1 bl DisplayItemMessageOnField b _080C90E0 .align 2, 0 _080C90CC: .4byte gStringVar4 _080C90D0: .4byte sub_80A5C48 _080C90D4: ldr r2, _080C90E8 @ =sub_80A5C9C adds r0, r6, 0 adds r1, r5, 0 movs r3, 0 bl DisplayItemMessageOnField _080C90E0: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080C90E8: .4byte sub_80A5C9C thumb_func_end sub_80C9098 thumb_func_start DisplayDadsAdviceCannotUseItemMessage DisplayDadsAdviceCannotUseItemMessage: @ 80C90EC push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 ldr r2, _080C9100 @ =gOtherText_DadsAdvice bl sub_80C9098 pop {r0} bx r0 .align 2, 0 _080C9100: .4byte gOtherText_DadsAdvice thumb_func_end DisplayDadsAdviceCannotUseItemMessage thumb_func_start sub_80C9104 sub_80C9104: @ 80C9104 push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 ldr r2, _080C9118 @ =gOtherText_CantGetOffBike bl sub_80C9098 pop {r0} bx r0 .align 2, 0 _080C9118: .4byte gOtherText_CantGetOffBike thumb_func_end sub_80C9104 thumb_func_start CheckIfItemIsTMHMOrEvolutionStone CheckIfItemIsTMHMOrEvolutionStone: @ 80C911C push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 bl ItemId_GetFieldFunc ldr r1, _080C9134 @ =ItemUseOutOfBattle_TMHM cmp r0, r1 bne _080C9138 movs r0, 0x1 b _080C914E .align 2, 0 _080C9134: .4byte ItemUseOutOfBattle_TMHM _080C9138: adds r0, r4, 0 bl ItemId_GetFieldFunc ldr r1, _080C9148 @ =ItemUseOutOfBattle_EvolutionStone cmp r0, r1 beq _080C914C movs r0, 0 b _080C914E .align 2, 0 _080C9148: .4byte ItemUseOutOfBattle_EvolutionStone _080C914C: movs r0, 0x2 _080C914E: pop {r4} pop {r1} bx r1 thumb_func_end CheckIfItemIsTMHMOrEvolutionStone thumb_func_start sub_80C9154 sub_80C9154: @ 80C9154 push {r4,lr} sub sp, 0x24 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080C9188 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080C9180 mov r1, sp ldr r0, _080C918C @ =gScriptItemId ldrh r0, [r0] strh r0, [r1, 0x20] ldr r1, _080C9190 @ =sub_80A5D04 mov r0, sp movs r2, 0 bl sub_80F890C adds r0, r4, 0 bl DestroyTask _080C9180: add sp, 0x24 pop {r4} pop {r0} bx r0 .align 2, 0 _080C9188: .4byte gPaletteFade _080C918C: .4byte gScriptItemId _080C9190: .4byte sub_80A5D04 thumb_func_end sub_80C9154 thumb_func_start ItemUseOutOfBattle_Mail ItemUseOutOfBattle_Mail: @ 80C9194 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _080C91C4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _080C91C8 @ =sub_80C9154 str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _080C91C4: .4byte gTasks _080C91C8: .4byte sub_80C9154 thumb_func_end ItemUseOutOfBattle_Mail thumb_func_start ItemUseOutOfBattle_Bike ItemUseOutOfBattle_Bike: @ 80C91CC push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080C924C @ =0x0000082b bl FlagGet lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080C9238 adds r0, r4, 0 bl MetatileBehavior_IsVerticalRail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080C9238 adds r0, r4, 0 bl MetatileBehavior_IsHorizontalRail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080C9238 adds r0, r4, 0 bl MetatileBehavior_IsIsolatedVerticalRail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080C9238 adds r0, r4, 0 bl MetatileBehavior_IsIsolatedHorizontalRail lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080C9254 _080C9238: ldr r0, _080C9250 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrb r1, [r1, 0xC] adds r0, r5, 0 bl sub_80C9104 b _080C928E .align 2, 0 _080C924C: .4byte 0x0000082b _080C9250: .4byte gTasks _080C9254: bl sub_8053C44 cmp r0, 0x1 bne _080C927C bl sub_80E5EF4 lsls r0, 24 cmp r0, 0 bne _080C927C ldr r1, _080C9274 @ =gUnknown_03005D00 ldr r0, _080C9278 @ =ItemUseOnFieldCB_Bike str r0, [r1] adds r0, r5, 0 bl SetUpItemUseOnFieldCallback b _080C928E .align 2, 0 _080C9274: .4byte gUnknown_03005D00 _080C9278: .4byte ItemUseOnFieldCB_Bike _080C927C: ldr r0, _080C9298 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrb r1, [r1, 0xC] adds r0, r5, 0 bl DisplayDadsAdviceCannotUseItemMessage _080C928E: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080C9298: .4byte gTasks thumb_func_end ItemUseOutOfBattle_Bike thumb_func_start ItemUseOnFieldCB_Bike ItemUseOnFieldCB_Bike: @ 80C929C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r4, _080C92E0 @ =gScriptItemId ldrh r0, [r4] bl ItemId_GetSecondaryId lsls r0, 24 cmp r0, 0 bne _080C92B6 movs r0, 0x2 bl GetOnOffBike _080C92B6: ldrh r0, [r4] bl ItemId_GetSecondaryId lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080C92CA movs r0, 0x4 bl GetOnOffBike _080C92CA: bl sub_8064E2C bl ScriptContext2_Disable adds r0, r5, 0 bl DestroyTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080C92E0: .4byte gScriptItemId thumb_func_end ItemUseOnFieldCB_Bike thumb_func_start CanFish CanFish: @ 80C92E4 push {r4-r6,lr} sub sp, 0x4 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileBehaviorAt lsls r0, 16 lsrs r6, r0, 16 lsls r0, r6, 24 lsrs r5, r0, 24 adds r0, r5, 0 bl MetatileBehavior_IsWaterfall lsls r0, 24 cmp r0, 0 bne _080C936C movs r0, 0x10 bl TestPlayerAvatarFlags lsls r0, 24 cmp r0, 0 bne _080C936C movs r0, 0x8 bl TestPlayerAvatarFlags lsls r0, 24 cmp r0, 0 bne _080C933C bl IsPlayerFacingSurfableFishableWater lsls r0, 24 cmp r0, 0 beq _080C936C _080C9338: movs r0, 0x1 b _080C936E _080C933C: adds r0, r5, 0 bl MetatileBehavior_IsSurfableWaterOrUnderwater lsls r0, 24 cmp r0, 0 beq _080C935C mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridIsImpassableAt lsls r0, 24 cmp r0, 0 beq _080C9338 _080C935C: lsls r0, r6, 24 lsrs r0, 24 bl MetatileBehavior_IsBridge lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _080C9338 _080C936C: movs r0, 0 _080C936E: add sp, 0x4 pop {r4-r6} pop {r1} bx r1 thumb_func_end CanFish thumb_func_start ItemUseOutOfBattle_Rod ItemUseOutOfBattle_Rod: @ 80C9378 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl CanFish cmp r0, 0x1 bne _080C939C ldr r1, _080C9394 @ =gUnknown_03005D00 ldr r0, _080C9398 @ =ItemUseOnFieldCB_Rod str r0, [r1] adds r0, r4, 0 bl SetUpItemUseOnFieldCallback b _080C93AE .align 2, 0 _080C9394: .4byte gUnknown_03005D00 _080C9398: .4byte ItemUseOnFieldCB_Rod _080C939C: ldr r0, _080C93B4 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldrb r1, [r1, 0xC] adds r0, r4, 0 bl DisplayDadsAdviceCannotUseItemMessage _080C93AE: pop {r4} pop {r0} bx r0 .align 2, 0 _080C93B4: .4byte gTasks thumb_func_end ItemUseOutOfBattle_Rod thumb_func_start ItemUseOnFieldCB_Rod ItemUseOnFieldCB_Rod: @ 80C93B8 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _080C93DC @ =gScriptItemId ldrh r0, [r0] bl ItemId_GetSecondaryId lsls r0, 24 lsrs r0, 24 bl StartFishing adds r0, r4, 0 bl DestroyTask pop {r4} pop {r0} bx r0 .align 2, 0 _080C93DC: .4byte gScriptItemId thumb_func_end ItemUseOnFieldCB_Rod thumb_func_start ItemUseOutOfBattle_Itemfinder ItemUseOutOfBattle_Itemfinder: @ 80C93E0 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x27 bl sav12_xor_increment ldr r1, _080C9400 @ =gUnknown_03005D00 ldr r0, _080C9404 @ =ItemUseOnFieldCB_Itemfinder str r0, [r1] adds r0, r4, 0 bl SetUpItemUseOnFieldCallback pop {r4} pop {r0} bx r0 .align 2, 0 _080C9400: .4byte gUnknown_03005D00 _080C9404: .4byte ItemUseOnFieldCB_Itemfinder thumb_func_end ItemUseOutOfBattle_Itemfinder thumb_func_start ItemUseOnFieldCB_Itemfinder ItemUseOnFieldCB_Itemfinder: @ 80C9408 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _080C9430 @ =gMapHeader ldr r0, [r0, 0x4] adds r1, r4, 0 bl ItemfinderCheckForHiddenItems lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080C943C ldr r0, _080C9434 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _080C9438 @ =sub_80C9458 str r0, [r1] b _080C9448 .align 2, 0 _080C9430: .4byte gMapHeader _080C9434: .4byte gTasks _080C9438: .4byte sub_80C9458 _080C943C: ldr r1, _080C9450 @ =gOtherText_NoResponse ldr r2, _080C9454 @ =sub_80C9520 adds r0, r4, 0 movs r3, 0 bl DisplayItemMessageOnField _080C9448: pop {r4} pop {r0} bx r0 .align 2, 0 _080C9450: .4byte gOtherText_NoResponse _080C9454: .4byte sub_80C9520 thumb_func_end ItemUseOnFieldCB_Itemfinder thumb_func_start sub_80C9458 sub_80C9458: @ 80C9458 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r5, r0, 24 lsls r6, r5, 2 adds r0, r6, r5 lsls r7, r0, 3 ldr r0, _080C94AC @ =gTasks + 0x8 mov r8, r0 adds r4, r7, r0 movs r1, 0x6 ldrsh r0, [r4, r1] cmp r0, 0 bne _080C950C movs r2, 0x8 ldrsh r0, [r4, r2] cmp r0, 0x4 bne _080C9500 movs r1, 0 ldrsh r0, [r4, r1] movs r2, 0x2 ldrsh r1, [r4, r2] bl sub_80C9908 lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _080C94B8 ldr r1, _080C94B0 @ =gUnknown_083D61F0 subs r0, 0x1 adds r0, r1 ldrb r0, [r0] bl sub_80C997C mov r0, r8 subs r0, 0x8 adds r0, r7, r0 ldr r1, _080C94B4 @ =sub_80C99EC str r1, [r0] b _080C9516 .align 2, 0 _080C94AC: .4byte gTasks + 0x8 _080C94B0: .4byte gUnknown_083D61F0 _080C94B4: .4byte sub_80C99EC _080C94B8: bl player_get_direction_lower_nybble lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 adds r3, r6, 0 ldr r7, _080C94F4 @ =gUnknown_083D61F0 movs r6, 0x3 _080C94C8: adds r0, r1, r7 adds r1, 0x1 ldrb r0, [r0] cmp r2, r0 bne _080C94D8 adds r0, r1, 0 ands r0, r6 strh r0, [r4, 0xA] _080C94D8: lsls r0, r1, 24 lsrs r1, r0, 24 cmp r1, 0x3 bls _080C94C8 ldr r1, _080C94F8 @ =gTasks adds r0, r3, r5 lsls r0, 3 adds r0, r1 ldr r1, _080C94FC @ =sub_80C9A38 str r1, [r0] movs r0, 0 strh r0, [r4, 0x6] strh r0, [r4, 0x4] b _080C9516 .align 2, 0 _080C94F4: .4byte gUnknown_083D61F0 _080C94F8: .4byte gTasks _080C94FC: .4byte sub_80C9A38 _080C9500: movs r0, 0x48 bl PlaySE ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _080C950C: ldrh r0, [r4, 0x6] adds r0, 0x1 movs r1, 0x1F ands r0, r1 strh r0, [r4, 0x6] _080C9516: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80C9458 thumb_func_start sub_80C9520 sub_80C9520: @ 80C9520 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect bl sub_8064E2C bl ScriptContext2_Disable adds r0, r4, 0 bl DestroyTask pop {r4} pop {r0} bx r0 thumb_func_end sub_80C9520 thumb_func_start ItemfinderCheckForHiddenItems ItemfinderCheckForHiddenItems: @ 80C9548 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 adds r5, r0, 0 lsls r1, 24 lsrs r6, r1, 24 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords ldr r1, _080C9618 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 movs r1, 0 strh r1, [r0, 0xC] movs r3, 0 mov r9, r4 ldrb r0, [r5, 0x3] cmp r3, r0 bge _080C95FC subs r1, 0x5 mov r8, r1 _080C9580: lsls r3, 16 asrs r1, r3, 16 ldr r2, [r5, 0x10] lsls r0, r1, 1 adds r0, r1 lsls r4, r0, 2 adds r1, r4, r2 ldrb r0, [r1, 0x5] adds r7, r3, 0 cmp r0, 0x7 bne _080C95EC movs r2, 0x96 lsls r2, 2 adds r0, r2, 0 ldrh r1, [r1, 0xA] adds r0, r1 lsls r0, 16 lsrs r0, 16 bl FlagGet lsls r0, 24 cmp r0, 0 bne _080C95EC ldr r1, [r5, 0x10] adds r1, r4, r1 ldrh r2, [r1] adds r2, 0x7 mov r0, sp ldrh r0, [r0] subs r2, r0 ldrh r0, [r1, 0x2] adds r0, 0x7 mov r3, r9 ldrh r1, [r3] subs r0, r1 lsls r0, 16 lsrs r0, 16 lsls r2, 16 asrs r1, r2, 16 movs r3, 0xE0 lsls r3, 11 adds r2, r3 lsrs r2, 16 cmp r2, 0xE bhi _080C95EC lsls r0, 16 asrs r2, r0, 16 cmp r2, r8 blt _080C95EC cmp r2, 0x5 bgt _080C95EC adds r0, r6, 0 bl sub_80C9838 _080C95EC: movs r1, 0x80 lsls r1, 9 adds r0, r7, r1 lsrs r3, r0, 16 asrs r0, 16 ldrb r2, [r5, 0x3] cmp r0, r2 blt _080C9580 _080C95FC: adds r0, r6, 0 bl sub_80C9720 ldr r0, _080C9618 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 movs r3, 0xC ldrsh r0, [r1, r3] cmp r0, 0x1 beq _080C961C movs r0, 0 b _080C961E .align 2, 0 _080C9618: .4byte gTasks _080C961C: movs r0, 0x1 _080C961E: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 thumb_func_end ItemfinderCheckForHiddenItems 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 sub_80C9908 sub_80C9908: @ 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 sub_80C9908 thumb_func_start sub_80C997C sub_80C997C: @ 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 npc_sync_anim_pause_bits adds r0, r5, 0 bl PlayerTurnInPlace pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080C99E8: .4byte gMapObjects thumb_func_end sub_80C997C thumb_func_start sub_80C99EC sub_80C99EC: @ 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 @ =sub_80C9520 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 sub_80C9520 thumb_func_end sub_80C99EC thumb_func_start sub_80C9A38 sub_80C9A38: @ 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 @ =gUnknown_083D61F0 movs r2, 0xA ldrsh r0, [r4, r2] adds r0, r1 ldrb r0, [r0] bl sub_80C997C 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_ItemfinderFoundItem ldr r2, _080C9AC4 @ =sub_80C9520 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 gUnknown_083D61F0 _080C9AC0: .4byte gOtherText_ItemfinderFoundItem _080C9AC4: .4byte sub_80C9520 thumb_func_end sub_80C9A38 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 unknown_ItemMenu_Confirm 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 sub_80C9038 _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 @ =sub_80A5C48 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 sub_80A5C48 _080C9BA0: ldr r2, _080C9BB4 @ =sub_80A5C9C 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 sub_80A5C9C 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 sub_80A5C48 _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 sub_80A5C9C _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 @ =sub_80A5CC4 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 @ =sub_80A5B00 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 sub_80A5CC4 _080C9CD8: .4byte gTasks _080C9CDC: .4byte c2_exit_to_overworld_2_switch _080C9CE0: .4byte sub_80A5B00 _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 WaterBerryTree 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 unknown_ItemMenu_Confirm 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 @ =sub_806FE2C str r1, [r2] bl sub_80C9D98 pop {r0} bx r0 .align 2, 0 _080C9DC4: .4byte gUnknown_03004AE4 _080C9DC8: .4byte sub_806FE2C 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 unknown_ItemMenu_Confirm 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 @ =dp05_ether str r1, [r2] bl sub_80C9D98 pop {r0} bx r0 .align 2, 0 _080C9E50: .4byte gUnknown_03004AE4 _080C9E54: .4byte dp05_ether 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 @ =dp05_pp_up str r1, [r2] bl sub_80C9D98 pop {r0} bx r0 .align 2, 0 _080C9E6C: .4byte gUnknown_03004AE4 _080C9E70: .4byte dp05_pp_up 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 @ =sub_8070680 str r1, [r2] bl sub_80C9D98 pop {r0} bx r0 .align 2, 0 _080C9E88: .4byte gUnknown_03004AE4 _080C9E8C: .4byte sub_8070680 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 @ =sub_806F06C str r1, [r2] bl sub_80C9D98 pop {r0} bx r0 .align 2, 0 _080C9FD4: .4byte gUnknown_03004AE4 _080C9FD8: .4byte sub_806F06C 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 @ =sub_80A5C48 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 sub_80A5C48 _080CA060: ldr r1, _080CA074 @ =gOtherText_RepelLingers ldr r2, _080CA078 @ =sub_80A5C48 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 sub_80A5C48 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 @ =sub_80A5C48 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 sub_80A5C48 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 @ =sub_8070DBC str r1, [r2] bl sub_80C9D98 pop {r0} bx r0 .align 2, 0 _080CA23C: .4byte gUnknown_03004AE4 _080CA240: .4byte sub_8070DBC 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 @ =sub_80A5C48 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 sub_80A5C48 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 @ =sub_80A5C48 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 sub_80A5C48 _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 @ =sub_806FE2C str r1, [r2] bl sub_80CA3C0 pop {r0} bx r0 .align 2, 0 _080CA408: .4byte gUnknown_03004AE4 _080CA40C: .4byte sub_806FE2C 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 @ =dp05_ether str r1, [r2] bl sub_80CA3C0 pop {r0} bx r0 .align 2, 0 _080CA440: .4byte gUnknown_03004AE4 _080CA444: .4byte dp05_ether 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 @ =sub_80A5C48 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 sub_80A5C48 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 @ =gUnknown_020239F8 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 gUnknown_020239F8 _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 sub_8070E48 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 sub_8070E48 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.