.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start sub_8089CD4 sub_8089CD4: @ 8089CD4 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08089D00 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _08089D84 adds r0, r4, 0 bl sub_806BD80 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 beq _08089D04 cmp r0, 0x2 beq _08089D60 b _08089D84 .align 2, 0 _08089D00: .4byte gPaletteFade _08089D04: movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl sub_806CA38 ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened strb r0, [r1] ldrb r1, [r1] movs r0, 0x64 muls r0, r1 ldr r1, _08089D4C @ =gPlayerParty adds r0, r1 ldr r1, _08089D50 @ =gStringVar1 bl GetMonNickname bl sub_8089A8C ldr r0, _08089D54 @ =sPokeMenuCursorPos strb r5, [r0] movs r0, 0 bl sub_8089C7C ldr r1, _08089D58 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08089D5C @ =sub_8089D94 str r1, [r0] adds r0, r4, 0 bl sub_808B5B4 b _08089D84 .align 2, 0 _08089D48: .4byte gLastFieldPokeMenuOpened _08089D4C: .4byte gPlayerParty _08089D50: .4byte gStringVar1 _08089D54: .4byte sPokeMenuCursorPos _08089D58: .4byte gTasks _08089D5C: .4byte sub_8089D94 _08089D60: movs r0, 0x5 bl PlaySE movs r0, 0x1 negs r0, r0 str r5, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _08089D8C @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08089D90 @ =sub_8089E4C str r1, [r0] _08089D84: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08089D8C: .4byte gTasks _08089D90: .4byte sub_8089E4C thumb_func_end sub_8089CD4 thumb_func_start sub_8089D94 sub_8089D94: @ 8089D94 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 ldr r0, _08089DC8 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08089E44 ldr r2, _08089DCC @ =gMain ldrh r0, [r2, 0x30] movs r1, 0xF0 ands r1, r0 cmp r1, 0x40 bne _08089DD4 movs r0, 0x5 bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor ldr r1, _08089DD0 @ =sPokeMenuCursorPos strb r0, [r1] b _08089E1A .align 2, 0 _08089DC8: .4byte gPaletteFade _08089DCC: .4byte gMain _08089DD0: .4byte sPokeMenuCursorPos _08089DD4: cmp r1, 0x80 bne _08089DF0 movs r0, 0x5 bl PlaySE movs r0, 0x1 bl MoveMenuCursor ldr r1, _08089DEC @ =sPokeMenuCursorPos strb r0, [r1] b _08089E1A .align 2, 0 _08089DEC: .4byte sPokeMenuCursorPos _08089DF0: ldrh r1, [r2, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08089E30 movs r0, 0x5 bl PlaySE ldr r1, _08089E24 @ =sPokemonMenuActions ldr r2, _08089E28 @ =sPokeMenuOptionsIDs ldr r0, _08089E2C @ =sPokeMenuCursorPos ldrb r0, [r0] adds r0, r2 ldrb r0, [r0] lsls r0, 3 adds r1, 0x4 adds r0, r1 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 _08089E1A: adds r0, r4, 0 bl sub_808B5B4 b _08089E44 .align 2, 0 _08089E24: .4byte sPokemonMenuActions _08089E28: .4byte sPokeMenuOptionsIDs _08089E2C: .4byte sPokeMenuCursorPos _08089E30: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08089E44 adds r0, r5, 0 bl PokemonMenu_Cancel adds r0, r5, 0 bl sub_808B5B4 _08089E44: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_8089D94 thumb_func_start sub_8089E4C sub_8089E4C: @ 8089E4C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08089E78 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _08089E72 ldr r0, _08089E7C @ =gLastFieldPokeMenuOpened strb r1, [r0] ldr r0, _08089E80 @ =sub_805469C bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask _08089E72: pop {r4} pop {r0} bx r0 .align 2, 0 _08089E78: .4byte gPaletteFade _08089E7C: .4byte gLastFieldPokeMenuOpened _08089E80: .4byte sub_805469C thumb_func_end sub_8089E4C thumb_func_start sub_8089E84 sub_8089E84: @ 8089E84 push {lr} ldr r0, _08089EAC @ =gLastFieldPokeMenuOpened ldrb r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08089EB0 @ =gPlayerParty adds r0, r1 ldr r1, _08089EB4 @ =gStringVar1 bl GetMonNickname bl sub_8089A8C ldr r1, _08089EB8 @ =sPokeMenuCursorPos movs r0, 0 strb r0, [r1] movs r0, 0 bl sub_8089C7C pop {r0} bx r0 .align 2, 0 _08089EAC: .4byte gLastFieldPokeMenuOpened _08089EB0: .4byte gPlayerParty _08089EB4: .4byte gStringVar1 _08089EB8: .4byte sPokeMenuCursorPos thumb_func_end sub_8089E84 thumb_func_start sub_8089EBC sub_8089EBC: @ 8089EBC push {r4,r5,lr} ldr r4, _08089EC4 @ =0x0201b260 ldr r5, _08089EC8 @ =gUnknown_020384F0 b _08089ED8 .align 2, 0 _08089EC4: .4byte 0x0201b260 _08089EC8: .4byte gUnknown_020384F0 _08089ECC: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08089F04 _08089ED8: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08089ECC ldrb r0, [r4] ldrb r1, [r5] bl sub_806C994 ldrb r0, [r4] movs r1, 0 bl sub_806BF74 ldr r1, _08089F0C @ =gLastFieldPokeMenuOpened ldrb r0, [r5] strb r0, [r1] bl sub_8089E84 ldr r0, _08089F10 @ =sub_806AEDC bl SetMainCallback2 _08089F04: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08089F0C: .4byte gLastFieldPokeMenuOpened _08089F10: .4byte sub_806AEDC thumb_func_end sub_8089EBC thumb_func_start sub_8089F14 sub_8089F14: @ 8089F14 push {lr} ldr r2, _08089F38 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] ldr r2, _08089F3C @ =sub_8089D94 movs r0, 0 movs r1, 0xFF movs r3, 0x5 bl sub_806AF4C ldr r0, _08089F40 @ =sub_8089EBC bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _08089F38: .4byte gPaletteFade _08089F3C: .4byte sub_8089D94 _08089F40: .4byte sub_8089EBC thumb_func_end sub_8089F14 thumb_func_start sub_8089F44 sub_8089F44: @ 8089F44 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r3, r0, 24 ldr r0, _08089FAC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _08089FA2 ldr r2, _08089FB0 @ =gSprites ldr r1, _08089FB4 @ =gTasks lsls r0, r3, 2 adds r0, r3 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0xE] lsls r1, 16 asrs r1, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r4, [r0, 0x2E] lsls r4, 24 lsrs r4, 24 adds r0, r3, 0 bl DestroyTask ldr r0, _08089FB8 @ =0x0201b000 ldr r1, _08089FBC @ =0x00000262 adds r0, r1 movs r1, 0x1 strb r1, [r0] ldr r0, _08089FC0 @ =gPlayerParty ldr r1, _08089FC4 @ =gPlayerPartyCount ldrb r2, [r1] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 ldr r3, _08089FC8 @ =sub_8089F14 str r5, [sp] adds r1, r4, 0 bl ShowPokemonSummaryScreen _08089FA2: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08089FAC: .4byte gPaletteFade _08089FB0: .4byte gSprites _08089FB4: .4byte gTasks _08089FB8: .4byte 0x0201b000 _08089FBC: .4byte 0x00000262 _08089FC0: .4byte gPlayerParty _08089FC4: .4byte gPlayerPartyCount _08089FC8: .4byte sub_8089F14 thumb_func_end sub_8089F44 thumb_func_start PokemonMenu_Summary PokemonMenu_Summary: @ 8089FCC 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, _08089FFC @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A000 @ =sub_8089F44 str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08089FFC: .4byte gTasks _0808A000: .4byte sub_8089F44 thumb_func_end PokemonMenu_Summary thumb_func_start sub_808A004 sub_808A004: @ 808A004 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0808A024 @ =sub_806CA60 ldr r2, _0808A028 @ =sub_8089CD4 bl SetTaskFuncWithFollowupFunc movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect pop {r0} bx r0 .align 2, 0 _0808A024: .4byte sub_806CA60 _0808A028: .4byte sub_8089CD4 thumb_func_end sub_808A004 thumb_func_start PokemonMenu_Switch PokemonMenu_Switch: @ 808A02C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl HandleDestroyMenuCursors ldr r0, _0808A054 @ =0x02001000 ldr r1, _0808A058 @ =sub_806CD5C str r1, [r0, 0xC] ldr r1, _0808A05C @ =0x0001a272 adds r0, r1 movs r1, 0x1 strh r1, [r0] adds r0, r4, 0 bl sub_808A004 pop {r4} pop {r0} bx r0 .align 2, 0 _0808A054: .4byte 0x02001000 _0808A058: .4byte sub_806CD5C _0808A05C: .4byte 0x0001a272 thumb_func_end PokemonMenu_Switch thumb_func_start sub_808A060 sub_808A060: @ 808A060 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0808A0D0 @ =gMain ldrh r0, [r0, 0x2E] cmp r0, 0x40 bne _0808A086 ldr r4, _0808A0D4 @ =sPokeMenuCursorPos ldrb r0, [r4] cmp r0, 0 beq _0808A086 movs r0, 0x1 negs r0, r0 bl MoveMenuCursor strb r0, [r4] movs r0, 0x5 bl PlaySE _0808A086: ldr r0, _0808A0D0 @ =gMain ldrh r0, [r0, 0x2E] cmp r0, 0x80 bne _0808A0A4 ldr r4, _0808A0D4 @ =sPokeMenuCursorPos ldrb r0, [r4] cmp r0, 0x2 beq _0808A0A4 movs r0, 0x1 bl MoveMenuCursor strb r0, [r4] movs r0, 0x5 bl PlaySE _0808A0A4: ldr r0, _0808A0D0 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0808A0E0 movs r0, 0x5 bl PlaySE ldr r1, _0808A0D8 @ =gUnknown_0839F578 ldr r2, _0808A0DC @ =sPokemonMenuActions ldr r0, _0808A0D4 @ =sPokeMenuCursorPos ldrb r3, [r0] movs r0, 0 bl PartyMenuGetPopupMenuFunc adds r1, r0, 0 adds r0, r5, 0 bl _call_via_r1 b _0808A0F6 .align 2, 0 _0808A0D0: .4byte gMain _0808A0D4: .4byte sPokeMenuCursorPos _0808A0D8: .4byte gUnknown_0839F578 _0808A0DC: .4byte sPokemonMenuActions _0808A0E0: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0808A0F6 ldr r1, _0808A0FC @ =gUnknown_0839F578 movs r0, 0 bl sub_806E7D0 adds r0, r5, 0 bl PokemonMenu_CancelSubmenu _0808A0F6: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808A0FC: .4byte gUnknown_0839F578 thumb_func_end sub_808A060 thumb_func_start sub_808A100 sub_808A100: @ 808A100 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, _0808A130 @ =gUnknown_0839F578 ldr r2, _0808A134 @ =sPokemonMenuActions movs r0, 0 movs r3, 0 bl sub_806E750 movs r0, 0xD movs r1, 0x2 bl sub_806D538 ldr r1, _0808A138 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A13C @ =sub_808A060 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0808A130: .4byte gUnknown_0839F578 _0808A134: .4byte sPokemonMenuActions _0808A138: .4byte gTasks _0808A13C: .4byte sub_808A060 thumb_func_end sub_808A100 thumb_func_start PokemonMenu_Item PokemonMenu_Item: @ 808A140 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl HandleDestroyMenuCursors ldr r1, _0808A174 @ =sPokeMenuCursorPos movs r0, 0 strb r0, [r1] movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect ldr r1, _0808A178 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A17C @ =sub_808A100 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0808A174: .4byte sPokeMenuCursorPos _0808A178: .4byte gTasks _0808A17C: .4byte sub_808A100 thumb_func_end PokemonMenu_Item thumb_func_start sub_808A180 sub_808A180: @ 808A180 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0808A1D0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808A1CA adds r0, r5, 0 bl sub_806CA38 lsls r0, 24 lsrs r0, 24 movs r1, 0x64 muls r0, r1 ldr r1, _0808A1D4 @ =gPlayerParty adds r0, r1 movs r1, 0x40 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 bl DestroyTask lsls r1, r4, 3 adds r1, r4 lsls r1, 2 ldr r0, _0808A1D8 @ =gSaveBlock1 + 0x2B4C adds r1, r0 ldr r2, _0808A1DC @ =sub_808A520 movs r0, 0x4 movs r3, 0x3 bl sub_80E62A0 _0808A1CA: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808A1D0: .4byte gPaletteFade _0808A1D4: .4byte gPlayerParty _0808A1D8: .4byte gSaveBlock1 + 0x2B4C _0808A1DC: .4byte sub_808A520 thumb_func_end sub_808A180 thumb_func_start sub_808A1E0 sub_808A1E0: @ 808A1E0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808A21C @ =gUnknown_0202E8F6 ldrb r0, [r0] cmp r0, 0x1 beq _0808A216 adds r0, r4, 0 bl sub_806CA38 adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl SetHeldItemIconVisibility movs r0, 0 movs r1, 0 bl sub_806D538 ldr r1, _0808A220 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A224 @ =sub_8089CD4 str r1, [r0] _0808A216: pop {r4} pop {r0} bx r0 .align 2, 0 _0808A21C: .4byte gUnknown_0202E8F6 _0808A220: .4byte gTasks _0808A224: .4byte sub_8089CD4 thumb_func_end sub_808A1E0 thumb_func_start sub_808A228 sub_808A228: @ 808A228 push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808A268 @ =gScriptItemId ldrh r0, [r0] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0808A278 ldr r0, _0808A26C @ =gUnknown_0202E8F4 ldrb r0, [r0] cmp r0, 0 beq _0808A278 movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _0808A270 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A274 @ =sub_808A180 str r1, [r0] b _0808A29A .align 2, 0 _0808A268: .4byte gScriptItemId _0808A26C: .4byte gUnknown_0202E8F4 _0808A270: .4byte gTasks _0808A274: .4byte sub_808A180 _0808A278: movs r0, 0 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect movs r0, 0 movs r1, 0 bl sub_806D538 ldr r0, _0808A2A4 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0808A2A8 @ =sub_8089CD4 str r0, [r1] _0808A29A: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0808A2A4: .4byte gTasks _0808A2A8: .4byte sub_8089CD4 thumb_func_end sub_808A228 thumb_func_start sub_808A2AC sub_808A2AC: @ 808A2AC push {lr} lsls r0, 24 lsrs r3, r0, 24 ldr r0, _0808A2D0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808A2CA ldr r0, _0808A2D4 @ =gScriptItemId ldrh r1, [r0] ldr r2, _0808A2D8 @ =sub_808A228 adds r0, r3, 0 bl PartyMenuTryGiveMonHeldItem _0808A2CA: pop {r0} bx r0 .align 2, 0 _0808A2D0: .4byte gPaletteFade _0808A2D4: .4byte gScriptItemId _0808A2D8: .4byte sub_808A228 thumb_func_end sub_808A2AC thumb_func_start sub_808A2DC sub_808A2DC: @ 808A2DC push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r5, 0 bl sub_806CA38 lsls r0, 24 lsrs r0, 24 movs r1, 0x64 muls r0, r1 ldr r1, _0808A324 @ =gPlayerParty adds r0, r1 movs r1, 0x40 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 bl DestroyTask lsls r1, r4, 3 adds r1, r4 lsls r1, 2 ldr r0, _0808A328 @ =gSaveBlock1 + 0x2B4C adds r1, r0 ldr r2, _0808A32C @ =sub_808A520 movs r0, 0x4 movs r3, 0x3 bl sub_80E62A0 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808A324: .4byte gPlayerParty _0808A328: .4byte gSaveBlock1 + 0x2B4C _0808A32C: .4byte sub_808A520 thumb_func_end sub_808A2DC thumb_func_start sub_808A330 sub_808A330: @ 808A330 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _0808A344 @ =gScriptItemId ldrh r1, [r1] ldr r2, _0808A348 @ =sub_808A2DC bl PartyMenuTryGiveMonHeldItem pop {r0} bx r0 .align 2, 0 _0808A344: .4byte gScriptItemId _0808A348: .4byte sub_808A2DC thumb_func_end sub_808A330 thumb_func_start sub_808A34C sub_808A34C: @ 808A34C push {lr} bl RunTasks pop {r0} bx r0 thumb_func_end sub_808A34C thumb_func_start sub_808A358 sub_808A358: @ 808A358 push {r4,lr} ldr r4, _0808A360 @ =0x0201b260 b _0808A370 .align 2, 0 _0808A360: .4byte 0x0201b260 _0808A364: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808A394 _0808A370: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808A364 ldrb r0, [r4] ldr r1, _0808A39C @ =gLastFieldPokeMenuOpened ldrb r1, [r1] bl sub_806C994 ldrb r0, [r4] movs r1, 0 bl sub_806BF74 ldr r0, _0808A3A0 @ =sub_806AEDC bl SetMainCallback2 _0808A394: pop {r4} pop {r0} bx r0 .align 2, 0 _0808A39C: .4byte gLastFieldPokeMenuOpened _0808A3A0: .4byte sub_806AEDC thumb_func_end sub_808A358 thumb_func_start sub_808A3A4 sub_808A3A4: @ 808A3A4 push {r4,r5,lr} ldr r4, _0808A3D8 @ =0x0201b260 adds r5, r4, 0x2 _0808A3AA: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808A3E4 ldrb r0, [r4] ldr r1, _0808A3DC @ =gLastFieldPokeMenuOpened ldrb r1, [r1] bl sub_806C994 ldrb r0, [r4] movs r1, 0 bl sub_806BF74 movs r0, 0x3 strb r0, [r5] bl sub_8089E84 ldr r0, _0808A3E0 @ =sub_806AEDC bl SetMainCallback2 b _0808A3F0 .align 2, 0 _0808A3D8: .4byte 0x0201b260 _0808A3DC: .4byte gLastFieldPokeMenuOpened _0808A3E0: .4byte sub_806AEDC _0808A3E4: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808A3AA _0808A3F0: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_808A3A4 thumb_func_start sub_808A3F8 sub_808A3F8: @ 808A3F8 push {r4,lr} ldr r0, _0808A460 @ =gScriptItemId ldrh r0, [r0] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0808A47E ldr r0, _0808A464 @ =sub_808A330 movs r1, 0 bl CreateTask lsls r0, 24 lsrs r4, r0, 24 ldr r2, _0808A468 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] adds r0, r4, 0 movs r1, 0 bl sub_806BD58 ldr r0, _0808A46C @ =gLastFieldPokeMenuOpened ldrb r1, [r0] adds r0, r4, 0 bl sub_806C994 adds r0, r4, 0 movs r1, 0 bl sub_806BF74 adds r0, r4, 0 bl sub_806CA38 lsls r0, 24 lsrs r0, 24 movs r1, 0x64 muls r0, r1 ldr r1, _0808A470 @ =gPlayerParty adds r0, r1 movs r1, 0xC bl GetMonData lsls r0, 24 cmp r0, 0 bne _0808A478 ldr r0, _0808A474 @ =sub_808A34C bl SetMainCallback2 b _0808A4C6 .align 2, 0 _0808A460: .4byte gScriptItemId _0808A464: .4byte sub_808A330 _0808A468: .4byte gPaletteFade _0808A46C: .4byte gLastFieldPokeMenuOpened _0808A470: .4byte gPlayerParty _0808A474: .4byte sub_808A34C _0808A478: adds r0, r4, 0 bl DestroyTask _0808A47E: ldr r2, _0808A4A4 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] ldr r0, _0808A4A8 @ =gScriptItemId ldrh r0, [r0] cmp r0, 0 beq _0808A4B4 ldr r2, _0808A4AC @ =sub_808A2AC movs r0, 0 movs r1, 0xFF movs r3, 0xFF bl sub_806AF4C ldr r0, _0808A4B0 @ =sub_808A358 bl SetMainCallback2 b _0808A4C6 .align 2, 0 _0808A4A4: .4byte gPaletteFade _0808A4A8: .4byte gScriptItemId _0808A4AC: .4byte sub_808A2AC _0808A4B0: .4byte sub_808A358 _0808A4B4: ldr r2, _0808A4CC @ =sub_8089D94 movs r0, 0 movs r1, 0xFF movs r3, 0x5 bl sub_806AF4C ldr r0, _0808A4D0 @ =sub_808A3A4 bl SetMainCallback2 _0808A4C6: pop {r4} pop {r0} bx r0 .align 2, 0 _0808A4CC: .4byte sub_8089D94 _0808A4D0: .4byte sub_808A3A4 thumb_func_end sub_808A3F8 thumb_func_start sub_808A4D4 sub_808A4D4: @ 808A4D4 push {r4,lr} ldr r4, _0808A4DC @ =0x0201b260 b _0808A4EC .align 2, 0 _0808A4DC: .4byte 0x0201b260 _0808A4E0: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808A510 _0808A4EC: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808A4E0 ldrb r0, [r4] ldr r1, _0808A518 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] bl sub_806C994 ldrb r0, [r4] movs r1, 0 bl sub_806BF74 ldr r0, _0808A51C @ =sub_806AEDC bl SetMainCallback2 _0808A510: pop {r4} pop {r0} bx r0 .align 2, 0 _0808A518: .4byte gLastFieldPokeMenuOpened _0808A51C: .4byte sub_806AEDC thumb_func_end sub_808A4D4 thumb_func_start sub_808A520 sub_808A520: @ 808A520 push {r4-r7,lr} ldr r2, _0808A584 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] ldr r0, _0808A588 @ =gScriptResult ldrh r0, [r0] cmp r0, 0 bne _0808A59C ldr r7, _0808A58C @ =gUnknown_0202E8F8 ldrh r0, [r7] cmp r0, 0 beq _0808A542 movs r1, 0x1 bl RemoveBagItem _0808A542: ldr r6, _0808A590 @ =gLastFieldPokeMenuOpened ldrb r0, [r6] movs r5, 0x64 muls r0, r5 ldr r4, _0808A594 @ =gPlayerParty adds r0, r4 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl AddBagItem ldrb r0, [r6] muls r0, r5 adds r0, r4 bl TakeMailFromMon ldrb r0, [r6] muls r0, r5 adds r0, r4 movs r1, 0xC adds r2, r7, 0 bl SetMonData ldr r2, _0808A598 @ =sub_8089CD4 movs r0, 0 movs r1, 0xFF movs r3, 0 bl sub_806AF4C b _0808A5A8 .align 2, 0 _0808A584: .4byte gPaletteFade _0808A588: .4byte gScriptResult _0808A58C: .4byte gUnknown_0202E8F8 _0808A590: .4byte gLastFieldPokeMenuOpened _0808A594: .4byte gPlayerParty _0808A598: .4byte sub_8089CD4 _0808A59C: ldr r2, _0808A5B4 @ =sub_808A5BC movs r0, 0 movs r1, 0xFF movs r3, 0xFF bl sub_806AF4C _0808A5A8: ldr r0, _0808A5B8 @ =sub_808A4D4 bl SetMainCallback2 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0808A5B4: .4byte sub_808A5BC _0808A5B8: .4byte sub_808A4D4 thumb_func_end sub_808A520 thumb_func_start sub_808A5BC sub_808A5BC: @ 808A5BC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808A5F0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808A5EA ldr r0, _0808A5F4 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] ldr r1, _0808A5F8 @ =gScriptItemId ldrh r1, [r1] movs r2, 0 bl DisplayGiveHeldItemMessage ldr r1, _0808A5FC @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A600 @ =sub_808A1E0 str r1, [r0] _0808A5EA: pop {r4} pop {r0} bx r0 .align 2, 0 _0808A5F0: .4byte gPaletteFade _0808A5F4: .4byte gLastFieldPokeMenuOpened _0808A5F8: .4byte gScriptItemId _0808A5FC: .4byte gTasks _0808A600: .4byte sub_808A1E0 thumb_func_end sub_808A5BC thumb_func_start sub_808A604 sub_808A604: @ 808A604 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808A628 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808A622 ldr r0, _0808A62C @ =sub_80A61D0 bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask _0808A622: pop {r4} pop {r0} bx r0 .align 2, 0 _0808A628: .4byte gPaletteFade _0808A62C: .4byte sub_80A61D0 thumb_func_end sub_808A604 thumb_func_start PokemonMenu_GiveItem PokemonMenu_GiveItem: @ 808A630 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl sub_806CA38 ldr r1, _0808A66C @ =gUnknown_0202E8F5 strb r0, [r1] movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _0808A670 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A674 @ =sub_808A604 str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0808A66C: .4byte gUnknown_0202E8F5 _0808A670: .4byte gTasks _0808A674: .4byte sub_808A604 thumb_func_end PokemonMenu_GiveItem thumb_func_start sub_808A678 sub_808A678: @ 808A678 push {lr} lsls r0, 24 lsrs r0, 24 bl sub_808A8D4 pop {r0} bx r0 thumb_func_end sub_808A678 thumb_func_start PokemonMenu_TakeItem PokemonMenu_TakeItem: @ 808A688 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl HandleDestroyMenuCursors movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect bl sub_806D5A4 ldr r1, _0808A6B4 @ =sub_808A678 adds r0, r4, 0 bl PartyMenuTryGiveMonHeldItem_806ECE8 pop {r4} pop {r0} bx r0 .align 2, 0 _0808A6B4: .4byte sub_808A678 thumb_func_end PokemonMenu_TakeItem thumb_func_start PokemonMenu_TakeMail PokemonMenu_TakeMail: @ 808A6B8 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl HandleDestroyMenuCursors movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect bl sub_806D5A4 ldr r1, _0808A6E4 @ =sub_808A678 adds r0, r4, 0 bl DoTakeMail pop {r4} pop {r0} bx r0 .align 2, 0 _0808A6E4: .4byte sub_808A678 thumb_func_end PokemonMenu_TakeMail thumb_func_start PokemonMenu_Mail PokemonMenu_Mail: @ 808A6E8 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl HandleDestroyMenuCursors ldr r1, _0808A728 @ =sPokeMenuCursorPos movs r0, 0 strb r0, [r1] movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect ldr r1, _0808A72C @ =gUnknown_0839F584 ldr r2, _0808A730 @ =sPokemonMenuActions movs r0, 0 movs r3, 0 bl sub_806E750 ldr r1, _0808A734 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A738 @ =sub_808A73C str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0808A728: .4byte sPokeMenuCursorPos _0808A72C: .4byte gUnknown_0839F584 _0808A730: .4byte sPokemonMenuActions _0808A734: .4byte gTasks _0808A738: .4byte sub_808A73C thumb_func_end PokemonMenu_Mail thumb_func_start sub_808A73C sub_808A73C: @ 808A73C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0808A764 @ =gMain ldrh r0, [r0, 0x30] cmp r0, 0x40 bne _0808A77A movs r0, 0x5 bl PlaySE ldr r4, _0808A768 @ =sPokeMenuCursorPos ldrb r0, [r4] cmp r0, 0 bne _0808A770 ldr r0, _0808A76C @ =gUnknown_0839F584 ldrb r0, [r0] subs r0, 0x1 lsls r0, 24 asrs r0, 24 b _0808A774 .align 2, 0 _0808A764: .4byte gMain _0808A768: .4byte sPokeMenuCursorPos _0808A76C: .4byte gUnknown_0839F584 _0808A770: movs r0, 0x1 negs r0, r0 _0808A774: bl MoveMenuCursor strb r0, [r4] _0808A77A: ldr r0, _0808A7A0 @ =gMain ldrh r0, [r0, 0x30] cmp r0, 0x80 bne _0808A7B4 movs r0, 0x5 bl PlaySE ldr r4, _0808A7A4 @ =sPokeMenuCursorPos ldrb r0, [r4] ldr r1, _0808A7A8 @ =gUnknown_0839F584 ldrb r2, [r1] subs r1, r2, 0x1 cmp r0, r1 bne _0808A7AC movs r0, 0x1 subs r0, r2 lsls r0, 24 asrs r0, 24 b _0808A7AE .align 2, 0 _0808A7A0: .4byte gMain _0808A7A4: .4byte sPokeMenuCursorPos _0808A7A8: .4byte gUnknown_0839F584 _0808A7AC: movs r0, 0x1 _0808A7AE: bl MoveMenuCursor strb r0, [r4] _0808A7B4: ldr r0, _0808A7E0 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0808A7F0 movs r0, 0x5 bl PlaySE ldr r1, _0808A7E4 @ =gUnknown_0839F584 ldr r2, _0808A7E8 @ =sPokemonMenuActions ldr r0, _0808A7EC @ =sPokeMenuCursorPos ldrb r3, [r0] movs r0, 0 bl PartyMenuGetPopupMenuFunc adds r1, r0, 0 adds r0, r5, 0 bl _call_via_r1 b _0808A806 .align 2, 0 _0808A7E0: .4byte gMain _0808A7E4: .4byte gUnknown_0839F584 _0808A7E8: .4byte sPokemonMenuActions _0808A7EC: .4byte sPokeMenuCursorPos _0808A7F0: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0808A806 ldr r1, _0808A80C @ =gUnknown_0839F584 movs r0, 0 bl sub_806E7D0 adds r0, r5, 0 bl PokemonMenu_Cancel _0808A806: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808A80C: .4byte gUnknown_0839F584 thumb_func_end sub_808A73C thumb_func_start PokemonMenu_ReadMail PokemonMenu_ReadMail: @ 808A810 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, _0808A840 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A844 @ =sub_808A848 str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0808A840: .4byte gTasks _0808A844: .4byte sub_808A848 thumb_func_end PokemonMenu_ReadMail thumb_func_start sub_808A848 sub_808A848: @ 808A848 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0808A898 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808A890 adds r0, r5, 0 bl sub_806CA38 lsls r0, 24 lsrs r0, 24 movs r1, 0x64 muls r0, r1 ldr r1, _0808A89C @ =gPlayerParty adds r0, r1 movs r1, 0x40 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 bl DestroyTask lsls r0, r4, 3 adds r0, r4 lsls r0, 2 ldr r1, _0808A8A0 @ =gSaveBlock1 + 0x2B4C adds r0, r1 ldr r1, _0808A8A4 @ =sub_808A8A8 movs r2, 0x1 bl HandleReadMail _0808A890: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808A898: .4byte gPaletteFade _0808A89C: .4byte gPlayerParty _0808A8A0: .4byte gSaveBlock1 + 0x2B4C _0808A8A4: .4byte sub_808A8A8 thumb_func_end sub_808A848 thumb_func_start sub_808A8A8 sub_808A8A8: @ 808A8A8 push {lr} ldr r1, _0808A8C4 @ =gUnknown_020384F0 ldr r0, _0808A8C8 @ =gLastFieldPokeMenuOpened ldrb r0, [r0] strb r0, [r1] ldr r0, _0808A8CC @ =0x0201b000 ldr r1, _0808A8D0 @ =0x00000262 adds r0, r1 movs r1, 0x4 strb r1, [r0] bl sub_8089F14 pop {r0} bx r0 .align 2, 0 _0808A8C4: .4byte gUnknown_020384F0 _0808A8C8: .4byte gLastFieldPokeMenuOpened _0808A8CC: .4byte 0x0201b000 _0808A8D0: .4byte 0x00000262 thumb_func_end sub_808A8A8 thumb_func_start sub_808A8D4 sub_808A8D4: @ 808A8D4 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r1, _0808A90C @ =sPokeMenuCursorPos movs r0, 0 strb r0, [r1] movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect movs r0, 0 movs r1, 0 bl sub_806D538 ldr r1, _0808A910 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A914 @ =sub_8089CD4 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0808A90C: .4byte sPokeMenuCursorPos _0808A910: .4byte gTasks _0808A914: .4byte sub_8089CD4 thumb_func_end sub_808A8D4 thumb_func_start PokemonMenu_Cancel PokemonMenu_Cancel: @ 808A918 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl HandleDestroyMenuCursors movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl sub_808A8D4 pop {r4} pop {r0} bx r0 thumb_func_end PokemonMenu_Cancel thumb_func_start PokemonMenu_CancelSubmenu PokemonMenu_CancelSubmenu: @ 808A938 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl HandleDestroyMenuCursors movs r0, 0x5 bl PlaySE movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect bl sub_806D5A4 ldr r0, _0808A978 @ =sPokeMenuCursorPos ldrb r0, [r0] bl sub_8089C7C ldr r1, _0808A97C @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808A980 @ =sub_8089D94 str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0808A978: .4byte sPokeMenuCursorPos _0808A97C: .4byte gTasks _0808A980: .4byte sub_8089D94 thumb_func_end PokemonMenu_CancelSubmenu thumb_func_start PokemonMenu_FieldMove PokemonMenu_FieldMove: @ 808A984 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r6, r0, 3 ldr r7, _0808A9D0 @ =gTasks + 0x8 adds r4, r6, r7 bl HandleDestroyMenuCursors ldr r1, _0808A9D4 @ =sPokeMenuOptionsIDs ldr r0, _0808A9D8 @ =sPokeMenuCursorPos ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] subs r0, 0xA strh r0, [r4, 0x16] bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808A9DC movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect ldrh r0, [r4, 0x16] subs r0, 0xB lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _0808AABA movs r0, 0x9 b _0808AAB2 .align 2, 0 _0808A9D0: .4byte gTasks + 0x8 _0808A9D4: .4byte sPokeMenuOptionsIDs _0808A9D8: .4byte sPokeMenuCursorPos _0808A9DC: ldrh r1, [r4, 0x16] movs r2, 0x16 ldrsh r0, [r4, r2] cmp r0, 0x7 bgt _0808AA2C ldr r2, _0808AA20 @ =0x00000807 adds r0, r1, r2 lsls r0, 16 lsrs r0, 16 bl FlagGet lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808AA2C movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect bl sub_806D5A4 ldr r0, _0808AA24 @ =gOtherText_CantBeUsedBadge movs r1, 0x1 bl sub_806E834 adds r0, r7, 0 subs r0, 0x8 adds r0, r6, r0 ldr r1, _0808AA28 @ =sub_808AAF0 str r1, [r0] b _0808AADA .align 2, 0 _0808AA20: .4byte 0x00000807 _0808AA24: .4byte gOtherText_CantBeUsedBadge _0808AA28: .4byte sub_808AAF0 _0808AA2C: ldr r1, _0808AA78 @ =gFieldMoveFuncs movs r2, 0x16 ldrsh r0, [r4, r2] lsls r0, 3 adds r0, r1 ldr r0, [r0] bl _call_via_r0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808AA90 ldr r1, _0808AA7C @ =sPokeMenuCursorPos movs r0, 0 strb r0, [r1] ldrh r0, [r4, 0x16] subs r0, 0xB lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bls _0808AA88 ldr r1, _0808AA80 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _0808AA84 @ =sub_808AB34 str r1, [r0] movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _0808AADA .align 2, 0 _0808AA78: .4byte gFieldMoveFuncs _0808AA7C: .4byte sPokeMenuCursorPos _0808AA80: .4byte gTasks _0808AA84: .4byte sub_808AB34 _0808AA88: adds r0, r5, 0 bl sub_8133D28 b _0808AADA _0808AA90: movs r0, 0x13 movs r1, 0 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect movs r1, 0x16 ldrsh r0, [r4, r1] cmp r0, 0x4 bne _0808AABA movs r0, 0x8 bl TestPlayerAvatarFlags lsls r0, 24 cmp r0, 0 beq _0808AABA movs r0, 0x8 _0808AAB2: movs r1, 0 bl sub_806D538 b _0808AACC _0808AABA: ldr r0, _0808AAE4 @ =gFieldMoveFuncs movs r2, 0x16 ldrsh r1, [r4, r2] lsls r1, 3 adds r1, r0 ldrb r0, [r1, 0x4] movs r1, 0 bl sub_806D538 _0808AACC: ldr r0, _0808AAE8 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _0808AAEC @ =sub_808ABF4 str r0, [r1] _0808AADA: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0808AAE4: .4byte gFieldMoveFuncs _0808AAE8: .4byte gTasks _0808AAEC: .4byte sub_808ABF4 thumb_func_end PokemonMenu_FieldMove thumb_func_start sub_808AAF0 sub_808AAF0: @ 808AAF0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808AB2C @ =gUnknown_0202E8F6 ldrb r0, [r0] cmp r0, 0x1 beq _0808AB24 ldr r0, _0808AB30 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0808AB12 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0808AB24 _0808AB12: movs r0, 0 movs r1, 0xE movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect adds r0, r4, 0 bl PokemonMenu_Cancel _0808AB24: pop {r4} pop {r0} bx r0 .align 2, 0 _0808AB2C: .4byte gUnknown_0202E8F6 _0808AB30: .4byte gMain thumb_func_end sub_808AAF0 thumb_func_start sub_808AB34 sub_808AB34: @ 808AB34 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808AB6C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808AB84 ldr r0, _0808AB70 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 movs r2, 0x1E ldrsh r0, [r1, r2] cmp r0, 0x5 bne _0808AB62 bl ShouldDoBrailleFlyEffect lsls r0, 24 cmp r0, 0 beq _0808AB78 _0808AB62: ldr r0, _0808AB74 @ =c2_exit_to_overworld_2_switch bl SetMainCallback2 b _0808AB7E .align 2, 0 _0808AB6C: .4byte gPaletteFade _0808AB70: .4byte gTasks _0808AB74: .4byte c2_exit_to_overworld_2_switch _0808AB78: ldr r0, _0808AB8C @ =CB2_InitFlyRegionMap bl SetMainCallback2 _0808AB7E: adds r0, r4, 0 bl DestroyTask _0808AB84: pop {r4} pop {r0} bx r0 .align 2, 0 _0808AB8C: .4byte CB2_InitFlyRegionMap thumb_func_end sub_808AB34 thumb_func_start sub_808AB90 sub_808AB90: @ 808AB90 push {lr} bl pal_fill_black ldr r0, _0808ABA4 @ =sub_808ABA8 movs r1, 0x8 bl CreateTask pop {r0} bx r0 .align 2, 0 _0808ABA4: .4byte sub_808ABA8 thumb_func_end sub_808AB90 thumb_func_start sub_808ABA8 sub_808ABA8: @ 808ABA8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl sub_807D770 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808ABDE ldr r0, _0808ABE4 @ =gLastFieldPokeMenuOpened ldrb r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0808ABE8 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData ldr r1, _0808ABEC @ =gUnknown_0202FF84 str r0, [r1] ldr r0, _0808ABF0 @ =gUnknown_03005CE4 ldr r0, [r0] bl _call_via_r0 adds r0, r4, 0 bl DestroyTask _0808ABDE: pop {r4} pop {r0} bx r0 .align 2, 0 _0808ABE4: .4byte gLastFieldPokeMenuOpened _0808ABE8: .4byte gPlayerParty _0808ABEC: .4byte gUnknown_0202FF84 _0808ABF0: .4byte gUnknown_03005CE4 thumb_func_end sub_808ABA8 thumb_func_start sub_808ABF4 sub_808ABF4: @ 808ABF4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808AC28 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0808AC0E movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0808AC20 _0808AC0E: movs r0, 0x1 movs r1, 0x11 movs r2, 0x1C movs r3, 0x12 bl MenuZeroFillWindowRect adds r0, r4, 0 bl PokemonMenu_Cancel _0808AC20: pop {r4} pop {r0} bx r0 .align 2, 0 _0808AC28: .4byte gMain thumb_func_end sub_808ABF4 thumb_func_start sub_808AC2C sub_808AC2C: @ 808AC2C push {lr} ldr r0, _0808AC40 @ =gUnknown_0202FF84 ldr r1, _0808AC44 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] str r1, [r0] movs r0, 0x9 bl FieldEffectStart pop {r0} bx r0 .align 2, 0 _0808AC40: .4byte gUnknown_0202FF84 _0808AC44: .4byte gLastFieldPokeMenuOpened thumb_func_end sub_808AC2C thumb_func_start SetUpFieldMove_Surf SetUpFieldMove_Surf: @ 808AC48 push {lr} bl PartyHasMonWithSurf lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808AC84 bl IsPlayerFacingSurfableFishableWater lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808AC84 ldr r1, _0808AC74 @ =gFieldCallback ldr r0, _0808AC78 @ =sub_808AB90 str r0, [r1] ldr r1, _0808AC7C @ =gUnknown_03005CE4 ldr r0, _0808AC80 @ =sub_808AC2C str r0, [r1] movs r0, 0x1 b _0808AC86 .align 2, 0 _0808AC74: .4byte gFieldCallback _0808AC78: .4byte sub_808AB90 _0808AC7C: .4byte gUnknown_03005CE4 _0808AC80: .4byte sub_808AC2C _0808AC84: movs r0, 0 _0808AC86: pop {r1} bx r1 thumb_func_end SetUpFieldMove_Surf thumb_func_start sub_808AC8C sub_808AC8C: @ 808AC8C push {lr} ldr r0, _0808ACA0 @ =gUnknown_0202FF84 ldr r1, _0808ACA4 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] str r1, [r0] movs r0, 0x1F bl FieldEffectStart pop {r0} bx r0 .align 2, 0 _0808ACA0: .4byte gUnknown_0202FF84 _0808ACA4: .4byte gLastFieldPokeMenuOpened thumb_func_end sub_808AC8C thumb_func_start SetUpFieldMove_Fly SetUpFieldMove_Fly: @ 808ACA8 push {lr} bl ShouldDoBrailleFlyEffect lsls r0, 24 cmp r0, 0 beq _0808ACD0 ldr r1, _0808ACC0 @ =gFieldCallback ldr r0, _0808ACC4 @ =sub_808AB90 str r0, [r1] ldr r1, _0808ACC8 @ =gUnknown_03005CE4 ldr r0, _0808ACCC @ =DoBrailleFlyEffect b _0808ACF2 .align 2, 0 _0808ACC0: .4byte gFieldCallback _0808ACC4: .4byte sub_808AB90 _0808ACC8: .4byte gUnknown_03005CE4 _0808ACCC: .4byte DoBrailleFlyEffect _0808ACD0: ldr r0, _0808ACE4 @ =gMapHeader ldrb r0, [r0, 0x17] bl is_light_level_1_2_3_or_6 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808ACE8 movs r0, 0 b _0808ACF6 .align 2, 0 _0808ACE4: .4byte gMapHeader _0808ACE8: ldr r1, _0808ACFC @ =gFieldCallback ldr r0, _0808AD00 @ =sub_808AB90 str r0, [r1] ldr r1, _0808AD04 @ =gUnknown_03005CE4 ldr r0, _0808AD08 @ =sub_808AC8C _0808ACF2: str r0, [r1] movs r0, 0x1 _0808ACF6: pop {r1} bx r1 .align 2, 0 _0808ACFC: .4byte gFieldCallback _0808AD00: .4byte sub_808AB90 _0808AD04: .4byte gUnknown_03005CE4 _0808AD08: .4byte sub_808AC8C thumb_func_end SetUpFieldMove_Fly thumb_func_start sub_808AD0C sub_808AD0C: @ 808AD0C push {r4,lr} ldr r4, _0808AD14 @ =0x0201b260 b _0808AD24 .align 2, 0 _0808AD14: .4byte 0x0201b260 _0808AD18: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808AD48 _0808AD24: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808AD18 ldrb r0, [r4] ldr r1, _0808AD50 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] bl sub_806C994 ldrb r0, [r4] movs r1, 0 bl sub_806BF74 ldr r0, _0808AD54 @ =sub_806AEDC bl SetMainCallback2 _0808AD48: pop {r4} pop {r0} bx r0 .align 2, 0 _0808AD50: .4byte gLastFieldPokeMenuOpened _0808AD54: .4byte sub_806AEDC thumb_func_end sub_808AD0C thumb_func_start sub_808AD58 sub_808AD58: @ 808AD58 push {lr} ldr r2, _0808AD7C @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] ldr r2, _0808AD80 @ =sub_8089CD4 movs r0, 0 movs r1, 0xFF movs r3, 0 bl sub_806AF4C ldr r0, _0808AD84 @ =sub_808AD0C bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _0808AD7C: .4byte gPaletteFade _0808AD80: .4byte sub_8089CD4 _0808AD84: .4byte sub_808AD0C thumb_func_end sub_808AD58 thumb_func_start unref_sub_808AD88 unref_sub_808AD88: @ 808AD88 push {lr} ldr r0, _0808ADA4 @ =gLastFieldPokeMenuOpened ldrb r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0808ADA8 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 pop {r1} bx r1 .align 2, 0 _0808ADA4: .4byte gLastFieldPokeMenuOpened _0808ADA8: .4byte gPlayerParty thumb_func_end unref_sub_808AD88 thumb_func_start sub_808ADAC sub_808ADAC: @ 808ADAC push {lr} ldr r0, _0808ADC0 @ =gUnknown_0202FF84 ldr r1, _0808ADC4 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] str r1, [r0] movs r0, 0x2C bl FieldEffectStart pop {r0} bx r0 .align 2, 0 _0808ADC0: .4byte gUnknown_0202FF84 _0808ADC4: .4byte gLastFieldPokeMenuOpened thumb_func_end sub_808ADAC thumb_func_start SetUpFieldMove_Dive SetUpFieldMove_Dive: @ 808ADC8 push {lr} bl sub_8068F18 ldr r1, _0808ADE0 @ =gUnknown_0202FF84 lsls r0, 24 lsrs r0, 24 str r0, [r1, 0x4] cmp r0, 0 bne _0808ADE4 movs r0, 0 b _0808ADF2 .align 2, 0 _0808ADE0: .4byte gUnknown_0202FF84 _0808ADE4: ldr r1, _0808ADF8 @ =gFieldCallback ldr r0, _0808ADFC @ =sub_808AB90 str r0, [r1] ldr r1, _0808AE00 @ =gUnknown_03005CE4 ldr r0, _0808AE04 @ =sub_808ADAC str r0, [r1] movs r0, 0x1 _0808ADF2: pop {r1} bx r1 .align 2, 0 _0808ADF8: .4byte gFieldCallback _0808ADFC: .4byte sub_808AB90 _0808AE00: .4byte gUnknown_03005CE4 _0808AE04: .4byte sub_808ADAC thumb_func_end SetUpFieldMove_Dive thumb_func_start sub_808AE08 sub_808AE08: @ 808AE08 push {lr} ldr r0, _0808AE1C @ =gUnknown_0202FF84 ldr r1, _0808AE20 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] str r1, [r0] movs r0, 0x2B bl FieldEffectStart pop {r0} bx r0 .align 2, 0 _0808AE1C: .4byte gUnknown_0202FF84 _0808AE20: .4byte gLastFieldPokeMenuOpened thumb_func_end sub_808AE08 thumb_func_start SetUpFieldMove_Waterfall SetUpFieldMove_Waterfall: @ 808AE24 push {r4,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, 24 lsrs r0, 24 bl MetatileBehavior_IsWaterfall lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808AE80 bl IsPlayerSurfingNorth lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808AE80 ldr r1, _0808AE70 @ =gFieldCallback ldr r0, _0808AE74 @ =sub_808AB90 str r0, [r1] ldr r1, _0808AE78 @ =gUnknown_03005CE4 ldr r0, _0808AE7C @ =sub_808AE08 str r0, [r1] movs r0, 0x1 b _0808AE82 .align 2, 0 _0808AE70: .4byte gFieldCallback _0808AE74: .4byte sub_808AB90 _0808AE78: .4byte gUnknown_03005CE4 _0808AE7C: .4byte sub_808AE08 _0808AE80: movs r0, 0 _0808AE82: add sp, 0x4 pop {r4} pop {r1} bx r1 thumb_func_end SetUpFieldMove_Waterfall thumb_func_start sub_808AE8C sub_808AE8C: @ 808AE8C push {r4-r6,lr} ldr r0, _0808AED8 @ =gScriptItemId ldrb r0, [r0] subs r0, 0x21 lsls r0, 24 lsrs r6, r0, 24 movs r5, 0 _0808AE9A: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _0808AEDC @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0808AF10 adds r0, r5, 0 bl sub_806D668 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0808AECE adds r0, r4, 0 adds r1, r6, 0 bl CanMonLearnTMHM cmp r0, 0 bne _0808AEE0 _0808AECE: adds r0, r5, 0 movs r1, 0x9A bl sub_806BC3C b _0808AF10 .align 2, 0 _0808AED8: .4byte gScriptItemId _0808AEDC: .4byte gPlayerParty _0808AEE0: ldr r0, _0808AF04 @ =gScriptItemId ldrh r0, [r0] bl ItemIdToBattleMoveId adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 bl pokemon_has_move lsls r0, 24 cmp r0, 0 beq _0808AF08 adds r0, r5, 0 movs r1, 0xA8 bl sub_806BC3C b _0808AF10 .align 2, 0 _0808AF04: .4byte gScriptItemId _0808AF08: adds r0, r5, 0 movs r1, 0x8C bl sub_806BC3C _0808AF10: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _0808AE9A pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_808AE8C thumb_func_start sub_808AF20 sub_808AF20: @ 808AF20 push {r4,r5,lr} movs r5, 0 _0808AF24: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _0808AF78 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0808AF66 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0808AF58 ldr r0, _0808AF7C @ =gScriptItemId ldrh r2, [r0] adds r0, r4, 0 movs r1, 0x3 bl GetEvolutionTargetSpecies lsls r0, 16 cmp r0, 0 bne _0808AF66 _0808AF58: adds r0, r5, 0 bl sub_806D668 adds r0, r5, 0 movs r1, 0 bl sub_806BC3C _0808AF66: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _0808AF24 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808AF78: .4byte gPlayerParty _0808AF7C: .4byte gScriptItemId thumb_func_end sub_808AF20 thumb_func_start sub_808AF80 sub_808AF80: @ 808AF80 push {r4,r5,lr} ldr r5, _0808AFB0 @ =0x0201b260 _0808AF84: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808B00C ldr r0, _0808AFB4 @ =gUnknown_02038561 ldrb r0, [r0] cmp r0, 0 bne _0808AFC6 ldr r0, _0808AFB8 @ =gScriptItemId ldrh r0, [r0] bl CheckIfItemIsTMHMOrEvolutionStone lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808AFBC cmp r0, 0x2 beq _0808AFC2 b _0808AFC6 .align 2, 0 _0808AFB0: .4byte 0x0201b260 _0808AFB4: .4byte gUnknown_02038561 _0808AFB8: .4byte gScriptItemId _0808AFBC: bl sub_808AE8C b _0808AFC6 _0808AFC2: bl sub_808AF20 _0808AFC6: ldr r4, _0808B000 @ =gLastFieldPokeMenuOpened ldrb r0, [r4] cmp r0, 0x5 bhi _0808AFE2 adds r1, r0, 0 movs r0, 0x64 muls r0, r1 ldr r1, _0808B004 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData cmp r0, 0 bne _0808AFE6 _0808AFE2: movs r0, 0 strb r0, [r4] _0808AFE6: ldrb r0, [r5] ldr r1, _0808B000 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] bl sub_806C994 ldrb r0, [r5] movs r1, 0 bl sub_806BF74 ldr r0, _0808B008 @ =sub_806AEDC bl SetMainCallback2 b _0808B018 .align 2, 0 _0808B000: .4byte gLastFieldPokeMenuOpened _0808B004: .4byte gPlayerParty _0808B008: .4byte sub_806AEDC _0808B00C: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808AF84 _0808B018: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_808AF80 thumb_func_start sub_808B020 sub_808B020: @ 808B020 push {lr} ldr r2, _0808B040 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] ldr r0, _0808B044 @ =gUnknown_02038561 ldrb r0, [r0] cmp r0, 0x1 beq _0808B0A0 cmp r0, 0x1 bgt _0808B048 cmp r0, 0 beq _0808B052 b _0808B0AC .align 2, 0 _0808B040: .4byte gPaletteFade _0808B044: .4byte gUnknown_02038561 _0808B048: cmp r0, 0x3 beq _0808B0A0 cmp r0, 0x4 beq _0808B08C b _0808B0AC _0808B052: ldr r0, _0808B070 @ =gScriptItemId ldrh r0, [r0] bl CheckIfItemIsTMHMOrEvolutionStone lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808B078 ldr r2, _0808B074 @ =sub_808B0C0 movs r0, 0 movs r1, 0 movs r3, 0x14 bl sub_806AF4C b _0808B0AC .align 2, 0 _0808B070: .4byte gScriptItemId _0808B074: .4byte sub_808B0C0 _0808B078: ldr r2, _0808B088 @ =sub_808B0C0 movs r0, 0 movs r1, 0 movs r3, 0x3 bl sub_806AF4C b _0808B0AC .align 2, 0 _0808B088: .4byte sub_808B0C0 _0808B08C: ldr r2, _0808B09C @ =sub_808B1EC movs r0, 0 movs r1, 0 movs r3, 0xFF bl sub_806AF4C b _0808B0AC .align 2, 0 _0808B09C: .4byte sub_808B1EC _0808B0A0: ldr r2, _0808B0B8 @ =sub_808B0C0 movs r0, 0 movs r1, 0 movs r3, 0x4 bl sub_806AF4C _0808B0AC: ldr r0, _0808B0BC @ =sub_808AF80 bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _0808B0B8: .4byte sub_808B0C0 _0808B0BC: .4byte sub_808AF80 thumb_func_end sub_808B020 thumb_func_start sub_808B0C0 sub_808B0C0: @ 808B0C0 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808B0EC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 bne _0808B1CE adds r0, r4, 0 bl sub_806BD80 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 beq _0808B0F0 cmp r0, 0x2 beq _0808B184 b _0808B1CE .align 2, 0 _0808B0EC: .4byte gPaletteFade _0808B0F0: adds r0, r4, 0 bl sub_806CA38 ldr r1, _0808B118 @ =gLastFieldPokeMenuOpened strb r0, [r1] ldrb r1, [r1] movs r0, 0x64 muls r0, r1 ldr r1, _0808B11C @ =gPlayerParty adds r0, r1 movs r1, 0x2D bl GetMonData cmp r0, 0 beq _0808B120 movs r0, 0x20 bl PlaySE b _0808B1CE .align 2, 0 _0808B118: .4byte gLastFieldPokeMenuOpened _0808B11C: .4byte gPlayerParty _0808B120: bl sub_806D5A4 ldr r5, _0808B16C @ =gUnknown_02038561 ldrb r0, [r5] cmp r0, 0 bne _0808B13C ldr r3, _0808B170 @ =gUnknown_03004AE4 ldr r0, _0808B174 @ =gScriptItemId ldrh r1, [r0] ldr r2, _0808B178 @ =sub_808B224 ldr r3, [r3] adds r0, r4, 0 bl _call_via_r3 _0808B13C: ldrb r0, [r5] cmp r0, 0x1 bne _0808B154 movs r0, 0x5 bl PlaySE ldr r0, _0808B174 @ =gScriptItemId ldrh r1, [r0] ldr r2, _0808B17C @ =sub_808B2EC adds r0, r4, 0 bl PartyMenuTryGiveMonHeldItem _0808B154: ldrb r0, [r5] cmp r0, 0x3 bne _0808B1CE movs r0, 0x5 bl PlaySE ldr r1, _0808B180 @ =sub_808B2B4 adds r0, r4, 0 bl PartyMenuTryGiveMonMail b _0808B1CE .align 2, 0 _0808B16C: .4byte gUnknown_02038561 _0808B170: .4byte gUnknown_03004AE4 _0808B174: .4byte gScriptItemId _0808B178: .4byte sub_808B224 _0808B17C: .4byte sub_808B2EC _0808B180: .4byte sub_808B2B4 _0808B184: adds r0, r4, 0 bl sub_806CA38 ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened strb r0, [r1] movs r0, 0x5 bl PlaySE movs r0, 0x1 negs r0, r0 str r5, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r2, _0808B1DC @ =gUnknown_02038561 ldrb r0, [r2] cmp r0, 0x1 bhi _0808B1BA ldr r0, _0808B1E0 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0808B1E4 @ =sub_808B25C str r0, [r1] _0808B1BA: ldrb r0, [r2] cmp r0, 0x3 bne _0808B1CE ldr r0, _0808B1E0 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0808B1E8 @ =sub_808B2B4 str r0, [r1] _0808B1CE: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808B1D8: .4byte gLastFieldPokeMenuOpened _0808B1DC: .4byte gUnknown_02038561 _0808B1E0: .4byte gTasks _0808B1E4: .4byte sub_808B25C _0808B1E8: .4byte sub_808B2B4 thumb_func_end sub_808B0C0 thumb_func_start sub_808B1EC sub_808B1EC: @ 808B1EC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808B214 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808B20E ldr r3, _0808B218 @ =gUnknown_03004AE4 ldr r0, _0808B21C @ =gScriptItemId ldrh r1, [r0] ldr r2, _0808B220 @ =sub_808B224 ldr r3, [r3] adds r0, r4, 0 bl _call_via_r3 _0808B20E: pop {r4} pop {r0} bx r0 .align 2, 0 _0808B214: .4byte gPaletteFade _0808B218: .4byte gUnknown_03004AE4 _0808B21C: .4byte gScriptItemId _0808B220: .4byte sub_808B224 thumb_func_end sub_808B1EC thumb_func_start sub_808B224 sub_808B224: @ 808B224 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, _0808B254 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808B258 @ =sub_808B25C str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0808B254: .4byte gTasks _0808B258: .4byte sub_808B25C thumb_func_end sub_808B224 thumb_func_start sub_808B25C sub_808B25C: @ 808B25C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808B280 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808B27A ldr r0, _0808B284 @ =sub_80A5B40 bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask _0808B27A: pop {r4} pop {r0} bx r0 .align 2, 0 _0808B280: .4byte gPaletteFade _0808B284: .4byte sub_80A5B40 thumb_func_end sub_808B25C thumb_func_start sub_808B288 sub_808B288: @ 808B288 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808B2AC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808B2A6 ldr r0, _0808B2B0 @ =Mailbox_ReturnToMailListAfterDeposit bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask _0808B2A6: pop {r4} pop {r0} bx r0 .align 2, 0 _0808B2AC: .4byte gPaletteFade _0808B2B0: .4byte Mailbox_ReturnToMailListAfterDeposit thumb_func_end sub_808B288 thumb_func_start sub_808B2B4 sub_808B2B4: @ 808B2B4 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, _0808B2E4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808B2E8 @ =sub_808B288 str r1, [r0] add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0808B2E4: .4byte gTasks _0808B2E8: .4byte sub_808B288 thumb_func_end sub_808B2B4 thumb_func_start sub_808B2EC sub_808B2EC: @ 808B2EC push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808B31C @ =gUnknown_0202E8F4 ldrb r0, [r0] cmp r0, 0x2 bne _0808B328 movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, _0808B320 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808B324 @ =sub_808B338 str r1, [r0] b _0808B32E .align 2, 0 _0808B31C: .4byte gUnknown_0202E8F4 _0808B320: .4byte gTasks _0808B324: .4byte sub_808B338 _0808B328: adds r0, r4, 0 bl sub_808B224 _0808B32E: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_808B2EC thumb_func_start sub_808B338 sub_808B338: @ 808B338 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0808B38C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808B384 adds r0, r5, 0 bl sub_806CA38 ldr r1, _0808B390 @ =gLastFieldPokeMenuOpened strb r0, [r1] ldrb r1, [r1] movs r0, 0x64 muls r0, r1 ldr r1, _0808B394 @ =gPlayerParty adds r0, r1 movs r1, 0x40 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 bl DestroyTask lsls r1, r4, 3 adds r1, r4 lsls r1, 2 ldr r0, _0808B398 @ =gSaveBlock1 + 0x2B4C adds r1, r0 ldr r2, _0808B39C @ =sub_808B3EC movs r0, 0x4 movs r3, 0x3 bl sub_80E62A0 _0808B384: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0808B38C: .4byte gPaletteFade _0808B390: .4byte gLastFieldPokeMenuOpened _0808B394: .4byte gPlayerParty _0808B398: .4byte gSaveBlock1 + 0x2B4C _0808B39C: .4byte sub_808B3EC thumb_func_end sub_808B338 thumb_func_start sub_808B3A0 sub_808B3A0: @ 808B3A0 push {r4,lr} ldr r4, _0808B3A8 @ =0x0201b260 b _0808B3B8 .align 2, 0 _0808B3A8: .4byte 0x0201b260 _0808B3AC: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808B3DC _0808B3B8: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808B3AC ldrb r0, [r4] ldr r1, _0808B3E4 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] bl sub_806C994 ldrb r0, [r4] movs r1, 0 bl sub_806BF74 ldr r0, _0808B3E8 @ =sub_806AEDC bl SetMainCallback2 _0808B3DC: pop {r4} pop {r0} bx r0 .align 2, 0 _0808B3E4: .4byte gLastFieldPokeMenuOpened _0808B3E8: .4byte sub_806AEDC thumb_func_end sub_808B3A0 thumb_func_start sub_808B3EC sub_808B3EC: @ 808B3EC push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _0808B464 @ =gPaletteFade mov r8, r0 ldrb r0, [r0, 0x8] movs r1, 0x80 orrs r0, r1 mov r1, r8 strb r0, [r1, 0x8] ldr r0, _0808B468 @ =gScriptResult ldrh r0, [r0] cmp r0, 0 bne _0808B480 ldr r7, _0808B46C @ =gUnknown_0202E8F8 ldrh r0, [r7] cmp r0, 0 beq _0808B416 movs r1, 0x1 bl RemoveBagItem _0808B416: ldr r6, _0808B470 @ =gLastFieldPokeMenuOpened ldrb r0, [r6] movs r5, 0x64 muls r0, r5 ldr r4, _0808B474 @ =gPlayerParty adds r0, r4 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl AddBagItem ldrb r0, [r6] muls r0, r5 adds r0, r4 bl TakeMailFromMon ldrb r0, [r6] muls r0, r5 adds r0, r4 movs r1, 0xC adds r2, r7, 0 bl SetMonData ldr r0, _0808B478 @ =sub_808B25C movs r1, 0x5 bl CreateTask mov r0, r8 ldrb r1, [r0, 0x8] movs r0, 0x7F ands r0, r1 mov r1, r8 strb r0, [r1, 0x8] ldr r0, _0808B47C @ =sub_806AEDC b _0808B48E .align 2, 0 _0808B464: .4byte gPaletteFade _0808B468: .4byte gScriptResult _0808B46C: .4byte gUnknown_0202E8F8 _0808B470: .4byte gLastFieldPokeMenuOpened _0808B474: .4byte gPlayerParty _0808B478: .4byte sub_808B25C _0808B47C: .4byte sub_806AEDC _0808B480: ldr r2, _0808B49C @ =sub_808B4A4 movs r0, 0 movs r1, 0 movs r3, 0xFF bl sub_806AF4C ldr r0, _0808B4A0 @ =sub_808B3A0 _0808B48E: bl SetMainCallback2 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0808B49C: .4byte sub_808B4A4 _0808B4A0: .4byte sub_808B3A0 thumb_func_end sub_808B3EC thumb_func_start sub_808B4A4 sub_808B4A4: @ 808B4A4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0808B4D8 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0808B4D2 ldr r0, _0808B4DC @ =gLastFieldPokeMenuOpened ldrb r0, [r0] ldr r1, _0808B4E0 @ =gScriptItemId ldrh r1, [r1] movs r2, 0x1 bl DisplayGiveHeldItemMessage ldr r1, _0808B4E4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808B4E8 @ =sub_808B4EC str r1, [r0] _0808B4D2: pop {r4} pop {r0} bx r0 .align 2, 0 _0808B4D8: .4byte gPaletteFade _0808B4DC: .4byte gLastFieldPokeMenuOpened _0808B4E0: .4byte gScriptItemId _0808B4E4: .4byte gTasks _0808B4E8: .4byte sub_808B4EC thumb_func_end sub_808B4A4 thumb_func_start sub_808B4EC sub_808B4EC: @ 808B4EC push {lr} lsls r0, 24 lsrs r1, r0, 24 ldr r0, _0808B504 @ =gUnknown_0202E8F6 ldrb r0, [r0] cmp r0, 0x1 beq _0808B500 adds r0, r1, 0 bl sub_808B224 _0808B500: pop {r0} bx r0 .align 2, 0 _0808B504: .4byte gUnknown_0202E8F6 thumb_func_end sub_808B4EC thumb_func_start sub_808B508 sub_808B508: @ 808B508 push {lr} lsls r0, 24 lsrs r0, 24 bl sub_808B224 pop {r0} bx r0 thumb_func_end sub_808B508 thumb_func_start sub_808B518 sub_808B518: @ 808B518 push {r4,lr} ldr r4, _0808B520 @ =0x0201b260 b _0808B530 .align 2, 0 _0808B520: .4byte 0x0201b260 _0808B524: bl sub_80F9344 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0808B554 _0808B530: bl sub_806B124 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0808B524 ldrb r0, [r4] ldr r1, _0808B55C @ =gUnknown_020384F0 ldrb r1, [r1] bl sub_806C994 ldrb r0, [r4] movs r1, 0 bl sub_806BF74 ldr r0, _0808B560 @ =sub_806AEDC bl SetMainCallback2 _0808B554: pop {r4} pop {r0} bx r0 .align 2, 0 _0808B55C: .4byte gUnknown_020384F0 _0808B560: .4byte sub_806AEDC thumb_func_end sub_808B518 thumb_func_start sub_808B564 sub_808B564: @ 808B564 push {lr} ldr r2, _0808B58C @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] bl sub_809FA30 lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 beq _0808B594 ldr r2, _0808B590 @ =TaughtMove movs r0, 0 movs r1, 0 movs r3, 0xFF bl sub_806AF4C b _0808B5A0 .align 2, 0 _0808B58C: .4byte gPaletteFade _0808B590: .4byte TaughtMove _0808B594: ldr r2, _0808B5AC @ =StopTryingToTeachMove_806F588 movs r0, 0 movs r1, 0 movs r3, 0xFF bl sub_806AF4C _0808B5A0: ldr r0, _0808B5B0 @ =sub_808B518 bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _0808B5AC: .4byte StopTryingToTeachMove_806F588 _0808B5B0: .4byte sub_808B518 thumb_func_end sub_808B564 thumb_func_start sub_808B5B4 sub_808B5B4: @ 808B5B4 push {lr} ldr r3, _0808B5D8 @ =gUnknown_03005CF0 ldr r2, _0808B5DC @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r2, [r1] str r2, [r3] ldr r2, _0808B5E0 @ =sub_808B5E4 str r2, [r1] lsls r0, 24 lsrs r0, 24 bl _call_via_r2 pop {r0} bx r0 .align 2, 0 _0808B5D8: .4byte gUnknown_03005CF0 _0808B5DC: .4byte gTasks _0808B5E0: .4byte sub_808B5E4 thumb_func_end sub_808B5B4 thumb_func_start sub_808B5E4 sub_808B5E4: @ 808B5E4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl sub_8055870 cmp r0, 0x1 beq _0808B602 ldr r1, _0808B608 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0808B60C @ =gUnknown_03005CF0 ldr r1, [r1] str r1, [r0] _0808B602: pop {r4} pop {r0} bx r0 .align 2, 0 _0808B608: .4byte gTasks _0808B60C: .4byte gUnknown_03005CF0 thumb_func_end sub_808B5E4 .align 2, 0 @ Don't pad with nop.