4265 lines
80 KiB
ArmAsm
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.
|