.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_8120F78 sub_8120F78: @ 8120F78 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, _08120F90 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _08120F94 movs r0, 0 b _08120FA4 .align 2, 0 _08120F90: .4byte gMain _08120F94: ldr r0, _08120FA8 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _08120FAC @ =sub_8120FB0 str r0, [r1, 0x4] adds r0, r2, 0 bl Task_ClosePartyMenu movs r0, 0x1 _08120FA4: pop {r1} bx r1 .align 2, 0 _08120FA8: .4byte sPartyMenuInternal _08120FAC: .4byte sub_8120FB0 thumb_func_end sub_8120F78 thumb_func_start sub_8120FB0 sub_8120FB0: @ 8120FB0 push {lr} bl FreeRestoreBattleData bl LoadPlayerParty bl SetTeachyTvControllerModeToResume ldr r0, _08120FC8 @ =CB2_ReturnToTeachyTV bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _08120FC8: .4byte CB2_ReturnToTeachyTV thumb_func_end sub_8120FB0 thumb_func_start sub_8120FCC sub_8120FCC: @ 8120FCC lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _08120FE8 @ =gTasks+0x8 adds r3, r1, r0 movs r2, 0 strh r2, [r3] subs r0, 0x8 adds r1, r0 ldr r0, _08120FEC @ =sub_8120FF0 str r0, [r1] bx lr .align 2, 0 _08120FE8: .4byte gTasks+0x8 _08120FEC: .4byte sub_8120FF0 thumb_func_end sub_8120FCC thumb_func_start sub_8120FF0 sub_8120FF0: @ 8120FF0 push {r4,r5,lr} lsls r0, 24 lsrs r2, r0, 24 adds r5, r2, 0 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _0812102C @ =gTasks+0x8 adds r4, r0, r1 ldr r0, _08121030 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08121048 adds r0, r2, 0 bl sub_8120F78 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08121048 ldrh r1, [r4] movs r2, 0 ldrsh r0, [r4, r2] cmp r0, 0x50 beq _08121034 adds r0, r1, 0x1 strh r0, [r4] b _08121048 .align 2, 0 _0812102C: .4byte gTasks+0x8 _08121030: .4byte gPaletteFade _08121034: ldr r0, _08121050 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _08121054 @ =CB2_SetUpExitToBattleScreen str r0, [r1, 0x4] ldr r0, _08121058 @ =gItemUseCB ldr r1, _0812105C @ =Task_ClosePartyMenuAfterText ldr r2, [r0] adds r0, r5, 0 bl _call_via_r2 _08121048: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08121050: .4byte sPartyMenuInternal _08121054: .4byte CB2_SetUpExitToBattleScreen _08121058: .4byte gItemUseCB _0812105C: .4byte Task_ClosePartyMenuAfterText thumb_func_end sub_8120FF0 thumb_func_start InitPartyMenuWindows InitPartyMenuWindows: @ 8121060 push {r4,lr} lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 cmp r0, 0x1 beq _08121088 cmp r0, 0x1 bgt _08121076 cmp r0, 0 beq _0812107C b _081210A0 _08121076: cmp r1, 0x2 beq _08121094 b _081210A0 _0812107C: ldr r0, _08121084 @ =sSinglePartyMenuWindowTemplate bl InitWindows b _081210A6 .align 2, 0 _08121084: .4byte sSinglePartyMenuWindowTemplate _08121088: ldr r0, _08121090 @ =sDoublePartyMenuWindowTemplate bl InitWindows b _081210A6 .align 2, 0 _08121090: .4byte sDoublePartyMenuWindowTemplate _08121094: ldr r0, _0812109C @ =sMultiPartyMenuWindowTemplate bl InitWindows b _081210A6 .align 2, 0 _0812109C: .4byte sMultiPartyMenuWindowTemplate _081210A0: ldr r0, _081210F4 @ =sShowcaseMultiPartyMenuWindowTemplate bl InitWindows _081210A6: bl DeactivateAllTextPrinters movs r4, 0 _081210AC: adds r0, r4, 0 movs r1, 0 bl FillWindowPixelBuffer adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _081210AC movs r0, 0 movs r1, 0x4F movs r2, 0xD0 bl TextWindow_SetUserSelectedFrame movs r0, 0 movs r1, 0x58 movs r2, 0xF0 bl TextWindow_SetStdFrame0_WithPal movs r0, 0x2 bl stdpal_get movs r1, 0xC0 movs r2, 0x20 bl LoadPalette movs r0, 0 bl stdpal_get movs r1, 0xE0 movs r2, 0x20 bl LoadPalette pop {r4} pop {r0} bx r0 .align 2, 0 _081210F4: .4byte sShowcaseMultiPartyMenuWindowTemplate thumb_func_end InitPartyMenuWindows thumb_func_start CreateCancelConfirmWindows CreateCancelConfirmWindows: @ 81210F8 push {r4-r6,lr} sub sp, 0x14 lsls r0, 24 lsrs r2, r0, 24 ldr r0, _08121174 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x5 bne _0812110E b _08121238 _0812110E: cmp r2, 0x1 bne _08121188 ldr r0, _08121178 @ =sConfirmButtonWindowTemplate bl AddWindow adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 movs r1, 0 bl FillWindowPixelBuffer ldr r5, _0812117C @ =gMenuText_Confirm movs r0, 0 adds r1, r5, 0 movs r2, 0 bl GetStringWidth movs r2, 0x30 subs r2, r0 lsrs r2, 1 lsls r2, 24 lsrs r2, 24 movs r0, 0 str r0, [sp] str r0, [sp, 0x4] ldr r0, _08121180 @ =sFontColorTable str r0, [sp, 0x8] movs r0, 0x1 negs r0, r0 str r0, [sp, 0xC] str r5, [sp, 0x10] adds r0, r4, 0 movs r1, 0 movs r3, 0x1 bl AddTextPrinterParameterized4 adds r0, r4, 0 bl PutWindowTilemap adds r0, r4, 0 movs r1, 0x2 bl CopyWindowToVram ldr r0, _08121184 @ =sMultiCancelButtonWindowTemplate bl AddWindow lsls r0, 24 lsrs r6, r0, 24 movs r5, 0 b _08121194 .align 2, 0 _08121174: .4byte gPartyMenu _08121178: .4byte sConfirmButtonWindowTemplate _0812117C: .4byte gMenuText_Confirm _08121180: .4byte sFontColorTable _08121184: .4byte sMultiCancelButtonWindowTemplate _08121188: ldr r0, _081211E0 @ =sCancelButtonWindowTemplate bl AddWindow lsls r0, 24 lsrs r6, r0, 24 movs r5, 0x3 _08121194: adds r0, r6, 0 movs r1, 0 bl FillWindowPixelBuffer ldr r0, _081211E4 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0xA beq _081211F0 ldr r4, _081211E8 @ =gFameCheckerText_Cancel movs r0, 0 adds r1, r4, 0 movs r2, 0 bl GetStringWidth movs r1, 0x30 subs r1, r0 lsrs r0, r1, 31 adds r1, r0 asrs r1, 1 adds r1, r5, r1 lsls r1, 24 lsrs r5, r1, 24 ldr r0, _081211EC @ =sFontColorTable str r0, [sp] movs r0, 0x1 negs r0, r0 str r0, [sp, 0x4] str r4, [sp, 0x8] adds r0, r6, 0 movs r1, 0 adds r2, r5, 0 movs r3, 0x1 bl AddTextPrinterParameterized3 b _08121224 .align 2, 0 _081211E0: .4byte sCancelButtonWindowTemplate _081211E4: .4byte gPartyMenu _081211E8: .4byte gFameCheckerText_Cancel _081211EC: .4byte sFontColorTable _081211F0: ldr r4, _08121240 @ =gOtherText_Exit movs r0, 0 adds r1, r4, 0 movs r2, 0 bl GetStringWidth movs r1, 0x30 subs r1, r0 lsrs r0, r1, 31 adds r1, r0 asrs r1, 1 adds r1, r5, r1 lsls r1, 24 lsrs r5, r1, 24 ldr r0, _08121244 @ =sFontColorTable str r0, [sp] movs r0, 0x1 negs r0, r0 str r0, [sp, 0x4] str r4, [sp, 0x8] adds r0, r6, 0 movs r1, 0 adds r2, r5, 0 movs r3, 0x1 bl AddTextPrinterParameterized3 _08121224: adds r0, r6, 0 bl PutWindowTilemap adds r0, r6, 0 movs r1, 0x2 bl CopyWindowToVram movs r0, 0 bl ScheduleBgCopyTilemapToVram _08121238: add sp, 0x14 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08121240: .4byte gOtherText_Exit _08121244: .4byte sFontColorTable thumb_func_end CreateCancelConfirmWindows thumb_func_start GetPartyMenuPalBufferPtr GetPartyMenuPalBufferPtr: @ 8121248 lsls r0, 24 ldr r1, _08121258 @ =sPartyMenuInternal lsrs r0, 23 adds r0, 0x18 ldr r1, [r1] adds r1, r0 adds r0, r1, 0 bx lr .align 2, 0 _08121258: .4byte sPartyMenuInternal thumb_func_end GetPartyMenuPalBufferPtr thumb_func_start BlitBitmapToPartyWindow BlitBitmapToPartyWindow: @ 812125C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x2C str r1, [sp, 0xC] ldr r1, [sp, 0x4C] ldr r4, [sp, 0x50] ldr r5, [sp, 0x54] lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x8] lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x10] lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x14] lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x18] lsls r4, 24 lsrs r6, r4, 24 lsls r5, 24 lsrs r5, 24 mov r10, r5 mov r0, r10 muls r0, r6 lsls r0, 5 bl AllocZeroed mov r9, r0 cmp r0, 0 beq _0812132A movs r5, 0 ldr r0, [sp, 0x14] lsls r0, 19 str r0, [sp, 0x1C] ldr r1, [sp, 0x18] lsls r1, 19 str r1, [sp, 0x20] lsls r2, r6, 19 str r2, [sp, 0x24] mov r0, r10 lsls r0, 19 str r0, [sp, 0x28] cmp r5, r10 bcs _08121308 _081212BE: movs r4, 0 adds r1, r5, 0x1 mov r8, r1 cmp r4, r6 bcs _081212FE ldr r2, [sp, 0x18] adds r0, r2, r5 ldr r2, [sp, 0x10] adds r1, r0, 0 muls r1, r2 adds r7, r1, 0 _081212D4: ldr r1, [sp, 0x14] adds r0, r1, r4 adds r0, r7 ldr r2, [sp, 0xC] adds r0, r2, r0 ldrb r0, [r0] bl GetPartyMenuBgTile adds r1, r5, 0 muls r1, r6 adds r1, r4 lsls r1, 5 add r1, r9 movs r2, 0x10 bl CpuSet adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, r6 bcc _081212D4 _081212FE: mov r1, r8 lsls r0, r1, 24 lsrs r5, r0, 24 cmp r5, r10 bcc _081212BE _08121308: ldr r0, [sp, 0x1C] lsrs r2, r0, 16 ldr r1, [sp, 0x20] lsrs r3, r1, 16 ldr r1, [sp, 0x24] lsrs r0, r1, 16 str r0, [sp] ldr r1, [sp, 0x28] lsrs r0, r1, 16 str r0, [sp, 0x4] ldr r0, [sp, 0x8] mov r1, r9 bl BlitBitmapToWindow mov r0, r9 bl Free _0812132A: add sp, 0x2C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end BlitBitmapToPartyWindow thumb_func_start BlitBitmapToPartyWindow_LeftColumn BlitBitmapToPartyWindow_LeftColumn: @ 812133C push {r4-r6,lr} sub sp, 0xC ldr r4, [sp, 0x1C] ldr r5, [sp, 0x20] lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r6, r1, 24 lsls r2, 24 lsrs r2, 24 lsls r3, 24 lsrs r3, 24 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 cmp r3, 0 bne _08121368 cmp r4, 0 bne _08121368 movs r3, 0xA movs r4, 0x7 _08121368: cmp r5, 0 bne _08121384 ldr r1, _08121380 @ =sMainSlotTileNums str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0xA adds r3, r6, 0 bl BlitBitmapToPartyWindow b _08121394 .align 2, 0 _08121380: .4byte sMainSlotTileNums _08121384: ldr r1, _0812139C @ =sMainSlotTileNums_Egg str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0xA adds r3, r6, 0 bl BlitBitmapToPartyWindow _08121394: add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0812139C: .4byte sMainSlotTileNums_Egg thumb_func_end BlitBitmapToPartyWindow_LeftColumn thumb_func_start BlitBitmapToPartyWindow_RightColumn BlitBitmapToPartyWindow_RightColumn: @ 81213A0 push {r4-r6,lr} sub sp, 0xC ldr r4, [sp, 0x1C] ldr r5, [sp, 0x20] lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r6, r1, 24 lsls r2, 24 lsrs r2, 24 lsls r3, 24 lsrs r3, 24 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 cmp r3, 0 bne _081213CC cmp r4, 0 bne _081213CC movs r3, 0x12 movs r4, 0x3 _081213CC: cmp r5, 0 bne _081213E8 ldr r1, _081213E4 @ =sOtherSlotsTileNums str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0x12 adds r3, r6, 0 bl BlitBitmapToPartyWindow b _081213F8 .align 2, 0 _081213E4: .4byte sOtherSlotsTileNums _081213E8: ldr r1, _08121400 @ =sOtherSlotsTileNums_Egg str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0x12 adds r3, r6, 0 bl BlitBitmapToPartyWindow _081213F8: add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08121400: .4byte sOtherSlotsTileNums_Egg thumb_func_end BlitBitmapToPartyWindow_RightColumn thumb_func_start DrawEmptySlot DrawEmptySlot: @ 8121404 push {lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 ldr r1, _08121428 @ =sEmptySlotTileNums movs r2, 0 str r2, [sp] movs r2, 0x12 str r2, [sp, 0x4] movs r2, 0x3 str r2, [sp, 0x8] movs r2, 0x12 movs r3, 0 bl BlitBitmapToPartyWindow add sp, 0xC pop {r0} bx r0 .align 2, 0 _08121428: .4byte sEmptySlotTileNums thumb_func_end DrawEmptySlot thumb_func_start LoadPartyBoxPalette LoadPartyBoxPalette: @ 812142C push {r4-r7,lr} lsls r1, 24 lsrs r4, r1, 24 adds r5, r4, 0 ldrb r0, [r0, 0x8] movs r1, 0x5 bl GetWindowAttribute lsls r0, 28 lsrs r6, r0, 24 adds r7, r6, 0 movs r0, 0x20 ands r0, r4 cmp r0, 0 beq _081214A0 movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0812145C ldr r5, _08121458 @ =sPartyBoxSelectedForActionPalIds1 b _0812160A .align 2, 0 _08121458: .4byte sPartyBoxSelectedForActionPalIds1 _0812145C: ldr r5, _08121494 @ =sPartyBoxSelectedForActionPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121498 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 bl LoadPalette ldr r5, _0812149C @ =sPartyBoxSelectedForActionPalIds2 b _0812163E .align 2, 0 _08121494: .4byte sPartyBoxSelectedForActionPalIds1 _08121498: .4byte sPartyBoxPalOffsets1 _0812149C: .4byte sPartyBoxSelectedForActionPalIds2 _081214A0: movs r0, 0x10 ands r0, r4 cmp r0, 0 beq _081214EC ldr r5, _081214E0 @ =sPartyBoxSelectedForActionPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _081214E4 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 bl LoadPalette ldr r5, _081214E8 @ =sPartyBoxSelectedForActionPalIds2 b _0812163E .align 2, 0 _081214E0: .4byte sPartyBoxSelectedForActionPalIds1 _081214E4: .4byte sPartyBoxPalOffsets1 _081214E8: .4byte sPartyBoxSelectedForActionPalIds2 _081214EC: movs r0, 0x4 ands r0, r4 cmp r0, 0 beq _08121548 movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _08121504 ldr r5, _08121500 @ =sPartyBoxSelectedForActionPalIds1 b _0812160A .align 2, 0 _08121500: .4byte sPartyBoxSelectedForActionPalIds1 _08121504: ldr r5, _0812153C @ =sPartyBoxSelectedForActionPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121540 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 bl LoadPalette ldr r5, _08121544 @ =sPartyBoxSelectedForActionPalIds2 b _0812163E .align 2, 0 _0812153C: .4byte sPartyBoxSelectedForActionPalIds1 _08121540: .4byte sPartyBoxPalOffsets1 _08121544: .4byte sPartyBoxSelectedForActionPalIds2 _08121548: movs r0, 0x2 ands r0, r4 cmp r0, 0 beq _081215A4 movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _08121560 ldr r5, _0812155C @ =sPartyBoxCurrSelectionFaintedPalIds b _0812160A .align 2, 0 _0812155C: .4byte sPartyBoxCurrSelectionFaintedPalIds _08121560: ldr r5, _08121598 @ =sPartyBoxFaintedPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _0812159C @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 bl LoadPalette ldr r5, _081215A0 @ =sPartyBoxFaintedPalIds2 b _0812163E .align 2, 0 _08121598: .4byte sPartyBoxFaintedPalIds1 _0812159C: .4byte sPartyBoxPalOffsets1 _081215A0: .4byte sPartyBoxFaintedPalIds2 _081215A4: movs r0, 0x8 ands r0, r4 cmp r0, 0 beq _08121600 movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _081215BC ldr r5, _081215B8 @ =sPartyBoxCurrSelectionMultiPalIds b _0812160A .align 2, 0 _081215B8: .4byte sPartyBoxCurrSelectionMultiPalIds _081215BC: ldr r5, _081215F4 @ =sPartyBoxMultiPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _081215F8 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 bl LoadPalette ldr r5, _081215FC @ =sPartyBoxMultiPalIds2 b _0812163E .align 2, 0 _081215F4: .4byte sPartyBoxMultiPalIds1 _081215F8: .4byte sPartyBoxPalOffsets1 _081215FC: .4byte sPartyBoxMultiPalIds2 _08121600: movs r0, 0x1 ands r5, r0 cmp r5, 0 beq _08121684 ldr r5, _08121674 @ =sPartyBoxCurrSelectionPalIds1 _0812160A: ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121678 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 bl LoadPalette ldr r5, _0812167C @ =sPartyBoxCurrSelectionPalIds2 _0812163E: ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121680 @ =sPartyBoxPalOffsets2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 bl LoadPalette b _081216EC .align 2, 0 _08121674: .4byte sPartyBoxCurrSelectionPalIds1 _08121678: .4byte sPartyBoxPalOffsets1 _0812167C: .4byte sPartyBoxCurrSelectionPalIds2 _08121680: .4byte sPartyBoxPalOffsets2 _08121684: ldr r5, _081216F4 @ =sPartyBoxEmptySlotPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _081216F8 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r7 movs r2, 0x2 bl LoadPalette ldr r5, _081216FC @ =sPartyBoxEmptySlotPalIds2 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121700 @ =sPartyBoxPalOffsets2 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r7 movs r2, 0x2 bl LoadPalette _081216EC: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081216F4: .4byte sPartyBoxEmptySlotPalIds1 _081216F8: .4byte sPartyBoxPalOffsets1 _081216FC: .4byte sPartyBoxEmptySlotPalIds2 _08121700: .4byte sPartyBoxPalOffsets2 thumb_func_end LoadPartyBoxPalette thumb_func_start DisplayPartyPokemonBarDetail DisplayPartyPokemonBarDetail: @ 8121704 push {r4,r5,lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 lsls r2, 24 lsrs r2, 24 ldrb r5, [r3] ldrb r3, [r3, 0x1] lsls r4, r2, 1 adds r4, r2 ldr r2, _08121734 @ =sFontColorTable adds r4, r2 str r4, [sp] movs r2, 0 str r2, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0 adds r2, r5, 0 bl AddTextPrinterParameterized3 add sp, 0xC pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08121734: .4byte sFontColorTable thumb_func_end DisplayPartyPokemonBarDetail thumb_func_start DisplayPartyPokemonNickname DisplayPartyPokemonNickname: @ 8121738 push {r4-r7,lr} sub sp, 0x14 adds r7, r0, 0 adds r6, r1, 0 lsls r2, 24 lsrs r4, r2, 24 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08121788 cmp r4, 0x1 bne _08121772 ldr r5, [r6] ldrb r0, [r6, 0x8] ldrb r1, [r5, 0x4] lsrs r1, 3 ldrb r2, [r5, 0x5] lsrs r2, 3 ldrb r3, [r5, 0x6] lsrs r3, 3 ldrb r4, [r5, 0x7] lsrs r4, 3 str r4, [sp] movs r4, 0 str r4, [sp, 0x4] ldr r4, [r5] bl _call_via_r4 _08121772: adds r0, r7, 0 add r1, sp, 0x8 bl GetMonNickname ldrb r0, [r6, 0x8] ldr r3, [r6] adds r3, 0x4 add r1, sp, 0x8 movs r2, 0 bl DisplayPartyPokemonBarDetail _08121788: add sp, 0x14 pop {r4-r7} pop {r0} bx r0 thumb_func_end DisplayPartyPokemonNickname thumb_func_start DisplayPartyPokemonLevelCheck DisplayPartyPokemonLevelCheck: @ 8121790 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 adds r6, r0, 0 adds r7, r1, 0 lsls r2, 24 lsrs r4, r2, 24 mov r8, r4 movs r1, 0xB bl GetMonData cmp r0, 0 beq _081217FC adds r0, r6, 0 bl GetMonAilment lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _081217BE cmp r0, 0x6 bne _081217FC _081217BE: cmp r4, 0 beq _081217E4 ldr r5, [r7] ldrb r0, [r7, 0x8] ldrb r1, [r5, 0x8] lsrs r1, 3 ldrb r2, [r5, 0x9] lsrs r2, 3 adds r2, 0x1 ldrb r3, [r5, 0xA] lsrs r3, 3 ldrb r4, [r5, 0xB] lsrs r4, 3 str r4, [sp] movs r4, 0 str r4, [sp, 0x4] ldr r4, [r5] bl _call_via_r4 _081217E4: mov r0, r8 cmp r0, 0x2 beq _081217FC adds r0, r6, 0 movs r1, 0x38 bl GetMonData lsls r0, 24 lsrs r0, 24 adds r1, r7, 0 bl DisplayPartyPokemonLevel _081217FC: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end DisplayPartyPokemonLevelCheck thumb_func_start DisplayPartyPokemonLevel DisplayPartyPokemonLevel: @ 8121808 push {r4-r6,lr} adds r2, r0, 0 adds r6, r1, 0 lsls r2, 24 lsrs r2, 24 ldr r5, _08121848 @ =gStringVar2 adds r0, r5, 0 adds r1, r2, 0 movs r2, 0 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _0812184C @ =gStringVar1 ldr r1, _08121850 @ =gText_Lv adds r0, r4, 0 bl StringCopy adds r0, r4, 0 adds r1, r5, 0 bl StringAppend ldrb r0, [r6, 0x8] ldr r3, [r6] adds r3, 0x8 adds r1, r4, 0 movs r2, 0 bl DisplayPartyPokemonBarDetail pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08121848: .4byte gStringVar2 _0812184C: .4byte gStringVar1 _08121850: .4byte gText_Lv thumb_func_end DisplayPartyPokemonLevel thumb_func_start DisplayPartyPokemonGenderNidoranCheck DisplayPartyPokemonGenderNidoranCheck: @ 8121854 push {r4-r7,lr} sub sp, 0x14 adds r6, r0, 0 adds r7, r1, 0 lsls r2, 24 lsrs r2, 24 cmp r2, 0x1 bne _08121886 ldr r5, [r7] ldrb r0, [r7, 0x8] ldrb r1, [r5, 0xC] lsrs r1, 3 ldrb r2, [r5, 0xD] lsrs r2, 3 adds r2, 0x1 ldrb r3, [r5, 0xE] lsrs r3, 3 ldrb r4, [r5, 0xF] lsrs r4, 3 str r4, [sp] movs r4, 0 str r4, [sp, 0x4] ldr r4, [r5] bl _call_via_r4 _08121886: adds r0, r6, 0 add r1, sp, 0x8 bl GetMonNickname adds r0, r6, 0 bl GetMonGender adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 movs r1, 0xB bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 add r2, sp, 0x8 adds r3, r7, 0 bl DisplayPartyPokemonGender add sp, 0x14 pop {r4-r7} pop {r0} bx r0 thumb_func_end DisplayPartyPokemonGenderNidoranCheck thumb_func_start DisplayPartyPokemonGender DisplayPartyPokemonGender: @ 81218BC push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} mov r9, r2 adds r7, r3, 0 lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r1, 16 lsrs r4, r1, 16 adds r5, r4, 0 ldrb r0, [r7, 0x8] movs r1, 0x5 bl GetWindowAttribute lsls r0, 28 lsrs r6, r0, 24 cmp r4, 0 beq _08121982 cmp r4, 0x20 beq _081218EC cmp r4, 0x1D bne _08121900 _081218EC: movs r0, 0xB adds r1, r5, 0 muls r1, r0 ldr r0, _0812190C @ =gSpeciesNames adds r1, r0 mov r0, r9 bl StringCompare cmp r0, 0 beq _08121982 _08121900: mov r0, r8 cmp r0, 0 beq _08121910 cmp r0, 0xFE beq _08121950 b _08121982 .align 2, 0 _0812190C: .4byte gSpeciesNames _08121910: ldr r5, _08121944 @ =sGenderMalePalIds ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121948 @ =sGenderPalOffsets ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r7, 0x8] ldr r1, _0812194C @ =gText_MaleSymbol ldr r3, [r7] adds r3, 0xC movs r2, 0x2 bl DisplayPartyPokemonBarDetail b _08121982 .align 2, 0 _08121944: .4byte sGenderMalePalIds _08121948: .4byte sGenderPalOffsets _0812194C: .4byte gText_MaleSymbol _08121950: ldr r5, _08121990 @ =sGenderFemalePalIds ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121994 @ =sGenderPalOffsets ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r7, 0x8] ldr r1, _08121998 @ =gText_FemaleSymbol ldr r3, [r7] adds r3, 0xC movs r2, 0x2 bl DisplayPartyPokemonBarDetail _08121982: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08121990: .4byte sGenderFemalePalIds _08121994: .4byte sGenderPalOffsets _08121998: .4byte gText_FemaleSymbol thumb_func_end DisplayPartyPokemonGender thumb_func_start DisplayPartyPokemonHPCheck DisplayPartyPokemonHPCheck: @ 812199C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 adds r7, r0, 0 adds r6, r1, 0 lsls r2, 24 lsrs r4, r2, 24 mov r8, r4 movs r1, 0xB bl GetMonData cmp r0, 0 beq _081219F6 cmp r4, 0 beq _081219DE ldr r5, [r6] ldrb r0, [r6, 0x8] ldrb r1, [r5, 0x10] lsrs r1, 3 ldrb r2, [r5, 0x11] lsrs r2, 3 adds r2, 0x1 ldrb r3, [r5, 0x12] lsrs r3, 3 ldrb r4, [r5, 0x13] lsrs r4, 3 str r4, [sp] movs r4, 0 str r4, [sp, 0x4] ldr r4, [r5] bl _call_via_r4 _081219DE: mov r0, r8 cmp r0, 0x2 beq _081219F6 adds r0, r7, 0 movs r1, 0x39 bl GetMonData lsls r0, 16 lsrs r0, 16 adds r1, r6, 0 bl DisplayPartyPokemonHP _081219F6: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end DisplayPartyPokemonHPCheck thumb_func_start DisplayPartyPokemonHP DisplayPartyPokemonHP: @ 8121A04 push {r4,r5,lr} adds r2, r0, 0 adds r4, r1, 0 lsls r2, 16 lsrs r2, 16 ldr r5, _08121A38 @ =gStringVar1 adds r0, r5, 0 adds r1, r2, 0 movs r2, 0x1 movs r3, 0x3 bl ConvertIntToDecimalStringN movs r1, 0xBA strb r1, [r0] movs r1, 0xFF strb r1, [r0, 0x1] ldrb r0, [r4, 0x8] ldr r3, [r4] adds r3, 0x10 adds r1, r5, 0 movs r2, 0 bl DisplayPartyPokemonBarDetail pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08121A38: .4byte gStringVar1 thumb_func_end DisplayPartyPokemonHP thumb_func_start DisplayPartyPokemonMaxHPCheck DisplayPartyPokemonMaxHPCheck: @ 8121A3C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 adds r7, r0, 0 adds r6, r1, 0 lsls r2, 24 lsrs r4, r2, 24 mov r8, r4 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08121A98 cmp r4, 0 beq _08121A80 ldr r5, [r6] ldrb r0, [r6, 0x8] ldrb r1, [r5, 0x14] lsrs r1, 3 adds r1, 0x1 ldrb r2, [r5, 0x15] lsrs r2, 3 adds r2, 0x1 ldrb r3, [r5, 0x16] lsrs r3, 3 ldrb r4, [r5, 0x17] lsrs r4, 3 str r4, [sp] movs r4, 0 str r4, [sp, 0x4] ldr r4, [r5] bl _call_via_r4 _08121A80: mov r0, r8 cmp r0, 0x2 beq _08121A98 adds r0, r7, 0 movs r1, 0x3A bl GetMonData lsls r0, 16 lsrs r0, 16 adds r1, r6, 0 bl DisplayPartyPokemonMaxHP _08121A98: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end DisplayPartyPokemonMaxHPCheck thumb_func_start DisplayPartyPokemonMaxHP DisplayPartyPokemonMaxHP: @ 8121AA4 push {r4-r6,lr} adds r2, r0, 0 adds r6, r1, 0 lsls r2, 16 lsrs r2, 16 ldr r5, _08121AE4 @ =gStringVar2 adds r0, r5, 0 adds r1, r2, 0 movs r2, 0x1 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _08121AE8 @ =gStringVar1 ldr r1, _08121AEC @ =gText_Slash adds r0, r4, 0 bl StringCopy adds r0, r4, 0 adds r1, r5, 0 bl StringAppend ldrb r0, [r6, 0x8] ldr r3, [r6] adds r3, 0x14 adds r1, r4, 0 movs r2, 0 bl DisplayPartyPokemonBarDetail pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08121AE4: .4byte gStringVar2 _08121AE8: .4byte gStringVar1 _08121AEC: .4byte gText_Slash thumb_func_end DisplayPartyPokemonMaxHP thumb_func_start DisplayPartyPokemonHPBarCheck DisplayPartyPokemonHPBarCheck: @ 8121AF0 push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08121B24 adds r0, r5, 0 movs r1, 0x39 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r5, 0 movs r1, 0x3A bl GetMonData adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 adds r2, r6, 0 bl DisplayPartyPokemonHPBar _08121B24: pop {r4-r6} pop {r0} bx r0 thumb_func_end DisplayPartyPokemonHPBarCheck thumb_func_start DisplayPartyPokemonHPBar DisplayPartyPokemonHPBar: @ 8121B2C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x8 adds r6, r2, 0 lsls r0, 16 lsrs r0, 16 mov r8, r0 lsls r1, 16 lsrs r1, 16 mov r9, r1 ldrb r0, [r6, 0x8] movs r1, 0x5 bl GetWindowAttribute lsls r0, 28 lsrs r7, r0, 24 mov r1, r8 lsls r0, r1, 16 asrs r0, 16 mov r2, r9 lsls r1, r2, 16 asrs r1, 16 bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 beq _08121B78 cmp r0, 0x2 blt _08121BA8 cmp r0, 0x4 bgt _08121BA8 ldr r5, _08121B74 @ =sHPBarGreenPalIds b _08121B7A .align 2, 0 _08121B74: .4byte sHPBarGreenPalIds _08121B78: ldr r5, _08121BA0 @ =sHPBarYellowPalIds _08121B7A: ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121BA4 @ =sHPBarPalOffsets ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 bl LoadPalette b _08121BCC .align 2, 0 _08121BA0: .4byte sHPBarYellowPalIds _08121BA4: .4byte sHPBarPalOffsets _08121BA8: ldr r5, _08121C68 @ =sHPBarRedPalIds ldrb r0, [r5] bl GetPartyMenuPalBufferPtr ldr r4, _08121C6C @ =sHPBarPalOffsets ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 bl LoadPalette _08121BCC: mov r1, r8 lsls r0, r1, 16 asrs r0, 16 mov r2, r9 lsls r1, r2, 16 asrs r1, 16 ldr r2, [r6] ldrb r2, [r2, 0x1A] bl GetScaledHPFraction lsls r0, 24 lsrs r5, r0, 24 ldrb r0, [r6, 0x8] ldr r4, _08121C6C @ =sHPBarPalOffsets ldrb r1, [r4, 0x1] ldr r3, [r6] ldrb r2, [r3, 0x18] ldrb r3, [r3, 0x19] str r5, [sp] movs r7, 0x1 str r7, [sp, 0x4] bl FillWindowPixelRect ldrb r0, [r6, 0x8] ldrb r1, [r4] ldr r3, [r6] ldrb r2, [r3, 0x18] ldrb r3, [r3, 0x19] adds r3, 0x1 str r5, [sp] movs r4, 0x2 str r4, [sp, 0x4] bl FillWindowPixelRect ldr r1, [r6] ldrb r0, [r1, 0x1A] cmp r5, r0 beq _08121C50 ldrb r0, [r6, 0x8] ldrb r2, [r1, 0x18] adds r2, r5 ldrb r3, [r1, 0x19] ldrb r1, [r1, 0x1A] subs r1, r5 lsls r1, 16 lsrs r1, 16 str r1, [sp] str r7, [sp, 0x4] movs r1, 0xD bl FillWindowPixelRect ldrb r0, [r6, 0x8] ldr r1, [r6] ldrb r2, [r1, 0x18] adds r2, r5 ldrb r3, [r1, 0x19] adds r3, 0x1 ldrb r1, [r1, 0x1A] subs r1, r5 lsls r1, 16 lsrs r1, 16 str r1, [sp] str r4, [sp, 0x4] movs r1, 0x2 bl FillWindowPixelRect _08121C50: ldrb r0, [r6, 0x8] movs r1, 0x2 bl CopyWindowToVram add sp, 0x8 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08121C68: .4byte sHPBarRedPalIds _08121C6C: .4byte sHPBarPalOffsets thumb_func_end DisplayPartyPokemonHPBar thumb_func_start DisplayPartyPokemonDescriptionText DisplayPartyPokemonDescriptionText: @ 8121C70 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC adds r6, r1, 0 lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r2, 24 lsrs r2, 24 adds r7, r2, 0 cmp r7, 0 beq _08121CAA ldr r5, [r6] ldrb r0, [r6, 0x8] ldrb r1, [r5, 0x1C] lsrs r1, 3 ldrb r2, [r5, 0x1D] lsrs r2, 3 ldrb r3, [r5, 0x1E] lsrs r3, 3 ldrb r4, [r5, 0x1F] lsrs r4, 3 str r4, [sp] movs r4, 0x1 str r4, [sp, 0x4] ldr r4, [r5] bl _call_via_r4 _08121CAA: cmp r7, 0x2 beq _08121CD0 ldrb r0, [r6, 0x8] ldr r1, [r6] ldrb r2, [r1, 0x1C] ldrb r3, [r1, 0x1D] ldr r1, _08121CDC @ =sFontColorTable str r1, [sp] movs r1, 0 str r1, [sp, 0x4] ldr r4, _08121CE0 @ =sDescriptionStringTable mov r5, r8 lsls r1, r5, 2 adds r1, r4 ldr r1, [r1] str r1, [sp, 0x8] movs r1, 0x1 bl AddTextPrinterParameterized3 _08121CD0: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08121CDC: .4byte sFontColorTable _08121CE0: .4byte sDescriptionStringTable thumb_func_end DisplayPartyPokemonDescriptionText thumb_func_start PartyMenuRemoveWindow PartyMenuRemoveWindow: @ 8121CE4 push {r4,lr} adds r4, r0, 0 ldrb r0, [r4] cmp r0, 0xFF beq _08121D04 movs r1, 0 bl ClearStdWindowAndFrameToTransparent ldrb r0, [r4] bl RemoveWindow movs r0, 0xFF strb r0, [r4] movs r0, 0x2 bl ScheduleBgCopyTilemapToVram _08121D04: pop {r4} pop {r0} bx r0 thumb_func_end PartyMenuRemoveWindow thumb_func_start DisplayPartyMenuStdMessage DisplayPartyMenuStdMessage: @ 8121D0C push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 ldr r0, _08121D3C @ =sPartyMenuInternal ldr r4, [r0] adds r5, r4, 0 adds r5, 0xD ldrb r0, [r4, 0xD] cmp r0, 0xFF beq _08121D26 adds r0, r5, 0 bl PartyMenuRemoveWindow _08121D26: cmp r6, 0x7F beq _08121DE8 adds r0, r6, 0 subs r0, 0x16 cmp r0, 0x4 bhi _08121D80 lsls r0, 2 ldr r1, _08121D40 @ =_08121D44 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08121D3C: .4byte sPartyMenuInternal _08121D40: .4byte _08121D44 .align 2, 0 _08121D44: .4byte _08121D58 .4byte _08121D70 .4byte _08121D70 .4byte _08121D60 .4byte _08121D68 _08121D58: ldr r0, _08121D5C @ =sDoWhatWithMonMsgWindowTemplate b _08121D72 .align 2, 0 _08121D5C: .4byte sDoWhatWithMonMsgWindowTemplate _08121D60: ldr r0, _08121D64 @ =sDoWhatWithItemMsgWindowTemplate b _08121D72 .align 2, 0 _08121D64: .4byte sDoWhatWithItemMsgWindowTemplate _08121D68: ldr r0, _08121D6C @ =sDoWhatWithMailMsgWindowTemplate b _08121D72 .align 2, 0 _08121D6C: .4byte sDoWhatWithMailMsgWindowTemplate _08121D70: ldr r0, _08121D7C @ =sWhichMoveMsgWindowTemplate _08121D72: bl AddWindow strb r0, [r5] b _08121D88 .align 2, 0 _08121D7C: .4byte sWhichMoveMsgWindowTemplate _08121D80: ldr r0, _08121D9C @ =sDefaultPartyMsgWindowTemplate bl AddWindow strb r0, [r4, 0xD] _08121D88: cmp r6, 0 bne _08121DB0 ldr r0, _08121DA0 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 cmp r0, 0 beq _08121DA4 movs r6, 0x2 b _08121DB0 .align 2, 0 _08121D9C: .4byte sDefaultPartyMsgWindowTemplate _08121DA0: .4byte sPartyMenuInternal _08121DA4: bl ShouldUseChooseMonText lsls r0, 24 cmp r0, 0 bne _08121DB0 movs r6, 0x1 _08121DB0: ldrb r0, [r5] movs r1, 0 movs r2, 0x58 movs r3, 0xF bl DrawStdFrameWithCustomTileAndPalette ldr r4, _08121DF0 @ =gStringVar4 ldr r1, _08121DF4 @ =sActionStringTable lsls r0, r6, 2 adds r0, r1 ldr r1, [r0] adds r0, r4, 0 bl StringExpandPlaceholders ldrb r0, [r5] movs r1, 0x2 str r1, [sp] movs r1, 0 str r1, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0x2 adds r2, r4, 0 movs r3, 0 bl AddTextPrinterParameterized movs r0, 0x2 bl ScheduleBgCopyTilemapToVram _08121DE8: add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08121DF0: .4byte gStringVar4 _08121DF4: .4byte sActionStringTable thumb_func_end DisplayPartyMenuStdMessage thumb_func_start ShouldUseChooseMonText ShouldUseChooseMonText: @ 8121DF8 push {r4-r7,lr} ldr r7, _08121E0C @ =gPlayerParty movs r6, 0 ldr r0, _08121E10 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x1 bne _08121E14 _08121E06: movs r0, 0x1 b _08121E56 .align 2, 0 _08121E0C: .4byte gPlayerParty _08121E10: .4byte gPartyMenu _08121E14: movs r5, 0 _08121E16: movs r0, 0x64 muls r0, r5 adds r4, r7, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08121E46 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 bne _08121E40 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 beq _08121E46 _08121E40: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 _08121E46: cmp r6, 0x1 bhi _08121E06 adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _08121E16 movs r0, 0 _08121E56: pop {r4-r7} pop {r1} bx r1 thumb_func_end ShouldUseChooseMonText thumb_func_start DisplaySelectionWindow DisplaySelectionWindow: @ 8121E5C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x24 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x1 beq _08121EBC cmp r4, 0x1 bgt _08121E78 cmp r4, 0 beq _08121E7E b _08121ECC _08121E78: cmp r4, 0x2 beq _08121EC4 b _08121ECC _08121E7E: ldr r0, _08121EB4 @ =sPartyMenuInternal ldr r1, [r0] ldrb r0, [r1, 0x17] lsls r0, 1 movs r3, 0x13 subs r3, r0 lsls r3, 24 lsrs r3, 24 movs r0, 0xA str r0, [sp] ldrb r0, [r1, 0x17] lsls r0, 25 lsrs r0, 24 str r0, [sp, 0x4] movs r0, 0xE str r0, [sp, 0x8] ldr r0, _08121EB8 @ =0x000002bf str r0, [sp, 0xC] add r0, sp, 0x14 movs r1, 0x2 movs r2, 0x13 bl SetWindowTemplateFields ldr r0, [sp, 0x14] ldr r1, [sp, 0x18] b _08121ED2 .align 2, 0 _08121EB4: .4byte sPartyMenuInternal _08121EB8: .4byte 0x000002bf _08121EBC: ldr r0, _08121EC0 @ =sItemGiveTakeWindowTemplate b _08121ECE .align 2, 0 _08121EC0: .4byte sItemGiveTakeWindowTemplate _08121EC4: ldr r0, _08121EC8 @ =sMailReadTakeWindowTemplate b _08121ECE .align 2, 0 _08121EC8: .4byte sMailReadTakeWindowTemplate _08121ECC: ldr r0, _08121EF8 @ =sMoveSelectWindowTemplate _08121ECE: ldr r1, [r0, 0x4] ldr r0, [r0] _08121ED2: str r0, [sp, 0x1C] str r1, [sp, 0x20] add r0, sp, 0x1C bl AddWindow ldr r6, _08121EFC @ =sPartyMenuInternal ldr r1, [r6] strb r0, [r1, 0xC] ldr r0, [r6] ldrb r0, [r0, 0xC] movs r1, 0 movs r2, 0x4F movs r3, 0xD bl DrawStdFrameWithCustomTileAndPalette cmp r4, 0x3 bne _08121F00 ldr r0, [r6] b _08121FA2 .align 2, 0 _08121EF8: .4byte sMoveSelectWindowTemplate _08121EFC: .4byte sPartyMenuInternal _08121F00: movs r0, 0x2 movs r1, 0 bl GetMenuCursorDimensionByFont lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r0, 0x2 movs r1, 0x2 bl GetFontAttribute lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r5, 0 ldr r0, [r6] ldrb r0, [r0, 0x17] cmp r5, r0 bcs _08121F7A adds r7, r6, 0 movs r6, 0 _08121F2A: ldr r1, [r7] adds r0, r1, 0 adds r0, 0xF adds r4, r0, r5 ldrb r0, [r4] movs r2, 0x3 cmp r0, 0x11 bls _08121F3C movs r2, 0x4 _08121F3C: ldrb r0, [r1, 0xC] lsls r3, r5, 4 adds r3, 0x2 lsls r3, 24 lsrs r3, 24 mov r1, r8 str r1, [sp] str r6, [sp, 0x4] lsls r1, r2, 1 adds r1, r2 ldr r2, _08121FB4 @ =sFontColorTable adds r1, r2 str r1, [sp, 0x8] str r6, [sp, 0xC] ldr r2, _08121FB8 @ =sCursorOptions ldrb r1, [r4] lsls r1, 3 adds r1, r2 ldr r1, [r1] str r1, [sp, 0x10] movs r1, 0x2 mov r2, r9 bl AddTextPrinterParameterized4 adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 ldr r0, [r7] ldrb r0, [r0, 0x17] cmp r5, r0 bcc _08121F2A _08121F7A: ldr r4, _08121FBC @ =sPartyMenuInternal ldr r2, [r4] ldrb r0, [r2, 0xC] movs r1, 0x10 str r1, [sp] ldrb r1, [r2, 0x17] str r1, [sp, 0x4] movs r1, 0 str r1, [sp, 0x8] movs r1, 0x1 str r1, [sp, 0xC] movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl Menu_InitCursorInternal movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r0, [r4] _08121FA2: ldrb r0, [r0, 0xC] add sp, 0x24 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08121FB4: .4byte sFontColorTable _08121FB8: .4byte sCursorOptions _08121FBC: .4byte sPartyMenuInternal thumb_func_end DisplaySelectionWindow thumb_func_start PartyMenuPrintText PartyMenuPrintText: @ 8121FC0 push {r4,lr} sub sp, 0x10 adds r4, r0, 0 movs r0, 0x6 movs r1, 0 movs r2, 0x4F movs r3, 0xD bl DrawStdFrameWithCustomTileAndPalette ldr r2, _08122008 @ =gTextFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 movs r0, 0 str r0, [sp] movs r0, 0x2 str r0, [sp, 0x4] movs r0, 0x1 str r0, [sp, 0x8] movs r0, 0x3 str r0, [sp, 0xC] movs r0, 0x6 movs r1, 0x2 adds r2, r4, 0 bl AddTextPrinterParameterized2 add sp, 0x10 pop {r4} pop {r0} bx r0 .align 2, 0 _08122008: .4byte gTextFlags thumb_func_end PartyMenuPrintText thumb_func_start PartyMenuDisplayYesNoMenu PartyMenuDisplayYesNoMenu: @ 812200C push {lr} sub sp, 0xC ldr r0, _08122030 @ =sPartyMenuYesNoWindowTemplate movs r1, 0x4F str r1, [sp] movs r1, 0xD str r1, [sp, 0x4] movs r1, 0 str r1, [sp, 0x8] movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl CreateYesNoMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08122030: .4byte sPartyMenuYesNoWindowTemplate thumb_func_end PartyMenuDisplayYesNoMenu thumb_func_start CreateLevelUpStatsWindow CreateLevelUpStatsWindow: @ 8122034 push {r4,lr} ldr r0, _0812205C @ =sLevelUpStatsWindowTemplate bl AddWindow ldr r4, _08122060 @ =sPartyMenuInternal ldr r1, [r4] strb r0, [r1, 0xC] ldr r0, [r4] ldrb r0, [r0, 0xC] movs r1, 0 movs r2, 0x4F movs r3, 0xD bl DrawStdFrameWithCustomTileAndPalette ldr r0, [r4] ldrb r0, [r0, 0xC] pop {r4} pop {r1} bx r1 .align 2, 0 _0812205C: .4byte sLevelUpStatsWindowTemplate _08122060: .4byte sPartyMenuInternal thumb_func_end CreateLevelUpStatsWindow thumb_func_start RemoveLevelUpStatsWindow RemoveLevelUpStatsWindow: @ 8122064 push {r4,lr} ldr r4, _08122080 @ =sPartyMenuInternal ldr r0, [r4] ldrb r0, [r0, 0xC] bl ClearWindowTilemap ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow pop {r4} pop {r0} bx r0 .align 2, 0 _08122080: .4byte sPartyMenuInternal thumb_func_end RemoveLevelUpStatsWindow thumb_func_start sub_8122084 sub_8122084: @ 8122084 push {r4,r5,lr} sub sp, 0x10 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r5, _081220CC @ =gStringVar4 adds r0, r5, 0 bl StringExpandPlaceholders ldr r2, _081220D0 @ =gTextFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] bl GetTextSpeedSetting adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 movs r0, 0 str r0, [sp] movs r0, 0x2 str r0, [sp, 0x4] movs r0, 0x1 str r0, [sp, 0x8] movs r0, 0x3 str r0, [sp, 0xC] adds r0, r4, 0 movs r1, 0x4 adds r2, r5, 0 bl AddTextPrinterParameterized2 add sp, 0x10 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081220CC: .4byte gStringVar4 _081220D0: .4byte gTextFlags thumb_func_end sub_8122084 thumb_func_start sub_81220D4 sub_81220D4: @ 81220D4 push {r4,lr} ldr r0, _08122108 @ =gUnknown_845A170 bl AddWindow adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 movs r1, 0x4F movs r2, 0xE0 bl TextWindow_LoadResourcesStdFrame0 adds r0, r4, 0 movs r1, 0x1 movs r2, 0x4F movs r3, 0xE bl DrawDialogFrameWithCustomTileAndPalette ldr r1, _0812210C @ =gUnknown_8417457 adds r0, r4, 0 bl sub_8122084 adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _08122108: .4byte gUnknown_845A170 _0812210C: .4byte gUnknown_8417457 thumb_func_end sub_81220D4 thumb_func_start sub_8122110 sub_8122110: @ 8122110 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl ClearWindowTilemap adds r0, r4, 0 movs r1, 0 bl ClearDialogWindowAndFrameToTransparent adds r0, r4, 0 bl RemoveWindow movs r0, 0x2 bl ScheduleBgCopyTilemapToVram pop {r4} pop {r0} bx r0 thumb_func_end sub_8122110 thumb_func_start sub_8122138 sub_8122138: @ 8122138 push {r4,r5,lr} sub sp, 0x14 lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r0, _08122168 @ =sPartyMenuInternal ldr r4, [r0] cmp r5, 0x11 bhi _0812216C ldrb r0, [r4, 0xE] cmp r0, 0xFF beq _081221C0 bl ClearWindowTilemap ldrb r0, [r4, 0xE] bl RemoveWindow movs r0, 0xFF strb r0, [r4, 0xE] movs r0, 0x2 bl ScheduleBgCopyTilemapToVram b _081221C0 .align 2, 0 _08122168: .4byte sPartyMenuInternal _0812216C: ldrb r0, [r4, 0xE] cmp r0, 0xFF bne _0812217A ldr r0, _081221C8 @ =gUnknown_845A178 bl AddWindow strb r0, [r4, 0xE] _0812217A: ldrb r0, [r4, 0xE] bl sub_8112F18 movs r0, 0x2 movs r1, 0x2 bl GetFontAttribute lsls r0, 24 lsrs r0, 24 ldrb r2, [r4, 0xE] str r0, [sp] movs r1, 0 str r1, [sp, 0x4] ldr r0, _081221CC @ =sFontColorTable + 15 str r0, [sp, 0x8] str r1, [sp, 0xC] ldr r1, _081221D0 @ =sHMDescriptionTable adds r0, r5, 0 subs r0, 0x12 lsls r0, 2 adds r0, r1 ldr r0, [r0] str r0, [sp, 0x10] adds r0, r2, 0 movs r1, 0x2 movs r2, 0x3 movs r3, 0x6 bl AddTextPrinterParameterized4 ldrb r0, [r4, 0xE] bl PutWindowTilemap movs r0, 0x2 bl ScheduleBgCopyTilemapToVram _081221C0: add sp, 0x14 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081221C8: .4byte gUnknown_845A178 _081221CC: .4byte sFontColorTable + 15 _081221D0: .4byte sHMDescriptionTable thumb_func_end sub_8122138 thumb_func_start CreatePartyMonIconSprite CreatePartyMonIconSprite: @ 81221D4 push {r4-r7,lr} sub sp, 0x4 adds r5, r0, 0 adds r7, r1, 0 adds r4, r2, 0 movs r6, 0x1 bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0812220A ldr r0, _08122240 @ =gMain ldr r1, _08122244 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0812220A ldr r0, _08122248 @ =sMultiBattlePartnersPartyMask adds r0, r4, r0 ldrb r1, [r0] eors r1, r6 negs r0, r1 orrs r0, r1 lsrs r6, r0, 31 _0812220A: adds r0, r5, 0 movs r1, 0x41 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r5, 0 movs r1, 0 bl GetMonData adds r1, r0, 0 str r6, [sp] adds r0, r4, 0 adds r2, r7, 0 movs r3, 0x1 bl CreatePartyMonIconSpriteParameterized ldrb r0, [r7, 0x9] adds r1, r5, 0 bl UpdatePartyMonHPBar add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08122240: .4byte gMain _08122244: .4byte 0x00000439 _08122248: .4byte sMultiBattlePartnersPartyMask thumb_func_end CreatePartyMonIconSprite thumb_func_start CreatePartyMonIconSpriteParameterized CreatePartyMonIconSpriteParameterized: @ 812224C push {r4-r7,lr} sub sp, 0xC adds r6, r1, 0 adds r4, r2, 0 lsls r0, 16 lsrs r5, r0, 16 lsls r3, 24 lsrs r7, r3, 24 cmp r5, 0 beq _0812229A ldr r1, _081222A4 @ =SpriteCB_MonIcon ldr r0, [r4, 0x4] ldrb r2, [r0] ldrb r3, [r0, 0x1] movs r0, 0x4 str r0, [sp] str r6, [sp, 0x4] ldr r0, [sp, 0x20] str r0, [sp, 0x8] adds r0, r5, 0 bl CreateMonIcon strb r0, [r4, 0x9] ldr r2, _081222A8 @ =gSprites ldrb r0, [r4, 0x9] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0x3 adds r2, r7, 0 ands r2, r0 lsls r2, 2 ldrb r3, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0x5] _0812229A: add sp, 0xC pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081222A4: .4byte SpriteCB_MonIcon _081222A8: .4byte gSprites thumb_func_end CreatePartyMonIconSpriteParameterized thumb_func_start UpdateHPBar UpdateHPBar: @ 81222AC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 16 asrs r1, 16 lsls r2, 16 asrs r2, 16 adds r0, r1, 0 adds r1, r2, 0 bl GetHPBarLevel lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 beq _0812230C cmp r0, 0x2 bgt _081222D4 cmp r0, 0x1 beq _08122324 b _0812233C _081222D4: cmp r0, 0x3 beq _081222F4 cmp r0, 0x4 bne _0812233C lsls r0, r4, 4 adds r0, r4 lsls r0, 2 ldr r1, _081222F0 @ =gSprites adds r0, r1 movs r1, 0 bl MonIcon_SetAnim b _0812234C .align 2, 0 _081222F0: .4byte gSprites _081222F4: lsls r0, r4, 4 adds r0, r4 lsls r0, 2 ldr r1, _08122308 @ =gSprites adds r0, r1 movs r1, 0x1 bl MonIcon_SetAnim b _0812234C .align 2, 0 _08122308: .4byte gSprites _0812230C: lsls r0, r4, 4 adds r0, r4 lsls r0, 2 ldr r1, _08122320 @ =gSprites adds r0, r1 movs r1, 0x2 bl MonIcon_SetAnim b _0812234C .align 2, 0 _08122320: .4byte gSprites _08122324: lsls r0, r4, 4 adds r0, r4 lsls r0, 2 ldr r1, _08122338 @ =gSprites adds r0, r1 movs r1, 0x3 bl MonIcon_SetAnim b _0812234C .align 2, 0 _08122338: .4byte gSprites _0812233C: lsls r0, r4, 4 adds r0, r4 lsls r0, 2 ldr r1, _08122354 @ =gSprites adds r0, r1 movs r1, 0x4 bl MonIcon_SetAnim _0812234C: pop {r4} pop {r0} bx r0 .align 2, 0 _08122354: .4byte gSprites thumb_func_end UpdateHPBar thumb_func_start UpdatePartyMonHPBar UpdatePartyMonHPBar: @ 8122358 push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 movs r1, 0x39 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r6, 0 movs r1, 0x3A bl GetMonData adds r2, r0, 0 lsls r2, 16 lsrs r2, 16 adds r0, r5, 0 adds r1, r4, 0 bl UpdateHPBar pop {r4-r6} pop {r0} bx r0 thumb_func_end UpdatePartyMonHPBar thumb_func_start AnimateSelectedPartyIcon AnimateSelectedPartyIcon: @ 812238C push {r4-r7,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 ldr r5, _081223BC @ =gSprites lsls r0, r4, 4 adds r0, r4 lsls r6, r0, 2 adds r2, r6, r5 movs r7, 0 movs r3, 0 strh r3, [r2, 0x2E] mov r12, r5 cmp r1, 0 bne _081223E4 movs r1, 0x20 ldrsh r0, [r2, r1] cmp r0, 0x10 bne _081223C4 strh r3, [r2, 0x24] ldr r0, _081223C0 @ =0x0000fffc strh r0, [r2, 0x26] b _081223CA .align 2, 0 _081223BC: .4byte gSprites _081223C0: .4byte 0x0000fffc _081223C4: ldr r0, _081223DC @ =0x0000fffc strh r0, [r2, 0x24] strh r3, [r2, 0x26] _081223CA: lsls r0, r4, 4 adds r0, r4 lsls r0, 2 mov r1, r12 adds r1, 0x1C adds r0, r1 ldr r1, _081223E0 @ =SpriteCB_UpdatePartyMonIcon b _081223F0 .align 2, 0 _081223DC: .4byte 0x0000fffc _081223E0: .4byte SpriteCB_UpdatePartyMonIcon _081223E4: strh r3, [r2, 0x24] strh r3, [r2, 0x26] adds r0, r5, 0 adds r0, 0x1C adds r0, r6, r0 ldr r1, _081223F8 @ =SpriteCB_BouncePartyMonIcon _081223F0: str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081223F8: .4byte SpriteCB_BouncePartyMonIcon thumb_func_end AnimateSelectedPartyIcon thumb_func_start SpriteCB_BouncePartyMonIcon SpriteCB_BouncePartyMonIcon: @ 81223FC push {r4,lr} adds r4, r0, 0 bl UpdateMonIconFrame lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08122422 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08122420 ldr r0, _0812241C @ =0x0000fffd strh r0, [r4, 0x26] b _08122422 .align 2, 0 _0812241C: .4byte 0x0000fffd _08122420: strh r1, [r4, 0x26] _08122422: pop {r4} pop {r0} bx r0 thumb_func_end SpriteCB_BouncePartyMonIcon thumb_func_start SpriteCB_UpdatePartyMonIcon SpriteCB_UpdatePartyMonIcon: @ 8122428 push {lr} bl UpdateMonIconFrame pop {r0} bx r0 thumb_func_end SpriteCB_UpdatePartyMonIcon thumb_func_start CreatePartyMonHeldItemSprite CreatePartyMonHeldItemSprite: @ 8122434 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0812245C ldr r0, _08122464 @ =sSpriteTemplate_HeldItem ldr r2, [r4, 0x4] ldrb r1, [r2, 0x2] ldrb r2, [r2, 0x3] movs r3, 0 bl CreateSprite strb r0, [r4, 0xA] adds r0, r5, 0 adds r1, r4, 0 bl UpdatePartyMonHeldItemSprite _0812245C: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08122464: .4byte sSpriteTemplate_HeldItem thumb_func_end CreatePartyMonHeldItemSprite thumb_func_start CreatePartyMonHeldItemSpriteParameterized CreatePartyMonHeldItemSpriteParameterized: @ 8122468 push {r4,r5,lr} adds r4, r2, 0 lsls r0, 16 lsls r1, 16 lsrs r5, r1, 16 cmp r0, 0 beq _081224A4 ldr r0, _081224AC @ =sSpriteTemplate_HeldItem ldr r2, [r4, 0x4] ldrb r1, [r2, 0x2] ldrb r2, [r2, 0x3] movs r3, 0 bl CreateSprite strb r0, [r4, 0xA] ldr r2, _081224B0 @ =gSprites ldrb r0, [r4, 0xA] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r2, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 strb r0, [r1, 0x5] adds r0, r5, 0 adds r1, r4, 0 bl ShowOrHideHeldItemSprite _081224A4: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081224AC: .4byte sSpriteTemplate_HeldItem _081224B0: .4byte gSprites thumb_func_end CreatePartyMonHeldItemSpriteParameterized thumb_func_start UpdatePartyMonHeldItemSprite UpdatePartyMonHeldItemSprite: @ 81224B4 push {r4,lr} adds r4, r1, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 adds r1, r4, 0 bl ShowOrHideHeldItemSprite pop {r4} pop {r0} bx r0 thumb_func_end UpdatePartyMonHeldItemSprite thumb_func_start ShowOrHideHeldItemSprite ShowOrHideHeldItemSprite: @ 81224D0 push {r4,lr} adds r4, r1, 0 lsls r0, 16 lsrs r0, 16 cmp r0, 0 bne _081224F8 ldr r2, _081224F4 @ =gSprites ldrb r1, [r4, 0xA] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 b _08122544 .align 2, 0 _081224F4: .4byte gSprites _081224F8: bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _0812251C ldrb r1, [r4, 0xA] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08122518 @ =gSprites adds r0, r1 movs r1, 0x1 bl StartSpriteAnim b _0812252E .align 2, 0 _08122518: .4byte gSprites _0812251C: ldrb r1, [r4, 0xA] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _0812254C @ =gSprites adds r0, r1 movs r1, 0 bl StartSpriteAnim _0812252E: ldr r2, _0812254C @ =gSprites ldrb r1, [r4, 0xA] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 _08122544: strb r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _0812254C: .4byte gSprites thumb_func_end ShowOrHideHeldItemSprite thumb_func_start LoadHeldItemIcons LoadHeldItemIcons: @ 8122550 push {lr} ldr r0, _08122564 @ =sSpriteSheet_HeldItem bl LoadSpriteSheet ldr r0, _08122568 @ =sSpritePalette_HeldItem bl LoadSpritePalette pop {r0} bx r0 .align 2, 0 _08122564: .4byte sSpriteSheet_HeldItem _08122568: .4byte sSpritePalette_HeldItem thumb_func_end LoadHeldItemIcons thumb_func_start DrawHeldItemIconsForTrade DrawHeldItemIconsForTrade: @ 812256C push {r4-r7,lr} adds r6, r0, 0 adds r7, r1, 0 lsls r2, 24 lsrs r2, 24 cmp r2, 0 beq _08122580 cmp r2, 0x1 beq _081225C8 b _08122604 _08122580: movs r5, 0 ldrb r0, [r6] cmp r5, r0 bcs _08122604 _08122588: movs r0, 0x64 muls r0, r5 ldr r1, _081225C4 @ =gPlayerParty adds r0, r1 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _081225B4 adds r0, r7, r5 ldrb r4, [r0] adds r0, r1, 0 bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl CreateHeldItemSpriteForTrade _081225B4: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 ldrb r0, [r6] cmp r5, r0 bcc _08122588 b _08122604 .align 2, 0 _081225C4: .4byte gPlayerParty _081225C8: movs r5, 0 b _081225FE _081225CC: movs r0, 0x64 muls r0, r5 ldr r1, _0812260C @ =gEnemyParty adds r0, r1 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _081225F8 adds r0, r5, r7 ldrb r4, [r0, 0x6] adds r0, r1, 0 bl ItemIsMail adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl CreateHeldItemSpriteForTrade _081225F8: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 _081225FE: ldrb r0, [r6, 0x1] cmp r5, r0 bcc _081225CC _08122604: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0812260C: .4byte gEnemyParty thumb_func_end DrawHeldItemIconsForTrade thumb_func_start CreateHeldItemSpriteForTrade CreateHeldItemSpriteForTrade: @ 8122610 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} adds r6, r0, 0 mov r9, r1 lsls r6, 24 lsrs r6, 24 mov r0, r9 lsls r0, 24 lsrs r0, 24 mov r9, r0 ldr r0, _08122688 @ =gSprites mov r8, r0 lsls r0, r6, 4 adds r0, r6 lsls r0, 2 add r0, r8 adds r0, 0x43 ldrb r3, [r0] ldr r0, _0812268C @ =sSpriteTemplate_HeldItem subs r3, 0x1 lsls r3, 24 lsrs r3, 24 movs r1, 0xFA movs r2, 0xAA bl CreateSprite lsls r0, 24 lsrs r0, 24 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 mov r0, r8 adds r5, r4, r0 movs r0, 0x4 strh r0, [r5, 0x24] movs r0, 0xA strh r0, [r5, 0x26] movs r0, 0x1C add r8, r0 add r4, r8 ldr r0, _08122690 @ =SpriteCB_HeldItem str r0, [r4] strh r6, [r5, 0x3C] adds r0, r5, 0 mov r1, r9 bl StartSpriteAnim ldr r1, [r4] adds r0, r5, 0 bl _call_via_r1 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08122688: .4byte gSprites _0812268C: .4byte sSpriteTemplate_HeldItem _08122690: .4byte SpriteCB_HeldItem thumb_func_end CreateHeldItemSpriteForTrade thumb_func_start SpriteCB_HeldItem SpriteCB_HeldItem: @ 8122694 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x3C] lsls r1, 24 lsrs r1, 24 ldr r2, _081226C4 @ =gSprites lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r2, r0, r2 adds r0, r2, 0 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _081226C8 adds r0, r4, 0 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] b _081226E6 .align 2, 0 _081226C4: .4byte gSprites _081226C8: adds r3, r4, 0 adds r3, 0x3E ldrb r1, [r3] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r3] ldrh r0, [r2, 0x24] ldrh r1, [r2, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r2, 0x26] ldrh r2, [r2, 0x22] adds r0, r2 strh r0, [r4, 0x22] _081226E6: pop {r4} pop {r0} bx r0 thumb_func_end SpriteCB_HeldItem thumb_func_start CreatePartyMonPokeballSprite CreatePartyMonPokeballSprite: @ 81226EC push {r4,lr} adds r4, r1, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0812270A ldr r0, _08122710 @ =sSpriteTemplate_MenuPokeball ldr r2, [r4, 0x4] ldrb r1, [r2, 0x6] ldrb r2, [r2, 0x7] movs r3, 0x8 bl CreateSprite strb r0, [r4, 0xB] _0812270A: pop {r4} pop {r0} bx r0 .align 2, 0 _08122710: .4byte sSpriteTemplate_MenuPokeball thumb_func_end CreatePartyMonPokeballSprite thumb_func_start CreatePartyMonPokeballSpriteParameterized CreatePartyMonPokeballSpriteParameterized: @ 8122714 push {r4,lr} adds r4, r1, 0 lsls r0, 16 cmp r0, 0 beq _08122744 ldr r0, _0812274C @ =sSpriteTemplate_MenuPokeball ldr r2, [r4, 0x4] ldrb r1, [r2, 0x6] ldrb r2, [r2, 0x7] movs r3, 0x8 bl CreateSprite strb r0, [r4, 0xB] ldr r2, _08122750 @ =gSprites ldrb r0, [r4, 0xB] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r2, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 strb r0, [r1, 0x5] _08122744: pop {r4} pop {r0} bx r0 .align 2, 0 _0812274C: .4byte sSpriteTemplate_MenuPokeball _08122750: .4byte gSprites thumb_func_end CreatePartyMonPokeballSpriteParameterized thumb_func_start CreatePokeballButtonSprite CreatePokeballButtonSprite: @ 8122754 push {lr} adds r3, r0, 0 adds r2, r1, 0 lsls r3, 24 lsrs r3, 24 lsls r2, 24 lsrs r2, 24 ldr r0, _0812278C @ =sSpriteTemplate_MenuPokeball adds r1, r3, 0 movs r3, 0x8 bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r2, _08122790 @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r3, [r1, 0x5] movs r2, 0xD negs r2, r2 ands r2, r3 movs r3, 0x8 orrs r2, r3 strb r2, [r1, 0x5] pop {r1} bx r1 .align 2, 0 _0812278C: .4byte sSpriteTemplate_MenuPokeball _08122790: .4byte gSprites thumb_func_end CreatePokeballButtonSprite thumb_func_start CreateSmallPokeballButtonSprite CreateSmallPokeballButtonSprite: @ 8122794 push {lr} adds r3, r0, 0 adds r2, r1, 0 lsls r3, 24 lsrs r3, 24 lsls r2, 24 lsrs r2, 24 ldr r0, _081227B4 @ =sSpriteTemplate_MenuPokeballSmall adds r1, r3, 0 movs r3, 0x8 bl CreateSprite lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 .align 2, 0 _081227B4: .4byte sSpriteTemplate_MenuPokeballSmall thumb_func_end CreateSmallPokeballButtonSprite thumb_func_start PartyMenuStartSpriteAnim PartyMenuStartSpriteAnim: @ 81227B8 push {lr} adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 lsls r1, 24 lsrs r1, 24 lsls r0, r2, 4 adds r0, r2 lsls r0, 2 ldr r2, _081227D8 @ =gSprites adds r0, r2 bl StartSpriteAnim pop {r0} bx r0 .align 2, 0 _081227D8: .4byte gSprites thumb_func_end PartyMenuStartSpriteAnim thumb_func_start SpriteCB_BounceConfirmCancelButton SpriteCB_BounceConfirmCancelButton: @ 81227DC push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r7, r1, 24 lsls r2, 24 lsrs r6, r2, 24 cmp r6, 0 bne _08122820 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _0812281C @ =gSprites mov r8, r0 add r4, r8 adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim lsls r5, r7, 4 adds r5, r7 lsls r5, 2 add r5, r8 adds r0, r5, 0 movs r1, 0x4 bl StartSpriteAnim strh r6, [r4, 0x26] strh r6, [r5, 0x26] b _0812284C .align 2, 0 _0812281C: .4byte gSprites _08122820: lsls r5, r0, 4 adds r5, r0 lsls r5, 2 ldr r0, _08122858 @ =gSprites mov r8, r0 add r5, r8 adds r0, r5, 0 movs r1, 0x3 bl StartSpriteAnim lsls r4, r7, 4 adds r4, r7 lsls r4, 2 add r4, r8 adds r0, r4, 0 movs r1, 0x5 bl StartSpriteAnim ldr r0, _0812285C @ =0x0000fffc strh r0, [r5, 0x26] movs r0, 0x4 strh r0, [r4, 0x26] _0812284C: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08122858: .4byte gSprites _0812285C: .4byte 0x0000fffc thumb_func_end SpriteCB_BounceConfirmCancelButton thumb_func_start LoadPartyMenuPokeballGfx LoadPartyMenuPokeballGfx: @ 8122860 push {lr} ldr r0, _08122878 @ =sSpriteSheet_MenuPokeball bl LoadCompressedSpriteSheet ldr r0, _0812287C @ =sSpriteSheet_MenuPokeballSmall bl LoadCompressedSpriteSheet ldr r0, _08122880 @ =sSpritePalette_MenuPokeball bl LoadCompressedSpritePalette pop {r0} bx r0 .align 2, 0 _08122878: .4byte sSpriteSheet_MenuPokeball _0812287C: .4byte sSpriteSheet_MenuPokeballSmall _08122880: .4byte sSpritePalette_MenuPokeball thumb_func_end LoadPartyMenuPokeballGfx thumb_func_start CreatePartyMonStatusSprite CreatePartyMonStatusSprite: @ 8122884 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _081228AC ldr r0, _081228B4 @ =sSpriteTemplate_StatusIcons ldr r2, [r4, 0x4] ldrb r1, [r2, 0x4] ldrb r2, [r2, 0x5] movs r3, 0 bl CreateSprite strb r0, [r4, 0xC] adds r0, r5, 0 adds r1, r4, 0 bl SetPartyMonAilmentGfx _081228AC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081228B4: .4byte sSpriteTemplate_StatusIcons thumb_func_end CreatePartyMonStatusSprite thumb_func_start CreatePartyMonStatusSpriteParameterized CreatePartyMonStatusSpriteParameterized: @ 81228B8 push {r4,r5,lr} adds r4, r2, 0 lsls r0, 16 lsls r1, 24 lsrs r5, r1, 24 cmp r0, 0 beq _081228F4 ldr r0, _081228FC @ =sSpriteTemplate_StatusIcons ldr r2, [r4, 0x4] ldrb r1, [r2, 0x4] ldrb r2, [r2, 0x5] movs r3, 0 bl CreateSprite strb r0, [r4, 0xC] adds r0, r5, 0 adds r1, r4, 0 bl UpdatePartyMonAilmentGfx ldr r2, _08122900 @ =gSprites ldrb r0, [r4, 0xC] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r2, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 strb r0, [r1, 0x5] _081228F4: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081228FC: .4byte sSpriteTemplate_StatusIcons _08122900: .4byte gSprites thumb_func_end CreatePartyMonStatusSpriteParameterized thumb_func_start SetPartyMonAilmentGfx SetPartyMonAilmentGfx: @ 8122904 push {r4,lr} adds r4, r1, 0 bl GetMonAilment lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 bl UpdatePartyMonAilmentGfx pop {r4} pop {r0} bx r0 thumb_func_end SetPartyMonAilmentGfx thumb_func_start UpdatePartyMonAilmentGfx UpdatePartyMonAilmentGfx: @ 812291C push {r4,r5,lr} adds r5, r1, 0 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 beq _0812292C cmp r2, 0x6 bne _08122948 _0812292C: ldr r2, _08122944 @ =gSprites ldrb r1, [r5, 0xC] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 b _08122972 .align 2, 0 _08122944: .4byte gSprites _08122948: ldrb r1, [r5, 0xC] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r4, _0812297C @ =gSprites adds r0, r4 subs r1, r2, 0x1 lsls r1, 24 lsrs r1, 24 bl StartSpriteAnim ldrb r1, [r5, 0xC] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r4 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 _08122972: strb r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0812297C: .4byte gSprites thumb_func_end UpdatePartyMonAilmentGfx thumb_func_start LoadPartyMenuAilmentGfx LoadPartyMenuAilmentGfx: @ 8122980 push {lr} ldr r0, _08122994 @ =sSpriteSheet_StatusIcons bl LoadCompressedSpriteSheet ldr r0, _08122998 @ =sSpritePalette_StatusIcons bl LoadCompressedSpritePalette pop {r0} bx r0 .align 2, 0 _08122994: .4byte sSpriteSheet_StatusIcons _08122998: .4byte sSpritePalette_StatusIcons thumb_func_end LoadPartyMenuAilmentGfx thumb_func_start SetPartyMonSelectionActions SetPartyMonSelectionActions: @ 812299C push {r4,lr} lsls r1, 24 lsrs r1, 24 lsls r2, 24 lsrs r2, 24 cmp r2, 0 bne _081229B0 bl SetPartyMonFieldSelectionActions b _081229E8 _081229B0: ldr r4, _081229F0 @ =sPartyMenuInternal ldr r1, [r4] ldr r0, _081229F4 @ =sPartyMenuActionCounts adds r0, r2, r0 ldrb r0, [r0] strb r0, [r1, 0x17] movs r3, 0 ldr r0, [r4] ldrb r0, [r0, 0x17] cmp r3, r0 bcs _081229E8 ldr r1, _081229F8 @ =sPartyMenuActions lsls r0, r2, 2 adds r2, r0, r1 _081229CC: ldr r1, [r4] adds r1, 0xF adds r1, r3 ldr r0, [r2] adds r0, r3 ldrb r0, [r0] strb r0, [r1] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 ldr r0, [r4] ldrb r0, [r0, 0x17] cmp r3, r0 bcc _081229CC _081229E8: pop {r4} pop {r0} bx r0 .align 2, 0 _081229F0: .4byte sPartyMenuInternal _081229F4: .4byte sPartyMenuActionCounts _081229F8: .4byte sPartyMenuActions thumb_func_end SetPartyMonSelectionActions thumb_func_start SetPartyMonFieldSelectionActions SetPartyMonFieldSelectionActions: @ 81229FC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 mov r9, r0 lsls r1, 24 lsrs r1, 24 mov r10, r1 ldr r2, _08122A78 @ =sPartyMenuInternal ldr r1, [r2] movs r0, 0 strb r0, [r1, 0x17] ldr r1, [r2] adds r0, r1, 0 adds r0, 0xF adds r1, 0x17 movs r2, 0 bl AppendToList movs r7, 0 ldr r0, _08122A7C @ =sFieldMoves ldrh r0, [r0] str r0, [sp] mov r0, r9 adds r0, 0x64 str r0, [sp, 0x4] _08122A34: movs r4, 0 adds r1, r7, 0x1 mov r8, r1 ldr r0, [sp] cmp r0, 0xC beq _08122A90 movs r0, 0x64 mov r6, r10 muls r6, r0 ldr r5, _08122A7C @ =sFieldMoves _08122A48: mov r1, r9 adds r0, r1, r6 adds r1, r7, 0 adds r1, 0xD bl GetMonData lsls r1, r4, 1 adds r1, r5 ldrh r1, [r1] cmp r0, r1 bne _08122A80 ldr r0, _08122A78 @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF adds r1, 0x17 adds r2, r4, 0 adds r2, 0x12 lsls r2, 24 lsrs r2, 24 bl AppendToList b _08122A90 .align 2, 0 _08122A78: .4byte sPartyMenuInternal _08122A7C: .4byte sFieldMoves _08122A80: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 1 adds r0, r5 ldrh r0, [r0] cmp r0, 0xC bne _08122A48 _08122A90: mov r1, r8 lsls r0, r1, 24 lsrs r7, r0, 24 cmp r7, 0x3 bls _08122A34 ldr r0, [sp, 0x4] movs r1, 0xB bl GetMonData cmp r0, 0 beq _08122AB6 ldr r0, _08122AE8 @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF adds r1, 0x17 movs r2, 0x1 bl AppendToList _08122AB6: movs r0, 0x64 mov r1, r10 muls r1, r0 adds r0, r1, 0 add r0, r9 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _08122AEC ldr r0, _08122AE8 @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF adds r1, 0x17 movs r2, 0x6 bl AppendToList b _08122AFC .align 2, 0 _08122AE8: .4byte sPartyMenuInternal _08122AEC: ldr r0, _08122B1C @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF adds r1, 0x17 movs r2, 0x3 bl AppendToList _08122AFC: ldr r0, _08122B1C @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF adds r1, 0x17 movs r2, 0x2 bl AppendToList add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08122B1C: .4byte sPartyMenuInternal thumb_func_end SetPartyMonFieldSelectionActions thumb_func_start GetPartyMenuActionsType GetPartyMenuActionsType: @ 8122B20 push {lr} adds r2, r0, 0 ldr r1, _08122B3C @ =gPartyMenu ldrb r0, [r1, 0x8] lsls r0, 28 lsrs r0, 28 adds r3, r1, 0 cmp r0, 0xA bhi _08122BCA lsls r0, 2 ldr r1, _08122B40 @ =_08122B44 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08122B3C: .4byte gPartyMenu _08122B40: .4byte _08122B44 .align 2, 0 _08122B44: .4byte _08122B70 .4byte _08122B80 .4byte _08122BCA .4byte _08122BCA .4byte _08122B8C .4byte _08122BCA .4byte _08122BAC .4byte _08122BCA .4byte _08122BBE .4byte _08122BC2 .4byte _08122BC6 _08122B70: adds r0, r2, 0 movs r1, 0x2D bl GetMonData negs r1, r0 orrs r1, r0 lsrs r1, 31 b _08122BCC _08122B80: adds r0, r2, 0 bl GetPartyMenuActionsTypeInBattle lsls r0, 24 lsrs r1, r0, 24 b _08122BCC _08122B8C: movs r0, 0x9 ldrsb r0, [r3, r0] bl GetPartySlotEntryStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08122BA4 cmp r0, 0x1 beq _08122BA8 movs r1, 0x7 b _08122BCC _08122BA4: movs r1, 0x4 b _08122BCC _08122BA8: movs r1, 0x5 b _08122BCC _08122BAC: adds r0, r2, 0 movs r1, 0x2D bl GetMonData movs r1, 0x6 cmp r0, 0 beq _08122BCC movs r1, 0x7 b _08122BCC _08122BBE: movs r1, 0xA b _08122BCC _08122BC2: movs r1, 0xB b _08122BCC _08122BC6: movs r1, 0xC b _08122BCC _08122BCA: movs r1, 0 _08122BCC: adds r0, r1, 0 pop {r1} bx r1 thumb_func_end GetPartyMenuActionsType thumb_func_start CreateSelectionWindow CreateSelectionWindow: @ 8122BD4 push {r4-r6,lr} ldr r5, _08122C20 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r5, r1] movs r0, 0x64 adds r4, r1, 0 muls r4, r0 ldr r6, _08122C24 @ =gPlayerParty adds r4, r6 ldr r1, _08122C28 @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname ldr r0, _08122C2C @ =sPartyMenuInternal ldr r0, [r0] adds r0, 0xD bl PartyMenuRemoveWindow ldrb r5, [r5, 0x9] adds r0, r4, 0 bl GetPartyMenuActionsType adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r6, 0 adds r1, r5, 0 bl SetPartyMonSelectionActions movs r0, 0 bl DisplaySelectionWindow movs r0, 0x16 bl DisplayPartyMenuStdMessage pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08122C20: .4byte gPartyMenu _08122C24: .4byte gPlayerParty _08122C28: .4byte gStringVar1 _08122C2C: .4byte sPartyMenuInternal thumb_func_end CreateSelectionWindow thumb_func_start Task_TryCreateSelectionWindow Task_TryCreateSelectionWindow: @ 8122C30 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl CreateSelectionWindow ldr r1, _08122C54 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] ldr r1, _08122C58 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08122C54: .4byte gTasks _08122C58: .4byte Task_HandleSelectionMenuInput thumb_func_end Task_TryCreateSelectionWindow thumb_func_start Task_HandleSelectionMenuInput Task_HandleSelectionMenuInput: @ 8122C5C push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r0, _08122C94 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08122D3E bl sub_80BF748 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08122D3E lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, _08122C98 @ =gTasks+0x8 adds r7, r0, r1 ldr r0, _08122C9C @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x17] cmp r0, 0x3 bhi _08122CA0 bl Menu_ProcessInputNoWrapAround_other b _08122CA4 .align 2, 0 _08122C94: .4byte gPaletteFade _08122C98: .4byte gTasks+0x8 _08122C9C: .4byte sPartyMenuInternal _08122CA0: bl Menu_ProcessInput_other _08122CA4: lsls r0, 24 lsrs r5, r0, 24 movs r0, 0 ldrsh r4, [r7, r0] bl Menu_GetCursorPos lsls r0, 24 lsrs r0, 24 cmp r4, r0 beq _08122CCE ldr r0, _08122D14 @ =sPartyMenuInternal ldr r4, [r0] bl Menu_GetCursorPos lsls r0, 24 lsrs r0, 24 adds r4, 0xF adds r4, r0 ldrb r0, [r4] bl sub_8122138 _08122CCE: bl Menu_GetCursorPos lsls r0, 24 lsrs r0, 24 strh r0, [r7] lsls r0, r5, 24 asrs r5, r0, 24 movs r0, 0x2 negs r0, r0 cmp r5, r0 beq _08122D3E adds r0, 0x1 cmp r5, r0 bne _08122D1C movs r0, 0x5 bl PlaySE ldr r4, _08122D14 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xE bl PartyMenuRemoveWindow ldr r2, _08122D18 @ =sCursorOptions ldr r0, [r4] ldrb r1, [r0, 0x17] adds r0, r1 ldrb r0, [r0, 0xE] lsls r0, 3 adds r2, 0x4 adds r0, r2 ldr r1, [r0] adds r0, r6, 0 bl _call_via_r1 b _08122D3E .align 2, 0 _08122D14: .4byte sPartyMenuInternal _08122D18: .4byte sCursorOptions _08122D1C: ldr r4, _08122D44 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xE bl PartyMenuRemoveWindow ldr r1, _08122D48 @ =sCursorOptions ldr r0, [r4] adds r0, 0xF adds r0, r5 ldrb r0, [r0] lsls r0, 3 adds r1, 0x4 adds r0, r1 ldr r1, [r0] adds r0, r6, 0 bl _call_via_r1 _08122D3E: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08122D44: .4byte sPartyMenuInternal _08122D48: .4byte sCursorOptions thumb_func_end Task_HandleSelectionMenuInput thumb_func_start CursorCB_Summary CursorCB_Summary: @ 8122D4C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE ldr r0, _08122D70 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _08122D74 @ =CB2_ShowPokemonSummaryScreen str r0, [r1, 0x4] adds r0, r4, 0 bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 _08122D70: .4byte sPartyMenuInternal _08122D74: .4byte CB2_ShowPokemonSummaryScreen thumb_func_end CursorCB_Summary thumb_func_start CB2_ShowPokemonSummaryScreen CB2_ShowPokemonSummaryScreen: @ 8122D78 push {r4,lr} sub sp, 0x4 ldr r4, _08122DAC @ =gPartyMenu ldrb r1, [r4, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _08122D8C bl UpdatePartyToBattleOrder _08122D8C: ldr r0, _08122DB0 @ =gPlayerParty ldrb r1, [r4, 0x9] ldr r2, _08122DB4 @ =gPlayerPartyCount ldrb r2, [r2] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 ldr r3, _08122DB8 @ =CB2_ReturnToPartyMenuFromSummaryScreen movs r4, 0 str r4, [sp] bl ShowPokemonSummaryScreen add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08122DAC: .4byte gPartyMenu _08122DB0: .4byte gPlayerParty _08122DB4: .4byte gPlayerPartyCount _08122DB8: .4byte CB2_ReturnToPartyMenuFromSummaryScreen thumb_func_end CB2_ShowPokemonSummaryScreen thumb_func_start CB2_ReturnToPartyMenuFromSummaryScreen CB2_ReturnToPartyMenuFromSummaryScreen: @ 8122DBC push {lr} sub sp, 0xC ldr r2, _08122DF4 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] bl sub_8138B20 ldr r3, _08122DF8 @ =gPartyMenu strb r0, [r3, 0x9] ldrb r0, [r3, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r3, 0xB] movs r1, 0x16 str r1, [sp] ldr r1, _08122DFC @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r3] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08122DF4: .4byte gPaletteFade _08122DF8: .4byte gPartyMenu _08122DFC: .4byte Task_TryCreateSelectionWindow thumb_func_end CB2_ReturnToPartyMenuFromSummaryScreen thumb_func_start CursorCB_Switch CursorCB_Switch: @ 8122E00 push {r4-r6,lr} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 movs r0, 0x5 bl PlaySE ldr r5, _08122E4C @ =gPartyMenu movs r0, 0x8 strb r0, [r5, 0xB] ldr r4, _08122E50 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow movs r0, 0x3 bl DisplayPartyMenuStdMessage ldrb r0, [r5, 0x9] movs r1, 0x1 bl AnimatePartySlot ldrb r0, [r5, 0x9] strb r0, [r5, 0xA] ldr r1, _08122E54 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08122E58 @ =Task_HandleChooseMonInput str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08122E4C: .4byte gPartyMenu _08122E50: .4byte sPartyMenuInternal _08122E54: .4byte gTasks _08122E58: .4byte Task_HandleChooseMonInput thumb_func_end CursorCB_Switch thumb_func_start SwitchSelectedMons SwitchSelectedMons: @ 8122E5C push {r4-r7,lr} sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 lsls r0, r7, 2 adds r0, r7 lsls r0, 3 ldr r1, _08122E84 @ =gTasks+0x8 adds r6, r0, r1 ldr r4, _08122E88 @ =gPartyMenu movs r1, 0xA ldrsb r1, [r4, r1] movs r0, 0x9 ldrsb r0, [r4, r0] cmp r1, r0 bne _08122E8C adds r0, r7, 0 bl FinishTwoMonAction b _08122FE2 .align 2, 0 _08122E84: .4byte gTasks+0x8 _08122E88: .4byte gPartyMenu _08122E8C: bl sub_812358C add r2, sp, 0x8 movs r0, 0x9 ldrsb r0, [r4, r0] ldr r1, _08122EE8 @ =sPartyMenuBoxes ldr r1, [r1] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] movs r4, 0 strb r0, [r2] adds r0, r2, 0 ldrb r0, [r0] movs r1, 0x1 bl GetWindowAttribute strh r0, [r6] add r0, sp, 0x8 ldrb r0, [r0] movs r1, 0x2 bl GetWindowAttribute strh r0, [r6, 0x2] add r0, sp, 0x8 ldrb r0, [r0] movs r1, 0x3 bl GetWindowAttribute strh r0, [r6, 0x4] add r0, sp, 0x8 ldrb r0, [r0] movs r1, 0x4 bl GetWindowAttribute strh r0, [r6, 0x6] strh r4, [r6, 0x10] movs r1, 0x4 ldrsh r0, [r6, r1] cmp r0, 0xA bne _08122EEC movs r2, 0x1 negs r2, r2 adds r0, r2, 0 b _08122EEE .align 2, 0 _08122EE8: .4byte sPartyMenuBoxes _08122EEC: movs r0, 0x1 _08122EEE: strh r0, [r6, 0x14] add r2, sp, 0x8 ldr r0, _08122F4C @ =gPartyMenu ldrb r0, [r0, 0xA] lsls r0, 24 asrs r0, 24 ldr r1, _08122F50 @ =sPartyMenuBoxes ldr r1, [r1] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] movs r4, 0 strb r0, [r2, 0x1] adds r0, r2, 0 ldrb r0, [r0, 0x1] movs r1, 0x1 bl GetWindowAttribute strh r0, [r6, 0x8] add r0, sp, 0x8 ldrb r0, [r0, 0x1] movs r1, 0x2 bl GetWindowAttribute strh r0, [r6, 0xA] add r0, sp, 0x8 ldrb r0, [r0, 0x1] movs r1, 0x3 bl GetWindowAttribute strh r0, [r6, 0xC] add r0, sp, 0x8 ldrb r0, [r0, 0x1] movs r1, 0x4 bl GetWindowAttribute strh r0, [r6, 0xE] strh r4, [r6, 0x12] movs r1, 0xC ldrsh r0, [r6, r1] cmp r0, 0xA bne _08122F54 movs r2, 0x1 negs r2, r2 adds r0, r2, 0 b _08122F56 .align 2, 0 _08122F4C: .4byte gPartyMenu _08122F50: .4byte sPartyMenuBoxes _08122F54: movs r0, 0x1 _08122F56: strh r0, [r6, 0x16] ldr r4, _08122FEC @ =sSlot1TilemapBuffer movs r0, 0x4 ldrsh r1, [r6, r0] movs r2, 0x6 ldrsh r0, [r6, r2] lsls r0, 1 muls r0, r1 bl Alloc str r0, [r4] ldr r5, _08122FF0 @ =sSlot2TilemapBuffer movs r0, 0xC ldrsh r1, [r6, r0] movs r2, 0xE ldrsh r0, [r6, r2] lsls r0, 1 muls r0, r1 bl Alloc str r0, [r5] ldr r1, [r4] ldrb r2, [r6] ldrb r3, [r6, 0x2] ldrb r0, [r6, 0x4] str r0, [sp] ldrb r0, [r6, 0x6] str r0, [sp, 0x4] movs r0, 0 bl CopyRectIntoAltRect ldr r1, [r5] ldrb r2, [r6, 0x8] ldrb r3, [r6, 0xA] ldrb r0, [r6, 0xC] str r0, [sp] ldrb r0, [r6, 0xE] str r0, [sp, 0x4] movs r0, 0 bl CopyRectIntoAltRect add r0, sp, 0x8 ldrb r0, [r0] bl ClearWindowTilemap add r0, sp, 0x8 ldrb r0, [r0, 0x1] bl ClearWindowTilemap ldr r4, _08122FF4 @ =gPartyMenu movs r0, 0x9 strb r0, [r4, 0xB] ldrb r0, [r4, 0x9] movs r1, 0x1 bl AnimatePartySlot ldrb r0, [r4, 0xA] movs r1, 0x1 bl AnimatePartySlot adds r0, r7, 0 bl SlidePartyMenuBoxOneStep ldr r1, _08122FF8 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldr r1, _08122FFC @ =Task_SlideSelectedSlotsOffscreen str r1, [r0] _08122FE2: add sp, 0xC pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08122FEC: .4byte sSlot1TilemapBuffer _08122FF0: .4byte sSlot2TilemapBuffer _08122FF4: .4byte gPartyMenu _08122FF8: .4byte gTasks _08122FFC: .4byte Task_SlideSelectedSlotsOffscreen thumb_func_end SwitchSelectedMons thumb_func_start TryMovePartySlot TryMovePartySlot: @ 8123000 push {r4-r7,lr} mov r7, r8 push {r7} adds r6, r2, 0 mov r12, r3 ldr r7, [sp, 0x18] lsls r0, 16 lsrs r3, r0, 16 adds r5, r3, 0 lsls r1, 16 lsrs r2, r1, 16 mov r8, r2 lsls r0, r3, 16 asrs r1, r0, 16 lsls r0, r2, 16 asrs r0, 16 adds r4, r1, r0 cmp r4, 0 blt _0812302A cmp r1, 0x1F ble _0812302E _0812302A: movs r0, 0 b _0812305C _0812302E: cmp r1, 0 bge _08123042 negs r0, r1 strb r0, [r6] movs r0, 0 mov r1, r12 strb r0, [r1] adds r0, r2, r3 strb r0, [r7] b _0812305A _08123042: movs r0, 0 strb r0, [r6] mov r0, r12 strb r5, [r0] cmp r4, 0x1F ble _08123056 movs r0, 0x20 subs r0, r5 strb r0, [r7] b _0812305A _08123056: mov r1, r8 strb r1, [r7] _0812305A: movs r0, 0x1 _0812305C: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end TryMovePartySlot thumb_func_start MoveAndBufferPartySlot MoveAndBufferPartySlot: @ 8123068 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x34 str r0, [sp, 0x28] ldr r0, [sp, 0x54] ldr r4, [sp, 0x58] lsls r2, 16 lsrs r2, 16 mov r9, r2 lsls r3, 16 lsls r0, 16 lsrs r0, 16 mov r10, r0 lsls r4, 16 lsrs r4, 16 str r4, [sp, 0x30] lsls r1, 16 asrs r7, r1, 16 lsrs r0, r3, 16 str r0, [sp, 0x2C] asrs r3, 16 mov r8, r3 mov r5, sp adds r5, 0x25 mov r6, sp adds r6, 0x26 str r6, [sp] adds r0, r7, 0 mov r1, r8 add r2, sp, 0x24 adds r3, r5, 0 bl TryMovePartySlot lsls r0, 24 cmp r0, 0 beq _08123122 ldrb r2, [r5] mov r1, r9 lsls r0, r1, 24 lsrs r0, 24 mov r9, r0 ldrb r0, [r6] str r0, [sp] mov r1, r10 lsls r0, r1, 24 lsrs r4, r0, 24 str r4, [sp, 0x4] movs r0, 0 movs r1, 0 mov r3, r9 bl FillBgTilemapBufferRect_Palette0 ldr r1, [sp, 0x30] lsls r0, r1, 16 asrs r0, 16 adds r0, r7, r0 lsls r0, 16 asrs r0, 16 str r6, [sp] mov r1, r8 add r2, sp, 0x24 adds r3, r5, 0 bl TryMovePartySlot lsls r0, 24 cmp r0, 0 beq _08123122 add r0, sp, 0x24 ldrb r2, [r0] ldr r1, [sp, 0x2C] lsls r0, r1, 24 lsrs r0, 24 str r0, [sp] str r4, [sp, 0x4] ldrb r0, [r5] str r0, [sp, 0x8] mov r0, r9 str r0, [sp, 0xC] ldrb r0, [r6] str r0, [sp, 0x10] str r4, [sp, 0x14] movs r0, 0x11 str r0, [sp, 0x18] movs r0, 0 str r0, [sp, 0x1C] str r0, [sp, 0x20] ldr r1, [sp, 0x28] movs r3, 0 bl CopyRectToBgTilemapBufferRect _08123122: add sp, 0x34 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end MoveAndBufferPartySlot thumb_func_start MovePartyMenuBoxSprites MovePartyMenuBoxSprites: @ 8123134 push {r4,lr} ldr r4, _08123184 @ =gSprites ldrb r2, [r0, 0xB] lsls r3, r2, 4 adds r3, r2 lsls r3, 2 adds r3, r4 lsls r1, 16 asrs r1, 13 ldrh r2, [r3, 0x24] adds r2, r1 strh r2, [r3, 0x24] ldrb r3, [r0, 0xA] lsls r2, r3, 4 adds r2, r3 lsls r2, 2 adds r2, r4 ldrh r3, [r2, 0x24] adds r3, r1 strh r3, [r2, 0x24] ldrb r3, [r0, 0x9] lsls r2, r3, 4 adds r2, r3 lsls r2, 2 adds r2, r4 ldrh r3, [r2, 0x24] adds r3, r1 strh r3, [r2, 0x24] ldrb r2, [r0, 0xC] lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r4 ldrh r2, [r0, 0x24] adds r2, r1 strh r2, [r0, 0x24] pop {r4} pop {r0} bx r0 .align 2, 0 _08123184: .4byte gSprites thumb_func_end MovePartyMenuBoxSprites thumb_func_start SlidePartyMenuBoxSpritesOneStep SlidePartyMenuBoxSpritesOneStep: @ 8123188 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _081231DC @ =gTasks+0x8 adds r4, r1, r0 movs r1, 0x14 ldrsh r0, [r4, r1] cmp r0, 0 beq _081231B6 ldr r2, _081231E0 @ =sPartyMenuBoxes ldr r0, _081231E4 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] lsls r1, 4 ldr r0, [r2] adds r0, r1 movs r2, 0x14 ldrsh r1, [r4, r2] bl MovePartyMenuBoxSprites _081231B6: movs r1, 0x16 ldrsh r0, [r4, r1] cmp r0, 0 beq _081231D4 ldr r2, _081231E0 @ =sPartyMenuBoxes ldr r0, _081231E4 @ =gPartyMenu movs r1, 0xA ldrsb r1, [r0, r1] lsls r1, 4 ldr r0, [r2] adds r0, r1 movs r2, 0x16 ldrsh r1, [r4, r2] bl MovePartyMenuBoxSprites _081231D4: pop {r4} pop {r0} bx r0 .align 2, 0 _081231DC: .4byte gTasks+0x8 _081231E0: .4byte sPartyMenuBoxes _081231E4: .4byte gPartyMenu thumb_func_end SlidePartyMenuBoxSpritesOneStep thumb_func_start SlidePartyMenuBoxOneStep SlidePartyMenuBoxOneStep: @ 81231E8 push {r4-r6,lr} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _08123264 @ =gTasks+0x8 adds r5, r1, r0 movs r1, 0x14 ldrsh r0, [r5, r1] cmp r0, 0 beq _08123228 ldr r0, _08123268 @ =sSlot1TilemapBuffer ldr r0, [r0] ldrh r1, [r5, 0x10] ldrh r2, [r5] adds r1, r2 lsls r1, 16 asrs r1, 16 movs r3, 0x2 ldrsh r2, [r5, r3] movs r4, 0x4 ldrsh r3, [r5, r4] movs r6, 0x6 ldrsh r4, [r5, r6] str r4, [sp] movs r6, 0x14 ldrsh r4, [r5, r6] str r4, [sp, 0x4] bl MoveAndBufferPartySlot _08123228: movs r1, 0x16 ldrsh r0, [r5, r1] cmp r0, 0 beq _08123256 ldr r0, _0812326C @ =sSlot2TilemapBuffer ldr r0, [r0] ldrh r1, [r5, 0x12] ldrh r2, [r5, 0x8] adds r1, r2 lsls r1, 16 asrs r1, 16 movs r3, 0xA ldrsh r2, [r5, r3] movs r4, 0xC ldrsh r3, [r5, r4] movs r6, 0xE ldrsh r4, [r5, r6] str r4, [sp] movs r6, 0x16 ldrsh r4, [r5, r6] str r4, [sp, 0x4] bl MoveAndBufferPartySlot _08123256: movs r0, 0 bl ScheduleBgCopyTilemapToVram add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08123264: .4byte gTasks+0x8 _08123268: .4byte sSlot1TilemapBuffer _0812326C: .4byte sSlot2TilemapBuffer thumb_func_end SlidePartyMenuBoxOneStep thumb_func_start Task_SlideSelectedSlotsOffscreen Task_SlideSelectedSlotsOffscreen: @ 8123270 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r0, r4, 2 adds r0, r4 lsls r7, r0, 3 ldr r0, _08123370 @ =gTasks+0x8 mov r8, r0 adds r6, r7, r0 adds r0, r4, 0 bl SlidePartyMenuBoxOneStep adds r0, r4, 0 bl SlidePartyMenuBoxSpritesOneStep ldrh r1, [r6, 0x14] ldrh r2, [r6, 0x10] adds r1, r2 strh r1, [r6, 0x10] ldrh r0, [r6, 0x16] ldrh r3, [r6, 0x12] adds r0, r3 strh r0, [r6, 0x12] add r2, sp, 0x8 ldrh r0, [r6] adds r0, r1 strh r0, [r2] adds r1, r2, 0 ldrh r0, [r6, 0x12] ldrh r3, [r6, 0x8] adds r2, r0, r3 strh r2, [r1, 0x2] adds r0, r1, 0 ldrh r0, [r0] cmp r0, 0x21 bls _08123362 lsls r0, r2, 16 lsrs r0, 16 cmp r0, 0x21 bls _08123362 movs r1, 0x14 ldrsh r0, [r6, r1] negs r0, r0 strh r0, [r6, 0x14] movs r2, 0x16 ldrsh r0, [r6, r2] negs r0, r0 strh r0, [r6, 0x16] bl SwitchPartyMon ldr r4, _08123374 @ =gPartyMenu ldrb r0, [r4, 0x9] bl DisplayPartyPokemonData ldrb r0, [r4, 0xA] bl DisplayPartyPokemonData movs r0, 0x9 ldrsb r0, [r4, r0] ldr r5, _08123378 @ =sPartyMenuBoxes ldr r1, [r5] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] bl PutWindowTilemap movs r0, 0xA ldrsb r0, [r4, r0] ldr r1, [r5] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] bl PutWindowTilemap ldr r0, _0812337C @ =sSlot1TilemapBuffer ldr r1, [r0] ldrb r2, [r6] ldrb r3, [r6, 0x2] ldrb r0, [r6, 0x4] str r0, [sp] ldrb r0, [r6, 0x6] str r0, [sp, 0x4] movs r0, 0 bl CopyRectIntoAltRect ldr r0, _08123380 @ =sSlot2TilemapBuffer ldr r1, [r0] ldrb r2, [r6, 0x8] ldrb r3, [r6, 0xA] ldrb r0, [r6, 0xC] str r0, [sp] ldrb r0, [r6, 0xE] str r0, [sp, 0x4] movs r0, 0 bl CopyRectIntoAltRect movs r0, 0x9 ldrsb r0, [r4, r0] ldr r1, [r5] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] bl ClearWindowTilemap movs r0, 0xA ldrsb r0, [r4, r0] ldr r1, [r5] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] bl ClearWindowTilemap mov r0, r8 subs r0, 0x8 adds r0, r7, r0 ldr r1, _08123384 @ =Task_SlideSelectedSlotsOnscreen str r1, [r0] _08123362: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08123370: .4byte gTasks+0x8 _08123374: .4byte gPartyMenu _08123378: .4byte sPartyMenuBoxes _0812337C: .4byte sSlot1TilemapBuffer _08123380: .4byte sSlot2TilemapBuffer _08123384: .4byte Task_SlideSelectedSlotsOnscreen thumb_func_end Task_SlideSelectedSlotsOffscreen thumb_func_start Task_SlideSelectedSlotsOnscreen Task_SlideSelectedSlotsOnscreen: @ 8123388 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, _081233E8 @ =gTasks+0x8 adds r4, r0, r1 adds r0, r6, 0 bl SlidePartyMenuBoxOneStep adds r0, r6, 0 bl SlidePartyMenuBoxSpritesOneStep movs r1, 0x14 ldrsh r0, [r4, r1] cmp r0, 0 bne _081233F4 movs r2, 0x16 ldrsh r0, [r4, r2] cmp r0, 0 bne _081233F4 ldr r5, _081233EC @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r5, r0] ldr r4, _081233F0 @ =sPartyMenuBoxes ldr r1, [r4] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] bl PutWindowTilemap movs r0, 0xA ldrsb r0, [r5, r0] ldr r1, [r4] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x8] bl PutWindowTilemap movs r0, 0 bl ScheduleBgCopyTilemapToVram adds r0, r6, 0 bl FinishTwoMonAction b _08123418 .align 2, 0 _081233E8: .4byte gTasks+0x8 _081233EC: .4byte gPartyMenu _081233F0: .4byte sPartyMenuBoxes _081233F4: ldrh r1, [r4, 0x14] ldrh r0, [r4, 0x10] adds r1, r0 strh r1, [r4, 0x10] ldrh r0, [r4, 0x16] ldrh r2, [r4, 0x12] adds r0, r2 strh r0, [r4, 0x12] lsls r1, 16 asrs r1, 16 cmp r1, 0 bne _0812340E strh r1, [r4, 0x14] _0812340E: movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0 bne _08123418 strh r0, [r4, 0x16] _08123418: pop {r4-r6} pop {r0} bx r0 thumb_func_end Task_SlideSelectedSlotsOnscreen thumb_func_start SwitchMenuBoxSprites SwitchMenuBoxSprites: @ 8123420 push {r4-r6,lr} mov r6, r10 mov r5, r9 mov r4, r8 push {r4-r6} ldrb r3, [r0] ldrb r2, [r1] strb r2, [r0] strb r3, [r1] ldr r5, _081234E8 @ =gSprites ldrb r2, [r0] lsls r3, r2, 4 adds r3, r2 lsls r3, 2 adds r3, r5 ldrh r6, [r3, 0x20] ldrh r2, [r3, 0x22] mov r8, r2 ldrh r2, [r3, 0x24] mov r9, r2 ldrh r2, [r3, 0x26] mov r10, r2 ldrb r4, [r1] lsls r2, r4, 4 adds r2, r4 lsls r2, 2 adds r2, r5 ldrh r2, [r2, 0x20] strh r2, [r3, 0x20] ldrb r2, [r0] lsls r3, r2, 4 adds r3, r2 lsls r3, 2 adds r3, r5 ldrb r4, [r1] lsls r2, r4, 4 adds r2, r4 lsls r2, 2 adds r2, r5 ldrh r2, [r2, 0x22] strh r2, [r3, 0x22] ldrb r2, [r0] lsls r3, r2, 4 adds r3, r2 lsls r3, 2 adds r3, r5 ldrb r4, [r1] lsls r2, r4, 4 adds r2, r4 lsls r2, 2 adds r2, r5 ldrh r2, [r2, 0x24] strh r2, [r3, 0x24] ldrb r0, [r0] lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r2, r5 ldrb r3, [r1] lsls r0, r3, 4 adds r0, r3 lsls r0, 2 adds r0, r5 ldrh r0, [r0, 0x26] strh r0, [r2, 0x26] ldrb r2, [r1] lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r5 strh r6, [r0, 0x20] ldrb r2, [r1] lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r5 mov r2, r8 strh r2, [r0, 0x22] ldrb r2, [r1] lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r5 mov r2, r9 strh r2, [r0, 0x24] ldrb r1, [r1] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 mov r1, r10 strh r1, [r0, 0x26] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081234E8: .4byte gSprites thumb_func_end SwitchMenuBoxSprites thumb_func_start SwitchPartyMon SwitchPartyMon: @ 81234EC push {r4-r6,lr} sub sp, 0x8 ldr r1, _08123580 @ =sPartyMenuBoxes ldr r2, _08123584 @ =gPartyMenu movs r3, 0x9 ldrsb r3, [r2, r3] lsls r0, r3, 4 ldr r1, [r1] adds r0, r1, r0 str r0, [sp] ldrb r2, [r2, 0xA] lsls r2, 24 asrs r2, 24 lsls r0, r2, 4 adds r0, r1, r0 str r0, [sp, 0x4] movs r1, 0x64 adds r4, r3, 0 muls r4, r1 ldr r0, _08123588 @ =gPlayerParty adds r4, r0 adds r5, r2, 0 muls r5, r1 adds r5, r0 movs r0, 0x64 bl Alloc adds r6, r0, 0 adds r1, r4, 0 movs r2, 0x64 bl memcpy adds r0, r4, 0 adds r1, r5, 0 movs r2, 0x64 bl memcpy adds r0, r5, 0 adds r1, r6, 0 movs r2, 0x64 bl memcpy adds r0, r6, 0 bl Free ldr r0, [sp] adds r0, 0xB ldr r1, [sp, 0x4] adds r1, 0xB bl SwitchMenuBoxSprites ldr r0, [sp] adds r0, 0xA ldr r1, [sp, 0x4] adds r1, 0xA bl SwitchMenuBoxSprites ldr r0, [sp] adds r0, 0x9 ldr r1, [sp, 0x4] adds r1, 0x9 bl SwitchMenuBoxSprites ldr r0, [sp] adds r0, 0xC ldr r1, [sp, 0x4] adds r1, 0xC bl SwitchMenuBoxSprites add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08123580: .4byte sPartyMenuBoxes _08123584: .4byte gPartyMenu _08123588: .4byte gPlayerParty thumb_func_end SwitchPartyMon thumb_func_start sub_812358C sub_812358C: @ 812358C push {r4-r6,lr} mov r6, r8 push {r6} movs r0, 0x4 bl Alloc adds r4, r0, 0 ldr r0, _081235E0 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 movs r6, 0x64 muls r0, r6 ldr r5, _081235E4 @ =gPlayerParty adds r0, r5 movs r1, 0x41 bl GetMonData strh r0, [r4] mov r1, r8 movs r0, 0xA ldrsb r0, [r1, r0] muls r0, r6 adds r0, r5 movs r1, 0x41 bl GetMonData strh r0, [r4, 0x2] movs r0, 0x3 adds r1, r4, 0 bl sub_8113550 adds r0, r4, 0 bl Free pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081235E0: .4byte gPartyMenu _081235E4: .4byte gPlayerParty thumb_func_end sub_812358C thumb_func_start FinishTwoMonAction FinishTwoMonAction: @ 81235E8 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _08123630 @ =sPartyMenuInternal ldr r0, [r0] adds r0, 0xD bl PartyMenuRemoveWindow ldr r4, _08123634 @ =gPartyMenu movs r0, 0 strb r0, [r4, 0xB] ldrb r0, [r4, 0x9] movs r1, 0 bl AnimatePartySlot ldrb r0, [r4, 0xA] strb r0, [r4, 0x9] ldrb r0, [r4, 0xA] movs r1, 0x1 bl AnimatePartySlot movs r0, 0 bl DisplayPartyMenuStdMessage ldr r1, _08123638 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _0812363C @ =Task_HandleChooseMonInput str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08123630: .4byte sPartyMenuInternal _08123634: .4byte gPartyMenu _08123638: .4byte gTasks _0812363C: .4byte Task_HandleChooseMonInput thumb_func_end FinishTwoMonAction thumb_func_start CursorCB_Cancel1 CursorCB_Cancel1: @ 8123640 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 movs r0, 0x5 bl PlaySE ldr r4, _08123674 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow ldr r0, _08123678 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x6 bne _0812367C movs r0, 0xF bl DisplayPartyMenuStdMessage b _08123682 .align 2, 0 _08123674: .4byte sPartyMenuInternal _08123678: .4byte gPartyMenu _0812367C: movs r0, 0 bl DisplayPartyMenuStdMessage _08123682: ldr r0, _08123698 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _0812369C @ =Task_HandleChooseMonInput str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08123698: .4byte gTasks _0812369C: .4byte Task_HandleChooseMonInput thumb_func_end CursorCB_Cancel1 thumb_func_start CursorCB_Item CursorCB_Item: @ 81236A0 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x5 bl PlaySE ldr r4, _081236F0 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow ldr r0, _081236F4 @ =gPlayerParty ldr r1, _081236F8 @ =gPartyMenu ldrb r1, [r1, 0x9] movs r2, 0x8 bl SetPartyMonSelectionActions movs r0, 0x1 bl DisplaySelectionWindow movs r0, 0x19 bl DisplayPartyMenuStdMessage ldr r1, _081236FC @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] ldr r1, _08123700 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081236F0: .4byte sPartyMenuInternal _081236F4: .4byte gPlayerParty _081236F8: .4byte gPartyMenu _081236FC: .4byte gTasks _08123700: .4byte Task_HandleSelectionMenuInput thumb_func_end CursorCB_Item thumb_func_start CursorCB_Give CursorCB_Give: @ 8123704 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE ldr r0, _08123728 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _0812372C @ =CB2_SelectBagItemToGive str r0, [r1, 0x4] adds r0, r4, 0 bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 _08123728: .4byte sPartyMenuInternal _0812372C: .4byte CB2_SelectBagItemToGive thumb_func_end CursorCB_Give thumb_func_start CB2_SelectBagItemToGive CB2_SelectBagItemToGive: @ 8123730 push {lr} ldr r2, _08123740 @ =CB2_GiveHoldItem movs r0, 0x1 movs r1, 0x3 bl GoToBagMenu pop {r0} bx r0 .align 2, 0 _08123740: .4byte CB2_GiveHoldItem thumb_func_end CB2_SelectBagItemToGive thumb_func_start CB2_GiveHoldItem CB2_GiveHoldItem: @ 8123744 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r6, _0812376C @ =gSpecialVar_ItemId ldrh r0, [r6] cmp r0, 0 bne _08123778 ldr r3, _08123770 @ =gPartyMenu ldrb r0, [r3, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r3, 0xB] movs r1, 0x7F str r1, [sp] ldr r1, _08123774 @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r3] b _081237AE .align 2, 0 _0812376C: .4byte gSpecialVar_ItemId _08123770: .4byte gPartyMenu _08123774: .4byte Task_TryCreateSelectionWindow _08123778: ldr r4, _081237BC @ =sPartyMenuItemId ldr r5, _081237C0 @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r5, r0] movs r1, 0x64 mov r8, r1 mov r1, r8 muls r1, r0 adds r0, r1, 0 ldr r7, _081237C4 @ =gPlayerParty adds r0, r7 movs r1, 0xC bl GetMonData strh r0, [r4] lsls r0, 16 cmp r0, 0 beq _081237CC ldrb r0, [r5, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r5, 0xB] movs r1, 0x7F str r1, [sp] ldr r1, _081237C8 @ =Task_SwitchHoldItemsPrompt str r1, [sp, 0x4] ldr r1, [r5] _081237AE: str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 bl InitPartyMenu b _08123814 .align 2, 0 _081237BC: .4byte sPartyMenuItemId _081237C0: .4byte gPartyMenu _081237C4: .4byte gPlayerParty _081237C8: .4byte Task_SwitchHoldItemsPrompt _081237CC: ldrh r0, [r6] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081237F8 ldrh r0, [r6] movs r1, 0x1 bl RemoveBagItem movs r0, 0x9 ldrsb r0, [r5, r0] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 ldrh r1, [r6] bl GiveItemToMon bl CB2_WriteMailToGiveMon b _08123814 _081237F8: ldrb r0, [r5, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r5, 0xB] movs r1, 0x7F str r1, [sp] ldr r1, _08123820 @ =Task_GiveHoldItem str r1, [sp, 0x4] ldr r1, [r5] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 bl InitPartyMenu _08123814: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08123820: .4byte Task_GiveHoldItem thumb_func_end CB2_GiveHoldItem thumb_func_start Task_GiveHoldItem Task_GiveHoldItem: @ 8123824 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _0812388C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08123880 ldr r0, _08123890 @ =gSpecialVar_ItemId ldrh r4, [r0] ldr r0, _08123894 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 movs r6, 0x64 muls r0, r6 ldr r5, _08123898 @ =gPlayerParty adds r0, r5 adds r1, r4, 0 movs r2, 0 movs r3, 0 bl DisplayGaveHeldItemMessage mov r1, r8 movs r0, 0x9 ldrsb r0, [r1, r0] muls r0, r6 adds r0, r5 adds r1, r4, 0 bl GiveItemToMon adds r0, r4, 0 movs r1, 0x1 bl RemoveBagItem ldr r1, _0812389C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldr r1, _081238A0 @ =Task_UpdateHeldItemSprite str r1, [r0] _08123880: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0812388C: .4byte gPaletteFade _08123890: .4byte gSpecialVar_ItemId _08123894: .4byte gPartyMenu _08123898: .4byte gPlayerParty _0812389C: .4byte gTasks _081238A0: .4byte Task_UpdateHeldItemSprite thumb_func_end Task_GiveHoldItem thumb_func_start Task_SwitchHoldItemsPrompt Task_SwitchHoldItemsPrompt: @ 81238A4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _081238E4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _081238DC ldr r0, _081238E8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _081238EC @ =gPlayerParty adds r0, r1 ldr r1, _081238F0 @ =sPartyMenuItemId ldrh r1, [r1] movs r2, 0x1 bl DisplayAlreadyHoldingItemSwitchMessage ldr r1, _081238F4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _081238F8 @ =Task_SwitchItemsYesNo str r1, [r0] _081238DC: pop {r4} pop {r0} bx r0 .align 2, 0 _081238E4: .4byte gPaletteFade _081238E8: .4byte gPartyMenu _081238EC: .4byte gPlayerParty _081238F0: .4byte sPartyMenuItemId _081238F4: .4byte gTasks _081238F8: .4byte Task_SwitchItemsYesNo thumb_func_end Task_SwitchHoldItemsPrompt thumb_func_start Task_SwitchItemsYesNo Task_SwitchItemsYesNo: @ 81238FC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123920 bl PartyMenuDisplayYesNoMenu ldr r0, _08123928 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0812392C @ =Task_HandleSwitchItemsYesNoInput str r0, [r1] _08123920: pop {r4} pop {r0} bx r0 .align 2, 0 _08123928: .4byte gTasks _0812392C: .4byte Task_HandleSwitchItemsYesNoInput thumb_func_end Task_SwitchItemsYesNo thumb_func_start Task_HandleSwitchItemsYesNoInput Task_HandleSwitchItemsYesNoInput: @ 8123930 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 beq _08123956 cmp r1, 0 bgt _08123950 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _08123A2C b _08123A40 _08123950: cmp r1, 0x1 beq _08123A32 b _08123A40 _08123956: ldr r5, _08123998 @ =gSpecialVar_ItemId ldrh r0, [r5] movs r1, 0x1 bl RemoveBagItem ldr r6, _0812399C @ =sPartyMenuItemId ldrh r0, [r6] movs r1, 0x1 bl AddBagItem lsls r0, 24 cmp r0, 0 bne _081239AC ldrh r0, [r5] movs r1, 0x1 bl AddBagItem ldrh r0, [r6] bl BufferBagFullCantTakeItemMessage ldr r0, _081239A0 @ =gStringVar4 movs r1, 0 bl DisplayPartyMenuMessage ldr r1, _081239A4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _081239A8 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _08123A40 .align 2, 0 _08123998: .4byte gSpecialVar_ItemId _0812399C: .4byte sPartyMenuItemId _081239A0: .4byte gStringVar4 _081239A4: .4byte gTasks _081239A8: .4byte Task_ReturnToChooseMonAfterText _081239AC: ldrh r0, [r5] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081239EC ldr r0, _081239DC @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _081239E0 @ =gPlayerParty adds r0, r1 ldrh r1, [r5] bl GiveItemToMon ldr r1, _081239E4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _081239E8 @ =Task_WriteMailToGiveMonAfterText str r1, [r0] b _08123A40 .align 2, 0 _081239DC: .4byte gPartyMenu _081239E0: .4byte gPlayerParty _081239E4: .4byte gTasks _081239E8: .4byte Task_WriteMailToGiveMonAfterText _081239EC: ldr r0, _08123A1C @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08123A20 @ =gPlayerParty adds r0, r1 ldrh r1, [r5] bl GiveItemToMon ldrh r0, [r5] ldrh r1, [r6] movs r2, 0x1 bl DisplaySwitchedHeldItemMessage ldr r1, _08123A24 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08123A28 @ =Task_UpdateHeldItemSprite str r1, [r0] b _08123A40 .align 2, 0 _08123A1C: .4byte gPartyMenu _08123A20: .4byte gPlayerParty _08123A24: .4byte gTasks _08123A28: .4byte Task_UpdateHeldItemSprite _08123A2C: movs r0, 0x5 bl PlaySE _08123A32: ldr r0, _08123A48 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08123A4C @ =Task_ReturnToChooseMonAfterText str r0, [r1] _08123A40: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08123A48: .4byte gTasks _08123A4C: .4byte Task_ReturnToChooseMonAfterText thumb_func_end Task_HandleSwitchItemsYesNoInput thumb_func_start Task_WriteMailToGiveMonAfterText Task_WriteMailToGiveMonAfterText: @ 8123A50 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123A70 ldr r0, _08123A78 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _08123A7C @ =CB2_WriteMailToGiveMon str r0, [r1, 0x4] adds r0, r4, 0 bl Task_ClosePartyMenu _08123A70: pop {r4} pop {r0} bx r0 .align 2, 0 _08123A78: .4byte sPartyMenuInternal _08123A7C: .4byte CB2_WriteMailToGiveMon thumb_func_end Task_WriteMailToGiveMonAfterText thumb_func_start CB2_WriteMailToGiveMon CB2_WriteMailToGiveMon: @ 8123A80 push {lr} ldr r0, _08123AB8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08123ABC @ =gPlayerParty adds r0, r1 movs r1, 0x40 bl GetMonData lsls r0, 24 lsrs r0, 24 ldr r1, _08123AC0 @ =gSaveBlock1Ptr lsls r2, r0, 3 adds r2, r0 lsls r2, 2 ldr r0, _08123AC4 @ =0x00002cd0 adds r2, r0 ldr r1, [r1] adds r1, r2 ldr r2, _08123AC8 @ =CB2_ReturnToPartyMenuFromWritingMail movs r0, 0x4 bl DoEasyChatScreen pop {r0} bx r0 .align 2, 0 _08123AB8: .4byte gPartyMenu _08123ABC: .4byte gPlayerParty _08123AC0: .4byte gSaveBlock1Ptr _08123AC4: .4byte 0x00002cd0 _08123AC8: .4byte CB2_ReturnToPartyMenuFromWritingMail thumb_func_end CB2_WriteMailToGiveMon thumb_func_start CB2_ReturnToPartyMenuFromWritingMail CB2_ReturnToPartyMenuFromWritingMail: @ 8123ACC push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r6, _08123B38 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08123B3C @ =gPlayerParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, _08123B40 @ =gSpecialVar_Result ldrh r7, [r0] cmp r7, 0 bne _08123B4C adds r0, r5, 0 bl TakeMailFromMon ldr r4, _08123B44 @ =sPartyMenuItemId adds r0, r5, 0 movs r1, 0xC adds r2, r4, 0 bl SetMonData ldrh r0, [r4] movs r1, 0x1 bl RemoveBagItem mov r0, r8 movs r1, 0x1 bl AddBagItem ldrb r0, [r6, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r6, 0xB] str r7, [sp] ldr r1, _08123B48 @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r6] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 bl InitPartyMenu b _08123B68 .align 2, 0 _08123B38: .4byte gPartyMenu _08123B3C: .4byte gPlayerParty _08123B40: .4byte gSpecialVar_Result _08123B44: .4byte sPartyMenuItemId _08123B48: .4byte Task_TryCreateSelectionWindow _08123B4C: ldrb r0, [r6, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r6, 0xB] movs r1, 0 str r1, [sp] ldr r1, _08123B74 @ =Task_DisplayGaveMailFromPartyMessage str r1, [sp, 0x4] ldr r1, [r6] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 bl InitPartyMenu _08123B68: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08123B74: .4byte Task_DisplayGaveMailFromPartyMessage thumb_func_end CB2_ReturnToPartyMenuFromWritingMail thumb_func_start Task_DisplayGaveMailFromPartyMessage Task_DisplayGaveMailFromPartyMessage: @ 8123B78 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08123BB0 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08123BDE ldr r1, _08123BB4 @ =sPartyMenuItemId ldrh r0, [r1] cmp r0, 0 bne _08123BC4 ldr r0, _08123BB8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08123BBC @ =gPlayerParty adds r0, r1 ldr r1, _08123BC0 @ =gSpecialVar_ItemId ldrh r1, [r1] movs r2, 0 movs r3, 0 bl DisplayGaveHeldItemMessage b _08123BD0 .align 2, 0 _08123BB0: .4byte gPaletteFade _08123BB4: .4byte sPartyMenuItemId _08123BB8: .4byte gPartyMenu _08123BBC: .4byte gPlayerParty _08123BC0: .4byte gSpecialVar_ItemId _08123BC4: ldr r0, _08123BE4 @ =gSpecialVar_ItemId ldrh r0, [r0] ldrh r1, [r1] movs r2, 0 bl DisplaySwitchedHeldItemMessage _08123BD0: ldr r0, _08123BE8 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08123BEC @ =Task_UpdateHeldItemSprite str r0, [r1] _08123BDE: pop {r4} pop {r0} bx r0 .align 2, 0 _08123BE4: .4byte gSpecialVar_ItemId _08123BE8: .4byte gTasks _08123BEC: .4byte Task_UpdateHeldItemSprite thumb_func_end Task_DisplayGaveMailFromPartyMessage thumb_func_start Task_UpdateHeldItemSprite Task_UpdateHeldItemSprite: @ 8123BF0 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _08123C2C @ =gPartyMenu ldrb r4, [r0, 0x9] bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123C24 lsls r2, r4, 24 asrs r2, 24 movs r0, 0x64 muls r0, r2 ldr r1, _08123C30 @ =gPlayerParty adds r0, r1 ldr r1, _08123C34 @ =sPartyMenuBoxes lsls r2, 4 ldr r1, [r1] adds r1, r2 bl UpdatePartyMonHeldItemSprite adds r0, r5, 0 bl Task_ReturnToChooseMonAfterText _08123C24: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08123C2C: .4byte gPartyMenu _08123C30: .4byte gPlayerParty _08123C34: .4byte sPartyMenuBoxes thumb_func_end Task_UpdateHeldItemSprite thumb_func_start CursorCB_TakeItem CursorCB_TakeItem: @ 8123C38 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _08123C90 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08123C94 @ =gPlayerParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r6, r0, 16 movs r0, 0x5 bl PlaySE ldr r4, _08123C98 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow adds r0, r5, 0 bl TryTakeMonItem lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08123C9C cmp r0, 0x1 beq _08123CC0 adds r0, r5, 0 adds r1, r6, 0 movs r2, 0x1 bl DisplayTookHeldItemMessage b _08123CCE .align 2, 0 _08123C90: .4byte gPartyMenu _08123C94: .4byte gPlayerParty _08123C98: .4byte sPartyMenuInternal _08123C9C: ldr r1, _08123CB4 @ =gStringVar1 adds r0, r5, 0 bl GetMonNickname ldr r4, _08123CB8 @ =gStringVar4 ldr r1, _08123CBC @ =gUnknown_8416C8F adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 b _08123CC8 .align 2, 0 _08123CB4: .4byte gStringVar1 _08123CB8: .4byte gStringVar4 _08123CBC: .4byte gUnknown_8416C8F _08123CC0: adds r0, r6, 0 bl BufferBagFullCantTakeItemMessage ldr r0, _08123CE8 @ =gStringVar4 _08123CC8: movs r1, 0x1 bl DisplayPartyMenuMessage _08123CCE: movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r0, _08123CEC @ =gTasks lsls r1, r7, 2 adds r1, r7 lsls r1, 3 adds r1, r0 ldr r0, _08123CF0 @ =Task_UpdateHeldItemSprite str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08123CE8: .4byte gStringVar4 _08123CEC: .4byte gTasks _08123CF0: .4byte Task_UpdateHeldItemSprite thumb_func_end CursorCB_TakeItem thumb_func_start CursorCB_Mail CursorCB_Mail: @ 8123CF4 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x5 bl PlaySE ldr r4, _08123D44 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow ldr r0, _08123D48 @ =gPlayerParty ldr r1, _08123D4C @ =gPartyMenu ldrb r1, [r1, 0x9] movs r2, 0x9 bl SetPartyMonSelectionActions movs r0, 0x2 bl DisplaySelectionWindow movs r0, 0x1A bl DisplayPartyMenuStdMessage ldr r1, _08123D50 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] ldr r1, _08123D54 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08123D44: .4byte sPartyMenuInternal _08123D48: .4byte gPlayerParty _08123D4C: .4byte gPartyMenu _08123D50: .4byte gTasks _08123D54: .4byte Task_HandleSelectionMenuInput thumb_func_end CursorCB_Mail thumb_func_start CursorCB_Read CursorCB_Read: @ 8123D58 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE ldr r0, _08123D7C @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _08123D80 @ =CB2_ReadHeldMail str r0, [r1, 0x4] adds r0, r4, 0 bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 _08123D7C: .4byte sPartyMenuInternal _08123D80: .4byte CB2_ReadHeldMail thumb_func_end CursorCB_Read thumb_func_start CB2_ReadHeldMail CB2_ReadHeldMail: @ 8123D84 push {lr} ldr r0, _08123DB8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08123DBC @ =gPlayerParty adds r0, r1 movs r1, 0x40 bl GetMonData ldr r2, _08123DC0 @ =gSaveBlock1Ptr lsls r1, r0, 3 adds r1, r0 lsls r1, 2 ldr r0, _08123DC4 @ =0x00002cd0 adds r1, r0 ldr r0, [r2] adds r0, r1 ldr r1, _08123DC8 @ =CB2_ReturnToPartyMenuFromReadingMail movs r2, 0x1 bl ReadMail pop {r0} bx r0 .align 2, 0 _08123DB8: .4byte gPartyMenu _08123DBC: .4byte gPlayerParty _08123DC0: .4byte gSaveBlock1Ptr _08123DC4: .4byte 0x00002cd0 _08123DC8: .4byte CB2_ReturnToPartyMenuFromReadingMail thumb_func_end CB2_ReadHeldMail thumb_func_start CB2_ReturnToPartyMenuFromReadingMail CB2_ReturnToPartyMenuFromReadingMail: @ 8123DCC push {lr} sub sp, 0xC ldr r2, _08123E00 @ =gPaletteFade ldrb r0, [r2, 0x8] movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] ldr r3, _08123E04 @ =gPartyMenu ldrb r0, [r3, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r3, 0xB] movs r1, 0x16 str r1, [sp] ldr r1, _08123E08 @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r3] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08123E00: .4byte gPaletteFade _08123E04: .4byte gPartyMenu _08123E08: .4byte Task_TryCreateSelectionWindow thumb_func_end CB2_ReturnToPartyMenuFromReadingMail thumb_func_start CursorCB_TakeMail CursorCB_TakeMail: @ 8123E0C push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE ldr r5, _08123E48 @ =sPartyMenuInternal ldr r0, [r5] adds r0, 0xD bl PartyMenuRemoveWindow ldr r0, [r5] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, _08123E4C @ =gText_SendMailToPC movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _08123E50 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08123E54 @ =Task_SendMailToPCYesNo str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08123E48: .4byte sPartyMenuInternal _08123E4C: .4byte gText_SendMailToPC _08123E50: .4byte gTasks _08123E54: .4byte Task_SendMailToPCYesNo thumb_func_end CursorCB_TakeMail thumb_func_start Task_SendMailToPCYesNo Task_SendMailToPCYesNo: @ 8123E58 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123E7C bl PartyMenuDisplayYesNoMenu ldr r0, _08123E84 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08123E88 @ =Task_HandleSendMailToPCYesNoInput str r0, [r1] _08123E7C: pop {r4} pop {r0} bx r0 .align 2, 0 _08123E84: .4byte gTasks _08123E88: .4byte Task_HandleSendMailToPCYesNoInput thumb_func_end Task_SendMailToPCYesNo thumb_func_start Task_HandleSendMailToPCYesNoInput Task_HandleSendMailToPCYesNoInput: @ 8123E8C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 beq _08123EB2 cmp r1, 0 bgt _08123EAC movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _08123F1C b _08123F38 _08123EAC: cmp r1, 0x1 beq _08123F22 b _08123F38 _08123EB2: ldr r0, _08123EE4 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08123EE8 @ =gPlayerParty adds r0, r1 bl TakeMailFromMon2 lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _08123EF8 ldr r0, _08123EEC @ =gText_MailSentToPC movs r1, 0 bl DisplayPartyMenuMessage ldr r1, _08123EF0 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08123EF4 @ =Task_UpdateHeldItemSprite b _08123F36 .align 2, 0 _08123EE4: .4byte gPartyMenu _08123EE8: .4byte gPlayerParty _08123EEC: .4byte gText_MailSentToPC _08123EF0: .4byte gTasks _08123EF4: .4byte Task_UpdateHeldItemSprite _08123EF8: ldr r0, _08123F10 @ =gText_PCMailboxFull movs r1, 0 bl DisplayPartyMenuMessage ldr r1, _08123F14 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08123F18 @ =Task_ReturnToChooseMonAfterText b _08123F36 .align 2, 0 _08123F10: .4byte gText_PCMailboxFull _08123F14: .4byte gTasks _08123F18: .4byte Task_ReturnToChooseMonAfterText _08123F1C: movs r0, 0x5 bl PlaySE _08123F22: ldr r0, _08123F40 @ =gText_MailMessageWillBeLost movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _08123F44 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08123F48 @ =Task_LoseMailMessageYesNo _08123F36: str r1, [r0] _08123F38: pop {r4} pop {r0} bx r0 .align 2, 0 _08123F40: .4byte gText_MailMessageWillBeLost _08123F44: .4byte gTasks _08123F48: .4byte Task_LoseMailMessageYesNo thumb_func_end Task_HandleSendMailToPCYesNoInput thumb_func_start Task_LoseMailMessageYesNo Task_LoseMailMessageYesNo: @ 8123F4C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123F70 bl PartyMenuDisplayYesNoMenu ldr r0, _08123F78 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08123F7C @ =Task_HandleLoseMailMessageYesNoInput str r0, [r1] _08123F70: pop {r4} pop {r0} bx r0 .align 2, 0 _08123F78: .4byte gTasks _08123F7C: .4byte Task_HandleLoseMailMessageYesNoInput thumb_func_end Task_LoseMailMessageYesNo thumb_func_start Task_HandleLoseMailMessageYesNoInput Task_HandleLoseMailMessageYesNoInput: @ 8123F80 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r5, r0, 24 bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 beq _08123FAA cmp r1, 0 bgt _08123FA4 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0812403C b _08124050 _08123FA4: cmp r1, 0x1 beq _08124042 b _08124050 _08123FAA: ldr r0, _08123FFC @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 movs r7, 0x64 muls r0, r7 ldr r6, _08124000 @ =gPlayerParty adds r0, r6 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 bl AddBagItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124010 mov r1, r8 movs r0, 0x9 ldrsb r0, [r1, r0] muls r0, r7 adds r0, r6 bl TakeMailFromMon ldr r0, _08124004 @ =gText_MailTakenFromPkmn movs r1, 0 bl DisplayPartyMenuMessage ldr r1, _08124008 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _0812400C @ =Task_UpdateHeldItemSprite str r1, [r0] b _08124050 .align 2, 0 _08123FFC: .4byte gPartyMenu _08124000: .4byte gPlayerParty _08124004: .4byte gText_MailTakenFromPkmn _08124008: .4byte gTasks _0812400C: .4byte Task_UpdateHeldItemSprite _08124010: adds r0, r4, 0 bl BufferBagFullCantTakeItemMessage ldr r0, _08124030 @ =gStringVar4 movs r1, 0 bl DisplayPartyMenuMessage ldr r1, _08124034 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _08124038 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _08124050 .align 2, 0 _08124030: .4byte gStringVar4 _08124034: .4byte gTasks _08124038: .4byte Task_ReturnToChooseMonAfterText _0812403C: movs r0, 0x5 bl PlaySE _08124042: ldr r0, _0812405C @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _08124060 @ =Task_ReturnToChooseMonAfterText str r0, [r1] _08124050: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0812405C: .4byte gTasks _08124060: .4byte Task_ReturnToChooseMonAfterText thumb_func_end Task_HandleLoseMailMessageYesNoInput thumb_func_start CursorCB_Cancel2 CursorCB_Cancel2: @ 8124064 push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 ldr r0, _081240E0 @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 adds r5, r1, 0 muls r5, r0 ldr r0, _081240E4 @ =gPlayerParty mov r9, r0 add r5, r9 movs r0, 0x5 bl PlaySE ldr r4, _081240E8 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow mov r0, r8 ldrb r4, [r0, 0x9] adds r0, r5, 0 bl GetPartyMenuActionsType adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 mov r0, r9 adds r1, r4, 0 bl SetPartyMonSelectionActions movs r0, 0 bl DisplaySelectionWindow movs r0, 0x16 bl DisplayPartyMenuStdMessage ldr r1, _081240EC @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] ldr r1, _081240F0 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081240E0: .4byte gPartyMenu _081240E4: .4byte gPlayerParty _081240E8: .4byte sPartyMenuInternal _081240EC: .4byte gTasks _081240F0: .4byte Task_HandleSelectionMenuInput thumb_func_end CursorCB_Cancel2 thumb_func_start CursorCB_SendMon CursorCB_SendMon: @ 81240F4 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 bl PlaySE ldr r5, _08124120 @ =sPartyMenuInternal ldr r0, [r5] adds r0, 0xC bl PartyMenuRemoveWindow bl TrySwitchInPokemon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124124 adds r0, r4, 0 bl Task_ClosePartyMenu b _08124142 .align 2, 0 _08124120: .4byte sPartyMenuInternal _08124124: ldr r0, [r5] adds r0, 0xD bl PartyMenuRemoveWindow ldr r0, _08124148 @ =gStringVar4 movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _0812414C @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08124150 @ =Task_ReturnToChooseMonAfterText str r1, [r0] _08124142: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08124148: .4byte gStringVar4 _0812414C: .4byte gTasks _08124150: .4byte Task_ReturnToChooseMonAfterText thumb_func_end CursorCB_SendMon thumb_func_start CursorCB_Enter CursorCB_Enter: @ 8124154 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 lsls r0, 24 lsrs r7, r0, 24 ldr r0, _0812417C @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xC0 ands r0, r1 cmp r0, 0x80 bne _08124184 movs r0, 0x2 mov r8, r0 ldr r1, _08124180 @ =gUnknown_8416B3E str r1, [sp] b _0812418C .align 2, 0 _0812417C: .4byte gPartyMenu _08124180: .4byte gUnknown_8416B3E _08124184: movs r2, 0x3 mov r8, r2 ldr r0, _081241FC @ =gUnknown_8416B16 str r0, [sp] _0812418C: ldr r4, _08124200 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow movs r5, 0 lsls r1, r7, 2 mov r9, r1 cmp r5, r8 bcs _08124222 ldr r6, _08124204 @ =gPartyMenu ldr r1, _08124208 @ =gTasks mov r2, r9 adds r0, r2, r7 lsls r0, 3 adds r0, r1 mov r10, r0 _081241B6: ldr r0, _0812420C @ =gSelectedOrderFromParty adds r4, r5, r0 ldrb r0, [r4] cmp r0, 0 bne _08124218 movs r0, 0x5 bl PlaySE ldrb r0, [r6, 0x9] adds r0, 0x1 strb r0, [r4] adds r0, r5, 0x2 lsls r0, 24 lsrs r0, 24 ldr r1, _08124210 @ =sPartyMenuBoxes movs r2, 0x9 ldrsb r2, [r6, r2] lsls r2, 4 ldr r1, [r1] adds r1, r2 movs r2, 0x1 bl DisplayPartyPokemonDescriptionText mov r0, r8 subs r0, 0x1 cmp r5, r0 bne _081241F0 bl MoveCursorToConfirm _081241F0: movs r0, 0 bl DisplayPartyMenuStdMessage ldr r0, _08124214 @ =Task_HandleChooseMonInput mov r1, r10 b _0812423C .align 2, 0 _081241FC: .4byte gUnknown_8416B16 _08124200: .4byte sPartyMenuInternal _08124204: .4byte gPartyMenu _08124208: .4byte gTasks _0812420C: .4byte gSelectedOrderFromParty _08124210: .4byte sPartyMenuBoxes _08124214: .4byte Task_HandleChooseMonInput _08124218: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, r8 bcc _081241B6 _08124222: movs r0, 0x1A bl PlaySE ldr r0, [sp] movs r1, 0x1 bl DisplayPartyMenuMessage ldr r0, _08124250 @ =gTasks mov r2, r9 adds r1, r2, r7 lsls r1, 3 adds r1, r0 ldr r0, _08124254 @ =Task_ReturnToChooseMonAfterText _0812423C: str r0, [r1] add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08124250: .4byte gTasks _08124254: .4byte Task_ReturnToChooseMonAfterText thumb_func_end CursorCB_Enter thumb_func_start MoveCursorToConfirm MoveCursorToConfirm: @ 8124258 push {r4,lr} ldr r4, _08124274 @ =gPartyMenu ldrb r0, [r4, 0x9] movs r1, 0 bl AnimatePartySlot movs r0, 0x6 strb r0, [r4, 0x9] movs r1, 0x1 bl AnimatePartySlot pop {r4} pop {r0} bx r0 .align 2, 0 _08124274: .4byte gPartyMenu thumb_func_end MoveCursorToConfirm thumb_func_start CursorCB_NoEntry CursorCB_NoEntry: @ 8124278 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 movs r0, 0x5 bl PlaySE ldr r4, _081242BC @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow movs r4, 0 ldr r3, _081242C0 @ =gSelectedOrderFromParty ldr r6, _081242C4 @ =gPartyMenu adds r5, r6, 0 _0812429E: adds r2, r4, r3 ldrb r1, [r2] movs r0, 0x9 ldrsb r0, [r5, r0] adds r0, 0x1 cmp r1, r0 bne _081242DC movs r1, 0 strb r1, [r2] cmp r4, 0 beq _081242C8 cmp r4, 0x1 beq _081242D4 b _081242E6 .align 2, 0 _081242BC: .4byte sPartyMenuInternal _081242C0: .4byte gSelectedOrderFromParty _081242C4: .4byte gPartyMenu _081242C8: ldrb r0, [r3, 0x1] strb r0, [r3] ldrb r0, [r3, 0x2] strb r0, [r3, 0x1] strb r4, [r3, 0x2] b _081242E6 _081242D4: ldrb r0, [r3, 0x2] strb r0, [r3, 0x1] strb r1, [r3, 0x2] b _081242E6 _081242DC: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x2 bls _0812429E _081242E6: ldr r5, _08124344 @ =sPartyMenuBoxes movs r0, 0x9 ldrsb r0, [r6, r0] lsls r0, 4 ldr r1, [r5] adds r1, r0 movs r0, 0x1 movs r2, 0x1 bl DisplayPartyPokemonDescriptionText ldr r4, _08124348 @ =gSelectedOrderFromParty ldrb r0, [r4] cmp r0, 0 beq _08124312 lsls r0, 4 subs r0, 0x10 ldr r1, [r5] adds r1, r0 movs r0, 0x2 movs r2, 0x1 bl DisplayPartyPokemonDescriptionText _08124312: ldrb r0, [r4, 0x1] cmp r0, 0 beq _08124328 lsls r0, 4 subs r0, 0x10 ldr r1, [r5] adds r1, r0 movs r0, 0x3 movs r2, 0x1 bl DisplayPartyPokemonDescriptionText _08124328: movs r0, 0 bl DisplayPartyMenuStdMessage ldr r0, _0812434C @ =gTasks lsls r1, r7, 2 adds r1, r7 lsls r1, 3 adds r1, r0 ldr r0, _08124350 @ =Task_HandleChooseMonInput str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08124344: .4byte sPartyMenuBoxes _08124348: .4byte gSelectedOrderFromParty _0812434C: .4byte gTasks _08124350: .4byte Task_HandleChooseMonInput thumb_func_end CursorCB_NoEntry thumb_func_start CursorCB_Store CursorCB_Store: @ 8124354 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE ldr r1, _0812437C @ =gSpecialVar_0x8004 ldr r0, _08124380 @ =gPartyMenu ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 strh r0, [r1] adds r0, r4, 0 bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 _0812437C: .4byte gSpecialVar_0x8004 _08124380: .4byte gPartyMenu thumb_func_end CursorCB_Store thumb_func_start CursorCB_Register CursorCB_Register: @ 8124384 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _08124410 @ =gPartyMenu mov r9, r0 ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 movs r1, 0x64 mov r8, r1 mov r1, r8 muls r1, r0 adds r0, r1, 0 ldr r4, _08124414 @ =gPlayerParty adds r0, r4 movs r1, 0x41 bl GetMonData adds r6, r0, 0 lsls r6, 16 lsrs r6, 16 mov r1, r9 movs r0, 0x9 ldrsb r0, [r1, r0] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4 movs r1, 0xB bl GetMonData adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 mov r1, r9 movs r0, 0x9 ldrsb r0, [r1, r0] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4 movs r1, 0x50 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl sub_80F9800 ldr r0, [r0] adds r1, r6, 0 adds r2, r5, 0 adds r3, r4, 0 bl Trade_CanTradeSelectedMon cmp r0, 0x1 beq _08124418 cmp r0, 0x2 beq _0812442C movs r0, 0x5 bl PlaySE adds r0, r7, 0 bl Task_ClosePartyMenu b _0812446C .align 2, 0 _08124410: .4byte gPartyMenu _08124414: .4byte gPlayerParty _08124418: ldr r0, _08124424 @ =gStringVar4 ldr r1, _08124428 @ =gText_PkmnCantBeTradedNow bl StringExpandPlaceholders b _08124434 .align 2, 0 _08124424: .4byte gStringVar4 _08124428: .4byte gText_PkmnCantBeTradedNow _0812442C: ldr r0, _08124478 @ =gStringVar4 ldr r1, _0812447C @ =gText_EggCantBeTradedNow bl StringExpandPlaceholders _08124434: movs r0, 0x1A bl PlaySE ldr r4, _08124480 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow ldr r4, _08124478 @ =gStringVar4 ldr r1, _08124484 @ =gText_PauseUntilPress adds r0, r4, 0 bl StringAppend adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _08124488 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldr r1, _0812448C @ =Task_ReturnToChooseMonAfterText str r1, [r0] _0812446C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08124478: .4byte gStringVar4 _0812447C: .4byte gText_EggCantBeTradedNow _08124480: .4byte sPartyMenuInternal _08124484: .4byte gText_PauseUntilPress _08124488: .4byte gTasks _0812448C: .4byte Task_ReturnToChooseMonAfterText thumb_func_end CursorCB_Register thumb_func_start CursorCB_Trade1 CursorCB_Trade1: @ 8124490 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 ldr r0, _08124558 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 movs r6, 0x64 muls r0, r6 ldr r4, _0812455C @ =gPlayerParty adds r0, r4 movs r1, 0x41 bl GetMonData mov r9, r0 mov r1, r9 lsls r1, 16 lsrs r1, 16 mov r9, r1 mov r1, r8 movs r0, 0x9 ldrsb r0, [r1, r0] muls r0, r6 adds r0, r4 movs r1, 0xB bl GetMonData adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 mov r1, r8 movs r0, 0x9 ldrsb r0, [r1, r0] muls r0, r6 adds r0, r4 movs r1, 0x50 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl sub_80F9800 ldr r0, [r0] ldr r1, _08124560 @ =gUnknown_203B064 ldr r1, [r1] ldr r2, _08124564 @ =gUnionRoomOfferedSpecies ldrh r3, [r2] ldr r2, _08124568 @ =gUnionRoomRequestedMonType ldrb r2, [r2] str r2, [sp] str r5, [sp, 0x4] str r4, [sp, 0x8] mov r2, r9 bl GetUnionRoomTradeMessageId cmp r0, 0 beq _08124584 ldr r5, _0812456C @ =gStringVar4 ldr r1, _08124570 @ =sUnionRoomTradeMessages subs r0, 0x1 lsls r0, 2 adds r0, r1 ldr r1, [r0] adds r0, r5, 0 bl StringExpandPlaceholders movs r0, 0x1A bl PlaySE ldr r4, _08124574 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD bl PartyMenuRemoveWindow ldr r1, _08124578 @ =gText_PauseUntilPress adds r0, r5, 0 bl StringAppend adds r0, r5, 0 movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _0812457C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldr r1, _08124580 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _08124590 .align 2, 0 _08124558: .4byte gPartyMenu _0812455C: .4byte gPlayerParty _08124560: .4byte gUnknown_203B064 _08124564: .4byte gUnionRoomOfferedSpecies _08124568: .4byte gUnionRoomRequestedMonType _0812456C: .4byte gStringVar4 _08124570: .4byte sUnionRoomTradeMessages _08124574: .4byte sPartyMenuInternal _08124578: .4byte gText_PauseUntilPress _0812457C: .4byte gTasks _08124580: .4byte Task_ReturnToChooseMonAfterText _08124584: movs r0, 0x5 bl PlaySE adds r0, r7, 0 bl Task_ClosePartyMenu _08124590: add sp, 0xC pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end CursorCB_Trade1 thumb_func_start CursorCB_Trade2 CursorCB_Trade2: @ 81245A0 bx lr thumb_func_end CursorCB_Trade2 thumb_func_start CursorCB_FieldMove CursorCB_FieldMove: @ 81245A4 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 bl Menu_GetCursorPos ldr r5, _08124610 @ =sPartyMenuInternal ldr r1, [r5] lsls r0, 24 lsrs r0, 24 adds r1, 0xF adds r1, r0 ldrb r0, [r1] subs r0, 0x12 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 bl PlaySE ldr r1, _08124614 @ =sFieldMoveCursorCallbacks lsls r0, r4, 3 adds r7, r0, r1 ldr r0, [r7] cmp r0, 0 bne _081245D6 b _081247B4 _081245D6: ldr r0, [r5] adds r0, 0xC bl PartyMenuRemoveWindow ldr r0, [r5] adds r0, 0xD bl PartyMenuRemoveWindow bl MenuHelpers_LinkSomething lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081245FA bl InUnionRoom cmp r0, 0x1 bne _0812461C _081245FA: adds r0, r4, 0 subs r0, 0x9 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _08124618 movs r0, 0xD bl DisplayPartyMenuStdMessage b _081247A6 .align 2, 0 _08124610: .4byte sPartyMenuInternal _08124614: .4byte sFieldMoveCursorCallbacks _08124618: ldrb r0, [r7, 0x4] b _081247A2 _0812461C: cmp r4, 0x6 bhi _08124658 movs r1, 0x82 lsls r1, 4 adds r0, r4, r1 bl FlagGet lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08124658 ldr r0, _0812464C @ =gText_CantUseUntilNewBadge movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _08124650 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08124654 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _081247B4 .align 2, 0 _0812464C: .4byte gText_CantUseUntilNewBadge _08124650: .4byte gTasks _08124654: .4byte Task_ReturnToChooseMonAfterText _08124658: ldr r1, _08124680 @ =sFieldMoveCursorCallbacks lsls r0, r4, 3 adds r5, r0, r1 ldr r0, [r5] bl _call_via_r0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0812466E b _0812478C _0812466E: subs r0, r4, 0x2 cmp r0, 0x8 bhi _0812475C lsls r0, 2 ldr r1, _08124684 @ =_08124688 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08124680: .4byte sFieldMoveCursorCallbacks _08124684: .4byte _08124688 .align 2, 0 _08124688: .4byte _0812474C .4byte _0812475C .4byte _0812475C .4byte _0812475C .4byte _0812475C .4byte _081246B4 .4byte _081246F0 .4byte _081246AC .4byte _081246AC _081246AC: adds r0, r6, 0 bl ChooseMonForSoftboiled b _081247B4 _081246B4: ldr r0, _081246E0 @ =gSaveBlock1Ptr ldr r1, [r0] movs r0, 0x1C ldrsb r0, [r1, r0] lsls r0, 16 lsrs r0, 16 ldrb r1, [r1, 0x1D] lsls r1, 24 asrs r1, 24 lsls r1, 16 lsrs r1, 16 bl Overworld_GetMapHeaderByGroupAndId adds r1, r0, 0 ldr r0, _081246E4 @ =gStringVar1 ldrb r1, [r1, 0x14] bl GetMapNameGeneric ldr r0, _081246E8 @ =gStringVar4 ldr r1, _081246EC @ =gUnknown_8417640 b _08124720 .align 2, 0 _081246E0: .4byte gSaveBlock1Ptr _081246E4: .4byte gStringVar1 _081246E8: .4byte gStringVar4 _081246EC: .4byte gUnknown_8417640 _081246F0: ldr r0, _08124738 @ =gSaveBlock1Ptr ldr r1, [r0] adds r0, r1, 0 adds r0, 0x24 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 lsls r0, 16 lsrs r0, 16 adds r1, 0x25 ldrb r1, [r1] lsls r1, 24 asrs r1, 24 lsls r1, 16 lsrs r1, 16 bl Overworld_GetMapHeaderByGroupAndId adds r1, r0, 0 ldr r0, _0812473C @ =gStringVar1 ldrb r1, [r1, 0x14] bl GetMapNameGeneric ldr r0, _08124740 @ =gStringVar4 ldr r1, _08124744 @ =gUnknown_8417615 _08124720: bl StringExpandPlaceholders adds r0, r6, 0 bl DisplayFieldMoveExitAreaMessage ldr r0, _08124748 @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0x86 lsls r1, 2 adds r0, r1 strh r4, [r0] b _081247B4 .align 2, 0 _08124738: .4byte gSaveBlock1Ptr _0812473C: .4byte gStringVar1 _08124740: .4byte gStringVar4 _08124744: .4byte gUnknown_8417615 _08124748: .4byte sPartyMenuInternal _0812474C: ldr r1, _08124754 @ =gPartyMenu ldr r0, _08124758 @ =sub_80C4EF8 str r0, [r1] b _08124778 .align 2, 0 _08124754: .4byte gPartyMenu _08124758: .4byte sub_80C4EF8 _0812475C: ldr r1, _08124780 @ =gPartyMenu ldr r0, _08124784 @ =CB2_ReturnToField str r0, [r1] bl GetCursorSelectionMonId lsls r0, 24 lsrs r0, 24 movs r1, 0x64 muls r0, r1 ldr r1, _08124788 @ =gPlayerParty adds r0, r1 adds r1, r4, 0 bl sub_8124BB0 _08124778: adds r0, r6, 0 bl Task_ClosePartyMenu b _081247B4 .align 2, 0 _08124780: .4byte gPartyMenu _08124784: .4byte CB2_ReturnToField _08124788: .4byte gPlayerParty _0812478C: cmp r4, 0 beq _0812479A cmp r4, 0x4 bne _081247A0 bl DisplayCantUseSurfMessage b _081247A6 _0812479A: bl DisplayCantUseFlashMessage b _081247A6 _081247A0: ldrb r0, [r5, 0x4] _081247A2: bl DisplayPartyMenuStdMessage _081247A6: ldr r0, _081247BC @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, _081247C0 @ =Task_CancelAfterAorBPress str r0, [r1] _081247B4: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081247BC: .4byte gTasks _081247C0: .4byte Task_CancelAfterAorBPress thumb_func_end CursorCB_FieldMove thumb_func_start DisplayFieldMoveExitAreaMessage DisplayFieldMoveExitAreaMessage: @ 81247C4 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _081247E8 @ =gStringVar4 movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _081247EC @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _081247F0 @ =Task_FieldMoveExitAreaYesNo str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _081247E8: .4byte gStringVar4 _081247EC: .4byte gTasks _081247F0: .4byte Task_FieldMoveExitAreaYesNo thumb_func_end DisplayFieldMoveExitAreaMessage thumb_func_start Task_FieldMoveExitAreaYesNo Task_FieldMoveExitAreaYesNo: @ 81247F4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08124818 bl PartyMenuDisplayYesNoMenu ldr r0, _08124820 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08124824 @ =Task_HandleFieldMoveExitAreaYesNoInput str r0, [r1] _08124818: pop {r4} pop {r0} bx r0 .align 2, 0 _08124820: .4byte gTasks _08124824: .4byte Task_HandleFieldMoveExitAreaYesNoInput thumb_func_end Task_FieldMoveExitAreaYesNo thumb_func_start Task_HandleFieldMoveExitAreaYesNoInput Task_HandleFieldMoveExitAreaYesNoInput: @ 8124828 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 beq _0812484E cmp r1, 0 bgt _08124848 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0812488C b _081248A2 _08124848: cmp r1, 0x1 beq _08124892 b _081248A2 _0812484E: ldr r1, _0812487C @ =gPartyMenu ldr r0, _08124880 @ =CB2_ReturnToField str r0, [r1] bl GetCursorSelectionMonId lsls r0, 24 lsrs r0, 24 movs r1, 0x64 muls r0, r1 ldr r1, _08124884 @ =gPlayerParty adds r0, r1 ldr r1, _08124888 @ =sPartyMenuInternal ldr r1, [r1] movs r2, 0x86 lsls r2, 2 adds r1, r2 ldrb r1, [r1] bl sub_8124BB0 adds r0, r4, 0 bl Task_ClosePartyMenu b _081248A2 .align 2, 0 _0812487C: .4byte gPartyMenu _08124880: .4byte CB2_ReturnToField _08124884: .4byte gPlayerParty _08124888: .4byte sPartyMenuInternal _0812488C: movs r0, 0x5 bl PlaySE _08124892: ldr r0, _081248A8 @ =gFieldCallback2 movs r1, 0 str r1, [r0] ldr r0, _081248AC @ =gPostMenuFieldCallback str r1, [r0] adds r0, r4, 0 bl Task_ReturnToChooseMonAfterText _081248A2: pop {r4} pop {r0} bx r0 .align 2, 0 _081248A8: .4byte gFieldCallback2 _081248AC: .4byte gPostMenuFieldCallback thumb_func_end Task_HandleFieldMoveExitAreaYesNoInput thumb_func_start FieldCallback_PrepareFadeInFromMenu FieldCallback_PrepareFadeInFromMenu: @ 81248B0 push {lr} bl sub_807DC00 ldr r0, _081248C4 @ =Task_FieldMoveWaitForFade movs r1, 0x8 bl CreateTask movs r0, 0x1 pop {r1} bx r1 .align 2, 0 _081248C4: .4byte Task_FieldMoveWaitForFade thumb_func_end FieldCallback_PrepareFadeInFromMenu thumb_func_start Task_FieldMoveWaitForFade Task_FieldMoveWaitForFade: @ 81248C8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsWeatherNotFadingIn lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _081248F4 bl GetFieldMoveMonSpecies ldr r1, _081248FC @ =gFieldEffectArguments lsls r0, 16 lsrs r0, 16 str r0, [r1] ldr r0, _08124900 @ =gPostMenuFieldCallback ldr r0, [r0] bl _call_via_r0 adds r0, r4, 0 bl DestroyTask _081248F4: pop {r4} pop {r0} bx r0 .align 2, 0 _081248FC: .4byte gFieldEffectArguments _08124900: .4byte gPostMenuFieldCallback thumb_func_end Task_FieldMoveWaitForFade thumb_func_start GetFieldMoveMonSpecies GetFieldMoveMonSpecies: @ 8124904 push {lr} ldr r0, _08124924 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08124928 @ =gPlayerParty adds r0, r1 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 pop {r1} bx r1 .align 2, 0 _08124924: .4byte gPartyMenu _08124928: .4byte gPlayerParty thumb_func_end GetFieldMoveMonSpecies thumb_func_start Task_CancelAfterAorBPress Task_CancelAfterAorBPress: @ 812492C push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, _08124950 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _08124946 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0812494C _08124946: adds r0, r2, 0 bl CursorCB_Cancel1 _0812494C: pop {r0} bx r0 .align 2, 0 _08124950: .4byte gMain thumb_func_end Task_CancelAfterAorBPress thumb_func_start DisplayCantUseFlashMessage DisplayCantUseFlashMessage: @ 8124954 push {lr} ldr r0, _0812496C @ =0x00000806 bl FlagGet lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124970 movs r0, 0xC bl DisplayPartyMenuStdMessage b _08124976 .align 2, 0 _0812496C: .4byte 0x00000806 _08124970: movs r0, 0xD bl DisplayPartyMenuStdMessage _08124976: pop {r0} bx r0 thumb_func_end DisplayCantUseFlashMessage thumb_func_start FieldCallback_Surf FieldCallback_Surf: @ 812497C push {lr} bl GetCursorSelectionMonId ldr r1, _08124994 @ =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] movs r0, 0x9 bl FieldEffectStart pop {r0} bx r0 .align 2, 0 _08124994: .4byte gFieldEffectArguments thumb_func_end FieldCallback_Surf thumb_func_start SetUpFieldMove_Surf SetUpFieldMove_Surf: @ 8124998 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_IsSemiDeepWater lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08124A00 bl PartyHasMonWithSurf lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124A00 bl IsPlayerFacingSurfableFishableWater lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124A00 ldr r1, _081249F0 @ =gFieldCallback2 ldr r0, _081249F4 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] ldr r1, _081249F8 @ =gPostMenuFieldCallback ldr r0, _081249FC @ =FieldCallback_Surf str r0, [r1] movs r0, 0x1 b _08124A02 .align 2, 0 _081249F0: .4byte gFieldCallback2 _081249F4: .4byte FieldCallback_PrepareFadeInFromMenu _081249F8: .4byte gPostMenuFieldCallback _081249FC: .4byte FieldCallback_Surf _08124A00: movs r0, 0 _08124A02: add sp, 0x4 pop {r4} pop {r1} bx r1 thumb_func_end SetUpFieldMove_Surf thumb_func_start DisplayCantUseSurfMessage DisplayCantUseSurfMessage: @ 8124A0C push {r4,lr} sub sp, 0x4 movs r0, 0x8 bl TestPlayerAvatarFlags lsls r0, 24 cmp r0, 0 beq _08124A24 movs r0, 0x9 bl DisplayPartyMenuStdMessage b _08124A82 _08124A24: 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_IsSemiDeepWater lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124A56 movs r0, 0xA bl DisplayPartyMenuStdMessage b _08124A82 _08124A56: ldr r0, _08124A78 @ =gSaveBlock1Ptr ldr r1, [r0] movs r0, 0x4 ldrsb r0, [r1, r0] cmp r0, 0x3 bne _08124A7C ldrb r0, [r1, 0x5] subs r0, 0x23 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _08124A7C movs r0, 0xB bl DisplayPartyMenuStdMessage b _08124A82 .align 2, 0 _08124A78: .4byte gSaveBlock1Ptr _08124A7C: movs r0, 0x8 bl DisplayPartyMenuStdMessage _08124A82: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end DisplayCantUseSurfMessage thumb_func_start SetUpFieldMove_Fly SetUpFieldMove_Fly: @ 8124A8C push {lr} ldr r0, _08124AA4 @ =gMapHeader ldrb r0, [r0, 0x17] bl Overworld_MapTypeAllowsTeleportAndFly lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08124AA8 movs r0, 0 b _08124AAA .align 2, 0 _08124AA4: .4byte gMapHeader _08124AA8: movs r0, 0x1 _08124AAA: pop {r1} bx r1 thumb_func_end SetUpFieldMove_Fly thumb_func_start CB2_ReturnToPartyMenuFromFlyMap CB2_ReturnToPartyMenuFromFlyMap: @ 8124AB0 push {lr} sub sp, 0xC movs r0, 0 str r0, [sp] ldr r0, _08124AD4 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08124AD8 @ =CB2_ReturnToStartMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0 movs r3, 0x1 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08124AD4: .4byte Task_HandleChooseMonInput _08124AD8: .4byte CB2_ReturnToStartMenu thumb_func_end CB2_ReturnToPartyMenuFromFlyMap thumb_func_start FieldCallback_Waterfall FieldCallback_Waterfall: @ 8124ADC push {lr} bl GetCursorSelectionMonId ldr r1, _08124AF4 @ =gFieldEffectArguments lsls r0, 24 lsrs r0, 24 str r0, [r1] movs r0, 0x2B bl FieldEffectStart pop {r0} bx r0 .align 2, 0 _08124AF4: .4byte gFieldEffectArguments thumb_func_end FieldCallback_Waterfall thumb_func_start SetUpFieldMove_Waterfall SetUpFieldMove_Waterfall: @ 8124AF8 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 _08124B54 bl IsPlayerSurfingNorth lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124B54 ldr r1, _08124B44 @ =gFieldCallback2 ldr r0, _08124B48 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] ldr r1, _08124B4C @ =gPostMenuFieldCallback ldr r0, _08124B50 @ =FieldCallback_Waterfall str r0, [r1] movs r0, 0x1 b _08124B56 .align 2, 0 _08124B44: .4byte gFieldCallback2 _08124B48: .4byte FieldCallback_PrepareFadeInFromMenu _08124B4C: .4byte gPostMenuFieldCallback _08124B50: .4byte FieldCallback_Waterfall _08124B54: movs r0, 0 _08124B56: add sp, 0x4 pop {r4} pop {r1} bx r1 thumb_func_end SetUpFieldMove_Waterfall thumb_func_start sub_8124B60 sub_8124B60: @ 8124B60 push {r4-r7,lr} adds r6, r0, 0 adds r4, r1, 0 adds r5, r2, 0 lsls r4, 16 lsrs r4, 16 lsls r5, 16 lsrs r5, 16 movs r0, 0x8 bl Alloc adds r7, r0, 0 adds r0, r6, 0 movs r1, 0x41 bl GetMonData strh r0, [r7, 0x4] strh r4, [r7] strh r5, [r7, 0x2] ldr r0, _08124B98 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x6 bne _08124B9C movs r0, 0xA adds r1, r7, 0 bl sub_8113550 b _08124BA4 .align 2, 0 _08124B98: .4byte gPartyMenu _08124B9C: movs r0, 0x9 adds r1, r7, 0 bl sub_8113550 _08124BA4: adds r0, r7, 0 bl Free pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8124B60 thumb_func_start sub_8124BB0 sub_8124BB0: @ 8124BB0 push {r4-r6,lr} adds r5, r0, 0 lsls r4, r1, 24 lsrs r4, 24 movs r0, 0x4 bl Alloc adds r6, r0, 0 adds r0, r5, 0 movs r1, 0x41 bl GetMonData strh r0, [r6] strb r4, [r6, 0x2] ldrb r0, [r6, 0x2] cmp r0, 0x7 beq _08124BDA cmp r0, 0x8 beq _08124BFC movs r0, 0xFF b _08124C00 _08124BDA: ldr r0, _08124BF8 @ =gSaveBlock1Ptr ldr r1, [r0] movs r0, 0x1C ldrsb r0, [r1, r0] lsls r0, 16 lsrs r0, 16 ldrb r1, [r1, 0x1D] lsls r1, 24 asrs r1, 24 lsls r1, 16 lsrs r1, 16 bl Overworld_GetMapHeaderByGroupAndId b _08124BFE .align 2, 0 _08124BF8: .4byte gSaveBlock1Ptr _08124BFC: ldr r0, _08124C18 @ =gMapHeader _08124BFE: ldrb r0, [r0, 0x14] _08124C00: strb r0, [r6, 0x3] movs r0, 0x24 adds r1, r6, 0 bl sub_8113550 adds r0, r6, 0 bl Free pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08124C18: .4byte gMapHeader thumb_func_end sub_8124BB0 thumb_func_start sub_8124C1C sub_8124C1C: @ 8124C1C push {r4,r5,lr} adds r5, r0, 0 movs r0, 0x8 bl Alloc adds r4, r0, 0 ldrb r0, [r5] strb r0, [r4] ldrb r0, [r5, 0x1] strb r0, [r4, 0x1] movs r0, 0 ldrsb r0, [r4, r0] lsls r0, 16 lsrs r0, 16 movs r1, 0x1 ldrsb r1, [r4, r1] lsls r1, 16 lsrs r1, 16 bl Overworld_GetMapHeaderByGroupAndId adds r5, r0, 0 adds r0, r4, 0 bl Free movs r0, 0x4 bl Alloc adds r4, r0, 0 bl GetCursorSelectionMonId lsls r0, 24 lsrs r0, 24 movs r1, 0x64 muls r0, r1 ldr r1, _08124C88 @ =gPlayerParty adds r0, r1 movs r1, 0x41 bl GetMonData strh r0, [r4] movs r0, 0x2 strb r0, [r4, 0x2] ldrb r0, [r5, 0x14] strb r0, [r4, 0x3] movs r0, 0x24 adds r1, r4, 0 bl sub_8113550 adds r0, r4, 0 bl Free pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08124C88: .4byte gPlayerParty thumb_func_end sub_8124C1C thumb_func_start CB2_ShowPartyMenuForItemUse CB2_ShowPartyMenuForItemUse: @ 8124C8C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r6, _08124CB4 @ =CB2_ReturnToBagMenu ldr r0, _08124CB8 @ =gMain ldr r1, _08124CBC @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08124CCC movs r0, 0x1 mov r8, r0 bl GetPartyLayoutFromBattleType lsls r0, 24 lsrs r7, r0, 24 b _08124CD2 .align 2, 0 _08124CB4: .4byte CB2_ReturnToBagMenu _08124CB8: .4byte gMain _08124CBC: .4byte 0x00000439 _08124CC0: ldr r0, _08124CC8 @ =gPartyMenu strb r5, [r0, 0x9] b _08124D16 .align 2, 0 _08124CC8: .4byte gPartyMenu _08124CCC: movs r1, 0 mov r8, r1 movs r7, 0 _08124CD2: ldr r4, _08124D30 @ =gSpecialVar_ItemId ldrh r0, [r4] bl GetItemEffectType lsls r0, 24 lsrs r0, 24 cmp r0, 0xA bne _08124D44 ldr r1, _08124D34 @ =gPartyMenu movs r0, 0 strb r0, [r1, 0x9] movs r5, 0 _08124CEA: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _08124D38 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08124D0C adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08124CC0 _08124D0C: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _08124CEA _08124D16: ldr r0, _08124D30 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 bne _08124D28 ldr r6, _08124D3C @ =sub_8124DB0 _08124D28: ldr r1, _08124D40 @ =Task_SetSacredAshCB movs r0, 0x7F b _08124D6A .align 2, 0 _08124D30: .4byte gSpecialVar_ItemId _08124D34: .4byte gPartyMenu _08124D38: .4byte gPlayerParty _08124D3C: .4byte sub_8124DB0 _08124D40: .4byte Task_SetSacredAshCB _08124D44: ldrh r0, [r4] bl GetPocketByItemId lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 beq _08124D5A cmp r0, 0x5 beq _08124D64 movs r0, 0x5 b _08124D68 _08124D5A: movs r0, 0x4 ldr r6, _08124D60 @ =sub_8124DA0 b _08124D68 .align 2, 0 _08124D60: .4byte sub_8124DA0 _08124D64: movs r0, 0x5 ldr r6, _08124D88 @ =sub_8124DB0 _08124D68: ldr r1, _08124D8C @ =Task_HandleChooseMonInput _08124D6A: str r0, [sp] str r1, [sp, 0x4] str r6, [sp, 0x8] mov r0, r8 adds r1, r7, 0 movs r2, 0x3 movs r3, 0x1 bl InitPartyMenu add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08124D88: .4byte sub_8124DB0 _08124D8C: .4byte Task_HandleChooseMonInput thumb_func_end CB2_ShowPartyMenuForItemUse thumb_func_start CB2_ReturnToBagMenu CB2_ReturnToBagMenu: @ 8124D90 push {lr} movs r0, 0xB movs r1, 0x3 movs r2, 0 bl GoToBagMenu pop {r0} bx r0 thumb_func_end CB2_ReturnToBagMenu thumb_func_start sub_8124DA0 sub_8124DA0: @ 8124DA0 push {lr} movs r0, 0x5 movs r1, 0 movs r2, 0xFF bl InitTMCase pop {r0} bx r0 thumb_func_end sub_8124DA0 thumb_func_start sub_8124DB0 sub_8124DB0: @ 8124DB0 push {lr} movs r0, 0x6 movs r1, 0 movs r2, 0xFF bl InitBerryPouch pop {r0} bx r0 thumb_func_end sub_8124DB0 thumb_func_start sub_8124DC0 sub_8124DC0: @ 8124DC0 push {lr} lsls r0, 24 lsrs r0, 24 ldr r1, _08124DD8 @ =sPartyMenuInternal ldr r2, [r1] ldr r1, _08124DDC @ =sub_8124DE0 str r1, [r2, 0x4] bl Task_ClosePartyMenu pop {r0} bx r0 .align 2, 0 _08124DD8: .4byte sPartyMenuInternal _08124DDC: .4byte sub_8124DE0 thumb_func_end sub_8124DC0 thumb_func_start sub_8124DE0 sub_8124DE0: @ 8124DE0 push {r4,lr} ldr r4, _08124E0C @ =gSpecialVar_ItemId ldrh r0, [r4] bl CheckIfItemIsTMHMOrEvolutionStone lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _08124E2C bl sub_8126C24 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124E18 ldr r0, _08124E10 @ =gPartyMenu ldrb r0, [r0, 0x9] ldrh r1, [r4] ldr r2, _08124E14 @ =ItemUseCB_EvolutionStone bl sub_811C540 b _08124E38 .align 2, 0 _08124E0C: .4byte gSpecialVar_ItemId _08124E10: .4byte gPartyMenu _08124E14: .4byte ItemUseCB_EvolutionStone _08124E18: ldr r2, _08124E28 @ =gPartyMenu ldrb r0, [r2, 0x9] ldrh r1, [r4] ldr r2, [r2] bl sub_811C5AC b _08124E38 .align 2, 0 _08124E28: .4byte gPartyMenu _08124E2C: ldr r0, _08124E40 @ =gPartyMenu ldrb r0, [r0, 0x9] ldrh r1, [r4] ldr r2, _08124E44 @ =sub_8124E48 bl sub_811C540 _08124E38: pop {r4} pop {r0} bx r0 .align 2, 0 _08124E40: .4byte gPartyMenu _08124E44: .4byte sub_8124E48 thumb_func_end sub_8124DE0 thumb_func_start sub_8124E48 sub_8124E48: @ 8124E48 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC ldr r7, _08124EBC @ =gSpecialVar_ItemId ldrh r0, [r7] bl ItemId_GetPocket lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 bne _08124EC8 bl sub_811D178 cmp r0, 0x1 bne _08124EC8 ldr r0, _08124EC0 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 movs r6, 0x64 adds r4, r0, 0 muls r4, r6 ldr r5, _08124EC4 @ =gPlayerParty adds r4, r5 ldrh r0, [r7] bl ItemIdToBattleMoveId adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 bl GiveMoveToMon mov r1, r8 movs r0, 0x9 ldrsb r0, [r1, r0] muls r0, r6 adds r0, r5 movs r1, 0x4 bl AdjustFriendship ldrh r1, [r7] movs r0, 0xA9 lsls r0, 1 cmp r1, r0 bhi _08124EB0 adds r0, r1, 0 movs r1, 0x1 bl RemoveBagItem _08124EB0: mov r1, r8 ldr r0, [r1] bl SetMainCallback2 b _08124EE6 .align 2, 0 _08124EBC: .4byte gSpecialVar_ItemId _08124EC0: .4byte gPartyMenu _08124EC4: .4byte gPlayerParty _08124EC8: ldr r2, _08124EF4 @ =gPartyMenu ldrb r0, [r2, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r3, [r2, 0x9] movs r1, 0x7F str r1, [sp] ldr r1, _08124EF8 @ =Task_SetSacredAshCB str r1, [sp, 0x4] ldr r1, [r2] str r1, [sp, 0x8] movs r1, 0xFF movs r2, 0 bl InitPartyMenu _08124EE6: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08124EF4: .4byte gPartyMenu _08124EF8: .4byte Task_SetSacredAshCB thumb_func_end sub_8124E48 thumb_func_start sub_8124EFC sub_8124EFC: @ 8124EFC push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC bl sub_811D178 cmp r0, 0x1 bne _08124F94 ldr r0, _08124F88 @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 adds r5, r1, 0 muls r5, r0 ldr r0, _08124F8C @ =gPlayerParty adds r5, r0 bl GetMoveSlotToReplace adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r1, r4, 0 adds r1, 0xD adds r0, r5, 0 bl GetMonData adds r6, r0, 0 lsls r6, 16 lsrs r6, 16 adds r0, r5, 0 adds r1, r4, 0 bl RemoveMonPPBonus ldr r7, _08124F90 @ =gSpecialVar_ItemId ldrh r0, [r7] bl ItemIdToBattleMoveId adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r5, 0 adds r2, r4, 0 bl SetMonMoveSlot adds r0, r5, 0 movs r1, 0x4 bl AdjustFriendship ldrh r2, [r7] movs r0, 0x4 adds r1, r5, 0 adds r3, r6, 0 bl ItemUse_SetQuestLogEvent ldrh r1, [r7] movs r0, 0xA9 lsls r0, 1 cmp r1, r0 bhi _08124F7C adds r0, r1, 0 movs r1, 0x1 bl RemoveBagItem _08124F7C: mov r1, r8 ldr r0, [r1] bl SetMainCallback2 b _08124FB2 .align 2, 0 _08124F88: .4byte gPartyMenu _08124F8C: .4byte gPlayerParty _08124F90: .4byte gSpecialVar_ItemId _08124F94: ldr r4, _08124FC0 @ =gPartyMenu ldrb r0, [r4, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r4, 0xB] ldrb r3, [r4, 0x9] movs r1, 0x7F str r1, [sp] ldr r1, _08124FC4 @ =Task_SetSacredAshCB str r1, [sp, 0x4] ldr r1, [r4] str r1, [sp, 0x8] movs r1, 0xFF bl InitPartyMenu _08124FB2: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08124FC0: .4byte gPartyMenu _08124FC4: .4byte Task_SetSacredAshCB thumb_func_end sub_8124EFC thumb_func_start Task_SetSacredAshCB Task_SetSacredAshCB: @ 8124FC8 push {lr} lsls r0, 24 lsrs r3, r0, 24 ldr r0, _08125000 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08124FFA ldr r0, _08125004 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _08124FEE ldr r0, _08125008 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _0812500C @ =CB2_SetUpExitToBattleScreen str r0, [r1, 0x4] _08124FEE: ldr r0, _08125010 @ =gItemUseCB ldr r1, _08125014 @ =Task_ClosePartyMenuAfterText ldr r2, [r0] adds r0, r3, 0 bl _call_via_r2 _08124FFA: pop {r0} bx r0 .align 2, 0 _08125000: .4byte gPaletteFade _08125004: .4byte gPartyMenu _08125008: .4byte sPartyMenuInternal _0812500C: .4byte CB2_SetUpExitToBattleScreen _08125010: .4byte gItemUseCB _08125014: .4byte Task_ClosePartyMenuAfterText thumb_func_end Task_SetSacredAshCB thumb_func_start IsHPRecoveryItem IsHPRecoveryItem: @ 8125018 push {lr} lsls r0, 16 lsrs r0, 16 cmp r0, 0xAF bne _08125034 ldr r0, _0812502C @ =gSaveBlock1Ptr ldr r0, [r0] ldr r1, _08125030 @ =0x00003108 adds r0, r1 b _0812503E .align 2, 0 _0812502C: .4byte gSaveBlock1Ptr _08125030: .4byte 0x00003108 _08125034: ldr r1, _0812504C @ =gItemEffectTable subs r0, 0xD lsls r0, 2 adds r0, r1 ldr r0, [r0] _0812503E: ldrb r1, [r0, 0x4] movs r0, 0x4 ands r0, r1 cmp r0, 0 bne _08125050 movs r0, 0 b _08125052 .align 2, 0 _0812504C: .4byte gItemEffectTable _08125050: movs r0, 0x1 _08125052: pop {r1} bx r1 thumb_func_end IsHPRecoveryItem thumb_func_start GetMedicineItemEffectMessage GetMedicineItemEffectMessage: @ 8125058 push {lr} lsls r0, 16 lsrs r0, 16 bl GetItemEffectType lsls r0, 24 lsrs r0, 24 subs r0, 0x3 cmp r0, 0x12 bls _0812506E b _08125204 _0812506E: lsls r0, 2 ldr r1, _08125078 @ =_0812507C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08125078: .4byte _0812507C .align 2, 0 _0812507C: .4byte _081250C8 .4byte _081250DC .4byte _081250F0 .4byte _08125104 .4byte _08125118 .4byte _0812512C .4byte _08125140 .4byte _08125204 .4byte _08125154 .4byte _08125178 .4byte _08125168 .4byte _081251A8 .4byte _081251B8 .4byte _08125198 .4byte _08125188 .4byte _08125204 .4byte _081251DC .4byte _081251DC .4byte _081251F0 _081250C8: ldr r0, _081250D4 @ =gStringVar4 ldr r1, _081250D8 @ =gText_PkmnCuredOfPoison bl StringExpandPlaceholders b _0812520C .align 2, 0 _081250D4: .4byte gStringVar4 _081250D8: .4byte gText_PkmnCuredOfPoison _081250DC: ldr r0, _081250E8 @ =gStringVar4 ldr r1, _081250EC @ =gText_PkmnWokeUp2 bl StringExpandPlaceholders b _0812520C .align 2, 0 _081250E8: .4byte gStringVar4 _081250EC: .4byte gText_PkmnWokeUp2 _081250F0: ldr r0, _081250FC @ =gStringVar4 ldr r1, _08125100 @ =gText_PkmnBurnHealed bl StringExpandPlaceholders b _0812520C .align 2, 0 _081250FC: .4byte gStringVar4 _08125100: .4byte gText_PkmnBurnHealed _08125104: ldr r0, _08125110 @ =gStringVar4 ldr r1, _08125114 @ =gText_PkmnThawedOut bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125110: .4byte gStringVar4 _08125114: .4byte gText_PkmnThawedOut _08125118: ldr r0, _08125124 @ =gStringVar4 ldr r1, _08125128 @ =gText_PkmnCuredOfParalysis bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125124: .4byte gStringVar4 _08125128: .4byte gText_PkmnCuredOfParalysis _0812512C: ldr r0, _08125138 @ =gStringVar4 ldr r1, _0812513C @ =gText_PkmnSnappedOutOfConfusion bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125138: .4byte gStringVar4 _0812513C: .4byte gText_PkmnSnappedOutOfConfusion _08125140: ldr r0, _0812514C @ =gStringVar4 ldr r1, _08125150 @ =gText_PkmnGotOverInfatuation bl StringExpandPlaceholders b _0812520C .align 2, 0 _0812514C: .4byte gStringVar4 _08125150: .4byte gText_PkmnGotOverInfatuation _08125154: ldr r0, _08125160 @ =gStringVar4 ldr r1, _08125164 @ =gText_PkmnBecameHealthy bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125160: .4byte gStringVar4 _08125164: .4byte gText_PkmnBecameHealthy _08125168: ldr r0, _08125170 @ =gStringVar2 ldr r1, _08125174 @ =gText_HP3 b _081251BC .align 2, 0 _08125170: .4byte gStringVar2 _08125174: .4byte gText_HP3 _08125178: ldr r0, _08125180 @ =gStringVar2 ldr r1, _08125184 @ =gText_Attack3 b _081251BC .align 2, 0 _08125180: .4byte gStringVar2 _08125184: .4byte gText_Attack3 _08125188: ldr r0, _08125190 @ =gStringVar2 ldr r1, _08125194 @ =gText_Defense3 b _081251BC .align 2, 0 _08125190: .4byte gStringVar2 _08125194: .4byte gText_Defense3 _08125198: ldr r0, _081251A0 @ =gStringVar2 ldr r1, _081251A4 @ =gText_Speed2 b _081251BC .align 2, 0 _081251A0: .4byte gStringVar2 _081251A4: .4byte gText_Speed2 _081251A8: ldr r0, _081251B0 @ =gStringVar2 ldr r1, _081251B4 @ =gText_SpAtk3 b _081251BC .align 2, 0 _081251B0: .4byte gStringVar2 _081251B4: .4byte gText_SpAtk3 _081251B8: ldr r0, _081251CC @ =gStringVar2 ldr r1, _081251D0 @ =gText_SpDef3 _081251BC: bl StringCopy ldr r0, _081251D4 @ =gStringVar4 ldr r1, _081251D8 @ =gText_PkmnBaseVar2StatIncreased bl StringExpandPlaceholders b _0812520C .align 2, 0 _081251CC: .4byte gStringVar2 _081251D0: .4byte gText_SpDef3 _081251D4: .4byte gStringVar4 _081251D8: .4byte gText_PkmnBaseVar2StatIncreased _081251DC: ldr r0, _081251E8 @ =gStringVar4 ldr r1, _081251EC @ =gText_MovesPPIncreased bl StringExpandPlaceholders b _0812520C .align 2, 0 _081251E8: .4byte gStringVar4 _081251EC: .4byte gText_MovesPPIncreased _081251F0: ldr r0, _081251FC @ =gStringVar4 ldr r1, _08125200 @ =gText_PPWasRestored bl StringExpandPlaceholders b _0812520C .align 2, 0 _081251FC: .4byte gStringVar4 _08125200: .4byte gText_PPWasRestored _08125204: ldr r0, _08125210 @ =gStringVar4 ldr r1, _08125214 @ =gText_WontHaveEffect bl StringExpandPlaceholders _0812520C: pop {r0} bx r0 .align 2, 0 _08125210: .4byte gStringVar4 _08125214: .4byte gText_WontHaveEffect thumb_func_end GetMedicineItemEffectMessage thumb_func_start NotUsingHPEVItemOnShedinja NotUsingHPEVItemOnShedinja: @ 8125218 push {r4,lr} adds r4, r0, 0 lsls r0, r1, 16 lsrs r0, 16 bl GetItemEffectType lsls r0, 24 lsrs r0, 24 cmp r0, 0xD bne _08125244 adds r0, r4, 0 movs r1, 0xB bl GetMonData ldr r1, _08125240 @ =0x0000012f cmp r0, r1 bne _08125244 movs r0, 0 b _08125246 .align 2, 0 _08125240: .4byte 0x0000012f _08125244: movs r0, 0x1 _08125246: pop {r4} pop {r1} bx r1 thumb_func_end NotUsingHPEVItemOnShedinja thumb_func_start IsItemFlute IsItemFlute: @ 812524C push {lr} lsls r0, 16 lsrs r0, 16 cmp r0, 0x27 beq _0812525E cmp r0, 0x29 beq _0812525E cmp r0, 0x28 bne _08125262 _0812525E: movs r0, 0x1 b _08125264 _08125262: movs r0, 0 _08125264: pop {r1} bx r1 thumb_func_end IsItemFlute thumb_func_start ExecuteTableBasedItemEffect_ ExecuteTableBasedItemEffect_: @ 8125268 push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 lsls r1, 16 lsrs r5, r1, 16 lsls r2, 24 lsrs r6, r2, 24 ldr r0, _08125294 @ =gMain ldr r1, _08125298 @ =0x00000439 adds r0, r1 ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _081252A0 movs r0, 0x64 muls r0, r3 ldr r1, _0812529C @ =gPlayerParty adds r0, r1 adds r1, r5, 0 adds r2, r3, 0 b _081252BA .align 2, 0 _08125294: .4byte gMain _08125298: .4byte 0x00000439 _0812529C: .4byte gPlayerParty _081252A0: movs r0, 0x64 adds r4, r3, 0 muls r4, r0 ldr r0, _081252CC @ =gPlayerParty adds r4, r0 adds r0, r3, 0 bl GetPartyIdFromBattleSlot adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r5, 0 _081252BA: adds r3, r6, 0 bl ExecuteTableBasedItemEffect lsls r0, 24 lsrs r0, 24 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _081252CC: .4byte gPlayerParty thumb_func_end ExecuteTableBasedItemEffect_ thumb_func_start sub_81252D0 sub_81252D0: @ 81252D0 push {r4-r7,lr} mov r7, r8 push {r7} mov r8, r1 lsls r0, 24 lsrs r7, r0, 24 ldr r0, _08125300 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08125304 @ =gPlayerParty adds r5, r1, r0 ldr r0, _08125308 @ =gSpecialVar_ItemId ldrh r6, [r0] adds r0, r5, 0 adds r1, r6, 0 bl NotUsingHPEVItemOnShedinja lsls r0, 24 cmp r0, 0 bne _0812530C movs r4, 0x1 b _08125342 .align 2, 0 _08125300: .4byte gPartyMenu _08125304: .4byte gPlayerParty _08125308: .4byte gSpecialVar_ItemId _0812530C: adds r0, r6, 0 bl IsHPRecoveryItem lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08125330 adds r0, r5, 0 movs r1, 0x39 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 adds r0, r5, 0 movs r1, 0x3A bl GetMonData _08125330: ldr r0, _08125370 @ =gPartyMenu ldrb r2, [r0, 0x9] adds r0, r5, 0 adds r1, r6, 0 movs r3, 0 bl PokemonUseItemEffects2 lsls r0, 24 lsrs r4, r0, 24 _08125342: movs r0, 0x5 bl PlaySE cmp r4, 0 beq _08125380 ldr r1, _08125374 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] ldr r0, _08125378 @ =gText_WontHaveEffect movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _0812537C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 mov r1, r8 str r1, [r0] b _08125398 .align 2, 0 _08125370: .4byte gPartyMenu _08125374: .4byte gPartyMenuUseExitCallback _08125378: .4byte gText_WontHaveEffect _0812537C: .4byte gTasks _08125380: ldr r3, _081253A4 @ =0x0000ffff movs r0, 0x4 adds r1, r5, 0 adds r2, r6, 0 bl ItemUse_SetQuestLogEvent adds r0, r7, 0 bl sub_8124DC0 ldr r1, _081253A8 @ =gItemUseCB ldr r0, _081253AC @ =ItemUseCB_Medicine str r0, [r1] _08125398: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081253A4: .4byte 0x0000ffff _081253A8: .4byte gItemUseCB _081253AC: .4byte ItemUseCB_Medicine thumb_func_end sub_81252D0 thumb_func_start ItemUseCB_Medicine ItemUseCB_Medicine: @ 81253B0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 str r1, [sp, 0x4] lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r0, 0 mov r10, r0 ldr r0, _08125438 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r1, r0 ldr r0, _0812543C @ =gPlayerParty adds r5, r1, r0 ldr r0, _08125440 @ =gSpecialVar_ItemId ldrh r6, [r0] adds r0, r5, 0 adds r1, r6, 0 bl NotUsingHPEVItemOnShedinja lsls r0, 24 cmp r0, 0 beq _08125428 adds r0, r6, 0 bl IsHPRecoveryItem lsls r0, 24 lsrs r0, 24 mov r8, r0 cmp r0, 0x1 bne _08125416 adds r0, r5, 0 movs r1, 0x39 bl GetMonData lsls r0, 16 lsrs r0, 16 mov r10, r0 adds r0, r5, 0 movs r1, 0x3A bl GetMonData cmp r10, r0 bne _08125416 movs r1, 0 mov r8, r1 _08125416: ldr r4, _08125438 @ =gPartyMenu ldrb r0, [r4, 0x9] adds r1, r6, 0 movs r2, 0 bl ExecuteTableBasedItemEffect_ lsls r0, 24 cmp r0, 0 beq _0812544C _08125428: ldr r1, _08125444 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] movs r0, 0x5 bl PlaySE ldr r0, _08125448 @ =gText_WontHaveEffect b _0812551C .align 2, 0 _08125438: .4byte gPartyMenu _0812543C: .4byte gPlayerParty _08125440: .4byte gSpecialVar_ItemId _08125444: .4byte gPartyMenuUseExitCallback _08125448: .4byte gText_WontHaveEffect _0812544C: ldr r1, _08125474 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] adds r0, r6, 0 bl IsItemFlute lsls r0, 24 cmp r0, 0 bne _08125478 movs r0, 0x1 bl PlaySE ldrb r0, [r4, 0xB] cmp r0, 0xE beq _0812547E adds r0, r6, 0 movs r1, 0x1 bl RemoveBagItem b _0812547E .align 2, 0 _08125474: .4byte gPartyMenuUseExitCallback _08125478: movs r0, 0x6E bl PlaySE _0812547E: ldr r4, _081254FC @ =sPartyMenuBoxes ldr r7, _08125500 @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r7, r0] lsls r0, 4 ldr r1, [r4] adds r1, r0 adds r0, r5, 0 bl SetPartyMonAilmentGfx ldr r2, _08125504 @ =gSprites movs r0, 0x9 ldrsb r0, [r7, r0] ldr r1, [r4] lsls r0, 4 adds r3, r0, r1 ldrb r1, [r3, 0xC] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _081254BC adds r0, r5, 0 adds r1, r3, 0 movs r2, 0x1 bl DisplayPartyPokemonLevelCheck _081254BC: mov r2, r8 cmp r2, 0x1 bne _0812550C mov r0, r10 cmp r0, 0 bne _081254D0 ldrb r0, [r7, 0x9] movs r1, 0x1 bl AnimatePartySlot _081254D0: adds r0, r5, 0 movs r1, 0x39 bl GetMonData adds r3, r0, 0 mov r1, r10 subs r3, r1 lsls r3, 16 asrs r3, 16 ldrb r1, [r7, 0x9] ldr r0, _08125508 @ =Task_DisplayHPRestoredMessage str r0, [sp] mov r0, r9 movs r2, 0x1 bl PartyMenuModifyHP mov r0, r9 movs r1, 0 mov r2, r10 bl ResetHPTaskData b _08125538 .align 2, 0 _081254FC: .4byte sPartyMenuBoxes _08125500: .4byte gPartyMenu _08125504: .4byte gSprites _08125508: .4byte Task_DisplayHPRestoredMessage _0812550C: ldr r1, _08125548 @ =gStringVar1 adds r0, r5, 0 bl GetMonNickname adds r0, r6, 0 bl GetMedicineItemEffectMessage ldr r0, _0812554C @ =gStringVar4 _0812551C: movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125550 @ =gTasks mov r2, r9 lsls r0, r2, 2 add r0, r9 lsls r0, 3 adds r0, r1 ldr r1, [sp, 0x4] str r1, [r0] _08125538: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08125548: .4byte gStringVar1 _0812554C: .4byte gStringVar4 _08125550: .4byte gTasks thumb_func_end ItemUseCB_Medicine thumb_func_start Task_DisplayHPRestoredMessage Task_DisplayHPRestoredMessage: @ 8125554 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _081255A0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _081255A4 @ =gPlayerParty adds r0, r1 ldr r1, _081255A8 @ =gStringVar1 bl GetMonNickname ldr r4, _081255AC @ =gStringVar4 ldr r1, _081255B0 @ =gText_PkmnHPRestoredByVar2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram bl HandleBattleLowHpMusicChange ldr r1, _081255B4 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _081255B8 @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081255A0: .4byte gPartyMenu _081255A4: .4byte gPlayerParty _081255A8: .4byte gStringVar1 _081255AC: .4byte gStringVar4 _081255B0: .4byte gText_PkmnHPRestoredByVar2 _081255B4: .4byte gTasks _081255B8: .4byte Task_ClosePartyMenuAfterText thumb_func_end Task_DisplayHPRestoredMessage thumb_func_start Task_ClosePartyMenuAfterText Task_ClosePartyMenuAfterText: @ 81255BC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081255E2 ldr r0, _081255E8 @ =gPartyMenuUseExitCallback ldrb r1, [r0] cmp r1, 0 bne _081255DC ldr r0, _081255EC @ =sPartyMenuInternal ldr r0, [r0] str r1, [r0, 0x4] _081255DC: adds r0, r4, 0 bl Task_ClosePartyMenu _081255E2: pop {r4} pop {r0} bx r0 .align 2, 0 _081255E8: .4byte gPartyMenuUseExitCallback _081255EC: .4byte sPartyMenuInternal thumb_func_end Task_ClosePartyMenuAfterText thumb_func_start ShowMoveSelectWindow ShowMoveSelectWindow: @ 81255F0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0 mov r10, r0 movs r1, 0x2 mov r8, r1 movs r0, 0x3 bl DisplaySelectionWindow lsls r0, 24 lsrs r0, 24 mov r9, r0 movs r6, 0 movs r0, 0x64 adds r2, r4, 0 muls r2, r0 str r2, [sp, 0xC] _08125620: ldr r0, _081256B8 @ =gPlayerParty adds r1, r6, 0 adds r1, 0xD ldr r2, [sp, 0xC] adds r0, r2, r0 bl GetMonData adds r5, r0, 0 lsls r5, 16 lsrs r5, 16 mov r0, r8 movs r1, 0 bl GetFontAttribute adds r4, r0, 0 mov r0, r8 movs r1, 0x2 bl GetFontAttribute adds r4, r0 lsls r4, 24 lsrs r4, 24 movs r0, 0xD adds r2, r5, 0 muls r2, r0 ldr r0, _081256BC @ =gMoveNames adds r2, r0 lsls r0, r6, 4 adds r0, 0x2 lsls r0, 24 lsrs r0, 24 str r0, [sp] movs r0, 0xFF str r0, [sp, 0x4] movs r7, 0 str r7, [sp, 0x8] mov r0, r9 mov r1, r8 adds r3, r4, 0 bl AddTextPrinterParameterized cmp r5, 0 beq _08125680 mov r0, r10 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r10, r0 _08125680: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x3 bls _08125620 movs r0, 0x10 str r0, [sp] mov r0, r10 str r0, [sp, 0x4] str r7, [sp, 0x8] mov r0, r9 mov r1, r8 movs r2, 0 movs r3, 0x2 bl Menu_InitCursor movs r0, 0x2 bl ScheduleBgCopyTilemapToVram add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081256B8: .4byte gPlayerParty _081256BC: .4byte gMoveNames thumb_func_end ShowMoveSelectWindow thumb_func_start Task_HandleWhichMoveInput Task_HandleWhichMoveInput: @ 81256C0 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 bl Menu_ProcessInput lsls r0, 24 asrs r1, r0, 24 movs r0, 0x2 negs r0, r0 cmp r1, r0 beq _081256F2 adds r0, 0x1 cmp r1, r0 bne _081256EC movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl ReturnToUseOnWhichMon b _081256F2 _081256EC: adds r0, r5, 0 bl SetSelectedMoveForPPItem _081256F2: pop {r4,r5} pop {r0} bx r0 thumb_func_end Task_HandleWhichMoveInput thumb_func_start ItemUseCB_PPRecovery ItemUseCB_PPRecovery: @ 81256F8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08125710 @ =gSpecialVar_ItemId ldrh r0, [r0] cmp r0, 0xAF bne _0812571C ldr r0, _08125714 @ =gSaveBlock1Ptr ldr r0, [r0] ldr r1, _08125718 @ =0x00003108 adds r0, r1 b _08125726 .align 2, 0 _08125710: .4byte gSpecialVar_ItemId _08125714: .4byte gSaveBlock1Ptr _08125718: .4byte 0x00003108 _0812571C: ldr r1, _0812574C @ =gItemEffectTable subs r0, 0xD lsls r0, 2 adds r0, r1 ldr r0, [r0] _08125726: ldrb r1, [r0, 0x4] movs r0, 0x10 ands r0, r1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _0812575C ldr r0, _08125750 @ =gPartyMenu strh r1, [r0, 0xE] ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _08125754 adds r0, r4, 0 bl TryUsePPItem b _0812577E .align 2, 0 _0812574C: .4byte gItemEffectTable _08125750: .4byte gPartyMenu _08125754: adds r0, r4, 0 bl sub_812580C b _0812577E _0812575C: movs r0, 0x5 bl PlaySE movs r0, 0x17 bl DisplayPartyMenuStdMessage ldr r0, _08125784 @ =gPartyMenu ldrb r0, [r0, 0x9] bl ShowMoveSelectWindow ldr r1, _08125788 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0812578C @ =Task_HandleWhichMoveInput str r1, [r0] _0812577E: pop {r4} pop {r0} bx r0 .align 2, 0 _08125784: .4byte gPartyMenu _08125788: .4byte gTasks _0812578C: .4byte Task_HandleWhichMoveInput thumb_func_end ItemUseCB_PPRecovery thumb_func_start SetSelectedMoveForPPItem SetSelectedMoveForPPItem: @ 8125790 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _081257C0 @ =sPartyMenuInternal ldr r0, [r0] adds r0, 0xC bl PartyMenuRemoveWindow bl Menu_GetCursorPos ldr r1, _081257C4 @ =gPartyMenu lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0xE] ldrb r1, [r1, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _081257C8 adds r0, r4, 0 bl TryUsePPItem b _081257CE .align 2, 0 _081257C0: .4byte sPartyMenuInternal _081257C4: .4byte gPartyMenu _081257C8: adds r0, r4, 0 bl sub_812580C _081257CE: pop {r4} pop {r0} bx r0 thumb_func_end SetSelectedMoveForPPItem thumb_func_start ReturnToUseOnWhichMon ReturnToUseOnWhichMon: @ 81257D4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _08125800 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, _08125804 @ =Task_HandleChooseMonInput str r0, [r1] ldr r0, _08125808 @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0 str r1, [r0, 0x4] adds r0, 0xC bl PartyMenuRemoveWindow movs r0, 0x5 bl DisplayPartyMenuStdMessage pop {r0} bx r0 .align 2, 0 _08125800: .4byte gTasks _08125804: .4byte Task_HandleChooseMonInput _08125808: .4byte sPartyMenuInternal thumb_func_end ReturnToUseOnWhichMon thumb_func_start sub_812580C sub_812580C: @ 812580C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r3, _08125860 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r3, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08125864 @ =gPlayerParty adds r0, r1 ldr r1, _08125868 @ =gSpecialVar_ItemId ldrh r1, [r1] ldrb r2, [r3, 0x9] ldrb r3, [r3, 0xE] bl PokemonUseItemEffects2 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE cmp r4, 0 beq _0812587C ldr r1, _0812586C @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] ldr r0, _08125870 @ =gText_WontHaveEffect movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125874 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _08125878 @ =Task_ClosePartyMenuAfterText str r1, [r0] b _08125888 .align 2, 0 _08125860: .4byte gPartyMenu _08125864: .4byte gPlayerParty _08125868: .4byte gSpecialVar_ItemId _0812586C: .4byte gPartyMenuUseExitCallback _08125870: .4byte gText_WontHaveEffect _08125874: .4byte gTasks _08125878: .4byte Task_ClosePartyMenuAfterText _0812587C: adds r0, r5, 0 bl sub_8124DC0 ldr r1, _08125890 @ =gItemUseCB ldr r0, _08125894 @ =sub_8125898 str r0, [r1] _08125888: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08125890: .4byte gItemUseCB _08125894: .4byte sub_8125898 thumb_func_end sub_812580C thumb_func_start sub_8125898 sub_8125898: @ 8125898 push {r4-r6,lr} mov r6, r8 push {r6} mov r8, r0 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r5, _08125930 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r5, r1] movs r0, 0x64 adds r4, r1, 0 muls r4, r0 ldr r0, _08125934 @ =gPlayerParty adds r4, r0 ldrb r0, [r5, 0x9] ldr r6, _08125938 @ =gSpecialVar_ItemId ldrh r1, [r6] ldrb r2, [r5, 0xE] bl ExecuteTableBasedItemEffect_ ldr r1, _0812593C @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldrh r2, [r6] ldr r3, _08125940 @ =0x0000ffff movs r0, 0x4 adds r1, r4, 0 bl ItemUse_SetQuestLogEvent movs r0, 0x1 bl PlaySE ldrh r0, [r6] movs r1, 0x1 bl RemoveBagItem movs r2, 0xE ldrsh r1, [r5, r2] adds r1, 0xD adds r0, r4, 0 bl GetMonData lsls r0, 16 lsrs r0, 16 ldr r2, _08125944 @ =gStringVar1 movs r1, 0xD muls r1, r0 ldr r0, _08125948 @ =gMoveNames adds r1, r0 adds r0, r2, 0 bl StringCopy ldrh r0, [r6] bl GetMedicineItemEffectMessage ldr r0, _0812594C @ =gStringVar4 movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125950 @ =gTasks mov r2, r8 lsls r0, r2, 2 add r0, r8 lsls r0, 3 adds r0, r1 ldr r1, _08125954 @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08125930: .4byte gPartyMenu _08125934: .4byte gPlayerParty _08125938: .4byte gSpecialVar_ItemId _0812593C: .4byte gPartyMenuUseExitCallback _08125940: .4byte 0x0000ffff _08125944: .4byte gStringVar1 _08125948: .4byte gMoveNames _0812594C: .4byte gStringVar4 _08125950: .4byte gTasks _08125954: .4byte Task_ClosePartyMenuAfterText thumb_func_end sub_8125898 thumb_func_start TryUsePPItem TryUsePPItem: @ 8125958 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 ldr r7, _08125990 @ =gPartyMenu + 14 ldr r0, _08125994 @ =gSpecialVar_ItemId ldrh r5, [r0] movs r0, 0xE negs r0, r0 adds r0, r7 mov r8, r0 ldrb r0, [r0, 0x9] ldrb r2, [r7] adds r1, r5, 0 bl ExecuteTableBasedItemEffect_ lsls r0, 24 cmp r0, 0 beq _081259A0 ldr r0, _08125998 @ =gPartyMenuUseExitCallback strb r4, [r0] movs r0, 0x5 bl PlaySE ldr r0, _0812599C @ =gText_WontHaveEffect b _081259F6 .align 2, 0 _08125990: .4byte gPartyMenu + 14 _08125994: .4byte gSpecialVar_ItemId _08125998: .4byte gPartyMenuUseExitCallback _0812599C: .4byte gText_WontHaveEffect _081259A0: ldr r1, _08125A1C @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] mov r0, r8 movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 adds r4, r1, 0 muls r4, r0 ldr r0, _08125A20 @ =gPlayerParty adds r4, r0 ldr r3, _08125A24 @ =0x0000ffff movs r0, 0x4 adds r1, r4, 0 adds r2, r5, 0 bl ItemUse_SetQuestLogEvent movs r0, 0x1 bl PlaySE adds r0, r5, 0 movs r1, 0x1 bl RemoveBagItem movs r0, 0 ldrsh r1, [r7, r0] adds r1, 0xD adds r0, r4, 0 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 ldr r0, _08125A28 @ =gStringVar1 movs r1, 0xD muls r1, r4 ldr r2, _08125A2C @ =gMoveNames adds r1, r2 bl StringCopy adds r0, r5, 0 bl GetMedicineItemEffectMessage ldr r0, _08125A30 @ =gStringVar4 _081259F6: movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125A34 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08125A38 @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08125A1C: .4byte gPartyMenuUseExitCallback _08125A20: .4byte gPlayerParty _08125A24: .4byte 0x0000ffff _08125A28: .4byte gStringVar1 _08125A2C: .4byte gMoveNames _08125A30: .4byte gStringVar4 _08125A34: .4byte gTasks _08125A38: .4byte Task_ClosePartyMenuAfterText thumb_func_end TryUsePPItem thumb_func_start ItemUseCB_PPUp ItemUseCB_PPUp: @ 8125A3C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE movs r0, 0x18 bl DisplayPartyMenuStdMessage ldr r0, _08125A6C @ =gPartyMenu ldrb r0, [r0, 0x9] bl ShowMoveSelectWindow ldr r1, _08125A70 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08125A74 @ =Task_HandleWhichMoveInput str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08125A6C: .4byte gPartyMenu _08125A70: .4byte gTasks _08125A74: .4byte Task_HandleWhichMoveInput thumb_func_end ItemUseCB_PPUp thumb_func_start ItemIdToBattleMoveId ItemIdToBattleMoveId: @ 8125A78 lsls r0, 16 ldr r1, _08125A88 @ =0xfedf0000 adds r0, r1 ldr r1, _08125A8C @ =sTMHMMoves lsrs r0, 15 adds r0, r1 ldrh r0, [r0] bx lr .align 2, 0 _08125A88: .4byte 0xfedf0000 _08125A8C: .4byte sTMHMMoves thumb_func_end ItemIdToBattleMoveId thumb_func_start IsMoveHm IsMoveHm: @ 8125A90 push {lr} lsls r0, 16 lsrs r2, r0, 16 movs r1, 0 ldr r3, _08125AAC @ =sTMHMMoves _08125A9A: adds r0, r1, 0 adds r0, 0x32 lsls r0, 1 adds r0, r3 ldrh r0, [r0] cmp r0, r2 bne _08125AB0 movs r0, 0x1 b _08125ABC .align 2, 0 _08125AAC: .4byte sTMHMMoves _08125AB0: adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x6 bls _08125A9A movs r0, 0 _08125ABC: pop {r1} bx r1 thumb_func_end IsMoveHm thumb_func_start MonKnowsMove MonKnowsMove: @ 8125AC0 push {r4-r6,lr} adds r6, r0, 0 lsls r1, 16 lsrs r5, r1, 16 movs r4, 0 _08125ACA: adds r1, r4, 0 adds r1, 0xD adds r0, r6, 0 bl GetMonData cmp r0, r5 bne _08125ADC movs r0, 0x1 b _08125AE8 _08125ADC: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3 bls _08125ACA movs r0, 0 _08125AE8: pop {r4-r6} pop {r1} bx r1 thumb_func_end MonKnowsMove thumb_func_start DisplayLearnMoveMessage DisplayLearnMoveMessage: @ 8125AF0 push {r4,lr} adds r1, r0, 0 ldr r4, _08125B10 @ =gStringVar4 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram pop {r4} pop {r0} bx r0 .align 2, 0 _08125B10: .4byte gStringVar4 thumb_func_end DisplayLearnMoveMessage thumb_func_start DisplayLearnMoveMessageAndClose DisplayLearnMoveMessageAndClose: @ 8125B14 push {r4,lr} adds r4, r0, 0 adds r0, r1, 0 lsls r4, 24 lsrs r4, 24 bl DisplayLearnMoveMessage ldr r1, _08125B38 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08125B3C @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08125B38: .4byte gTasks _08125B3C: .4byte Task_ClosePartyMenuAfterText thumb_func_end DisplayLearnMoveMessageAndClose thumb_func_start ItemUseCB_TMHM ItemUseCB_TMHM: @ 8125B40 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x5 bl PlaySE ldr r7, _08125BD0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08125BD4 @ =gPlayerParty adds r4, r1, r0 movs r0, 0xE adds r0, r7 mov r8, r0 ldr r0, _08125BD8 @ =gSpecialVar_ItemId ldrh r5, [r0] ldr r1, _08125BDC @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname adds r0, r5, 0 bl ItemIdToBattleMoveId strh r0, [r7, 0xE] ldr r0, _08125BE0 @ =gStringVar2 movs r1, 0xE ldrsh r2, [r7, r1] movs r1, 0xD muls r1, r2 ldr r2, _08125BE4 @ =gMoveNames adds r1, r2 bl StringCopy movs r0, 0 mov r1, r8 strh r0, [r1, 0x2] adds r0, r4, 0 adds r1, r5, 0 movs r2, 0 bl CanMonLearnTMTutor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08125BF4 cmp r0, 0x2 beq _08125BFC ldrh r1, [r7, 0xE] adds r0, r4, 0 bl GiveMoveToMon lsls r0, 16 lsrs r0, 16 ldr r3, _08125BE8 @ =0x0000ffff cmp r0, r3 beq _08125C0C movs r0, 0x4 adds r1, r4, 0 adds r2, r5, 0 bl ItemUse_SetQuestLogEvent adds r0, r6, 0 bl sub_8124DC0 ldr r1, _08125BEC @ =gItemUseCB ldr r0, _08125BF0 @ =Task_LearnedMove_ str r0, [r1] b _08125C20 .align 2, 0 _08125BD0: .4byte gPartyMenu _08125BD4: .4byte gPlayerParty _08125BD8: .4byte gSpecialVar_ItemId _08125BDC: .4byte gStringVar1 _08125BE0: .4byte gStringVar2 _08125BE4: .4byte gMoveNames _08125BE8: .4byte 0x0000ffff _08125BEC: .4byte gItemUseCB _08125BF0: .4byte Task_LearnedMove_ _08125BF4: ldr r1, _08125BF8 @ =gText_PkmnCantLearnMove b _08125BFE .align 2, 0 _08125BF8: .4byte gText_PkmnCantLearnMove _08125BFC: ldr r1, _08125C08 @ =gText_PkmnAlreadyKnows _08125BFE: adds r0, r6, 0 bl DisplayLearnMoveMessageAndClose b _08125C20 .align 2, 0 _08125C08: .4byte gText_PkmnAlreadyKnows _08125C0C: ldr r0, _08125C2C @ =gText_PkmnNeedsToReplaceMove bl DisplayLearnMoveMessage ldr r1, _08125C30 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08125C34 @ =Task_ReplaceMoveYesNo str r1, [r0] _08125C20: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08125C2C: .4byte gText_PkmnNeedsToReplaceMove _08125C30: .4byte gTasks _08125C34: .4byte Task_ReplaceMoveYesNo thumb_func_end ItemUseCB_TMHM thumb_func_start Task_LearnedMove_ Task_LearnedMove_: @ 8125C38 push {lr} lsls r0, 24 lsrs r0, 24 bl Task_LearnedMove pop {r0} bx r0 thumb_func_end Task_LearnedMove_ thumb_func_start Task_LearnedMove Task_LearnedMove: @ 8125C48 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 ldr r2, _08125CCC @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r2, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08125CD0 @ =gPlayerParty adds r5, r1, r0 adds r6, r2, 0 adds r6, 0xE ldr r0, _08125CD4 @ =gSpecialVar_ItemId ldrh r4, [r0] movs r1, 0x2 ldrsh r0, [r6, r1] cmp r0, 0 bne _08125C84 adds r0, r5, 0 movs r1, 0x4 bl AdjustFriendship movs r0, 0xA9 lsls r0, 1 cmp r4, r0 bhi _08125C84 adds r0, r4, 0 movs r1, 0x1 bl RemoveBagItem _08125C84: ldr r1, _08125CD8 @ =gStringVar1 adds r0, r5, 0 bl GetMonNickname ldr r0, _08125CDC @ =gStringVar2 movs r1, 0 ldrsh r2, [r6, r1] movs r1, 0xD muls r1, r2 ldr r2, _08125CE0 @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _08125CE4 @ =gStringVar4 ldr r1, _08125CE8 @ =gText_PkmnLearnedMove3 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125CEC @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldr r1, _08125CF0 @ =Task_DoLearnedMoveFanfareAfterText str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08125CCC: .4byte gPartyMenu _08125CD0: .4byte gPlayerParty _08125CD4: .4byte gSpecialVar_ItemId _08125CD8: .4byte gStringVar1 _08125CDC: .4byte gStringVar2 _08125CE0: .4byte gMoveNames _08125CE4: .4byte gStringVar4 _08125CE8: .4byte gText_PkmnLearnedMove3 _08125CEC: .4byte gTasks _08125CF0: .4byte Task_DoLearnedMoveFanfareAfterText thumb_func_end Task_LearnedMove thumb_func_start Task_DoLearnedMoveFanfareAfterText Task_DoLearnedMoveFanfareAfterText: @ 8125CF4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08125D1A ldr r0, _08125D20 @ =0x00000101 bl PlayFanfare ldr r1, _08125D24 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08125D28 @ =Task_LearnNextMoveOrClosePartyMenu str r1, [r0] _08125D1A: pop {r4} pop {r0} bx r0 .align 2, 0 _08125D20: .4byte 0x00000101 _08125D24: .4byte gTasks _08125D28: .4byte Task_LearnNextMoveOrClosePartyMenu thumb_func_end Task_DoLearnedMoveFanfareAfterText thumb_func_start Task_LearnNextMoveOrClosePartyMenu Task_LearnNextMoveOrClosePartyMenu: @ 8125D2C push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 bl IsFanfareTaskInactive lsls r0, 24 cmp r0, 0 beq _08125D7E ldr r0, _08125D68 @ =gMain ldrh r1, [r0, 0x2E] movs r2, 0x1 adds r0, r2, 0 ands r0, r1 cmp r0, 0 bne _08125D54 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08125D7E _08125D54: ldr r0, _08125D6C @ =gPartyMenu movs r1, 0x10 ldrsh r0, [r0, r1] cmp r0, 0x1 bne _08125D70 adds r0, r4, 0 bl Task_TryLearningNextMove b _08125D7E .align 2, 0 _08125D68: .4byte gMain _08125D6C: .4byte gPartyMenu _08125D70: cmp r0, 0x2 bne _08125D78 ldr r0, _08125D84 @ =gSpecialVar_Result strh r2, [r0] _08125D78: adds r0, r5, 0 bl Task_ClosePartyMenu _08125D7E: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08125D84: .4byte gSpecialVar_Result thumb_func_end Task_LearnNextMoveOrClosePartyMenu thumb_func_start Task_ReplaceMoveYesNo Task_ReplaceMoveYesNo: @ 8125D88 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08125DAC bl PartyMenuDisplayYesNoMenu ldr r0, _08125DB4 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08125DB8 @ =Task_HandleReplaceMoveYesNoInput str r0, [r1] _08125DAC: pop {r4} pop {r0} bx r0 .align 2, 0 _08125DB4: .4byte gTasks _08125DB8: .4byte Task_HandleReplaceMoveYesNoInput thumb_func_end Task_ReplaceMoveYesNo thumb_func_start Task_HandleReplaceMoveYesNoInput Task_HandleReplaceMoveYesNoInput: @ 8125DBC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 beq _08125DE2 cmp r1, 0 bgt _08125DDC movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _08125E08 b _08125E14 _08125DDC: cmp r1, 0x1 beq _08125E0E b _08125E14 _08125DE2: ldr r0, _08125DFC @ =gText_WhichMoveToForget movs r1, 0x1 bl DisplayPartyMenuMessage ldr r1, _08125E00 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08125E04 @ =Task_ShowSummaryScreenToForgetMove str r1, [r0] b _08125E14 .align 2, 0 _08125DFC: .4byte gText_WhichMoveToForget _08125E00: .4byte gTasks _08125E04: .4byte Task_ShowSummaryScreenToForgetMove _08125E08: movs r0, 0x5 bl PlaySE _08125E0E: adds r0, r4, 0 bl StopLearningMovePrompt _08125E14: pop {r4} pop {r0} bx r0 thumb_func_end Task_HandleReplaceMoveYesNoInput thumb_func_start Task_ShowSummaryScreenToForgetMove Task_ShowSummaryScreenToForgetMove: @ 8125E1C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08125E3C ldr r0, _08125E44 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _08125E48 @ =CB2_ShowSummaryScreenToForgetMove str r0, [r1, 0x4] adds r0, r4, 0 bl Task_ClosePartyMenu _08125E3C: pop {r4} pop {r0} bx r0 .align 2, 0 _08125E44: .4byte sPartyMenuInternal _08125E48: .4byte CB2_ShowSummaryScreenToForgetMove thumb_func_end Task_ShowSummaryScreenToForgetMove thumb_func_start CB2_ShowSummaryScreenToForgetMove CB2_ShowSummaryScreenToForgetMove: @ 8125E4C push {r4,lr} sub sp, 0x4 ldr r0, _08125E74 @ =gPlayerParty ldr r4, _08125E78 @ =gPartyMenu ldrb r1, [r4, 0x9] ldr r2, _08125E7C @ =gPlayerPartyCount ldrb r2, [r2] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 ldr r3, _08125E80 @ =CB2_ReturnToPartyMenuWhileLearningMove ldrh r4, [r4, 0xE] str r4, [sp] bl ShowSelectMovePokemonSummaryScreen add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08125E74: .4byte gPlayerParty _08125E78: .4byte gPartyMenu _08125E7C: .4byte gPlayerPartyCount _08125E80: .4byte CB2_ReturnToPartyMenuWhileLearningMove thumb_func_end CB2_ShowSummaryScreenToForgetMove thumb_func_start CB2_ReturnToPartyMenuWhileLearningMove CB2_ReturnToPartyMenuWhileLearningMove: @ 8125E84 push {r4,r5,lr} sub sp, 0xC bl GetMoveSlotToReplace lsls r0, 24 lsrs r2, r0, 24 ldr r4, _08125ED0 @ =gPartyMenu movs r0, 0x10 ldrsh r5, [r4, r0] cmp r5, 0 bne _08125EE8 cmp r2, 0x4 beq _08125EE8 movs r1, 0x9 ldrsb r1, [r4, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08125ED4 @ =gPlayerParty adds r0, r1 adds r1, r2, 0 adds r1, 0xD bl GetMonData adds r2, r0, 0 lsls r2, 16 lsrs r2, 16 ldrb r0, [r4, 0x9] ldr r1, _08125ED8 @ =gSpecialVar_ItemId ldrh r1, [r1] ldr r3, _08125EDC @ =sub_8124EFC bl sub_811C568 ldr r1, _08125EE0 @ =gItemUseCB ldr r0, _08125EE4 @ =sub_8125F4C str r0, [r1] strb r5, [r4, 0xB] b _08125F02 .align 2, 0 _08125ED0: .4byte gPartyMenu _08125ED4: .4byte gPlayerParty _08125ED8: .4byte gSpecialVar_ItemId _08125EDC: .4byte sub_8124EFC _08125EE0: .4byte gItemUseCB _08125EE4: .4byte sub_8125F4C _08125EE8: movs r0, 0x7F str r0, [sp] ldr r0, _08125F0C @ =Task_ReturnToPartyMenuWhileLearningMove str r0, [sp, 0x4] ldr r0, _08125F10 @ =gPartyMenu ldr r0, [r0] str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0 movs r3, 0x1 bl InitPartyMenu _08125F02: add sp, 0xC pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08125F0C: .4byte Task_ReturnToPartyMenuWhileLearningMove _08125F10: .4byte gPartyMenu thumb_func_end CB2_ReturnToPartyMenuWhileLearningMove thumb_func_start Task_ReturnToPartyMenuWhileLearningMove Task_ReturnToPartyMenuWhileLearningMove: @ 8125F14 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 ldr r0, _08125F3C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08125F46 bl GetMoveSlotToReplace lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 beq _08125F40 adds r0, r4, 0 bl DisplayPartyMenuForgotMoveMessage b _08125F46 .align 2, 0 _08125F3C: .4byte gPaletteFade _08125F40: adds r0, r5, 0 bl StopLearningMovePrompt _08125F46: pop {r4,r5} pop {r0} bx r0 thumb_func_end Task_ReturnToPartyMenuWhileLearningMove thumb_func_start sub_8125F4C sub_8125F4C: @ 8125F4C push {lr} lsls r0, 24 lsrs r0, 24 bl sub_8125F5C pop {r0} bx r0 thumb_func_end sub_8125F4C thumb_func_start sub_8125F5C sub_8125F5C: @ 8125F5C push {r4-r6,lr} mov r6, r9 mov r5, r8 push {r5,r6} mov r8, r0 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r0, _08125FE4 @ =gPartyMenu mov r9, r0 movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 adds r6, r1, 0 muls r6, r0 ldr r0, _08125FE8 @ =gPlayerParty adds r6, r0 bl GetMoveSlotToReplace adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r1, r5, 0 adds r1, 0xD adds r0, r6, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldr r0, _08125FEC @ =gSpecialVar_ItemId ldrh r2, [r0] movs r0, 0x4 adds r1, r6, 0 adds r3, r4, 0 bl ItemUse_SetQuestLogEvent ldr r1, _08125FF0 @ =gStringVar1 adds r0, r6, 0 bl GetMonNickname ldr r0, _08125FF4 @ =gStringVar2 movs r1, 0xD muls r1, r4 ldr r2, _08125FF8 @ =gMoveNames adds r1, r2 bl StringCopy adds r0, r6, 0 adds r1, r5, 0 bl RemoveMonPPBonus mov r0, r9 ldrh r1, [r0, 0xE] adds r0, r6, 0 adds r2, r5, 0 bl SetMonMoveSlot mov r0, r8 bl Task_LearnedMove pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08125FE4: .4byte gPartyMenu _08125FE8: .4byte gPlayerParty _08125FEC: .4byte gSpecialVar_ItemId _08125FF0: .4byte gStringVar1 _08125FF4: .4byte gStringVar2 _08125FF8: .4byte gMoveNames thumb_func_end sub_8125F5C thumb_func_start DisplayPartyMenuForgotMoveMessage DisplayPartyMenuForgotMoveMessage: @ 8125FFC push {r4-r6,lr} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 ldr r0, _0812605C @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 adds r5, r1, 0 muls r5, r0 ldr r0, _08126060 @ =gPlayerParty adds r5, r0 bl GetMoveSlotToReplace adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r1, 0xD adds r0, r5, 0 bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldr r1, _08126064 @ =gStringVar1 adds r0, r5, 0 bl GetMonNickname ldr r0, _08126068 @ =gStringVar2 movs r1, 0xD muls r1, r4 ldr r2, _0812606C @ =gMoveNames adds r1, r2 bl StringCopy ldr r0, _08126070 @ =gUnknown_8416EC6 bl DisplayLearnMoveMessage ldr r1, _08126074 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08126078 @ =Task_PartyMenuReplaceMove str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0812605C: .4byte gPartyMenu _08126060: .4byte gPlayerParty _08126064: .4byte gStringVar1 _08126068: .4byte gStringVar2 _0812606C: .4byte gMoveNames _08126070: .4byte gUnknown_8416EC6 _08126074: .4byte gTasks _08126078: .4byte Task_PartyMenuReplaceMove thumb_func_end DisplayPartyMenuForgotMoveMessage thumb_func_start Task_PartyMenuReplaceMove Task_PartyMenuReplaceMove: @ 812607C push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081260C8 ldr r5, _081260D0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r5, r1] movs r0, 0x64 adds r4, r1, 0 muls r4, r0 ldr r0, _081260D4 @ =gPlayerParty adds r4, r0 bl GetMoveSlotToReplace adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl RemoveMonPPBonus ldrh r5, [r5, 0xE] bl GetMoveSlotToReplace adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r4, 0 adds r1, r5, 0 bl SetMonMoveSlot adds r0, r6, 0 bl Task_LearnedMove _081260C8: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081260D0: .4byte gPartyMenu _081260D4: .4byte gPlayerParty thumb_func_end Task_PartyMenuReplaceMove thumb_func_start StopLearningMovePrompt StopLearningMovePrompt: @ 81260D8 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _08126120 @ =gStringVar2 ldr r1, _08126124 @ =gPartyMenu movs r3, 0xE ldrsh r2, [r1, r3] movs r1, 0xD muls r1, r2 ldr r2, _08126128 @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _0812612C @ =gStringVar4 ldr r1, _08126130 @ =gText_StopLearningMove2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126134 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _08126138 @ =Task_StopLearningMoveYesNo str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08126120: .4byte gStringVar2 _08126124: .4byte gPartyMenu _08126128: .4byte gMoveNames _0812612C: .4byte gStringVar4 _08126130: .4byte gText_StopLearningMove2 _08126134: .4byte gTasks _08126138: .4byte Task_StopLearningMoveYesNo thumb_func_end StopLearningMovePrompt thumb_func_start Task_StopLearningMoveYesNo Task_StopLearningMoveYesNo: @ 812613C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08126160 bl PartyMenuDisplayYesNoMenu ldr r0, _08126168 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0812616C @ =Task_HandleStopLearningMoveYesNoInput str r0, [r1] _08126160: pop {r4} pop {r0} bx r0 .align 2, 0 _08126168: .4byte gTasks _0812616C: .4byte Task_HandleStopLearningMoveYesNoInput thumb_func_end Task_StopLearningMoveYesNo thumb_func_start Task_HandleStopLearningMoveYesNoInput Task_HandleStopLearningMoveYesNoInput: @ 8126170 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r7, _081261A0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 muls r1, r0 ldr r0, _081261A4 @ =gPlayerParty adds r4, r1, r0 bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r5, r0, 24 cmp r5, 0 beq _081261AE cmp r5, 0 bgt _081261A8 movs r0, 0x1 negs r0, r0 cmp r5, r0 beq _08126234 b _0812626A .align 2, 0 _081261A0: .4byte gPartyMenu _081261A4: .4byte gPlayerParty _081261A8: cmp r5, 0x1 beq _0812623A b _0812626A _081261AE: ldr r1, _081261F4 @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname ldr r0, _081261F8 @ =gStringVar2 movs r1, 0xE ldrsh r2, [r7, r1] movs r1, 0xD muls r1, r2 ldr r2, _081261FC @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _08126200 @ =gStringVar4 ldr r1, _08126204 @ =gText_MoveNotLearned adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage movs r3, 0x10 ldrsh r0, [r7, r3] cmp r0, 0x1 bne _08126210 ldr r0, _08126208 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, _0812620C @ =Task_TryLearningNextMoveAfterText str r0, [r1] b _0812626A .align 2, 0 _081261F4: .4byte gStringVar1 _081261F8: .4byte gStringVar2 _081261FC: .4byte gMoveNames _08126200: .4byte gStringVar4 _08126204: .4byte gText_MoveNotLearned _08126208: .4byte gTasks _0812620C: .4byte Task_TryLearningNextMoveAfterText _08126210: cmp r0, 0x2 bne _08126218 ldr r0, _08126228 @ =gSpecialVar_Result strh r5, [r0] _08126218: ldr r0, _0812622C @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, _08126230 @ =Task_ClosePartyMenuAfterText str r0, [r1] b _0812626A .align 2, 0 _08126228: .4byte gSpecialVar_Result _0812622C: .4byte gTasks _08126230: .4byte Task_ClosePartyMenuAfterText _08126234: movs r0, 0x5 bl PlaySE _0812623A: ldr r1, _08126270 @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname ldr r0, _08126274 @ =gStringVar2 ldr r1, _08126278 @ =gPartyMenu movs r3, 0xE ldrsh r2, [r1, r3] movs r1, 0xD muls r1, r2 ldr r2, _0812627C @ =gMoveNames adds r1, r2 bl StringCopy ldr r0, _08126280 @ =gText_PkmnNeedsToReplaceMove bl DisplayLearnMoveMessage ldr r1, _08126284 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08126288 @ =Task_ReplaceMoveYesNo str r1, [r0] _0812626A: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08126270: .4byte gStringVar1 _08126274: .4byte gStringVar2 _08126278: .4byte gPartyMenu _0812627C: .4byte gMoveNames _08126280: .4byte gText_PkmnNeedsToReplaceMove _08126284: .4byte gTasks _08126288: .4byte Task_ReplaceMoveYesNo thumb_func_end Task_HandleStopLearningMoveYesNoInput thumb_func_start Task_TryLearningNextMoveAfterText Task_TryLearningNextMoveAfterText: @ 812628C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081262A4 adds r0, r4, 0 bl Task_TryLearningNextMove _081262A4: pop {r4} pop {r0} bx r0 thumb_func_end Task_TryLearningNextMoveAfterText thumb_func_start dp05_rare_candy dp05_rare_candy: @ 81262AC push {r4-r7,lr} mov r7, r8 push {r7} mov r8, r1 lsls r0, 24 lsrs r6, r0, 24 ldr r7, _081262E8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 muls r1, r0 ldr r0, _081262EC @ =gPlayerParty adds r4, r1, r0 ldr r0, _081262F0 @ =gSpecialVar_ItemId ldrh r5, [r0] adds r0, r4, 0 movs r1, 0x38 bl GetMonData cmp r0, 0x64 beq _081262F4 ldrb r2, [r7, 0x9] adds r0, r4, 0 adds r1, r5, 0 movs r3, 0 bl PokemonUseItemEffects2 lsls r0, 24 lsrs r4, r0, 24 b _081262F6 .align 2, 0 _081262E8: .4byte gPartyMenu _081262EC: .4byte gPlayerParty _081262F0: .4byte gSpecialVar_ItemId _081262F4: movs r4, 0x1 _081262F6: movs r0, 0x5 bl PlaySE cmp r4, 0 beq _08126330 ldr r1, _08126324 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] ldr r0, _08126328 @ =gText_WontHaveEffect movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _0812632C @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 mov r1, r8 str r1, [r0] b _0812633C .align 2, 0 _08126324: .4byte gPartyMenuUseExitCallback _08126328: .4byte gText_WontHaveEffect _0812632C: .4byte gTasks _08126330: adds r0, r6, 0 bl sub_8124DC0 ldr r1, _08126348 @ =gItemUseCB ldr r0, _0812634C @ =ItemUseCB_RareCandy str r0, [r1] _0812633C: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08126348: .4byte gItemUseCB _0812634C: .4byte ItemUseCB_RareCandy thumb_func_end dp05_rare_candy thumb_func_start ItemUseCB_RareCandy ItemUseCB_RareCandy: @ 8126350 push {r4-r7,lr} mov r7, r8 push {r7} mov r8, r0 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r6, _08126410 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 adds r4, r1, 0 muls r4, r0 ldr r0, _08126414 @ =gPlayerParty adds r4, r0 ldr r0, _08126418 @ =sPartyMenuInternal ldr r7, [r0] movs r2, 0x86 lsls r2, 2 adds r1, r7, r2 adds r0, r4, 0 bl GetMonLevelUpWindowStats ldrb r0, [r6, 0x9] ldr r5, _0812641C @ =gSpecialVar_ItemId ldrh r1, [r5] movs r2, 0 bl ExecuteTableBasedItemEffect_ movs r0, 0x89 lsls r0, 2 adds r1, r7, r0 adds r0, r4, 0 bl GetMonLevelUpWindowStats ldr r1, _08126420 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldrh r2, [r5] ldr r3, _08126424 @ =0x0000ffff movs r0, 0x4 adds r1, r4, 0 bl ItemUse_SetQuestLogEvent movs r0, 0 bl PlayFanfareByFanfareNum ldrb r0, [r6, 0x9] adds r1, r4, 0 bl UpdateMonDisplayInfoAfterRareCandy ldrh r0, [r5] movs r1, 0x1 bl RemoveBagItem ldr r1, _08126428 @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname adds r0, r4, 0 movs r1, 0x38 bl GetMonData adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r0, _0812642C @ =gStringVar2 movs r2, 0 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _08126430 @ =gStringVar4 ldr r1, _08126434 @ =gText_PkmnElevatedToLvVar2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126438 @ =gTasks mov r2, r8 lsls r0, r2, 2 add r0, r8 lsls r0, 3 adds r0, r1 ldr r1, _0812643C @ =Task_DisplayLevelUpStatsPg1 str r1, [r0] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08126410: .4byte gPartyMenu _08126414: .4byte gPlayerParty _08126418: .4byte sPartyMenuInternal _0812641C: .4byte gSpecialVar_ItemId _08126420: .4byte gPartyMenuUseExitCallback _08126424: .4byte 0x0000ffff _08126428: .4byte gStringVar1 _0812642C: .4byte gStringVar2 _08126430: .4byte gStringVar4 _08126434: .4byte gText_PkmnElevatedToLvVar2 _08126438: .4byte gTasks _0812643C: .4byte Task_DisplayLevelUpStatsPg1 thumb_func_end ItemUseCB_RareCandy thumb_func_start UpdateMonDisplayInfoAfterRareCandy UpdateMonDisplayInfoAfterRareCandy: @ 8126440 push {r4-r7,lr} adds r5, r1, 0 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 ldr r6, _081264C0 @ =sPartyMenuBoxes lsls r4, r7, 4 ldr r1, [r6] adds r1, r4 adds r0, r5, 0 bl SetPartyMonAilmentGfx ldr r2, _081264C4 @ =gSprites ldr r0, [r6] adds r3, r4, r0 ldrb r1, [r3, 0xC] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _0812647C adds r0, r5, 0 adds r1, r3, 0 movs r2, 0x1 bl DisplayPartyPokemonLevelCheck _0812647C: ldr r1, [r6] adds r1, r4 adds r0, r5, 0 movs r2, 0x1 bl DisplayPartyPokemonHPCheck ldr r1, [r6] adds r1, r4 adds r0, r5, 0 movs r2, 0x1 bl DisplayPartyPokemonMaxHPCheck ldr r1, [r6] adds r1, r4 adds r0, r5, 0 bl DisplayPartyPokemonHPBarCheck ldr r0, [r6] adds r0, r4, r0 ldrb r0, [r0, 0x9] adds r1, r5, 0 bl UpdatePartyMonHPBar adds r0, r7, 0 movs r1, 0x1 bl AnimatePartySlot movs r0, 0 bl ScheduleBgCopyTilemapToVram pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081264C0: .4byte sPartyMenuBoxes _081264C4: .4byte gSprites thumb_func_end UpdateMonDisplayInfoAfterRareCandy thumb_func_start Task_DisplayLevelUpStatsPg1 Task_DisplayLevelUpStatsPg1: @ 81264C8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 movs r0, 0 bl WaitFanfare lsls r0, 24 cmp r0, 0 beq _08126514 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08126514 ldr r0, _0812651C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _081264FA movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08126514 _081264FA: movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl DisplayLevelUpStatsPg1 ldr r0, _08126520 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08126524 @ =Task_DisplayLevelUpStatsPg2 str r0, [r1] _08126514: pop {r4} pop {r0} bx r0 .align 2, 0 _0812651C: .4byte gMain _08126520: .4byte gTasks _08126524: .4byte Task_DisplayLevelUpStatsPg2 thumb_func_end Task_DisplayLevelUpStatsPg1 thumb_func_start Task_DisplayLevelUpStatsPg2 Task_DisplayLevelUpStatsPg2: @ 8126528 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08126564 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _08126542 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0812655C _08126542: movs r0, 0x5 bl PlaySE adds r0, r4, 0 bl DisplayLevelUpStatsPg2 ldr r0, _08126568 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _0812656C @ =Task_TryLearnNewMoves str r0, [r1] _0812655C: pop {r4} pop {r0} bx r0 .align 2, 0 _08126564: .4byte gMain _08126568: .4byte gTasks _0812656C: .4byte Task_TryLearnNewMoves thumb_func_end Task_DisplayLevelUpStatsPg2 thumb_func_start DisplayLevelUpStatsPg1 DisplayLevelUpStatsPg1: @ 8126570 push {r4,r5,lr} sub sp, 0x8 ldr r0, _081265B8 @ =sPartyMenuInternal ldr r5, [r0] movs r0, 0x86 lsls r0, 2 adds r4, r5, r0 bl CreateLevelUpStatsWindow lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x18] ldrh r0, [r4, 0x18] movs r1, 0x89 lsls r1, 2 adds r2, r5, r1 movs r1, 0x2 str r1, [sp] movs r1, 0x3 str r1, [sp, 0x4] adds r1, r4, 0 movs r3, 0x1 bl DrawLevelUpWindowPg1 ldrb r0, [r4, 0x18] movs r1, 0x2 bl CopyWindowToVram movs r0, 0x2 bl ScheduleBgCopyTilemapToVram add sp, 0x8 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081265B8: .4byte sPartyMenuInternal thumb_func_end DisplayLevelUpStatsPg1 thumb_func_start DisplayLevelUpStatsPg2 DisplayLevelUpStatsPg2: @ 81265BC push {r4,lr} sub sp, 0x4 ldr r0, _081265F4 @ =sPartyMenuInternal ldr r1, [r0] movs r0, 0x86 lsls r0, 2 adds r4, r1, r0 ldrh r0, [r4, 0x18] movs r2, 0x89 lsls r2, 2 adds r1, r2 movs r2, 0x3 str r2, [sp] movs r2, 0x1 movs r3, 0x2 bl DrawLevelUpWindowPg2 ldrb r0, [r4, 0x18] movs r1, 0x2 bl CopyWindowToVram movs r0, 0x2 bl ScheduleBgCopyTilemapToVram add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _081265F4: .4byte sPartyMenuInternal thumb_func_end DisplayLevelUpStatsPg2 thumb_func_start Task_TryLearnNewMoves Task_TryLearnNewMoves: @ 81265F8 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 movs r0, 0 bl WaitFanfare lsls r0, 24 cmp r0, 0 beq _0812669A ldr r0, _08126650 @ =gMain ldrh r1, [r0, 0x2E] movs r6, 0x1 adds r0, r6, 0 ands r0, r1 cmp r0, 0 bne _08126620 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0812669A _08126620: bl RemoveLevelUpStatsWindow ldr r4, _08126654 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r4, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08126658 @ =gPlayerParty adds r0, r1 movs r1, 0x1 bl MonTryLearningNewMove lsls r0, 16 lsrs r1, r0, 16 strh r6, [r4, 0x10] ldr r0, _0812665C @ =0x0000fffe cmp r1, r0 beq _0812667C cmp r1, r0 bgt _08126660 cmp r1, 0 beq _0812666C b _08126694 .align 2, 0 _08126650: .4byte gMain _08126654: .4byte gPartyMenu _08126658: .4byte gPlayerParty _0812665C: .4byte 0x0000fffe _08126660: ldr r0, _08126668 @ =0x0000ffff cmp r1, r0 beq _08126674 b _08126694 .align 2, 0 _08126668: .4byte 0x0000ffff _0812666C: adds r0, r5, 0 bl PartyMenuTryEvolution b _0812669A _08126674: adds r0, r5, 0 bl DisplayMonNeedsToReplaceMove b _0812669A _0812667C: ldr r0, _0812668C @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _08126690 @ =Task_TryLearningNextMove str r0, [r1] b _0812669A .align 2, 0 _0812668C: .4byte gTasks _08126690: .4byte Task_TryLearningNextMove _08126694: adds r0, r5, 0 bl DisplayMonLearnedMove _0812669A: pop {r4-r6} pop {r0} bx r0 thumb_func_end Task_TryLearnNewMoves thumb_func_start Task_TryLearningNextMove Task_TryLearningNextMove: @ 81266A0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _081266D0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _081266D4 @ =gPlayerParty adds r0, r1 movs r1, 0 bl MonTryLearningNewMove lsls r0, 16 lsrs r1, r0, 16 ldr r0, _081266D8 @ =0x0000fffe cmp r1, r0 beq _081266FE cmp r1, r0 bgt _081266DC cmp r1, 0 beq _081266E8 b _081266F8 .align 2, 0 _081266D0: .4byte gPartyMenu _081266D4: .4byte gPlayerParty _081266D8: .4byte 0x0000fffe _081266DC: ldr r0, _081266E4 @ =0x0000ffff cmp r1, r0 beq _081266F0 b _081266F8 .align 2, 0 _081266E4: .4byte 0x0000ffff _081266E8: adds r0, r4, 0 bl PartyMenuTryEvolution b _081266FE _081266F0: adds r0, r4, 0 bl DisplayMonNeedsToReplaceMove b _081266FE _081266F8: adds r0, r4, 0 bl DisplayMonLearnedMove _081266FE: pop {r4} pop {r0} bx r0 thumb_func_end Task_TryLearningNextMove thumb_func_start PartyMenuTryEvolution PartyMenuTryEvolution: @ 8126704 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r6, _08126748 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 muls r1, r0 ldr r0, _0812674C @ =gPlayerParty adds r7, r1, r0 adds r0, r7, 0 movs r1, 0 movs r2, 0 bl GetEvolutionTargetSpecies lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0 beq _08126754 bl FreePartyPointers ldr r0, _08126750 @ =gCB2_AfterEvolution ldr r1, [r6] str r1, [r0] ldrb r3, [r6, 0x9] adds r0, r7, 0 adds r1, r4, 0 movs r2, 0x1 bl BeginEvolutionScene adds r0, r5, 0 bl DestroyTask b _08126762 .align 2, 0 _08126748: .4byte gPartyMenu _0812674C: .4byte gPlayerParty _08126750: .4byte gCB2_AfterEvolution _08126754: ldr r0, _08126768 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _0812676C @ =Task_ClosePartyMenuAfterText str r0, [r1] _08126762: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08126768: .4byte gTasks _0812676C: .4byte Task_ClosePartyMenuAfterText thumb_func_end PartyMenuTryEvolution thumb_func_start DisplayMonNeedsToReplaceMove DisplayMonNeedsToReplaceMove: @ 8126770 push {r4-r6,lr} mov r6, r8 push {r6} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _081267DC @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _081267E0 @ =gPlayerParty adds r0, r1 ldr r1, _081267E4 @ =gStringVar1 bl GetMonNickname ldr r0, _081267E8 @ =gStringVar2 ldr r6, _081267EC @ =gMoveToLearn ldrh r2, [r6] movs r1, 0xD muls r1, r2 ldr r2, _081267F0 @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _081267F4 @ =gStringVar4 ldr r1, _081267F8 @ =gText_PkmnNeedsToReplaceMove adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldrh r0, [r6] mov r1, r8 strh r0, [r1, 0xE] ldr r1, _081267FC @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _08126800 @ =Task_ReplaceMoveYesNo str r1, [r0] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081267DC: .4byte gPartyMenu _081267E0: .4byte gPlayerParty _081267E4: .4byte gStringVar1 _081267E8: .4byte gStringVar2 _081267EC: .4byte gMoveToLearn _081267F0: .4byte gMoveNames _081267F4: .4byte gStringVar4 _081267F8: .4byte gText_PkmnNeedsToReplaceMove _081267FC: .4byte gTasks _08126800: .4byte Task_ReplaceMoveYesNo thumb_func_end DisplayMonNeedsToReplaceMove thumb_func_start DisplayMonLearnedMove DisplayMonLearnedMove: @ 8126804 push {r4-r6,lr} mov r6, r8 push {r6} adds r6, r0, 0 adds r5, r1, 0 lsls r6, 24 lsrs r6, 24 lsls r5, 16 lsrs r5, 16 ldr r0, _08126870 @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08126874 @ =gPlayerParty adds r0, r1 ldr r1, _08126878 @ =gStringVar1 bl GetMonNickname ldr r0, _0812687C @ =gStringVar2 movs r1, 0xD muls r1, r5 ldr r2, _08126880 @ =gMoveNames adds r1, r2 bl StringCopy ldr r4, _08126884 @ =gStringVar4 ldr r1, _08126888 @ =gText_PkmnLearnedMove3 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram mov r0, r8 strh r5, [r0, 0xE] ldr r1, _0812688C @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08126890 @ =Task_DoLearnedMoveFanfareAfterText str r1, [r0] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08126870: .4byte gPartyMenu _08126874: .4byte gPlayerParty _08126878: .4byte gStringVar1 _0812687C: .4byte gStringVar2 _08126880: .4byte gMoveNames _08126884: .4byte gStringVar4 _08126888: .4byte gText_PkmnLearnedMove3 _0812688C: .4byte gTasks _08126890: .4byte Task_DoLearnedMoveFanfareAfterText thumb_func_end DisplayMonLearnedMove thumb_func_start ItemUseCB_SacredAsh ItemUseCB_SacredAsh: @ 8126894 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _081268C8 @ =sPartyMenuInternal ldr r2, [r1] movs r3, 0x86 lsls r3, 2 adds r1, r2, r3 movs r3, 0 strh r3, [r1] ldr r4, _081268CC @ =0x0000021a adds r1, r2, r4 strh r3, [r1] ldr r1, _081268D0 @ =gPartyMenu ldrb r1, [r1, 0x9] lsls r1, 24 asrs r1, 24 movs r3, 0x87 lsls r3, 2 adds r2, r3 strh r1, [r2] bl UseSacredAsh pop {r4} pop {r0} bx r0 .align 2, 0 _081268C8: .4byte sPartyMenuInternal _081268CC: .4byte 0x0000021a _081268D0: .4byte gPartyMenu thumb_func_end ItemUseCB_SacredAsh thumb_func_start UseSacredAsh UseSacredAsh: @ 81268D4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 mov r9, r4 ldr r6, _08126930 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08126934 @ =gPlayerParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08126920 adds r0, r5, 0 movs r1, 0x39 bl GetMonData lsls r0, 16 lsrs r0, 16 mov r8, r0 ldrb r0, [r6, 0x9] ldr r1, _08126938 @ =gSpecialVar_ItemId ldrh r1, [r1] movs r2, 0 bl ExecuteTableBasedItemEffect_ lsls r0, 24 cmp r0, 0 beq _08126944 _08126920: ldr r0, _0812693C @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08126940 @ =Task_SacredAshLoop str r0, [r1] b _081269EE .align 2, 0 _08126930: .4byte gPartyMenu _08126934: .4byte gPlayerParty _08126938: .4byte gSpecialVar_ItemId _0812693C: .4byte gTasks _08126940: .4byte Task_SacredAshLoop _08126944: movs r0, 0x1 bl PlaySE ldr r7, _08126A00 @ =sPartyMenuInternal ldr r0, [r7] ldr r1, _08126A04 @ =0x0000021a mov r10, r1 add r0, r10 movs r2, 0 ldrsh r0, [r0, r2] cmp r0, 0 bne _08126960 ldr r0, _08126A08 @ =gUnknown_203B0D0 str r5, [r0] _08126960: ldr r4, _08126A0C @ =sPartyMenuBoxes movs r0, 0x9 ldrsb r0, [r6, r0] lsls r0, 4 ldr r1, [r4] adds r1, r0 adds r0, r5, 0 bl SetPartyMonAilmentGfx ldr r2, _08126A10 @ =gSprites movs r0, 0x9 ldrsb r0, [r6, r0] ldr r1, [r4] lsls r0, 4 adds r3, r0, r1 ldrb r1, [r3, 0xC] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 adds r0, 0x3E ldrb r0, [r0] lsls r0, 29 cmp r0, 0 bge _0812699C adds r0, r5, 0 adds r1, r3, 0 movs r2, 0x1 bl DisplayPartyPokemonLevelCheck _0812699C: ldr r0, [r7] movs r1, 0x87 lsls r1, 2 adds r0, r1 ldrb r0, [r0] movs r1, 0 bl AnimatePartySlot ldrb r0, [r6, 0x9] movs r1, 0x1 bl AnimatePartySlot adds r0, r5, 0 movs r1, 0x39 bl GetMonData adds r3, r0, 0 mov r2, r8 subs r3, r2 lsls r3, 16 asrs r3, 16 ldrb r1, [r6, 0x9] ldr r0, _08126A14 @ =Task_SacredAshDisplayHPRestored str r0, [sp] mov r0, r9 movs r2, 0x1 bl PartyMenuModifyHP mov r0, r9 movs r1, 0 mov r2, r8 bl ResetHPTaskData ldr r0, [r7] movs r2, 0x86 lsls r2, 2 adds r1, r0, r2 movs r2, 0x1 strh r2, [r1] add r0, r10 strh r2, [r0] _081269EE: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08126A00: .4byte sPartyMenuInternal _08126A04: .4byte 0x0000021a _08126A08: .4byte gUnknown_203B0D0 _08126A0C: .4byte sPartyMenuBoxes _08126A10: .4byte gSprites _08126A14: .4byte Task_SacredAshDisplayHPRestored thumb_func_end UseSacredAsh thumb_func_start Task_SacredAshLoop Task_SacredAshLoop: @ 8126A18 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08126AF6 ldr r5, _08126A80 @ =sPartyMenuInternal ldr r2, [r5] movs r0, 0x86 lsls r0, 2 adds r1, r2, r0 movs r3, 0 ldrsh r0, [r1, r3] ldr r3, _08126A84 @ =gPartyMenu cmp r0, 0x1 bne _08126A4E movs r0, 0 strh r0, [r1] movs r1, 0x9 ldrsb r1, [r3, r1] movs r6, 0x87 lsls r6, 2 adds r0, r2, r6 strh r1, [r0] _08126A4E: adds r1, r3, 0 ldrb r0, [r1, 0x9] adds r0, 0x1 strb r0, [r1, 0x9] lsls r0, 24 asrs r0, 24 cmp r0, 0x6 bne _08126AF0 ldr r0, [r5] ldr r1, _08126A88 @ =0x0000021a adds r0, r1 movs r2, 0 ldrsh r1, [r0, r2] cmp r1, 0 bne _08126A94 ldr r0, _08126A8C @ =gPartyMenuUseExitCallback strb r1, [r0] ldr r0, _08126A90 @ =gText_WontHaveEffect movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram b _08126ABE .align 2, 0 _08126A80: .4byte sPartyMenuInternal _08126A84: .4byte gPartyMenu _08126A88: .4byte 0x0000021a _08126A8C: .4byte gPartyMenuUseExitCallback _08126A90: .4byte gText_WontHaveEffect _08126A94: ldr r1, _08126AD4 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldrb r1, [r3, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 beq _08126AB4 ldr r0, _08126AD8 @ =gUnknown_203B0D0 ldr r1, [r0] ldr r0, _08126ADC @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _08126AE0 @ =0x0000ffff movs r0, 0x4 bl ItemUse_SetQuestLogEvent _08126AB4: ldr r0, _08126ADC @ =gSpecialVar_ItemId ldrh r0, [r0] movs r1, 0x1 bl RemoveBagItem _08126ABE: ldr r1, _08126AE4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08126AE8 @ =Task_ClosePartyMenuAfterText str r1, [r0] ldr r1, _08126AEC @ =gPartyMenu movs r0, 0 strb r0, [r1, 0x9] b _08126AF6 .align 2, 0 _08126AD4: .4byte gPartyMenuUseExitCallback _08126AD8: .4byte gUnknown_203B0D0 _08126ADC: .4byte gSpecialVar_ItemId _08126AE0: .4byte 0x0000ffff _08126AE4: .4byte gTasks _08126AE8: .4byte Task_ClosePartyMenuAfterText _08126AEC: .4byte gPartyMenu _08126AF0: adds r0, r4, 0 bl UseSacredAsh _08126AF6: pop {r4-r6} pop {r0} bx r0 thumb_func_end Task_SacredAshLoop thumb_func_start Task_SacredAshDisplayHPRestored Task_SacredAshDisplayHPRestored: @ 8126AFC push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _08126B44 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08126B48 @ =gPlayerParty adds r0, r1 ldr r1, _08126B4C @ =gStringVar1 bl GetMonNickname ldr r4, _08126B50 @ =gStringVar4 ldr r1, _08126B54 @ =gText_PkmnHPRestoredByVar2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126B58 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _08126B5C @ =Task_SacredAshLoop str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08126B44: .4byte gPartyMenu _08126B48: .4byte gPlayerParty _08126B4C: .4byte gStringVar1 _08126B50: .4byte gStringVar4 _08126B54: .4byte gText_PkmnHPRestoredByVar2 _08126B58: .4byte gTasks _08126B5C: .4byte Task_SacredAshLoop thumb_func_end Task_SacredAshDisplayHPRestored thumb_func_start sub_8126B60 sub_8126B60: @ 8126B60 push {r4,r5,lr} adds r5, r1, 0 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 bl PlaySE ldr r2, _08126BB0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r2, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08126BB4 @ =gPlayerParty adds r0, r1 ldr r1, _08126BB8 @ =gSpecialVar_ItemId ldrh r1, [r1] ldrb r2, [r2, 0x9] movs r3, 0 bl PokemonUseItemEffects2 lsls r0, 24 cmp r0, 0 beq _08126BC8 ldr r1, _08126BBC @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] ldr r0, _08126BC0 @ =gText_WontHaveEffect movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126BC4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 str r5, [r0] b _08126BCE .align 2, 0 _08126BB0: .4byte gPartyMenu _08126BB4: .4byte gPlayerParty _08126BB8: .4byte gSpecialVar_ItemId _08126BBC: .4byte gPartyMenuUseExitCallback _08126BC0: .4byte gText_WontHaveEffect _08126BC4: .4byte gTasks _08126BC8: adds r0, r4, 0 bl sub_8124DC0 _08126BCE: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_8126B60 thumb_func_start ItemUseCB_EvolutionStone ItemUseCB_EvolutionStone: @ 8126BD4 push {r4,r5,lr} ldr r1, _08126C10 @ =gCB2_AfterEvolution ldr r4, _08126C14 @ =gPartyMenu ldr r0, [r4] str r0, [r1] ldrb r0, [r4, 0x9] ldr r5, _08126C18 @ =gSpecialVar_ItemId ldrh r1, [r5] movs r2, 0 bl ExecuteTableBasedItemEffect_ movs r1, 0x9 ldrsb r1, [r4, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08126C1C @ =gPlayerParty adds r1, r0 ldrh r2, [r5] ldr r3, _08126C20 @ =0x0000ffff movs r0, 0x4 bl ItemUse_SetQuestLogEvent ldrh r0, [r5] movs r1, 0x1 bl RemoveBagItem pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08126C10: .4byte gCB2_AfterEvolution _08126C14: .4byte gPartyMenu _08126C18: .4byte gSpecialVar_ItemId _08126C1C: .4byte gPlayerParty _08126C20: .4byte 0x0000ffff thumb_func_end ItemUseCB_EvolutionStone thumb_func_start sub_8126C24 sub_8126C24: @ 8126C24 push {lr} bl IsNationalPokedexEnabled cmp r0, 0 bne _08126C60 ldr r0, _08126C54 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08126C58 @ =gPlayerParty adds r0, r1 ldr r1, _08126C5C @ =gSpecialVar_ItemId ldrh r2, [r1] movs r1, 0x2 bl GetEvolutionTargetSpecies lsls r0, 16 lsrs r0, 16 cmp r0, 0x97 bls _08126C60 movs r0, 0 b _08126C62 .align 2, 0 _08126C54: .4byte gPartyMenu _08126C58: .4byte gPlayerParty _08126C5C: .4byte gSpecialVar_ItemId _08126C60: movs r0, 0x1 _08126C62: pop {r1} bx r1 thumb_func_end sub_8126C24 thumb_func_start GetItemEffectType GetItemEffectType: @ 8126C68 push {r4,r5,lr} lsls r0, 16 lsrs r1, r0, 16 adds r2, r1, 0 subs r2, 0xD lsls r0, r2, 16 lsrs r0, 16 cmp r0, 0xA5 bls _08126C7C b _08126DBC _08126C7C: cmp r1, 0xAF bne _08126C94 ldr r0, _08126C8C @ =gSaveBlock1Ptr ldr r0, [r0] ldr r1, _08126C90 @ =0x00003108 adds r4, r0, r1 b _08126C9C .align 2, 0 _08126C8C: .4byte gSaveBlock1Ptr _08126C90: .4byte 0x00003108 _08126C94: ldr r1, _08126CC4 @ =gItemEffectTable lsls r0, r2, 2 adds r0, r1 ldr r4, [r0] _08126C9C: ldrb r1, [r4] movs r5, 0x3F adds r0, r5, 0 ands r0, r1 cmp r0, 0 bne _08126CBE ldrb r0, [r4, 0x1] cmp r0, 0 bne _08126CBE ldrb r0, [r4, 0x2] cmp r0, 0 bne _08126CBE ldrb r3, [r4, 0x3] movs r0, 0x80 ands r0, r3 cmp r0, 0 beq _08126CC8 _08126CBE: movs r0, 0 b _08126DC2 .align 2, 0 _08126CC4: .4byte gItemEffectTable _08126CC8: movs r2, 0x40 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _08126CD6 movs r0, 0xA b _08126DC2 _08126CD6: adds r0, r2, 0 ands r0, r3 cmp r0, 0 beq _08126CE2 movs r0, 0x1 b _08126DC2 _08126CE2: adds r2, r5, 0 ands r2, r3 cmp r2, 0 bne _08126CF0 lsrs r0, r1, 7 cmp r0, 0 beq _08126D32 _08126CF0: cmp r2, 0x20 bne _08126CF8 movs r0, 0x4 b _08126DC2 _08126CF8: cmp r2, 0x10 bne _08126D00 movs r0, 0x3 b _08126DC2 _08126D00: cmp r2, 0x8 bne _08126D08 movs r0, 0x5 b _08126DC2 _08126D08: cmp r2, 0x4 bne _08126D10 movs r0, 0x6 b _08126DC2 _08126D10: cmp r2, 0x2 bne _08126D18 movs r0, 0x7 b _08126DC2 _08126D18: cmp r2, 0x1 bne _08126D20 movs r0, 0x8 b _08126DC2 _08126D20: lsrs r0, r1, 7 cmp r0, 0 beq _08126D2E cmp r2, 0 bne _08126D2E movs r0, 0x9 b _08126DC2 _08126D2E: movs r0, 0xB b _08126DC2 _08126D32: ldrb r1, [r4, 0x4] movs r0, 0x44 ands r0, r1 adds r2, r1, 0 cmp r0, 0 beq _08126D42 movs r0, 0x2 b _08126DC2 _08126D42: movs r5, 0x2 adds r0, r5, 0 ands r0, r2 cmp r0, 0 beq _08126D50 movs r0, 0xC b _08126DC2 _08126D50: movs r3, 0x1 adds r0, r3, 0 ands r0, r2 cmp r0, 0 beq _08126D5E movs r0, 0xD b _08126DC2 _08126D5E: ldrb r1, [r4, 0x5] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08126D6C movs r0, 0xE b _08126DC2 _08126D6C: movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08126D78 movs r0, 0xF b _08126DC2 _08126D78: adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _08126D84 movs r0, 0x10 b _08126DC2 _08126D84: adds r0, r3, 0 ands r0, r1 cmp r0, 0 beq _08126D90 movs r0, 0x11 b _08126DC2 _08126D90: movs r0, 0x80 ands r0, r2 cmp r0, 0 beq _08126D9C movs r0, 0x12 b _08126DC2 _08126D9C: movs r0, 0x20 ands r0, r2 cmp r0, 0 beq _08126DA8 movs r0, 0x13 b _08126DC2 _08126DA8: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _08126DB4 movs r0, 0x14 b _08126DC2 _08126DB4: movs r0, 0x18 ands r0, r2 cmp r0, 0 bne _08126DC0 _08126DBC: movs r0, 0x16 b _08126DC2 _08126DC0: movs r0, 0x15 _08126DC2: pop {r4,r5} pop {r1} bx r1 thumb_func_end GetItemEffectType thumb_func_start TryTutorSelectedMon TryTutorSelectedMon: @ 8126DC8 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r6, r0, 24 ldr r0, _08126E4C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08126E98 ldr r7, _08126E50 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08126E54 @ =gPlayerParty adds r5, r1, r0 movs r0, 0xE adds r0, r7 mov r8, r0 ldr r1, _08126E58 @ =gStringVar1 adds r0, r5, 0 bl GetMonNickname ldr r4, _08126E5C @ =gSpecialVar_0x8005 ldrb r0, [r4] bl GetTutorMove strh r0, [r7, 0xE] ldr r0, _08126E60 @ =gStringVar2 movs r1, 0xE ldrsh r2, [r7, r1] movs r1, 0xD muls r1, r2 ldr r2, _08126E64 @ =gMoveNames adds r1, r2 bl StringCopy movs r0, 0x2 mov r1, r8 strh r0, [r1, 0x2] ldrb r2, [r4] adds r0, r5, 0 movs r1, 0 bl CanMonLearnTMTutor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08126E6C cmp r0, 0x2 beq _08126E74 ldrh r1, [r7, 0xE] adds r0, r5, 0 bl GiveMoveToMon lsls r0, 16 ldr r1, _08126E68 @ =0xffff0000 cmp r0, r1 beq _08126E84 adds r0, r6, 0 bl Task_LearnedMove b _08126E98 .align 2, 0 _08126E4C: .4byte gPaletteFade _08126E50: .4byte gPartyMenu _08126E54: .4byte gPlayerParty _08126E58: .4byte gStringVar1 _08126E5C: .4byte gSpecialVar_0x8005 _08126E60: .4byte gStringVar2 _08126E64: .4byte gMoveNames _08126E68: .4byte 0xffff0000 _08126E6C: ldr r1, _08126E70 @ =gText_PkmnCantLearnMove b _08126E76 .align 2, 0 _08126E70: .4byte gText_PkmnCantLearnMove _08126E74: ldr r1, _08126E80 @ =gText_PkmnAlreadyKnows _08126E76: adds r0, r6, 0 bl DisplayLearnMoveMessageAndClose b _08126E98 .align 2, 0 _08126E80: .4byte gText_PkmnAlreadyKnows _08126E84: ldr r0, _08126EA4 @ =gText_PkmnNeedsToReplaceMove bl DisplayLearnMoveMessage ldr r1, _08126EA8 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08126EAC @ =Task_ReplaceMoveYesNo str r1, [r0] _08126E98: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08126EA4: .4byte gText_PkmnNeedsToReplaceMove _08126EA8: .4byte gTasks _08126EAC: .4byte Task_ReplaceMoveYesNo thumb_func_end TryTutorSelectedMon thumb_func_start CB2_PartyMenuFromStartMenu CB2_PartyMenuFromStartMenu: @ 8126EB0 push {lr} sub sp, 0xC movs r0, 0 str r0, [sp] ldr r0, _08126ED4 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08126ED8 @ =CB2_ReturnToStartMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0 movs r3, 0 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08126ED4: .4byte Task_HandleChooseMonInput _08126ED8: .4byte CB2_ReturnToStartMenu thumb_func_end CB2_PartyMenuFromStartMenu thumb_func_start CB2_ChooseMonToGiveItem CB2_ChooseMonToGiveItem: @ 8126EDC push {lr} sub sp, 0xC ldr r0, _08126EF8 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 beq _08126F00 cmp r0, 0x5 beq _08126F08 ldr r1, _08126EFC @ =CB2_ReturnToBagMenu b _08126F0A .align 2, 0 _08126EF8: .4byte gSpecialVar_ItemId _08126EFC: .4byte CB2_ReturnToBagMenu _08126F00: ldr r1, _08126F04 @ =sub_8124DA0 b _08126F0A .align 2, 0 _08126F04: .4byte sub_8124DA0 _08126F08: ldr r1, _08126F30 @ =sub_8124DB0 _08126F0A: movs r0, 0x6 str r0, [sp] ldr r0, _08126F34 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] str r1, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0x5 movs r3, 0 bl InitPartyMenu ldr r1, _08126F38 @ =gPartyMenu ldr r0, _08126F3C @ =gSpecialVar_ItemId ldrh r0, [r0] strh r0, [r1, 0xC] add sp, 0xC pop {r0} bx r0 .align 2, 0 _08126F30: .4byte sub_8124DB0 _08126F34: .4byte Task_HandleChooseMonInput _08126F38: .4byte gPartyMenu _08126F3C: .4byte gSpecialVar_ItemId thumb_func_end CB2_ChooseMonToGiveItem thumb_func_start TryGiveItemOrMailToSelectedMon TryGiveItemOrMailToSelectedMon: @ 8126F40 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 ldr r5, _08126F80 @ =sPartyMenuItemId ldr r0, _08126F84 @ =gPartyMenu mov r9, r0 ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 movs r1, 0x64 mov r8, r1 mov r1, r8 muls r1, r0 adds r0, r1, 0 ldr r7, _08126F88 @ =gPlayerParty adds r0, r7 movs r1, 0xC bl GetMonData strh r0, [r5] lsls r0, 16 cmp r0, 0 bne _08126F8C adds r0, r4, 0 bl GiveItemOrMailToSelectedMon b _08126FC4 .align 2, 0 _08126F80: .4byte sPartyMenuItemId _08126F84: .4byte gPartyMenu _08126F88: .4byte gPlayerParty _08126F8C: ldrh r0, [r5] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _08126FA0 adds r0, r4, 0 bl DisplayItemMustBeRemovedFirstMessage b _08126FC4 _08126FA0: mov r1, r9 movs r0, 0x9 ldrsb r0, [r1, r0] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 ldrh r1, [r5] movs r2, 0x1 bl DisplayAlreadyHoldingItemSwitchMessage ldr r1, _08126FD0 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, _08126FD4 @ =Task_SwitchItemsFromBagYesNo str r1, [r0] _08126FC4: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08126FD0: .4byte gTasks _08126FD4: .4byte Task_SwitchItemsFromBagYesNo thumb_func_end TryGiveItemOrMailToSelectedMon thumb_func_start GiveItemOrMailToSelectedMon GiveItemOrMailToSelectedMon: @ 8126FD8 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r5, _08127004 @ =gPartyMenu ldrh r0, [r5, 0xC] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _08127010 ldrh r0, [r5, 0xC] bl RemoveItemToGiveFromBag ldr r0, _08127008 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _0812700C @ =CB2_WriteMailToGiveMonFromBag str r0, [r1, 0x4] adds r0, r4, 0 bl Task_ClosePartyMenu b _08127016 .align 2, 0 _08127004: .4byte gPartyMenu _08127008: .4byte sPartyMenuInternal _0812700C: .4byte CB2_WriteMailToGiveMonFromBag _08127010: adds r0, r4, 0 bl GiveItemToSelectedMon _08127016: pop {r4,r5} pop {r0} bx r0 thumb_func_end GiveItemOrMailToSelectedMon thumb_func_start GiveItemToSelectedMon GiveItemToSelectedMon: @ 812701C push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r7, r0, 24 ldr r0, _08127084 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08127078 ldr r4, _08127088 @ =gPartyMenu ldrh r5, [r4, 0xC] movs r0, 0x9 ldrsb r0, [r4, r0] movs r1, 0x64 mov r8, r1 mov r1, r8 muls r1, r0 adds r0, r1, 0 ldr r6, _0812708C @ =gPlayerParty adds r0, r6 adds r1, r5, 0 movs r2, 0 movs r3, 0x1 bl DisplayGaveHeldItemMessage movs r0, 0x9 ldrsb r0, [r4, r0] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r6 adds r1, r5, 0 bl GiveItemToMon adds r0, r5, 0 bl RemoveItemToGiveFromBag ldr r1, _08127090 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 ldr r1, _08127094 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r1, [r0] _08127078: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08127084: .4byte gPaletteFade _08127088: .4byte gPartyMenu _0812708C: .4byte gPlayerParty _08127090: .4byte gTasks _08127094: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu thumb_func_end GiveItemToSelectedMon thumb_func_start Task_UpdateHeldItemSpriteAndClosePartyMenu Task_UpdateHeldItemSpriteAndClosePartyMenu: @ 8127098 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r0, _081270D4 @ =gPartyMenu ldrb r4, [r0, 0x9] bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081270CC lsls r2, r4, 24 asrs r2, 24 movs r0, 0x64 muls r0, r2 ldr r1, _081270D8 @ =gPlayerParty adds r0, r1 ldr r1, _081270DC @ =sPartyMenuBoxes lsls r2, 4 ldr r1, [r1] adds r1, r2 bl UpdatePartyMonHeldItemSprite adds r0, r5, 0 bl Task_ClosePartyMenu _081270CC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _081270D4: .4byte gPartyMenu _081270D8: .4byte gPlayerParty _081270DC: .4byte sPartyMenuBoxes thumb_func_end Task_UpdateHeldItemSpriteAndClosePartyMenu thumb_func_start CB2_WriteMailToGiveMonFromBag CB2_WriteMailToGiveMonFromBag: @ 81270E0 push {r4-r6,lr} ldr r4, _08127128 @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r4, r0] movs r6, 0x64 muls r0, r6 ldr r5, _0812712C @ =gPlayerParty adds r0, r5 ldrh r1, [r4, 0xC] bl GiveItemToMon movs r0, 0x9 ldrsb r0, [r4, r0] muls r0, r6 adds r0, r5 movs r1, 0x40 bl GetMonData lsls r0, 24 lsrs r0, 24 ldr r1, _08127130 @ =gSaveBlock1Ptr lsls r2, r0, 3 adds r2, r0 lsls r2, 2 ldr r0, _08127134 @ =0x00002cd0 adds r2, r0 ldr r1, [r1] adds r1, r2 ldr r2, _08127138 @ =CB2_ReturnToPartyOrBagMenuFromWritingMail movs r0, 0x4 bl DoEasyChatScreen pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08127128: .4byte gPartyMenu _0812712C: .4byte gPlayerParty _08127130: .4byte gSaveBlock1Ptr _08127134: .4byte 0x00002cd0 _08127138: .4byte CB2_ReturnToPartyOrBagMenuFromWritingMail thumb_func_end CB2_WriteMailToGiveMonFromBag thumb_func_start CB2_ReturnToPartyOrBagMenuFromWritingMail CB2_ReturnToPartyOrBagMenuFromWritingMail: @ 812713C push {r4-r7,lr} sub sp, 0xC ldr r6, _0812718C @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08127190 @ =gPlayerParty adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r7, r0, 16 ldr r0, _08127194 @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0 bne _0812719C adds r0, r5, 0 bl TakeMailFromMon ldr r4, _08127198 @ =sPartyMenuItemId adds r0, r5, 0 movs r1, 0xC adds r2, r4, 0 bl SetMonData ldrh r0, [r4] movs r1, 0x1 bl RemoveBagItem adds r0, r7, 0 bl ReturnGiveItemToBagOrPC ldr r0, [r6] bl SetMainCallback2 b _081271B8 .align 2, 0 _0812718C: .4byte gPartyMenu _08127190: .4byte gPlayerParty _08127194: .4byte gSpecialVar_Result _08127198: .4byte sPartyMenuItemId _0812719C: ldrb r0, [r6, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r6, 0xB] movs r1, 0x7F str r1, [sp] ldr r1, _081271C0 @ =Task_DisplayGaveMailFromBagMessage str r1, [sp, 0x4] ldr r1, [r6] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 bl InitPartyMenu _081271B8: add sp, 0xC pop {r4-r7} pop {r0} bx r0 .align 2, 0 _081271C0: .4byte Task_DisplayGaveMailFromBagMessage thumb_func_end CB2_ReturnToPartyOrBagMenuFromWritingMail thumb_func_start Task_DisplayGaveMailFromBagMessage Task_DisplayGaveMailFromBagMessage: @ 81271C4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _081271EC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0812721E ldr r1, _081271F0 @ =sPartyMenuItemId ldrh r0, [r1] cmp r0, 0 beq _081271F8 ldr r0, _081271F4 @ =gPartyMenu ldrh r0, [r0, 0xC] ldrh r1, [r1] movs r2, 0 bl DisplaySwitchedHeldItemMessage b _08127210 .align 2, 0 _081271EC: .4byte gPaletteFade _081271F0: .4byte sPartyMenuItemId _081271F4: .4byte gPartyMenu _081271F8: ldr r2, _08127224 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r2, r1] movs r0, 0x64 muls r0, r1 ldr r1, _08127228 @ =gPlayerParty adds r0, r1 ldrh r1, [r2, 0xC] movs r2, 0 movs r3, 0x1 bl DisplayGaveHeldItemMessage _08127210: ldr r0, _0812722C @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08127230 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r0, [r1] _0812721E: pop {r4} pop {r0} bx r0 .align 2, 0 _08127224: .4byte gPartyMenu _08127228: .4byte gPlayerParty _0812722C: .4byte gTasks _08127230: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu thumb_func_end Task_DisplayGaveMailFromBagMessage thumb_func_start Task_SwitchItemsFromBagYesNo Task_SwitchItemsFromBagYesNo: @ 8127234 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08127258 bl PartyMenuDisplayYesNoMenu ldr r0, _08127260 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _08127264 @ =Task_HandleSwitchItemsFromBagYesNoInput str r0, [r1] _08127258: pop {r4} pop {r0} bx r0 .align 2, 0 _08127260: .4byte gTasks _08127264: .4byte Task_HandleSwitchItemsFromBagYesNoInput thumb_func_end Task_SwitchItemsFromBagYesNo thumb_func_start Task_HandleSwitchItemsFromBagYesNoInput Task_HandleSwitchItemsFromBagYesNoInput: @ 8127268 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 beq _0812728E cmp r1, 0 bgt _08127288 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _08127328 b _0812733C _08127288: cmp r1, 0x1 beq _0812732E b _0812733C _0812728E: ldr r7, _081272C0 @ =gPartyMenu ldrh r4, [r7, 0xC] adds r0, r4, 0 bl RemoveItemToGiveFromBag ldr r6, _081272C4 @ =sPartyMenuItemId ldrh r0, [r6] movs r1, 0x1 bl AddBagItem lsls r0, 24 cmp r0, 0 bne _081272CC adds r0, r4, 0 bl ReturnGiveItemToBagOrPC ldrh r0, [r6] bl BufferBagFullCantTakeItemMessage ldr r0, _081272C8 @ =gStringVar4 movs r1, 0 bl DisplayPartyMenuMessage b _0812730C .align 2, 0 _081272C0: .4byte gPartyMenu _081272C4: .4byte sPartyMenuItemId _081272C8: .4byte gStringVar4 _081272CC: adds r0, r4, 0 bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081272F0 ldr r0, _081272E8 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _081272EC @ =CB2_WriteMailToGiveMonFromBag str r0, [r1, 0x4] adds r0, r5, 0 bl Task_ClosePartyMenu b _0812733C .align 2, 0 _081272E8: .4byte sPartyMenuInternal _081272EC: .4byte CB2_WriteMailToGiveMonFromBag _081272F0: movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 muls r0, r1 ldr r1, _0812731C @ =gPlayerParty adds r0, r1 adds r1, r4, 0 bl GiveItemToMon ldrh r1, [r6] adds r0, r4, 0 movs r2, 0x1 bl DisplaySwitchedHeldItemMessage _0812730C: ldr r1, _08127320 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _08127324 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r1, [r0] b _0812733C .align 2, 0 _0812731C: .4byte gPlayerParty _08127320: .4byte gTasks _08127324: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu _08127328: movs r0, 0x5 bl PlaySE _0812732E: ldr r0, _08127344 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldr r0, _08127348 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r0, [r1] _0812733C: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08127344: .4byte gTasks _08127348: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu thumb_func_end Task_HandleSwitchItemsFromBagYesNoInput thumb_func_start DisplayItemMustBeRemovedFirstMessage DisplayItemMustBeRemovedFirstMessage: @ 812734C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _08127378 @ =gUnknown_8416BFB movs r1, 0x1 bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _0812737C @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _08127380 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08127378: .4byte gUnknown_8416BFB _0812737C: .4byte gTasks _08127380: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu thumb_func_end DisplayItemMustBeRemovedFirstMessage thumb_func_start RemoveItemToGiveFromBag RemoveItemToGiveFromBag: @ 8127384 push {lr} lsls r0, 16 lsrs r1, r0, 16 ldr r0, _0812739C @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x6 bne _081273A0 adds r0, r1, 0 movs r1, 0x1 bl RemoveItemFromPC b _081273A8 .align 2, 0 _0812739C: .4byte gPartyMenu _081273A0: adds r0, r1, 0 movs r1, 0x1 bl RemoveBagItem _081273A8: pop {r0} bx r0 thumb_func_end RemoveItemToGiveFromBag thumb_func_start ReturnGiveItemToBagOrPC ReturnGiveItemToBagOrPC: @ 81273AC push {lr} lsls r0, 16 lsrs r1, r0, 16 ldr r0, _081273C4 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x5 beq _081273C8 adds r0, r1, 0 movs r1, 0x1 bl AddPCItem b _081273D0 .align 2, 0 _081273C4: .4byte gPartyMenu _081273C8: adds r0, r1, 0 movs r1, 0x1 bl AddBagItem _081273D0: lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end ReturnGiveItemToBagOrPC thumb_func_start ChooseMonToGiveMailFromMailbox ChooseMonToGiveMailFromMailbox: @ 81273D8 push {lr} sub sp, 0xC movs r0, 0x6 str r0, [sp] ldr r0, _081273FC @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08127400 @ =CB2_PlayerPC_ReturnFromPartyMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0x7 movs r3, 0 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _081273FC: .4byte Task_HandleChooseMonInput _08127400: .4byte CB2_PlayerPC_ReturnFromPartyMenu thumb_func_end ChooseMonToGiveMailFromMailbox thumb_func_start TryGiveMailToSelectedMon TryGiveMailToSelectedMon: @ 8127404 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 ldr r0, _08127450 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08127454 @ =gPlayerParty adds r5, r1, r0 ldr r1, _08127458 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] ldr r2, _0812745C @ =gSaveBlock1Ptr ldr r0, _08127460 @ =gPlayerPcMenuManager ldrh r1, [r0] adds r1, 0x6 ldrh r0, [r0, 0x2] adds r1, r0 lsls r0, r1, 3 adds r0, r1 lsls r0, 2 ldr r1, _08127464 @ =0x00002cd0 adds r0, r1 ldr r1, [r2] adds r4, r1, r0 adds r0, r5, 0 movs r1, 0xC bl GetMonData cmp r0, 0 beq _0812746C ldr r0, _08127468 @ =gText_PkmnHoldingItemCantHoldMail movs r1, 0x1 bl DisplayPartyMenuMessage b _08127482 .align 2, 0 _08127450: .4byte gPartyMenu _08127454: .4byte gPlayerParty _08127458: .4byte gPartyMenuUseExitCallback _0812745C: .4byte gSaveBlock1Ptr _08127460: .4byte gPlayerPcMenuManager _08127464: .4byte 0x00002cd0 _08127468: .4byte gText_PkmnHoldingItemCantHoldMail _0812746C: adds r0, r5, 0 adds r1, r4, 0 bl GiveMailToMon2 adds r0, r4, 0 bl ClearMailStruct ldr r0, _0812749C @ =gText_MailTransferredFromMailbox movs r1, 0x1 bl DisplayPartyMenuMessage _08127482: movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r0, _081274A0 @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r0, _081274A4 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0812749C: .4byte gText_MailTransferredFromMailbox _081274A0: .4byte gTasks _081274A4: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu thumb_func_end TryGiveMailToSelectedMon thumb_func_start InitChooseHalfPartyForBattle InitChooseHalfPartyForBattle: @ 81274A8 push {r4,lr} sub sp, 0xC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl ClearSelectedPartyOrder movs r0, 0 str r0, [sp] ldr r0, _081274EC @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _081274F0 @ =gMain ldr r0, [r0, 0x8] str r0, [sp, 0x8] movs r0, 0x4 movs r1, 0 movs r2, 0 movs r3, 0 bl InitPartyMenu ldr r1, _081274F4 @ =gPartyMenu lsls r4, 6 ldrb r2, [r1, 0x8] movs r0, 0x3F ands r0, r2 orrs r0, r4 strb r0, [r1, 0x8] ldr r0, _081274F8 @ =Task_ValidateChosenHalfParty str r0, [r1, 0x4] add sp, 0xC pop {r4} pop {r0} bx r0 .align 2, 0 _081274EC: .4byte Task_HandleChooseMonInput _081274F0: .4byte gMain _081274F4: .4byte gPartyMenu _081274F8: .4byte Task_ValidateChosenHalfParty thumb_func_end InitChooseHalfPartyForBattle thumb_func_start ClearSelectedPartyOrder ClearSelectedPartyOrder: @ 81274FC push {lr} ldr r0, _0812750C @ =gSelectedOrderFromParty movs r1, 0 movs r2, 0x3 bl memset pop {r0} bx r0 .align 2, 0 _0812750C: .4byte gSelectedOrderFromParty thumb_func_end ClearSelectedPartyOrder thumb_func_start GetPartySlotEntryStatus GetPartySlotEntryStatus: @ 8127510 push {r4,lr} lsls r0, 24 asrs r4, r0, 24 movs r0, 0x64 muls r0, r4 ldr r1, _0812752C @ =gPlayerParty adds r0, r1 bl GetBattleEntryEligibility lsls r0, 24 cmp r0, 0 bne _08127530 movs r0, 0x2 b _08127548 .align 2, 0 _0812752C: .4byte gPlayerParty _08127530: adds r0, r4, 0x1 lsls r0, 24 lsrs r0, 24 bl HasPartySlotAlreadyBeenSelected lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08127546 movs r0, 0 b _08127548 _08127546: movs r0, 0x1 _08127548: pop {r4} pop {r1} bx r1 thumb_func_end GetPartySlotEntryStatus thumb_func_start GetBattleEntryEligibility GetBattleEntryEligibility: @ 8127550 push {r4,r5,lr} adds r4, r0, 0 movs r5, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0812757A ldr r0, _08127580 @ =gPartyMenu ldrb r0, [r0, 0x8] lsrs r1, r0, 6 cmp r1, 0 beq _08127584 cmp r1, 0x1 beq _08127592 adds r0, r4, 0 movs r1, 0x38 bl GetMonData cmp r0, 0x1E bls _081275E0 _0812757A: movs r0, 0 b _081275E2 .align 2, 0 _08127580: .4byte gPartyMenu _08127584: adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 bne _081275E0 b _0812757A _08127592: ldr r0, _081275E8 @ =gSaveBlock2Ptr ldr r0, [r0] ldr r2, _081275EC @ =0x0000055c adds r0, r2 ldrb r0, [r0] ands r1, r0 cmp r1, 0 bne _081275AE adds r0, r4, 0 movs r1, 0x38 bl GetMonData cmp r0, 0x32 bhi _0812757A _081275AE: adds r0, r4, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r4, r0, 16 ldr r3, _081275F0 @ =gBattleTowerBannedSpecies lsls r1, r5, 1 adds r0, r1, r3 ldrh r0, [r0] ldr r2, _081275F4 @ =0x0000ffff cmp r0, r2 beq _081275E0 _081275C8: adds r0, r1, r3 ldrh r0, [r0] cmp r0, r4 beq _0812757A adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 lsls r1, r5, 1 adds r0, r1, r3 ldrh r0, [r0] cmp r0, r2 bne _081275C8 _081275E0: movs r0, 0x1 _081275E2: pop {r4,r5} pop {r1} bx r1 .align 2, 0 _081275E8: .4byte gSaveBlock2Ptr _081275EC: .4byte 0x0000055c _081275F0: .4byte gBattleTowerBannedSpecies _081275F4: .4byte 0x0000ffff thumb_func_end GetBattleEntryEligibility thumb_func_start CheckBattleEntriesAndGetMessage CheckBattleEntriesAndGetMessage: @ 81275F8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _08127618 @ =gPlayerParty mov r10, r0 ldr r0, _0812761C @ =gPartyMenu ldrb r0, [r0, 0x8] lsrs r0, 6 cmp r0, 0x1 beq _08127620 cmp r0, 0x2 beq _081276E8 b _08127700 .align 2, 0 _08127618: .4byte gPlayerParty _0812761C: .4byte gPartyMenu _08127620: ldr r1, _0812762C @ =gSelectedOrderFromParty ldrb r0, [r1, 0x2] cmp r0, 0 bne _08127630 movs r0, 0x11 b _08127702 .align 2, 0 _0812762C: .4byte gSelectedOrderFromParty _08127630: movs r5, 0 _08127632: ldr r2, _081276DC @ =gSelectedOrderFromParty adds r4, r2, r5 ldrb r0, [r4] movs r1, 0x64 muls r0, r1 subs r0, 0x64 add r0, r10 movs r1, 0xB bl GetMonData ldr r2, _081276E0 @ =sPartyMenuInternal ldr r1, [r2] ldr r2, _081276E4 @ =0x00000236 adds r1, r2 strh r0, [r1] ldrb r0, [r4] movs r1, 0x64 muls r0, r1 subs r0, 0x64 add r0, r10 movs r1, 0xC bl GetMonData ldr r2, _081276E0 @ =sPartyMenuInternal ldr r1, [r2] movs r2, 0x8D lsls r2, 2 adds r1, r2 strh r0, [r1] adds r1, r5, 0x1 lsls r0, r1, 24 lsrs r5, r0, 24 mov r9, r1 cmp r5, 0x2 bhi _081276D0 ldr r0, _081276E0 @ =sPartyMenuInternal mov r8, r0 movs r7, 0x64 _0812767E: mov r1, r8 ldr r0, [r1] ldr r2, _081276E4 @ =0x00000236 adds r0, r2 movs r1, 0 ldrsh r4, [r0, r1] ldr r2, _081276DC @ =gSelectedOrderFromParty adds r6, r2, r5 ldrb r0, [r6] muls r0, r7 subs r0, 0x64 add r0, r10 movs r1, 0xB bl GetMonData cmp r4, r0 beq _081276F8 mov r1, r8 ldr r0, [r1] movs r2, 0x8D lsls r2, 2 adds r1, r0, r2 movs r2, 0 ldrsh r0, [r1, r2] cmp r0, 0 beq _081276C6 adds r4, r0, 0 ldrb r0, [r6] muls r0, r7 subs r0, 0x64 add r0, r10 movs r1, 0xC bl GetMonData cmp r4, r0 beq _081276FC _081276C6: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x2 bls _0812767E _081276D0: mov r1, r9 lsls r0, r1, 24 lsrs r5, r0, 24 cmp r5, 0x1 bls _08127632 b _08127700 .align 2, 0 _081276DC: .4byte gSelectedOrderFromParty _081276E0: .4byte sPartyMenuInternal _081276E4: .4byte 0x00000236 _081276E8: ldr r2, _081276F4 @ =gSelectedOrderFromParty ldrb r0, [r2, 0x1] cmp r0, 0 bne _08127700 movs r0, 0x12 b _08127702 .align 2, 0 _081276F4: .4byte gSelectedOrderFromParty _081276F8: movs r0, 0x13 b _08127702 _081276FC: movs r0, 0x14 b _08127702 _08127700: movs r0, 0xFF _08127702: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end CheckBattleEntriesAndGetMessage thumb_func_start HasPartySlotAlreadyBeenSelected HasPartySlotAlreadyBeenSelected: @ 8127710 push {lr} lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 ldr r3, _08127728 @ =gSelectedOrderFromParty _0812771A: adds r0, r1, r3 ldrb r0, [r0] cmp r0, r2 bne _0812772C movs r0, 0x1 b _08127738 .align 2, 0 _08127728: .4byte gSelectedOrderFromParty _0812772C: adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 bls _0812771A movs r0, 0 _08127738: pop {r1} bx r1 thumb_func_end HasPartySlotAlreadyBeenSelected thumb_func_start Task_ValidateChosenHalfParty Task_ValidateChosenHalfParty: @ 812773C push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 bl CheckBattleEntriesAndGetMessage lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xFF beq _08127768 movs r0, 0x1A bl PlaySE adds r0, r4, 0 bl DisplayPartyMenuStdMessage ldr r0, _08127764 @ =gTasks lsls r1, r5, 2 adds r1, r5 b _08127796 .align 2, 0 _08127764: .4byte gTasks _08127768: ldr r0, _08127780 @ =gSelectedOrderFromParty ldrb r0, [r0] cmp r0, 0 beq _08127784 movs r0, 0x5 bl PlaySE adds r0, r5, 0 bl Task_ClosePartyMenu b _0812779E .align 2, 0 _08127780: .4byte gSelectedOrderFromParty _08127784: movs r0, 0x1A bl PlaySE movs r0, 0xE bl DisplayPartyMenuStdMessage ldr r0, _081277A4 @ =gTasks lsls r1, r6, 2 adds r1, r6 _08127796: lsls r1, 3 adds r1, r0 ldr r0, _081277A8 @ =Task_ContinueChoosingHalfParty str r0, [r1] _0812779E: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081277A4: .4byte gTasks _081277A8: .4byte Task_ContinueChoosingHalfParty thumb_func_end Task_ValidateChosenHalfParty thumb_func_start Task_ContinueChoosingHalfParty Task_ContinueChoosingHalfParty: @ 81277AC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _081277E8 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _081277C6 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _081277E0 _081277C6: movs r0, 0x5 bl PlaySE movs r0, 0 bl DisplayPartyMenuStdMessage ldr r0, _081277EC @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, _081277F0 @ =Task_HandleChooseMonInput str r0, [r1] _081277E0: pop {r4} pop {r0} bx r0 .align 2, 0 _081277E8: .4byte gMain _081277EC: .4byte gTasks _081277F0: .4byte Task_HandleChooseMonInput thumb_func_end Task_ContinueChoosingHalfParty thumb_func_start ChooseMonForMoveTutor ChooseMonForMoveTutor: @ 81277F4 push {lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 movs r2, 0 str r2, [sp] ldr r2, _08127818 @ =Task_HandleChooseMonInput str r2, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0 movs r2, 0 movs r3, 0 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08127818: .4byte Task_HandleChooseMonInput thumb_func_end ChooseMonForMoveTutor thumb_func_start sub_812781C sub_812781C: @ 812781C push {lr} sub sp, 0xC ldr r0, _08127844 @ =gSpecialVar_0x8005 ldrh r0, [r0] cmp r0, 0xE bhi _08127850 movs r0, 0x4 str r0, [sp] ldr r0, _08127848 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _0812784C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0xC movs r3, 0 bl InitPartyMenu b _08127870 .align 2, 0 _08127844: .4byte gSpecialVar_0x8005 _08127848: .4byte Task_HandleChooseMonInput _0812784C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic _08127850: movs r0, 0x7F str r0, [sp] ldr r0, _08127878 @ =TryTutorSelectedMon str r0, [sp, 0x4] ldr r0, _0812787C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0xC movs r3, 0 bl InitPartyMenu ldr r1, _08127880 @ =gPartyMenu ldr r0, _08127884 @ =gSpecialVar_0x8007 ldrh r0, [r0] strb r0, [r1, 0x9] _08127870: add sp, 0xC pop {r0} bx r0 .align 2, 0 _08127878: .4byte TryTutorSelectedMon _0812787C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic _08127880: .4byte gPartyMenu _08127884: .4byte gSpecialVar_0x8007 thumb_func_end sub_812781C thumb_func_start ChooseMonForWirelessMinigame ChooseMonForWirelessMinigame: @ 8127888 push {lr} sub sp, 0xC movs r0, 0x1 str r0, [sp] ldr r0, _081278AC @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _081278B0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic str r0, [sp, 0x8] movs r0, 0xB movs r1, 0 movs r2, 0xD movs r3, 0 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _081278AC: .4byte Task_HandleChooseMonInput _081278B0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic thumb_func_end ChooseMonForWirelessMinigame thumb_func_start GetPartyLayoutFromBattleType GetPartyLayoutFromBattleType: @ 81278B4 push {lr} bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _081278C4 movs r0, 0 b _081278D6 _081278C4: bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081278D4 movs r0, 0x1 b _081278D6 _081278D4: movs r0, 0x2 _081278D6: pop {r1} bx r1 thumb_func_end GetPartyLayoutFromBattleType thumb_func_start OpenPartyMenuInTutorialBattle OpenPartyMenuInTutorialBattle: @ 81278DC push {r4,lr} sub sp, 0xC lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x8 bl sub_80EB2E0 lsls r0, 24 cmp r0, 0 bne _08127930 ldr r0, _08127924 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _08127930 bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x7F str r0, [sp] ldr r0, _08127928 @ =sub_8120C3C str r0, [sp, 0x4] ldr r0, _0812792C @ =SetCB2ToReshowScreenAfterMenu str r0, [sp, 0x8] movs r0, 0x1 adds r2, r4, 0 movs r3, 0 bl InitPartyMenu movs r0, 0x8 bl sub_80EB2F4 b _08127950 .align 2, 0 _08127924: .4byte gBattleTypeFlags _08127928: .4byte sub_8120C3C _0812792C: .4byte SetCB2ToReshowScreenAfterMenu _08127930: bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0 str r0, [sp] ldr r0, _08127960 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08127964 @ =SetCB2ToReshowScreenAfterMenu str r0, [sp, 0x8] movs r0, 0x1 adds r2, r4, 0 movs r3, 0 bl InitPartyMenu _08127950: bl nullsub_44 bl UpdatePartyToBattleOrder add sp, 0xC pop {r4} pop {r0} bx r0 .align 2, 0 _08127960: .4byte Task_HandleChooseMonInput _08127964: .4byte SetCB2ToReshowScreenAfterMenu thumb_func_end OpenPartyMenuInTutorialBattle thumb_func_start OpenPartyMenuInBattle OpenPartyMenuInBattle: @ 8127968 push {lr} sub sp, 0xC bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0 str r0, [sp] ldr r0, _0812799C @ =sub_8120EBC str r0, [sp, 0x4] ldr r0, _081279A0 @ =SetCB2ToReshowScreenAfterMenu str r0, [sp, 0x8] movs r0, 0x1 movs r2, 0 movs r3, 0 bl InitPartyMenu bl nullsub_44 bl UpdatePartyToBattleOrder add sp, 0xC pop {r0} bx r0 .align 2, 0 _0812799C: .4byte sub_8120EBC _081279A0: .4byte SetCB2ToReshowScreenAfterMenu thumb_func_end OpenPartyMenuInBattle thumb_func_start ChooseMonForInBattleItem ChooseMonForInBattleItem: @ 81279A4 push {lr} sub sp, 0xC bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x5 str r0, [sp] ldr r0, _081279D8 @ =sub_8120FCC str r0, [sp, 0x4] ldr r0, _081279DC @ =sub_8107ECC str r0, [sp, 0x8] movs r0, 0x1 movs r2, 0xE movs r3, 0 bl InitPartyMenu bl nullsub_44 bl UpdatePartyToBattleOrder add sp, 0xC pop {r0} bx r0 .align 2, 0 _081279D8: .4byte sub_8120FCC _081279DC: .4byte sub_8107ECC thumb_func_end ChooseMonForInBattleItem thumb_func_start sub_81279E0 sub_81279E0: @ 81279E0 push {r4,lr} sub sp, 0xC movs r0, 0x8 bl sub_80EB2E0 lsls r0, 24 cmp r0, 0 bne _08127A30 ldr r0, _08127A24 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _08127A30 bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x7F str r0, [sp] ldr r0, _08127A28 @ =sub_8120C3C str r0, [sp, 0x4] ldr r0, _08127A2C @ =sub_8107ECC str r0, [sp, 0x8] movs r0, 0x1 movs r2, 0x3 movs r3, 0 bl InitPartyMenu movs r0, 0x8 bl sub_80EB2F4 b _08127A62 .align 2, 0 _08127A24: .4byte gBattleTypeFlags _08127A28: .4byte sub_8120C3C _08127A2C: .4byte sub_8107ECC _08127A30: ldr r0, _08127A74 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 lsrs r0, 24 ldr r4, _08127A78 @ =sub_8107ECC cmp r0, 0x5 bne _08127A44 ldr r4, _08127A7C @ =sub_8124DB0 _08127A44: bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x5 str r0, [sp] ldr r0, _08127A80 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] str r4, [sp, 0x8] movs r0, 0x1 movs r2, 0x3 movs r3, 0 bl InitPartyMenu _08127A62: bl nullsub_44 bl UpdatePartyToBattleOrder add sp, 0xC pop {r4} pop {r0} bx r0 .align 2, 0 _08127A74: .4byte gSpecialVar_ItemId _08127A78: .4byte sub_8107ECC _08127A7C: .4byte sub_8124DB0 _08127A80: .4byte Task_HandleChooseMonInput thumb_func_end sub_81279E0 thumb_func_start GetPartyMenuActionsTypeInBattle GetPartyMenuActionsTypeInBattle: @ 8127A84 push {r4,lr} adds r4, r0, 0 ldr r0, _08127AA4 @ =gPlayerParty + 100 @ &gPlayerParty[1] movs r1, 0xB bl GetMonData cmp r0, 0 beq _08127AA0 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 beq _08127AA8 _08127AA0: movs r0, 0x7 b _08127ABA .align 2, 0 _08127AA4: .4byte gPlayerParty + 100 @ &gPlayerParty[1] _08127AA8: ldr r0, _08127AB4 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x1 beq _08127AB8 movs r0, 0x2 b _08127ABA .align 2, 0 _08127AB4: .4byte gPartyMenu _08127AB8: movs r0, 0x3 _08127ABA: pop {r4} pop {r1} bx r1 thumb_func_end GetPartyMenuActionsTypeInBattle thumb_func_start TrySwitchInPokemon TrySwitchInPokemon: @ 8127AC0 push {r4-r7,lr} mov r7, r8 push {r7} bl GetCursorSelectionMonId lsls r0, 24 lsrs r5, r0, 24 bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08127B08 cmp r5, 0x1 beq _08127AE6 cmp r5, 0x4 beq _08127AE6 cmp r5, 0x5 bne _08127B08 _08127AE6: ldr r4, _08127AFC @ =gStringVar1 bl GetTrainerPartnerName adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldr r0, _08127B00 @ =gStringVar4 ldr r1, _08127B04 @ =gUnknown_8416A98 b _08127C86 .align 2, 0 _08127AFC: .4byte gStringVar1 _08127B00: .4byte gStringVar4 _08127B04: .4byte gUnknown_8416A98 _08127B08: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _08127B2C @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 bne _08127B3C ldr r1, _08127B30 @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname ldr r0, _08127B34 @ =gStringVar4 ldr r1, _08127B38 @ =gUnknown_8416A75 b _08127C86 .align 2, 0 _08127B2C: .4byte gPlayerParty _08127B30: .4byte gStringVar1 _08127B34: .4byte gStringVar4 _08127B38: .4byte gUnknown_8416A75 _08127B3C: movs r4, 0 b _08127B68 _08127B40: adds r0, r4, 0 bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08127B62 adds r0, r5, 0 bl GetPartyIdFromBattleSlot lsls r0, 24 ldr r2, _08127B90 @ =gBattlerPartyIndexes lsls r1, r4, 1 adds r1, r2 lsrs r0, 24 ldrh r1, [r1] cmp r0, r1 beq _08127C40 _08127B62: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 _08127B68: ldr r0, _08127B94 @ =gBattlersCount ldrb r0, [r0] cmp r4, r0 bcc _08127B40 movs r7, 0x64 adds r0, r5, 0 muls r0, r7 ldr r1, _08127B98 @ =gPlayerParty mov r8, r1 adds r6, r0, r1 adds r0, r6, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 beq _08127BA4 ldr r0, _08127B9C @ =gStringVar4 ldr r1, _08127BA0 @ =gUnknown_8416ACB b _08127C86 .align 2, 0 _08127B90: .4byte gBattlerPartyIndexes _08127B94: .4byte gBattlersCount _08127B98: .4byte gPlayerParty _08127B9C: .4byte gStringVar4 _08127BA0: .4byte gUnknown_8416ACB _08127BA4: adds r0, r5, 0 bl GetPartyIdFromBattleSlot ldr r1, _08127BC8 @ =gBattleStruct ldr r1, [r1] adds r1, 0x8B lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bne _08127BD8 ldr r1, _08127BCC @ =gStringVar1 adds r0, r6, 0 bl GetMonNickname ldr r0, _08127BD0 @ =gStringVar4 ldr r1, _08127BD4 @ =gUnknown_8416A55 b _08127C86 .align 2, 0 _08127BC8: .4byte gBattleStruct _08127BCC: .4byte gStringVar1 _08127BD0: .4byte gStringVar4 _08127BD4: .4byte gUnknown_8416A55 _08127BD8: ldr r0, _08127BE8 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x4 bne _08127BEC bl SetMonPreventsSwitchingString b _08127C8A .align 2, 0 _08127BE8: .4byte gPartyMenu _08127BEC: cmp r0, 0x2 beq _08127C64 adds r0, r5, 0 bl GetPartyIdFromBattleSlot ldr r1, _08127C30 @ =gSelectedMonPartyId strb r0, [r1] ldr r1, _08127C34 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldr r1, _08127C38 @ =gBattlerPartyIndexes ldr r0, _08127C3C @ =gBattlerInMenuId ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrb r0, [r0] bl pokemon_order_func adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 adds r1, r5, 0 bl SwitchPartyMonSlots adds r0, r4, 0 muls r0, r7 add r0, r8 adds r1, r6, 0 bl SwapPartyPokemon movs r0, 0x1 b _08127C8C .align 2, 0 _08127C30: .4byte gSelectedMonPartyId _08127C34: .4byte gPartyMenuUseExitCallback _08127C38: .4byte gBattlerPartyIndexes _08127C3C: .4byte gBattlerInMenuId _08127C40: movs r0, 0x64 muls r0, r5 ldr r1, _08127C54 @ =gPlayerParty adds r0, r1 ldr r1, _08127C58 @ =gStringVar1 bl GetMonNickname ldr r0, _08127C5C @ =gStringVar4 ldr r1, _08127C60 @ =gUnknown_8416A3A b _08127C86 .align 2, 0 _08127C54: .4byte gPlayerParty _08127C58: .4byte gStringVar1 _08127C5C: .4byte gStringVar4 _08127C60: .4byte gUnknown_8416A3A _08127C64: ldr r0, _08127C98 @ =gBattlerInMenuId ldrb r0, [r0] ldr r1, _08127C9C @ =gBattlerPartyIndexes lsls r0, 1 adds r0, r1 ldrb r0, [r0] bl pokemon_order_func lsls r0, 24 lsrs r0, 24 muls r0, r7 add r0, r8 ldr r1, _08127CA0 @ =gStringVar1 bl GetMonNickname ldr r0, _08127CA4 @ =gStringVar4 ldr r1, _08127CA8 @ =gUnknown_8416A1E _08127C86: bl StringExpandPlaceholders _08127C8A: movs r0, 0 _08127C8C: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08127C98: .4byte gBattlerInMenuId _08127C9C: .4byte gBattlerPartyIndexes _08127CA0: .4byte gStringVar1 _08127CA4: .4byte gStringVar4 _08127CA8: .4byte gUnknown_8416A1E thumb_func_end TrySwitchInPokemon thumb_func_start BufferBattlePartyCurrentOrder BufferBattlePartyCurrentOrder: @ 8127CAC push {r4,lr} ldr r4, _08127CC8 @ =gBattlePartyCurrentOrder bl sub_80435E0 adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl BufferBattlePartyOrder pop {r4} pop {r0} bx r0 .align 2, 0 _08127CC8: .4byte gBattlePartyCurrentOrder thumb_func_end BufferBattlePartyCurrentOrder thumb_func_start BufferBattlePartyOrder BufferBattlePartyOrder: @ 8127CCC push {r4-r6,lr} sub sp, 0x8 adds r6, r0, 0 lsls r1, 24 lsrs r4, r1, 24 bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08127D02 cmp r4, 0 beq _08127CF4 movs r0, 0x30 strb r0, [r6] movs r0, 0x45 strb r0, [r6, 0x1] movs r0, 0x12 strb r0, [r6, 0x2] b _08127D9C _08127CF4: movs r0, 0x3 strb r0, [r6] movs r0, 0x12 strb r0, [r6, 0x1] movs r0, 0x45 strb r0, [r6, 0x2] b _08127D9C _08127D02: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08127D40 movs r5, 0x1 movs r0, 0 bl GetBattlerAtPosition mov r2, sp ldr r1, _08127D3C @ =gBattlerPartyIndexes lsls r0, 24 lsrs r0, 23 adds r0, r1 ldrh r0, [r0] strb r0, [r2] movs r4, 0 mov r1, sp _08127D26: ldrb r0, [r1] cmp r4, r0 beq _08127D34 mov r2, sp adds r0, r2, r5 strb r4, [r0] adds r5, 0x1 _08127D34: adds r4, 0x1 cmp r4, 0x5 ble _08127D26 b _08127D84 .align 2, 0 _08127D3C: .4byte gBattlerPartyIndexes _08127D40: movs r5, 0x2 movs r0, 0 bl GetBattlerAtPosition mov r1, sp ldr r4, _08127DA4 @ =gBattlerPartyIndexes lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r0, [r0] strb r0, [r1] movs r0, 0x2 bl GetBattlerAtPosition mov r1, sp lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r0, [r0] strb r0, [r1, 0x1] movs r4, 0 _08127D6A: ldrb r0, [r1] cmp r4, r0 beq _08127D7E ldrb r0, [r1, 0x1] cmp r4, r0 beq _08127D7E mov r2, sp adds r0, r2, r5 strb r4, [r0] adds r5, 0x1 _08127D7E: adds r4, 0x1 cmp r4, 0x5 ble _08127D6A _08127D84: movs r4, 0 mov r3, sp _08127D88: adds r0, r6, r4 ldrb r1, [r3] lsls r1, 4 ldrb r2, [r3, 0x1] orrs r1, r2 strb r1, [r0] adds r3, 0x2 adds r4, 0x1 cmp r4, 0x2 ble _08127D88 _08127D9C: add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08127DA4: .4byte gBattlerPartyIndexes thumb_func_end BufferBattlePartyOrder thumb_func_start BufferBattlePartyCurrentOrderBySide BufferBattlePartyCurrentOrderBySide: @ 8127DA8 push {lr} adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 lsls r1, 24 lsrs r1, 24 ldr r0, _08127DC8 @ =gBattleStruct lsls r3, r2, 1 adds r3, r2 adds r3, 0x60 ldr r0, [r0] adds r0, r3 bl BufferBattlePartyOrderBySide pop {r0} bx r0 .align 2, 0 _08127DC8: .4byte gBattleStruct thumb_func_end BufferBattlePartyCurrentOrderBySide thumb_func_start BufferBattlePartyOrderBySide BufferBattlePartyOrderBySide: @ 8127DCC push {r4-r7,lr} sub sp, 0x8 adds r5, r0, 0 adds r0, r2, 0 lsls r1, 24 lsrs r7, r1, 24 lsls r0, 24 lsrs r0, 24 bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08127DF4 movs r0, 0 bl GetBattlerAtPosition lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x2 b _08127E00 _08127DF4: movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x3 _08127E00: bl GetBattlerAtPosition lsls r0, 24 lsrs r6, r0, 24 bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08127E34 cmp r7, 0 beq _08127E26 movs r0, 0x30 strb r0, [r5] movs r0, 0x45 strb r0, [r5, 0x1] movs r0, 0x12 strb r0, [r5, 0x2] b _08127EB6 _08127E26: movs r0, 0x3 strb r0, [r5] movs r0, 0x12 strb r0, [r5, 0x1] movs r0, 0x45 strb r0, [r5, 0x2] b _08127EB6 _08127E34: bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08127E6C movs r3, 0x1 mov r2, sp ldr r1, _08127E68 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] strb r0, [r2] movs r4, 0 mov r1, sp _08127E50: ldrb r0, [r1] cmp r4, r0 beq _08127E5E mov r2, sp adds r0, r2, r3 strb r4, [r0] adds r3, 0x1 _08127E5E: adds r4, 0x1 cmp r4, 0x5 ble _08127E50 b _08127E9E .align 2, 0 _08127E68: .4byte gBattlerPartyIndexes _08127E6C: movs r3, 0x2 mov r1, sp ldr r2, _08127EC0 @ =gBattlerPartyIndexes lsls r0, r4, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1] lsls r0, r6, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x1] movs r4, 0 _08127E84: ldrb r0, [r1] cmp r4, r0 beq _08127E98 ldrb r0, [r1, 0x1] cmp r4, r0 beq _08127E98 mov r2, sp adds r0, r2, r3 strb r4, [r0] adds r3, 0x1 _08127E98: adds r4, 0x1 cmp r4, 0x5 ble _08127E84 _08127E9E: movs r4, 0 mov r3, sp _08127EA2: adds r0, r5, r4 ldrb r1, [r3] lsls r1, 4 ldrb r2, [r3, 0x1] orrs r1, r2 strb r1, [r0] adds r3, 0x2 adds r4, 0x1 cmp r4, 0x2 ble _08127EA2 _08127EB6: add sp, 0x8 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08127EC0: .4byte gBattlerPartyIndexes thumb_func_end BufferBattlePartyOrderBySide thumb_func_start SwitchPartyOrderLinkMulti SwitchPartyOrderLinkMulti: @ 8127EC4 push {r4-r7,lr} sub sp, 0x8 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r5, r1, 24 lsls r2, 24 lsrs r6, r2, 24 movs r7, 0 bl IsMultiBattle lsls r0, 24 cmp r0, 0 beq _08127F72 ldr r0, _08127F28 @ =gBattleStruct lsls r1, r4, 1 adds r1, r4 adds r1, 0x60 ldr r0, [r0] adds r4, r0, r1 movs r2, 0 add r6, sp mov r12, r6 movs r6, 0xF mov r3, sp _08127EF6: adds r1, r4, r2 ldrb r0, [r1] lsrs r0, 4 strb r0, [r3] adds r3, 0x1 ldrb r1, [r1] adds r0, r6, 0 ands r0, r1 strb r0, [r3] adds r3, 0x1 adds r2, 0x1 cmp r2, 0x2 ble _08127EF6 mov r0, r12 ldrb r3, [r0] movs r2, 0 mov r0, sp ldrb r0, [r0] cmp r0, r5 bne _08127F2C mov r0, sp ldrb r7, [r0] strb r3, [r0] b _08127F40 .align 2, 0 _08127F28: .4byte gBattleStruct _08127F2C: adds r2, 0x1 cmp r2, 0x5 bgt _08127F40 mov r0, sp adds r1, r0, r2 ldrb r0, [r1] cmp r0, r5 bne _08127F2C adds r7, r0, 0 strb r3, [r1] _08127F40: cmp r2, 0x6 beq _08127F72 mov r0, r12 strb r7, [r0] mov r0, sp ldrb r0, [r0] lsls r0, 4 mov r1, sp ldrb r1, [r1, 0x1] orrs r0, r1 strb r0, [r4] mov r0, sp ldrb r0, [r0, 0x2] lsls r0, 4 mov r1, sp ldrb r1, [r1, 0x3] orrs r0, r1 strb r0, [r4, 0x1] mov r0, sp ldrb r0, [r0, 0x4] lsls r0, 4 mov r1, sp ldrb r1, [r1, 0x5] orrs r0, r1 strb r0, [r4, 0x2] _08127F72: add sp, 0x8 pop {r4-r7} pop {r0} bx r0 thumb_func_end SwitchPartyOrderLinkMulti thumb_func_start GetPartyIdFromBattleSlot GetPartyIdFromBattleSlot: @ 8127F7C push {lr} lsls r0, 24 lsrs r2, r0, 24 movs r1, 0x1 ands r1, r2 lsrs r2, r0, 25 cmp r1, 0 beq _08127F9C ldr r0, _08127F98 @ =gBattlePartyCurrentOrder adds r0, r2, r0 ldrb r0, [r0] movs r1, 0xF ands r1, r0 b _08127FA4 .align 2, 0 _08127F98: .4byte gBattlePartyCurrentOrder _08127F9C: ldr r0, _08127FAC @ =gBattlePartyCurrentOrder adds r0, r2, r0 ldrb r0, [r0] lsrs r1, r0, 4 _08127FA4: adds r0, r1, 0 pop {r1} bx r1 .align 2, 0 _08127FAC: .4byte gBattlePartyCurrentOrder thumb_func_end GetPartyIdFromBattleSlot thumb_func_start SetPartyIdAtBattleSlot SetPartyIdAtBattleSlot: @ 8127FB0 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 lsls r1, 24 lsrs r4, r1, 24 movs r1, 0x1 ands r1, r3 lsrs r3, r0, 25 cmp r1, 0 beq _08127FD8 ldr r0, _08127FD4 @ =gBattlePartyCurrentOrder adds r0, r3, r0 ldrb r2, [r0] movs r1, 0xF0 ands r1, r2 orrs r1, r4 strb r1, [r0] b _08127FE8 .align 2, 0 _08127FD4: .4byte gBattlePartyCurrentOrder _08127FD8: ldr r2, _08127FF0 @ =gBattlePartyCurrentOrder adds r2, r3, r2 ldrb r1, [r2] movs r0, 0xF ands r0, r1 lsls r1, r4, 4 orrs r0, r1 strb r0, [r2] _08127FE8: pop {r4} pop {r0} bx r0 .align 2, 0 _08127FF0: .4byte gBattlePartyCurrentOrder thumb_func_end SetPartyIdAtBattleSlot thumb_func_start SwitchPartyMonSlots SwitchPartyMonSlots: @ 8127FF4 push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 lsls r5, 24 lsrs r5, 24 lsls r6, 24 lsrs r6, 24 adds r0, r5, 0 bl GetPartyIdFromBattleSlot adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 bl GetPartyIdFromBattleSlot adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl SetPartyIdAtBattleSlot adds r0, r6, 0 adds r1, r4, 0 bl SetPartyIdAtBattleSlot pop {r4-r6} pop {r0} bx r0 thumb_func_end SwitchPartyMonSlots thumb_func_start pokemon_order_func pokemon_order_func: @ 8128030 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 movs r3, 0 movs r2, 0 ldr r5, _08128058 @ =gBattlePartyCurrentOrder _0812803C: adds r0, r3, r5 ldrb r1, [r0] lsrs r0, r1, 4 cmp r0, r4 beq _08128054 adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 movs r0, 0xF ands r0, r1 cmp r0, r4 bne _0812805C _08128054: adds r0, r2, 0 b _0812806E .align 2, 0 _08128058: .4byte gBattlePartyCurrentOrder _0812805C: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x2 bls _0812803C movs r0, 0 _0812806E: pop {r4,r5} pop {r1} bx r1 thumb_func_end pokemon_order_func thumb_func_start UpdatePartyToBattleOrder UpdatePartyToBattleOrder: @ 8128074 push {r4-r6,lr} movs r4, 0x96 lsls r4, 2 adds r0, r4, 0 bl Alloc adds r5, r0, 0 ldr r1, _081280C0 @ =gPlayerParty adds r2, r4, 0 bl memcpy movs r4, 0 movs r6, 0x64 _0812808E: adds r0, r4, 0 bl pokemon_order_func lsls r0, 24 lsrs r0, 24 muls r0, r6 ldr r1, _081280C0 @ =gPlayerParty adds r0, r1 adds r1, r4, 0 muls r1, r6 adds r1, r5 movs r2, 0x64 bl memcpy adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _0812808E adds r0, r5, 0 bl Free pop {r4-r6} pop {r0} bx r0 .align 2, 0 _081280C0: .4byte gPlayerParty thumb_func_end UpdatePartyToBattleOrder thumb_func_start UpdatePartyToFieldOrder UpdatePartyToFieldOrder: @ 81280C4 push {r4-r6,lr} movs r4, 0x96 lsls r4, 2 adds r0, r4, 0 bl Alloc adds r5, r0, 0 ldr r1, _08128110 @ =gPlayerParty adds r2, r4, 0 bl memcpy movs r4, 0 movs r6, 0x64 _081280DE: adds r0, r4, 0 bl GetPartyIdFromBattleSlot lsls r0, 24 lsrs r0, 24 muls r0, r6 ldr r1, _08128110 @ =gPlayerParty adds r0, r1 adds r1, r4, 0 muls r1, r6 adds r1, r5 movs r2, 0x64 bl memcpy adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _081280DE adds r0, r5, 0 bl Free pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08128110: .4byte gPlayerParty thumb_func_end UpdatePartyToFieldOrder thumb_func_start SwitchAliveMonIntoLeadSlot SwitchAliveMonIntoLeadSlot: @ 8128114 push {r4-r7,lr} mov r7, r8 push {r7} movs r6, 0x1 movs r7, 0x64 ldr r0, _0812816C @ =gPlayerParty mov r8, r0 _08128122: adds r0, r6, 0 bl GetPartyIdFromBattleSlot lsls r0, 24 lsrs r0, 24 muls r0, r7 mov r1, r8 adds r5, r0, r1 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08128170 adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08128170 movs r0, 0 bl GetPartyIdFromBattleSlot adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0 adds r1, r6, 0 bl SwitchPartyMonSlots adds r0, r4, 0 muls r0, r7 add r0, r8 adds r1, r5, 0 bl SwapPartyPokemon b _0812817A .align 2, 0 _0812816C: .4byte gPlayerParty _08128170: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x5 bls _08128122 _0812817A: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end SwitchAliveMonIntoLeadSlot thumb_func_start CB2_SetUpExitToBattleScreen CB2_SetUpExitToBattleScreen: @ 8128184 push {lr} bl CB2_SetUpReshowBattleScreenAfterMenu ldr r0, _08128194 @ =SetCB2ToReshowScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _08128194: .4byte SetCB2ToReshowScreenAfterMenu thumb_func_end CB2_SetUpExitToBattleScreen thumb_func_start ShowPartyMenuToShowcaseMultiBattleParty ShowPartyMenuToShowcaseMultiBattleParty: @ 8128198 push {lr} sub sp, 0xC movs r0, 0x7F str r0, [sp] ldr r0, _081281BC @ =Task_InitMultiPartnerPartySlideIn str r0, [sp, 0x4] ldr r0, _081281C0 @ =gMain ldr r0, [r0, 0x8] str r0, [sp, 0x8] movs r0, 0x5 movs r1, 0x3 movs r2, 0 movs r3, 0 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _081281BC: .4byte Task_InitMultiPartnerPartySlideIn _081281C0: .4byte gMain thumb_func_end ShowPartyMenuToShowcaseMultiBattleParty thumb_func_start Task_InitMultiPartnerPartySlideIn Task_InitMultiPartnerPartySlideIn: @ 81281C4 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r1, _081281F4 @ =gTasks lsls r4, r0, 2 adds r4, r0 lsls r4, 3 adds r4, r1 movs r1, 0x80 lsls r1, 1 strh r1, [r4, 0x8] bl SlideMultiPartyMenuBoxSpritesOneStep movs r1, 0x80 lsls r1, 9 movs r0, 0x2 movs r2, 0 bl ChangeBgX ldr r0, _081281F8 @ =Task_MultiPartnerPartySlideIn str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _081281F4: .4byte gTasks _081281F8: .4byte Task_MultiPartnerPartySlideIn thumb_func_end Task_InitMultiPartnerPartySlideIn thumb_func_start Task_MultiPartnerPartySlideIn Task_MultiPartnerPartySlideIn: @ 81281FC push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r6, r5, 2 adds r0, r6, r5 lsls r0, 3 ldr r1, _08128270 @ =gTasks+0x8 adds r4, r0, r1 ldr r0, _08128274 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08128268 ldrh r0, [r4] subs r0, 0x8 strh r0, [r4] adds r0, r5, 0 bl SlideMultiPartyMenuBoxSpritesOneStep movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 bne _08128268 movs r4, 0x3 ldr r7, _08128278 @ =gMultiPartnerParty _08128230: subs r0, r4, 0x3 lsls r0, 5 adds r0, r7 ldrh r0, [r0] cmp r0, 0 beq _0812824C ldr r0, _0812827C @ =sPartyMenuBoxes ldr r1, [r0] lsls r0, r4, 4 adds r0, r1 ldrb r0, [r0, 0x9] movs r1, 0 bl AnimateSelectedPartyIcon _0812824C: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x5 bls _08128230 movs r0, 0x71 bl PlaySE ldr r0, _08128280 @ =gTasks adds r1, r6, r5 lsls r1, 3 adds r1, r0 ldr r0, _08128284 @ =Task_WaitAfterMultiPartnerPartySlideIn str r0, [r1] _08128268: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08128270: .4byte gTasks+0x8 _08128274: .4byte gPaletteFade _08128278: .4byte gMultiPartnerParty _0812827C: .4byte sPartyMenuBoxes _08128280: .4byte gTasks _08128284: .4byte Task_WaitAfterMultiPartnerPartySlideIn thumb_func_end Task_MultiPartnerPartySlideIn thumb_func_start Task_WaitAfterMultiPartnerPartySlideIn Task_WaitAfterMultiPartnerPartySlideIn: @ 8128288 push {lr} lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, _081282B4 @ =gTasks+0x8 adds r0, r1 ldrh r1, [r0] adds r1, 0x1 strh r1, [r0] lsls r1, 16 movs r0, 0x80 lsls r0, 17 cmp r1, r0 bne _081282AE adds r0, r2, 0 bl Task_ClosePartyMenu _081282AE: pop {r0} bx r0 .align 2, 0 _081282B4: .4byte gTasks+0x8 thumb_func_end Task_WaitAfterMultiPartnerPartySlideIn thumb_func_start MoveMultiPartyMenuBoxSprite MoveMultiPartyMenuBoxSprite: @ 81282B8 push {lr} lsls r0, 24 lsrs r2, r0, 24 lsls r1, 16 lsrs r3, r1, 16 cmp r1, 0 blt _081282D2 ldr r1, _081282D8 @ =gSprites lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r1 strh r3, [r0, 0x24] _081282D2: pop {r0} bx r0 .align 2, 0 _081282D8: .4byte gSprites thumb_func_end MoveMultiPartyMenuBoxSprite thumb_func_start SlideMultiPartyMenuBoxSpritesOneStep SlideMultiPartyMenuBoxSpritesOneStep: @ 81282DC push {r4-r7,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _08128364 @ =gTasks+0x8 adds r5, r1, r0 movs r6, 0x3 ldr r7, _08128368 @ =sPartyMenuBoxes _081282F0: ldr r0, _0812836C @ =gMultiPartnerParty subs r1, r6, 0x3 lsls r1, 5 adds r1, r0 ldrh r0, [r1] cmp r0, 0 beq _08128348 ldr r0, [r7] lsls r4, r6, 4 adds r0, r4, r0 ldrb r0, [r0, 0x9] ldrh r1, [r5] subs r1, 0x8 lsls r1, 16 asrs r1, 16 bl MoveMultiPartyMenuBoxSprite ldr r0, [r7] adds r0, r4, r0 ldrb r0, [r0, 0xA] ldrh r1, [r5] subs r1, 0x8 lsls r1, 16 asrs r1, 16 bl MoveMultiPartyMenuBoxSprite ldr r0, [r7] adds r0, r4, r0 ldrb r0, [r0, 0xB] ldrh r1, [r5] subs r1, 0x8 lsls r1, 16 asrs r1, 16 bl MoveMultiPartyMenuBoxSprite ldr r0, [r7] adds r4, r0 ldrb r0, [r4, 0xC] ldrh r1, [r5] subs r1, 0x8 lsls r1, 16 asrs r1, 16 bl MoveMultiPartyMenuBoxSprite _08128348: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x5 bls _081282F0 movs r1, 0x80 lsls r1, 4 movs r0, 0x2 movs r2, 0x1 bl ChangeBgX pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08128364: .4byte gTasks+0x8 _08128368: .4byte sPartyMenuBoxes _0812836C: .4byte gMultiPartnerParty thumb_func_end SlideMultiPartyMenuBoxSpritesOneStep thumb_func_start ChooseMonForDaycare ChooseMonForDaycare: @ 8128370 push {lr} sub sp, 0xC ldr r1, _08128398 @ =gFieldCallback2 ldr r0, _0812839C @ =CB2_FadeFromPartyMenu str r0, [r1] movs r0, 0xF str r0, [sp] ldr r0, _081283A0 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _081283A4 @ =CB2_ReturnToField str r0, [sp, 0x8] movs r0, 0x6 movs r1, 0 movs r2, 0 movs r3, 0 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08128398: .4byte gFieldCallback2 _0812839C: .4byte CB2_FadeFromPartyMenu _081283A0: .4byte Task_HandleChooseMonInput _081283A4: .4byte CB2_ReturnToField thumb_func_end ChooseMonForDaycare thumb_func_start ChoosePartyMonByMenuType ChoosePartyMonByMenuType: @ 81283A8 push {lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 ldr r2, _081283D4 @ =gFieldCallback2 ldr r1, _081283D8 @ =CB2_FadeFromPartyMenu str r1, [r2] movs r1, 0 str r1, [sp] ldr r1, _081283DC @ =Task_HandleChooseMonInput str r1, [sp, 0x4] ldr r1, _081283E0 @ =CB2_ReturnToField str r1, [sp, 0x8] movs r1, 0 movs r2, 0xB movs r3, 0 bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _081283D4: .4byte gFieldCallback2 _081283D8: .4byte CB2_FadeFromPartyMenu _081283DC: .4byte Task_HandleChooseMonInput _081283E0: .4byte CB2_ReturnToField thumb_func_end ChoosePartyMonByMenuType thumb_func_start CB2_FadeFromPartyMenu CB2_FadeFromPartyMenu: @ 81283E4 push {lr} bl sub_807DC00 ldr r0, _081283F8 @ =Task_PartyMenuWaitForFade movs r1, 0xA bl CreateTask movs r0, 0x1 pop {r1} bx r1 .align 2, 0 _081283F8: .4byte Task_PartyMenuWaitForFade thumb_func_end CB2_FadeFromPartyMenu thumb_func_start Task_PartyMenuWaitForFade Task_PartyMenuWaitForFade: @ 81283FC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 beq _0812841A adds r0, r4, 0 bl DestroyTask bl ScriptContext2_Disable bl EnableBothScriptContexts _0812841A: pop {r4} pop {r0} bx r0 thumb_func_end Task_PartyMenuWaitForFade .align 2, 0 @ Don't pad with nop.