#include "asm/constants/gba_constants.inc" #include "asm/macros.inc" .syntax unified .text @ Menu that gets created when you talk to friend thumb_func_start CreateFriendActionMenu CreateFriendActionMenu: push {r4-r7,lr} ldr r3, _080274E4 ldr r4, _080274E8 ldr r0, [r4] movs r1, 0x8 ldrsh r2, [r0, r1] movs r1, 0x58 muls r2, r1 ldr r1, [r3] adds r5, r1, r2 movs r2, 0xB6 lsls r2, 1 adds r0, r2 movs r1, 0 movs r2, 0x14 bl MemoryFill16 ldrh r0, [r5] lsrs r0, 1 movs r6, 0x1 ands r0, r6 cmp r0, 0 beq _080274F4 ldr r2, [r4] movs r3, 0x8E lsls r3, 1 adds r1, r2, r3 ldr r0, _080274EC str r0, [r1] movs r0, 0x90 lsls r0, 1 adds r1, r2, r0 movs r0, 0x7 str r0, [r1] adds r0, r5, 0 bl sub_8027D9C lsls r0, 24 cmp r0, 0 bne _080274B6 ldr r0, [r4] movs r1, 0xB6 lsls r1, 1 adds r0, r1 strh r6, [r0] _080274B6: movs r7, 0x1 movs r0, 0x8 bl sub_80023E4 lsls r0, 24 cmp r0, 0 beq _08027552 ldrb r0, [r5, 0x2] cmp r0, 0 bne _08027552 ldr r3, [r4] movs r2, 0x8 movs r4, 0x92 lsls r4, 1 adds r1, r3, r4 ldr r0, _080274F0 str r0, [r1] movs r1, 0x94 lsls r1, 1 adds r0, r3, r1 str r2, [r0] b _08027550 .align 2, 0 _080274E4: .4byte gRecruitedPokemonRef _080274E8: .4byte gUnknown_203B2BC _080274EC: .4byte gFriendActionStandby _080274F0: .4byte gFriendActionMakeLeader _080274F4: ldr r2, [r4] movs r3, 0x8E lsls r3, 1 adds r1, r2, r3 ldr r0, _08027658 str r0, [r1] movs r0, 0x90 lsls r0, 1 adds r1, r2, r0 movs r0, 0x6 str r0, [r1] movs r1, 0x8 ldrsh r0, [r2, r1] bl sub_808D750 lsls r0, 24 cmp r0, 0 bne _08027522 ldr r0, [r4] movs r2, 0xB6 lsls r2, 1 adds r0, r2 strh r6, [r0] _08027522: movs r7, 0x1 ldr r2, [r4] movs r3, 0x92 lsls r3, 1 adds r1, r2, r3 ldr r0, _0802765C str r0, [r1] movs r0, 0x94 lsls r0, 1 adds r1, r2, r0 movs r0, 0x9 str r0, [r1] adds r0, r5, 0 bl sub_8027DCC lsls r0, 24 cmp r0, 0 bne _08027550 ldr r0, [r4] movs r1, 0xB7 lsls r1, 1 adds r0, r1 strh r7, [r0] _08027550: movs r7, 0x2 _08027552: ldr r4, _08027660 ldr r2, [r4] lsls r3, r7, 3 movs r6, 0x8E lsls r6, 1 adds r0, r2, r6 adds r0, r3 ldr r1, _08027664 str r1, [r0] movs r5, 0x90 lsls r5, 1 adds r2, r5 adds r2, r3 movs r0, 0xA str r0, [r2] bl GetNumberOfFilledInventorySlots cmp r0, 0 bne _08027588 ldr r0, [r4] lsls r1, r7, 1 movs r2, 0xB6 lsls r2, 1 adds r0, r2 adds r0, r1 movs r1, 0x1 strh r1, [r0] _08027588: adds r7, 0x1 ldr r2, [r4] lsls r3, r7, 3 adds r0, r2, r6 adds r0, r3 ldr r1, _08027668 str r1, [r0] adds r2, r5 adds r2, r3 movs r0, 0xB str r0, [r2] bl GetNumberOfFilledInventorySlots cmp r0, 0x13 bgt _080275AE ldr r0, [r4] ldrb r0, [r0, 0x14] cmp r0, 0 bne _080275BE _080275AE: ldr r0, [r4] lsls r1, r7, 1 movs r3, 0xB6 lsls r3, 1 adds r0, r3 adds r0, r1 movs r1, 0x1 strh r1, [r0] _080275BE: adds r7, 0x1 ldr r4, _08027660 ldr r5, [r4] lsls r1, r7, 3 movs r0, 0x8E lsls r0, 1 adds r3, r5, r0 adds r2, r3, r1 ldr r0, _0802766C str r0, [r2] movs r2, 0x90 lsls r2, 1 adds r6, r5, r2 adds r1, r6, r1 movs r0, 0x4 str r0, [r1] adds r7, 0x1 lsls r1, r7, 3 adds r2, r3, r1 ldr r0, _08027670 str r0, [r2] adds r1, r6, r1 movs r0, 0xC str r0, [r1] adds r7, 0x1 lsls r1, r7, 3 adds r2, r3, r1 ldr r0, _08027674 str r0, [r2] adds r1, r6, r1 movs r0, 0x5 str r0, [r1] adds r7, 0x1 lsls r1, r7, 3 adds r3, r1 movs r0, 0 str r0, [r3] adds r1, r6, r1 movs r0, 0x1 str r0, [r1] movs r3, 0 mov r12, r4 cmp r3, r7 bge _08027636 adds r4, r6, 0 movs r0, 0xB6 lsls r0, 1 adds r2, r5, r0 _0802761E: ldrh r0, [r2] cmp r0, 0 bne _0802762C ldr r1, [r4] ldr r0, [r5, 0x70] cmp r1, r0 beq _080276A0 _0802762C: adds r4, 0x8 adds r2, 0x2 adds r3, 0x1 cmp r3, r7 blt _0802761E _08027636: movs r3, 0 cmp r3, r7 bge _080276A0 mov r2, r12 ldr r1, [r2] movs r4, 0xB6 lsls r4, 1 adds r0, r1, r4 ldrh r0, [r0] cmp r0, 0 bne _08027678 movs r2, 0x90 lsls r2, 1 adds r0, r1, r2 ldr r0, [r0] str r0, [r1, 0x70] b _080276A0 .align 2, 0 _08027658: .4byte gFriendActionJoinTeam _0802765C: .4byte gFriendActionSayFarewell _08027660: .4byte gUnknown_203B2BC _08027664: .4byte gFriendActionGive _08027668: .4byte gFriendActionTake _0802766C: .4byte gFriendActionSummary _08027670: .4byte gFriendActionMoves _08027674: .4byte gFriendActionCheckIQ _08027678: adds r3, 0x1 cmp r3, r7 bge _080276A0 mov r4, r12 ldr r2, [r4] lsls r0, r3, 1 movs r4, 0xB6 lsls r4, 1 adds r1, r2, r4 adds r1, r0 ldrh r0, [r1] cmp r0, 0 bne _08027678 lsls r0, r3, 3 movs r3, 0x90 lsls r3, 1 adds r1, r2, r3 adds r1, r0 ldr r0, [r1] str r0, [r2, 0x70] _080276A0: pop {r4-r7} pop {r0} bx r0 thumb_func_end CreateFriendActionMenu thumb_func_start sub_80276A8 sub_80276A8: push {r4-r7,lr} ldr r5, _0802775C ldr r0, [r5] movs r7, 0xB6 lsls r7, 1 adds r0, r7 movs r1, 0 movs r2, 0x14 bl MemoryFill16 ldr r2, [r5] movs r0, 0x8E lsls r0, 1 adds r1, r2, r0 ldr r0, _08027760 str r0, [r1] movs r3, 0x90 lsls r3, 1 adds r1, r2, r3 movs r0, 0xA str r0, [r1] bl GetNumberOfFilledInventorySlots cmp r0, 0 bne _080276E4 ldr r0, [r5] adds r4, r7, 0 adds r0, r4 movs r1, 0x1 strh r1, [r0] _080276E4: ldr r4, [r5] movs r2, 0x1 movs r0, 0x92 lsls r0, 1 adds r1, r4, r0 ldr r0, _08027764 ldr r0, [r0] str r0, [r1] movs r3, 0x94 lsls r3, 1 adds r1, r4, r3 movs r0, 0x4 str r0, [r1] movs r6, 0x2 movs r0, 0x96 lsls r0, 1 adds r1, r4, r0 movs r0, 0 str r0, [r1] movs r1, 0x98 lsls r1, 1 adds r0, r4, r1 str r2, [r0] movs r3, 0 mov r12, r4 movs r4, 0x90 lsls r4, 1 add r4, r12 mov r0, r12 adds r2, r0, r7 _08027720: ldrh r0, [r2] cmp r0, 0 bne _08027730 ldr r1, [r4] mov r7, r12 ldr r0, [r7, 0x74] cmp r1, r0 beq _0802778E _08027730: adds r4, 0x8 adds r2, 0x2 adds r3, 0x1 cmp r3, r6 blt _08027720 movs r3, 0 cmp r3, r6 bge _0802778E ldr r1, [r5] movs r2, 0xB6 lsls r2, 1 adds r0, r1, r2 ldrh r0, [r0] cmp r0, 0 bne _08027768 movs r3, 0x90 lsls r3, 1 adds r0, r1, r3 ldr r0, [r0] str r0, [r1, 0x74] b _0802778E .align 2, 0 _0802775C: .4byte gUnknown_203B2BC _08027760: .4byte gFriendActionGive _08027764: .4byte gUnknown_80D4970 _08027768: adds r3, 0x1 cmp r3, r6 bge _0802778E ldr r2, [r5] lsls r0, r3, 1 movs r4, 0xB6 lsls r4, 1 adds r1, r2, r4 adds r1, r0 ldrh r0, [r1] cmp r0, 0 bne _08027768 lsls r0, r3, 3 movs r7, 0x90 lsls r7, 1 adds r1, r2, r7 adds r1, r0 ldr r0, [r1] str r0, [r2, 0x74] _0802778E: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80276A8 thumb_func_start sub_8027794 sub_8027794: push {r4,lr} ldr r4, _080277F0 ldr r0, [r4] movs r1, 0xB6 lsls r1, 1 adds r0, r1 movs r1, 0 movs r2, 0x14 bl MemoryFill16 ldr r4, [r4] movs r3, 0 movs r0, 0x8E lsls r0, 1 adds r1, r4, r0 ldr r0, _080277F4 ldr r0, [r0] str r0, [r1] movs r0, 0x90 lsls r0, 1 adds r1, r4, r0 movs r0, 0x2 str r0, [r1] movs r2, 0x1 movs r0, 0x92 lsls r0, 1 adds r1, r4, r0 ldr r0, _080277F8 ldr r0, [r0] str r0, [r1] movs r0, 0x94 lsls r0, 1 adds r1, r4, r0 movs r0, 0x3 str r0, [r1] movs r1, 0x96 lsls r1, 1 adds r0, r4, r1 str r3, [r0] adds r1, 0x4 adds r0, r4, r1 str r2, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _080277F0: .4byte gUnknown_203B2BC _080277F4: .4byte gUnknown_80D4920 _080277F8: .4byte gUnknown_80D4928 thumb_func_end sub_8027794 .align 2,0