diff options
Diffstat (limited to 'asm/pokemon_menu.s')
-rw-r--r-- | asm/pokemon_menu.s | 3438 |
1 files changed, 3438 insertions, 0 deletions
diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s new file mode 100644 index 000000000..3a1552f70 --- /dev/null +++ b/asm/pokemon_menu.s @@ -0,0 +1,3438 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8089A70 +sub_8089A70: @ 8089A70 + push {lr} + ldr r0, _08089A88 @ =gPaletteFade + ldrb r1, [r0, 0x8] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0, 0x8] + movs r0, 0 + movs r1, 0 + bl OpenPartyMenu + pop {r0} + bx r0 + .align 2, 0 +_08089A88: .4byte gPaletteFade + thumb_func_end sub_8089A70 + + thumb_func_start sub_8089A8C +sub_8089A8C: @ 8089A8C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r5, _08089AD0 @ =gUnknown_0202FFA9 + movs r0, 0 + strb r0, [r5] + ldr r0, _08089AD4 @ =gLastFieldPokeMenuOpened + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08089AD8 @ =gPlayerParty + adds r0, r1 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + beq _08089AE0 + ldr r4, _08089ADC @ =gUnknown_0202FFAA + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl AppendToList + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl AppendToList + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl AppendToList + b _08089BC8 + .align 2, 0 +_08089AD0: .4byte gUnknown_0202FFA9 +_08089AD4: .4byte gLastFieldPokeMenuOpened +_08089AD8: .4byte gPlayerParty +_08089ADC: .4byte gUnknown_0202FFAA +_08089AE0: + movs r6, 0 + ldr r0, _08089B24 @ =gUnknown_0839F554 + ldrh r0, [r0] + mov r8, r0 +_08089AE8: + movs r4, 0 + adds r7, r6, 0x1 + mov r0, r8 + cmp r0, 0xFF + beq _08089B48 + ldr r5, _08089B24 @ =gUnknown_0839F554 +_08089AF4: + ldr r0, _08089B28 @ =gLastFieldPokeMenuOpened + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08089B2C @ =gPlayerParty + adds r0, r1 + adds r1, r6, 0 + adds r1, 0xD + bl GetMonData + lsls r1, r4, 1 + adds r1, r5 + ldrh r1, [r1] + cmp r0, r1 + bne _08089B38 + adds r2, r4, 0 + adds r2, 0xA + lsls r2, 24 + lsrs r2, 24 + ldr r0, _08089B30 @ =gUnknown_0202FFAA + ldr r1, _08089B34 @ =gUnknown_0202FFA9 + bl AppendToList + b _08089B48 + .align 2, 0 +_08089B24: .4byte gUnknown_0839F554 +_08089B28: .4byte gLastFieldPokeMenuOpened +_08089B2C: .4byte gPlayerParty +_08089B30: .4byte gUnknown_0202FFAA +_08089B34: .4byte gUnknown_0202FFA9 +_08089B38: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + cmp r0, 0xFF + bne _08089AF4 +_08089B48: + lsls r0, r7, 16 + lsrs r6, r0, 16 + cmp r6, 0x3 + bls _08089AE8 + ldr r4, _08089BA4 @ =gUnknown_0202FFAA + ldr r5, _08089BA8 @ =gUnknown_0202FFA9 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl AppendToList + ldr r6, _08089BAC @ =gPlayerParty + 1 * 0x64 + adds r0, r6, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _08089B76 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl AppendToList +_08089B76: + ldr r0, _08089BB0 @ =gLastFieldPokeMenuOpened + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + adds r1, r6, 0 + subs r1, 0x64 + adds r0, r1 + movs r1, 0xC + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + bl ItemIsMail + lsls r0, 24 + cmp r0, 0 + beq _08089BB4 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x7 + bl AppendToList + b _08089BBE + .align 2, 0 +_08089BA4: .4byte gUnknown_0202FFAA +_08089BA8: .4byte gUnknown_0202FFA9 +_08089BAC: .4byte gPlayerParty + 1 * 0x64 +_08089BB0: .4byte gLastFieldPokeMenuOpened +_08089BB4: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl AppendToList +_08089BBE: + ldr r0, _08089BD4 @ =gUnknown_0202FFAA + ldr r1, _08089BD8 @ =gUnknown_0202FFA9 + movs r2, 0x3 + bl AppendToList +_08089BC8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08089BD4: .4byte gUnknown_0202FFAA +_08089BD8: .4byte gUnknown_0202FFA9 + thumb_func_end sub_8089A8C + + thumb_func_start sub_8089BDC +sub_8089BDC: @ 8089BDC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + adds r4, r2, 0 + mov r8, r3 + ldr r7, [sp, 0x20] + ldr r1, [sp, 0x24] + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 24 + lsrs r4, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_806D538 + adds r4, r5, r4 + lsls r4, 24 + lsrs r4, 24 + mov r0, r8 + lsls r3, r0, 1 + adds r3, r6, r3 + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r5, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl MenuDrawTextWindow + adds r5, 0x1 + lsls r5, 24 + lsrs r5, 24 + adds r6, 0x1 + lsls r6, 24 + lsrs r6, 24 + str r7, [sp] + adds r0, r5, 0 + adds r1, r6, 0 + mov r2, r8 + ldr r3, [sp, 0x1C] + bl PrintMenuItemsReordered + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8089BDC + + thumb_func_start sub_8089C50 +sub_8089C50: @ 8089C50 + push {r4,r5,lr} + sub sp, 0xC + ldr r4, [sp, 0x18] + ldr r5, [sp, 0x1C] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + str r4, [sp] + str r5, [sp, 0x4] + movs r4, 0x1 + str r4, [sp, 0x8] + bl sub_8089BDC + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8089C50 + + thumb_func_start sub_8089C7C +sub_8089C7C: @ 8089C7C + push {r4-r6,lr} + sub sp, 0xC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _08089CC8 @ =gUnknown_0202FFA9 + ldrb r0, [r6] + lsls r0, 1 + movs r4, 0x12 + subs r4, r0 + lsls r4, 24 + lsrs r4, 24 + ldrb r3, [r6] + ldr r0, _08089CCC @ =gPokemonMenuActions + str r0, [sp] + ldr r0, _08089CD0 @ =gUnknown_0202FFAA + str r0, [sp, 0x4] + movs r0, 0x3 + str r0, [sp, 0x8] + movs r0, 0x13 + adds r1, r4, 0 + movs r2, 0xA + bl sub_8089BDC + movs r2, 0x1 + orrs r2, r4 + ldrb r3, [r6] + str r5, [sp] + movs r0, 0x9 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x14 + bl InitMenu + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08089CC8: .4byte gUnknown_0202FFA9 +_08089CCC: .4byte gPokemonMenuActions +_08089CD0: .4byte gUnknown_0202FFAA + thumb_func_end sub_8089C7C + + 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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFA8 + strb r0, [r1] + b _08089E1A + .align 2, 0 +_08089DC8: .4byte gPaletteFade +_08089DCC: .4byte gMain +_08089DD0: .4byte gUnknown_0202FFA8 +_08089DD4: + cmp r1, 0x80 + bne _08089DF0 + movs r0, 0x5 + bl PlaySE + movs r0, 0x1 + bl MoveMenuCursor + ldr r1, _08089DEC @ =gUnknown_0202FFA8 + strb r0, [r1] + b _08089E1A + .align 2, 0 +_08089DEC: .4byte gUnknown_0202FFA8 +_08089DF0: + ldrh r1, [r2, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08089E30 + movs r0, 0x5 + bl PlaySE + ldr r1, _08089E24 @ =gPokemonMenuActions + ldr r2, _08089E28 @ =gUnknown_0202FFAA + ldr r0, _08089E2C @ =gUnknown_0202FFA8 + 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 gPokemonMenuActions +_08089E28: .4byte gUnknown_0202FFAA +_08089E2C: .4byte gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 + 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 @ =gUnknown_0202FFA8 + 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 @ =gUnknown_0202FFA8 + 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 @ =gPokemonMenuActions + ldr r0, _0808A0D4 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_0808A0D8: .4byte gUnknown_0839F578 +_0808A0DC: .4byte gPokemonMenuActions +_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 @ =gPokemonMenuActions + 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 gPokemonMenuActions +_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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFA8 + 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 @ =gPokemonMenuActions + 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 gUnknown_0202FFA8 +_0808A72C: .4byte gUnknown_0839F584 +_0808A730: .4byte gPokemonMenuActions +_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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_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 @ =gPokemonMenuActions + ldr r0, _0808A7EC @ =gUnknown_0202FFA8 + 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 gPokemonMenuActions +_0808A7EC: .4byte gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFAA + ldr r0, _0808A9D8 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFAA +_0808A9D8: .4byte gUnknown_0202FFA8 +_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 @ =gUnknown_0202FFA8 + 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 gUnknown_0202FFA8 +_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 @ =sub_80FC074 + bl SetMainCallback2 +_0808AB7E: + adds r0, r4, 0 + bl DestroyTask +_0808AB84: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808AB8C: .4byte sub_80FC074 + 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. |