Files
Pokemon-Firered/asm/party_menu.s
T
2019-11-23 08:09:23 +08:00

4265 lines
80 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
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 sub_8126BD4
sub_8126BD4: @ 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 sub_8126BD4
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_ReturnToFieldWithOpenMenu
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_ReturnToFieldWithOpenMenu
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.