19391 lines
358 KiB
ArmAsm
19391 lines
358 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start InitPartyMenu
|
|
InitPartyMenu: @ 811EA44
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
ldr r4, [sp, 0x24]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r10, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r8, r2
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
str r3, [sp]
|
|
lsls r4, 24
|
|
lsrs r7, r4, 24
|
|
bl ResetPartyMenu
|
|
ldr r6, _0811EA8C @ =sPartyMenuInternal
|
|
movs r0, 0x8E
|
|
lsls r0, 2
|
|
bl Alloc
|
|
adds r5, r0, 0
|
|
str r5, [r6]
|
|
cmp r5, 0
|
|
bne _0811EA90
|
|
ldr r0, [sp, 0x2C]
|
|
bl SetMainCallback2
|
|
b _0811EB80
|
|
.align 2, 0
|
|
_0811EA8C: .4byte sPartyMenuInternal
|
|
_0811EA90:
|
|
ldr r3, _0811EAE0 @ =gPartyMenu
|
|
movs r1, 0xF
|
|
mov r0, r9
|
|
ands r1, r0
|
|
ldrb r2, [r3, 0x8]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x8]
|
|
ldr r1, [sp, 0x2C]
|
|
str r1, [r3]
|
|
movs r4, 0
|
|
mov r0, r8
|
|
strb r0, [r3, 0xB]
|
|
lsls r2, r7, 2
|
|
ldrh r1, [r5, 0xA]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strh r0, [r5, 0xA]
|
|
ldr r0, [sp, 0x28]
|
|
str r0, [r5]
|
|
str r4, [r5, 0x4]
|
|
ldrb r1, [r5, 0x8]
|
|
movs r0, 0xF
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r5, 0x8]
|
|
adds r7, r3, 0
|
|
mov r1, r9
|
|
cmp r1, 0x4
|
|
bne _0811EAE4
|
|
ldr r0, [r6]
|
|
ldrb r1, [r0, 0x8]
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x8]
|
|
b _0811EAF0
|
|
.align 2, 0
|
|
_0811EAE0: .4byte gPartyMenu
|
|
_0811EAE4:
|
|
ldr r2, [r6]
|
|
ldrb r1, [r2, 0x8]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2, 0x8]
|
|
_0811EAF0:
|
|
mov r5, r10
|
|
cmp r5, 0xFF
|
|
beq _0811EB08
|
|
movs r0, 0x3
|
|
ands r0, r5
|
|
lsls r0, 4
|
|
ldrb r2, [r7, 0x8]
|
|
movs r1, 0x31
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r7, 0x8]
|
|
_0811EB08:
|
|
movs r2, 0
|
|
ldr r5, _0811EB90 @ =sPartyMenuInternal
|
|
movs r4, 0x86
|
|
lsls r4, 2
|
|
movs r3, 0
|
|
_0811EB12:
|
|
ldr r0, [r5]
|
|
lsls r1, r2, 1
|
|
adds r0, r4
|
|
adds r0, r1
|
|
strh r3, [r0]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
cmp r2, 0xF
|
|
bls _0811EB12
|
|
movs r2, 0
|
|
ldr r4, _0811EB90 @ =sPartyMenuInternal
|
|
movs r3, 0xFF
|
|
_0811EB2C:
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
orrs r1, r3
|
|
strb r1, [r0]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
cmp r2, 0x2
|
|
bls _0811EB2C
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
beq _0811EB68
|
|
adds r1, r7, 0
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0811EB66
|
|
adds r1, r0, 0
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _0811EB94 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _0811EB6A
|
|
_0811EB66:
|
|
movs r0, 0
|
|
_0811EB68:
|
|
strb r0, [r7, 0x9]
|
|
_0811EB6A:
|
|
ldr r2, _0811EB98 @ =gTextFlags
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
bl CalculatePlayerPartyCount
|
|
ldr r0, _0811EB9C @ =CB2_InitPartyMenu
|
|
bl SetMainCallback2
|
|
_0811EB80:
|
|
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
|
|
_0811EB90: .4byte sPartyMenuInternal
|
|
_0811EB94: .4byte gPlayerParty
|
|
_0811EB98: .4byte gTextFlags
|
|
_0811EB9C: .4byte CB2_InitPartyMenu
|
|
thumb_func_end InitPartyMenu
|
|
|
|
thumb_func_start CB2_UpdatePartyMenu
|
|
CB2_UpdatePartyMenu: @ 811EBA0
|
|
push {lr}
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl DoScheduledBgTilemapCopiesToVram
|
|
bl UpdatePaletteFade
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CB2_UpdatePartyMenu
|
|
|
|
thumb_func_start VBlankCB_PartyMenu
|
|
VBlankCB_PartyMenu: @ 811EBBC
|
|
push {lr}
|
|
bl LoadOam
|
|
bl ProcessSpriteCopyRequests
|
|
bl TransferPlttBuffer
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end VBlankCB_PartyMenu
|
|
|
|
thumb_func_start CB2_InitPartyMenu
|
|
CB2_InitPartyMenu: @ 811EBD0
|
|
push {lr}
|
|
_0811EBD2:
|
|
bl sub_80BF748
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0811EBF6
|
|
bl ShowPartyMenu
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0811EBF6
|
|
bl MenuHelpers_LinkSomething
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0811EBD2
|
|
_0811EBF6:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CB2_InitPartyMenu
|
|
|
|
thumb_func_start ShowPartyMenu
|
|
ShowPartyMenu: @ 811EBFC
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r0, _0811EC1C @ =gMain
|
|
movs r1, 0x87
|
|
lsls r1, 3
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x16
|
|
bls _0811EC10
|
|
b _0811EE14
|
|
_0811EC10:
|
|
lsls r0, 2
|
|
ldr r1, _0811EC20 @ =_0811EC24
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0811EC1C: .4byte gMain
|
|
_0811EC20: .4byte _0811EC24
|
|
.align 2, 0
|
|
_0811EC24:
|
|
.4byte _0811EC80
|
|
.4byte _0811EC8E
|
|
.4byte _0811EC94
|
|
.4byte _0811ECA8
|
|
.4byte _0811ECAE
|
|
.4byte _0811ECB4
|
|
.4byte _0811ECC6
|
|
.4byte _0811ECCC
|
|
.4byte _0811ECF4
|
|
.4byte _0811ED02
|
|
.4byte _0811ED14
|
|
.4byte _0811ED38
|
|
.4byte _0811ED3E
|
|
.4byte _0811ED44
|
|
.4byte _0811ED4A
|
|
.4byte _0811ED50
|
|
.4byte _0811ED70
|
|
.4byte _0811ED90
|
|
.4byte _0811ED96
|
|
.4byte _0811EDAC
|
|
.4byte _0811EDB4
|
|
.4byte _0811EDD0
|
|
.4byte _0811EDDE
|
|
_0811EC80:
|
|
bl SetVBlankHBlankCallbacksToNull
|
|
bl ClearVramOamPltt
|
|
bl ClearScheduledBgCopiesToVram
|
|
b _0811EDFC
|
|
_0811EC8E:
|
|
bl ScanlineEffect_Stop
|
|
b _0811EDFC
|
|
_0811EC94:
|
|
bl ResetPaletteFade
|
|
ldr r2, _0811ECA4 @ =gPaletteFade
|
|
ldrb r0, [r2, 0x8]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
b _0811EDFA
|
|
.align 2, 0
|
|
_0811ECA4: .4byte gPaletteFade
|
|
_0811ECA8:
|
|
bl ResetSpriteData
|
|
b _0811EDFC
|
|
_0811ECAE:
|
|
bl FreeAllSpritePalettes
|
|
b _0811EDFC
|
|
_0811ECB4:
|
|
bl MenuHelpers_LinkSomething
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0811ECC0
|
|
b _0811EDFC
|
|
_0811ECC0:
|
|
bl ResetTasks
|
|
b _0811EDFC
|
|
_0811ECC6:
|
|
bl SetPartyMonsAllowedInMinigame
|
|
b _0811EDFC
|
|
_0811ECCC:
|
|
bl AllocPartyMenuBg
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811ECDE
|
|
bl ExitPartyMenu
|
|
movs r0, 0x1
|
|
b _0811EE2E
|
|
_0811ECDE:
|
|
ldr r0, _0811ECF0 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
movs r1, 0x86
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
b _0811EDFC
|
|
.align 2, 0
|
|
_0811ECF0: .4byte sPartyMenuInternal
|
|
_0811ECF4:
|
|
bl AllocPartyMenuBgGfx
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811ED00
|
|
b _0811EE2C
|
|
_0811ED00:
|
|
b _0811EDFC
|
|
_0811ED02:
|
|
ldr r0, _0811ED10 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 26
|
|
lsrs r0, 30
|
|
bl InitPartyMenuWindows
|
|
b _0811EDFC
|
|
.align 2, 0
|
|
_0811ED10: .4byte gPartyMenu
|
|
_0811ED14:
|
|
ldr r0, _0811ED30 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 26
|
|
lsrs r0, 30
|
|
bl InitPartyMenuBoxes
|
|
ldr r0, _0811ED34 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
movs r1, 0x86
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
b _0811EDFC
|
|
.align 2, 0
|
|
_0811ED30: .4byte gPartyMenu
|
|
_0811ED34: .4byte sPartyMenuInternal
|
|
_0811ED38:
|
|
bl LoadHeldItemIcons
|
|
b _0811EDFC
|
|
_0811ED3E:
|
|
bl LoadPartyMenuPokeballGfx
|
|
b _0811EDFC
|
|
_0811ED44:
|
|
bl LoadPartyMenuAilmentGfx
|
|
b _0811EDFC
|
|
_0811ED4A:
|
|
bl LoadMonIconPalettes
|
|
b _0811EDFC
|
|
_0811ED50:
|
|
bl CreatePartyMonSpritesLoop
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0811EE2C
|
|
ldr r0, _0811ED6C @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
movs r1, 0x86
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
b _0811EDFC
|
|
.align 2, 0
|
|
_0811ED6C: .4byte sPartyMenuInternal
|
|
_0811ED70:
|
|
bl RenderPartyMenuBoxes
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0811EE2C
|
|
ldr r0, _0811ED8C @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
movs r1, 0x86
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
b _0811EDFC
|
|
.align 2, 0
|
|
_0811ED8C: .4byte sPartyMenuInternal
|
|
_0811ED90:
|
|
bl CreateCancelConfirmPokeballSprites
|
|
b _0811EDFC
|
|
_0811ED96:
|
|
ldr r0, _0811EDA8 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
bl CreateCancelConfirmWindows
|
|
b _0811EDFC
|
|
.align 2, 0
|
|
_0811EDA8: .4byte sPartyMenuInternal
|
|
_0811EDAC:
|
|
movs r0, 0x5
|
|
bl HelpSystem_SetSomeVariable2
|
|
b _0811EDFC
|
|
_0811EDB4:
|
|
ldr r4, _0811EDCC @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
ldr r0, [r0]
|
|
movs r1, 0
|
|
bl CreateTask
|
|
ldr r0, [r4]
|
|
ldrh r0, [r0, 0xA]
|
|
lsrs r0, 2
|
|
bl DisplayPartyMenuStdMessage
|
|
b _0811EDFC
|
|
.align 2, 0
|
|
_0811EDCC: .4byte sPartyMenuInternal
|
|
_0811EDD0:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r1, 0x10
|
|
movs r2, 0
|
|
bl BlendPalettes
|
|
b _0811EDFC
|
|
_0811EDDE:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
movs r2, 0x10
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
ldr r2, _0811EE0C @ =gPaletteFade
|
|
ldrb r1, [r2, 0x8]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
_0811EDFA:
|
|
strb r0, [r2, 0x8]
|
|
_0811EDFC:
|
|
ldr r1, _0811EE10 @ =gMain
|
|
movs r0, 0x87
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
b _0811EE2C
|
|
.align 2, 0
|
|
_0811EE0C: .4byte gPaletteFade
|
|
_0811EE10: .4byte gMain
|
|
_0811EE14:
|
|
ldr r0, _0811EE24 @ =VBlankCB_PartyMenu
|
|
bl SetVBlankCallback
|
|
ldr r0, _0811EE28 @ =CB2_UpdatePartyMenu
|
|
bl SetMainCallback2
|
|
movs r0, 0x1
|
|
b _0811EE2E
|
|
.align 2, 0
|
|
_0811EE24: .4byte VBlankCB_PartyMenu
|
|
_0811EE28: .4byte CB2_UpdatePartyMenu
|
|
_0811EE2C:
|
|
movs r0, 0
|
|
_0811EE2E:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ShowPartyMenu
|
|
|
|
thumb_func_start ExitPartyMenu
|
|
ExitPartyMenu: @ 811EE38
|
|
push {lr}
|
|
sub sp, 0x4
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
movs r3, 0x10
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, _0811EE68 @ =Task_ExitPartyMenu
|
|
movs r1, 0
|
|
bl CreateTask
|
|
ldr r0, _0811EE6C @ =VBlankCB_PartyMenu
|
|
bl SetVBlankCallback
|
|
ldr r0, _0811EE70 @ =CB2_UpdatePartyMenu
|
|
bl SetMainCallback2
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811EE68: .4byte Task_ExitPartyMenu
|
|
_0811EE6C: .4byte VBlankCB_PartyMenu
|
|
_0811EE70: .4byte CB2_UpdatePartyMenu
|
|
thumb_func_end ExitPartyMenu
|
|
|
|
thumb_func_start Task_ExitPartyMenu
|
|
Task_ExitPartyMenu: @ 811EE74
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _0811EEA0 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0811EE98
|
|
ldr r0, _0811EEA4 @ =gPartyMenu
|
|
ldr r0, [r0]
|
|
bl SetMainCallback2
|
|
bl FreePartyPointers
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_0811EE98:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811EEA0: .4byte gPaletteFade
|
|
_0811EEA4: .4byte gPartyMenu
|
|
thumb_func_end Task_ExitPartyMenu
|
|
|
|
thumb_func_start ResetPartyMenu
|
|
ResetPartyMenu: @ 811EEA8
|
|
ldr r0, _0811EEBC @ =sPartyMenuInternal
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
ldr r0, _0811EEC0 @ =sPartyBgTilemapBuffer
|
|
str r1, [r0]
|
|
ldr r0, _0811EEC4 @ =sPartyMenuBoxes
|
|
str r1, [r0]
|
|
ldr r0, _0811EEC8 @ =sPartyBgGfxTilemap
|
|
str r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0811EEBC: .4byte sPartyMenuInternal
|
|
_0811EEC0: .4byte sPartyBgTilemapBuffer
|
|
_0811EEC4: .4byte sPartyMenuBoxes
|
|
_0811EEC8: .4byte sPartyBgGfxTilemap
|
|
thumb_func_end ResetPartyMenu
|
|
|
|
thumb_func_start AllocPartyMenuBg
|
|
AllocPartyMenuBg: @ 811EECC
|
|
push {r4,r5,lr}
|
|
bl ResetAllBgsCoordinatesAndBgCntRegs
|
|
ldr r5, _0811EF34 @ =sPartyBgTilemapBuffer
|
|
movs r4, 0x80
|
|
lsls r4, 4
|
|
adds r0, r4, 0
|
|
bl Alloc
|
|
str r0, [r5]
|
|
cmp r0, 0
|
|
beq _0811EF3C
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl memset
|
|
movs r0, 0
|
|
bl ResetBgsAndClearDma3BusyFlags
|
|
ldr r1, _0811EF38 @ =sPartyMenuBgTemplates
|
|
movs r0, 0
|
|
movs r2, 0x3
|
|
bl InitBgsFromTemplates
|
|
ldr r1, [r5]
|
|
movs r0, 0x1
|
|
bl SetBgTilemapBuffer
|
|
movs r0, 0x1
|
|
bl ScheduleBgCopyTilemapToVram
|
|
movs r1, 0x82
|
|
lsls r1, 5
|
|
movs r0, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
bl ShowBg
|
|
movs r0, 0x2
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
b _0811EF3E
|
|
.align 2, 0
|
|
_0811EF34: .4byte sPartyBgTilemapBuffer
|
|
_0811EF38: .4byte sPartyMenuBgTemplates
|
|
_0811EF3C:
|
|
movs r0, 0
|
|
_0811EF3E:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end AllocPartyMenuBg
|
|
|
|
thumb_func_start AllocPartyMenuBgGfx
|
|
AllocPartyMenuBgGfx: @ 811EF44
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r0, _0811EF64 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
movs r1, 0x86
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x7
|
|
bhi _0811F02C
|
|
lsls r0, 2
|
|
ldr r1, _0811EF68 @ =_0811EF6C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0811EF64: .4byte sPartyMenuInternal
|
|
_0811EF68: .4byte _0811EF6C
|
|
.align 2, 0
|
|
_0811EF6C:
|
|
.4byte _0811EF8C
|
|
.4byte _0811EFB4
|
|
.4byte _0811EFD4
|
|
.4byte _0811F000
|
|
.4byte _0811F004
|
|
.4byte _0811F008
|
|
.4byte _0811F00C
|
|
.4byte _0811F010
|
|
_0811EF8C:
|
|
ldr r4, _0811EFAC @ =sPartyBgGfxTilemap
|
|
ldr r0, _0811EFB0 @ =gPartyMenuBg_Gfx
|
|
mov r1, sp
|
|
bl MallocAndDecompress
|
|
adds r1, r0, 0
|
|
str r1, [r4]
|
|
ldr r2, [sp]
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
movs r0, 0x1
|
|
movs r3, 0
|
|
bl LoadBgTiles
|
|
b _0811F016
|
|
.align 2, 0
|
|
_0811EFAC: .4byte sPartyBgGfxTilemap
|
|
_0811EFB0: .4byte gPartyMenuBg_Gfx
|
|
_0811EFB4:
|
|
bl IsDma3ManagerBusyWithBgCopy
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811F030
|
|
ldr r0, _0811EFCC @ =gPartyMenuBg_Tilemap
|
|
ldr r1, _0811EFD0 @ =sPartyBgTilemapBuffer
|
|
ldr r1, [r1]
|
|
bl LZDecompressWram
|
|
b _0811F016
|
|
.align 2, 0
|
|
_0811EFCC: .4byte gPartyMenuBg_Tilemap
|
|
_0811EFD0: .4byte sPartyBgTilemapBuffer
|
|
_0811EFD4:
|
|
ldr r0, _0811EFF4 @ =gPartyMenuBg_Pal
|
|
movs r2, 0xB0
|
|
lsls r2, 1
|
|
movs r1, 0
|
|
bl LoadCompressedPalette
|
|
ldr r0, _0811EFF8 @ =gPlttBufferUnfaded
|
|
ldr r4, _0811EFFC @ =sPartyMenuInternal
|
|
ldr r1, [r4]
|
|
adds r1, 0x18
|
|
movs r2, 0xB0
|
|
bl CpuSet
|
|
ldr r1, [r4]
|
|
b _0811F01A
|
|
.align 2, 0
|
|
_0811EFF4: .4byte gPartyMenuBg_Pal
|
|
_0811EFF8: .4byte gPlttBufferUnfaded
|
|
_0811EFFC: .4byte sPartyMenuInternal
|
|
_0811F000:
|
|
movs r0, 0x4
|
|
b _0811F012
|
|
_0811F004:
|
|
movs r0, 0x5
|
|
b _0811F012
|
|
_0811F008:
|
|
movs r0, 0x6
|
|
b _0811F012
|
|
_0811F00C:
|
|
movs r0, 0x7
|
|
b _0811F012
|
|
_0811F010:
|
|
movs r0, 0x8
|
|
_0811F012:
|
|
bl PartyPaletteBufferCopy
|
|
_0811F016:
|
|
ldr r0, _0811F028 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
_0811F01A:
|
|
movs r0, 0x86
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
adds r0, 0x1
|
|
strh r0, [r1]
|
|
b _0811F030
|
|
.align 2, 0
|
|
_0811F028: .4byte sPartyMenuInternal
|
|
_0811F02C:
|
|
movs r0, 0x1
|
|
b _0811F032
|
|
_0811F030:
|
|
movs r0, 0
|
|
_0811F032:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end AllocPartyMenuBgGfx
|
|
|
|
thumb_func_start PartyPaletteBufferCopy
|
|
PartyPaletteBufferCopy: @ 811F03C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 28
|
|
ldr r5, _0811F068 @ =gPlttBufferUnfaded + 0x60
|
|
lsrs r4, 23
|
|
adds r1, r5, 0
|
|
subs r1, 0x60
|
|
adds r1, r4, r1
|
|
adds r0, r5, 0
|
|
movs r2, 0x10
|
|
bl CpuSet
|
|
ldr r0, _0811F06C @ =gPlttBufferFaded
|
|
adds r4, r0
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x10
|
|
bl CpuSet
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F068: .4byte gPlttBufferUnfaded + 0x60
|
|
_0811F06C: .4byte gPlttBufferFaded
|
|
thumb_func_end PartyPaletteBufferCopy
|
|
|
|
thumb_func_start FreePartyPointers
|
|
FreePartyPointers: @ 811F070
|
|
push {lr}
|
|
ldr r0, _0811F0AC @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0811F07E
|
|
bl Free
|
|
_0811F07E:
|
|
ldr r0, _0811F0B0 @ =sPartyBgTilemapBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0811F08A
|
|
bl Free
|
|
_0811F08A:
|
|
ldr r0, _0811F0B4 @ =sPartyBgGfxTilemap
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0811F096
|
|
bl Free
|
|
_0811F096:
|
|
ldr r0, _0811F0B8 @ =sPartyMenuBoxes
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0811F0A2
|
|
bl Free
|
|
_0811F0A2:
|
|
bl FreeAllWindowBuffers
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F0AC: .4byte sPartyMenuInternal
|
|
_0811F0B0: .4byte sPartyBgTilemapBuffer
|
|
_0811F0B4: .4byte sPartyBgGfxTilemap
|
|
_0811F0B8: .4byte sPartyMenuBoxes
|
|
thumb_func_end FreePartyPointers
|
|
|
|
thumb_func_start InitPartyMenuBoxes
|
|
InitPartyMenuBoxes: @ 811F0BC
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r4, _0811F108 @ =sPartyMenuBoxes
|
|
movs r0, 0x60
|
|
bl Alloc
|
|
str r0, [r4]
|
|
movs r2, 0
|
|
ldr r7, _0811F10C @ =sPartyBoxInfoRects + 0x20
|
|
lsls r0, r5, 1
|
|
adds r0, r5
|
|
lsls r3, r0, 4
|
|
mov r12, r4
|
|
ldr r6, _0811F110 @ =sPartyMenuSpriteCoords
|
|
_0811F0DA:
|
|
ldr r0, [r4]
|
|
lsls r1, r2, 4
|
|
adds r1, r0
|
|
str r7, [r1]
|
|
lsls r0, r2, 3
|
|
adds r0, r6
|
|
adds r0, r3, r0
|
|
str r0, [r1, 0x4]
|
|
strb r2, [r1, 0x8]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x5
|
|
bls _0811F0DA
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
ldr r1, _0811F114 @ =sPartyBoxInfoRects
|
|
str r1, [r0]
|
|
cmp r5, 0x3
|
|
bne _0811F118
|
|
str r1, [r0, 0x30]
|
|
b _0811F11E
|
|
.align 2, 0
|
|
_0811F108: .4byte sPartyMenuBoxes
|
|
_0811F10C: .4byte sPartyBoxInfoRects + 0x20
|
|
_0811F110: .4byte sPartyMenuSpriteCoords
|
|
_0811F114: .4byte sPartyBoxInfoRects
|
|
_0811F118:
|
|
cmp r5, 0
|
|
beq _0811F11E
|
|
str r1, [r0, 0x10]
|
|
_0811F11E:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end InitPartyMenuBoxes
|
|
|
|
thumb_func_start RenderPartyMenuBox
|
|
RenderPartyMenuBox: @ 811F124
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _0811F16C @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x5
|
|
bne _0811F174
|
|
cmp r4, 0x2
|
|
bls _0811F174
|
|
adds r0, r4, 0
|
|
bl DisplayPartyPokemonDataForMultiBattle
|
|
ldr r5, _0811F170 @ =sPartyMenuBoxes
|
|
lsls r4, 4
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
movs r1, 0x8
|
|
bl LoadPartyBoxPalette
|
|
ldr r0, [r5]
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0x8]
|
|
movs r1, 0x2
|
|
bl CopyWindowToVram
|
|
ldr r0, [r5]
|
|
adds r4, r0
|
|
ldrb r0, [r4, 0x8]
|
|
bl PutWindowTilemap
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
b _0811F22A
|
|
.align 2, 0
|
|
_0811F16C: .4byte gPartyMenu
|
|
_0811F170: .4byte sPartyMenuBoxes
|
|
_0811F174:
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, _0811F1A4 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _0811F1AC
|
|
ldr r5, _0811F1A8 @ =sPartyMenuBoxes
|
|
ldr r0, [r5]
|
|
lsls r4, 4
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0x8]
|
|
bl DrawEmptySlot
|
|
ldr r0, [r5]
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0x8]
|
|
movs r1, 0x2
|
|
bl CopyWindowToVram
|
|
b _0811F218
|
|
.align 2, 0
|
|
_0811F1A4: .4byte gPlayerParty
|
|
_0811F1A8: .4byte sPartyMenuBoxes
|
|
_0811F1AC:
|
|
ldr r0, _0811F1C0 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x8]
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
cmp r1, 0x4
|
|
bne _0811F1C4
|
|
adds r0, r4, 0
|
|
bl DisplayPartyPokemonDataForChooseHalf
|
|
b _0811F1E2
|
|
.align 2, 0
|
|
_0811F1C0: .4byte gPartyMenu
|
|
_0811F1C4:
|
|
cmp r1, 0xB
|
|
bne _0811F1D0
|
|
adds r0, r4, 0
|
|
bl DisplayPartyPokemonDataForWirelessMinigame
|
|
b _0811F1E2
|
|
_0811F1D0:
|
|
adds r0, r4, 0
|
|
bl DisplayPartyPokemonDataForMoveTutorOrEvolutionItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811F1E2
|
|
adds r0, r4, 0
|
|
bl DisplayPartyPokemonData
|
|
_0811F1E2:
|
|
ldr r2, _0811F1F8 @ =gPartyMenu
|
|
ldrb r1, [r2, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x5
|
|
bne _0811F1FC
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl AnimatePartySlot
|
|
b _0811F216
|
|
.align 2, 0
|
|
_0811F1F8: .4byte gPartyMenu
|
|
_0811F1FC:
|
|
movs r0, 0x9
|
|
ldrsb r0, [r2, r0]
|
|
cmp r0, r4
|
|
bne _0811F20E
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
b _0811F216
|
|
_0811F20E:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl AnimatePartySlot
|
|
_0811F216:
|
|
lsls r4, 4
|
|
_0811F218:
|
|
ldr r0, _0811F230 @ =sPartyMenuBoxes
|
|
ldr r0, [r0]
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0x8]
|
|
bl PutWindowTilemap
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_0811F22A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F230: .4byte sPartyMenuBoxes
|
|
thumb_func_end RenderPartyMenuBox
|
|
|
|
thumb_func_start DisplayPartyPokemonData
|
|
DisplayPartyPokemonData: @ 811F234
|
|
push {r4-r7,lr}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x64
|
|
adds r1, r4, 0
|
|
muls r1, r0
|
|
ldr r0, _0811F284 @ =gPlayerParty
|
|
adds r7, r1, r0
|
|
adds r0, r7, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
cmp r2, 0
|
|
beq _0811F28C
|
|
ldr r6, _0811F288 @ =sPartyMenuBoxes
|
|
ldr r0, [r6]
|
|
lsls r5, r4, 4
|
|
adds r0, r5, r0
|
|
ldr r2, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x4]
|
|
ldr r4, [r2]
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl _call_via_r4
|
|
ldr r1, [r6]
|
|
adds r1, r5
|
|
adds r0, r7, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonNickname
|
|
b _0811F2EE
|
|
.align 2, 0
|
|
_0811F284: .4byte gPlayerParty
|
|
_0811F288: .4byte sPartyMenuBoxes
|
|
_0811F28C:
|
|
ldr r5, _0811F2F8 @ =sPartyMenuBoxes
|
|
ldr r0, [r5]
|
|
lsls r4, 4
|
|
adds r0, r4, r0
|
|
ldr r1, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
str r2, [sp]
|
|
str r2, [sp, 0x4]
|
|
ldr r6, [r1]
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl _call_via_r6
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
adds r0, r7, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonNickname
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
adds r0, r7, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonLevelCheck
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
adds r0, r7, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonGenderNidoranCheck
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
adds r0, r7, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonHPCheck
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
adds r0, r7, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonMaxHPCheck
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
adds r0, r7, 0
|
|
bl DisplayPartyPokemonHPBarCheck
|
|
_0811F2EE:
|
|
add sp, 0x8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F2F8: .4byte sPartyMenuBoxes
|
|
thumb_func_end DisplayPartyPokemonData
|
|
|
|
thumb_func_start DisplayPartyPokemonDescriptionData
|
|
DisplayPartyPokemonDescriptionData: @ 811F2FC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
movs r1, 0x64
|
|
adds r2, r0, 0
|
|
muls r2, r1
|
|
ldr r1, _0811F380 @ =gPlayerParty
|
|
adds r6, r2, r1
|
|
ldr r7, _0811F384 @ =sPartyMenuBoxes
|
|
ldr r1, [r7]
|
|
lsls r5, r0, 4
|
|
adds r1, r5, r1
|
|
ldr r2, [r1]
|
|
ldrb r0, [r1, 0x8]
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x4]
|
|
ldr r4, [r2]
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl _call_via_r4
|
|
ldr r1, [r7]
|
|
adds r1, r5
|
|
adds r0, r6, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonNickname
|
|
adds r0, r6, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _0811F368
|
|
ldr r1, [r7]
|
|
adds r1, r5
|
|
adds r0, r6, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonLevelCheck
|
|
ldr r1, [r7]
|
|
adds r1, r5
|
|
adds r0, r6, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonGenderNidoranCheck
|
|
_0811F368:
|
|
ldr r1, [r7]
|
|
adds r1, r5
|
|
mov r0, r8
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonDescriptionText
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F380: .4byte gPlayerParty
|
|
_0811F384: .4byte sPartyMenuBoxes
|
|
thumb_func_end DisplayPartyPokemonDescriptionData
|
|
|
|
thumb_func_start DisplayPartyPokemonDataForChooseHalf
|
|
DisplayPartyPokemonDataForChooseHalf: @ 811F388
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, _0811F3AC @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r5, _0811F3B0 @ =gSelectedOrderFromParty
|
|
bl GetBattleEntryEligibility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811F3C2
|
|
adds r0, r4, 0
|
|
movs r1, 0x6
|
|
bl DisplayPartyPokemonDescriptionData
|
|
b _0811F3F8
|
|
.align 2, 0
|
|
_0811F3AC: .4byte gPlayerParty
|
|
_0811F3B0: .4byte gSelectedOrderFromParty
|
|
_0811F3B4:
|
|
adds r1, 0x2
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl DisplayPartyPokemonDescriptionData
|
|
b _0811F3F8
|
|
_0811F3C2:
|
|
ldr r0, _0811F400 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xC0
|
|
ands r0, r1
|
|
movs r3, 0x3
|
|
cmp r0, 0x80
|
|
bne _0811F3D2
|
|
movs r3, 0x2
|
|
_0811F3D2:
|
|
movs r1, 0
|
|
cmp r1, r3
|
|
bcs _0811F3F0
|
|
_0811F3D8:
|
|
adds r2, r5, r1
|
|
ldrb r0, [r2]
|
|
cmp r0, 0
|
|
beq _0811F3E6
|
|
subs r0, 0x1
|
|
cmp r0, r4
|
|
beq _0811F3B4
|
|
_0811F3E6:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, r3
|
|
bcc _0811F3D8
|
|
_0811F3F0:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyPokemonDescriptionData
|
|
_0811F3F8:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F400: .4byte gPartyMenu
|
|
thumb_func_end DisplayPartyPokemonDataForChooseHalf
|
|
|
|
thumb_func_start DisplayPartyPokemonDataForWirelessMinigame
|
|
DisplayPartyPokemonDataForWirelessMinigame: @ 811F404
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl IsMonAllowedInMinigame
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0811F422
|
|
adds r0, r4, 0
|
|
movs r1, 0x5
|
|
bl DisplayPartyPokemonDescriptionData
|
|
b _0811F42A
|
|
_0811F422:
|
|
adds r0, r4, 0
|
|
movs r1, 0x6
|
|
bl DisplayPartyPokemonDescriptionData
|
|
_0811F42A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonDataForWirelessMinigame
|
|
|
|
thumb_func_start DisplayPartyPokemonDataForMoveTutorOrEvolutionItem
|
|
DisplayPartyPokemonDataForMoveTutorOrEvolutionItem: @ 811F430
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, _0811F468 @ =gPlayerParty
|
|
adds r6, r1, r0
|
|
ldr r0, _0811F46C @ =gSpecialVar_ItemId
|
|
ldrh r4, [r0]
|
|
ldr r0, _0811F470 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0xC
|
|
bne _0811F47C
|
|
ldr r0, _0811F474 @ =gSpecialVar_Result
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _0811F478 @ =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xE
|
|
bhi _0811F492
|
|
lsls r2, r0, 24
|
|
lsrs r2, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl DisplayPartyPokemonDataToTeachMove
|
|
b _0811F4C6
|
|
.align 2, 0
|
|
_0811F468: .4byte gPlayerParty
|
|
_0811F46C: .4byte gSpecialVar_ItemId
|
|
_0811F470: .4byte gPartyMenu
|
|
_0811F474: .4byte gSpecialVar_Result
|
|
_0811F478: .4byte gSpecialVar_0x8005
|
|
_0811F47C:
|
|
cmp r0, 0x3
|
|
bne _0811F492
|
|
adds r0, r4, 0
|
|
bl GetItemCompatibilityRule
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0811F496
|
|
cmp r0, 0x2
|
|
beq _0811F4A2
|
|
_0811F492:
|
|
movs r0, 0
|
|
b _0811F4C8
|
|
_0811F496:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonDataToTeachMove
|
|
b _0811F4C6
|
|
_0811F4A2:
|
|
adds r0, r6, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _0811F4BE
|
|
adds r0, r6, 0
|
|
movs r1, 0x3
|
|
adds r2, r4, 0
|
|
bl GetEvolutionTargetSpecies
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _0811F492
|
|
_0811F4BE:
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl DisplayPartyPokemonDescriptionData
|
|
_0811F4C6:
|
|
movs r0, 0x1
|
|
_0811F4C8:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end DisplayPartyPokemonDataForMoveTutorOrEvolutionItem
|
|
|
|
thumb_func_start DisplayPartyPokemonDataToTeachMove
|
|
DisplayPartyPokemonDataToTeachMove: @ 811F4D0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r3, _0811F4FC @ =gPlayerParty
|
|
adds r0, r3
|
|
bl CanMonLearnTMTutor
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
beq _0811F50E
|
|
cmp r0, 0x2
|
|
bgt _0811F500
|
|
cmp r0, 0x1
|
|
beq _0811F504
|
|
b _0811F518
|
|
.align 2, 0
|
|
_0811F4FC: .4byte gPlayerParty
|
|
_0811F500:
|
|
cmp r0, 0x3
|
|
bne _0811F518
|
|
_0811F504:
|
|
adds r0, r4, 0
|
|
movs r1, 0x8
|
|
bl DisplayPartyPokemonDescriptionData
|
|
b _0811F520
|
|
_0811F50E:
|
|
adds r0, r4, 0
|
|
movs r1, 0x9
|
|
bl DisplayPartyPokemonDescriptionData
|
|
b _0811F520
|
|
_0811F518:
|
|
adds r0, r4, 0
|
|
movs r1, 0x7
|
|
bl DisplayPartyPokemonDescriptionData
|
|
_0811F520:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonDataToTeachMove
|
|
|
|
thumb_func_start DisplayPartyPokemonDataForMultiBattle
|
|
DisplayPartyPokemonDataForMultiBattle: @ 811F528
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _0811F558 @ =sPartyMenuBoxes
|
|
lsls r2, r0, 4
|
|
ldr r1, [r1]
|
|
adds r5, r1, r2
|
|
subs r0, 0x3
|
|
lsls r0, 24
|
|
ldr r1, _0811F55C @ =gMultiPartnerParty
|
|
mov r8, r1
|
|
lsrs r7, r0, 19
|
|
adds r6, r7, r1
|
|
ldrh r0, [r6]
|
|
cmp r0, 0
|
|
bne _0811F560
|
|
ldrb r0, [r5, 0x8]
|
|
bl DrawEmptySlot
|
|
b _0811F5DC
|
|
.align 2, 0
|
|
_0811F558: .4byte sPartyMenuBoxes
|
|
_0811F55C: .4byte gMultiPartnerParty
|
|
_0811F560:
|
|
ldr r2, [r5]
|
|
ldrb r0, [r5, 0x8]
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
str r1, [sp, 0x4]
|
|
ldr r4, [r2]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl _call_via_r4
|
|
ldr r4, _0811F5E8 @ =gStringVar1
|
|
mov r0, r8
|
|
adds r0, 0x4
|
|
adds r7, r0
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
bl StringCopy
|
|
adds r0, r4, 0
|
|
bl StringGetEnd10
|
|
adds r0, r4, 0
|
|
bl StringLength
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x5
|
|
bhi _0811F5A0
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl ConvertInternationalString
|
|
_0811F5A0:
|
|
ldrb r0, [r5, 0x8]
|
|
ldr r3, [r5]
|
|
adds r3, 0x4
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonBarDetail
|
|
ldrb r0, [r6, 0xF]
|
|
adds r1, r5, 0
|
|
bl DisplayPartyPokemonLevel
|
|
ldrb r0, [r6, 0x1C]
|
|
ldrh r1, [r6]
|
|
adds r2, r7, 0
|
|
adds r3, r5, 0
|
|
bl DisplayPartyPokemonGender
|
|
ldrh r0, [r6, 0x10]
|
|
adds r1, r5, 0
|
|
bl DisplayPartyPokemonHP
|
|
ldrh r0, [r6, 0x12]
|
|
adds r1, r5, 0
|
|
bl DisplayPartyPokemonMaxHP
|
|
ldrh r0, [r6, 0x10]
|
|
ldrh r1, [r6, 0x12]
|
|
adds r2, r5, 0
|
|
bl DisplayPartyPokemonHPBar
|
|
_0811F5DC:
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F5E8: .4byte gStringVar1
|
|
thumb_func_end DisplayPartyPokemonDataForMultiBattle
|
|
|
|
thumb_func_start RenderPartyMenuBoxes
|
|
RenderPartyMenuBoxes: @ 811F5EC
|
|
push {r4,r5,lr}
|
|
ldr r5, _0811F614 @ =sPartyMenuInternal
|
|
ldr r0, [r5]
|
|
movs r4, 0x86
|
|
lsls r4, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
bl RenderPartyMenuBox
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
ldrh r0, [r1]
|
|
adds r0, 0x1
|
|
strh r0, [r1]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6
|
|
beq _0811F618
|
|
movs r0, 0
|
|
b _0811F61A
|
|
.align 2, 0
|
|
_0811F614: .4byte sPartyMenuInternal
|
|
_0811F618:
|
|
movs r0, 0x1
|
|
_0811F61A:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end RenderPartyMenuBoxes
|
|
|
|
thumb_func_start GetPartyMenuBgTile
|
|
GetPartyMenuBgTile: @ 811F620
|
|
lsls r0, 16
|
|
ldr r1, _0811F630 @ =sPartyBgGfxTilemap
|
|
lsrs r0, 11
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
adds r0, r1, 0
|
|
bx lr
|
|
.align 2, 0
|
|
_0811F630: .4byte sPartyBgGfxTilemap
|
|
thumb_func_end GetPartyMenuBgTile
|
|
|
|
thumb_func_start CreatePartyMonSprites
|
|
CreatePartyMonSprites: @ 811F634
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _0811F6A8 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x5
|
|
bne _0811F6E4
|
|
cmp r7, 0x2
|
|
bls _0811F6E4
|
|
subs r0, r7, 0x3
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldr r0, _0811F6AC @ =gMultiPartnerParty
|
|
mov r9, r0
|
|
mov r2, r10
|
|
lsls r2, 5
|
|
mov r8, r2
|
|
mov r6, r8
|
|
add r6, r9
|
|
ldrh r0, [r6]
|
|
cmp r0, 0
|
|
beq _0811F728
|
|
mov r1, r9
|
|
adds r1, 0x18
|
|
add r1, r8
|
|
ldr r1, [r1]
|
|
ldr r4, _0811F6B0 @ =sPartyMenuBoxes
|
|
lsls r5, r7, 4
|
|
ldr r2, [r4]
|
|
adds r2, r5
|
|
movs r3, 0
|
|
str r3, [sp]
|
|
bl CreatePartyMonIconSpriteParameterized
|
|
ldrh r0, [r6]
|
|
ldrh r1, [r6, 0x2]
|
|
ldr r2, [r4]
|
|
adds r2, r5
|
|
bl CreatePartyMonHeldItemSpriteParameterized
|
|
ldrh r0, [r6]
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
bl CreatePartyMonPokeballSpriteParameterized
|
|
ldrh r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
bne _0811F6B4
|
|
movs r3, 0x7
|
|
b _0811F6C4
|
|
.align 2, 0
|
|
_0811F6A8: .4byte gPartyMenu
|
|
_0811F6AC: .4byte gMultiPartnerParty
|
|
_0811F6B0: .4byte sPartyMenuBoxes
|
|
_0811F6B4:
|
|
mov r0, r9
|
|
adds r0, 0x14
|
|
add r0, r8
|
|
ldr r0, [r0]
|
|
bl GetAilmentFromStatus
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
_0811F6C4:
|
|
ldr r1, _0811F6DC @ =gMultiPartnerParty
|
|
mov r2, r10
|
|
lsls r0, r2, 5
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
ldr r1, _0811F6E0 @ =sPartyMenuBoxes
|
|
ldr r2, [r1]
|
|
adds r2, r5
|
|
adds r1, r3, 0
|
|
bl CreatePartyMonStatusSpriteParameterized
|
|
b _0811F728
|
|
.align 2, 0
|
|
_0811F6DC: .4byte gMultiPartnerParty
|
|
_0811F6E0: .4byte sPartyMenuBoxes
|
|
_0811F6E4:
|
|
movs r0, 0x64
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
ldr r0, _0811F738 @ =gPlayerParty
|
|
adds r6, r1, r0
|
|
adds r0, r6, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0811F728
|
|
ldr r4, _0811F73C @ =sPartyMenuBoxes
|
|
lsls r5, r7, 4
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
adds r0, r6, 0
|
|
adds r2, r7, 0
|
|
bl CreatePartyMonIconSprite
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
adds r0, r6, 0
|
|
bl CreatePartyMonHeldItemSprite
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
adds r0, r6, 0
|
|
bl CreatePartyMonPokeballSprite
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
adds r0, r6, 0
|
|
bl CreatePartyMonStatusSprite
|
|
_0811F728:
|
|
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
|
|
_0811F738: .4byte gPlayerParty
|
|
_0811F73C: .4byte sPartyMenuBoxes
|
|
thumb_func_end CreatePartyMonSprites
|
|
|
|
thumb_func_start CreatePartyMonSpritesLoop
|
|
CreatePartyMonSpritesLoop: @ 811F740
|
|
push {r4,r5,lr}
|
|
ldr r5, _0811F768 @ =sPartyMenuInternal
|
|
ldr r0, [r5]
|
|
movs r4, 0x86
|
|
lsls r4, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
bl CreatePartyMonSprites
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
ldrh r0, [r1]
|
|
adds r0, 0x1
|
|
strh r0, [r1]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6
|
|
beq _0811F76C
|
|
movs r0, 0
|
|
b _0811F76E
|
|
.align 2, 0
|
|
_0811F768: .4byte sPartyMenuInternal
|
|
_0811F76C:
|
|
movs r0, 0x1
|
|
_0811F76E:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CreatePartyMonSpritesLoop
|
|
|
|
thumb_func_start CreateCancelConfirmPokeballSprites
|
|
CreateCancelConfirmPokeballSprites: @ 811F774
|
|
push {r4,lr}
|
|
sub sp, 0xC
|
|
ldr r0, _0811F79C @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x5
|
|
bne _0811F7A0
|
|
movs r0, 0x7
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
movs r1, 0xE
|
|
movs r2, 0x17
|
|
movs r3, 0x11
|
|
bl FillBgTilemapBufferRect
|
|
b _0811F808
|
|
.align 2, 0
|
|
_0811F79C: .4byte gPartyMenu
|
|
_0811F7A0:
|
|
ldr r4, _0811F7D8 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0811F7E0
|
|
movs r0, 0xBF
|
|
movs r1, 0x88
|
|
bl CreateSmallPokeballButtonSprite
|
|
ldr r3, [r4]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x7F
|
|
ands r0, r1
|
|
lsls r0, 4
|
|
ldrh r2, [r3, 0x8]
|
|
ldr r1, _0811F7DC @ =0xfffff80f
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strh r1, [r3, 0x8]
|
|
bl DrawCancelConfirmButtons
|
|
movs r0, 0xBF
|
|
movs r1, 0x98
|
|
bl CreateSmallPokeballButtonSprite
|
|
b _0811F7E8
|
|
.align 2, 0
|
|
_0811F7D8: .4byte sPartyMenuInternal
|
|
_0811F7DC: .4byte 0xfffff80f
|
|
_0811F7E0:
|
|
movs r0, 0xC6
|
|
movs r1, 0x94
|
|
bl CreatePokeballButtonSprite
|
|
_0811F7E8:
|
|
ldr r3, [r4]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x7F
|
|
ands r0, r1
|
|
lsls r0, 11
|
|
ldr r1, [r3, 0x8]
|
|
ldr r2, _0811F810 @ =0xfffc07ff
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
str r1, [r3, 0x8]
|
|
ldr r0, _0811F814 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x9]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
_0811F808:
|
|
add sp, 0xC
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F810: .4byte 0xfffc07ff
|
|
_0811F814: .4byte gPartyMenu
|
|
thumb_func_end CreateCancelConfirmPokeballSprites
|
|
|
|
thumb_func_start AnimatePartySlot
|
|
AnimatePartySlot: @ 811F818
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
cmp r7, 0x6
|
|
beq _0811F884
|
|
cmp r7, 0x7
|
|
beq _0811F8C0
|
|
movs r0, 0x64
|
|
muls r0, r7
|
|
ldr r1, _0811F87C @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0811F934
|
|
ldr r6, _0811F880 @ =sPartyMenuBoxes
|
|
lsls r5, r7, 4
|
|
ldr r4, [r6]
|
|
adds r4, r5
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
bl GetPartyBoxPaletteFlags
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl LoadPartyBoxPalette
|
|
ldr r0, [r6]
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0, 0x9]
|
|
mov r1, r8
|
|
bl AnimateSelectedPartyIcon
|
|
ldr r0, [r6]
|
|
adds r5, r0
|
|
ldrb r0, [r5, 0xB]
|
|
mov r1, r8
|
|
bl PartyMenuStartSpriteAnim
|
|
b _0811F934
|
|
.align 2, 0
|
|
_0811F87C: .4byte gPlayerParty
|
|
_0811F880: .4byte sPartyMenuBoxes
|
|
_0811F884:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bne _0811F89E
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x4]
|
|
movs r1, 0x17
|
|
movs r2, 0x10
|
|
movs r3, 0x7
|
|
bl SetBgRectPal
|
|
b _0811F8B0
|
|
_0811F89E:
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
movs r1, 0x17
|
|
movs r2, 0x10
|
|
movs r3, 0x7
|
|
bl SetBgRectPal
|
|
_0811F8B0:
|
|
ldr r0, _0811F8BC @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrh r0, [r0, 0x8]
|
|
lsls r0, 21
|
|
b _0811F926
|
|
.align 2, 0
|
|
_0811F8BC: .4byte sPartyMenuInternal
|
|
_0811F8C0:
|
|
ldr r0, _0811F8E0 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
bne _0811F8F2
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bne _0811F8E4
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x4]
|
|
movs r1, 0x17
|
|
movs r2, 0x11
|
|
b _0811F904
|
|
.align 2, 0
|
|
_0811F8E0: .4byte sPartyMenuInternal
|
|
_0811F8E4:
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
movs r1, 0x17
|
|
movs r2, 0x11
|
|
b _0811F904
|
|
_0811F8F2:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bne _0811F90C
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x4]
|
|
movs r1, 0x17
|
|
movs r2, 0x12
|
|
_0811F904:
|
|
movs r3, 0x7
|
|
bl SetBgRectPal
|
|
b _0811F91E
|
|
_0811F90C:
|
|
movs r0, 0x2
|
|
str r0, [sp]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
movs r1, 0x17
|
|
movs r2, 0x12
|
|
movs r3, 0x7
|
|
bl SetBgRectPal
|
|
_0811F91E:
|
|
ldr r0, _0811F940 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x8]
|
|
lsls r0, 14
|
|
_0811F926:
|
|
lsrs r0, 25
|
|
mov r1, r8
|
|
bl PartyMenuStartSpriteAnim
|
|
movs r0, 0x1
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_0811F934:
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811F940: .4byte sPartyMenuInternal
|
|
thumb_func_end AnimatePartySlot
|
|
|
|
thumb_func_start GetPartyBoxPaletteFlags
|
|
GetPartyBoxPaletteFlags: @ 811F944
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r4, 0
|
|
cmp r1, 0x1
|
|
bne _0811F956
|
|
movs r4, 0x1
|
|
_0811F956:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, _0811F9D4 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _0811F96C
|
|
movs r0, 0x2
|
|
orrs r4, r0
|
|
_0811F96C:
|
|
ldr r2, _0811F9D8 @ =gPartyMenu
|
|
ldrb r1, [r2, 0x8]
|
|
movs r0, 0x30
|
|
ands r0, r1
|
|
cmp r0, 0x20
|
|
bne _0811F98C
|
|
cmp r5, 0x1
|
|
beq _0811F984
|
|
cmp r5, 0x4
|
|
beq _0811F984
|
|
cmp r5, 0x5
|
|
bne _0811F98C
|
|
_0811F984:
|
|
movs r0, 0x8
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_0811F98C:
|
|
ldrb r1, [r2, 0xB]
|
|
cmp r1, 0x9
|
|
bne _0811F99A
|
|
movs r0, 0x10
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_0811F99A:
|
|
cmp r1, 0x8
|
|
bne _0811F9B6
|
|
movs r0, 0x9
|
|
ldrsb r0, [r2, r0]
|
|
cmp r5, r0
|
|
beq _0811F9AE
|
|
movs r0, 0xA
|
|
ldrsb r0, [r2, r0]
|
|
cmp r5, r0
|
|
bne _0811F9B6
|
|
_0811F9AE:
|
|
movs r0, 0x4
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_0811F9B6:
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0xA
|
|
bne _0811F9CC
|
|
movs r0, 0x9
|
|
ldrsb r0, [r2, r0]
|
|
cmp r5, r0
|
|
bne _0811F9CC
|
|
movs r0, 0x20
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_0811F9CC:
|
|
adds r0, r4, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0811F9D4: .4byte gPlayerParty
|
|
_0811F9D8: .4byte gPartyMenu
|
|
thumb_func_end GetPartyBoxPaletteFlags
|
|
|
|
thumb_func_start DrawCancelConfirmButtons
|
|
DrawCancelConfirmButtons: @ 811F9DC
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
ldr r1, _0811FA18 @ =sConfirmButton_Tilemap
|
|
movs r6, 0x7
|
|
str r6, [sp]
|
|
movs r5, 0x2
|
|
str r5, [sp, 0x4]
|
|
movs r4, 0x11
|
|
str r4, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r2, 0x17
|
|
movs r3, 0x10
|
|
bl CopyToBgTilemapBufferRect_ChangePalette
|
|
ldr r1, _0811FA1C @ =sCancelButton_Tilemap
|
|
str r6, [sp]
|
|
str r5, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r2, 0x17
|
|
movs r3, 0x12
|
|
bl CopyToBgTilemapBufferRect_ChangePalette
|
|
movs r0, 0x1
|
|
bl ScheduleBgCopyTilemapToVram
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811FA18: .4byte sConfirmButton_Tilemap
|
|
_0811FA1C: .4byte sCancelButton_Tilemap
|
|
thumb_func_end DrawCancelConfirmButtons
|
|
|
|
thumb_func_start IsMultiBattle
|
|
IsMultiBattle: @ 811FA20
|
|
push {lr}
|
|
ldr r0, _0811FA34 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x4B
|
|
ands r0, r1
|
|
cmp r0, 0x4B
|
|
beq _0811FA38
|
|
movs r0, 0
|
|
b _0811FA3A
|
|
.align 2, 0
|
|
_0811FA34: .4byte gBattleTypeFlags
|
|
_0811FA38:
|
|
movs r0, 0x1
|
|
_0811FA3A:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsMultiBattle
|
|
|
|
thumb_func_start SwapPartyPokemon
|
|
SwapPartyPokemon: @ 811FA40
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r6, r1, 0
|
|
movs r0, 0x64
|
|
bl Alloc
|
|
adds r5, r0, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r5, 0
|
|
bl Free
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SwapPartyPokemon
|
|
|
|
thumb_func_start Task_ClosePartyMenu
|
|
Task_ClosePartyMenu: @ 811FA78
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
movs r3, 0x10
|
|
bl BeginNormalPaletteFade
|
|
ldr r1, _0811FAAC @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _0811FAB0 @ =Task_ClosePartyMenuAndSetCB2
|
|
str r1, [r0]
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811FAAC: .4byte gTasks
|
|
_0811FAB0: .4byte Task_ClosePartyMenuAndSetCB2
|
|
thumb_func_end Task_ClosePartyMenu
|
|
|
|
thumb_func_start Task_ClosePartyMenuAndSetCB2
|
|
Task_ClosePartyMenuAndSetCB2: @ 811FAB4
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _0811FAE8 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0811FB04
|
|
ldr r4, _0811FAEC @ =gPartyMenu
|
|
ldrb r1, [r4, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0811FAD6
|
|
bl UpdatePartyToFieldOrder
|
|
_0811FAD6:
|
|
ldr r0, _0811FAF0 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x4]
|
|
cmp r0, 0
|
|
beq _0811FAF4
|
|
bl SetMainCallback2
|
|
b _0811FAFA
|
|
.align 2, 0
|
|
_0811FAE8: .4byte gPaletteFade
|
|
_0811FAEC: .4byte gPartyMenu
|
|
_0811FAF0: .4byte sPartyMenuInternal
|
|
_0811FAF4:
|
|
ldr r0, [r4]
|
|
bl SetMainCallback2
|
|
_0811FAFA:
|
|
bl FreePartyPointers
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_0811FB04:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_ClosePartyMenuAndSetCB2
|
|
|
|
thumb_func_start GetCursorSelectionMonId
|
|
GetCursorSelectionMonId: @ 811FB0C
|
|
ldr r0, _0811FB14 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x9]
|
|
bx lr
|
|
.align 2, 0
|
|
_0811FB14: .4byte gPartyMenu
|
|
thumb_func_end GetCursorSelectionMonId
|
|
|
|
thumb_func_start GetPartyMenuType
|
|
GetPartyMenuType: @ 811FB18
|
|
ldr r0, _0811FB24 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
bx lr
|
|
.align 2, 0
|
|
_0811FB24: .4byte gPartyMenu
|
|
thumb_func_end GetPartyMenuType
|
|
|
|
thumb_func_start Task_HandleChooseMonInput
|
|
Task_HandleChooseMonInput: @ 811FB28
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r6, r5, 0
|
|
ldr r0, _0811FB64 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0811FB98
|
|
bl sub_80BF748
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0811FB98
|
|
bl GetCurrentPartySlotPtr
|
|
adds r4, r0, 0
|
|
bl PartyMenuButtonHandler
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x2
|
|
beq _0811FB78
|
|
cmp r0, 0x2
|
|
bgt _0811FB68
|
|
cmp r0, 0x1
|
|
beq _0811FB6E
|
|
b _0811FB98
|
|
.align 2, 0
|
|
_0811FB64: .4byte gPaletteFade
|
|
_0811FB68:
|
|
cmp r0, 0x8
|
|
beq _0811FB82
|
|
b _0811FB98
|
|
_0811FB6E:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl HandleChooseMonSelection
|
|
b _0811FB98
|
|
_0811FB78:
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl HandleChooseMonCancel
|
|
b _0811FB98
|
|
_0811FB82:
|
|
ldr r0, _0811FBA0 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0811FB98
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
bl MoveCursorToConfirm
|
|
_0811FB98:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811FBA0: .4byte sPartyMenuInternal
|
|
thumb_func_end Task_HandleChooseMonInput
|
|
|
|
thumb_func_start GetCurrentPartySlotPtr
|
|
GetCurrentPartySlotPtr: @ 811FBA4
|
|
push {lr}
|
|
ldr r0, _0811FBB8 @ =gPartyMenu
|
|
ldrb r1, [r0, 0xB]
|
|
cmp r1, 0x8
|
|
beq _0811FBB2
|
|
cmp r1, 0xA
|
|
bne _0811FBBC
|
|
_0811FBB2:
|
|
adds r0, 0xA
|
|
b _0811FBBE
|
|
.align 2, 0
|
|
_0811FBB8: .4byte gPartyMenu
|
|
_0811FBBC:
|
|
adds r0, 0x9
|
|
_0811FBBE:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetCurrentPartySlotPtr
|
|
|
|
thumb_func_start HandleChooseMonSelection
|
|
HandleChooseMonSelection: @ 811FBC4
|
|
push {r4-r6,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r0, 0
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0x6
|
|
bne _0811FBE4
|
|
ldr r0, _0811FBE0 @ =gPartyMenu
|
|
ldr r1, [r0, 0x4]
|
|
adds r0, r6, 0
|
|
bl _call_via_r1
|
|
b _0811FD56
|
|
.align 2, 0
|
|
_0811FBE0: .4byte gPartyMenu
|
|
_0811FBE4:
|
|
ldr r0, _0811FBFC @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
subs r0, 0x3
|
|
cmp r0, 0xA
|
|
bls _0811FBF0
|
|
b _0811FD4A
|
|
_0811FBF0:
|
|
lsls r0, 2
|
|
ldr r1, _0811FC00 @ =_0811FC04
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0811FBFC: .4byte gPartyMenu
|
|
_0811FC00: .4byte _0811FC04
|
|
.align 2, 0
|
|
_0811FC04:
|
|
.4byte _0811FC46
|
|
.4byte _0811FD4A
|
|
.4byte _0811FCC0
|
|
.4byte _0811FCC0
|
|
.4byte _0811FCA6
|
|
.4byte _0811FCDA
|
|
.4byte _0811FD4A
|
|
.4byte _0811FC30
|
|
.4byte _0811FCE8
|
|
.4byte _0811FC8C
|
|
.4byte _0811FD34
|
|
_0811FC30:
|
|
adds r0, r5, 0
|
|
bl IsSelectedMonNotEgg
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811FC3E
|
|
b _0811FD56
|
|
_0811FC3E:
|
|
adds r0, r6, 0
|
|
bl sub_80E5724
|
|
b _0811FD56
|
|
_0811FC46:
|
|
adds r0, r5, 0
|
|
bl IsSelectedMonNotEgg
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811FC54
|
|
b _0811FD56
|
|
_0811FC54:
|
|
ldr r0, _0811FC78 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0811FC68
|
|
ldr r0, _0811FC7C @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _0811FC80 @ =CB2_SetUpExitToBattleScreen
|
|
str r0, [r1, 0x4]
|
|
_0811FC68:
|
|
ldr r0, _0811FC84 @ =gItemUseCB
|
|
ldr r1, _0811FC88 @ =Task_ClosePartyMenuAfterText
|
|
ldr r2, [r0]
|
|
adds r0, r6, 0
|
|
bl _call_via_r2
|
|
b _0811FD56
|
|
.align 2, 0
|
|
_0811FC78: .4byte gPartyMenu
|
|
_0811FC7C: .4byte sPartyMenuInternal
|
|
_0811FC80: .4byte CB2_SetUpExitToBattleScreen
|
|
_0811FC84: .4byte gItemUseCB
|
|
_0811FC88: .4byte Task_ClosePartyMenuAfterText
|
|
_0811FC8C:
|
|
adds r0, r5, 0
|
|
bl IsSelectedMonNotEgg
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0811FD56
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r6, 0
|
|
bl TryTutorSelectedMon
|
|
b _0811FD56
|
|
_0811FCA6:
|
|
adds r0, r5, 0
|
|
bl IsSelectedMonNotEgg
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0811FD56
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r6, 0
|
|
bl TryGiveMailToSelectedMon
|
|
b _0811FD56
|
|
_0811FCC0:
|
|
adds r0, r5, 0
|
|
bl IsSelectedMonNotEgg
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0811FD56
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r6, 0
|
|
bl TryGiveItemOrMailToSelectedMon
|
|
b _0811FD56
|
|
_0811FCDA:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r6, 0
|
|
bl SwitchSelectedMons
|
|
b _0811FD56
|
|
_0811FCE8:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r1, _0811FD24 @ =gSpecialVar_0x8004
|
|
movs r0, 0
|
|
ldrsb r0, [r5, r0]
|
|
strh r0, [r1]
|
|
ldr r0, _0811FD28 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x7
|
|
bne _0811FD1A
|
|
ldr r4, _0811FD2C @ =gSpecialVar_0x8005
|
|
movs r1, 0
|
|
ldrsb r1, [r5, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _0811FD30 @ =gPlayerParty
|
|
adds r0, r1
|
|
bl GetNumberOfRelearnableMoves
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4]
|
|
_0811FD1A:
|
|
adds r0, r6, 0
|
|
bl Task_ClosePartyMenu
|
|
b _0811FD56
|
|
.align 2, 0
|
|
_0811FD24: .4byte gSpecialVar_0x8004
|
|
_0811FD28: .4byte gPartyMenu
|
|
_0811FD2C: .4byte gSpecialVar_0x8005
|
|
_0811FD30: .4byte gPlayerParty
|
|
_0811FD34:
|
|
adds r0, r5, 0
|
|
bl IsSelectedMonNotEgg
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0811FD56
|
|
ldrb r1, [r5]
|
|
adds r0, r6, 0
|
|
bl TryEnterMonForMinigame
|
|
b _0811FD56
|
|
_0811FD4A:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r6, 0
|
|
bl Task_TryCreateSelectionWindow
|
|
_0811FD56:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end HandleChooseMonSelection
|
|
|
|
thumb_func_start IsSelectedMonNotEgg
|
|
IsSelectedMonNotEgg: @ 811FD5C
|
|
push {lr}
|
|
ldrb r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _0811FD78 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0x1
|
|
beq _0811FD7C
|
|
movs r0, 0x1
|
|
b _0811FD84
|
|
.align 2, 0
|
|
_0811FD78: .4byte gPlayerParty
|
|
_0811FD7C:
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
movs r0, 0
|
|
_0811FD84:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsSelectedMonNotEgg
|
|
|
|
thumb_func_start HandleChooseMonCancel
|
|
HandleChooseMonCancel: @ 811FD88
|
|
push {r4,r5,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _0811FDA4 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x8
|
|
beq _0811FDBA
|
|
cmp r0, 0x8
|
|
bgt _0811FDA8
|
|
cmp r0, 0x1
|
|
beq _0811FDB2
|
|
b _0811FDD6
|
|
.align 2, 0
|
|
_0811FDA4: .4byte gPartyMenu
|
|
_0811FDA8:
|
|
cmp r0, 0xA
|
|
beq _0811FDBA
|
|
cmp r0, 0xD
|
|
beq _0811FDC8
|
|
b _0811FDD6
|
|
_0811FDB2:
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
b _0811FE14
|
|
_0811FDBA:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r4, 0
|
|
bl FinishTwoMonAction
|
|
b _0811FE14
|
|
_0811FDC8:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r4, 0
|
|
bl CancelParticipationPrompt
|
|
b _0811FE14
|
|
_0811FDD6:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r0, _0811FDF0 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x4
|
|
bne _0811FDF4
|
|
adds r0, r4, 0
|
|
bl DisplayCancelChooseMonYesNo
|
|
b _0811FE14
|
|
.align 2, 0
|
|
_0811FDF0: .4byte gPartyMenu
|
|
_0811FDF4:
|
|
bl MenuHelpers_LinkSomething
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0811FE04
|
|
ldr r1, _0811FE1C @ =gSpecialVar_0x8004
|
|
movs r0, 0x7
|
|
strh r0, [r1]
|
|
_0811FE04:
|
|
ldr r0, _0811FE20 @ =gPartyMenuUseExitCallback
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
movs r0, 0x7
|
|
strb r0, [r5]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
_0811FE14:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811FE1C: .4byte gSpecialVar_0x8004
|
|
_0811FE20: .4byte gPartyMenuUseExitCallback
|
|
thumb_func_end HandleChooseMonCancel
|
|
|
|
thumb_func_start DisplayCancelChooseMonYesNo
|
|
DisplayCancelChooseMonYesNo: @ 811FE24
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _0811FE5C @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r5, _0811FE60 @ =gStringVar4
|
|
ldr r1, _0811FE64 @ =gUnknown_84176CF
|
|
adds r0, r5, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _0811FE68 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _0811FE6C @ =Task_CancelChooseMonYesNo
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811FE5C: .4byte sPartyMenuInternal
|
|
_0811FE60: .4byte gStringVar4
|
|
_0811FE64: .4byte gUnknown_84176CF
|
|
_0811FE68: .4byte gTasks
|
|
_0811FE6C: .4byte Task_CancelChooseMonYesNo
|
|
thumb_func_end DisplayCancelChooseMonYesNo
|
|
|
|
thumb_func_start Task_CancelChooseMonYesNo
|
|
Task_CancelChooseMonYesNo: @ 811FE70
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0811FE94
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _0811FE9C @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0811FEA0 @ =Task_HandleCancelChooseMonYesNoInput
|
|
str r0, [r1]
|
|
_0811FE94:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0811FE9C: .4byte gTasks
|
|
_0811FEA0: .4byte Task_HandleCancelChooseMonYesNoInput
|
|
thumb_func_end Task_CancelChooseMonYesNo
|
|
|
|
thumb_func_start Task_HandleCancelChooseMonYesNoInput
|
|
Task_HandleCancelChooseMonYesNoInput: @ 811FEA4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _0811FECA
|
|
cmp r1, 0
|
|
bgt _0811FEC4
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0811FEE8
|
|
b _0811FEF4
|
|
_0811FEC4:
|
|
cmp r1, 0x1
|
|
beq _0811FEEE
|
|
b _0811FEF4
|
|
_0811FECA:
|
|
ldr r0, _0811FEE0 @ =gPartyMenuUseExitCallback
|
|
strb r1, [r0]
|
|
ldr r1, _0811FEE4 @ =gPartyMenu
|
|
movs r0, 0x7
|
|
strb r0, [r1, 0x9]
|
|
bl ClearSelectedPartyOrder
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
b _0811FEF4
|
|
.align 2, 0
|
|
_0811FEE0: .4byte gPartyMenuUseExitCallback
|
|
_0811FEE4: .4byte gPartyMenu
|
|
_0811FEE8:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_0811FEEE:
|
|
adds r0, r4, 0
|
|
bl Task_ReturnToChooseMonAfterText
|
|
_0811FEF4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_HandleCancelChooseMonYesNoInput
|
|
|
|
thumb_func_start PartyMenuButtonHandler
|
|
PartyMenuButtonHandler: @ 811FEFC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _0811FF14 @ =gMain
|
|
ldrh r1, [r0, 0x30]
|
|
adds r3, r0, 0
|
|
cmp r1, 0x20
|
|
beq _0811FF2A
|
|
cmp r1, 0x20
|
|
bgt _0811FF18
|
|
cmp r1, 0x10
|
|
beq _0811FF2E
|
|
b _0811FF32
|
|
.align 2, 0
|
|
_0811FF14: .4byte gMain
|
|
_0811FF18:
|
|
cmp r1, 0x40
|
|
beq _0811FF22
|
|
cmp r1, 0x80
|
|
beq _0811FF26
|
|
b _0811FF32
|
|
_0811FF22:
|
|
movs r1, 0xFF
|
|
b _0811FF4E
|
|
_0811FF26:
|
|
movs r1, 0x1
|
|
b _0811FF4E
|
|
_0811FF2A:
|
|
movs r1, 0xFE
|
|
b _0811FF4E
|
|
_0811FF2E:
|
|
movs r1, 0x2
|
|
b _0811FF4E
|
|
_0811FF32:
|
|
bl sub_80BF66C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0811FF46
|
|
cmp r0, 0x2
|
|
beq _0811FF4A
|
|
movs r1, 0
|
|
b _0811FF4C
|
|
_0811FF46:
|
|
movs r1, 0xFF
|
|
b _0811FF4C
|
|
_0811FF4A:
|
|
movs r1, 0x1
|
|
_0811FF4C:
|
|
ldr r3, _0811FF5C @ =gMain
|
|
_0811FF4E:
|
|
ldrh r2, [r3, 0x2E]
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0811FF60
|
|
movs r0, 0x8
|
|
b _0811FF8C
|
|
.align 2, 0
|
|
_0811FF5C: .4byte gMain
|
|
_0811FF60:
|
|
lsls r0, r1, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _0811FF72
|
|
adds r0, r4, 0
|
|
bl UpdateCurrentPartySelection
|
|
movs r0, 0
|
|
b _0811FF8C
|
|
_0811FF72:
|
|
movs r0, 0x1
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0811FF86
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0x7
|
|
bne _0811FF86
|
|
movs r0, 0x2
|
|
b _0811FF8C
|
|
_0811FF86:
|
|
ldrh r1, [r3, 0x2E]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
_0811FF8C:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end PartyMenuButtonHandler
|
|
|
|
thumb_func_start UpdateCurrentPartySelection
|
|
UpdateCurrentPartySelection: @ 811FF94
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r4, [r5]
|
|
ldr r0, _0811FFB8 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 26
|
|
lsrs r0, 30
|
|
cmp r0, 0
|
|
bne _0811FFBC
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
adds r0, r5, 0
|
|
bl UpdatePartySelectionSingleLayout
|
|
b _0811FFC6
|
|
.align 2, 0
|
|
_0811FFB8: .4byte gPartyMenu
|
|
_0811FFBC:
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
adds r0, r5, 0
|
|
bl UpdatePartySelectionDoubleLayout
|
|
_0811FFC6:
|
|
movs r1, 0
|
|
ldrsb r1, [r5, r1]
|
|
lsls r4, 24
|
|
asrs r0, r4, 24
|
|
cmp r1, r0
|
|
beq _0811FFE8
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
lsrs r0, r4, 24
|
|
movs r1, 0
|
|
bl AnimatePartySlot
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
_0811FFE8:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end UpdateCurrentPartySelection
|
|
|
|
thumb_func_start UpdatePartySelectionSingleLayout
|
|
UpdatePartySelectionSingleLayout: @ 811FFF0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _08120016
|
|
cmp r1, r0
|
|
bgt _0812000C
|
|
subs r0, 0x1
|
|
cmp r1, r0
|
|
beq _081200C0
|
|
b _081200EE
|
|
_0812000C:
|
|
cmp r1, 0x1
|
|
beq _0812005C
|
|
cmp r1, 0x2
|
|
beq _08120094
|
|
b _081200EE
|
|
_08120016:
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
ldrsb r1, [r4, r1]
|
|
cmp r1, 0
|
|
bne _08120024
|
|
movs r0, 0x7
|
|
b _081200EC
|
|
_08120024:
|
|
cmp r1, 0x6
|
|
bne _08120034
|
|
ldr r0, _08120030 @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
b _081200EC
|
|
.align 2, 0
|
|
_08120030: .4byte gPlayerPartyCount
|
|
_08120034:
|
|
cmp r1, 0x7
|
|
bne _08120058
|
|
ldr r0, _08120048 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0812004C
|
|
movs r0, 0x6
|
|
b _081200EC
|
|
.align 2, 0
|
|
_08120048: .4byte sPartyMenuInternal
|
|
_0812004C:
|
|
ldr r0, _08120054 @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
b _081200EC
|
|
.align 2, 0
|
|
_08120054: .4byte gPlayerPartyCount
|
|
_08120058:
|
|
subs r0, 0x1
|
|
b _081200EC
|
|
_0812005C:
|
|
ldrb r2, [r4]
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0x7
|
|
beq _081200EA
|
|
movs r1, 0
|
|
ldrsb r1, [r4, r1]
|
|
ldr r0, _08120084 @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
cmp r1, r0
|
|
bne _08120090
|
|
ldr r0, _08120088 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0812008C
|
|
movs r0, 0x6
|
|
b _081200EC
|
|
.align 2, 0
|
|
_08120084: .4byte gPlayerPartyCount
|
|
_08120088: .4byte sPartyMenuInternal
|
|
_0812008C:
|
|
movs r0, 0x7
|
|
b _081200EC
|
|
_08120090:
|
|
adds r0, r2, 0x1
|
|
b _081200EC
|
|
_08120094:
|
|
ldr r0, _081200B8 @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _081200EE
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0
|
|
bne _081200EE
|
|
ldr r0, _081200BC @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 29
|
|
cmp r0, 0
|
|
bne _081200EC
|
|
movs r0, 0x1
|
|
b _081200EC
|
|
.align 2, 0
|
|
_081200B8: .4byte gPlayerPartyCount
|
|
_081200BC: .4byte sPartyMenuInternal
|
|
_081200C0:
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0
|
|
beq _081200EE
|
|
cmp r0, 0x6
|
|
beq _081200EE
|
|
cmp r0, 0x7
|
|
beq _081200EE
|
|
ldr r0, _081200F4 @ =sPartyMenuInternal
|
|
ldr r3, [r0]
|
|
movs r1, 0
|
|
ldrsb r1, [r4, r1]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r3, 0x8]
|
|
movs r0, 0xF
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x8]
|
|
_081200EA:
|
|
movs r0, 0
|
|
_081200EC:
|
|
strb r0, [r4]
|
|
_081200EE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081200F4: .4byte sPartyMenuInternal
|
|
thumb_func_end UpdatePartySelectionSingleLayout
|
|
|
|
thumb_func_start UpdatePartySelectionDoubleLayout
|
|
UpdatePartySelectionDoubleLayout: @ 81200F8
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
lsrs r2, r1, 24
|
|
asrs r5, r1, 24
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
cmp r5, r6
|
|
beq _08120124
|
|
cmp r5, r6
|
|
bgt _0812011A
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
cmp r5, r0
|
|
bne _08120118
|
|
b _08120238
|
|
_08120118:
|
|
b _08120290
|
|
_0812011A:
|
|
cmp r5, 0x1
|
|
beq _08120180
|
|
cmp r5, 0x2
|
|
beq _081201C0
|
|
b _08120290
|
|
_08120124:
|
|
ldrb r1, [r4]
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0
|
|
bne _08120132
|
|
movs r0, 0x7
|
|
b _0812028E
|
|
_08120132:
|
|
cmp r0, 0x6
|
|
bne _08120144
|
|
ldr r0, _08120140 @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
b _0812028E
|
|
.align 2, 0
|
|
_08120140: .4byte gPlayerPartyCount
|
|
_08120144:
|
|
cmp r0, 0x7
|
|
bne _08120160
|
|
ldr r0, _08120158 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0812015C
|
|
movs r0, 0x6
|
|
b _0812028E
|
|
.align 2, 0
|
|
_08120158: .4byte sPartyMenuInternal
|
|
_0812015C:
|
|
subs r0, r1, 0x1
|
|
strb r0, [r4]
|
|
_08120160:
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
lsls r1, r2, 24
|
|
asrs r1, 24
|
|
bl GetNewSlotDoubleLayout
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
asrs r0, 24
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _0812017C
|
|
b _08120290
|
|
_0812017C:
|
|
strb r2, [r4]
|
|
b _08120290
|
|
_08120180:
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0x6
|
|
bne _0812018C
|
|
movs r0, 0x7
|
|
b _0812028E
|
|
_0812018C:
|
|
cmp r0, 0x7
|
|
bne _08120194
|
|
movs r0, 0
|
|
b _0812028E
|
|
_08120194:
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
movs r1, 0x1
|
|
bl GetNewSlotDoubleLayout
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
asrs r0, 24
|
|
cmp r0, r6
|
|
bne _0812017C
|
|
ldr r0, _081201B8 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _081201BC
|
|
movs r0, 0x6
|
|
b _0812028E
|
|
.align 2, 0
|
|
_081201B8: .4byte sPartyMenuInternal
|
|
_081201BC:
|
|
movs r0, 0x7
|
|
b _0812028E
|
|
_081201C0:
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0
|
|
bne _081201F8
|
|
ldr r0, _081201E8 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 28
|
|
lsrs r6, r0, 29
|
|
cmp r6, 0x3
|
|
bne _081201F0
|
|
ldr r0, _081201EC @ =gPlayerParty + 300 @ &gPlayerParty[3]
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08120290
|
|
strb r6, [r4]
|
|
b _08120290
|
|
.align 2, 0
|
|
_081201E8: .4byte sPartyMenuInternal
|
|
_081201EC: .4byte gPlayerParty + 300 @ &gPlayerParty[3]
|
|
_081201F0:
|
|
ldr r0, _081201F4 @ =gPlayerParty + 200 @ &gPlayerParty[2]
|
|
b _0812020C
|
|
.align 2, 0
|
|
_081201F4: .4byte gPlayerParty + 200 @ &gPlayerParty[2]
|
|
_081201F8:
|
|
cmp r0, 0x1
|
|
bne _08120290
|
|
ldr r0, _0812021C @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 28
|
|
lsrs r5, r0, 29
|
|
cmp r5, 0x5
|
|
bne _08120224
|
|
ldr r0, _08120220 @ =gPlayerParty + 500 @ &gPlayerParty[5]
|
|
_0812020C:
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08120290
|
|
strb r5, [r4]
|
|
b _08120290
|
|
.align 2, 0
|
|
_0812021C: .4byte sPartyMenuInternal
|
|
_08120220: .4byte gPlayerParty + 500 @ &gPlayerParty[5]
|
|
_08120224:
|
|
ldr r0, _08120234 @ =gPlayerParty + 400 @ &gPlayerParty[4]
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08120290
|
|
movs r0, 0x4
|
|
b _0812028E
|
|
.align 2, 0
|
|
_08120234: .4byte gPlayerParty + 400 @ &gPlayerParty[4]
|
|
_08120238:
|
|
ldrb r1, [r4]
|
|
subs r0, r1, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _08120268
|
|
ldr r0, _08120264 @ =sPartyMenuInternal
|
|
ldr r3, [r0]
|
|
movs r1, 0
|
|
ldrsb r1, [r4, r1]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r3, 0x8]
|
|
movs r0, 0xF
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x8]
|
|
movs r0, 0
|
|
b _0812028E
|
|
.align 2, 0
|
|
_08120264: .4byte sPartyMenuInternal
|
|
_08120268:
|
|
subs r0, r1, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _08120290
|
|
ldr r0, _08120298 @ =sPartyMenuInternal
|
|
ldr r3, [r0]
|
|
movs r1, 0
|
|
ldrsb r1, [r4, r1]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r3, 0x8]
|
|
movs r0, 0xF
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x8]
|
|
movs r0, 0x1
|
|
_0812028E:
|
|
strb r0, [r4]
|
|
_08120290:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120298: .4byte sPartyMenuInternal
|
|
thumb_func_end UpdatePartySelectionDoubleLayout
|
|
|
|
thumb_func_start GetNewSlotDoubleLayout
|
|
GetNewSlotDoubleLayout: @ 812029C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 24
|
|
asrs r6, r1, 24
|
|
_081202A6:
|
|
lsls r0, r5, 24
|
|
asrs r0, 24
|
|
adds r0, r6
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, r5, 24
|
|
lsrs r0, r1, 24
|
|
cmp r0, 0x5
|
|
bhi _081202D4
|
|
asrs r4, r1, 24
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, _081202D0 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _081202A6
|
|
adds r0, r4, 0
|
|
b _081202D8
|
|
.align 2, 0
|
|
_081202D0: .4byte gPlayerParty
|
|
_081202D4:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_081202D8:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetNewSlotDoubleLayout
|
|
|
|
thumb_func_start GetMonNickname
|
|
GetMonNickname: @ 81202E0
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
movs r1, 0x2
|
|
adds r2, r4, 0
|
|
bl GetMonData
|
|
adds r0, r4, 0
|
|
bl StringGetEnd10
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetMonNickname
|
|
|
|
thumb_func_start DisplayPartyMenuMessage
|
|
DisplayPartyMenuMessage: @ 81202F8
|
|
push {r4,lr}
|
|
lsls r4, r1, 24
|
|
lsrs r4, 24
|
|
bl PartyMenuPrintText
|
|
ldr r0, _08120320 @ =Task_PrintAndWaitForText
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08120324 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
strh r4, [r1, 0x8]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08120320: .4byte Task_PrintAndWaitForText
|
|
_08120324: .4byte gTasks
|
|
thumb_func_end DisplayPartyMenuMessage
|
|
|
|
thumb_func_start Task_PrintAndWaitForText
|
|
Task_PrintAndWaitForText: @ 8120328
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
movs r0, 0x6
|
|
bl RunTextPrinters_CheckActive
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
beq _08120364
|
|
ldr r0, _0812036C @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r2, 0x8
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _0812035E
|
|
movs r0, 0x6
|
|
movs r1, 0
|
|
bl ClearStdWindowAndFrameToTransparent
|
|
movs r0, 0x6
|
|
bl ClearWindowTilemap
|
|
_0812035E:
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_08120364:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812036C: .4byte gTasks
|
|
thumb_func_end Task_PrintAndWaitForText
|
|
|
|
thumb_func_start IsPartyMenuTextPrinterActive
|
|
IsPartyMenuTextPrinterActive: @ 8120370
|
|
push {lr}
|
|
ldr r0, _08120380 @ =Task_PrintAndWaitForText
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08120380: .4byte Task_PrintAndWaitForText
|
|
thumb_func_end IsPartyMenuTextPrinterActive
|
|
|
|
thumb_func_start Task_WaitForLinkAndReturnToChooseMon
|
|
Task_WaitForLinkAndReturnToChooseMon: @ 8120384
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl sub_80BF748
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _081203AA
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _081203B0 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _081203B4 @ =Task_HandleChooseMonInput
|
|
str r0, [r1]
|
|
_081203AA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081203B0: .4byte gTasks
|
|
_081203B4: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end Task_WaitForLinkAndReturnToChooseMon
|
|
|
|
thumb_func_start Task_ReturnToChooseMonAfterText
|
|
Task_ReturnToChooseMonAfterText: @ 81203B8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08120410
|
|
movs r0, 0x6
|
|
movs r1, 0
|
|
bl ClearStdWindowAndFrameToTransparent
|
|
movs r0, 0x6
|
|
bl ClearWindowTilemap
|
|
bl MenuHelpers_LinkSomething
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _081203FC
|
|
ldr r0, _081203F4 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _081203F8 @ =Task_WaitForLinkAndReturnToChooseMon
|
|
b _0812040E
|
|
.align 2, 0
|
|
_081203F4: .4byte gTasks
|
|
_081203F8: .4byte Task_WaitForLinkAndReturnToChooseMon
|
|
_081203FC:
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _08120418 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0812041C @ =Task_HandleChooseMonInput
|
|
_0812040E:
|
|
str r0, [r1]
|
|
_08120410:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120418: .4byte gTasks
|
|
_0812041C: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end Task_ReturnToChooseMonAfterText
|
|
|
|
thumb_func_start DisplayGaveHeldItemMessage
|
|
DisplayGaveHeldItemMessage: @ 8120420
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
lsls r3, 24
|
|
cmp r3, 0
|
|
bne _0812043C
|
|
ldr r3, _08120438 @ =0x0000ffff
|
|
movs r0, 0x5
|
|
b _08120448
|
|
.align 2, 0
|
|
_08120438: .4byte 0x0000ffff
|
|
_0812043C:
|
|
ldr r0, _08120454 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x6
|
|
bne _0812045C
|
|
ldr r3, _08120458 @ =0x0000ffff
|
|
movs r0, 0x7
|
|
_08120448:
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
b _08120468
|
|
.align 2, 0
|
|
_08120454: .4byte gPartyMenu
|
|
_08120458: .4byte 0x0000ffff
|
|
_0812045C:
|
|
ldr r3, _08120498 @ =0x0000ffff
|
|
movs r0, 0x6
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
_08120468:
|
|
ldr r1, _0812049C @ =gStringVar1
|
|
adds r0, r5, 0
|
|
bl GetMonNickname
|
|
ldr r1, _081204A0 @ =gStringVar2
|
|
adds r0, r4, 0
|
|
bl CopyItemName
|
|
ldr r4, _081204A4 @ =gStringVar4
|
|
ldr r1, _081204A8 @ =gText_PkmnWasGivenItem
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120498: .4byte 0x0000ffff
|
|
_0812049C: .4byte gStringVar1
|
|
_081204A0: .4byte gStringVar2
|
|
_081204A4: .4byte gStringVar4
|
|
_081204A8: .4byte gText_PkmnWasGivenItem
|
|
thumb_func_end DisplayGaveHeldItemMessage
|
|
|
|
thumb_func_start DisplayTookHeldItemMessage
|
|
DisplayTookHeldItemMessage: @ 81204AC
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
adds r4, r1, 0
|
|
adds r5, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r3, _081204F8 @ =0x0000ffff
|
|
movs r0, 0x8
|
|
adds r1, r6, 0
|
|
adds r2, r4, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
ldr r1, _081204FC @ =gStringVar1
|
|
adds r0, r6, 0
|
|
bl GetMonNickname
|
|
ldr r1, _08120500 @ =gStringVar2
|
|
adds r0, r4, 0
|
|
bl CopyItemName
|
|
ldr r4, _08120504 @ =gStringVar4
|
|
ldr r1, _08120508 @ =gText_ReceivedItemFromPkmn
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081204F8: .4byte 0x0000ffff
|
|
_081204FC: .4byte gStringVar1
|
|
_08120500: .4byte gStringVar2
|
|
_08120504: .4byte gStringVar4
|
|
_08120508: .4byte gText_ReceivedItemFromPkmn
|
|
thumb_func_end DisplayTookHeldItemMessage
|
|
|
|
thumb_func_start DisplayAlreadyHoldingItemSwitchMessage
|
|
DisplayAlreadyHoldingItemSwitchMessage: @ 812050C
|
|
push {r4,r5,lr}
|
|
adds r4, r1, 0
|
|
adds r5, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r1, _08120548 @ =gStringVar1
|
|
bl GetMonNickname
|
|
ldr r1, _0812054C @ =gStringVar2
|
|
adds r0, r4, 0
|
|
bl CopyItemName
|
|
ldr r4, _08120550 @ =gStringVar4
|
|
ldr r1, _08120554 @ =gText_PkmnAlreadyHoldingItemSwitch
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120548: .4byte gStringVar1
|
|
_0812054C: .4byte gStringVar2
|
|
_08120550: .4byte gStringVar4
|
|
_08120554: .4byte gText_PkmnAlreadyHoldingItemSwitch
|
|
thumb_func_end DisplayAlreadyHoldingItemSwitchMessage
|
|
|
|
thumb_func_start DisplaySwitchedHeldItemMessage
|
|
DisplaySwitchedHeldItemMessage: @ 8120558
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
ldr r0, _081205B0 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _081205B4 @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl sub_8124B60
|
|
ldr r1, _081205B8 @ =gStringVar1
|
|
adds r0, r4, 0
|
|
bl CopyItemName
|
|
ldr r1, _081205BC @ =gStringVar2
|
|
adds r0, r5, 0
|
|
bl CopyItemName
|
|
ldr r4, _081205C0 @ =gStringVar4
|
|
ldr r1, _081205C4 @ =gText_SwitchedPkmnItem
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081205B0: .4byte gPartyMenu
|
|
_081205B4: .4byte gPlayerParty
|
|
_081205B8: .4byte gStringVar1
|
|
_081205BC: .4byte gStringVar2
|
|
_081205C0: .4byte gStringVar4
|
|
_081205C4: .4byte gText_SwitchedPkmnItem
|
|
thumb_func_end DisplaySwitchedHeldItemMessage
|
|
|
|
thumb_func_start GiveItemToMon
|
|
GiveItemToMon: @ 81205C8
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r6, r0, 0
|
|
lsls r5, r1, 16
|
|
lsrs r4, r5, 16
|
|
adds r7, r4, 0
|
|
adds r0, r4, 0
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _081205F2
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl GiveMailToMon
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
beq _08120606
|
|
_081205F2:
|
|
mov r0, sp
|
|
strb r7, [r0]
|
|
mov r1, sp
|
|
lsrs r0, r5, 24
|
|
strb r0, [r1, 0x1]
|
|
adds r0, r6, 0
|
|
movs r1, 0xC
|
|
mov r2, sp
|
|
bl SetMonData
|
|
_08120606:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end GiveItemToMon
|
|
|
|
thumb_func_start TryTakeMonItem
|
|
TryTakeMonItem: @ 8120610
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
cmp r0, 0
|
|
bne _0812062C
|
|
movs r0, 0
|
|
b _0812064E
|
|
_0812062C:
|
|
movs r1, 0x1
|
|
bl AddBagItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0812064C
|
|
movs r1, 0
|
|
mov r0, sp
|
|
strh r1, [r0]
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
mov r2, sp
|
|
bl SetMonData
|
|
movs r0, 0x2
|
|
b _0812064E
|
|
_0812064C:
|
|
movs r0, 0x1
|
|
_0812064E:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end TryTakeMonItem
|
|
|
|
thumb_func_start BufferBagFullCantTakeItemMessage
|
|
BufferBagFullCantTakeItemMessage: @ 8120658
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl ItemId_GetPocket
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
beq _08120678
|
|
cmp r0, 0x5
|
|
beq _0812067E
|
|
ldr r1, _08120674 @ =gStartMenuText_Bag
|
|
b _08120686
|
|
.align 2, 0
|
|
_08120674: .4byte gStartMenuText_Bag
|
|
_08120678:
|
|
movs r0, 0xB6
|
|
lsls r0, 1
|
|
b _08120680
|
|
_0812067E:
|
|
ldr r0, _08120698 @ =0x0000016d
|
|
_08120680:
|
|
bl ItemId_GetName
|
|
adds r1, r0, 0
|
|
_08120686:
|
|
ldr r0, _0812069C @ =gStringVar1
|
|
bl StringCopy
|
|
ldr r0, _081206A0 @ =gStringVar4
|
|
ldr r1, _081206A4 @ =gText_BagFullCouldNotRemoveItem
|
|
bl StringExpandPlaceholders
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120698: .4byte 0x0000016d
|
|
_0812069C: .4byte gStringVar1
|
|
_081206A0: .4byte gStringVar4
|
|
_081206A4: .4byte gText_BagFullCouldNotRemoveItem
|
|
thumb_func_end BufferBagFullCantTakeItemMessage
|
|
|
|
thumb_func_start Task_PartyMenuModifyHP
|
|
Task_PartyMenuModifyHP: @ 81206A8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r0, 2
|
|
add r0, r8
|
|
lsls r0, 3
|
|
ldr r1, _08120750 @ =gTasks+0x8
|
|
adds r7, r0, r1
|
|
ldrh r0, [r7, 0x4]
|
|
ldrh r1, [r7]
|
|
adds r0, r1
|
|
strh r0, [r7]
|
|
ldrh r0, [r7, 0x6]
|
|
subs r0, 0x1
|
|
strh r0, [r7, 0x6]
|
|
movs r2, 0x8
|
|
ldrsh r0, [r7, r2]
|
|
movs r5, 0x64
|
|
muls r0, r5
|
|
ldr r4, _08120754 @ =gPlayerParty
|
|
adds r0, r4
|
|
movs r1, 0x39
|
|
adds r2, r7, 0
|
|
bl SetMonData
|
|
movs r3, 0x8
|
|
ldrsh r2, [r7, r3]
|
|
adds r0, r2, 0
|
|
muls r0, r5
|
|
adds r0, r4
|
|
ldr r6, _08120758 @ =sPartyMenuBoxes
|
|
lsls r2, 4
|
|
ldr r1, [r6]
|
|
adds r1, r2
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonHPCheck
|
|
movs r0, 0x8
|
|
ldrsh r2, [r7, r0]
|
|
adds r0, r2, 0
|
|
muls r0, r5
|
|
adds r0, r4
|
|
lsls r2, 4
|
|
ldr r1, [r6]
|
|
adds r1, r2
|
|
bl DisplayPartyPokemonHPBarCheck
|
|
movs r1, 0x6
|
|
ldrsh r0, [r7, r1]
|
|
cmp r0, 0
|
|
beq _08120724
|
|
movs r2, 0
|
|
ldrsh r1, [r7, r2]
|
|
cmp r1, 0
|
|
beq _08120724
|
|
movs r3, 0x2
|
|
ldrsh r0, [r7, r3]
|
|
cmp r1, r0
|
|
bne _08120746
|
|
_08120724:
|
|
movs r0, 0
|
|
ldrsh r1, [r7, r0]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r7, r2]
|
|
cmp r1, r0
|
|
ble _08120740
|
|
ldr r0, _0812075C @ =gStringVar2
|
|
movs r3, 0xA
|
|
ldrsh r2, [r7, r3]
|
|
subs r1, r2
|
|
movs r2, 0
|
|
movs r3, 0x3
|
|
bl ConvertIntToDecimalStringN
|
|
_08120740:
|
|
mov r0, r8
|
|
bl SwitchTaskToFollowupFunc
|
|
_08120746:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120750: .4byte gTasks+0x8
|
|
_08120754: .4byte gPlayerParty
|
|
_08120758: .4byte sPartyMenuBoxes
|
|
_0812075C: .4byte gStringVar2
|
|
thumb_func_end Task_PartyMenuModifyHP
|
|
|
|
thumb_func_start PartyMenuModifyHP
|
|
PartyMenuModifyHP: @ 8120760
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
mov r8, r0
|
|
mov r9, r1
|
|
adds r5, r2, 0
|
|
mov r10, r3
|
|
ldr r7, [sp, 0x20]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
mov r0, r9
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
mov r0, r10
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r10, r0
|
|
movs r0, 0x64
|
|
mov r6, r9
|
|
muls r6, r0
|
|
ldr r0, _081207E4 @ =gPlayerParty
|
|
adds r6, r0
|
|
mov r0, r8
|
|
lsls r4, r0, 2
|
|
add r4, r8
|
|
lsls r4, 3
|
|
ldr r0, _081207E8 @ =gTasks+0x8
|
|
adds r4, r0
|
|
adds r0, r6, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
strh r0, [r4]
|
|
adds r0, r6, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
strh r0, [r4, 0x2]
|
|
lsls r5, 24
|
|
asrs r5, 24
|
|
strh r5, [r4, 0x4]
|
|
mov r0, r10
|
|
strh r0, [r4, 0x6]
|
|
mov r0, r9
|
|
strh r0, [r4, 0x8]
|
|
ldrh r0, [r4]
|
|
strh r0, [r4, 0xA]
|
|
ldr r1, _081207EC @ =Task_PartyMenuModifyHP
|
|
mov r0, r8
|
|
adds r2, r7, 0
|
|
bl SetTaskFuncWithFollowupFunc
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081207E4: .4byte gPlayerParty
|
|
_081207E8: .4byte gTasks+0x8
|
|
_081207EC: .4byte Task_PartyMenuModifyHP
|
|
thumb_func_end PartyMenuModifyHP
|
|
|
|
thumb_func_start ResetHPTaskData
|
|
ResetHPTaskData: @ 81207F0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _08120814 @ =gTasks+0x8
|
|
adds r3, r0, r1
|
|
cmp r5, 0x5
|
|
bhi _08120852
|
|
lsls r0, r5, 2
|
|
ldr r1, _08120818 @ =_0812081C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08120814: .4byte gTasks+0x8
|
|
_08120818: .4byte _0812081C
|
|
.align 2, 0
|
|
_0812081C:
|
|
.4byte _08120834
|
|
.4byte _0812083A
|
|
.4byte _0812083E
|
|
.4byte _08120842
|
|
.4byte _08120846
|
|
.4byte _0812084A
|
|
_08120834:
|
|
strh r2, [r3]
|
|
strh r2, [r3, 0xA]
|
|
b _08120852
|
|
_0812083A:
|
|
strh r2, [r3, 0x2]
|
|
b _08120852
|
|
_0812083E:
|
|
strh r2, [r3, 0x4]
|
|
b _08120852
|
|
_08120842:
|
|
strh r2, [r3, 0x6]
|
|
b _08120852
|
|
_08120846:
|
|
strh r2, [r3, 0x8]
|
|
b _08120852
|
|
_0812084A:
|
|
ldr r1, _08120858 @ =Task_PartyMenuModifyHP
|
|
adds r0, r4, 0
|
|
bl SetTaskFuncWithFollowupFunc
|
|
_08120852:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120858: .4byte Task_PartyMenuModifyHP
|
|
thumb_func_end ResetHPTaskData
|
|
|
|
thumb_func_start GetAilmentFromStatus
|
|
GetAilmentFromStatus: @ 812085C
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r0, 0x88
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0812086C
|
|
movs r0, 0x1
|
|
b _0812089E
|
|
_0812086C:
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08120878
|
|
movs r0, 0x2
|
|
b _0812089E
|
|
_08120878:
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08120884
|
|
movs r0, 0x3
|
|
b _0812089E
|
|
_08120884:
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08120890
|
|
movs r0, 0x4
|
|
b _0812089E
|
|
_08120890:
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0812089C
|
|
movs r0, 0
|
|
b _0812089E
|
|
_0812089C:
|
|
movs r0, 0x5
|
|
_0812089E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetAilmentFromStatus
|
|
|
|
thumb_func_start GetMonAilment
|
|
GetMonAilment: @ 81208A4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _081208B6
|
|
movs r0, 0x7
|
|
b _081208DE
|
|
_081208B6:
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
bl GetAilmentFromStatus
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _081208DE
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl CheckPartyPokerus
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081208DC
|
|
movs r0, 0
|
|
b _081208DE
|
|
_081208DC:
|
|
movs r0, 0x6
|
|
_081208DE:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetMonAilment
|
|
|
|
thumb_func_start SetPartyMonsAllowedInMinigame
|
|
SetPartyMonsAllowedInMinigame: @ 81208E4
|
|
push {r4,r5,lr}
|
|
ldr r2, _08120934 @ =gPartyMenu
|
|
ldrb r1, [r2, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0xB
|
|
bne _0812096E
|
|
adds r5, r2, 0
|
|
adds r5, 0xE
|
|
movs r0, 0
|
|
strh r0, [r2, 0xE]
|
|
ldr r0, _08120938 @ =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _08120944
|
|
movs r4, 0
|
|
ldr r0, _0812093C @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bcs _0812096E
|
|
_0812090C:
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, _08120940 @ =gPlayerParty
|
|
adds r0, r1
|
|
bl IsMonAllowedInPokemonJump
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r0, r4
|
|
ldrh r1, [r5]
|
|
adds r0, r1
|
|
strh r0, [r5]
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _0812093C @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bcc _0812090C
|
|
b _0812096E
|
|
.align 2, 0
|
|
_08120934: .4byte gPartyMenu
|
|
_08120938: .4byte gSpecialVar_0x8005
|
|
_0812093C: .4byte gPlayerPartyCount
|
|
_08120940: .4byte gPlayerParty
|
|
_08120944:
|
|
movs r4, 0
|
|
b _08120966
|
|
_08120948:
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, _08120974 @ =gPlayerParty
|
|
adds r0, r1
|
|
bl IsMonAllowedInDodrioBerryPicking
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r0, r4
|
|
ldrh r1, [r5]
|
|
adds r0, r1
|
|
strh r0, [r5]
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
_08120966:
|
|
ldr r0, _08120978 @ =gPlayerPartyCount
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bcc _08120948
|
|
_0812096E:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120974: .4byte gPlayerParty
|
|
_08120978: .4byte gPlayerPartyCount
|
|
thumb_func_end SetPartyMonsAllowedInMinigame
|
|
|
|
thumb_func_start IsMonAllowedInPokemonJump
|
|
IsMonAllowedInPokemonJump: @ 812097C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0x1
|
|
beq _081209A2
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl sub_8149A00
|
|
cmp r0, 0
|
|
beq _081209A2
|
|
movs r0, 0x1
|
|
b _081209A4
|
|
_081209A2:
|
|
movs r0, 0
|
|
_081209A4:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsMonAllowedInPokemonJump
|
|
|
|
thumb_func_start IsMonAllowedInDodrioBerryPicking
|
|
IsMonAllowedInDodrioBerryPicking: @ 81209AC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0x1
|
|
beq _081209CA
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0x55
|
|
bne _081209CA
|
|
movs r0, 0x1
|
|
b _081209CC
|
|
_081209CA:
|
|
movs r0, 0
|
|
_081209CC:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsMonAllowedInDodrioBerryPicking
|
|
|
|
thumb_func_start IsMonAllowedInMinigame
|
|
IsMonAllowedInMinigame: @ 81209D4
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _081209F0 @ =gPartyMenu
|
|
movs r2, 0xE
|
|
ldrsh r1, [r1, r2]
|
|
asrs r1, r0
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _081209EC
|
|
movs r0, 0
|
|
_081209EC:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_081209F0: .4byte gPartyMenu
|
|
thumb_func_end IsMonAllowedInMinigame
|
|
|
|
thumb_func_start TryEnterMonForMinigame
|
|
TryEnterMonForMinigame: @ 81209F4
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
adds r0, r5, 0
|
|
bl IsMonAllowedInMinigame
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08120A24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r0, _08120A20 @ =gSpecialVar_0x8004
|
|
strh r5, [r0]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
b _08120A46
|
|
.align 2, 0
|
|
_08120A20: .4byte gSpecialVar_0x8004
|
|
_08120A24:
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
ldr r0, _08120A4C @ =gUnknown_8417696
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08120A50 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08120A54 @ =Task_ReturnToChooseMonAfterText
|
|
str r1, [r0]
|
|
_08120A46:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120A4C: .4byte gUnknown_8417696
|
|
_08120A50: .4byte gTasks
|
|
_08120A54: .4byte Task_ReturnToChooseMonAfterText
|
|
thumb_func_end TryEnterMonForMinigame
|
|
|
|
thumb_func_start CancelParticipationPrompt
|
|
CancelParticipationPrompt: @ 8120A58
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08120A84 @ =gUnknown_84176B8
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08120A88 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08120A8C @ =Task_CancelParticipationYesNo
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120A84: .4byte gUnknown_84176B8
|
|
_08120A88: .4byte gTasks
|
|
_08120A8C: .4byte Task_CancelParticipationYesNo
|
|
thumb_func_end CancelParticipationPrompt
|
|
|
|
thumb_func_start Task_CancelParticipationYesNo
|
|
Task_CancelParticipationYesNo: @ 8120A90
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08120AB4
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08120ABC @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08120AC0 @ =Task_HandleCancelParticipationYesNoInput
|
|
str r0, [r1]
|
|
_08120AB4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120ABC: .4byte gTasks
|
|
_08120AC0: .4byte Task_HandleCancelParticipationYesNoInput
|
|
thumb_func_end Task_CancelParticipationYesNo
|
|
|
|
thumb_func_start Task_HandleCancelParticipationYesNoInput
|
|
Task_HandleCancelParticipationYesNoInput: @ 8120AC4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _08120AEA
|
|
cmp r1, 0
|
|
bgt _08120AE4
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _08120AFC
|
|
b _08120B10
|
|
_08120AE4:
|
|
cmp r1, 0x1
|
|
beq _08120B02
|
|
b _08120B10
|
|
_08120AEA:
|
|
ldr r1, _08120AF8 @ =gSpecialVar_0x8004
|
|
movs r0, 0x7
|
|
strh r0, [r1]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
b _08120B10
|
|
.align 2, 0
|
|
_08120AF8: .4byte gSpecialVar_0x8004
|
|
_08120AFC:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_08120B02:
|
|
ldr r0, _08120B18 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08120B1C @ =Task_ReturnToChooseMonAfterText
|
|
str r0, [r1]
|
|
_08120B10:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120B18: .4byte gTasks
|
|
_08120B1C: .4byte Task_ReturnToChooseMonAfterText
|
|
thumb_func_end Task_HandleCancelParticipationYesNoInput
|
|
|
|
thumb_func_start CanMonLearnTMTutor
|
|
CanMonLearnTMTutor: @ 8120B20
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r7, r4, 0
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
mov r8, r6
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08120B42
|
|
movs r0, 0x3
|
|
b _08120B9E
|
|
_08120B42:
|
|
movs r0, 0x90
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bls _08120B64
|
|
adds r1, r4, 0
|
|
subs r1, 0x21
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl CanMonLearnTMHM
|
|
cmp r0, 0
|
|
beq _08120B7C
|
|
adds r0, r7, 0
|
|
bl ItemIdToBattleMoveId
|
|
b _08120B86
|
|
_08120B64:
|
|
adds r0, r5, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
bl CanLearnTutorMove
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08120B80
|
|
_08120B7C:
|
|
movs r0, 0x1
|
|
b _08120B9E
|
|
_08120B80:
|
|
mov r0, r8
|
|
bl GetTutorMove
|
|
_08120B86:
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
adds r0, r5, 0
|
|
bl MonKnowsMove
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08120B9C
|
|
movs r0, 0
|
|
b _08120B9E
|
|
_08120B9C:
|
|
movs r0, 0x2
|
|
_08120B9E:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CanMonLearnTMTutor
|
|
|
|
thumb_func_start GetTutorMove
|
|
GetTutorMove: @ 8120BA8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x10
|
|
beq _08120BC8
|
|
cmp r1, 0x10
|
|
bgt _08120BBC
|
|
cmp r1, 0xF
|
|
beq _08120BC2
|
|
b _08120BD6
|
|
_08120BBC:
|
|
cmp r1, 0x11
|
|
beq _08120BD0
|
|
b _08120BD6
|
|
_08120BC2:
|
|
movs r0, 0xA9
|
|
lsls r0, 1 @ MOVE_FRENZY_PLANT
|
|
b _08120BDE
|
|
_08120BC8:
|
|
ldr r0, _08120BCC @ =0x00000133 @ MOVE_BLAST_BURN
|
|
b _08120BDE
|
|
.align 2, 0
|
|
_08120BCC: .4byte 0x00000133
|
|
_08120BD0:
|
|
movs r0, 0x9A
|
|
lsls r0, 1 @ MOVE_HYDRO_CANNON
|
|
b _08120BDE
|
|
_08120BD6:
|
|
ldr r0, _08120BE4 @ =sTutorMoves
|
|
lsls r1, 1
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
_08120BDE:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08120BE4: .4byte sTutorMoves
|
|
thumb_func_end GetTutorMove
|
|
|
|
thumb_func_start CanLearnTutorMove
|
|
CanLearnTutorMove: @ 8120BE8
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r1, 24
|
|
lsrs r2, r1, 24
|
|
cmp r2, 0x10
|
|
beq _08120C0C
|
|
cmp r2, 0x10
|
|
bgt _08120C00
|
|
cmp r2, 0xF
|
|
beq _08120C06
|
|
b _08120C18
|
|
_08120C00:
|
|
cmp r2, 0x11
|
|
beq _08120C12
|
|
b _08120C18
|
|
_08120C06:
|
|
cmp r0, 3 @ SPECIES_VENUSAUR
|
|
beq _08120C34
|
|
b _08120C2A
|
|
_08120C0C:
|
|
cmp r0, 6 @ SPECIES_CHARIZARD
|
|
beq _08120C34
|
|
b _08120C2A
|
|
_08120C12:
|
|
cmp r0, 9 @ SPECIES_BLASTOISE
|
|
beq _08120C34
|
|
b _08120C2A
|
|
_08120C18:
|
|
ldr r1, _08120C30 @ =sTutorLearnsets
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
asrs r0, r2
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08120C34
|
|
_08120C2A:
|
|
movs r0, 0
|
|
b _08120C36
|
|
.align 2, 0
|
|
_08120C30: .4byte sTutorLearnsets
|
|
_08120C34:
|
|
movs r0, 0x1
|
|
_08120C36:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CanLearnTutorMove
|
|
|
|
thumb_func_start sub_8120C3C
|
|
sub_8120C3C: @ 8120C3C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _08120C60 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08120C5C
|
|
ldr r0, _08120C64 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08120C68 @ =sub_8120C6C
|
|
str r0, [r1]
|
|
_08120C5C:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120C60: .4byte gPaletteFade
|
|
_08120C64: .4byte gTasks
|
|
_08120C68: .4byte sub_8120C6C
|
|
thumb_func_end sub_8120C3C
|
|
|
|
thumb_func_start sub_8120C6C
|
|
sub_8120C6C: @ 8120C6C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08120C9C @ =0xffff1fff
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
movs r1, 0x4
|
|
movs r2, 0
|
|
movs r3, 0x6
|
|
bl BeginNormalPaletteFade
|
|
ldr r1, _08120CA0 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08120CA4 @ =sub_8120CA8
|
|
str r1, [r0]
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120C9C: .4byte 0xffff1fff
|
|
_08120CA0: .4byte gTasks
|
|
_08120CA4: .4byte sub_8120CA8
|
|
thumb_func_end sub_8120C6C
|
|
|
|
thumb_func_start sub_8120CA8
|
|
sub_8120CA8: @ 8120CA8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _08120CCC @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08120CC8
|
|
ldr r0, _08120CD0 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08120CD4 @ =sub_8120CD8
|
|
str r0, [r1]
|
|
_08120CC8:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120CCC: .4byte gPaletteFade
|
|
_08120CD0: .4byte gTasks
|
|
_08120CD4: .4byte sub_8120CD8
|
|
thumb_func_end sub_8120CA8
|
|
|
|
thumb_func_start sub_8120CD8
|
|
sub_8120CD8: @ 8120CD8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl sub_81220D4
|
|
ldr r2, _08120D00 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r1, 0x8]
|
|
ldr r0, _08120D04 @ =sub_8120D08
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120D00: .4byte gTasks
|
|
_08120D04: .4byte sub_8120D08
|
|
thumb_func_end sub_8120CD8
|
|
|
|
thumb_func_start sub_8120D08
|
|
sub_8120D08: @ 8120D08
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r4, r1, 3
|
|
ldr r5, _08120D38 @ =gTasks+0x8
|
|
adds r0, r4, r5
|
|
ldrb r0, [r0]
|
|
bl RunTextPrinters_CheckActive
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
beq _08120D30
|
|
adds r0, r5, 0
|
|
subs r0, 0x8
|
|
adds r0, r4, r0
|
|
ldr r1, _08120D3C @ =sub_8120D40
|
|
str r1, [r0]
|
|
_08120D30:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120D38: .4byte gTasks+0x8
|
|
_08120D3C: .4byte sub_8120D40
|
|
thumb_func_end sub_8120D08
|
|
|
|
thumb_func_start sub_8120D40
|
|
sub_8120D40: @ 8120D40
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08120D70 @ =0xffff0008
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
movs r1, 0x4
|
|
movs r2, 0x6
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
ldr r1, _08120D74 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08120D78 @ =sub_8120D7C
|
|
str r1, [r0]
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120D70: .4byte 0xffff0008
|
|
_08120D74: .4byte gTasks
|
|
_08120D78: .4byte sub_8120D7C
|
|
thumb_func_end sub_8120D40
|
|
|
|
thumb_func_start sub_8120D7C
|
|
sub_8120D7C: @ 8120D7C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _08120DA0 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08120D9C
|
|
ldr r0, _08120DA4 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08120DA8 @ =sub_8120DAC
|
|
str r0, [r1]
|
|
_08120D9C:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120DA0: .4byte gPaletteFade
|
|
_08120DA4: .4byte gTasks
|
|
_08120DA8: .4byte sub_8120DAC
|
|
thumb_func_end sub_8120D7C
|
|
|
|
thumb_func_start sub_8120DAC
|
|
sub_8120DAC: @ 8120DAC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r5, _08120DD4 @ =gTasks+0x8
|
|
adds r0, r4, r5
|
|
ldrb r0, [r0]
|
|
ldr r1, _08120DD8 @ =gUnknown_8417494
|
|
bl sub_8122084
|
|
subs r5, 0x8
|
|
adds r4, r5
|
|
ldr r0, _08120DDC @ =sub_8120DE0
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120DD4: .4byte gTasks+0x8
|
|
_08120DD8: .4byte gUnknown_8417494
|
|
_08120DDC: .4byte sub_8120DE0
|
|
thumb_func_end sub_8120DAC
|
|
|
|
thumb_func_start sub_8120DE0
|
|
sub_8120DE0: @ 8120DE0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r5, r1, 3
|
|
ldr r6, _08120E14 @ =gTasks+0x8
|
|
adds r4, r5, r6
|
|
ldrb r0, [r4]
|
|
bl RunTextPrinters_CheckActive
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
beq _08120E0E
|
|
ldrb r0, [r4]
|
|
bl sub_8122110
|
|
adds r0, r6, 0
|
|
subs r0, 0x8
|
|
adds r0, r5, r0
|
|
ldr r1, _08120E18 @ =sub_8120E1C
|
|
str r1, [r0]
|
|
_08120E0E:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120E14: .4byte gTasks+0x8
|
|
_08120E18: .4byte sub_8120E1C
|
|
thumb_func_end sub_8120DE0
|
|
|
|
thumb_func_start sub_8120E1C
|
|
sub_8120E1C: @ 8120E1C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08120E4C @ =0x0000fff7
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
movs r1, 0x4
|
|
movs r2, 0x6
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
ldr r1, _08120E50 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08120E54 @ =sub_8120E58
|
|
str r1, [r0]
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120E4C: .4byte 0x0000fff7
|
|
_08120E50: .4byte gTasks
|
|
_08120E54: .4byte sub_8120E58
|
|
thumb_func_end sub_8120E1C
|
|
|
|
thumb_func_start sub_8120E58
|
|
sub_8120E58: @ 8120E58
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _08120E90 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08120EAC
|
|
movs r0, 0
|
|
movs r1, 0x4F
|
|
movs r2, 0xD0
|
|
bl TextWindow_SetUserSelectedFrame
|
|
movs r0, 0
|
|
movs r1, 0x58
|
|
movs r2, 0xF0
|
|
bl TextWindow_SetStdFrame0_WithPal
|
|
ldr r0, _08120E94 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x3
|
|
bne _08120E98
|
|
movs r0, 0x5
|
|
bl DisplayPartyMenuStdMessage
|
|
b _08120E9E
|
|
.align 2, 0
|
|
_08120E90: .4byte gPaletteFade
|
|
_08120E94: .4byte gPartyMenu
|
|
_08120E98:
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
_08120E9E:
|
|
ldr r0, _08120EB4 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08120EB8 @ =Task_HandleChooseMonInput
|
|
str r0, [r1]
|
|
_08120EAC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120EB4: .4byte gTasks
|
|
_08120EB8: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end sub_8120E58
|
|
|
|
thumb_func_start sub_8120EBC
|
|
sub_8120EBC: @ 8120EBC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08120ED8 @ =gTasks+0x8
|
|
adds r3, r1, r0
|
|
movs r2, 0
|
|
strh r2, [r3]
|
|
subs r0, 0x8
|
|
adds r1, r0
|
|
ldr r0, _08120EDC @ =sub_8120EE0
|
|
str r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_08120ED8: .4byte gTasks+0x8
|
|
_08120EDC: .4byte sub_8120EE0
|
|
thumb_func_end sub_8120EBC
|
|
|
|
thumb_func_start sub_8120EE0
|
|
sub_8120EE0: @ 8120EE0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _08120F1C @ =gTasks+0x8
|
|
adds r6, r0, r1
|
|
ldr r0, _08120F20 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08120F68
|
|
adds r0, r5, 0
|
|
bl sub_8120F78
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08120F68
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0xA0
|
|
beq _08120F38
|
|
cmp r0, 0xA0
|
|
bgt _08120F24
|
|
cmp r0, 0x50
|
|
beq _08120F2A
|
|
b _08120F62
|
|
.align 2, 0
|
|
_08120F1C: .4byte gTasks+0x8
|
|
_08120F20: .4byte gPaletteFade
|
|
_08120F24:
|
|
cmp r0, 0xF0
|
|
beq _08120F44
|
|
b _08120F62
|
|
_08120F2A:
|
|
ldr r0, _08120F34 @ =gPartyMenu + 9
|
|
movs r1, 0x2
|
|
bl UpdateCurrentPartySelection
|
|
b _08120F62
|
|
.align 2, 0
|
|
_08120F34: .4byte gPartyMenu + 9
|
|
_08120F38:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
bl CreateSelectionWindow
|
|
b _08120F62
|
|
_08120F44:
|
|
ldr r4, _08120F70 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xE
|
|
bl PartyMenuRemoveWindow
|
|
ldr r1, _08120F74 @ =sCursorOptions
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0xF]
|
|
lsls r0, 3
|
|
adds r1, 0x4
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
_08120F62:
|
|
ldrh r0, [r6]
|
|
adds r0, 0x1
|
|
strh r0, [r6]
|
|
_08120F68:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120F70: .4byte sPartyMenuInternal
|
|
_08120F74: .4byte sCursorOptions
|
|
thumb_func_end sub_8120EE0
|
|
|
|
thumb_func_start sub_8120F78
|
|
sub_8120F78: @ 8120F78
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _08120F90 @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08120F94
|
|
movs r0, 0
|
|
b _08120FA4
|
|
.align 2, 0
|
|
_08120F90: .4byte gMain
|
|
_08120F94:
|
|
ldr r0, _08120FA8 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _08120FAC @ =sub_8120FB0
|
|
str r0, [r1, 0x4]
|
|
adds r0, r2, 0
|
|
bl Task_ClosePartyMenu
|
|
movs r0, 0x1
|
|
_08120FA4:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08120FA8: .4byte sPartyMenuInternal
|
|
_08120FAC: .4byte sub_8120FB0
|
|
thumb_func_end sub_8120F78
|
|
|
|
thumb_func_start sub_8120FB0
|
|
sub_8120FB0: @ 8120FB0
|
|
push {lr}
|
|
bl FreeRestoreBattleData
|
|
bl LoadPlayerParty
|
|
bl SetTeachyTvControllerModeToResume
|
|
ldr r0, _08120FC8 @ =CB2_ReturnToTeachyTV
|
|
bl SetMainCallback2
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08120FC8: .4byte CB2_ReturnToTeachyTV
|
|
thumb_func_end sub_8120FB0
|
|
|
|
thumb_func_start sub_8120FCC
|
|
sub_8120FCC: @ 8120FCC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08120FE8 @ =gTasks+0x8
|
|
adds r3, r1, r0
|
|
movs r2, 0
|
|
strh r2, [r3]
|
|
subs r0, 0x8
|
|
adds r1, r0
|
|
ldr r0, _08120FEC @ =sub_8120FF0
|
|
str r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_08120FE8: .4byte gTasks+0x8
|
|
_08120FEC: .4byte sub_8120FF0
|
|
thumb_func_end sub_8120FCC
|
|
|
|
thumb_func_start sub_8120FF0
|
|
sub_8120FF0: @ 8120FF0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
adds r5, r2, 0
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _0812102C @ =gTasks+0x8
|
|
adds r4, r0, r1
|
|
ldr r0, _08121030 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08121048
|
|
adds r0, r2, 0
|
|
bl sub_8120F78
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08121048
|
|
ldrh r1, [r4]
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x50
|
|
beq _08121034
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4]
|
|
b _08121048
|
|
.align 2, 0
|
|
_0812102C: .4byte gTasks+0x8
|
|
_08121030: .4byte gPaletteFade
|
|
_08121034:
|
|
ldr r0, _08121050 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _08121054 @ =CB2_SetUpExitToBattleScreen
|
|
str r0, [r1, 0x4]
|
|
ldr r0, _08121058 @ =gItemUseCB
|
|
ldr r1, _0812105C @ =Task_ClosePartyMenuAfterText
|
|
ldr r2, [r0]
|
|
adds r0, r5, 0
|
|
bl _call_via_r2
|
|
_08121048:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121050: .4byte sPartyMenuInternal
|
|
_08121054: .4byte CB2_SetUpExitToBattleScreen
|
|
_08121058: .4byte gItemUseCB
|
|
_0812105C: .4byte Task_ClosePartyMenuAfterText
|
|
thumb_func_end sub_8120FF0
|
|
|
|
thumb_func_start InitPartyMenuWindows
|
|
InitPartyMenuWindows: @ 8121060
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
cmp r0, 0x1
|
|
beq _08121088
|
|
cmp r0, 0x1
|
|
bgt _08121076
|
|
cmp r0, 0
|
|
beq _0812107C
|
|
b _081210A0
|
|
_08121076:
|
|
cmp r1, 0x2
|
|
beq _08121094
|
|
b _081210A0
|
|
_0812107C:
|
|
ldr r0, _08121084 @ =sSinglePartyMenuWindowTemplate
|
|
bl InitWindows
|
|
b _081210A6
|
|
.align 2, 0
|
|
_08121084: .4byte sSinglePartyMenuWindowTemplate
|
|
_08121088:
|
|
ldr r0, _08121090 @ =sDoublePartyMenuWindowTemplate
|
|
bl InitWindows
|
|
b _081210A6
|
|
.align 2, 0
|
|
_08121090: .4byte sDoublePartyMenuWindowTemplate
|
|
_08121094:
|
|
ldr r0, _0812109C @ =sMultiPartyMenuWindowTemplate
|
|
bl InitWindows
|
|
b _081210A6
|
|
.align 2, 0
|
|
_0812109C: .4byte sMultiPartyMenuWindowTemplate
|
|
_081210A0:
|
|
ldr r0, _081210F4 @ =sShowcaseMultiPartyMenuWindowTemplate
|
|
bl InitWindows
|
|
_081210A6:
|
|
bl DeactivateAllTextPrinters
|
|
movs r4, 0
|
|
_081210AC:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl FillWindowPixelBuffer
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x5
|
|
bls _081210AC
|
|
movs r0, 0
|
|
movs r1, 0x4F
|
|
movs r2, 0xD0
|
|
bl TextWindow_SetUserSelectedFrame
|
|
movs r0, 0
|
|
movs r1, 0x58
|
|
movs r2, 0xF0
|
|
bl TextWindow_SetStdFrame0_WithPal
|
|
movs r0, 0x2
|
|
bl stdpal_get
|
|
movs r1, 0xC0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
movs r0, 0
|
|
bl stdpal_get
|
|
movs r1, 0xE0
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081210F4: .4byte sShowcaseMultiPartyMenuWindowTemplate
|
|
thumb_func_end InitPartyMenuWindows
|
|
|
|
thumb_func_start CreateCancelConfirmWindows
|
|
CreateCancelConfirmWindows: @ 81210F8
|
|
push {r4-r6,lr}
|
|
sub sp, 0x14
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _08121174 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x5
|
|
bne _0812110E
|
|
b _08121238
|
|
_0812110E:
|
|
cmp r2, 0x1
|
|
bne _08121188
|
|
ldr r0, _08121178 @ =sConfirmButtonWindowTemplate
|
|
bl AddWindow
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl FillWindowPixelBuffer
|
|
ldr r5, _0812117C @ =gMenuText_Confirm
|
|
movs r0, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl GetStringWidth
|
|
movs r2, 0x30
|
|
subs r2, r0
|
|
lsrs r2, 1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08121180 @ =sFontColorTable
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [sp, 0xC]
|
|
str r5, [sp, 0x10]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r3, 0x1
|
|
bl AddTextPrinterParameterized4
|
|
adds r0, r4, 0
|
|
bl PutWindowTilemap
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl CopyWindowToVram
|
|
ldr r0, _08121184 @ =sMultiCancelButtonWindowTemplate
|
|
bl AddWindow
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0
|
|
b _08121194
|
|
.align 2, 0
|
|
_08121174: .4byte gPartyMenu
|
|
_08121178: .4byte sConfirmButtonWindowTemplate
|
|
_0812117C: .4byte gMenuText_Confirm
|
|
_08121180: .4byte sFontColorTable
|
|
_08121184: .4byte sMultiCancelButtonWindowTemplate
|
|
_08121188:
|
|
ldr r0, _081211E0 @ =sCancelButtonWindowTemplate
|
|
bl AddWindow
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0x3
|
|
_08121194:
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl FillWindowPixelBuffer
|
|
ldr r0, _081211E4 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0xA
|
|
beq _081211F0
|
|
ldr r4, _081211E8 @ =gFameCheckerText_Cancel
|
|
movs r0, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
bl GetStringWidth
|
|
movs r1, 0x30
|
|
subs r1, r0
|
|
lsrs r0, r1, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
adds r1, r5, r1
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
ldr r0, _081211EC @ =sFontColorTable
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
adds r2, r5, 0
|
|
movs r3, 0x1
|
|
bl AddTextPrinterParameterized3
|
|
b _08121224
|
|
.align 2, 0
|
|
_081211E0: .4byte sCancelButtonWindowTemplate
|
|
_081211E4: .4byte gPartyMenu
|
|
_081211E8: .4byte gFameCheckerText_Cancel
|
|
_081211EC: .4byte sFontColorTable
|
|
_081211F0:
|
|
ldr r4, _08121240 @ =gOtherText_Exit
|
|
movs r0, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
bl GetStringWidth
|
|
movs r1, 0x30
|
|
subs r1, r0
|
|
lsrs r0, r1, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
adds r1, r5, r1
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
ldr r0, _08121244 @ =sFontColorTable
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
adds r2, r5, 0
|
|
movs r3, 0x1
|
|
bl AddTextPrinterParameterized3
|
|
_08121224:
|
|
adds r0, r6, 0
|
|
bl PutWindowTilemap
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl CopyWindowToVram
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_08121238:
|
|
add sp, 0x14
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121240: .4byte gOtherText_Exit
|
|
_08121244: .4byte sFontColorTable
|
|
thumb_func_end CreateCancelConfirmWindows
|
|
|
|
thumb_func_start GetPartyMenuPalBufferPtr
|
|
GetPartyMenuPalBufferPtr: @ 8121248
|
|
lsls r0, 24
|
|
ldr r1, _08121258 @ =sPartyMenuInternal
|
|
lsrs r0, 23
|
|
adds r0, 0x18
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
adds r0, r1, 0
|
|
bx lr
|
|
.align 2, 0
|
|
_08121258: .4byte sPartyMenuInternal
|
|
thumb_func_end GetPartyMenuPalBufferPtr
|
|
|
|
thumb_func_start BlitBitmapToPartyWindow
|
|
BlitBitmapToPartyWindow: @ 812125C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x2C
|
|
str r1, [sp, 0xC]
|
|
ldr r1, [sp, 0x4C]
|
|
ldr r4, [sp, 0x50]
|
|
ldr r5, [sp, 0x54]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x8]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp, 0x10]
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
str r3, [sp, 0x14]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x18]
|
|
lsls r4, 24
|
|
lsrs r6, r4, 24
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
mov r10, r5
|
|
mov r0, r10
|
|
muls r0, r6
|
|
lsls r0, 5
|
|
bl AllocZeroed
|
|
mov r9, r0
|
|
cmp r0, 0
|
|
beq _0812132A
|
|
movs r5, 0
|
|
ldr r0, [sp, 0x14]
|
|
lsls r0, 19
|
|
str r0, [sp, 0x1C]
|
|
ldr r1, [sp, 0x18]
|
|
lsls r1, 19
|
|
str r1, [sp, 0x20]
|
|
lsls r2, r6, 19
|
|
str r2, [sp, 0x24]
|
|
mov r0, r10
|
|
lsls r0, 19
|
|
str r0, [sp, 0x28]
|
|
cmp r5, r10
|
|
bcs _08121308
|
|
_081212BE:
|
|
movs r4, 0
|
|
adds r1, r5, 0x1
|
|
mov r8, r1
|
|
cmp r4, r6
|
|
bcs _081212FE
|
|
ldr r2, [sp, 0x18]
|
|
adds r0, r2, r5
|
|
ldr r2, [sp, 0x10]
|
|
adds r1, r0, 0
|
|
muls r1, r2
|
|
adds r7, r1, 0
|
|
_081212D4:
|
|
ldr r1, [sp, 0x14]
|
|
adds r0, r1, r4
|
|
adds r0, r7
|
|
ldr r2, [sp, 0xC]
|
|
adds r0, r2, r0
|
|
ldrb r0, [r0]
|
|
bl GetPartyMenuBgTile
|
|
adds r1, r5, 0
|
|
muls r1, r6
|
|
adds r1, r4
|
|
lsls r1, 5
|
|
add r1, r9
|
|
movs r2, 0x10
|
|
bl CpuSet
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, r6
|
|
bcc _081212D4
|
|
_081212FE:
|
|
mov r1, r8
|
|
lsls r0, r1, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, r10
|
|
bcc _081212BE
|
|
_08121308:
|
|
ldr r0, [sp, 0x1C]
|
|
lsrs r2, r0, 16
|
|
ldr r1, [sp, 0x20]
|
|
lsrs r3, r1, 16
|
|
ldr r1, [sp, 0x24]
|
|
lsrs r0, r1, 16
|
|
str r0, [sp]
|
|
ldr r1, [sp, 0x28]
|
|
lsrs r0, r1, 16
|
|
str r0, [sp, 0x4]
|
|
ldr r0, [sp, 0x8]
|
|
mov r1, r9
|
|
bl BlitBitmapToWindow
|
|
mov r0, r9
|
|
bl Free
|
|
_0812132A:
|
|
add sp, 0x2C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end BlitBitmapToPartyWindow
|
|
|
|
thumb_func_start BlitBitmapToPartyWindow_LeftColumn
|
|
BlitBitmapToPartyWindow_LeftColumn: @ 812133C
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
ldr r4, [sp, 0x1C]
|
|
ldr r5, [sp, 0x20]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
cmp r3, 0
|
|
bne _08121368
|
|
cmp r4, 0
|
|
bne _08121368
|
|
movs r3, 0xA
|
|
movs r4, 0x7
|
|
_08121368:
|
|
cmp r5, 0
|
|
bne _08121384
|
|
ldr r1, _08121380 @ =sMainSlotTileNums
|
|
str r2, [sp]
|
|
str r3, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r2, 0xA
|
|
adds r3, r6, 0
|
|
bl BlitBitmapToPartyWindow
|
|
b _08121394
|
|
.align 2, 0
|
|
_08121380: .4byte sMainSlotTileNums
|
|
_08121384:
|
|
ldr r1, _0812139C @ =sMainSlotTileNums_Egg
|
|
str r2, [sp]
|
|
str r3, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r2, 0xA
|
|
adds r3, r6, 0
|
|
bl BlitBitmapToPartyWindow
|
|
_08121394:
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812139C: .4byte sMainSlotTileNums_Egg
|
|
thumb_func_end BlitBitmapToPartyWindow_LeftColumn
|
|
|
|
thumb_func_start BlitBitmapToPartyWindow_RightColumn
|
|
BlitBitmapToPartyWindow_RightColumn: @ 81213A0
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
ldr r4, [sp, 0x1C]
|
|
ldr r5, [sp, 0x20]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
cmp r3, 0
|
|
bne _081213CC
|
|
cmp r4, 0
|
|
bne _081213CC
|
|
movs r3, 0x12
|
|
movs r4, 0x3
|
|
_081213CC:
|
|
cmp r5, 0
|
|
bne _081213E8
|
|
ldr r1, _081213E4 @ =sOtherSlotsTileNums
|
|
str r2, [sp]
|
|
str r3, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r2, 0x12
|
|
adds r3, r6, 0
|
|
bl BlitBitmapToPartyWindow
|
|
b _081213F8
|
|
.align 2, 0
|
|
_081213E4: .4byte sOtherSlotsTileNums
|
|
_081213E8:
|
|
ldr r1, _08121400 @ =sOtherSlotsTileNums_Egg
|
|
str r2, [sp]
|
|
str r3, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r2, 0x12
|
|
adds r3, r6, 0
|
|
bl BlitBitmapToPartyWindow
|
|
_081213F8:
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121400: .4byte sOtherSlotsTileNums_Egg
|
|
thumb_func_end BlitBitmapToPartyWindow_RightColumn
|
|
|
|
thumb_func_start DrawEmptySlot
|
|
DrawEmptySlot: @ 8121404
|
|
push {lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _08121428 @ =sEmptySlotTileNums
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
movs r2, 0x12
|
|
str r2, [sp, 0x4]
|
|
movs r2, 0x3
|
|
str r2, [sp, 0x8]
|
|
movs r2, 0x12
|
|
movs r3, 0
|
|
bl BlitBitmapToPartyWindow
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121428: .4byte sEmptySlotTileNums
|
|
thumb_func_end DrawEmptySlot
|
|
|
|
thumb_func_start LoadPartyBoxPalette
|
|
LoadPartyBoxPalette: @ 812142C
|
|
push {r4-r7,lr}
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
adds r5, r4, 0
|
|
ldrb r0, [r0, 0x8]
|
|
movs r1, 0x5
|
|
bl GetWindowAttribute
|
|
lsls r0, 28
|
|
lsrs r6, r0, 24
|
|
adds r7, r6, 0
|
|
movs r0, 0x20
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _081214A0
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0812145C
|
|
ldr r5, _08121458 @ =sPartyBoxSelectedForActionPalIds1
|
|
b _0812160A
|
|
.align 2, 0
|
|
_08121458: .4byte sPartyBoxSelectedForActionPalIds1
|
|
_0812145C:
|
|
ldr r5, _08121494 @ =sPartyBoxSelectedForActionPalIds1
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121498 @ =sPartyBoxPalOffsets1
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r5, _0812149C @ =sPartyBoxSelectedForActionPalIds2
|
|
b _0812163E
|
|
.align 2, 0
|
|
_08121494: .4byte sPartyBoxSelectedForActionPalIds1
|
|
_08121498: .4byte sPartyBoxPalOffsets1
|
|
_0812149C: .4byte sPartyBoxSelectedForActionPalIds2
|
|
_081214A0:
|
|
movs r0, 0x10
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _081214EC
|
|
ldr r5, _081214E0 @ =sPartyBoxSelectedForActionPalIds1
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _081214E4 @ =sPartyBoxPalOffsets1
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r5, _081214E8 @ =sPartyBoxSelectedForActionPalIds2
|
|
b _0812163E
|
|
.align 2, 0
|
|
_081214E0: .4byte sPartyBoxSelectedForActionPalIds1
|
|
_081214E4: .4byte sPartyBoxPalOffsets1
|
|
_081214E8: .4byte sPartyBoxSelectedForActionPalIds2
|
|
_081214EC:
|
|
movs r0, 0x4
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08121548
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08121504
|
|
ldr r5, _08121500 @ =sPartyBoxSelectedForActionPalIds1
|
|
b _0812160A
|
|
.align 2, 0
|
|
_08121500: .4byte sPartyBoxSelectedForActionPalIds1
|
|
_08121504:
|
|
ldr r5, _0812153C @ =sPartyBoxSelectedForActionPalIds1
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121540 @ =sPartyBoxPalOffsets1
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r5, _08121544 @ =sPartyBoxSelectedForActionPalIds2
|
|
b _0812163E
|
|
.align 2, 0
|
|
_0812153C: .4byte sPartyBoxSelectedForActionPalIds1
|
|
_08121540: .4byte sPartyBoxPalOffsets1
|
|
_08121544: .4byte sPartyBoxSelectedForActionPalIds2
|
|
_08121548:
|
|
movs r0, 0x2
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _081215A4
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08121560
|
|
ldr r5, _0812155C @ =sPartyBoxCurrSelectionFaintedPalIds
|
|
b _0812160A
|
|
.align 2, 0
|
|
_0812155C: .4byte sPartyBoxCurrSelectionFaintedPalIds
|
|
_08121560:
|
|
ldr r5, _08121598 @ =sPartyBoxFaintedPalIds1
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _0812159C @ =sPartyBoxPalOffsets1
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r5, _081215A0 @ =sPartyBoxFaintedPalIds2
|
|
b _0812163E
|
|
.align 2, 0
|
|
_08121598: .4byte sPartyBoxFaintedPalIds1
|
|
_0812159C: .4byte sPartyBoxPalOffsets1
|
|
_081215A0: .4byte sPartyBoxFaintedPalIds2
|
|
_081215A4:
|
|
movs r0, 0x8
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08121600
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _081215BC
|
|
ldr r5, _081215B8 @ =sPartyBoxCurrSelectionMultiPalIds
|
|
b _0812160A
|
|
.align 2, 0
|
|
_081215B8: .4byte sPartyBoxCurrSelectionMultiPalIds
|
|
_081215BC:
|
|
ldr r5, _081215F4 @ =sPartyBoxMultiPalIds1
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _081215F8 @ =sPartyBoxPalOffsets1
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r5, _081215FC @ =sPartyBoxMultiPalIds2
|
|
b _0812163E
|
|
.align 2, 0
|
|
_081215F4: .4byte sPartyBoxMultiPalIds1
|
|
_081215F8: .4byte sPartyBoxPalOffsets1
|
|
_081215FC: .4byte sPartyBoxMultiPalIds2
|
|
_08121600:
|
|
movs r0, 0x1
|
|
ands r5, r0
|
|
cmp r5, 0
|
|
beq _08121684
|
|
ldr r5, _08121674 @ =sPartyBoxCurrSelectionPalIds1
|
|
_0812160A:
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121678 @ =sPartyBoxPalOffsets1
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r5, _0812167C @ =sPartyBoxCurrSelectionPalIds2
|
|
_0812163E:
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121680 @ =sPartyBoxPalOffsets2
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
b _081216EC
|
|
.align 2, 0
|
|
_08121674: .4byte sPartyBoxCurrSelectionPalIds1
|
|
_08121678: .4byte sPartyBoxPalOffsets1
|
|
_0812167C: .4byte sPartyBoxCurrSelectionPalIds2
|
|
_08121680: .4byte sPartyBoxPalOffsets2
|
|
_08121684:
|
|
ldr r5, _081216F4 @ =sPartyBoxEmptySlotPalIds1
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _081216F8 @ =sPartyBoxPalOffsets1
|
|
ldrb r1, [r4]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r5, _081216FC @ =sPartyBoxEmptySlotPalIds2
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121700 @ =sPartyBoxPalOffsets2
|
|
ldrb r1, [r4]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x2]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x2]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
_081216EC:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081216F4: .4byte sPartyBoxEmptySlotPalIds1
|
|
_081216F8: .4byte sPartyBoxPalOffsets1
|
|
_081216FC: .4byte sPartyBoxEmptySlotPalIds2
|
|
_08121700: .4byte sPartyBoxPalOffsets2
|
|
thumb_func_end LoadPartyBoxPalette
|
|
|
|
thumb_func_start DisplayPartyPokemonBarDetail
|
|
DisplayPartyPokemonBarDetail: @ 8121704
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldrb r5, [r3]
|
|
ldrb r3, [r3, 0x1]
|
|
lsls r4, r2, 1
|
|
adds r4, r2
|
|
ldr r2, _08121734 @ =sFontColorTable
|
|
adds r4, r2
|
|
str r4, [sp]
|
|
movs r2, 0
|
|
str r2, [sp, 0x4]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0
|
|
adds r2, r5, 0
|
|
bl AddTextPrinterParameterized3
|
|
add sp, 0xC
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121734: .4byte sFontColorTable
|
|
thumb_func_end DisplayPartyPokemonBarDetail
|
|
|
|
thumb_func_start DisplayPartyPokemonNickname
|
|
DisplayPartyPokemonNickname: @ 8121738
|
|
push {r4-r7,lr}
|
|
sub sp, 0x14
|
|
adds r7, r0, 0
|
|
adds r6, r1, 0
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08121788
|
|
cmp r4, 0x1
|
|
bne _08121772
|
|
ldr r5, [r6]
|
|
ldrb r0, [r6, 0x8]
|
|
ldrb r1, [r5, 0x4]
|
|
lsrs r1, 3
|
|
ldrb r2, [r5, 0x5]
|
|
lsrs r2, 3
|
|
ldrb r3, [r5, 0x6]
|
|
lsrs r3, 3
|
|
ldrb r4, [r5, 0x7]
|
|
lsrs r4, 3
|
|
str r4, [sp]
|
|
movs r4, 0
|
|
str r4, [sp, 0x4]
|
|
ldr r4, [r5]
|
|
bl _call_via_r4
|
|
_08121772:
|
|
adds r0, r7, 0
|
|
add r1, sp, 0x8
|
|
bl GetMonNickname
|
|
ldrb r0, [r6, 0x8]
|
|
ldr r3, [r6]
|
|
adds r3, 0x4
|
|
add r1, sp, 0x8
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonBarDetail
|
|
_08121788:
|
|
add sp, 0x14
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonNickname
|
|
|
|
thumb_func_start DisplayPartyPokemonLevelCheck
|
|
DisplayPartyPokemonLevelCheck: @ 8121790
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
adds r6, r0, 0
|
|
adds r7, r1, 0
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
mov r8, r4
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _081217FC
|
|
adds r0, r6, 0
|
|
bl GetMonAilment
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _081217BE
|
|
cmp r0, 0x6
|
|
bne _081217FC
|
|
_081217BE:
|
|
cmp r4, 0
|
|
beq _081217E4
|
|
ldr r5, [r7]
|
|
ldrb r0, [r7, 0x8]
|
|
ldrb r1, [r5, 0x8]
|
|
lsrs r1, 3
|
|
ldrb r2, [r5, 0x9]
|
|
lsrs r2, 3
|
|
adds r2, 0x1
|
|
ldrb r3, [r5, 0xA]
|
|
lsrs r3, 3
|
|
ldrb r4, [r5, 0xB]
|
|
lsrs r4, 3
|
|
str r4, [sp]
|
|
movs r4, 0
|
|
str r4, [sp, 0x4]
|
|
ldr r4, [r5]
|
|
bl _call_via_r4
|
|
_081217E4:
|
|
mov r0, r8
|
|
cmp r0, 0x2
|
|
beq _081217FC
|
|
adds r0, r6, 0
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r7, 0
|
|
bl DisplayPartyPokemonLevel
|
|
_081217FC:
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonLevelCheck
|
|
|
|
thumb_func_start DisplayPartyPokemonLevel
|
|
DisplayPartyPokemonLevel: @ 8121808
|
|
push {r4-r6,lr}
|
|
adds r2, r0, 0
|
|
adds r6, r1, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldr r5, _08121848 @ =gStringVar2
|
|
adds r0, r5, 0
|
|
adds r1, r2, 0
|
|
movs r2, 0
|
|
movs r3, 0x3
|
|
bl ConvertIntToDecimalStringN
|
|
ldr r4, _0812184C @ =gStringVar1
|
|
ldr r1, _08121850 @ =gText_Lv
|
|
adds r0, r4, 0
|
|
bl StringCopy
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl StringAppend
|
|
ldrb r0, [r6, 0x8]
|
|
ldr r3, [r6]
|
|
adds r3, 0x8
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonBarDetail
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121848: .4byte gStringVar2
|
|
_0812184C: .4byte gStringVar1
|
|
_08121850: .4byte gText_Lv
|
|
thumb_func_end DisplayPartyPokemonLevel
|
|
|
|
thumb_func_start DisplayPartyPokemonGenderNidoranCheck
|
|
DisplayPartyPokemonGenderNidoranCheck: @ 8121854
|
|
push {r4-r7,lr}
|
|
sub sp, 0x14
|
|
adds r6, r0, 0
|
|
adds r7, r1, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
cmp r2, 0x1
|
|
bne _08121886
|
|
ldr r5, [r7]
|
|
ldrb r0, [r7, 0x8]
|
|
ldrb r1, [r5, 0xC]
|
|
lsrs r1, 3
|
|
ldrb r2, [r5, 0xD]
|
|
lsrs r2, 3
|
|
adds r2, 0x1
|
|
ldrb r3, [r5, 0xE]
|
|
lsrs r3, 3
|
|
ldrb r4, [r5, 0xF]
|
|
lsrs r4, 3
|
|
str r4, [sp]
|
|
movs r4, 0
|
|
str r4, [sp, 0x4]
|
|
ldr r4, [r5]
|
|
bl _call_via_r4
|
|
_08121886:
|
|
adds r0, r6, 0
|
|
add r1, sp, 0x8
|
|
bl GetMonNickname
|
|
adds r0, r6, 0
|
|
bl GetMonGender
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r6, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
add r2, sp, 0x8
|
|
adds r3, r7, 0
|
|
bl DisplayPartyPokemonGender
|
|
add sp, 0x14
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonGenderNidoranCheck
|
|
|
|
thumb_func_start DisplayPartyPokemonGender
|
|
DisplayPartyPokemonGender: @ 81218BC
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
mov r9, r2
|
|
adds r7, r3, 0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r5, r4, 0
|
|
ldrb r0, [r7, 0x8]
|
|
movs r1, 0x5
|
|
bl GetWindowAttribute
|
|
lsls r0, 28
|
|
lsrs r6, r0, 24
|
|
cmp r4, 0
|
|
beq _08121982
|
|
cmp r4, 0x20
|
|
beq _081218EC
|
|
cmp r4, 0x1D
|
|
bne _08121900
|
|
_081218EC:
|
|
movs r0, 0xB
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, _0812190C @ =gSpeciesNames
|
|
adds r1, r0
|
|
mov r0, r9
|
|
bl StringCompare
|
|
cmp r0, 0
|
|
beq _08121982
|
|
_08121900:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _08121910
|
|
cmp r0, 0xFE
|
|
beq _08121950
|
|
b _08121982
|
|
.align 2, 0
|
|
_0812190C: .4byte gSpeciesNames
|
|
_08121910:
|
|
ldr r5, _08121944 @ =sGenderMalePalIds
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121948 @ =sGenderPalOffsets
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r7, 0x8]
|
|
ldr r1, _0812194C @ =gText_MaleSymbol
|
|
ldr r3, [r7]
|
|
adds r3, 0xC
|
|
movs r2, 0x2
|
|
bl DisplayPartyPokemonBarDetail
|
|
b _08121982
|
|
.align 2, 0
|
|
_08121944: .4byte sGenderMalePalIds
|
|
_08121948: .4byte sGenderPalOffsets
|
|
_0812194C: .4byte gText_MaleSymbol
|
|
_08121950:
|
|
ldr r5, _08121990 @ =sGenderFemalePalIds
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121994 @ =sGenderPalOffsets
|
|
ldrb r1, [r4]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r6
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r7, 0x8]
|
|
ldr r1, _08121998 @ =gText_FemaleSymbol
|
|
ldr r3, [r7]
|
|
adds r3, 0xC
|
|
movs r2, 0x2
|
|
bl DisplayPartyPokemonBarDetail
|
|
_08121982:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121990: .4byte sGenderFemalePalIds
|
|
_08121994: .4byte sGenderPalOffsets
|
|
_08121998: .4byte gText_FemaleSymbol
|
|
thumb_func_end DisplayPartyPokemonGender
|
|
|
|
thumb_func_start DisplayPartyPokemonHPCheck
|
|
DisplayPartyPokemonHPCheck: @ 812199C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
adds r7, r0, 0
|
|
adds r6, r1, 0
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
mov r8, r4
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _081219F6
|
|
cmp r4, 0
|
|
beq _081219DE
|
|
ldr r5, [r6]
|
|
ldrb r0, [r6, 0x8]
|
|
ldrb r1, [r5, 0x10]
|
|
lsrs r1, 3
|
|
ldrb r2, [r5, 0x11]
|
|
lsrs r2, 3
|
|
adds r2, 0x1
|
|
ldrb r3, [r5, 0x12]
|
|
lsrs r3, 3
|
|
ldrb r4, [r5, 0x13]
|
|
lsrs r4, 3
|
|
str r4, [sp]
|
|
movs r4, 0
|
|
str r4, [sp, 0x4]
|
|
ldr r4, [r5]
|
|
bl _call_via_r4
|
|
_081219DE:
|
|
mov r0, r8
|
|
cmp r0, 0x2
|
|
beq _081219F6
|
|
adds r0, r7, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
bl DisplayPartyPokemonHP
|
|
_081219F6:
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonHPCheck
|
|
|
|
thumb_func_start DisplayPartyPokemonHP
|
|
DisplayPartyPokemonHP: @ 8121A04
|
|
push {r4,r5,lr}
|
|
adds r2, r0, 0
|
|
adds r4, r1, 0
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
ldr r5, _08121A38 @ =gStringVar1
|
|
adds r0, r5, 0
|
|
adds r1, r2, 0
|
|
movs r2, 0x1
|
|
movs r3, 0x3
|
|
bl ConvertIntToDecimalStringN
|
|
movs r1, 0xBA
|
|
strb r1, [r0]
|
|
movs r1, 0xFF
|
|
strb r1, [r0, 0x1]
|
|
ldrb r0, [r4, 0x8]
|
|
ldr r3, [r4]
|
|
adds r3, 0x10
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonBarDetail
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121A38: .4byte gStringVar1
|
|
thumb_func_end DisplayPartyPokemonHP
|
|
|
|
thumb_func_start DisplayPartyPokemonMaxHPCheck
|
|
DisplayPartyPokemonMaxHPCheck: @ 8121A3C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
adds r7, r0, 0
|
|
adds r6, r1, 0
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
mov r8, r4
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08121A98
|
|
cmp r4, 0
|
|
beq _08121A80
|
|
ldr r5, [r6]
|
|
ldrb r0, [r6, 0x8]
|
|
ldrb r1, [r5, 0x14]
|
|
lsrs r1, 3
|
|
adds r1, 0x1
|
|
ldrb r2, [r5, 0x15]
|
|
lsrs r2, 3
|
|
adds r2, 0x1
|
|
ldrb r3, [r5, 0x16]
|
|
lsrs r3, 3
|
|
ldrb r4, [r5, 0x17]
|
|
lsrs r4, 3
|
|
str r4, [sp]
|
|
movs r4, 0
|
|
str r4, [sp, 0x4]
|
|
ldr r4, [r5]
|
|
bl _call_via_r4
|
|
_08121A80:
|
|
mov r0, r8
|
|
cmp r0, 0x2
|
|
beq _08121A98
|
|
adds r0, r7, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
bl DisplayPartyPokemonMaxHP
|
|
_08121A98:
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonMaxHPCheck
|
|
|
|
thumb_func_start DisplayPartyPokemonMaxHP
|
|
DisplayPartyPokemonMaxHP: @ 8121AA4
|
|
push {r4-r6,lr}
|
|
adds r2, r0, 0
|
|
adds r6, r1, 0
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
ldr r5, _08121AE4 @ =gStringVar2
|
|
adds r0, r5, 0
|
|
adds r1, r2, 0
|
|
movs r2, 0x1
|
|
movs r3, 0x3
|
|
bl ConvertIntToDecimalStringN
|
|
ldr r4, _08121AE8 @ =gStringVar1
|
|
ldr r1, _08121AEC @ =gText_Slash
|
|
adds r0, r4, 0
|
|
bl StringCopy
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl StringAppend
|
|
ldrb r0, [r6, 0x8]
|
|
ldr r3, [r6]
|
|
adds r3, 0x14
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
bl DisplayPartyPokemonBarDetail
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121AE4: .4byte gStringVar2
|
|
_08121AE8: .4byte gStringVar1
|
|
_08121AEC: .4byte gText_Slash
|
|
thumb_func_end DisplayPartyPokemonMaxHP
|
|
|
|
thumb_func_start DisplayPartyPokemonHPBarCheck
|
|
DisplayPartyPokemonHPBarCheck: @ 8121AF0
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
adds r6, r1, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08121B24
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
adds r2, r6, 0
|
|
bl DisplayPartyPokemonHPBar
|
|
_08121B24:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayPartyPokemonHPBarCheck
|
|
|
|
thumb_func_start DisplayPartyPokemonHPBar
|
|
DisplayPartyPokemonHPBar: @ 8121B2C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x8
|
|
adds r6, r2, 0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
mov r9, r1
|
|
ldrb r0, [r6, 0x8]
|
|
movs r1, 0x5
|
|
bl GetWindowAttribute
|
|
lsls r0, 28
|
|
lsrs r7, r0, 24
|
|
mov r1, r8
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
mov r2, r9
|
|
lsls r1, r2, 16
|
|
asrs r1, 16
|
|
bl GetHPBarLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
beq _08121B78
|
|
cmp r0, 0x2
|
|
blt _08121BA8
|
|
cmp r0, 0x4
|
|
bgt _08121BA8
|
|
ldr r5, _08121B74 @ =sHPBarGreenPalIds
|
|
b _08121B7A
|
|
.align 2, 0
|
|
_08121B74: .4byte sHPBarGreenPalIds
|
|
_08121B78:
|
|
ldr r5, _08121BA0 @ =sHPBarYellowPalIds
|
|
_08121B7A:
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121BA4 @ =sHPBarPalOffsets
|
|
ldrb r1, [r4]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
b _08121BCC
|
|
.align 2, 0
|
|
_08121BA0: .4byte sHPBarYellowPalIds
|
|
_08121BA4: .4byte sHPBarPalOffsets
|
|
_08121BA8:
|
|
ldr r5, _08121C68 @ =sHPBarRedPalIds
|
|
ldrb r0, [r5]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldr r4, _08121C6C @ =sHPBarPalOffsets
|
|
ldrb r1, [r4]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldrb r0, [r5, 0x1]
|
|
bl GetPartyMenuPalBufferPtr
|
|
ldrb r1, [r4, 0x1]
|
|
adds r1, r7
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
_08121BCC:
|
|
mov r1, r8
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
mov r2, r9
|
|
lsls r1, r2, 16
|
|
asrs r1, 16
|
|
ldr r2, [r6]
|
|
ldrb r2, [r2, 0x1A]
|
|
bl GetScaledHPFraction
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldrb r0, [r6, 0x8]
|
|
ldr r4, _08121C6C @ =sHPBarPalOffsets
|
|
ldrb r1, [r4, 0x1]
|
|
ldr r3, [r6]
|
|
ldrb r2, [r3, 0x18]
|
|
ldrb r3, [r3, 0x19]
|
|
str r5, [sp]
|
|
movs r7, 0x1
|
|
str r7, [sp, 0x4]
|
|
bl FillWindowPixelRect
|
|
ldrb r0, [r6, 0x8]
|
|
ldrb r1, [r4]
|
|
ldr r3, [r6]
|
|
ldrb r2, [r3, 0x18]
|
|
ldrb r3, [r3, 0x19]
|
|
adds r3, 0x1
|
|
str r5, [sp]
|
|
movs r4, 0x2
|
|
str r4, [sp, 0x4]
|
|
bl FillWindowPixelRect
|
|
ldr r1, [r6]
|
|
ldrb r0, [r1, 0x1A]
|
|
cmp r5, r0
|
|
beq _08121C50
|
|
ldrb r0, [r6, 0x8]
|
|
ldrb r2, [r1, 0x18]
|
|
adds r2, r5
|
|
ldrb r3, [r1, 0x19]
|
|
ldrb r1, [r1, 0x1A]
|
|
subs r1, r5
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
str r1, [sp]
|
|
str r7, [sp, 0x4]
|
|
movs r1, 0xD
|
|
bl FillWindowPixelRect
|
|
ldrb r0, [r6, 0x8]
|
|
ldr r1, [r6]
|
|
ldrb r2, [r1, 0x18]
|
|
adds r2, r5
|
|
ldrb r3, [r1, 0x19]
|
|
adds r3, 0x1
|
|
ldrb r1, [r1, 0x1A]
|
|
subs r1, r5
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
str r1, [sp]
|
|
str r4, [sp, 0x4]
|
|
movs r1, 0x2
|
|
bl FillWindowPixelRect
|
|
_08121C50:
|
|
ldrb r0, [r6, 0x8]
|
|
movs r1, 0x2
|
|
bl CopyWindowToVram
|
|
add sp, 0x8
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121C68: .4byte sHPBarRedPalIds
|
|
_08121C6C: .4byte sHPBarPalOffsets
|
|
thumb_func_end DisplayPartyPokemonHPBar
|
|
|
|
thumb_func_start DisplayPartyPokemonDescriptionText
|
|
DisplayPartyPokemonDescriptionText: @ 8121C70
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
adds r6, r1, 0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r7, r2, 0
|
|
cmp r7, 0
|
|
beq _08121CAA
|
|
ldr r5, [r6]
|
|
ldrb r0, [r6, 0x8]
|
|
ldrb r1, [r5, 0x1C]
|
|
lsrs r1, 3
|
|
ldrb r2, [r5, 0x1D]
|
|
lsrs r2, 3
|
|
ldrb r3, [r5, 0x1E]
|
|
lsrs r3, 3
|
|
ldrb r4, [r5, 0x1F]
|
|
lsrs r4, 3
|
|
str r4, [sp]
|
|
movs r4, 0x1
|
|
str r4, [sp, 0x4]
|
|
ldr r4, [r5]
|
|
bl _call_via_r4
|
|
_08121CAA:
|
|
cmp r7, 0x2
|
|
beq _08121CD0
|
|
ldrb r0, [r6, 0x8]
|
|
ldr r1, [r6]
|
|
ldrb r2, [r1, 0x1C]
|
|
ldrb r3, [r1, 0x1D]
|
|
ldr r1, _08121CDC @ =sFontColorTable
|
|
str r1, [sp]
|
|
movs r1, 0
|
|
str r1, [sp, 0x4]
|
|
ldr r4, _08121CE0 @ =sDescriptionStringTable
|
|
mov r5, r8
|
|
lsls r1, r5, 2
|
|
adds r1, r4
|
|
ldr r1, [r1]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0x1
|
|
bl AddTextPrinterParameterized3
|
|
_08121CD0:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121CDC: .4byte sFontColorTable
|
|
_08121CE0: .4byte sDescriptionStringTable
|
|
thumb_func_end DisplayPartyPokemonDescriptionText
|
|
|
|
thumb_func_start PartyMenuRemoveWindow
|
|
PartyMenuRemoveWindow: @ 8121CE4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrb r0, [r4]
|
|
cmp r0, 0xFF
|
|
beq _08121D04
|
|
movs r1, 0
|
|
bl ClearStdWindowAndFrameToTransparent
|
|
ldrb r0, [r4]
|
|
bl RemoveWindow
|
|
movs r0, 0xFF
|
|
strb r0, [r4]
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_08121D04:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end PartyMenuRemoveWindow
|
|
|
|
thumb_func_start DisplayPartyMenuStdMessage
|
|
DisplayPartyMenuStdMessage: @ 8121D0C
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
adds r6, r0, 0
|
|
ldr r0, _08121D3C @ =sPartyMenuInternal
|
|
ldr r4, [r0]
|
|
adds r5, r4, 0
|
|
adds r5, 0xD
|
|
ldrb r0, [r4, 0xD]
|
|
cmp r0, 0xFF
|
|
beq _08121D26
|
|
adds r0, r5, 0
|
|
bl PartyMenuRemoveWindow
|
|
_08121D26:
|
|
cmp r6, 0x7F
|
|
beq _08121DE8
|
|
adds r0, r6, 0
|
|
subs r0, 0x16
|
|
cmp r0, 0x4
|
|
bhi _08121D80
|
|
lsls r0, 2
|
|
ldr r1, _08121D40 @ =_08121D44
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08121D3C: .4byte sPartyMenuInternal
|
|
_08121D40: .4byte _08121D44
|
|
.align 2, 0
|
|
_08121D44:
|
|
.4byte _08121D58
|
|
.4byte _08121D70
|
|
.4byte _08121D70
|
|
.4byte _08121D60
|
|
.4byte _08121D68
|
|
_08121D58:
|
|
ldr r0, _08121D5C @ =sDoWhatWithMonMsgWindowTemplate
|
|
b _08121D72
|
|
.align 2, 0
|
|
_08121D5C: .4byte sDoWhatWithMonMsgWindowTemplate
|
|
_08121D60:
|
|
ldr r0, _08121D64 @ =sDoWhatWithItemMsgWindowTemplate
|
|
b _08121D72
|
|
.align 2, 0
|
|
_08121D64: .4byte sDoWhatWithItemMsgWindowTemplate
|
|
_08121D68:
|
|
ldr r0, _08121D6C @ =sDoWhatWithMailMsgWindowTemplate
|
|
b _08121D72
|
|
.align 2, 0
|
|
_08121D6C: .4byte sDoWhatWithMailMsgWindowTemplate
|
|
_08121D70:
|
|
ldr r0, _08121D7C @ =sWhichMoveMsgWindowTemplate
|
|
_08121D72:
|
|
bl AddWindow
|
|
strb r0, [r5]
|
|
b _08121D88
|
|
.align 2, 0
|
|
_08121D7C: .4byte sWhichMoveMsgWindowTemplate
|
|
_08121D80:
|
|
ldr r0, _08121D9C @ =sDefaultPartyMsgWindowTemplate
|
|
bl AddWindow
|
|
strb r0, [r4, 0xD]
|
|
_08121D88:
|
|
cmp r6, 0
|
|
bne _08121DB0
|
|
ldr r0, _08121DA0 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _08121DA4
|
|
movs r6, 0x2
|
|
b _08121DB0
|
|
.align 2, 0
|
|
_08121D9C: .4byte sDefaultPartyMsgWindowTemplate
|
|
_08121DA0: .4byte sPartyMenuInternal
|
|
_08121DA4:
|
|
bl ShouldUseChooseMonText
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08121DB0
|
|
movs r6, 0x1
|
|
_08121DB0:
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
movs r2, 0x58
|
|
movs r3, 0xF
|
|
bl DrawStdFrameWithCustomTileAndPalette
|
|
ldr r4, _08121DF0 @ =gStringVar4
|
|
ldr r1, _08121DF4 @ =sActionStringTable
|
|
lsls r0, r6, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
str r1, [sp]
|
|
movs r1, 0
|
|
str r1, [sp, 0x4]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0x2
|
|
adds r2, r4, 0
|
|
movs r3, 0
|
|
bl AddTextPrinterParameterized
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_08121DE8:
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08121DF0: .4byte gStringVar4
|
|
_08121DF4: .4byte sActionStringTable
|
|
thumb_func_end DisplayPartyMenuStdMessage
|
|
|
|
thumb_func_start ShouldUseChooseMonText
|
|
ShouldUseChooseMonText: @ 8121DF8
|
|
push {r4-r7,lr}
|
|
ldr r7, _08121E0C @ =gPlayerParty
|
|
movs r6, 0
|
|
ldr r0, _08121E10 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x1
|
|
bne _08121E14
|
|
_08121E06:
|
|
movs r0, 0x1
|
|
b _08121E56
|
|
.align 2, 0
|
|
_08121E0C: .4byte gPlayerParty
|
|
_08121E10: .4byte gPartyMenu
|
|
_08121E14:
|
|
movs r5, 0
|
|
_08121E16:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
adds r4, r7, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08121E46
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08121E40
|
|
adds r0, r4, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08121E46
|
|
_08121E40:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_08121E46:
|
|
cmp r6, 0x1
|
|
bhi _08121E06
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x5
|
|
bls _08121E16
|
|
movs r0, 0
|
|
_08121E56:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ShouldUseChooseMonText
|
|
|
|
thumb_func_start DisplaySelectionWindow
|
|
DisplaySelectionWindow: @ 8121E5C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x24
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x1
|
|
beq _08121EBC
|
|
cmp r4, 0x1
|
|
bgt _08121E78
|
|
cmp r4, 0
|
|
beq _08121E7E
|
|
b _08121ECC
|
|
_08121E78:
|
|
cmp r4, 0x2
|
|
beq _08121EC4
|
|
b _08121ECC
|
|
_08121E7E:
|
|
ldr r0, _08121EB4 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, 0x17]
|
|
lsls r0, 1
|
|
movs r3, 0x13
|
|
subs r3, r0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
movs r0, 0xA
|
|
str r0, [sp]
|
|
ldrb r0, [r1, 0x17]
|
|
lsls r0, 25
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0xE
|
|
str r0, [sp, 0x8]
|
|
ldr r0, _08121EB8 @ =0x000002bf
|
|
str r0, [sp, 0xC]
|
|
add r0, sp, 0x14
|
|
movs r1, 0x2
|
|
movs r2, 0x13
|
|
bl SetWindowTemplateFields
|
|
ldr r0, [sp, 0x14]
|
|
ldr r1, [sp, 0x18]
|
|
b _08121ED2
|
|
.align 2, 0
|
|
_08121EB4: .4byte sPartyMenuInternal
|
|
_08121EB8: .4byte 0x000002bf
|
|
_08121EBC:
|
|
ldr r0, _08121EC0 @ =sItemGiveTakeWindowTemplate
|
|
b _08121ECE
|
|
.align 2, 0
|
|
_08121EC0: .4byte sItemGiveTakeWindowTemplate
|
|
_08121EC4:
|
|
ldr r0, _08121EC8 @ =sMailReadTakeWindowTemplate
|
|
b _08121ECE
|
|
.align 2, 0
|
|
_08121EC8: .4byte sMailReadTakeWindowTemplate
|
|
_08121ECC:
|
|
ldr r0, _08121EF8 @ =sMoveSelectWindowTemplate
|
|
_08121ECE:
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
_08121ED2:
|
|
str r0, [sp, 0x1C]
|
|
str r1, [sp, 0x20]
|
|
add r0, sp, 0x1C
|
|
bl AddWindow
|
|
ldr r6, _08121EFC @ =sPartyMenuInternal
|
|
ldr r1, [r6]
|
|
strb r0, [r1, 0xC]
|
|
ldr r0, [r6]
|
|
ldrb r0, [r0, 0xC]
|
|
movs r1, 0
|
|
movs r2, 0x4F
|
|
movs r3, 0xD
|
|
bl DrawStdFrameWithCustomTileAndPalette
|
|
cmp r4, 0x3
|
|
bne _08121F00
|
|
ldr r0, [r6]
|
|
b _08121FA2
|
|
.align 2, 0
|
|
_08121EF8: .4byte sMoveSelectWindowTemplate
|
|
_08121EFC: .4byte sPartyMenuInternal
|
|
_08121F00:
|
|
movs r0, 0x2
|
|
movs r1, 0
|
|
bl GetMenuCursorDimensionByFont
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
movs r0, 0x2
|
|
movs r1, 0x2
|
|
bl GetFontAttribute
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
movs r5, 0
|
|
ldr r0, [r6]
|
|
ldrb r0, [r0, 0x17]
|
|
cmp r5, r0
|
|
bcs _08121F7A
|
|
adds r7, r6, 0
|
|
movs r6, 0
|
|
_08121F2A:
|
|
ldr r1, [r7]
|
|
adds r0, r1, 0
|
|
adds r0, 0xF
|
|
adds r4, r0, r5
|
|
ldrb r0, [r4]
|
|
movs r2, 0x3
|
|
cmp r0, 0x11
|
|
bls _08121F3C
|
|
movs r2, 0x4
|
|
_08121F3C:
|
|
ldrb r0, [r1, 0xC]
|
|
lsls r3, r5, 4
|
|
adds r3, 0x2
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r1, r8
|
|
str r1, [sp]
|
|
str r6, [sp, 0x4]
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
ldr r2, _08121FB4 @ =sFontColorTable
|
|
adds r1, r2
|
|
str r1, [sp, 0x8]
|
|
str r6, [sp, 0xC]
|
|
ldr r2, _08121FB8 @ =sCursorOptions
|
|
ldrb r1, [r4]
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
str r1, [sp, 0x10]
|
|
movs r1, 0x2
|
|
mov r2, r9
|
|
bl AddTextPrinterParameterized4
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, [r7]
|
|
ldrb r0, [r0, 0x17]
|
|
cmp r5, r0
|
|
bcc _08121F2A
|
|
_08121F7A:
|
|
ldr r4, _08121FBC @ =sPartyMenuInternal
|
|
ldr r2, [r4]
|
|
ldrb r0, [r2, 0xC]
|
|
movs r1, 0x10
|
|
str r1, [sp]
|
|
ldrb r1, [r2, 0x17]
|
|
str r1, [sp, 0x4]
|
|
movs r1, 0
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0x1
|
|
str r1, [sp, 0xC]
|
|
movs r1, 0x2
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
bl Menu_InitCursorInternal
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r0, [r4]
|
|
_08121FA2:
|
|
ldrb r0, [r0, 0xC]
|
|
add sp, 0x24
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08121FB4: .4byte sFontColorTable
|
|
_08121FB8: .4byte sCursorOptions
|
|
_08121FBC: .4byte sPartyMenuInternal
|
|
thumb_func_end DisplaySelectionWindow
|
|
|
|
thumb_func_start PartyMenuPrintText
|
|
PartyMenuPrintText: @ 8121FC0
|
|
push {r4,lr}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
movs r0, 0x6
|
|
movs r1, 0
|
|
movs r2, 0x4F
|
|
movs r3, 0xD
|
|
bl DrawStdFrameWithCustomTileAndPalette
|
|
ldr r2, _08122008 @ =gTextFlags
|
|
ldrb r0, [r2]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
bl GetTextSpeedSetting
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x3
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0x6
|
|
movs r1, 0x2
|
|
adds r2, r4, 0
|
|
bl AddTextPrinterParameterized2
|
|
add sp, 0x10
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122008: .4byte gTextFlags
|
|
thumb_func_end PartyMenuPrintText
|
|
|
|
thumb_func_start PartyMenuDisplayYesNoMenu
|
|
PartyMenuDisplayYesNoMenu: @ 812200C
|
|
push {lr}
|
|
sub sp, 0xC
|
|
ldr r0, _08122030 @ =sPartyMenuYesNoWindowTemplate
|
|
movs r1, 0x4F
|
|
str r1, [sp]
|
|
movs r1, 0xD
|
|
str r1, [sp, 0x4]
|
|
movs r1, 0
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0x2
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
bl CreateYesNoMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122030: .4byte sPartyMenuYesNoWindowTemplate
|
|
thumb_func_end PartyMenuDisplayYesNoMenu
|
|
|
|
thumb_func_start CreateLevelUpStatsWindow
|
|
CreateLevelUpStatsWindow: @ 8122034
|
|
push {r4,lr}
|
|
ldr r0, _0812205C @ =sLevelUpStatsWindowTemplate
|
|
bl AddWindow
|
|
ldr r4, _08122060 @ =sPartyMenuInternal
|
|
ldr r1, [r4]
|
|
strb r0, [r1, 0xC]
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0xC]
|
|
movs r1, 0
|
|
movs r2, 0x4F
|
|
movs r3, 0xD
|
|
bl DrawStdFrameWithCustomTileAndPalette
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0xC]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0812205C: .4byte sLevelUpStatsWindowTemplate
|
|
_08122060: .4byte sPartyMenuInternal
|
|
thumb_func_end CreateLevelUpStatsWindow
|
|
|
|
thumb_func_start RemoveLevelUpStatsWindow
|
|
RemoveLevelUpStatsWindow: @ 8122064
|
|
push {r4,lr}
|
|
ldr r4, _08122080 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0xC]
|
|
bl ClearWindowTilemap
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122080: .4byte sPartyMenuInternal
|
|
thumb_func_end RemoveLevelUpStatsWindow
|
|
|
|
thumb_func_start sub_8122084
|
|
sub_8122084: @ 8122084
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r5, _081220CC @ =gStringVar4
|
|
adds r0, r5, 0
|
|
bl StringExpandPlaceholders
|
|
ldr r2, _081220D0 @ =gTextFlags
|
|
ldrb r0, [r2]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
bl GetTextSpeedSetting
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x3
|
|
str r0, [sp, 0xC]
|
|
adds r0, r4, 0
|
|
movs r1, 0x4
|
|
adds r2, r5, 0
|
|
bl AddTextPrinterParameterized2
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081220CC: .4byte gStringVar4
|
|
_081220D0: .4byte gTextFlags
|
|
thumb_func_end sub_8122084
|
|
|
|
thumb_func_start sub_81220D4
|
|
sub_81220D4: @ 81220D4
|
|
push {r4,lr}
|
|
ldr r0, _08122108 @ =gUnknown_845A170
|
|
bl AddWindow
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0x4F
|
|
movs r2, 0xE0
|
|
bl TextWindow_LoadResourcesStdFrame0
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
movs r2, 0x4F
|
|
movs r3, 0xE
|
|
bl DrawDialogFrameWithCustomTileAndPalette
|
|
ldr r1, _0812210C @ =gUnknown_8417457
|
|
adds r0, r4, 0
|
|
bl sub_8122084
|
|
adds r0, r4, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08122108: .4byte gUnknown_845A170
|
|
_0812210C: .4byte gUnknown_8417457
|
|
thumb_func_end sub_81220D4
|
|
|
|
thumb_func_start sub_8122110
|
|
sub_8122110: @ 8122110
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl ClearWindowTilemap
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl ClearDialogWindowAndFrameToTransparent
|
|
adds r0, r4, 0
|
|
bl RemoveWindow
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8122110
|
|
|
|
thumb_func_start sub_8122138
|
|
sub_8122138: @ 8122138
|
|
push {r4,r5,lr}
|
|
sub sp, 0x14
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r0, _08122168 @ =sPartyMenuInternal
|
|
ldr r4, [r0]
|
|
cmp r5, 0x11
|
|
bhi _0812216C
|
|
ldrb r0, [r4, 0xE]
|
|
cmp r0, 0xFF
|
|
beq _081221C0
|
|
bl ClearWindowTilemap
|
|
ldrb r0, [r4, 0xE]
|
|
bl RemoveWindow
|
|
movs r0, 0xFF
|
|
strb r0, [r4, 0xE]
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
b _081221C0
|
|
.align 2, 0
|
|
_08122168: .4byte sPartyMenuInternal
|
|
_0812216C:
|
|
ldrb r0, [r4, 0xE]
|
|
cmp r0, 0xFF
|
|
bne _0812217A
|
|
ldr r0, _081221C8 @ =gUnknown_845A178
|
|
bl AddWindow
|
|
strb r0, [r4, 0xE]
|
|
_0812217A:
|
|
ldrb r0, [r4, 0xE]
|
|
bl sub_8112F18
|
|
movs r0, 0x2
|
|
movs r1, 0x2
|
|
bl GetFontAttribute
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r2, [r4, 0xE]
|
|
str r0, [sp]
|
|
movs r1, 0
|
|
str r1, [sp, 0x4]
|
|
ldr r0, _081221CC @ =sFontColorTable + 15
|
|
str r0, [sp, 0x8]
|
|
str r1, [sp, 0xC]
|
|
ldr r1, _081221D0 @ =sHMDescriptionTable
|
|
adds r0, r5, 0
|
|
subs r0, 0x12
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x10]
|
|
adds r0, r2, 0
|
|
movs r1, 0x2
|
|
movs r2, 0x3
|
|
movs r3, 0x6
|
|
bl AddTextPrinterParameterized4
|
|
ldrb r0, [r4, 0xE]
|
|
bl PutWindowTilemap
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
_081221C0:
|
|
add sp, 0x14
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081221C8: .4byte gUnknown_845A178
|
|
_081221CC: .4byte sFontColorTable + 15
|
|
_081221D0: .4byte sHMDescriptionTable
|
|
thumb_func_end sub_8122138
|
|
|
|
thumb_func_start CreatePartyMonIconSprite
|
|
CreatePartyMonIconSprite: @ 81221D4
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
adds r7, r1, 0
|
|
adds r4, r2, 0
|
|
movs r6, 0x1
|
|
bl IsMultiBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0812220A
|
|
ldr r0, _08122240 @ =gMain
|
|
ldr r1, _08122244 @ =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0812220A
|
|
ldr r0, _08122248 @ =sMultiBattlePartnersPartyMask
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
eors r1, r6
|
|
negs r0, r1
|
|
orrs r0, r1
|
|
lsrs r6, r0, 31
|
|
_0812220A:
|
|
adds r0, r5, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
str r6, [sp]
|
|
adds r0, r4, 0
|
|
adds r2, r7, 0
|
|
movs r3, 0x1
|
|
bl CreatePartyMonIconSpriteParameterized
|
|
ldrb r0, [r7, 0x9]
|
|
adds r1, r5, 0
|
|
bl UpdatePartyMonHPBar
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122240: .4byte gMain
|
|
_08122244: .4byte 0x00000439
|
|
_08122248: .4byte sMultiBattlePartnersPartyMask
|
|
thumb_func_end CreatePartyMonIconSprite
|
|
|
|
thumb_func_start CreatePartyMonIconSpriteParameterized
|
|
CreatePartyMonIconSpriteParameterized: @ 812224C
|
|
push {r4-r7,lr}
|
|
sub sp, 0xC
|
|
adds r6, r1, 0
|
|
adds r4, r2, 0
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
lsls r3, 24
|
|
lsrs r7, r3, 24
|
|
cmp r5, 0
|
|
beq _0812229A
|
|
ldr r1, _081222A4 @ =SpriteCB_MonIcon
|
|
ldr r0, [r4, 0x4]
|
|
ldrb r2, [r0]
|
|
ldrb r3, [r0, 0x1]
|
|
movs r0, 0x4
|
|
str r0, [sp]
|
|
str r6, [sp, 0x4]
|
|
ldr r0, [sp, 0x20]
|
|
str r0, [sp, 0x8]
|
|
adds r0, r5, 0
|
|
bl CreateMonIcon
|
|
strb r0, [r4, 0x9]
|
|
ldr r2, _081222A8 @ =gSprites
|
|
ldrb r0, [r4, 0x9]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
adds r2, r7, 0
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_0812229A:
|
|
add sp, 0xC
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081222A4: .4byte SpriteCB_MonIcon
|
|
_081222A8: .4byte gSprites
|
|
thumb_func_end CreatePartyMonIconSpriteParameterized
|
|
|
|
thumb_func_start UpdateHPBar
|
|
UpdateHPBar: @ 81222AC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
adds r0, r1, 0
|
|
adds r1, r2, 0
|
|
bl GetHPBarLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
beq _0812230C
|
|
cmp r0, 0x2
|
|
bgt _081222D4
|
|
cmp r0, 0x1
|
|
beq _08122324
|
|
b _0812233C
|
|
_081222D4:
|
|
cmp r0, 0x3
|
|
beq _081222F4
|
|
cmp r0, 0x4
|
|
bne _0812233C
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, _081222F0 @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl MonIcon_SetAnim
|
|
b _0812234C
|
|
.align 2, 0
|
|
_081222F0: .4byte gSprites
|
|
_081222F4:
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, _08122308 @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
bl MonIcon_SetAnim
|
|
b _0812234C
|
|
.align 2, 0
|
|
_08122308: .4byte gSprites
|
|
_0812230C:
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, _08122320 @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0x2
|
|
bl MonIcon_SetAnim
|
|
b _0812234C
|
|
.align 2, 0
|
|
_08122320: .4byte gSprites
|
|
_08122324:
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, _08122338 @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0x3
|
|
bl MonIcon_SetAnim
|
|
b _0812234C
|
|
.align 2, 0
|
|
_08122338: .4byte gSprites
|
|
_0812233C:
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, _08122354 @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0x4
|
|
bl MonIcon_SetAnim
|
|
_0812234C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122354: .4byte gSprites
|
|
thumb_func_end UpdateHPBar
|
|
|
|
thumb_func_start UpdatePartyMonHPBar
|
|
UpdatePartyMonHPBar: @ 8122358
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
adds r6, r1, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r0, r6, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r6, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl UpdateHPBar
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end UpdatePartyMonHPBar
|
|
|
|
thumb_func_start AnimateSelectedPartyIcon
|
|
AnimateSelectedPartyIcon: @ 812238C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
ldr r5, _081223BC @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r6, r0, 2
|
|
adds r2, r6, r5
|
|
movs r7, 0
|
|
movs r3, 0
|
|
strh r3, [r2, 0x2E]
|
|
mov r12, r5
|
|
cmp r1, 0
|
|
bne _081223E4
|
|
movs r1, 0x20
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x10
|
|
bne _081223C4
|
|
strh r3, [r2, 0x24]
|
|
ldr r0, _081223C0 @ =0x0000fffc
|
|
strh r0, [r2, 0x26]
|
|
b _081223CA
|
|
.align 2, 0
|
|
_081223BC: .4byte gSprites
|
|
_081223C0: .4byte 0x0000fffc
|
|
_081223C4:
|
|
ldr r0, _081223DC @ =0x0000fffc
|
|
strh r0, [r2, 0x24]
|
|
strh r3, [r2, 0x26]
|
|
_081223CA:
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
mov r1, r12
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, _081223E0 @ =SpriteCB_UpdatePartyMonIcon
|
|
b _081223F0
|
|
.align 2, 0
|
|
_081223DC: .4byte 0x0000fffc
|
|
_081223E0: .4byte SpriteCB_UpdatePartyMonIcon
|
|
_081223E4:
|
|
strh r3, [r2, 0x24]
|
|
strh r3, [r2, 0x26]
|
|
adds r0, r5, 0
|
|
adds r0, 0x1C
|
|
adds r0, r6, r0
|
|
ldr r1, _081223F8 @ =SpriteCB_BouncePartyMonIcon
|
|
_081223F0:
|
|
str r1, [r0]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081223F8: .4byte SpriteCB_BouncePartyMonIcon
|
|
thumb_func_end AnimateSelectedPartyIcon
|
|
|
|
thumb_func_start SpriteCB_BouncePartyMonIcon
|
|
SpriteCB_BouncePartyMonIcon: @ 81223FC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl UpdateMonIconFrame
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _08122422
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08122420
|
|
ldr r0, _0812241C @ =0x0000fffd
|
|
strh r0, [r4, 0x26]
|
|
b _08122422
|
|
.align 2, 0
|
|
_0812241C: .4byte 0x0000fffd
|
|
_08122420:
|
|
strh r1, [r4, 0x26]
|
|
_08122422:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SpriteCB_BouncePartyMonIcon
|
|
|
|
thumb_func_start SpriteCB_UpdatePartyMonIcon
|
|
SpriteCB_UpdatePartyMonIcon: @ 8122428
|
|
push {lr}
|
|
bl UpdateMonIconFrame
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SpriteCB_UpdatePartyMonIcon
|
|
|
|
thumb_func_start CreatePartyMonHeldItemSprite
|
|
CreatePartyMonHeldItemSprite: @ 8122434
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0812245C
|
|
ldr r0, _08122464 @ =sSpriteTemplate_HeldItem
|
|
ldr r2, [r4, 0x4]
|
|
ldrb r1, [r2, 0x2]
|
|
ldrb r2, [r2, 0x3]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
strb r0, [r4, 0xA]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl UpdatePartyMonHeldItemSprite
|
|
_0812245C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122464: .4byte sSpriteTemplate_HeldItem
|
|
thumb_func_end CreatePartyMonHeldItemSprite
|
|
|
|
thumb_func_start CreatePartyMonHeldItemSpriteParameterized
|
|
CreatePartyMonHeldItemSpriteParameterized: @ 8122468
|
|
push {r4,r5,lr}
|
|
adds r4, r2, 0
|
|
lsls r0, 16
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
cmp r0, 0
|
|
beq _081224A4
|
|
ldr r0, _081224AC @ =sSpriteTemplate_HeldItem
|
|
ldr r2, [r4, 0x4]
|
|
ldrb r1, [r2, 0x2]
|
|
ldrb r2, [r2, 0x3]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
strb r0, [r4, 0xA]
|
|
ldr r2, _081224B0 @ =gSprites
|
|
ldrb r0, [r4, 0xA]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x5]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl ShowOrHideHeldItemSprite
|
|
_081224A4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081224AC: .4byte sSpriteTemplate_HeldItem
|
|
_081224B0: .4byte gSprites
|
|
thumb_func_end CreatePartyMonHeldItemSpriteParameterized
|
|
|
|
thumb_func_start UpdatePartyMonHeldItemSprite
|
|
UpdatePartyMonHeldItemSprite: @ 81224B4
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r4, 0
|
|
bl ShowOrHideHeldItemSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end UpdatePartyMonHeldItemSprite
|
|
|
|
thumb_func_start ShowOrHideHeldItemSprite
|
|
ShowOrHideHeldItemSprite: @ 81224D0
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _081224F8
|
|
ldr r2, _081224F4 @ =gSprites
|
|
ldrb r1, [r4, 0xA]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
b _08122544
|
|
.align 2, 0
|
|
_081224F4: .4byte gSprites
|
|
_081224F8:
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0812251C
|
|
ldrb r1, [r4, 0xA]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08122518 @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
b _0812252E
|
|
.align 2, 0
|
|
_08122518: .4byte gSprites
|
|
_0812251C:
|
|
ldrb r1, [r4, 0xA]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0812254C @ =gSprites
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl StartSpriteAnim
|
|
_0812252E:
|
|
ldr r2, _0812254C @ =gSprites
|
|
ldrb r1, [r4, 0xA]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
_08122544:
|
|
strb r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812254C: .4byte gSprites
|
|
thumb_func_end ShowOrHideHeldItemSprite
|
|
|
|
thumb_func_start LoadHeldItemIcons
|
|
LoadHeldItemIcons: @ 8122550
|
|
push {lr}
|
|
ldr r0, _08122564 @ =sSpriteSheet_HeldItem
|
|
bl LoadSpriteSheet
|
|
ldr r0, _08122568 @ =sSpritePalette_HeldItem
|
|
bl LoadSpritePalette
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122564: .4byte sSpriteSheet_HeldItem
|
|
_08122568: .4byte sSpritePalette_HeldItem
|
|
thumb_func_end LoadHeldItemIcons
|
|
|
|
thumb_func_start DrawHeldItemIconsForTrade
|
|
DrawHeldItemIconsForTrade: @ 812256C
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
adds r7, r1, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
cmp r2, 0
|
|
beq _08122580
|
|
cmp r2, 0x1
|
|
beq _081225C8
|
|
b _08122604
|
|
_08122580:
|
|
movs r5, 0
|
|
ldrb r0, [r6]
|
|
cmp r5, r0
|
|
bcs _08122604
|
|
_08122588:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, _081225C4 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0
|
|
beq _081225B4
|
|
adds r0, r7, r5
|
|
ldrb r4, [r0]
|
|
adds r0, r1, 0
|
|
bl ItemIsMail
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl CreateHeldItemSpriteForTrade
|
|
_081225B4:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldrb r0, [r6]
|
|
cmp r5, r0
|
|
bcc _08122588
|
|
b _08122604
|
|
.align 2, 0
|
|
_081225C4: .4byte gPlayerParty
|
|
_081225C8:
|
|
movs r5, 0
|
|
b _081225FE
|
|
_081225CC:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, _0812260C @ =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0
|
|
beq _081225F8
|
|
adds r0, r5, r7
|
|
ldrb r4, [r0, 0x6]
|
|
adds r0, r1, 0
|
|
bl ItemIsMail
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl CreateHeldItemSpriteForTrade
|
|
_081225F8:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
_081225FE:
|
|
ldrb r0, [r6, 0x1]
|
|
cmp r5, r0
|
|
bcc _081225CC
|
|
_08122604:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812260C: .4byte gEnemyParty
|
|
thumb_func_end DrawHeldItemIconsForTrade
|
|
|
|
thumb_func_start CreateHeldItemSpriteForTrade
|
|
CreateHeldItemSpriteForTrade: @ 8122610
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
adds r6, r0, 0
|
|
mov r9, r1
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
mov r0, r9
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldr r0, _08122688 @ =gSprites
|
|
mov r8, r0
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
add r0, r8
|
|
adds r0, 0x43
|
|
ldrb r3, [r0]
|
|
ldr r0, _0812268C @ =sSpriteTemplate_HeldItem
|
|
subs r3, 0x1
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
movs r1, 0xFA
|
|
movs r2, 0xAA
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
mov r0, r8
|
|
adds r5, r4, r0
|
|
movs r0, 0x4
|
|
strh r0, [r5, 0x24]
|
|
movs r0, 0xA
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0x1C
|
|
add r8, r0
|
|
add r4, r8
|
|
ldr r0, _08122690 @ =SpriteCB_HeldItem
|
|
str r0, [r4]
|
|
strh r6, [r5, 0x3C]
|
|
adds r0, r5, 0
|
|
mov r1, r9
|
|
bl StartSpriteAnim
|
|
ldr r1, [r4]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122688: .4byte gSprites
|
|
_0812268C: .4byte sSpriteTemplate_HeldItem
|
|
_08122690: .4byte SpriteCB_HeldItem
|
|
thumb_func_end CreateHeldItemSpriteForTrade
|
|
|
|
thumb_func_start SpriteCB_HeldItem
|
|
SpriteCB_HeldItem: @ 8122694
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x3C]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, _081226C4 @ =gSprites
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, r0, r2
|
|
adds r0, r2, 0
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
bge _081226C8
|
|
adds r0, r4, 0
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
b _081226E6
|
|
.align 2, 0
|
|
_081226C4: .4byte gSprites
|
|
_081226C8:
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
ldrb r1, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldrh r0, [r2, 0x24]
|
|
ldrh r1, [r2, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r2, 0x26]
|
|
ldrh r2, [r2, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
_081226E6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SpriteCB_HeldItem
|
|
|
|
thumb_func_start CreatePartyMonPokeballSprite
|
|
CreatePartyMonPokeballSprite: @ 81226EC
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0812270A
|
|
ldr r0, _08122710 @ =sSpriteTemplate_MenuPokeball
|
|
ldr r2, [r4, 0x4]
|
|
ldrb r1, [r2, 0x6]
|
|
ldrb r2, [r2, 0x7]
|
|
movs r3, 0x8
|
|
bl CreateSprite
|
|
strb r0, [r4, 0xB]
|
|
_0812270A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122710: .4byte sSpriteTemplate_MenuPokeball
|
|
thumb_func_end CreatePartyMonPokeballSprite
|
|
|
|
thumb_func_start CreatePartyMonPokeballSpriteParameterized
|
|
CreatePartyMonPokeballSpriteParameterized: @ 8122714
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08122744
|
|
ldr r0, _0812274C @ =sSpriteTemplate_MenuPokeball
|
|
ldr r2, [r4, 0x4]
|
|
ldrb r1, [r2, 0x6]
|
|
ldrb r2, [r2, 0x7]
|
|
movs r3, 0x8
|
|
bl CreateSprite
|
|
strb r0, [r4, 0xB]
|
|
ldr r2, _08122750 @ =gSprites
|
|
ldrb r0, [r4, 0xB]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_08122744:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812274C: .4byte sSpriteTemplate_MenuPokeball
|
|
_08122750: .4byte gSprites
|
|
thumb_func_end CreatePartyMonPokeballSpriteParameterized
|
|
|
|
thumb_func_start CreatePokeballButtonSprite
|
|
CreatePokeballButtonSprite: @ 8122754
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
adds r2, r1, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldr r0, _0812278C @ =sSpriteTemplate_MenuPokeball
|
|
adds r1, r3, 0
|
|
movs r3, 0x8
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08122790 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r2, 0xD
|
|
negs r2, r2
|
|
ands r2, r3
|
|
movs r3, 0x8
|
|
orrs r2, r3
|
|
strb r2, [r1, 0x5]
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0812278C: .4byte sSpriteTemplate_MenuPokeball
|
|
_08122790: .4byte gSprites
|
|
thumb_func_end CreatePokeballButtonSprite
|
|
|
|
thumb_func_start CreateSmallPokeballButtonSprite
|
|
CreateSmallPokeballButtonSprite: @ 8122794
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
adds r2, r1, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldr r0, _081227B4 @ =sSpriteTemplate_MenuPokeballSmall
|
|
adds r1, r3, 0
|
|
movs r3, 0x8
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_081227B4: .4byte sSpriteTemplate_MenuPokeballSmall
|
|
thumb_func_end CreateSmallPokeballButtonSprite
|
|
|
|
thumb_func_start PartyMenuStartSpriteAnim
|
|
PartyMenuStartSpriteAnim: @ 81227B8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
ldr r2, _081227D8 @ =gSprites
|
|
adds r0, r2
|
|
bl StartSpriteAnim
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081227D8: .4byte gSprites
|
|
thumb_func_end PartyMenuStartSpriteAnim
|
|
|
|
thumb_func_start SpriteCB_BounceConfirmCancelButton
|
|
SpriteCB_BounceConfirmCancelButton: @ 81227DC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
cmp r6, 0
|
|
bne _08122820
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
ldr r0, _0812281C @ =gSprites
|
|
mov r8, r0
|
|
add r4, r8
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAnim
|
|
lsls r5, r7, 4
|
|
adds r5, r7
|
|
lsls r5, 2
|
|
add r5, r8
|
|
adds r0, r5, 0
|
|
movs r1, 0x4
|
|
bl StartSpriteAnim
|
|
strh r6, [r4, 0x26]
|
|
strh r6, [r5, 0x26]
|
|
b _0812284C
|
|
.align 2, 0
|
|
_0812281C: .4byte gSprites
|
|
_08122820:
|
|
lsls r5, r0, 4
|
|
adds r5, r0
|
|
lsls r5, 2
|
|
ldr r0, _08122858 @ =gSprites
|
|
mov r8, r0
|
|
add r5, r8
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl StartSpriteAnim
|
|
lsls r4, r7, 4
|
|
adds r4, r7
|
|
lsls r4, 2
|
|
add r4, r8
|
|
adds r0, r4, 0
|
|
movs r1, 0x5
|
|
bl StartSpriteAnim
|
|
ldr r0, _0812285C @ =0x0000fffc
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0x26]
|
|
_0812284C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122858: .4byte gSprites
|
|
_0812285C: .4byte 0x0000fffc
|
|
thumb_func_end SpriteCB_BounceConfirmCancelButton
|
|
|
|
thumb_func_start LoadPartyMenuPokeballGfx
|
|
LoadPartyMenuPokeballGfx: @ 8122860
|
|
push {lr}
|
|
ldr r0, _08122878 @ =sSpriteSheet_MenuPokeball
|
|
bl LoadCompressedSpriteSheet
|
|
ldr r0, _0812287C @ =sSpriteSheet_MenuPokeballSmall
|
|
bl LoadCompressedSpriteSheet
|
|
ldr r0, _08122880 @ =sSpritePalette_MenuPokeball
|
|
bl LoadCompressedSpritePalette
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122878: .4byte sSpriteSheet_MenuPokeball
|
|
_0812287C: .4byte sSpriteSheet_MenuPokeballSmall
|
|
_08122880: .4byte sSpritePalette_MenuPokeball
|
|
thumb_func_end LoadPartyMenuPokeballGfx
|
|
|
|
thumb_func_start CreatePartyMonStatusSprite
|
|
CreatePartyMonStatusSprite: @ 8122884
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _081228AC
|
|
ldr r0, _081228B4 @ =sSpriteTemplate_StatusIcons
|
|
ldr r2, [r4, 0x4]
|
|
ldrb r1, [r2, 0x4]
|
|
ldrb r2, [r2, 0x5]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
strb r0, [r4, 0xC]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl SetPartyMonAilmentGfx
|
|
_081228AC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081228B4: .4byte sSpriteTemplate_StatusIcons
|
|
thumb_func_end CreatePartyMonStatusSprite
|
|
|
|
thumb_func_start CreatePartyMonStatusSpriteParameterized
|
|
CreatePartyMonStatusSpriteParameterized: @ 81228B8
|
|
push {r4,r5,lr}
|
|
adds r4, r2, 0
|
|
lsls r0, 16
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
cmp r0, 0
|
|
beq _081228F4
|
|
ldr r0, _081228FC @ =sSpriteTemplate_StatusIcons
|
|
ldr r2, [r4, 0x4]
|
|
ldrb r1, [r2, 0x4]
|
|
ldrb r2, [r2, 0x5]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
strb r0, [r4, 0xC]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl UpdatePartyMonAilmentGfx
|
|
ldr r2, _08122900 @ =gSprites
|
|
ldrb r0, [r4, 0xC]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_081228F4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081228FC: .4byte sSpriteTemplate_StatusIcons
|
|
_08122900: .4byte gSprites
|
|
thumb_func_end CreatePartyMonStatusSpriteParameterized
|
|
|
|
thumb_func_start SetPartyMonAilmentGfx
|
|
SetPartyMonAilmentGfx: @ 8122904
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
bl GetMonAilment
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r4, 0
|
|
bl UpdatePartyMonAilmentGfx
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SetPartyMonAilmentGfx
|
|
|
|
thumb_func_start UpdatePartyMonAilmentGfx
|
|
UpdatePartyMonAilmentGfx: @ 812291C
|
|
push {r4,r5,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0
|
|
beq _0812292C
|
|
cmp r2, 0x6
|
|
bne _08122948
|
|
_0812292C:
|
|
ldr r2, _08122944 @ =gSprites
|
|
ldrb r1, [r5, 0xC]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
b _08122972
|
|
.align 2, 0
|
|
_08122944: .4byte gSprites
|
|
_08122948:
|
|
ldrb r1, [r5, 0xC]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _0812297C @ =gSprites
|
|
adds r0, r4
|
|
subs r1, r2, 0x1
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl StartSpriteAnim
|
|
ldrb r1, [r5, 0xC]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
_08122972:
|
|
strb r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812297C: .4byte gSprites
|
|
thumb_func_end UpdatePartyMonAilmentGfx
|
|
|
|
thumb_func_start LoadPartyMenuAilmentGfx
|
|
LoadPartyMenuAilmentGfx: @ 8122980
|
|
push {lr}
|
|
ldr r0, _08122994 @ =sSpriteSheet_StatusIcons
|
|
bl LoadCompressedSpriteSheet
|
|
ldr r0, _08122998 @ =sSpritePalette_StatusIcons
|
|
bl LoadCompressedSpritePalette
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122994: .4byte sSpriteSheet_StatusIcons
|
|
_08122998: .4byte sSpritePalette_StatusIcons
|
|
thumb_func_end LoadPartyMenuAilmentGfx
|
|
|
|
thumb_func_start SetPartyMonSelectionActions
|
|
SetPartyMonSelectionActions: @ 812299C
|
|
push {r4,lr}
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
cmp r2, 0
|
|
bne _081229B0
|
|
bl SetPartyMonFieldSelectionActions
|
|
b _081229E8
|
|
_081229B0:
|
|
ldr r4, _081229F0 @ =sPartyMenuInternal
|
|
ldr r1, [r4]
|
|
ldr r0, _081229F4 @ =sPartyMenuActionCounts
|
|
adds r0, r2, r0
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x17]
|
|
movs r3, 0
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0x17]
|
|
cmp r3, r0
|
|
bcs _081229E8
|
|
ldr r1, _081229F8 @ =sPartyMenuActions
|
|
lsls r0, r2, 2
|
|
adds r2, r0, r1
|
|
_081229CC:
|
|
ldr r1, [r4]
|
|
adds r1, 0xF
|
|
adds r1, r3
|
|
ldr r0, [r2]
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0x17]
|
|
cmp r3, r0
|
|
bcc _081229CC
|
|
_081229E8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081229F0: .4byte sPartyMenuInternal
|
|
_081229F4: .4byte sPartyMenuActionCounts
|
|
_081229F8: .4byte sPartyMenuActions
|
|
thumb_func_end SetPartyMonSelectionActions
|
|
|
|
thumb_func_start SetPartyMonFieldSelectionActions
|
|
SetPartyMonFieldSelectionActions: @ 81229FC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
mov r9, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r10, r1
|
|
ldr r2, _08122A78 @ =sPartyMenuInternal
|
|
ldr r1, [r2]
|
|
movs r0, 0
|
|
strb r0, [r1, 0x17]
|
|
ldr r1, [r2]
|
|
adds r0, r1, 0
|
|
adds r0, 0xF
|
|
adds r1, 0x17
|
|
movs r2, 0
|
|
bl AppendToList
|
|
movs r7, 0
|
|
ldr r0, _08122A7C @ =sFieldMoves
|
|
ldrh r0, [r0]
|
|
str r0, [sp]
|
|
mov r0, r9
|
|
adds r0, 0x64
|
|
str r0, [sp, 0x4]
|
|
_08122A34:
|
|
movs r4, 0
|
|
adds r1, r7, 0x1
|
|
mov r8, r1
|
|
ldr r0, [sp]
|
|
cmp r0, 0xC
|
|
beq _08122A90
|
|
movs r0, 0x64
|
|
mov r6, r10
|
|
muls r6, r0
|
|
ldr r5, _08122A7C @ =sFieldMoves
|
|
_08122A48:
|
|
mov r1, r9
|
|
adds r0, r1, r6
|
|
adds r1, r7, 0
|
|
adds r1, 0xD
|
|
bl GetMonData
|
|
lsls r1, r4, 1
|
|
adds r1, r5
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
bne _08122A80
|
|
ldr r0, _08122A78 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
adds r0, r1, 0
|
|
adds r0, 0xF
|
|
adds r1, 0x17
|
|
adds r2, r4, 0
|
|
adds r2, 0x12
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
bl AppendToList
|
|
b _08122A90
|
|
.align 2, 0
|
|
_08122A78: .4byte sPartyMenuInternal
|
|
_08122A7C: .4byte sFieldMoves
|
|
_08122A80:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 1
|
|
adds r0, r5
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xC
|
|
bne _08122A48
|
|
_08122A90:
|
|
mov r1, r8
|
|
lsls r0, r1, 24
|
|
lsrs r7, r0, 24
|
|
cmp r7, 0x3
|
|
bls _08122A34
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08122AB6
|
|
ldr r0, _08122AE8 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
adds r0, r1, 0
|
|
adds r0, 0xF
|
|
adds r1, 0x17
|
|
movs r2, 0x1
|
|
bl AppendToList
|
|
_08122AB6:
|
|
movs r0, 0x64
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
add r0, r9
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08122AEC
|
|
ldr r0, _08122AE8 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
adds r0, r1, 0
|
|
adds r0, 0xF
|
|
adds r1, 0x17
|
|
movs r2, 0x6
|
|
bl AppendToList
|
|
b _08122AFC
|
|
.align 2, 0
|
|
_08122AE8: .4byte sPartyMenuInternal
|
|
_08122AEC:
|
|
ldr r0, _08122B1C @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
adds r0, r1, 0
|
|
adds r0, 0xF
|
|
adds r1, 0x17
|
|
movs r2, 0x3
|
|
bl AppendToList
|
|
_08122AFC:
|
|
ldr r0, _08122B1C @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
adds r0, r1, 0
|
|
adds r0, 0xF
|
|
adds r1, 0x17
|
|
movs r2, 0x2
|
|
bl AppendToList
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122B1C: .4byte sPartyMenuInternal
|
|
thumb_func_end SetPartyMonFieldSelectionActions
|
|
|
|
thumb_func_start GetPartyMenuActionsType
|
|
GetPartyMenuActionsType: @ 8122B20
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r1, _08122B3C @ =gPartyMenu
|
|
ldrb r0, [r1, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
adds r3, r1, 0
|
|
cmp r0, 0xA
|
|
bhi _08122BCA
|
|
lsls r0, 2
|
|
ldr r1, _08122B40 @ =_08122B44
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08122B3C: .4byte gPartyMenu
|
|
_08122B40: .4byte _08122B44
|
|
.align 2, 0
|
|
_08122B44:
|
|
.4byte _08122B70
|
|
.4byte _08122B80
|
|
.4byte _08122BCA
|
|
.4byte _08122BCA
|
|
.4byte _08122B8C
|
|
.4byte _08122BCA
|
|
.4byte _08122BAC
|
|
.4byte _08122BCA
|
|
.4byte _08122BBE
|
|
.4byte _08122BC2
|
|
.4byte _08122BC6
|
|
_08122B70:
|
|
adds r0, r2, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r1, 31
|
|
b _08122BCC
|
|
_08122B80:
|
|
adds r0, r2, 0
|
|
bl GetPartyMenuActionsTypeInBattle
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
b _08122BCC
|
|
_08122B8C:
|
|
movs r0, 0x9
|
|
ldrsb r0, [r3, r0]
|
|
bl GetPartySlotEntryStatus
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _08122BA4
|
|
cmp r0, 0x1
|
|
beq _08122BA8
|
|
movs r1, 0x7
|
|
b _08122BCC
|
|
_08122BA4:
|
|
movs r1, 0x4
|
|
b _08122BCC
|
|
_08122BA8:
|
|
movs r1, 0x5
|
|
b _08122BCC
|
|
_08122BAC:
|
|
adds r0, r2, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
movs r1, 0x6
|
|
cmp r0, 0
|
|
beq _08122BCC
|
|
movs r1, 0x7
|
|
b _08122BCC
|
|
_08122BBE:
|
|
movs r1, 0xA
|
|
b _08122BCC
|
|
_08122BC2:
|
|
movs r1, 0xB
|
|
b _08122BCC
|
|
_08122BC6:
|
|
movs r1, 0xC
|
|
b _08122BCC
|
|
_08122BCA:
|
|
movs r1, 0
|
|
_08122BCC:
|
|
adds r0, r1, 0
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetPartyMenuActionsType
|
|
|
|
thumb_func_start CreateSelectionWindow
|
|
CreateSelectionWindow: @ 8122BD4
|
|
push {r4-r6,lr}
|
|
ldr r5, _08122C20 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r5, r1]
|
|
movs r0, 0x64
|
|
adds r4, r1, 0
|
|
muls r4, r0
|
|
ldr r6, _08122C24 @ =gPlayerParty
|
|
adds r4, r6
|
|
ldr r1, _08122C28 @ =gStringVar1
|
|
adds r0, r4, 0
|
|
bl GetMonNickname
|
|
ldr r0, _08122C2C @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldrb r5, [r5, 0x9]
|
|
adds r0, r4, 0
|
|
bl GetPartyMenuActionsType
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl SetPartyMonSelectionActions
|
|
movs r0, 0
|
|
bl DisplaySelectionWindow
|
|
movs r0, 0x16
|
|
bl DisplayPartyMenuStdMessage
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122C20: .4byte gPartyMenu
|
|
_08122C24: .4byte gPlayerParty
|
|
_08122C28: .4byte gStringVar1
|
|
_08122C2C: .4byte sPartyMenuInternal
|
|
thumb_func_end CreateSelectionWindow
|
|
|
|
thumb_func_start Task_TryCreateSelectionWindow
|
|
Task_TryCreateSelectionWindow: @ 8122C30
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl CreateSelectionWindow
|
|
ldr r1, _08122C54 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
strh r1, [r0, 0x8]
|
|
ldr r1, _08122C58 @ =Task_HandleSelectionMenuInput
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122C54: .4byte gTasks
|
|
_08122C58: .4byte Task_HandleSelectionMenuInput
|
|
thumb_func_end Task_TryCreateSelectionWindow
|
|
|
|
thumb_func_start Task_HandleSelectionMenuInput
|
|
Task_HandleSelectionMenuInput: @ 8122C5C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _08122C94 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08122D3E
|
|
bl sub_80BF748
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08122D3E
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, _08122C98 @ =gTasks+0x8
|
|
adds r7, r0, r1
|
|
ldr r0, _08122C9C @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x17]
|
|
cmp r0, 0x3
|
|
bhi _08122CA0
|
|
bl Menu_ProcessInputNoWrapAround_other
|
|
b _08122CA4
|
|
.align 2, 0
|
|
_08122C94: .4byte gPaletteFade
|
|
_08122C98: .4byte gTasks+0x8
|
|
_08122C9C: .4byte sPartyMenuInternal
|
|
_08122CA0:
|
|
bl Menu_ProcessInput_other
|
|
_08122CA4:
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r0, 0
|
|
ldrsh r4, [r7, r0]
|
|
bl Menu_GetCursorPos
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r4, r0
|
|
beq _08122CCE
|
|
ldr r0, _08122D14 @ =sPartyMenuInternal
|
|
ldr r4, [r0]
|
|
bl Menu_GetCursorPos
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r4, 0xF
|
|
adds r4, r0
|
|
ldrb r0, [r4]
|
|
bl sub_8122138
|
|
_08122CCE:
|
|
bl Menu_GetCursorPos
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r7]
|
|
lsls r0, r5, 24
|
|
asrs r5, r0, 24
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
cmp r5, r0
|
|
beq _08122D3E
|
|
adds r0, 0x1
|
|
cmp r5, r0
|
|
bne _08122D1C
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, _08122D14 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xE
|
|
bl PartyMenuRemoveWindow
|
|
ldr r2, _08122D18 @ =sCursorOptions
|
|
ldr r0, [r4]
|
|
ldrb r1, [r0, 0x17]
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0xE]
|
|
lsls r0, 3
|
|
adds r2, 0x4
|
|
adds r0, r2
|
|
ldr r1, [r0]
|
|
adds r0, r6, 0
|
|
bl _call_via_r1
|
|
b _08122D3E
|
|
.align 2, 0
|
|
_08122D14: .4byte sPartyMenuInternal
|
|
_08122D18: .4byte sCursorOptions
|
|
_08122D1C:
|
|
ldr r4, _08122D44 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xE
|
|
bl PartyMenuRemoveWindow
|
|
ldr r1, _08122D48 @ =sCursorOptions
|
|
ldr r0, [r4]
|
|
adds r0, 0xF
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
lsls r0, 3
|
|
adds r1, 0x4
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r6, 0
|
|
bl _call_via_r1
|
|
_08122D3E:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122D44: .4byte sPartyMenuInternal
|
|
_08122D48: .4byte sCursorOptions
|
|
thumb_func_end Task_HandleSelectionMenuInput
|
|
|
|
thumb_func_start CursorCB_Summary
|
|
CursorCB_Summary: @ 8122D4C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r0, _08122D70 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _08122D74 @ =CB2_ShowPokemonSummaryScreen
|
|
str r0, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122D70: .4byte sPartyMenuInternal
|
|
_08122D74: .4byte CB2_ShowPokemonSummaryScreen
|
|
thumb_func_end CursorCB_Summary
|
|
|
|
thumb_func_start CB2_ShowPokemonSummaryScreen
|
|
CB2_ShowPokemonSummaryScreen: @ 8122D78
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r4, _08122DAC @ =gPartyMenu
|
|
ldrb r1, [r4, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _08122D8C
|
|
bl UpdatePartyToBattleOrder
|
|
_08122D8C:
|
|
ldr r0, _08122DB0 @ =gPlayerParty
|
|
ldrb r1, [r4, 0x9]
|
|
ldr r2, _08122DB4 @ =gPlayerPartyCount
|
|
ldrb r2, [r2]
|
|
subs r2, 0x1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldr r3, _08122DB8 @ =CB2_ReturnToPartyMenuFromSummaryScreen
|
|
movs r4, 0
|
|
str r4, [sp]
|
|
bl ShowPokemonSummaryScreen
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122DAC: .4byte gPartyMenu
|
|
_08122DB0: .4byte gPlayerParty
|
|
_08122DB4: .4byte gPlayerPartyCount
|
|
_08122DB8: .4byte CB2_ReturnToPartyMenuFromSummaryScreen
|
|
thumb_func_end CB2_ShowPokemonSummaryScreen
|
|
|
|
thumb_func_start CB2_ReturnToPartyMenuFromSummaryScreen
|
|
CB2_ReturnToPartyMenuFromSummaryScreen: @ 8122DBC
|
|
push {lr}
|
|
sub sp, 0xC
|
|
ldr r2, _08122DF4 @ =gPaletteFade
|
|
ldrb r0, [r2, 0x8]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x8]
|
|
bl sub_8138B20
|
|
ldr r3, _08122DF8 @ =gPartyMenu
|
|
strb r0, [r3, 0x9]
|
|
ldrb r0, [r3, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r3, 0xB]
|
|
movs r1, 0x16
|
|
str r1, [sp]
|
|
ldr r1, _08122DFC @ =Task_TryCreateSelectionWindow
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r3]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122DF4: .4byte gPaletteFade
|
|
_08122DF8: .4byte gPartyMenu
|
|
_08122DFC: .4byte Task_TryCreateSelectionWindow
|
|
thumb_func_end CB2_ReturnToPartyMenuFromSummaryScreen
|
|
|
|
thumb_func_start CursorCB_Switch
|
|
CursorCB_Switch: @ 8122E00
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r5, _08122E4C @ =gPartyMenu
|
|
movs r0, 0x8
|
|
strb r0, [r5, 0xB]
|
|
ldr r4, _08122E50 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
movs r0, 0x3
|
|
bl DisplayPartyMenuStdMessage
|
|
ldrb r0, [r5, 0x9]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
ldrb r0, [r5, 0x9]
|
|
strb r0, [r5, 0xA]
|
|
ldr r1, _08122E54 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08122E58 @ =Task_HandleChooseMonInput
|
|
str r1, [r0]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122E4C: .4byte gPartyMenu
|
|
_08122E50: .4byte sPartyMenuInternal
|
|
_08122E54: .4byte gTasks
|
|
_08122E58: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end CursorCB_Switch
|
|
|
|
thumb_func_start SwitchSelectedMons
|
|
SwitchSelectedMons: @ 8122E5C
|
|
push {r4-r7,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, _08122E84 @ =gTasks+0x8
|
|
adds r6, r0, r1
|
|
ldr r4, _08122E88 @ =gPartyMenu
|
|
movs r1, 0xA
|
|
ldrsb r1, [r4, r1]
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
cmp r1, r0
|
|
bne _08122E8C
|
|
adds r0, r7, 0
|
|
bl FinishTwoMonAction
|
|
b _08122FE2
|
|
.align 2, 0
|
|
_08122E84: .4byte gTasks+0x8
|
|
_08122E88: .4byte gPartyMenu
|
|
_08122E8C:
|
|
bl sub_812358C
|
|
add r2, sp, 0x8
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
ldr r1, _08122EE8 @ =sPartyMenuBoxes
|
|
ldr r1, [r1]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
movs r4, 0
|
|
strb r0, [r2]
|
|
adds r0, r2, 0
|
|
ldrb r0, [r0]
|
|
movs r1, 0x1
|
|
bl GetWindowAttribute
|
|
strh r0, [r6]
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0]
|
|
movs r1, 0x2
|
|
bl GetWindowAttribute
|
|
strh r0, [r6, 0x2]
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0]
|
|
movs r1, 0x3
|
|
bl GetWindowAttribute
|
|
strh r0, [r6, 0x4]
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0]
|
|
movs r1, 0x4
|
|
bl GetWindowAttribute
|
|
strh r0, [r6, 0x6]
|
|
strh r4, [r6, 0x10]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0xA
|
|
bne _08122EEC
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
b _08122EEE
|
|
.align 2, 0
|
|
_08122EE8: .4byte sPartyMenuBoxes
|
|
_08122EEC:
|
|
movs r0, 0x1
|
|
_08122EEE:
|
|
strh r0, [r6, 0x14]
|
|
add r2, sp, 0x8
|
|
ldr r0, _08122F4C @ =gPartyMenu
|
|
ldrb r0, [r0, 0xA]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
ldr r1, _08122F50 @ =sPartyMenuBoxes
|
|
ldr r1, [r1]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
movs r4, 0
|
|
strb r0, [r2, 0x1]
|
|
adds r0, r2, 0
|
|
ldrb r0, [r0, 0x1]
|
|
movs r1, 0x1
|
|
bl GetWindowAttribute
|
|
strh r0, [r6, 0x8]
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0, 0x1]
|
|
movs r1, 0x2
|
|
bl GetWindowAttribute
|
|
strh r0, [r6, 0xA]
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0, 0x1]
|
|
movs r1, 0x3
|
|
bl GetWindowAttribute
|
|
strh r0, [r6, 0xC]
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0, 0x1]
|
|
movs r1, 0x4
|
|
bl GetWindowAttribute
|
|
strh r0, [r6, 0xE]
|
|
strh r4, [r6, 0x12]
|
|
movs r1, 0xC
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0xA
|
|
bne _08122F54
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
b _08122F56
|
|
.align 2, 0
|
|
_08122F4C: .4byte gPartyMenu
|
|
_08122F50: .4byte sPartyMenuBoxes
|
|
_08122F54:
|
|
movs r0, 0x1
|
|
_08122F56:
|
|
strh r0, [r6, 0x16]
|
|
ldr r4, _08122FEC @ =sSlot1TilemapBuffer
|
|
movs r0, 0x4
|
|
ldrsh r1, [r6, r0]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r6, r2]
|
|
lsls r0, 1
|
|
muls r0, r1
|
|
bl Alloc
|
|
str r0, [r4]
|
|
ldr r5, _08122FF0 @ =sSlot2TilemapBuffer
|
|
movs r0, 0xC
|
|
ldrsh r1, [r6, r0]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r6, r2]
|
|
lsls r0, 1
|
|
muls r0, r1
|
|
bl Alloc
|
|
str r0, [r5]
|
|
ldr r1, [r4]
|
|
ldrb r2, [r6]
|
|
ldrb r3, [r6, 0x2]
|
|
ldrb r0, [r6, 0x4]
|
|
str r0, [sp]
|
|
ldrb r0, [r6, 0x6]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0
|
|
bl CopyRectIntoAltRect
|
|
ldr r1, [r5]
|
|
ldrb r2, [r6, 0x8]
|
|
ldrb r3, [r6, 0xA]
|
|
ldrb r0, [r6, 0xC]
|
|
str r0, [sp]
|
|
ldrb r0, [r6, 0xE]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0
|
|
bl CopyRectIntoAltRect
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0]
|
|
bl ClearWindowTilemap
|
|
add r0, sp, 0x8
|
|
ldrb r0, [r0, 0x1]
|
|
bl ClearWindowTilemap
|
|
ldr r4, _08122FF4 @ =gPartyMenu
|
|
movs r0, 0x9
|
|
strb r0, [r4, 0xB]
|
|
ldrb r0, [r4, 0x9]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
ldrb r0, [r4, 0xA]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
adds r0, r7, 0
|
|
bl SlidePartyMenuBoxOneStep
|
|
ldr r1, _08122FF8 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08122FFC @ =Task_SlideSelectedSlotsOffscreen
|
|
str r1, [r0]
|
|
_08122FE2:
|
|
add sp, 0xC
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08122FEC: .4byte sSlot1TilemapBuffer
|
|
_08122FF0: .4byte sSlot2TilemapBuffer
|
|
_08122FF4: .4byte gPartyMenu
|
|
_08122FF8: .4byte gTasks
|
|
_08122FFC: .4byte Task_SlideSelectedSlotsOffscreen
|
|
thumb_func_end SwitchSelectedMons
|
|
|
|
thumb_func_start TryMovePartySlot
|
|
TryMovePartySlot: @ 8123000
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r2, 0
|
|
mov r12, r3
|
|
ldr r7, [sp, 0x18]
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
adds r5, r3, 0
|
|
lsls r1, 16
|
|
lsrs r2, r1, 16
|
|
mov r8, r2
|
|
lsls r0, r3, 16
|
|
asrs r1, r0, 16
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
adds r4, r1, r0
|
|
cmp r4, 0
|
|
blt _0812302A
|
|
cmp r1, 0x1F
|
|
ble _0812302E
|
|
_0812302A:
|
|
movs r0, 0
|
|
b _0812305C
|
|
_0812302E:
|
|
cmp r1, 0
|
|
bge _08123042
|
|
negs r0, r1
|
|
strb r0, [r6]
|
|
movs r0, 0
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
adds r0, r2, r3
|
|
strb r0, [r7]
|
|
b _0812305A
|
|
_08123042:
|
|
movs r0, 0
|
|
strb r0, [r6]
|
|
mov r0, r12
|
|
strb r5, [r0]
|
|
cmp r4, 0x1F
|
|
ble _08123056
|
|
movs r0, 0x20
|
|
subs r0, r5
|
|
strb r0, [r7]
|
|
b _0812305A
|
|
_08123056:
|
|
mov r1, r8
|
|
strb r1, [r7]
|
|
_0812305A:
|
|
movs r0, 0x1
|
|
_0812305C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end TryMovePartySlot
|
|
|
|
thumb_func_start MoveAndBufferPartySlot
|
|
MoveAndBufferPartySlot: @ 8123068
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x34
|
|
str r0, [sp, 0x28]
|
|
ldr r0, [sp, 0x54]
|
|
ldr r4, [sp, 0x58]
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
mov r9, r2
|
|
lsls r3, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r10, r0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
str r4, [sp, 0x30]
|
|
lsls r1, 16
|
|
asrs r7, r1, 16
|
|
lsrs r0, r3, 16
|
|
str r0, [sp, 0x2C]
|
|
asrs r3, 16
|
|
mov r8, r3
|
|
mov r5, sp
|
|
adds r5, 0x25
|
|
mov r6, sp
|
|
adds r6, 0x26
|
|
str r6, [sp]
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
add r2, sp, 0x24
|
|
adds r3, r5, 0
|
|
bl TryMovePartySlot
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08123122
|
|
ldrb r2, [r5]
|
|
mov r1, r9
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldrb r0, [r6]
|
|
str r0, [sp]
|
|
mov r1, r10
|
|
lsls r0, r1, 24
|
|
lsrs r4, r0, 24
|
|
str r4, [sp, 0x4]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
mov r3, r9
|
|
bl FillBgTilemapBufferRect_Palette0
|
|
ldr r1, [sp, 0x30]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
adds r0, r7, r0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
str r6, [sp]
|
|
mov r1, r8
|
|
add r2, sp, 0x24
|
|
adds r3, r5, 0
|
|
bl TryMovePartySlot
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08123122
|
|
add r0, sp, 0x24
|
|
ldrb r2, [r0]
|
|
ldr r1, [sp, 0x2C]
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
str r4, [sp, 0x4]
|
|
ldrb r0, [r5]
|
|
str r0, [sp, 0x8]
|
|
mov r0, r9
|
|
str r0, [sp, 0xC]
|
|
ldrb r0, [r6]
|
|
str r0, [sp, 0x10]
|
|
str r4, [sp, 0x14]
|
|
movs r0, 0x11
|
|
str r0, [sp, 0x18]
|
|
movs r0, 0
|
|
str r0, [sp, 0x1C]
|
|
str r0, [sp, 0x20]
|
|
ldr r1, [sp, 0x28]
|
|
movs r3, 0
|
|
bl CopyRectToBgTilemapBufferRect
|
|
_08123122:
|
|
add sp, 0x34
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end MoveAndBufferPartySlot
|
|
|
|
thumb_func_start MovePartyMenuBoxSprites
|
|
MovePartyMenuBoxSprites: @ 8123134
|
|
push {r4,lr}
|
|
ldr r4, _08123184 @ =gSprites
|
|
ldrb r2, [r0, 0xB]
|
|
lsls r3, r2, 4
|
|
adds r3, r2
|
|
lsls r3, 2
|
|
adds r3, r4
|
|
lsls r1, 16
|
|
asrs r1, 13
|
|
ldrh r2, [r3, 0x24]
|
|
adds r2, r1
|
|
strh r2, [r3, 0x24]
|
|
ldrb r3, [r0, 0xA]
|
|
lsls r2, r3, 4
|
|
adds r2, r3
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
ldrh r3, [r2, 0x24]
|
|
adds r3, r1
|
|
strh r3, [r2, 0x24]
|
|
ldrb r3, [r0, 0x9]
|
|
lsls r2, r3, 4
|
|
adds r2, r3
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
ldrh r3, [r2, 0x24]
|
|
adds r3, r1
|
|
strh r3, [r2, 0x24]
|
|
ldrb r2, [r0, 0xC]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrh r2, [r0, 0x24]
|
|
adds r2, r1
|
|
strh r2, [r0, 0x24]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123184: .4byte gSprites
|
|
thumb_func_end MovePartyMenuBoxSprites
|
|
|
|
thumb_func_start SlidePartyMenuBoxSpritesOneStep
|
|
SlidePartyMenuBoxSpritesOneStep: @ 8123188
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _081231DC @ =gTasks+0x8
|
|
adds r4, r1, r0
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _081231B6
|
|
ldr r2, _081231E0 @ =sPartyMenuBoxes
|
|
ldr r0, _081231E4 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r2, 0x14
|
|
ldrsh r1, [r4, r2]
|
|
bl MovePartyMenuBoxSprites
|
|
_081231B6:
|
|
movs r1, 0x16
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _081231D4
|
|
ldr r2, _081231E0 @ =sPartyMenuBoxes
|
|
ldr r0, _081231E4 @ =gPartyMenu
|
|
movs r1, 0xA
|
|
ldrsb r1, [r0, r1]
|
|
lsls r1, 4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r2, 0x16
|
|
ldrsh r1, [r4, r2]
|
|
bl MovePartyMenuBoxSprites
|
|
_081231D4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081231DC: .4byte gTasks+0x8
|
|
_081231E0: .4byte sPartyMenuBoxes
|
|
_081231E4: .4byte gPartyMenu
|
|
thumb_func_end SlidePartyMenuBoxSpritesOneStep
|
|
|
|
thumb_func_start SlidePartyMenuBoxOneStep
|
|
SlidePartyMenuBoxOneStep: @ 81231E8
|
|
push {r4-r6,lr}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08123264 @ =gTasks+0x8
|
|
adds r5, r1, r0
|
|
movs r1, 0x14
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _08123228
|
|
ldr r0, _08123268 @ =sSlot1TilemapBuffer
|
|
ldr r0, [r0]
|
|
ldrh r1, [r5, 0x10]
|
|
ldrh r2, [r5]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
movs r3, 0x2
|
|
ldrsh r2, [r5, r3]
|
|
movs r4, 0x4
|
|
ldrsh r3, [r5, r4]
|
|
movs r6, 0x6
|
|
ldrsh r4, [r5, r6]
|
|
str r4, [sp]
|
|
movs r6, 0x14
|
|
ldrsh r4, [r5, r6]
|
|
str r4, [sp, 0x4]
|
|
bl MoveAndBufferPartySlot
|
|
_08123228:
|
|
movs r1, 0x16
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _08123256
|
|
ldr r0, _0812326C @ =sSlot2TilemapBuffer
|
|
ldr r0, [r0]
|
|
ldrh r1, [r5, 0x12]
|
|
ldrh r2, [r5, 0x8]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
movs r3, 0xA
|
|
ldrsh r2, [r5, r3]
|
|
movs r4, 0xC
|
|
ldrsh r3, [r5, r4]
|
|
movs r6, 0xE
|
|
ldrsh r4, [r5, r6]
|
|
str r4, [sp]
|
|
movs r6, 0x16
|
|
ldrsh r4, [r5, r6]
|
|
str r4, [sp, 0x4]
|
|
bl MoveAndBufferPartySlot
|
|
_08123256:
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
add sp, 0x8
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123264: .4byte gTasks+0x8
|
|
_08123268: .4byte sSlot1TilemapBuffer
|
|
_0812326C: .4byte sSlot2TilemapBuffer
|
|
thumb_func_end SlidePartyMenuBoxOneStep
|
|
|
|
thumb_func_start Task_SlideSelectedSlotsOffscreen
|
|
Task_SlideSelectedSlotsOffscreen: @ 8123270
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r7, r0, 3
|
|
ldr r0, _08123370 @ =gTasks+0x8
|
|
mov r8, r0
|
|
adds r6, r7, r0
|
|
adds r0, r4, 0
|
|
bl SlidePartyMenuBoxOneStep
|
|
adds r0, r4, 0
|
|
bl SlidePartyMenuBoxSpritesOneStep
|
|
ldrh r1, [r6, 0x14]
|
|
ldrh r2, [r6, 0x10]
|
|
adds r1, r2
|
|
strh r1, [r6, 0x10]
|
|
ldrh r0, [r6, 0x16]
|
|
ldrh r3, [r6, 0x12]
|
|
adds r0, r3
|
|
strh r0, [r6, 0x12]
|
|
add r2, sp, 0x8
|
|
ldrh r0, [r6]
|
|
adds r0, r1
|
|
strh r0, [r2]
|
|
adds r1, r2, 0
|
|
ldrh r0, [r6, 0x12]
|
|
ldrh r3, [r6, 0x8]
|
|
adds r2, r0, r3
|
|
strh r2, [r1, 0x2]
|
|
adds r0, r1, 0
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x21
|
|
bls _08123362
|
|
lsls r0, r2, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x21
|
|
bls _08123362
|
|
movs r1, 0x14
|
|
ldrsh r0, [r6, r1]
|
|
negs r0, r0
|
|
strh r0, [r6, 0x14]
|
|
movs r2, 0x16
|
|
ldrsh r0, [r6, r2]
|
|
negs r0, r0
|
|
strh r0, [r6, 0x16]
|
|
bl SwitchPartyMon
|
|
ldr r4, _08123374 @ =gPartyMenu
|
|
ldrb r0, [r4, 0x9]
|
|
bl DisplayPartyPokemonData
|
|
ldrb r0, [r4, 0xA]
|
|
bl DisplayPartyPokemonData
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
ldr r5, _08123378 @ =sPartyMenuBoxes
|
|
ldr r1, [r5]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
bl PutWindowTilemap
|
|
movs r0, 0xA
|
|
ldrsb r0, [r4, r0]
|
|
ldr r1, [r5]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
bl PutWindowTilemap
|
|
ldr r0, _0812337C @ =sSlot1TilemapBuffer
|
|
ldr r1, [r0]
|
|
ldrb r2, [r6]
|
|
ldrb r3, [r6, 0x2]
|
|
ldrb r0, [r6, 0x4]
|
|
str r0, [sp]
|
|
ldrb r0, [r6, 0x6]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0
|
|
bl CopyRectIntoAltRect
|
|
ldr r0, _08123380 @ =sSlot2TilemapBuffer
|
|
ldr r1, [r0]
|
|
ldrb r2, [r6, 0x8]
|
|
ldrb r3, [r6, 0xA]
|
|
ldrb r0, [r6, 0xC]
|
|
str r0, [sp]
|
|
ldrb r0, [r6, 0xE]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0
|
|
bl CopyRectIntoAltRect
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
ldr r1, [r5]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
bl ClearWindowTilemap
|
|
movs r0, 0xA
|
|
ldrsb r0, [r4, r0]
|
|
ldr r1, [r5]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
bl ClearWindowTilemap
|
|
mov r0, r8
|
|
subs r0, 0x8
|
|
adds r0, r7, r0
|
|
ldr r1, _08123384 @ =Task_SlideSelectedSlotsOnscreen
|
|
str r1, [r0]
|
|
_08123362:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123370: .4byte gTasks+0x8
|
|
_08123374: .4byte gPartyMenu
|
|
_08123378: .4byte sPartyMenuBoxes
|
|
_0812337C: .4byte sSlot1TilemapBuffer
|
|
_08123380: .4byte sSlot2TilemapBuffer
|
|
_08123384: .4byte Task_SlideSelectedSlotsOnscreen
|
|
thumb_func_end Task_SlideSelectedSlotsOffscreen
|
|
|
|
thumb_func_start Task_SlideSelectedSlotsOnscreen
|
|
Task_SlideSelectedSlotsOnscreen: @ 8123388
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, _081233E8 @ =gTasks+0x8
|
|
adds r4, r0, r1
|
|
adds r0, r6, 0
|
|
bl SlidePartyMenuBoxOneStep
|
|
adds r0, r6, 0
|
|
bl SlidePartyMenuBoxSpritesOneStep
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _081233F4
|
|
movs r2, 0x16
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _081233F4
|
|
ldr r5, _081233EC @ =gPartyMenu
|
|
movs r0, 0x9
|
|
ldrsb r0, [r5, r0]
|
|
ldr r4, _081233F0 @ =sPartyMenuBoxes
|
|
ldr r1, [r4]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
bl PutWindowTilemap
|
|
movs r0, 0xA
|
|
ldrsb r0, [r5, r0]
|
|
ldr r1, [r4]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x8]
|
|
bl PutWindowTilemap
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
adds r0, r6, 0
|
|
bl FinishTwoMonAction
|
|
b _08123418
|
|
.align 2, 0
|
|
_081233E8: .4byte gTasks+0x8
|
|
_081233EC: .4byte gPartyMenu
|
|
_081233F0: .4byte sPartyMenuBoxes
|
|
_081233F4:
|
|
ldrh r1, [r4, 0x14]
|
|
ldrh r0, [r4, 0x10]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x10]
|
|
ldrh r0, [r4, 0x16]
|
|
ldrh r2, [r4, 0x12]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x12]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
cmp r1, 0
|
|
bne _0812340E
|
|
strh r1, [r4, 0x14]
|
|
_0812340E:
|
|
movs r1, 0x12
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08123418
|
|
strh r0, [r4, 0x16]
|
|
_08123418:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_SlideSelectedSlotsOnscreen
|
|
|
|
thumb_func_start SwitchMenuBoxSprites
|
|
SwitchMenuBoxSprites: @ 8123420
|
|
push {r4-r6,lr}
|
|
mov r6, r10
|
|
mov r5, r9
|
|
mov r4, r8
|
|
push {r4-r6}
|
|
ldrb r3, [r0]
|
|
ldrb r2, [r1]
|
|
strb r2, [r0]
|
|
strb r3, [r1]
|
|
ldr r5, _081234E8 @ =gSprites
|
|
ldrb r2, [r0]
|
|
lsls r3, r2, 4
|
|
adds r3, r2
|
|
lsls r3, 2
|
|
adds r3, r5
|
|
ldrh r6, [r3, 0x20]
|
|
ldrh r2, [r3, 0x22]
|
|
mov r8, r2
|
|
ldrh r2, [r3, 0x24]
|
|
mov r9, r2
|
|
ldrh r2, [r3, 0x26]
|
|
mov r10, r2
|
|
ldrb r4, [r1]
|
|
lsls r2, r4, 4
|
|
adds r2, r4
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
ldrh r2, [r2, 0x20]
|
|
strh r2, [r3, 0x20]
|
|
ldrb r2, [r0]
|
|
lsls r3, r2, 4
|
|
adds r3, r2
|
|
lsls r3, 2
|
|
adds r3, r5
|
|
ldrb r4, [r1]
|
|
lsls r2, r4, 4
|
|
adds r2, r4
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
ldrh r2, [r2, 0x22]
|
|
strh r2, [r3, 0x22]
|
|
ldrb r2, [r0]
|
|
lsls r3, r2, 4
|
|
adds r3, r2
|
|
lsls r3, 2
|
|
adds r3, r5
|
|
ldrb r4, [r1]
|
|
lsls r2, r4, 4
|
|
adds r2, r4
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
ldrh r2, [r2, 0x24]
|
|
strh r2, [r3, 0x24]
|
|
ldrb r0, [r0]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r5
|
|
ldrb r3, [r1]
|
|
lsls r0, r3, 4
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x26]
|
|
strh r0, [r2, 0x26]
|
|
ldrb r2, [r1]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
strh r6, [r0, 0x20]
|
|
ldrb r2, [r1]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
mov r2, r8
|
|
strh r2, [r0, 0x22]
|
|
ldrb r2, [r1]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
mov r2, r9
|
|
strh r2, [r0, 0x24]
|
|
ldrb r1, [r1]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
mov r1, r10
|
|
strh r1, [r0, 0x26]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081234E8: .4byte gSprites
|
|
thumb_func_end SwitchMenuBoxSprites
|
|
|
|
thumb_func_start SwitchPartyMon
|
|
SwitchPartyMon: @ 81234EC
|
|
push {r4-r6,lr}
|
|
sub sp, 0x8
|
|
ldr r1, _08123580 @ =sPartyMenuBoxes
|
|
ldr r2, _08123584 @ =gPartyMenu
|
|
movs r3, 0x9
|
|
ldrsb r3, [r2, r3]
|
|
lsls r0, r3, 4
|
|
ldr r1, [r1]
|
|
adds r0, r1, r0
|
|
str r0, [sp]
|
|
ldrb r2, [r2, 0xA]
|
|
lsls r2, 24
|
|
asrs r2, 24
|
|
lsls r0, r2, 4
|
|
adds r0, r1, r0
|
|
str r0, [sp, 0x4]
|
|
movs r1, 0x64
|
|
adds r4, r3, 0
|
|
muls r4, r1
|
|
ldr r0, _08123588 @ =gPlayerParty
|
|
adds r4, r0
|
|
adds r5, r2, 0
|
|
muls r5, r1
|
|
adds r5, r0
|
|
movs r0, 0x64
|
|
bl Alloc
|
|
adds r6, r0, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r6, 0
|
|
bl Free
|
|
ldr r0, [sp]
|
|
adds r0, 0xB
|
|
ldr r1, [sp, 0x4]
|
|
adds r1, 0xB
|
|
bl SwitchMenuBoxSprites
|
|
ldr r0, [sp]
|
|
adds r0, 0xA
|
|
ldr r1, [sp, 0x4]
|
|
adds r1, 0xA
|
|
bl SwitchMenuBoxSprites
|
|
ldr r0, [sp]
|
|
adds r0, 0x9
|
|
ldr r1, [sp, 0x4]
|
|
adds r1, 0x9
|
|
bl SwitchMenuBoxSprites
|
|
ldr r0, [sp]
|
|
adds r0, 0xC
|
|
ldr r1, [sp, 0x4]
|
|
adds r1, 0xC
|
|
bl SwitchMenuBoxSprites
|
|
add sp, 0x8
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123580: .4byte sPartyMenuBoxes
|
|
_08123584: .4byte gPartyMenu
|
|
_08123588: .4byte gPlayerParty
|
|
thumb_func_end SwitchPartyMon
|
|
|
|
thumb_func_start sub_812358C
|
|
sub_812358C: @ 812358C
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
movs r0, 0x4
|
|
bl Alloc
|
|
adds r4, r0, 0
|
|
ldr r0, _081235E0 @ =gPartyMenu
|
|
mov r8, r0
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, _081235E4 @ =gPlayerParty
|
|
adds r0, r5
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
strh r0, [r4]
|
|
mov r1, r8
|
|
movs r0, 0xA
|
|
ldrsb r0, [r1, r0]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
strh r0, [r4, 0x2]
|
|
movs r0, 0x3
|
|
adds r1, r4, 0
|
|
bl sub_8113550
|
|
adds r0, r4, 0
|
|
bl Free
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081235E0: .4byte gPartyMenu
|
|
_081235E4: .4byte gPlayerParty
|
|
thumb_func_end sub_812358C
|
|
|
|
thumb_func_start FinishTwoMonAction
|
|
FinishTwoMonAction: @ 81235E8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, _08123630 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r4, _08123634 @ =gPartyMenu
|
|
movs r0, 0
|
|
strb r0, [r4, 0xB]
|
|
ldrb r0, [r4, 0x9]
|
|
movs r1, 0
|
|
bl AnimatePartySlot
|
|
ldrb r0, [r4, 0xA]
|
|
strb r0, [r4, 0x9]
|
|
ldrb r0, [r4, 0xA]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r1, _08123638 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _0812363C @ =Task_HandleChooseMonInput
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123630: .4byte sPartyMenuInternal
|
|
_08123634: .4byte gPartyMenu
|
|
_08123638: .4byte gTasks
|
|
_0812363C: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end FinishTwoMonAction
|
|
|
|
thumb_func_start CursorCB_Cancel1
|
|
CursorCB_Cancel1: @ 8123640
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, _08123674 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, _08123678 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x6
|
|
bne _0812367C
|
|
movs r0, 0xF
|
|
bl DisplayPartyMenuStdMessage
|
|
b _08123682
|
|
.align 2, 0
|
|
_08123674: .4byte sPartyMenuInternal
|
|
_08123678: .4byte gPartyMenu
|
|
_0812367C:
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
_08123682:
|
|
ldr r0, _08123698 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0812369C @ =Task_HandleChooseMonInput
|
|
str r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123698: .4byte gTasks
|
|
_0812369C: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end CursorCB_Cancel1
|
|
|
|
thumb_func_start CursorCB_Item
|
|
CursorCB_Item: @ 81236A0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, _081236F0 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, _081236F4 @ =gPlayerParty
|
|
ldr r1, _081236F8 @ =gPartyMenu
|
|
ldrb r1, [r1, 0x9]
|
|
movs r2, 0x8
|
|
bl SetPartyMonSelectionActions
|
|
movs r0, 0x1
|
|
bl DisplaySelectionWindow
|
|
movs r0, 0x19
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r1, _081236FC @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
strh r1, [r0, 0x8]
|
|
ldr r1, _08123700 @ =Task_HandleSelectionMenuInput
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081236F0: .4byte sPartyMenuInternal
|
|
_081236F4: .4byte gPlayerParty
|
|
_081236F8: .4byte gPartyMenu
|
|
_081236FC: .4byte gTasks
|
|
_08123700: .4byte Task_HandleSelectionMenuInput
|
|
thumb_func_end CursorCB_Item
|
|
|
|
thumb_func_start CursorCB_Give
|
|
CursorCB_Give: @ 8123704
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r0, _08123728 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _0812372C @ =CB2_SelectBagItemToGive
|
|
str r0, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123728: .4byte sPartyMenuInternal
|
|
_0812372C: .4byte CB2_SelectBagItemToGive
|
|
thumb_func_end CursorCB_Give
|
|
|
|
thumb_func_start CB2_SelectBagItemToGive
|
|
CB2_SelectBagItemToGive: @ 8123730
|
|
push {lr}
|
|
ldr r2, _08123740 @ =CB2_GiveHoldItem
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
bl GoToBagMenu
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123740: .4byte CB2_GiveHoldItem
|
|
thumb_func_end CB2_SelectBagItemToGive
|
|
|
|
thumb_func_start CB2_GiveHoldItem
|
|
CB2_GiveHoldItem: @ 8123744
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
ldr r6, _0812376C @ =gSpecialVar_ItemId
|
|
ldrh r0, [r6]
|
|
cmp r0, 0
|
|
bne _08123778
|
|
ldr r3, _08123770 @ =gPartyMenu
|
|
ldrb r0, [r3, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r3, 0xB]
|
|
movs r1, 0x7F
|
|
str r1, [sp]
|
|
ldr r1, _08123774 @ =Task_TryCreateSelectionWindow
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r3]
|
|
b _081237AE
|
|
.align 2, 0
|
|
_0812376C: .4byte gSpecialVar_ItemId
|
|
_08123770: .4byte gPartyMenu
|
|
_08123774: .4byte Task_TryCreateSelectionWindow
|
|
_08123778:
|
|
ldr r4, _081237BC @ =sPartyMenuItemId
|
|
ldr r5, _081237C0 @ =gPartyMenu
|
|
movs r0, 0x9
|
|
ldrsb r0, [r5, r0]
|
|
movs r1, 0x64
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r7, _081237C4 @ =gPlayerParty
|
|
adds r0, r7
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
strh r0, [r4]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _081237CC
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r5, 0xB]
|
|
movs r1, 0x7F
|
|
str r1, [sp]
|
|
ldr r1, _081237C8 @ =Task_SwitchHoldItemsPrompt
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r5]
|
|
_081237AE:
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
b _08123814
|
|
.align 2, 0
|
|
_081237BC: .4byte sPartyMenuItemId
|
|
_081237C0: .4byte gPartyMenu
|
|
_081237C4: .4byte gPlayerParty
|
|
_081237C8: .4byte Task_SwitchHoldItemsPrompt
|
|
_081237CC:
|
|
ldrh r0, [r6]
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081237F8
|
|
ldrh r0, [r6]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
movs r0, 0x9
|
|
ldrsb r0, [r5, r0]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r7
|
|
ldrh r1, [r6]
|
|
bl GiveItemToMon
|
|
bl CB2_WriteMailToGiveMon
|
|
b _08123814
|
|
_081237F8:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r5, 0xB]
|
|
movs r1, 0x7F
|
|
str r1, [sp]
|
|
ldr r1, _08123820 @ =Task_GiveHoldItem
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r5]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
_08123814:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123820: .4byte Task_GiveHoldItem
|
|
thumb_func_end CB2_GiveHoldItem
|
|
|
|
thumb_func_start Task_GiveHoldItem
|
|
Task_GiveHoldItem: @ 8123824
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _0812388C @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08123880
|
|
ldr r0, _08123890 @ =gSpecialVar_ItemId
|
|
ldrh r4, [r0]
|
|
ldr r0, _08123894 @ =gPartyMenu
|
|
mov r8, r0
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, _08123898 @ =gPlayerParty
|
|
adds r0, r5
|
|
adds r1, r4, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl DisplayGaveHeldItemMessage
|
|
mov r1, r8
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
adds r1, r4, 0
|
|
bl GiveItemToMon
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
ldr r1, _0812389C @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _081238A0 @ =Task_UpdateHeldItemSprite
|
|
str r1, [r0]
|
|
_08123880:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812388C: .4byte gPaletteFade
|
|
_08123890: .4byte gSpecialVar_ItemId
|
|
_08123894: .4byte gPartyMenu
|
|
_08123898: .4byte gPlayerParty
|
|
_0812389C: .4byte gTasks
|
|
_081238A0: .4byte Task_UpdateHeldItemSprite
|
|
thumb_func_end Task_GiveHoldItem
|
|
|
|
thumb_func_start Task_SwitchHoldItemsPrompt
|
|
Task_SwitchHoldItemsPrompt: @ 81238A4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _081238E4 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _081238DC
|
|
ldr r0, _081238E8 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _081238EC @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _081238F0 @ =sPartyMenuItemId
|
|
ldrh r1, [r1]
|
|
movs r2, 0x1
|
|
bl DisplayAlreadyHoldingItemSwitchMessage
|
|
ldr r1, _081238F4 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _081238F8 @ =Task_SwitchItemsYesNo
|
|
str r1, [r0]
|
|
_081238DC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081238E4: .4byte gPaletteFade
|
|
_081238E8: .4byte gPartyMenu
|
|
_081238EC: .4byte gPlayerParty
|
|
_081238F0: .4byte sPartyMenuItemId
|
|
_081238F4: .4byte gTasks
|
|
_081238F8: .4byte Task_SwitchItemsYesNo
|
|
thumb_func_end Task_SwitchHoldItemsPrompt
|
|
|
|
thumb_func_start Task_SwitchItemsYesNo
|
|
Task_SwitchItemsYesNo: @ 81238FC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08123920
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08123928 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0812392C @ =Task_HandleSwitchItemsYesNoInput
|
|
str r0, [r1]
|
|
_08123920:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123928: .4byte gTasks
|
|
_0812392C: .4byte Task_HandleSwitchItemsYesNoInput
|
|
thumb_func_end Task_SwitchItemsYesNo
|
|
|
|
thumb_func_start Task_HandleSwitchItemsYesNoInput
|
|
Task_HandleSwitchItemsYesNoInput: @ 8123930
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _08123956
|
|
cmp r1, 0
|
|
bgt _08123950
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _08123A2C
|
|
b _08123A40
|
|
_08123950:
|
|
cmp r1, 0x1
|
|
beq _08123A32
|
|
b _08123A40
|
|
_08123956:
|
|
ldr r5, _08123998 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r5]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
ldr r6, _0812399C @ =sPartyMenuItemId
|
|
ldrh r0, [r6]
|
|
movs r1, 0x1
|
|
bl AddBagItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081239AC
|
|
ldrh r0, [r5]
|
|
movs r1, 0x1
|
|
bl AddBagItem
|
|
ldrh r0, [r6]
|
|
bl BufferBagFullCantTakeItemMessage
|
|
ldr r0, _081239A0 @ =gStringVar4
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _081239A4 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _081239A8 @ =Task_ReturnToChooseMonAfterText
|
|
str r1, [r0]
|
|
b _08123A40
|
|
.align 2, 0
|
|
_08123998: .4byte gSpecialVar_ItemId
|
|
_0812399C: .4byte sPartyMenuItemId
|
|
_081239A0: .4byte gStringVar4
|
|
_081239A4: .4byte gTasks
|
|
_081239A8: .4byte Task_ReturnToChooseMonAfterText
|
|
_081239AC:
|
|
ldrh r0, [r5]
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081239EC
|
|
ldr r0, _081239DC @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _081239E0 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldrh r1, [r5]
|
|
bl GiveItemToMon
|
|
ldr r1, _081239E4 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _081239E8 @ =Task_WriteMailToGiveMonAfterText
|
|
str r1, [r0]
|
|
b _08123A40
|
|
.align 2, 0
|
|
_081239DC: .4byte gPartyMenu
|
|
_081239E0: .4byte gPlayerParty
|
|
_081239E4: .4byte gTasks
|
|
_081239E8: .4byte Task_WriteMailToGiveMonAfterText
|
|
_081239EC:
|
|
ldr r0, _08123A1C @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08123A20 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldrh r1, [r5]
|
|
bl GiveItemToMon
|
|
ldrh r0, [r5]
|
|
ldrh r1, [r6]
|
|
movs r2, 0x1
|
|
bl DisplaySwitchedHeldItemMessage
|
|
ldr r1, _08123A24 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08123A28 @ =Task_UpdateHeldItemSprite
|
|
str r1, [r0]
|
|
b _08123A40
|
|
.align 2, 0
|
|
_08123A1C: .4byte gPartyMenu
|
|
_08123A20: .4byte gPlayerParty
|
|
_08123A24: .4byte gTasks
|
|
_08123A28: .4byte Task_UpdateHeldItemSprite
|
|
_08123A2C:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_08123A32:
|
|
ldr r0, _08123A48 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08123A4C @ =Task_ReturnToChooseMonAfterText
|
|
str r0, [r1]
|
|
_08123A40:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123A48: .4byte gTasks
|
|
_08123A4C: .4byte Task_ReturnToChooseMonAfterText
|
|
thumb_func_end Task_HandleSwitchItemsYesNoInput
|
|
|
|
thumb_func_start Task_WriteMailToGiveMonAfterText
|
|
Task_WriteMailToGiveMonAfterText: @ 8123A50
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08123A70
|
|
ldr r0, _08123A78 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _08123A7C @ =CB2_WriteMailToGiveMon
|
|
str r0, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
_08123A70:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123A78: .4byte sPartyMenuInternal
|
|
_08123A7C: .4byte CB2_WriteMailToGiveMon
|
|
thumb_func_end Task_WriteMailToGiveMonAfterText
|
|
|
|
thumb_func_start CB2_WriteMailToGiveMon
|
|
CB2_WriteMailToGiveMon: @ 8123A80
|
|
push {lr}
|
|
ldr r0, _08123AB8 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08123ABC @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x40
|
|
bl GetMonData
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _08123AC0 @ =gSaveBlock1Ptr
|
|
lsls r2, r0, 3
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _08123AC4 @ =0x00002cd0
|
|
adds r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
ldr r2, _08123AC8 @ =CB2_ReturnToPartyMenuFromWritingMail
|
|
movs r0, 0x4
|
|
bl DoEasyChatScreen
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123AB8: .4byte gPartyMenu
|
|
_08123ABC: .4byte gPlayerParty
|
|
_08123AC0: .4byte gSaveBlock1Ptr
|
|
_08123AC4: .4byte 0x00002cd0
|
|
_08123AC8: .4byte CB2_ReturnToPartyMenuFromWritingMail
|
|
thumb_func_end CB2_WriteMailToGiveMon
|
|
|
|
thumb_func_start CB2_ReturnToPartyMenuFromWritingMail
|
|
CB2_ReturnToPartyMenuFromWritingMail: @ 8123ACC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
ldr r6, _08123B38 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r6, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08123B3C @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldr r0, _08123B40 @ =gSpecialVar_Result
|
|
ldrh r7, [r0]
|
|
cmp r7, 0
|
|
bne _08123B4C
|
|
adds r0, r5, 0
|
|
bl TakeMailFromMon
|
|
ldr r4, _08123B44 @ =sPartyMenuItemId
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
adds r2, r4, 0
|
|
bl SetMonData
|
|
ldrh r0, [r4]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
mov r0, r8
|
|
movs r1, 0x1
|
|
bl AddBagItem
|
|
ldrb r0, [r6, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r6, 0xB]
|
|
str r7, [sp]
|
|
ldr r1, _08123B48 @ =Task_TryCreateSelectionWindow
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r6]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
b _08123B68
|
|
.align 2, 0
|
|
_08123B38: .4byte gPartyMenu
|
|
_08123B3C: .4byte gPlayerParty
|
|
_08123B40: .4byte gSpecialVar_Result
|
|
_08123B44: .4byte sPartyMenuItemId
|
|
_08123B48: .4byte Task_TryCreateSelectionWindow
|
|
_08123B4C:
|
|
ldrb r0, [r6, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r6, 0xB]
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
ldr r1, _08123B74 @ =Task_DisplayGaveMailFromPartyMessage
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r6]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
_08123B68:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123B74: .4byte Task_DisplayGaveMailFromPartyMessage
|
|
thumb_func_end CB2_ReturnToPartyMenuFromWritingMail
|
|
|
|
thumb_func_start Task_DisplayGaveMailFromPartyMessage
|
|
Task_DisplayGaveMailFromPartyMessage: @ 8123B78
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _08123BB0 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08123BDE
|
|
ldr r1, _08123BB4 @ =sPartyMenuItemId
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
bne _08123BC4
|
|
ldr r0, _08123BB8 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08123BBC @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08123BC0 @ =gSpecialVar_ItemId
|
|
ldrh r1, [r1]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl DisplayGaveHeldItemMessage
|
|
b _08123BD0
|
|
.align 2, 0
|
|
_08123BB0: .4byte gPaletteFade
|
|
_08123BB4: .4byte sPartyMenuItemId
|
|
_08123BB8: .4byte gPartyMenu
|
|
_08123BBC: .4byte gPlayerParty
|
|
_08123BC0: .4byte gSpecialVar_ItemId
|
|
_08123BC4:
|
|
ldr r0, _08123BE4 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1]
|
|
movs r2, 0
|
|
bl DisplaySwitchedHeldItemMessage
|
|
_08123BD0:
|
|
ldr r0, _08123BE8 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08123BEC @ =Task_UpdateHeldItemSprite
|
|
str r0, [r1]
|
|
_08123BDE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123BE4: .4byte gSpecialVar_ItemId
|
|
_08123BE8: .4byte gTasks
|
|
_08123BEC: .4byte Task_UpdateHeldItemSprite
|
|
thumb_func_end Task_DisplayGaveMailFromPartyMessage
|
|
|
|
thumb_func_start Task_UpdateHeldItemSprite
|
|
Task_UpdateHeldItemSprite: @ 8123BF0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _08123C2C @ =gPartyMenu
|
|
ldrb r4, [r0, 0x9]
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08123C24
|
|
lsls r2, r4, 24
|
|
asrs r2, 24
|
|
movs r0, 0x64
|
|
muls r0, r2
|
|
ldr r1, _08123C30 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08123C34 @ =sPartyMenuBoxes
|
|
lsls r2, 4
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
bl UpdatePartyMonHeldItemSprite
|
|
adds r0, r5, 0
|
|
bl Task_ReturnToChooseMonAfterText
|
|
_08123C24:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123C2C: .4byte gPartyMenu
|
|
_08123C30: .4byte gPlayerParty
|
|
_08123C34: .4byte sPartyMenuBoxes
|
|
thumb_func_end Task_UpdateHeldItemSprite
|
|
|
|
thumb_func_start CursorCB_TakeItem
|
|
CursorCB_TakeItem: @ 8123C38
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08123C90 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08123C94 @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, _08123C98 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
adds r0, r5, 0
|
|
bl TryTakeMonItem
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _08123C9C
|
|
cmp r0, 0x1
|
|
beq _08123CC0
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
movs r2, 0x1
|
|
bl DisplayTookHeldItemMessage
|
|
b _08123CCE
|
|
.align 2, 0
|
|
_08123C90: .4byte gPartyMenu
|
|
_08123C94: .4byte gPlayerParty
|
|
_08123C98: .4byte sPartyMenuInternal
|
|
_08123C9C:
|
|
ldr r1, _08123CB4 @ =gStringVar1
|
|
adds r0, r5, 0
|
|
bl GetMonNickname
|
|
ldr r4, _08123CB8 @ =gStringVar4
|
|
ldr r1, _08123CBC @ =gUnknown_8416C8F
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
b _08123CC8
|
|
.align 2, 0
|
|
_08123CB4: .4byte gStringVar1
|
|
_08123CB8: .4byte gStringVar4
|
|
_08123CBC: .4byte gUnknown_8416C8F
|
|
_08123CC0:
|
|
adds r0, r6, 0
|
|
bl BufferBagFullCantTakeItemMessage
|
|
ldr r0, _08123CE8 @ =gStringVar4
|
|
_08123CC8:
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
_08123CCE:
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r0, _08123CEC @ =gTasks
|
|
lsls r1, r7, 2
|
|
adds r1, r7
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08123CF0 @ =Task_UpdateHeldItemSprite
|
|
str r0, [r1]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123CE8: .4byte gStringVar4
|
|
_08123CEC: .4byte gTasks
|
|
_08123CF0: .4byte Task_UpdateHeldItemSprite
|
|
thumb_func_end CursorCB_TakeItem
|
|
|
|
thumb_func_start CursorCB_Mail
|
|
CursorCB_Mail: @ 8123CF4
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, _08123D44 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, _08123D48 @ =gPlayerParty
|
|
ldr r1, _08123D4C @ =gPartyMenu
|
|
ldrb r1, [r1, 0x9]
|
|
movs r2, 0x9
|
|
bl SetPartyMonSelectionActions
|
|
movs r0, 0x2
|
|
bl DisplaySelectionWindow
|
|
movs r0, 0x1A
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r1, _08123D50 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
strh r1, [r0, 0x8]
|
|
ldr r1, _08123D54 @ =Task_HandleSelectionMenuInput
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123D44: .4byte sPartyMenuInternal
|
|
_08123D48: .4byte gPlayerParty
|
|
_08123D4C: .4byte gPartyMenu
|
|
_08123D50: .4byte gTasks
|
|
_08123D54: .4byte Task_HandleSelectionMenuInput
|
|
thumb_func_end CursorCB_Mail
|
|
|
|
thumb_func_start CursorCB_Read
|
|
CursorCB_Read: @ 8123D58
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r0, _08123D7C @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _08123D80 @ =CB2_ReadHeldMail
|
|
str r0, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123D7C: .4byte sPartyMenuInternal
|
|
_08123D80: .4byte CB2_ReadHeldMail
|
|
thumb_func_end CursorCB_Read
|
|
|
|
thumb_func_start CB2_ReadHeldMail
|
|
CB2_ReadHeldMail: @ 8123D84
|
|
push {lr}
|
|
ldr r0, _08123DB8 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08123DBC @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x40
|
|
bl GetMonData
|
|
ldr r2, _08123DC0 @ =gSaveBlock1Ptr
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, _08123DC4 @ =0x00002cd0
|
|
adds r1, r0
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
ldr r1, _08123DC8 @ =CB2_ReturnToPartyMenuFromReadingMail
|
|
movs r2, 0x1
|
|
bl ReadMail
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123DB8: .4byte gPartyMenu
|
|
_08123DBC: .4byte gPlayerParty
|
|
_08123DC0: .4byte gSaveBlock1Ptr
|
|
_08123DC4: .4byte 0x00002cd0
|
|
_08123DC8: .4byte CB2_ReturnToPartyMenuFromReadingMail
|
|
thumb_func_end CB2_ReadHeldMail
|
|
|
|
thumb_func_start CB2_ReturnToPartyMenuFromReadingMail
|
|
CB2_ReturnToPartyMenuFromReadingMail: @ 8123DCC
|
|
push {lr}
|
|
sub sp, 0xC
|
|
ldr r2, _08123E00 @ =gPaletteFade
|
|
ldrb r0, [r2, 0x8]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x8]
|
|
ldr r3, _08123E04 @ =gPartyMenu
|
|
ldrb r0, [r3, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r3, 0xB]
|
|
movs r1, 0x16
|
|
str r1, [sp]
|
|
ldr r1, _08123E08 @ =Task_TryCreateSelectionWindow
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r3]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123E00: .4byte gPaletteFade
|
|
_08123E04: .4byte gPartyMenu
|
|
_08123E08: .4byte Task_TryCreateSelectionWindow
|
|
thumb_func_end CB2_ReturnToPartyMenuFromReadingMail
|
|
|
|
thumb_func_start CursorCB_TakeMail
|
|
CursorCB_TakeMail: @ 8123E0C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r5, _08123E48 @ =sPartyMenuInternal
|
|
ldr r0, [r5]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r5]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, _08123E4C @ =gText_SendMailToPC
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08123E50 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08123E54 @ =Task_SendMailToPCYesNo
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123E48: .4byte sPartyMenuInternal
|
|
_08123E4C: .4byte gText_SendMailToPC
|
|
_08123E50: .4byte gTasks
|
|
_08123E54: .4byte Task_SendMailToPCYesNo
|
|
thumb_func_end CursorCB_TakeMail
|
|
|
|
thumb_func_start Task_SendMailToPCYesNo
|
|
Task_SendMailToPCYesNo: @ 8123E58
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08123E7C
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08123E84 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08123E88 @ =Task_HandleSendMailToPCYesNoInput
|
|
str r0, [r1]
|
|
_08123E7C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123E84: .4byte gTasks
|
|
_08123E88: .4byte Task_HandleSendMailToPCYesNoInput
|
|
thumb_func_end Task_SendMailToPCYesNo
|
|
|
|
thumb_func_start Task_HandleSendMailToPCYesNoInput
|
|
Task_HandleSendMailToPCYesNoInput: @ 8123E8C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _08123EB2
|
|
cmp r1, 0
|
|
bgt _08123EAC
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _08123F1C
|
|
b _08123F38
|
|
_08123EAC:
|
|
cmp r1, 0x1
|
|
beq _08123F22
|
|
b _08123F38
|
|
_08123EB2:
|
|
ldr r0, _08123EE4 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08123EE8 @ =gPlayerParty
|
|
adds r0, r1
|
|
bl TakeMailFromMon2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
beq _08123EF8
|
|
ldr r0, _08123EEC @ =gText_MailSentToPC
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08123EF0 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08123EF4 @ =Task_UpdateHeldItemSprite
|
|
b _08123F36
|
|
.align 2, 0
|
|
_08123EE4: .4byte gPartyMenu
|
|
_08123EE8: .4byte gPlayerParty
|
|
_08123EEC: .4byte gText_MailSentToPC
|
|
_08123EF0: .4byte gTasks
|
|
_08123EF4: .4byte Task_UpdateHeldItemSprite
|
|
_08123EF8:
|
|
ldr r0, _08123F10 @ =gText_PCMailboxFull
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08123F14 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08123F18 @ =Task_ReturnToChooseMonAfterText
|
|
b _08123F36
|
|
.align 2, 0
|
|
_08123F10: .4byte gText_PCMailboxFull
|
|
_08123F14: .4byte gTasks
|
|
_08123F18: .4byte Task_ReturnToChooseMonAfterText
|
|
_08123F1C:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_08123F22:
|
|
ldr r0, _08123F40 @ =gText_MailMessageWillBeLost
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08123F44 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08123F48 @ =Task_LoseMailMessageYesNo
|
|
_08123F36:
|
|
str r1, [r0]
|
|
_08123F38:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123F40: .4byte gText_MailMessageWillBeLost
|
|
_08123F44: .4byte gTasks
|
|
_08123F48: .4byte Task_LoseMailMessageYesNo
|
|
thumb_func_end Task_HandleSendMailToPCYesNoInput
|
|
|
|
thumb_func_start Task_LoseMailMessageYesNo
|
|
Task_LoseMailMessageYesNo: @ 8123F4C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08123F70
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08123F78 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08123F7C @ =Task_HandleLoseMailMessageYesNoInput
|
|
str r0, [r1]
|
|
_08123F70:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08123F78: .4byte gTasks
|
|
_08123F7C: .4byte Task_HandleLoseMailMessageYesNoInput
|
|
thumb_func_end Task_LoseMailMessageYesNo
|
|
|
|
thumb_func_start Task_HandleLoseMailMessageYesNoInput
|
|
Task_HandleLoseMailMessageYesNoInput: @ 8123F80
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _08123FAA
|
|
cmp r1, 0
|
|
bgt _08123FA4
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0812403C
|
|
b _08124050
|
|
_08123FA4:
|
|
cmp r1, 0x1
|
|
beq _08124042
|
|
b _08124050
|
|
_08123FAA:
|
|
ldr r0, _08123FFC @ =gPartyMenu
|
|
mov r8, r0
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r7, 0x64
|
|
muls r0, r7
|
|
ldr r6, _08124000 @ =gPlayerParty
|
|
adds r0, r6
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl AddBagItem
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124010
|
|
mov r1, r8
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
muls r0, r7
|
|
adds r0, r6
|
|
bl TakeMailFromMon
|
|
ldr r0, _08124004 @ =gText_MailTakenFromPkmn
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08124008 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _0812400C @ =Task_UpdateHeldItemSprite
|
|
str r1, [r0]
|
|
b _08124050
|
|
.align 2, 0
|
|
_08123FFC: .4byte gPartyMenu
|
|
_08124000: .4byte gPlayerParty
|
|
_08124004: .4byte gText_MailTakenFromPkmn
|
|
_08124008: .4byte gTasks
|
|
_0812400C: .4byte Task_UpdateHeldItemSprite
|
|
_08124010:
|
|
adds r0, r4, 0
|
|
bl BufferBagFullCantTakeItemMessage
|
|
ldr r0, _08124030 @ =gStringVar4
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08124034 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08124038 @ =Task_ReturnToChooseMonAfterText
|
|
str r1, [r0]
|
|
b _08124050
|
|
.align 2, 0
|
|
_08124030: .4byte gStringVar4
|
|
_08124034: .4byte gTasks
|
|
_08124038: .4byte Task_ReturnToChooseMonAfterText
|
|
_0812403C:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_08124042:
|
|
ldr r0, _0812405C @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08124060 @ =Task_ReturnToChooseMonAfterText
|
|
str r0, [r1]
|
|
_08124050:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812405C: .4byte gTasks
|
|
_08124060: .4byte Task_ReturnToChooseMonAfterText
|
|
thumb_func_end Task_HandleLoseMailMessageYesNoInput
|
|
|
|
thumb_func_start CursorCB_Cancel2
|
|
CursorCB_Cancel2: @ 8124064
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
adds r6, r0, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
ldr r0, _081240E0 @ =gPartyMenu
|
|
mov r8, r0
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
adds r5, r1, 0
|
|
muls r5, r0
|
|
ldr r0, _081240E4 @ =gPlayerParty
|
|
mov r9, r0
|
|
add r5, r9
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, _081240E8 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
mov r0, r8
|
|
ldrb r4, [r0, 0x9]
|
|
adds r0, r5, 0
|
|
bl GetPartyMenuActionsType
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r0, r9
|
|
adds r1, r4, 0
|
|
bl SetPartyMonSelectionActions
|
|
movs r0, 0
|
|
bl DisplaySelectionWindow
|
|
movs r0, 0x16
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r1, _081240EC @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
strh r1, [r0, 0x8]
|
|
ldr r1, _081240F0 @ =Task_HandleSelectionMenuInput
|
|
str r1, [r0]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081240E0: .4byte gPartyMenu
|
|
_081240E4: .4byte gPlayerParty
|
|
_081240E8: .4byte sPartyMenuInternal
|
|
_081240EC: .4byte gTasks
|
|
_081240F0: .4byte Task_HandleSelectionMenuInput
|
|
thumb_func_end CursorCB_Cancel2
|
|
|
|
thumb_func_start CursorCB_SendMon
|
|
CursorCB_SendMon: @ 81240F4
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r5, _08124120 @ =sPartyMenuInternal
|
|
ldr r0, [r5]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
bl TrySwitchInPokemon
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124124
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
b _08124142
|
|
.align 2, 0
|
|
_08124120: .4byte sPartyMenuInternal
|
|
_08124124:
|
|
ldr r0, [r5]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, _08124148 @ =gStringVar4
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _0812414C @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08124150 @ =Task_ReturnToChooseMonAfterText
|
|
str r1, [r0]
|
|
_08124142:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124148: .4byte gStringVar4
|
|
_0812414C: .4byte gTasks
|
|
_08124150: .4byte Task_ReturnToChooseMonAfterText
|
|
thumb_func_end CursorCB_SendMon
|
|
|
|
thumb_func_start CursorCB_Enter
|
|
CursorCB_Enter: @ 8124154
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _0812417C @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xC0
|
|
ands r0, r1
|
|
cmp r0, 0x80
|
|
bne _08124184
|
|
movs r0, 0x2
|
|
mov r8, r0
|
|
ldr r1, _08124180 @ =gUnknown_8416B3E
|
|
str r1, [sp]
|
|
b _0812418C
|
|
.align 2, 0
|
|
_0812417C: .4byte gPartyMenu
|
|
_08124180: .4byte gUnknown_8416B3E
|
|
_08124184:
|
|
movs r2, 0x3
|
|
mov r8, r2
|
|
ldr r0, _081241FC @ =gUnknown_8416B16
|
|
str r0, [sp]
|
|
_0812418C:
|
|
ldr r4, _08124200 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
movs r5, 0
|
|
lsls r1, r7, 2
|
|
mov r9, r1
|
|
cmp r5, r8
|
|
bcs _08124222
|
|
ldr r6, _08124204 @ =gPartyMenu
|
|
ldr r1, _08124208 @ =gTasks
|
|
mov r2, r9
|
|
adds r0, r2, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
mov r10, r0
|
|
_081241B6:
|
|
ldr r0, _0812420C @ =gSelectedOrderFromParty
|
|
adds r4, r5, r0
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _08124218
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldrb r0, [r6, 0x9]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
adds r0, r5, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _08124210 @ =sPartyMenuBoxes
|
|
movs r2, 0x9
|
|
ldrsb r2, [r6, r2]
|
|
lsls r2, 4
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonDescriptionText
|
|
mov r0, r8
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
bne _081241F0
|
|
bl MoveCursorToConfirm
|
|
_081241F0:
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _08124214 @ =Task_HandleChooseMonInput
|
|
mov r1, r10
|
|
b _0812423C
|
|
.align 2, 0
|
|
_081241FC: .4byte gUnknown_8416B16
|
|
_08124200: .4byte sPartyMenuInternal
|
|
_08124204: .4byte gPartyMenu
|
|
_08124208: .4byte gTasks
|
|
_0812420C: .4byte gSelectedOrderFromParty
|
|
_08124210: .4byte sPartyMenuBoxes
|
|
_08124214: .4byte Task_HandleChooseMonInput
|
|
_08124218:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, r8
|
|
bcc _081241B6
|
|
_08124222:
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
ldr r0, [sp]
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r0, _08124250 @ =gTasks
|
|
mov r2, r9
|
|
adds r1, r2, r7
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08124254 @ =Task_ReturnToChooseMonAfterText
|
|
_0812423C:
|
|
str r0, [r1]
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124250: .4byte gTasks
|
|
_08124254: .4byte Task_ReturnToChooseMonAfterText
|
|
thumb_func_end CursorCB_Enter
|
|
|
|
thumb_func_start MoveCursorToConfirm
|
|
MoveCursorToConfirm: @ 8124258
|
|
push {r4,lr}
|
|
ldr r4, _08124274 @ =gPartyMenu
|
|
ldrb r0, [r4, 0x9]
|
|
movs r1, 0
|
|
bl AnimatePartySlot
|
|
movs r0, 0x6
|
|
strb r0, [r4, 0x9]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124274: .4byte gPartyMenu
|
|
thumb_func_end MoveCursorToConfirm
|
|
|
|
thumb_func_start CursorCB_NoEntry
|
|
CursorCB_NoEntry: @ 8124278
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, _081242BC @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
movs r4, 0
|
|
ldr r3, _081242C0 @ =gSelectedOrderFromParty
|
|
ldr r6, _081242C4 @ =gPartyMenu
|
|
adds r5, r6, 0
|
|
_0812429E:
|
|
adds r2, r4, r3
|
|
ldrb r1, [r2]
|
|
movs r0, 0x9
|
|
ldrsb r0, [r5, r0]
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
bne _081242DC
|
|
movs r1, 0
|
|
strb r1, [r2]
|
|
cmp r4, 0
|
|
beq _081242C8
|
|
cmp r4, 0x1
|
|
beq _081242D4
|
|
b _081242E6
|
|
.align 2, 0
|
|
_081242BC: .4byte sPartyMenuInternal
|
|
_081242C0: .4byte gSelectedOrderFromParty
|
|
_081242C4: .4byte gPartyMenu
|
|
_081242C8:
|
|
ldrb r0, [r3, 0x1]
|
|
strb r0, [r3]
|
|
ldrb r0, [r3, 0x2]
|
|
strb r0, [r3, 0x1]
|
|
strb r4, [r3, 0x2]
|
|
b _081242E6
|
|
_081242D4:
|
|
ldrb r0, [r3, 0x2]
|
|
strb r0, [r3, 0x1]
|
|
strb r1, [r3, 0x2]
|
|
b _081242E6
|
|
_081242DC:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x2
|
|
bls _0812429E
|
|
_081242E6:
|
|
ldr r5, _08124344 @ =sPartyMenuBoxes
|
|
movs r0, 0x9
|
|
ldrsb r0, [r6, r0]
|
|
lsls r0, 4
|
|
ldr r1, [r5]
|
|
adds r1, r0
|
|
movs r0, 0x1
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonDescriptionText
|
|
ldr r4, _08124348 @ =gSelectedOrderFromParty
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
beq _08124312
|
|
lsls r0, 4
|
|
subs r0, 0x10
|
|
ldr r1, [r5]
|
|
adds r1, r0
|
|
movs r0, 0x2
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonDescriptionText
|
|
_08124312:
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0
|
|
beq _08124328
|
|
lsls r0, 4
|
|
subs r0, 0x10
|
|
ldr r1, [r5]
|
|
adds r1, r0
|
|
movs r0, 0x3
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonDescriptionText
|
|
_08124328:
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _0812434C @ =gTasks
|
|
lsls r1, r7, 2
|
|
adds r1, r7
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08124350 @ =Task_HandleChooseMonInput
|
|
str r0, [r1]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124344: .4byte sPartyMenuBoxes
|
|
_08124348: .4byte gSelectedOrderFromParty
|
|
_0812434C: .4byte gTasks
|
|
_08124350: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end CursorCB_NoEntry
|
|
|
|
thumb_func_start CursorCB_Store
|
|
CursorCB_Store: @ 8124354
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r1, _0812437C @ =gSpecialVar_0x8004
|
|
ldr r0, _08124380 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r1]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812437C: .4byte gSpecialVar_0x8004
|
|
_08124380: .4byte gPartyMenu
|
|
thumb_func_end CursorCB_Store
|
|
|
|
thumb_func_start CursorCB_Register
|
|
CursorCB_Register: @ 8124384
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08124410 @ =gPartyMenu
|
|
mov r9, r0
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r1, 0x64
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r4, _08124414 @ =gPlayerParty
|
|
adds r0, r4
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
adds r6, r0, 0
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
mov r1, r9
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r4
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
mov r1, r9
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r4
|
|
movs r1, 0x50
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl sub_80F9800
|
|
ldr r0, [r0]
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl Trade_CanTradeSelectedMon
|
|
cmp r0, 0x1
|
|
beq _08124418
|
|
cmp r0, 0x2
|
|
beq _0812442C
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r7, 0
|
|
bl Task_ClosePartyMenu
|
|
b _0812446C
|
|
.align 2, 0
|
|
_08124410: .4byte gPartyMenu
|
|
_08124414: .4byte gPlayerParty
|
|
_08124418:
|
|
ldr r0, _08124424 @ =gStringVar4
|
|
ldr r1, _08124428 @ =gText_PkmnCantBeTradedNow
|
|
bl StringExpandPlaceholders
|
|
b _08124434
|
|
.align 2, 0
|
|
_08124424: .4byte gStringVar4
|
|
_08124428: .4byte gText_PkmnCantBeTradedNow
|
|
_0812442C:
|
|
ldr r0, _08124478 @ =gStringVar4
|
|
ldr r1, _0812447C @ =gText_EggCantBeTradedNow
|
|
bl StringExpandPlaceholders
|
|
_08124434:
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
ldr r4, _08124480 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r4, _08124478 @ =gStringVar4
|
|
ldr r1, _08124484 @ =gText_PauseUntilPress
|
|
adds r0, r4, 0
|
|
bl StringAppend
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08124488 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _0812448C @ =Task_ReturnToChooseMonAfterText
|
|
str r1, [r0]
|
|
_0812446C:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124478: .4byte gStringVar4
|
|
_0812447C: .4byte gText_EggCantBeTradedNow
|
|
_08124480: .4byte sPartyMenuInternal
|
|
_08124484: .4byte gText_PauseUntilPress
|
|
_08124488: .4byte gTasks
|
|
_0812448C: .4byte Task_ReturnToChooseMonAfterText
|
|
thumb_func_end CursorCB_Register
|
|
|
|
thumb_func_start CursorCB_Trade1
|
|
CursorCB_Trade1: @ 8124490
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08124558 @ =gPartyMenu
|
|
mov r8, r0
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r4, _0812455C @ =gPlayerParty
|
|
adds r0, r4
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
mov r9, r0
|
|
mov r1, r9
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
mov r9, r1
|
|
mov r1, r8
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
muls r0, r6
|
|
adds r0, r4
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
mov r1, r8
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
muls r0, r6
|
|
adds r0, r4
|
|
movs r1, 0x50
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl sub_80F9800
|
|
ldr r0, [r0]
|
|
ldr r1, _08124560 @ =gUnknown_203B064
|
|
ldr r1, [r1]
|
|
ldr r2, _08124564 @ =gUnionRoomOfferedSpecies
|
|
ldrh r3, [r2]
|
|
ldr r2, _08124568 @ =gUnionRoomRequestedMonType
|
|
ldrb r2, [r2]
|
|
str r2, [sp]
|
|
str r5, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
mov r2, r9
|
|
bl GetUnionRoomTradeMessageId
|
|
cmp r0, 0
|
|
beq _08124584
|
|
ldr r5, _0812456C @ =gStringVar4
|
|
ldr r1, _08124570 @ =sUnionRoomTradeMessages
|
|
subs r0, 0x1
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r5, 0
|
|
bl StringExpandPlaceholders
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
ldr r4, _08124574 @ =sPartyMenuInternal
|
|
ldr r0, [r4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r4]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
ldr r1, _08124578 @ =gText_PauseUntilPress
|
|
adds r0, r5, 0
|
|
bl StringAppend
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _0812457C @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08124580 @ =Task_ReturnToChooseMonAfterText
|
|
str r1, [r0]
|
|
b _08124590
|
|
.align 2, 0
|
|
_08124558: .4byte gPartyMenu
|
|
_0812455C: .4byte gPlayerParty
|
|
_08124560: .4byte gUnknown_203B064
|
|
_08124564: .4byte gUnionRoomOfferedSpecies
|
|
_08124568: .4byte gUnionRoomRequestedMonType
|
|
_0812456C: .4byte gStringVar4
|
|
_08124570: .4byte sUnionRoomTradeMessages
|
|
_08124574: .4byte sPartyMenuInternal
|
|
_08124578: .4byte gText_PauseUntilPress
|
|
_0812457C: .4byte gTasks
|
|
_08124580: .4byte Task_ReturnToChooseMonAfterText
|
|
_08124584:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r7, 0
|
|
bl Task_ClosePartyMenu
|
|
_08124590:
|
|
add sp, 0xC
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CursorCB_Trade1
|
|
|
|
thumb_func_start CursorCB_Trade2
|
|
CursorCB_Trade2: @ 81245A0
|
|
bx lr
|
|
thumb_func_end CursorCB_Trade2
|
|
|
|
thumb_func_start CursorCB_FieldMove
|
|
CursorCB_FieldMove: @ 81245A4
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
bl Menu_GetCursorPos
|
|
ldr r5, _08124610 @ =sPartyMenuInternal
|
|
ldr r1, [r5]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, 0xF
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
subs r0, 0x12
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r1, _08124614 @ =sFieldMoveCursorCallbacks
|
|
lsls r0, r4, 3
|
|
adds r7, r0, r1
|
|
ldr r0, [r7]
|
|
cmp r0, 0
|
|
bne _081245D6
|
|
b _081247B4
|
|
_081245D6:
|
|
ldr r0, [r5]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
ldr r0, [r5]
|
|
adds r0, 0xD
|
|
bl PartyMenuRemoveWindow
|
|
bl MenuHelpers_LinkSomething
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _081245FA
|
|
bl InUnionRoom
|
|
cmp r0, 0x1
|
|
bne _0812461C
|
|
_081245FA:
|
|
adds r0, r4, 0
|
|
subs r0, 0x9
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _08124618
|
|
movs r0, 0xD
|
|
bl DisplayPartyMenuStdMessage
|
|
b _081247A6
|
|
.align 2, 0
|
|
_08124610: .4byte sPartyMenuInternal
|
|
_08124614: .4byte sFieldMoveCursorCallbacks
|
|
_08124618:
|
|
ldrb r0, [r7, 0x4]
|
|
b _081247A2
|
|
_0812461C:
|
|
cmp r4, 0x6
|
|
bhi _08124658
|
|
movs r1, 0x82
|
|
lsls r1, 4
|
|
adds r0, r4, r1
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08124658
|
|
ldr r0, _0812464C @ =gText_CantUseUntilNewBadge
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08124650 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08124654 @ =Task_ReturnToChooseMonAfterText
|
|
str r1, [r0]
|
|
b _081247B4
|
|
.align 2, 0
|
|
_0812464C: .4byte gText_CantUseUntilNewBadge
|
|
_08124650: .4byte gTasks
|
|
_08124654: .4byte Task_ReturnToChooseMonAfterText
|
|
_08124658:
|
|
ldr r1, _08124680 @ =sFieldMoveCursorCallbacks
|
|
lsls r0, r4, 3
|
|
adds r5, r0, r1
|
|
ldr r0, [r5]
|
|
bl _call_via_r0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0812466E
|
|
b _0812478C
|
|
_0812466E:
|
|
subs r0, r4, 0x2
|
|
cmp r0, 0x8
|
|
bhi _0812475C
|
|
lsls r0, 2
|
|
ldr r1, _08124684 @ =_08124688
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08124680: .4byte sFieldMoveCursorCallbacks
|
|
_08124684: .4byte _08124688
|
|
.align 2, 0
|
|
_08124688:
|
|
.4byte _0812474C
|
|
.4byte _0812475C
|
|
.4byte _0812475C
|
|
.4byte _0812475C
|
|
.4byte _0812475C
|
|
.4byte _081246B4
|
|
.4byte _081246F0
|
|
.4byte _081246AC
|
|
.4byte _081246AC
|
|
_081246AC:
|
|
adds r0, r6, 0
|
|
bl ChooseMonForSoftboiled
|
|
b _081247B4
|
|
_081246B4:
|
|
ldr r0, _081246E0 @ =gSaveBlock1Ptr
|
|
ldr r1, [r0]
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r1, r0]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldrb r1, [r1, 0x1D]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
bl Overworld_GetMapHeaderByGroupAndId
|
|
adds r1, r0, 0
|
|
ldr r0, _081246E4 @ =gStringVar1
|
|
ldrb r1, [r1, 0x14]
|
|
bl GetMapNameGeneric
|
|
ldr r0, _081246E8 @ =gStringVar4
|
|
ldr r1, _081246EC @ =gUnknown_8417640
|
|
b _08124720
|
|
.align 2, 0
|
|
_081246E0: .4byte gSaveBlock1Ptr
|
|
_081246E4: .4byte gStringVar1
|
|
_081246E8: .4byte gStringVar4
|
|
_081246EC: .4byte gUnknown_8417640
|
|
_081246F0:
|
|
ldr r0, _08124738 @ =gSaveBlock1Ptr
|
|
ldr r1, [r0]
|
|
adds r0, r1, 0
|
|
adds r0, 0x24
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, 0x25
|
|
ldrb r1, [r1]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
bl Overworld_GetMapHeaderByGroupAndId
|
|
adds r1, r0, 0
|
|
ldr r0, _0812473C @ =gStringVar1
|
|
ldrb r1, [r1, 0x14]
|
|
bl GetMapNameGeneric
|
|
ldr r0, _08124740 @ =gStringVar4
|
|
ldr r1, _08124744 @ =gUnknown_8417615
|
|
_08124720:
|
|
bl StringExpandPlaceholders
|
|
adds r0, r6, 0
|
|
bl DisplayFieldMoveExitAreaMessage
|
|
ldr r0, _08124748 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
movs r1, 0x86
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
strh r4, [r0]
|
|
b _081247B4
|
|
.align 2, 0
|
|
_08124738: .4byte gSaveBlock1Ptr
|
|
_0812473C: .4byte gStringVar1
|
|
_08124740: .4byte gStringVar4
|
|
_08124744: .4byte gUnknown_8417615
|
|
_08124748: .4byte sPartyMenuInternal
|
|
_0812474C:
|
|
ldr r1, _08124754 @ =gPartyMenu
|
|
ldr r0, _08124758 @ =sub_80C4EF8
|
|
str r0, [r1]
|
|
b _08124778
|
|
.align 2, 0
|
|
_08124754: .4byte gPartyMenu
|
|
_08124758: .4byte sub_80C4EF8
|
|
_0812475C:
|
|
ldr r1, _08124780 @ =gPartyMenu
|
|
ldr r0, _08124784 @ =CB2_ReturnToField
|
|
str r0, [r1]
|
|
bl GetCursorSelectionMonId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08124788 @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
bl sub_8124BB0
|
|
_08124778:
|
|
adds r0, r6, 0
|
|
bl Task_ClosePartyMenu
|
|
b _081247B4
|
|
.align 2, 0
|
|
_08124780: .4byte gPartyMenu
|
|
_08124784: .4byte CB2_ReturnToField
|
|
_08124788: .4byte gPlayerParty
|
|
_0812478C:
|
|
cmp r4, 0
|
|
beq _0812479A
|
|
cmp r4, 0x4
|
|
bne _081247A0
|
|
bl DisplayCantUseSurfMessage
|
|
b _081247A6
|
|
_0812479A:
|
|
bl DisplayCantUseFlashMessage
|
|
b _081247A6
|
|
_081247A0:
|
|
ldrb r0, [r5, 0x4]
|
|
_081247A2:
|
|
bl DisplayPartyMenuStdMessage
|
|
_081247A6:
|
|
ldr r0, _081247BC @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _081247C0 @ =Task_CancelAfterAorBPress
|
|
str r0, [r1]
|
|
_081247B4:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081247BC: .4byte gTasks
|
|
_081247C0: .4byte Task_CancelAfterAorBPress
|
|
thumb_func_end CursorCB_FieldMove
|
|
|
|
thumb_func_start DisplayFieldMoveExitAreaMessage
|
|
DisplayFieldMoveExitAreaMessage: @ 81247C4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _081247E8 @ =gStringVar4
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _081247EC @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _081247F0 @ =Task_FieldMoveExitAreaYesNo
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081247E8: .4byte gStringVar4
|
|
_081247EC: .4byte gTasks
|
|
_081247F0: .4byte Task_FieldMoveExitAreaYesNo
|
|
thumb_func_end DisplayFieldMoveExitAreaMessage
|
|
|
|
thumb_func_start Task_FieldMoveExitAreaYesNo
|
|
Task_FieldMoveExitAreaYesNo: @ 81247F4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08124818
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08124820 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08124824 @ =Task_HandleFieldMoveExitAreaYesNoInput
|
|
str r0, [r1]
|
|
_08124818:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124820: .4byte gTasks
|
|
_08124824: .4byte Task_HandleFieldMoveExitAreaYesNoInput
|
|
thumb_func_end Task_FieldMoveExitAreaYesNo
|
|
|
|
thumb_func_start Task_HandleFieldMoveExitAreaYesNoInput
|
|
Task_HandleFieldMoveExitAreaYesNoInput: @ 8124828
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _0812484E
|
|
cmp r1, 0
|
|
bgt _08124848
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0812488C
|
|
b _081248A2
|
|
_08124848:
|
|
cmp r1, 0x1
|
|
beq _08124892
|
|
b _081248A2
|
|
_0812484E:
|
|
ldr r1, _0812487C @ =gPartyMenu
|
|
ldr r0, _08124880 @ =CB2_ReturnToField
|
|
str r0, [r1]
|
|
bl GetCursorSelectionMonId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08124884 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08124888 @ =sPartyMenuInternal
|
|
ldr r1, [r1]
|
|
movs r2, 0x86
|
|
lsls r2, 2
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
bl sub_8124BB0
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
b _081248A2
|
|
.align 2, 0
|
|
_0812487C: .4byte gPartyMenu
|
|
_08124880: .4byte CB2_ReturnToField
|
|
_08124884: .4byte gPlayerParty
|
|
_08124888: .4byte sPartyMenuInternal
|
|
_0812488C:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_08124892:
|
|
ldr r0, _081248A8 @ =gFieldCallback2
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
ldr r0, _081248AC @ =gPostMenuFieldCallback
|
|
str r1, [r0]
|
|
adds r0, r4, 0
|
|
bl Task_ReturnToChooseMonAfterText
|
|
_081248A2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081248A8: .4byte gFieldCallback2
|
|
_081248AC: .4byte gPostMenuFieldCallback
|
|
thumb_func_end Task_HandleFieldMoveExitAreaYesNoInput
|
|
|
|
thumb_func_start FieldCallback_PrepareFadeInFromMenu
|
|
FieldCallback_PrepareFadeInFromMenu: @ 81248B0
|
|
push {lr}
|
|
bl sub_807DC00
|
|
ldr r0, _081248C4 @ =Task_FieldMoveWaitForFade
|
|
movs r1, 0x8
|
|
bl CreateTask
|
|
movs r0, 0x1
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_081248C4: .4byte Task_FieldMoveWaitForFade
|
|
thumb_func_end FieldCallback_PrepareFadeInFromMenu
|
|
|
|
thumb_func_start Task_FieldMoveWaitForFade
|
|
Task_FieldMoveWaitForFade: @ 81248C8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsWeatherNotFadingIn
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _081248F4
|
|
bl GetFieldMoveMonSpecies
|
|
ldr r1, _081248FC @ =gFieldEffectArguments
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [r1]
|
|
ldr r0, _08124900 @ =gPostMenuFieldCallback
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_081248F4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081248FC: .4byte gFieldEffectArguments
|
|
_08124900: .4byte gPostMenuFieldCallback
|
|
thumb_func_end Task_FieldMoveWaitForFade
|
|
|
|
thumb_func_start GetFieldMoveMonSpecies
|
|
GetFieldMoveMonSpecies: @ 8124904
|
|
push {lr}
|
|
ldr r0, _08124924 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08124928 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08124924: .4byte gPartyMenu
|
|
_08124928: .4byte gPlayerParty
|
|
thumb_func_end GetFieldMoveMonSpecies
|
|
|
|
thumb_func_start Task_CancelAfterAorBPress
|
|
Task_CancelAfterAorBPress: @ 812492C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _08124950 @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08124946
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0812494C
|
|
_08124946:
|
|
adds r0, r2, 0
|
|
bl CursorCB_Cancel1
|
|
_0812494C:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124950: .4byte gMain
|
|
thumb_func_end Task_CancelAfterAorBPress
|
|
|
|
thumb_func_start DisplayCantUseFlashMessage
|
|
DisplayCantUseFlashMessage: @ 8124954
|
|
push {lr}
|
|
ldr r0, _0812496C @ =0x00000806
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124970
|
|
movs r0, 0xC
|
|
bl DisplayPartyMenuStdMessage
|
|
b _08124976
|
|
.align 2, 0
|
|
_0812496C: .4byte 0x00000806
|
|
_08124970:
|
|
movs r0, 0xD
|
|
bl DisplayPartyMenuStdMessage
|
|
_08124976:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayCantUseFlashMessage
|
|
|
|
thumb_func_start FieldCallback_Surf
|
|
FieldCallback_Surf: @ 812497C
|
|
push {lr}
|
|
bl GetCursorSelectionMonId
|
|
ldr r1, _08124994 @ =gFieldEffectArguments
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [r1]
|
|
movs r0, 0x9
|
|
bl FieldEffectStart
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124994: .4byte gFieldEffectArguments
|
|
thumb_func_end FieldCallback_Surf
|
|
|
|
thumb_func_start SetUpFieldMove_Surf
|
|
SetUpFieldMove_Surf: @ 8124998
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl MetatileBehavior_IsSemiDeepWater
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08124A00
|
|
bl PartyHasMonWithSurf
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124A00
|
|
bl IsPlayerFacingSurfableFishableWater
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124A00
|
|
ldr r1, _081249F0 @ =gFieldCallback2
|
|
ldr r0, _081249F4 @ =FieldCallback_PrepareFadeInFromMenu
|
|
str r0, [r1]
|
|
ldr r1, _081249F8 @ =gPostMenuFieldCallback
|
|
ldr r0, _081249FC @ =FieldCallback_Surf
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
b _08124A02
|
|
.align 2, 0
|
|
_081249F0: .4byte gFieldCallback2
|
|
_081249F4: .4byte FieldCallback_PrepareFadeInFromMenu
|
|
_081249F8: .4byte gPostMenuFieldCallback
|
|
_081249FC: .4byte FieldCallback_Surf
|
|
_08124A00:
|
|
movs r0, 0
|
|
_08124A02:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end SetUpFieldMove_Surf
|
|
|
|
thumb_func_start DisplayCantUseSurfMessage
|
|
DisplayCantUseSurfMessage: @ 8124A0C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
movs r0, 0x8
|
|
bl TestPlayerAvatarFlags
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08124A24
|
|
movs r0, 0x9
|
|
bl DisplayPartyMenuStdMessage
|
|
b _08124A82
|
|
_08124A24:
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl MetatileBehavior_IsSemiDeepWater
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124A56
|
|
movs r0, 0xA
|
|
bl DisplayPartyMenuStdMessage
|
|
b _08124A82
|
|
_08124A56:
|
|
ldr r0, _08124A78 @ =gSaveBlock1Ptr
|
|
ldr r1, [r0]
|
|
movs r0, 0x4
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x3
|
|
bne _08124A7C
|
|
ldrb r0, [r1, 0x5]
|
|
subs r0, 0x23
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _08124A7C
|
|
movs r0, 0xB
|
|
bl DisplayPartyMenuStdMessage
|
|
b _08124A82
|
|
.align 2, 0
|
|
_08124A78: .4byte gSaveBlock1Ptr
|
|
_08124A7C:
|
|
movs r0, 0x8
|
|
bl DisplayPartyMenuStdMessage
|
|
_08124A82:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DisplayCantUseSurfMessage
|
|
|
|
thumb_func_start SetUpFieldMove_Fly
|
|
SetUpFieldMove_Fly: @ 8124A8C
|
|
push {lr}
|
|
ldr r0, _08124AA4 @ =gMapHeader
|
|
ldrb r0, [r0, 0x17]
|
|
bl Overworld_MapTypeAllowsTeleportAndFly
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08124AA8
|
|
movs r0, 0
|
|
b _08124AAA
|
|
.align 2, 0
|
|
_08124AA4: .4byte gMapHeader
|
|
_08124AA8:
|
|
movs r0, 0x1
|
|
_08124AAA:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end SetUpFieldMove_Fly
|
|
|
|
thumb_func_start CB2_ReturnToPartyMenuFromFlyMap
|
|
CB2_ReturnToPartyMenuFromFlyMap: @ 8124AB0
|
|
push {lr}
|
|
sub sp, 0xC
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r0, _08124AD4 @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08124AD8 @ =CB2_ReturnToStartMenu
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124AD4: .4byte Task_HandleChooseMonInput
|
|
_08124AD8: .4byte CB2_ReturnToStartMenu
|
|
thumb_func_end CB2_ReturnToPartyMenuFromFlyMap
|
|
|
|
thumb_func_start FieldCallback_Waterfall
|
|
FieldCallback_Waterfall: @ 8124ADC
|
|
push {lr}
|
|
bl GetCursorSelectionMonId
|
|
ldr r1, _08124AF4 @ =gFieldEffectArguments
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [r1]
|
|
movs r0, 0x2B
|
|
bl FieldEffectStart
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124AF4: .4byte gFieldEffectArguments
|
|
thumb_func_end FieldCallback_Waterfall
|
|
|
|
thumb_func_start SetUpFieldMove_Waterfall
|
|
SetUpFieldMove_Waterfall: @ 8124AF8
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r2, 0
|
|
ldrsh r1, [r4, r2]
|
|
bl MapGridGetMetatileBehaviorAt
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl MetatileBehavior_IsWaterfall
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124B54
|
|
bl IsPlayerSurfingNorth
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124B54
|
|
ldr r1, _08124B44 @ =gFieldCallback2
|
|
ldr r0, _08124B48 @ =FieldCallback_PrepareFadeInFromMenu
|
|
str r0, [r1]
|
|
ldr r1, _08124B4C @ =gPostMenuFieldCallback
|
|
ldr r0, _08124B50 @ =FieldCallback_Waterfall
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
b _08124B56
|
|
.align 2, 0
|
|
_08124B44: .4byte gFieldCallback2
|
|
_08124B48: .4byte FieldCallback_PrepareFadeInFromMenu
|
|
_08124B4C: .4byte gPostMenuFieldCallback
|
|
_08124B50: .4byte FieldCallback_Waterfall
|
|
_08124B54:
|
|
movs r0, 0
|
|
_08124B56:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end SetUpFieldMove_Waterfall
|
|
|
|
thumb_func_start sub_8124B60
|
|
sub_8124B60: @ 8124B60
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
adds r4, r1, 0
|
|
adds r5, r2, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
movs r0, 0x8
|
|
bl Alloc
|
|
adds r7, r0, 0
|
|
adds r0, r6, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
strh r0, [r7, 0x4]
|
|
strh r4, [r7]
|
|
strh r5, [r7, 0x2]
|
|
ldr r0, _08124B98 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x6
|
|
bne _08124B9C
|
|
movs r0, 0xA
|
|
adds r1, r7, 0
|
|
bl sub_8113550
|
|
b _08124BA4
|
|
.align 2, 0
|
|
_08124B98: .4byte gPartyMenu
|
|
_08124B9C:
|
|
movs r0, 0x9
|
|
adds r1, r7, 0
|
|
bl sub_8113550
|
|
_08124BA4:
|
|
adds r0, r7, 0
|
|
bl Free
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8124B60
|
|
|
|
thumb_func_start sub_8124BB0
|
|
sub_8124BB0: @ 8124BB0
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
lsls r4, r1, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x4
|
|
bl Alloc
|
|
adds r6, r0, 0
|
|
adds r0, r5, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
strh r0, [r6]
|
|
strb r4, [r6, 0x2]
|
|
ldrb r0, [r6, 0x2]
|
|
cmp r0, 0x7
|
|
beq _08124BDA
|
|
cmp r0, 0x8
|
|
beq _08124BFC
|
|
movs r0, 0xFF
|
|
b _08124C00
|
|
_08124BDA:
|
|
ldr r0, _08124BF8 @ =gSaveBlock1Ptr
|
|
ldr r1, [r0]
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r1, r0]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldrb r1, [r1, 0x1D]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
bl Overworld_GetMapHeaderByGroupAndId
|
|
b _08124BFE
|
|
.align 2, 0
|
|
_08124BF8: .4byte gSaveBlock1Ptr
|
|
_08124BFC:
|
|
ldr r0, _08124C18 @ =gMapHeader
|
|
_08124BFE:
|
|
ldrb r0, [r0, 0x14]
|
|
_08124C00:
|
|
strb r0, [r6, 0x3]
|
|
movs r0, 0x24
|
|
adds r1, r6, 0
|
|
bl sub_8113550
|
|
adds r0, r6, 0
|
|
bl Free
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124C18: .4byte gMapHeader
|
|
thumb_func_end sub_8124BB0
|
|
|
|
thumb_func_start sub_8124C1C
|
|
sub_8124C1C: @ 8124C1C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r0, 0x8
|
|
bl Alloc
|
|
adds r4, r0, 0
|
|
ldrb r0, [r5]
|
|
strb r0, [r4]
|
|
ldrb r0, [r5, 0x1]
|
|
strb r0, [r4, 0x1]
|
|
movs r0, 0
|
|
ldrsb r0, [r4, r0]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x1
|
|
ldrsb r1, [r4, r1]
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
bl Overworld_GetMapHeaderByGroupAndId
|
|
adds r5, r0, 0
|
|
adds r0, r4, 0
|
|
bl Free
|
|
movs r0, 0x4
|
|
bl Alloc
|
|
adds r4, r0, 0
|
|
bl GetCursorSelectionMonId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08124C88 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
strh r0, [r4]
|
|
movs r0, 0x2
|
|
strb r0, [r4, 0x2]
|
|
ldrb r0, [r5, 0x14]
|
|
strb r0, [r4, 0x3]
|
|
movs r0, 0x24
|
|
adds r1, r4, 0
|
|
bl sub_8113550
|
|
adds r0, r4, 0
|
|
bl Free
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124C88: .4byte gPlayerParty
|
|
thumb_func_end sub_8124C1C
|
|
|
|
thumb_func_start CB2_ShowPartyMenuForItemUse
|
|
CB2_ShowPartyMenuForItemUse: @ 8124C8C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
ldr r6, _08124CB4 @ =CB2_ReturnToBagMenu
|
|
ldr r0, _08124CB8 @ =gMain
|
|
ldr r1, _08124CBC @ =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08124CCC
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
bl GetPartyLayoutFromBattleType
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
b _08124CD2
|
|
.align 2, 0
|
|
_08124CB4: .4byte CB2_ReturnToBagMenu
|
|
_08124CB8: .4byte gMain
|
|
_08124CBC: .4byte 0x00000439
|
|
_08124CC0:
|
|
ldr r0, _08124CC8 @ =gPartyMenu
|
|
strb r5, [r0, 0x9]
|
|
b _08124D16
|
|
.align 2, 0
|
|
_08124CC8: .4byte gPartyMenu
|
|
_08124CCC:
|
|
movs r1, 0
|
|
mov r8, r1
|
|
movs r7, 0
|
|
_08124CD2:
|
|
ldr r4, _08124D30 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r4]
|
|
bl GetItemEffectType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xA
|
|
bne _08124D44
|
|
ldr r1, _08124D34 @ =gPartyMenu
|
|
movs r0, 0
|
|
strb r0, [r1, 0x9]
|
|
movs r5, 0
|
|
_08124CEA:
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, _08124D38 @ =gPlayerParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08124D0C
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08124CC0
|
|
_08124D0C:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x5
|
|
bls _08124CEA
|
|
_08124D16:
|
|
ldr r0, _08124D30 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r0]
|
|
bl GetPocketByItemId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x5
|
|
bne _08124D28
|
|
ldr r6, _08124D3C @ =sub_8124DB0
|
|
_08124D28:
|
|
ldr r1, _08124D40 @ =Task_SetSacredAshCB
|
|
movs r0, 0x7F
|
|
b _08124D6A
|
|
.align 2, 0
|
|
_08124D30: .4byte gSpecialVar_ItemId
|
|
_08124D34: .4byte gPartyMenu
|
|
_08124D38: .4byte gPlayerParty
|
|
_08124D3C: .4byte sub_8124DB0
|
|
_08124D40: .4byte Task_SetSacredAshCB
|
|
_08124D44:
|
|
ldrh r0, [r4]
|
|
bl GetPocketByItemId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
beq _08124D5A
|
|
cmp r0, 0x5
|
|
beq _08124D64
|
|
movs r0, 0x5
|
|
b _08124D68
|
|
_08124D5A:
|
|
movs r0, 0x4
|
|
ldr r6, _08124D60 @ =sub_8124DA0
|
|
b _08124D68
|
|
.align 2, 0
|
|
_08124D60: .4byte sub_8124DA0
|
|
_08124D64:
|
|
movs r0, 0x5
|
|
ldr r6, _08124D88 @ =sub_8124DB0
|
|
_08124D68:
|
|
ldr r1, _08124D8C @ =Task_HandleChooseMonInput
|
|
_08124D6A:
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
str r6, [sp, 0x8]
|
|
mov r0, r8
|
|
adds r1, r7, 0
|
|
movs r2, 0x3
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124D88: .4byte sub_8124DB0
|
|
_08124D8C: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end CB2_ShowPartyMenuForItemUse
|
|
|
|
thumb_func_start CB2_ReturnToBagMenu
|
|
CB2_ReturnToBagMenu: @ 8124D90
|
|
push {lr}
|
|
movs r0, 0xB
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl GoToBagMenu
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CB2_ReturnToBagMenu
|
|
|
|
thumb_func_start sub_8124DA0
|
|
sub_8124DA0: @ 8124DA0
|
|
push {lr}
|
|
movs r0, 0x5
|
|
movs r1, 0
|
|
movs r2, 0xFF
|
|
bl InitTMCase
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8124DA0
|
|
|
|
thumb_func_start sub_8124DB0
|
|
sub_8124DB0: @ 8124DB0
|
|
push {lr}
|
|
movs r0, 0x6
|
|
movs r1, 0
|
|
movs r2, 0xFF
|
|
bl InitBerryPouch
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8124DB0
|
|
|
|
thumb_func_start sub_8124DC0
|
|
sub_8124DC0: @ 8124DC0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _08124DD8 @ =sPartyMenuInternal
|
|
ldr r2, [r1]
|
|
ldr r1, _08124DDC @ =sub_8124DE0
|
|
str r1, [r2, 0x4]
|
|
bl Task_ClosePartyMenu
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124DD8: .4byte sPartyMenuInternal
|
|
_08124DDC: .4byte sub_8124DE0
|
|
thumb_func_end sub_8124DC0
|
|
|
|
thumb_func_start sub_8124DE0
|
|
sub_8124DE0: @ 8124DE0
|
|
push {r4,lr}
|
|
ldr r4, _08124E0C @ =gSpecialVar_ItemId
|
|
ldrh r0, [r4]
|
|
bl GetItemCompatibilityRule
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _08124E2C
|
|
bl sub_8126C24
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08124E18
|
|
ldr r0, _08124E10 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x9]
|
|
ldrh r1, [r4]
|
|
ldr r2, _08124E14 @ =ItemUseCB_EvolutionStone
|
|
bl sub_811C540
|
|
b _08124E38
|
|
.align 2, 0
|
|
_08124E0C: .4byte gSpecialVar_ItemId
|
|
_08124E10: .4byte gPartyMenu
|
|
_08124E14: .4byte ItemUseCB_EvolutionStone
|
|
_08124E18:
|
|
ldr r2, _08124E28 @ =gPartyMenu
|
|
ldrb r0, [r2, 0x9]
|
|
ldrh r1, [r4]
|
|
ldr r2, [r2]
|
|
bl sub_811C5AC
|
|
b _08124E38
|
|
.align 2, 0
|
|
_08124E28: .4byte gPartyMenu
|
|
_08124E2C:
|
|
ldr r0, _08124E40 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x9]
|
|
ldrh r1, [r4]
|
|
ldr r2, _08124E44 @ =sub_8124E48
|
|
bl sub_811C540
|
|
_08124E38:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124E40: .4byte gPartyMenu
|
|
_08124E44: .4byte sub_8124E48
|
|
thumb_func_end sub_8124DE0
|
|
|
|
thumb_func_start sub_8124E48
|
|
sub_8124E48: @ 8124E48
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
ldr r7, _08124EBC @ =gSpecialVar_ItemId
|
|
ldrh r0, [r7]
|
|
bl ItemId_GetPocket
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
bne _08124EC8
|
|
bl sub_811D178
|
|
cmp r0, 0x1
|
|
bne _08124EC8
|
|
ldr r0, _08124EC0 @ =gPartyMenu
|
|
mov r8, r0
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r6, 0x64
|
|
adds r4, r0, 0
|
|
muls r4, r6
|
|
ldr r5, _08124EC4 @ =gPlayerParty
|
|
adds r4, r5
|
|
ldrh r0, [r7]
|
|
bl ItemIdToBattleMoveId
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl GiveMoveToMon
|
|
mov r1, r8
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0x4
|
|
bl AdjustFriendship
|
|
ldrh r1, [r7]
|
|
movs r0, 0xA9
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bhi _08124EB0
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
_08124EB0:
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
bl SetMainCallback2
|
|
b _08124EE6
|
|
.align 2, 0
|
|
_08124EBC: .4byte gSpecialVar_ItemId
|
|
_08124EC0: .4byte gPartyMenu
|
|
_08124EC4: .4byte gPlayerParty
|
|
_08124EC8:
|
|
ldr r2, _08124EF4 @ =gPartyMenu
|
|
ldrb r0, [r2, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r3, [r2, 0x9]
|
|
movs r1, 0x7F
|
|
str r1, [sp]
|
|
ldr r1, _08124EF8 @ =Task_SetSacredAshCB
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r2]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r2, 0
|
|
bl InitPartyMenu
|
|
_08124EE6:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124EF4: .4byte gPartyMenu
|
|
_08124EF8: .4byte Task_SetSacredAshCB
|
|
thumb_func_end sub_8124E48
|
|
|
|
thumb_func_start sub_8124EFC
|
|
sub_8124EFC: @ 8124EFC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
bl sub_811D178
|
|
cmp r0, 0x1
|
|
bne _08124F94
|
|
ldr r0, _08124F88 @ =gPartyMenu
|
|
mov r8, r0
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
adds r5, r1, 0
|
|
muls r5, r0
|
|
ldr r0, _08124F8C @ =gPlayerParty
|
|
adds r5, r0
|
|
bl GetMoveSlotToReplace
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r1, r4, 0
|
|
adds r1, 0xD
|
|
adds r0, r5, 0
|
|
bl GetMonData
|
|
adds r6, r0, 0
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl RemoveMonPPBonus
|
|
ldr r7, _08124F90 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r7]
|
|
bl ItemIdToBattleMoveId
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r5, 0
|
|
adds r2, r4, 0
|
|
bl SetMonMoveSlot
|
|
adds r0, r5, 0
|
|
movs r1, 0x4
|
|
bl AdjustFriendship
|
|
ldrh r2, [r7]
|
|
movs r0, 0x4
|
|
adds r1, r5, 0
|
|
adds r3, r6, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
ldrh r1, [r7]
|
|
movs r0, 0xA9
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bhi _08124F7C
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
_08124F7C:
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
bl SetMainCallback2
|
|
b _08124FB2
|
|
.align 2, 0
|
|
_08124F88: .4byte gPartyMenu
|
|
_08124F8C: .4byte gPlayerParty
|
|
_08124F90: .4byte gSpecialVar_ItemId
|
|
_08124F94:
|
|
ldr r4, _08124FC0 @ =gPartyMenu
|
|
ldrb r0, [r4, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r4, 0xB]
|
|
ldrb r3, [r4, 0x9]
|
|
movs r1, 0x7F
|
|
str r1, [sp]
|
|
ldr r1, _08124FC4 @ =Task_SetSacredAshCB
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r4]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
bl InitPartyMenu
|
|
_08124FB2:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08124FC0: .4byte gPartyMenu
|
|
_08124FC4: .4byte Task_SetSacredAshCB
|
|
thumb_func_end sub_8124EFC
|
|
|
|
thumb_func_start Task_SetSacredAshCB
|
|
Task_SetSacredAshCB: @ 8124FC8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r0, _08125000 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08124FFA
|
|
ldr r0, _08125004 @ =gPartyMenu
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _08124FEE
|
|
ldr r0, _08125008 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _0812500C @ =CB2_SetUpExitToBattleScreen
|
|
str r0, [r1, 0x4]
|
|
_08124FEE:
|
|
ldr r0, _08125010 @ =gItemUseCB
|
|
ldr r1, _08125014 @ =Task_ClosePartyMenuAfterText
|
|
ldr r2, [r0]
|
|
adds r0, r3, 0
|
|
bl _call_via_r2
|
|
_08124FFA:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125000: .4byte gPaletteFade
|
|
_08125004: .4byte gPartyMenu
|
|
_08125008: .4byte sPartyMenuInternal
|
|
_0812500C: .4byte CB2_SetUpExitToBattleScreen
|
|
_08125010: .4byte gItemUseCB
|
|
_08125014: .4byte Task_ClosePartyMenuAfterText
|
|
thumb_func_end Task_SetSacredAshCB
|
|
|
|
thumb_func_start IsHPRecoveryItem
|
|
IsHPRecoveryItem: @ 8125018
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xAF
|
|
bne _08125034
|
|
ldr r0, _0812502C @ =gSaveBlock1Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, _08125030 @ =0x00003108
|
|
adds r0, r1
|
|
b _0812503E
|
|
.align 2, 0
|
|
_0812502C: .4byte gSaveBlock1Ptr
|
|
_08125030: .4byte 0x00003108
|
|
_08125034:
|
|
ldr r1, _0812504C @ =gItemEffectTable
|
|
subs r0, 0xD
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
_0812503E:
|
|
ldrb r1, [r0, 0x4]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08125050
|
|
movs r0, 0
|
|
b _08125052
|
|
.align 2, 0
|
|
_0812504C: .4byte gItemEffectTable
|
|
_08125050:
|
|
movs r0, 0x1
|
|
_08125052:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsHPRecoveryItem
|
|
|
|
thumb_func_start GetMedicineItemEffectMessage
|
|
GetMedicineItemEffectMessage: @ 8125058
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl GetItemEffectType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, 0x3
|
|
cmp r0, 0x12
|
|
bls _0812506E
|
|
b _08125204
|
|
_0812506E:
|
|
lsls r0, 2
|
|
ldr r1, _08125078 @ =_0812507C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08125078: .4byte _0812507C
|
|
.align 2, 0
|
|
_0812507C:
|
|
.4byte _081250C8
|
|
.4byte _081250DC
|
|
.4byte _081250F0
|
|
.4byte _08125104
|
|
.4byte _08125118
|
|
.4byte _0812512C
|
|
.4byte _08125140
|
|
.4byte _08125204
|
|
.4byte _08125154
|
|
.4byte _08125178
|
|
.4byte _08125168
|
|
.4byte _081251A8
|
|
.4byte _081251B8
|
|
.4byte _08125198
|
|
.4byte _08125188
|
|
.4byte _08125204
|
|
.4byte _081251DC
|
|
.4byte _081251DC
|
|
.4byte _081251F0
|
|
_081250C8:
|
|
ldr r0, _081250D4 @ =gStringVar4
|
|
ldr r1, _081250D8 @ =gText_PkmnCuredOfPoison
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_081250D4: .4byte gStringVar4
|
|
_081250D8: .4byte gText_PkmnCuredOfPoison
|
|
_081250DC:
|
|
ldr r0, _081250E8 @ =gStringVar4
|
|
ldr r1, _081250EC @ =gText_PkmnWokeUp2
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_081250E8: .4byte gStringVar4
|
|
_081250EC: .4byte gText_PkmnWokeUp2
|
|
_081250F0:
|
|
ldr r0, _081250FC @ =gStringVar4
|
|
ldr r1, _08125100 @ =gText_PkmnBurnHealed
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_081250FC: .4byte gStringVar4
|
|
_08125100: .4byte gText_PkmnBurnHealed
|
|
_08125104:
|
|
ldr r0, _08125110 @ =gStringVar4
|
|
ldr r1, _08125114 @ =gText_PkmnThawedOut
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_08125110: .4byte gStringVar4
|
|
_08125114: .4byte gText_PkmnThawedOut
|
|
_08125118:
|
|
ldr r0, _08125124 @ =gStringVar4
|
|
ldr r1, _08125128 @ =gText_PkmnCuredOfParalysis
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_08125124: .4byte gStringVar4
|
|
_08125128: .4byte gText_PkmnCuredOfParalysis
|
|
_0812512C:
|
|
ldr r0, _08125138 @ =gStringVar4
|
|
ldr r1, _0812513C @ =gText_PkmnSnappedOutOfConfusion
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_08125138: .4byte gStringVar4
|
|
_0812513C: .4byte gText_PkmnSnappedOutOfConfusion
|
|
_08125140:
|
|
ldr r0, _0812514C @ =gStringVar4
|
|
ldr r1, _08125150 @ =gText_PkmnGotOverInfatuation
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_0812514C: .4byte gStringVar4
|
|
_08125150: .4byte gText_PkmnGotOverInfatuation
|
|
_08125154:
|
|
ldr r0, _08125160 @ =gStringVar4
|
|
ldr r1, _08125164 @ =gText_PkmnBecameHealthy
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_08125160: .4byte gStringVar4
|
|
_08125164: .4byte gText_PkmnBecameHealthy
|
|
_08125168:
|
|
ldr r0, _08125170 @ =gStringVar2
|
|
ldr r1, _08125174 @ =gText_HP3
|
|
b _081251BC
|
|
.align 2, 0
|
|
_08125170: .4byte gStringVar2
|
|
_08125174: .4byte gText_HP3
|
|
_08125178:
|
|
ldr r0, _08125180 @ =gStringVar2
|
|
ldr r1, _08125184 @ =gText_Attack3
|
|
b _081251BC
|
|
.align 2, 0
|
|
_08125180: .4byte gStringVar2
|
|
_08125184: .4byte gText_Attack3
|
|
_08125188:
|
|
ldr r0, _08125190 @ =gStringVar2
|
|
ldr r1, _08125194 @ =gText_Defense3
|
|
b _081251BC
|
|
.align 2, 0
|
|
_08125190: .4byte gStringVar2
|
|
_08125194: .4byte gText_Defense3
|
|
_08125198:
|
|
ldr r0, _081251A0 @ =gStringVar2
|
|
ldr r1, _081251A4 @ =gText_Speed2
|
|
b _081251BC
|
|
.align 2, 0
|
|
_081251A0: .4byte gStringVar2
|
|
_081251A4: .4byte gText_Speed2
|
|
_081251A8:
|
|
ldr r0, _081251B0 @ =gStringVar2
|
|
ldr r1, _081251B4 @ =gText_SpAtk3
|
|
b _081251BC
|
|
.align 2, 0
|
|
_081251B0: .4byte gStringVar2
|
|
_081251B4: .4byte gText_SpAtk3
|
|
_081251B8:
|
|
ldr r0, _081251CC @ =gStringVar2
|
|
ldr r1, _081251D0 @ =gText_SpDef3
|
|
_081251BC:
|
|
bl StringCopy
|
|
ldr r0, _081251D4 @ =gStringVar4
|
|
ldr r1, _081251D8 @ =gText_PkmnBaseVar2StatIncreased
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_081251CC: .4byte gStringVar2
|
|
_081251D0: .4byte gText_SpDef3
|
|
_081251D4: .4byte gStringVar4
|
|
_081251D8: .4byte gText_PkmnBaseVar2StatIncreased
|
|
_081251DC:
|
|
ldr r0, _081251E8 @ =gStringVar4
|
|
ldr r1, _081251EC @ =gText_MovesPPIncreased
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_081251E8: .4byte gStringVar4
|
|
_081251EC: .4byte gText_MovesPPIncreased
|
|
_081251F0:
|
|
ldr r0, _081251FC @ =gStringVar4
|
|
ldr r1, _08125200 @ =gText_PPWasRestored
|
|
bl StringExpandPlaceholders
|
|
b _0812520C
|
|
.align 2, 0
|
|
_081251FC: .4byte gStringVar4
|
|
_08125200: .4byte gText_PPWasRestored
|
|
_08125204:
|
|
ldr r0, _08125210 @ =gStringVar4
|
|
ldr r1, _08125214 @ =gText_WontHaveEffect
|
|
bl StringExpandPlaceholders
|
|
_0812520C:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125210: .4byte gStringVar4
|
|
_08125214: .4byte gText_WontHaveEffect
|
|
thumb_func_end GetMedicineItemEffectMessage
|
|
|
|
thumb_func_start NotUsingHPEVItemOnShedinja
|
|
NotUsingHPEVItemOnShedinja: @ 8125218
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r0, r1, 16
|
|
lsrs r0, 16
|
|
bl GetItemEffectType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xD
|
|
bne _08125244
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
ldr r1, _08125240 @ =0x0000012f
|
|
cmp r0, r1
|
|
bne _08125244
|
|
movs r0, 0
|
|
b _08125246
|
|
.align 2, 0
|
|
_08125240: .4byte 0x0000012f
|
|
_08125244:
|
|
movs r0, 0x1
|
|
_08125246:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end NotUsingHPEVItemOnShedinja
|
|
|
|
thumb_func_start IsItemFlute
|
|
IsItemFlute: @ 812524C
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x27
|
|
beq _0812525E
|
|
cmp r0, 0x29
|
|
beq _0812525E
|
|
cmp r0, 0x28
|
|
bne _08125262
|
|
_0812525E:
|
|
movs r0, 0x1
|
|
b _08125264
|
|
_08125262:
|
|
movs r0, 0
|
|
_08125264:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsItemFlute
|
|
|
|
thumb_func_start ExecuteTableBasedItemEffect_
|
|
ExecuteTableBasedItemEffect_: @ 8125268
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
ldr r0, _08125294 @ =gMain
|
|
ldr r1, _08125298 @ =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _081252A0
|
|
movs r0, 0x64
|
|
muls r0, r3
|
|
ldr r1, _0812529C @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r5, 0
|
|
adds r2, r3, 0
|
|
b _081252BA
|
|
.align 2, 0
|
|
_08125294: .4byte gMain
|
|
_08125298: .4byte 0x00000439
|
|
_0812529C: .4byte gPlayerParty
|
|
_081252A0:
|
|
movs r0, 0x64
|
|
adds r4, r3, 0
|
|
muls r4, r0
|
|
ldr r0, _081252CC @ =gPlayerParty
|
|
adds r4, r0
|
|
adds r0, r3, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
_081252BA:
|
|
adds r3, r6, 0
|
|
bl ExecuteTableBasedItemEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_081252CC: .4byte gPlayerParty
|
|
thumb_func_end ExecuteTableBasedItemEffect_
|
|
|
|
thumb_func_start sub_81252D0
|
|
sub_81252D0: @ 81252D0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
mov r8, r1
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08125300 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08125304 @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
ldr r0, _08125308 @ =gSpecialVar_ItemId
|
|
ldrh r6, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl NotUsingHPEVItemOnShedinja
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0812530C
|
|
movs r4, 0x1
|
|
b _08125342
|
|
.align 2, 0
|
|
_08125300: .4byte gPartyMenu
|
|
_08125304: .4byte gPlayerParty
|
|
_08125308: .4byte gSpecialVar_ItemId
|
|
_0812530C:
|
|
adds r0, r6, 0
|
|
bl IsHPRecoveryItem
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08125330
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
_08125330:
|
|
ldr r0, _08125370 @ =gPartyMenu
|
|
ldrb r2, [r0, 0x9]
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
movs r3, 0
|
|
bl PokemonUseItemEffects2
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
_08125342:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
cmp r4, 0
|
|
beq _08125380
|
|
ldr r1, _08125374 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, _08125378 @ =gText_WontHaveEffect
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _0812537C @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
mov r1, r8
|
|
str r1, [r0]
|
|
b _08125398
|
|
.align 2, 0
|
|
_08125370: .4byte gPartyMenu
|
|
_08125374: .4byte gPartyMenuUseExitCallback
|
|
_08125378: .4byte gText_WontHaveEffect
|
|
_0812537C: .4byte gTasks
|
|
_08125380:
|
|
ldr r3, _081253A4 @ =0x0000ffff
|
|
movs r0, 0x4
|
|
adds r1, r5, 0
|
|
adds r2, r6, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
adds r0, r7, 0
|
|
bl sub_8124DC0
|
|
ldr r1, _081253A8 @ =gItemUseCB
|
|
ldr r0, _081253AC @ =ItemUseCB_Medicine
|
|
str r0, [r1]
|
|
_08125398:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081253A4: .4byte 0x0000ffff
|
|
_081253A8: .4byte gItemUseCB
|
|
_081253AC: .4byte ItemUseCB_Medicine
|
|
thumb_func_end sub_81252D0
|
|
|
|
thumb_func_start ItemUseCB_Medicine
|
|
ItemUseCB_Medicine: @ 81253B0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
str r1, [sp, 0x4]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
movs r0, 0
|
|
mov r10, r0
|
|
ldr r0, _08125438 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _0812543C @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
ldr r0, _08125440 @ =gSpecialVar_ItemId
|
|
ldrh r6, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl NotUsingHPEVItemOnShedinja
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08125428
|
|
adds r0, r6, 0
|
|
bl IsHPRecoveryItem
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
cmp r0, 0x1
|
|
bne _08125416
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r10, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
cmp r10, r0
|
|
bne _08125416
|
|
movs r1, 0
|
|
mov r8, r1
|
|
_08125416:
|
|
ldr r4, _08125438 @ =gPartyMenu
|
|
ldrb r0, [r4, 0x9]
|
|
adds r1, r6, 0
|
|
movs r2, 0
|
|
bl ExecuteTableBasedItemEffect_
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0812544C
|
|
_08125428:
|
|
ldr r1, _08125444 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r0, _08125448 @ =gText_WontHaveEffect
|
|
b _0812551C
|
|
.align 2, 0
|
|
_08125438: .4byte gPartyMenu
|
|
_0812543C: .4byte gPlayerParty
|
|
_08125440: .4byte gSpecialVar_ItemId
|
|
_08125444: .4byte gPartyMenuUseExitCallback
|
|
_08125448: .4byte gText_WontHaveEffect
|
|
_0812544C:
|
|
ldr r1, _08125474 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
adds r0, r6, 0
|
|
bl IsItemFlute
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08125478
|
|
movs r0, 0x1
|
|
bl PlaySE
|
|
ldrb r0, [r4, 0xB]
|
|
cmp r0, 0xE
|
|
beq _0812547E
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
b _0812547E
|
|
.align 2, 0
|
|
_08125474: .4byte gPartyMenuUseExitCallback
|
|
_08125478:
|
|
movs r0, 0x6E
|
|
bl PlaySE
|
|
_0812547E:
|
|
ldr r4, _081254FC @ =sPartyMenuBoxes
|
|
ldr r7, _08125500 @ =gPartyMenu
|
|
movs r0, 0x9
|
|
ldrsb r0, [r7, r0]
|
|
lsls r0, 4
|
|
ldr r1, [r4]
|
|
adds r1, r0
|
|
adds r0, r5, 0
|
|
bl SetPartyMonAilmentGfx
|
|
ldr r2, _08125504 @ =gSprites
|
|
movs r0, 0x9
|
|
ldrsb r0, [r7, r0]
|
|
ldr r1, [r4]
|
|
lsls r0, 4
|
|
adds r3, r0, r1
|
|
ldrb r1, [r3, 0xC]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
bge _081254BC
|
|
adds r0, r5, 0
|
|
adds r1, r3, 0
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonLevelCheck
|
|
_081254BC:
|
|
mov r2, r8
|
|
cmp r2, 0x1
|
|
bne _0812550C
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
bne _081254D0
|
|
ldrb r0, [r7, 0x9]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
_081254D0:
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r3, r0, 0
|
|
mov r1, r10
|
|
subs r3, r1
|
|
lsls r3, 16
|
|
asrs r3, 16
|
|
ldrb r1, [r7, 0x9]
|
|
ldr r0, _08125508 @ =Task_DisplayHPRestoredMessage
|
|
str r0, [sp]
|
|
mov r0, r9
|
|
movs r2, 0x1
|
|
bl PartyMenuModifyHP
|
|
mov r0, r9
|
|
movs r1, 0
|
|
mov r2, r10
|
|
bl ResetHPTaskData
|
|
b _08125538
|
|
.align 2, 0
|
|
_081254FC: .4byte sPartyMenuBoxes
|
|
_08125500: .4byte gPartyMenu
|
|
_08125504: .4byte gSprites
|
|
_08125508: .4byte Task_DisplayHPRestoredMessage
|
|
_0812550C:
|
|
ldr r1, _08125548 @ =gStringVar1
|
|
adds r0, r5, 0
|
|
bl GetMonNickname
|
|
adds r0, r6, 0
|
|
bl GetMedicineItemEffectMessage
|
|
ldr r0, _0812554C @ =gStringVar4
|
|
_0812551C:
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08125550 @ =gTasks
|
|
mov r2, r9
|
|
lsls r0, r2, 2
|
|
add r0, r9
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, [sp, 0x4]
|
|
str r1, [r0]
|
|
_08125538:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125548: .4byte gStringVar1
|
|
_0812554C: .4byte gStringVar4
|
|
_08125550: .4byte gTasks
|
|
thumb_func_end ItemUseCB_Medicine
|
|
|
|
thumb_func_start Task_DisplayHPRestoredMessage
|
|
Task_DisplayHPRestoredMessage: @ 8125554
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, _081255A0 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _081255A4 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _081255A8 @ =gStringVar1
|
|
bl GetMonNickname
|
|
ldr r4, _081255AC @ =gStringVar4
|
|
ldr r1, _081255B0 @ =gText_PkmnHPRestoredByVar2
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
bl HandleBattleLowHpMusicChange
|
|
ldr r1, _081255B4 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _081255B8 @ =Task_ClosePartyMenuAfterText
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081255A0: .4byte gPartyMenu
|
|
_081255A4: .4byte gPlayerParty
|
|
_081255A8: .4byte gStringVar1
|
|
_081255AC: .4byte gStringVar4
|
|
_081255B0: .4byte gText_PkmnHPRestoredByVar2
|
|
_081255B4: .4byte gTasks
|
|
_081255B8: .4byte Task_ClosePartyMenuAfterText
|
|
thumb_func_end Task_DisplayHPRestoredMessage
|
|
|
|
thumb_func_start Task_ClosePartyMenuAfterText
|
|
Task_ClosePartyMenuAfterText: @ 81255BC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _081255E2
|
|
ldr r0, _081255E8 @ =gPartyMenuUseExitCallback
|
|
ldrb r1, [r0]
|
|
cmp r1, 0
|
|
bne _081255DC
|
|
ldr r0, _081255EC @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
str r1, [r0, 0x4]
|
|
_081255DC:
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
_081255E2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081255E8: .4byte gPartyMenuUseExitCallback
|
|
_081255EC: .4byte sPartyMenuInternal
|
|
thumb_func_end Task_ClosePartyMenuAfterText
|
|
|
|
thumb_func_start ShowMoveSelectWindow
|
|
ShowMoveSelectWindow: @ 81255F0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0
|
|
mov r10, r0
|
|
movs r1, 0x2
|
|
mov r8, r1
|
|
movs r0, 0x3
|
|
bl DisplaySelectionWindow
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
movs r6, 0
|
|
movs r0, 0x64
|
|
adds r2, r4, 0
|
|
muls r2, r0
|
|
str r2, [sp, 0xC]
|
|
_08125620:
|
|
ldr r0, _081256B8 @ =gPlayerParty
|
|
adds r1, r6, 0
|
|
adds r1, 0xD
|
|
ldr r2, [sp, 0xC]
|
|
adds r0, r2, r0
|
|
bl GetMonData
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
mov r0, r8
|
|
movs r1, 0
|
|
bl GetFontAttribute
|
|
adds r4, r0, 0
|
|
mov r0, r8
|
|
movs r1, 0x2
|
|
bl GetFontAttribute
|
|
adds r4, r0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0xD
|
|
adds r2, r5, 0
|
|
muls r2, r0
|
|
ldr r0, _081256BC @ =gMoveNames
|
|
adds r2, r0
|
|
lsls r0, r6, 4
|
|
adds r0, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0x4]
|
|
movs r7, 0
|
|
str r7, [sp, 0x8]
|
|
mov r0, r9
|
|
mov r1, r8
|
|
adds r3, r4, 0
|
|
bl AddTextPrinterParameterized
|
|
cmp r5, 0
|
|
beq _08125680
|
|
mov r0, r10
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
_08125680:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0x3
|
|
bls _08125620
|
|
movs r0, 0x10
|
|
str r0, [sp]
|
|
mov r0, r10
|
|
str r0, [sp, 0x4]
|
|
str r7, [sp, 0x8]
|
|
mov r0, r9
|
|
mov r1, r8
|
|
movs r2, 0
|
|
movs r3, 0x2
|
|
bl Menu_InitCursor
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081256B8: .4byte gPlayerParty
|
|
_081256BC: .4byte gMoveNames
|
|
thumb_func_end ShowMoveSelectWindow
|
|
|
|
thumb_func_start Task_HandleWhichMoveInput
|
|
Task_HandleWhichMoveInput: @ 81256C0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
bl Menu_ProcessInput
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _081256F2
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
bne _081256EC
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r4, 0
|
|
bl ReturnToUseOnWhichMon
|
|
b _081256F2
|
|
_081256EC:
|
|
adds r0, r5, 0
|
|
bl SetSelectedMoveForPPItem
|
|
_081256F2:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_HandleWhichMoveInput
|
|
|
|
thumb_func_start ItemUseCB_PPRecovery
|
|
ItemUseCB_PPRecovery: @ 81256F8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _08125710 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xAF
|
|
bne _0812571C
|
|
ldr r0, _08125714 @ =gSaveBlock1Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, _08125718 @ =0x00003108
|
|
adds r0, r1
|
|
b _08125726
|
|
.align 2, 0
|
|
_08125710: .4byte gSpecialVar_ItemId
|
|
_08125714: .4byte gSaveBlock1Ptr
|
|
_08125718: .4byte 0x00003108
|
|
_0812571C:
|
|
ldr r1, _0812574C @ =gItemEffectTable
|
|
subs r0, 0xD
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
_08125726:
|
|
ldrb r1, [r0, 0x4]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
bne _0812575C
|
|
ldr r0, _08125750 @ =gPartyMenu
|
|
strh r1, [r0, 0xE]
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _08125754
|
|
adds r0, r4, 0
|
|
bl TryUsePPItem
|
|
b _0812577E
|
|
.align 2, 0
|
|
_0812574C: .4byte gItemEffectTable
|
|
_08125750: .4byte gPartyMenu
|
|
_08125754:
|
|
adds r0, r4, 0
|
|
bl sub_812580C
|
|
b _0812577E
|
|
_0812575C:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
movs r0, 0x17
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _08125784 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x9]
|
|
bl ShowMoveSelectWindow
|
|
ldr r1, _08125788 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _0812578C @ =Task_HandleWhichMoveInput
|
|
str r1, [r0]
|
|
_0812577E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125784: .4byte gPartyMenu
|
|
_08125788: .4byte gTasks
|
|
_0812578C: .4byte Task_HandleWhichMoveInput
|
|
thumb_func_end ItemUseCB_PPRecovery
|
|
|
|
thumb_func_start SetSelectedMoveForPPItem
|
|
SetSelectedMoveForPPItem: @ 8125790
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _081257C0 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
bl Menu_GetCursorPos
|
|
ldr r1, _081257C4 @ =gPartyMenu
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r1, 0xE]
|
|
ldrb r1, [r1, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _081257C8
|
|
adds r0, r4, 0
|
|
bl TryUsePPItem
|
|
b _081257CE
|
|
.align 2, 0
|
|
_081257C0: .4byte sPartyMenuInternal
|
|
_081257C4: .4byte gPartyMenu
|
|
_081257C8:
|
|
adds r0, r4, 0
|
|
bl sub_812580C
|
|
_081257CE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SetSelectedMoveForPPItem
|
|
|
|
thumb_func_start ReturnToUseOnWhichMon
|
|
ReturnToUseOnWhichMon: @ 81257D4
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _08125800 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
ldr r0, _08125804 @ =Task_HandleChooseMonInput
|
|
str r0, [r1]
|
|
ldr r0, _08125808 @ =sPartyMenuInternal
|
|
ldr r0, [r0]
|
|
movs r1, 0
|
|
str r1, [r0, 0x4]
|
|
adds r0, 0xC
|
|
bl PartyMenuRemoveWindow
|
|
movs r0, 0x5
|
|
bl DisplayPartyMenuStdMessage
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125800: .4byte gTasks
|
|
_08125804: .4byte Task_HandleChooseMonInput
|
|
_08125808: .4byte sPartyMenuInternal
|
|
thumb_func_end ReturnToUseOnWhichMon
|
|
|
|
thumb_func_start sub_812580C
|
|
sub_812580C: @ 812580C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r3, _08125860 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r3, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08125864 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08125868 @ =gSpecialVar_ItemId
|
|
ldrh r1, [r1]
|
|
ldrb r2, [r3, 0x9]
|
|
ldrb r3, [r3, 0xE]
|
|
bl PokemonUseItemEffects2
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
cmp r4, 0
|
|
beq _0812587C
|
|
ldr r1, _0812586C @ =gPartyMenuUseExitCallback
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, _08125870 @ =gText_WontHaveEffect
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08125874 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125878 @ =Task_ClosePartyMenuAfterText
|
|
str r1, [r0]
|
|
b _08125888
|
|
.align 2, 0
|
|
_08125860: .4byte gPartyMenu
|
|
_08125864: .4byte gPlayerParty
|
|
_08125868: .4byte gSpecialVar_ItemId
|
|
_0812586C: .4byte gPartyMenuUseExitCallback
|
|
_08125870: .4byte gText_WontHaveEffect
|
|
_08125874: .4byte gTasks
|
|
_08125878: .4byte Task_ClosePartyMenuAfterText
|
|
_0812587C:
|
|
adds r0, r5, 0
|
|
bl sub_8124DC0
|
|
ldr r1, _08125890 @ =gItemUseCB
|
|
ldr r0, _08125894 @ =sub_8125898
|
|
str r0, [r1]
|
|
_08125888:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125890: .4byte gItemUseCB
|
|
_08125894: .4byte sub_8125898
|
|
thumb_func_end sub_812580C
|
|
|
|
thumb_func_start sub_8125898
|
|
sub_8125898: @ 8125898
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
mov r8, r0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r5, _08125930 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r5, r1]
|
|
movs r0, 0x64
|
|
adds r4, r1, 0
|
|
muls r4, r0
|
|
ldr r0, _08125934 @ =gPlayerParty
|
|
adds r4, r0
|
|
ldrb r0, [r5, 0x9]
|
|
ldr r6, _08125938 @ =gSpecialVar_ItemId
|
|
ldrh r1, [r6]
|
|
ldrb r2, [r5, 0xE]
|
|
bl ExecuteTableBasedItemEffect_
|
|
ldr r1, _0812593C @ =gPartyMenuUseExitCallback
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldrh r2, [r6]
|
|
ldr r3, _08125940 @ =0x0000ffff
|
|
movs r0, 0x4
|
|
adds r1, r4, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
movs r0, 0x1
|
|
bl PlaySE
|
|
ldrh r0, [r6]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
movs r2, 0xE
|
|
ldrsh r1, [r5, r2]
|
|
adds r1, 0xD
|
|
adds r0, r4, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r2, _08125944 @ =gStringVar1
|
|
movs r1, 0xD
|
|
muls r1, r0
|
|
ldr r0, _08125948 @ =gMoveNames
|
|
adds r1, r0
|
|
adds r0, r2, 0
|
|
bl StringCopy
|
|
ldrh r0, [r6]
|
|
bl GetMedicineItemEffectMessage
|
|
ldr r0, _0812594C @ =gStringVar4
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08125950 @ =gTasks
|
|
mov r2, r8
|
|
lsls r0, r2, 2
|
|
add r0, r8
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125954 @ =Task_ClosePartyMenuAfterText
|
|
str r1, [r0]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125930: .4byte gPartyMenu
|
|
_08125934: .4byte gPlayerParty
|
|
_08125938: .4byte gSpecialVar_ItemId
|
|
_0812593C: .4byte gPartyMenuUseExitCallback
|
|
_08125940: .4byte 0x0000ffff
|
|
_08125944: .4byte gStringVar1
|
|
_08125948: .4byte gMoveNames
|
|
_0812594C: .4byte gStringVar4
|
|
_08125950: .4byte gTasks
|
|
_08125954: .4byte Task_ClosePartyMenuAfterText
|
|
thumb_func_end sub_8125898
|
|
|
|
thumb_func_start TryUsePPItem
|
|
TryUsePPItem: @ 8125958
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r4, 0
|
|
ldr r7, _08125990 @ =gPartyMenu + 14
|
|
ldr r0, _08125994 @ =gSpecialVar_ItemId
|
|
ldrh r5, [r0]
|
|
movs r0, 0xE
|
|
negs r0, r0
|
|
adds r0, r7
|
|
mov r8, r0
|
|
ldrb r0, [r0, 0x9]
|
|
ldrb r2, [r7]
|
|
adds r1, r5, 0
|
|
bl ExecuteTableBasedItemEffect_
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081259A0
|
|
ldr r0, _08125998 @ =gPartyMenuUseExitCallback
|
|
strb r4, [r0]
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r0, _0812599C @ =gText_WontHaveEffect
|
|
b _081259F6
|
|
.align 2, 0
|
|
_08125990: .4byte gPartyMenu + 14
|
|
_08125994: .4byte gSpecialVar_ItemId
|
|
_08125998: .4byte gPartyMenuUseExitCallback
|
|
_0812599C: .4byte gText_WontHaveEffect
|
|
_081259A0:
|
|
ldr r1, _08125A1C @ =gPartyMenuUseExitCallback
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
mov r0, r8
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
adds r4, r1, 0
|
|
muls r4, r0
|
|
ldr r0, _08125A20 @ =gPlayerParty
|
|
adds r4, r0
|
|
ldr r3, _08125A24 @ =0x0000ffff
|
|
movs r0, 0x4
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
movs r0, 0x1
|
|
bl PlaySE
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
movs r0, 0
|
|
ldrsh r1, [r7, r0]
|
|
adds r1, 0xD
|
|
adds r0, r4, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
ldr r0, _08125A28 @ =gStringVar1
|
|
movs r1, 0xD
|
|
muls r1, r4
|
|
ldr r2, _08125A2C @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
adds r0, r5, 0
|
|
bl GetMedicineItemEffectMessage
|
|
ldr r0, _08125A30 @ =gStringVar4
|
|
_081259F6:
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08125A34 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125A38 @ =Task_ClosePartyMenuAfterText
|
|
str r1, [r0]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125A1C: .4byte gPartyMenuUseExitCallback
|
|
_08125A20: .4byte gPlayerParty
|
|
_08125A24: .4byte 0x0000ffff
|
|
_08125A28: .4byte gStringVar1
|
|
_08125A2C: .4byte gMoveNames
|
|
_08125A30: .4byte gStringVar4
|
|
_08125A34: .4byte gTasks
|
|
_08125A38: .4byte Task_ClosePartyMenuAfterText
|
|
thumb_func_end TryUsePPItem
|
|
|
|
thumb_func_start ItemUseCB_PPUp
|
|
ItemUseCB_PPUp: @ 8125A3C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
movs r0, 0x18
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _08125A6C @ =gPartyMenu
|
|
ldrb r0, [r0, 0x9]
|
|
bl ShowMoveSelectWindow
|
|
ldr r1, _08125A70 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125A74 @ =Task_HandleWhichMoveInput
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125A6C: .4byte gPartyMenu
|
|
_08125A70: .4byte gTasks
|
|
_08125A74: .4byte Task_HandleWhichMoveInput
|
|
thumb_func_end ItemUseCB_PPUp
|
|
|
|
thumb_func_start ItemIdToBattleMoveId
|
|
ItemIdToBattleMoveId: @ 8125A78
|
|
lsls r0, 16
|
|
ldr r1, _08125A88 @ =0xfedf0000
|
|
adds r0, r1
|
|
ldr r1, _08125A8C @ =sTMHMMoves
|
|
lsrs r0, 15
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_08125A88: .4byte 0xfedf0000
|
|
_08125A8C: .4byte sTMHMMoves
|
|
thumb_func_end ItemIdToBattleMoveId
|
|
|
|
thumb_func_start IsMoveHm
|
|
IsMoveHm: @ 8125A90
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
movs r1, 0
|
|
ldr r3, _08125AAC @ =sTMHMMoves
|
|
_08125A9A:
|
|
adds r0, r1, 0
|
|
adds r0, 0x32
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, r2
|
|
bne _08125AB0
|
|
movs r0, 0x1
|
|
b _08125ABC
|
|
.align 2, 0
|
|
_08125AAC: .4byte sTMHMMoves
|
|
_08125AB0:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x6
|
|
bls _08125A9A
|
|
movs r0, 0
|
|
_08125ABC:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsMoveHm
|
|
|
|
thumb_func_start MonKnowsMove
|
|
MonKnowsMove: @ 8125AC0
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
movs r4, 0
|
|
_08125ACA:
|
|
adds r1, r4, 0
|
|
adds r1, 0xD
|
|
adds r0, r6, 0
|
|
bl GetMonData
|
|
cmp r0, r5
|
|
bne _08125ADC
|
|
movs r0, 0x1
|
|
b _08125AE8
|
|
_08125ADC:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x3
|
|
bls _08125ACA
|
|
movs r0, 0
|
|
_08125AE8:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end MonKnowsMove
|
|
|
|
thumb_func_start DisplayLearnMoveMessage
|
|
DisplayLearnMoveMessage: @ 8125AF0
|
|
push {r4,lr}
|
|
adds r1, r0, 0
|
|
ldr r4, _08125B10 @ =gStringVar4
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125B10: .4byte gStringVar4
|
|
thumb_func_end DisplayLearnMoveMessage
|
|
|
|
thumb_func_start DisplayLearnMoveMessageAndClose
|
|
DisplayLearnMoveMessageAndClose: @ 8125B14
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, r1, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl DisplayLearnMoveMessage
|
|
ldr r1, _08125B38 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125B3C @ =Task_ClosePartyMenuAfterText
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125B38: .4byte gTasks
|
|
_08125B3C: .4byte Task_ClosePartyMenuAfterText
|
|
thumb_func_end DisplayLearnMoveMessageAndClose
|
|
|
|
thumb_func_start ItemUseCB_TMHM
|
|
ItemUseCB_TMHM: @ 8125B40
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r7, _08125BD0 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r7, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08125BD4 @ =gPlayerParty
|
|
adds r4, r1, r0
|
|
movs r0, 0xE
|
|
adds r0, r7
|
|
mov r8, r0
|
|
ldr r0, _08125BD8 @ =gSpecialVar_ItemId
|
|
ldrh r5, [r0]
|
|
ldr r1, _08125BDC @ =gStringVar1
|
|
adds r0, r4, 0
|
|
bl GetMonNickname
|
|
adds r0, r5, 0
|
|
bl ItemIdToBattleMoveId
|
|
strh r0, [r7, 0xE]
|
|
ldr r0, _08125BE0 @ =gStringVar2
|
|
movs r1, 0xE
|
|
ldrsh r2, [r7, r1]
|
|
movs r1, 0xD
|
|
muls r1, r2
|
|
ldr r2, _08125BE4 @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
movs r0, 0
|
|
mov r1, r8
|
|
strh r0, [r1, 0x2]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl CanMonLearnTMTutor
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08125BF4
|
|
cmp r0, 0x2
|
|
beq _08125BFC
|
|
ldrh r1, [r7, 0xE]
|
|
adds r0, r4, 0
|
|
bl GiveMoveToMon
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r3, _08125BE8 @ =0x0000ffff
|
|
cmp r0, r3
|
|
beq _08125C0C
|
|
movs r0, 0x4
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
adds r0, r6, 0
|
|
bl sub_8124DC0
|
|
ldr r1, _08125BEC @ =gItemUseCB
|
|
ldr r0, _08125BF0 @ =Task_LearnedMove_
|
|
str r0, [r1]
|
|
b _08125C20
|
|
.align 2, 0
|
|
_08125BD0: .4byte gPartyMenu
|
|
_08125BD4: .4byte gPlayerParty
|
|
_08125BD8: .4byte gSpecialVar_ItemId
|
|
_08125BDC: .4byte gStringVar1
|
|
_08125BE0: .4byte gStringVar2
|
|
_08125BE4: .4byte gMoveNames
|
|
_08125BE8: .4byte 0x0000ffff
|
|
_08125BEC: .4byte gItemUseCB
|
|
_08125BF0: .4byte Task_LearnedMove_
|
|
_08125BF4:
|
|
ldr r1, _08125BF8 @ =gText_PkmnCantLearnMove
|
|
b _08125BFE
|
|
.align 2, 0
|
|
_08125BF8: .4byte gText_PkmnCantLearnMove
|
|
_08125BFC:
|
|
ldr r1, _08125C08 @ =gText_PkmnAlreadyKnows
|
|
_08125BFE:
|
|
adds r0, r6, 0
|
|
bl DisplayLearnMoveMessageAndClose
|
|
b _08125C20
|
|
.align 2, 0
|
|
_08125C08: .4byte gText_PkmnAlreadyKnows
|
|
_08125C0C:
|
|
ldr r0, _08125C2C @ =gText_PkmnNeedsToReplaceMove
|
|
bl DisplayLearnMoveMessage
|
|
ldr r1, _08125C30 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125C34 @ =Task_ReplaceMoveYesNo
|
|
str r1, [r0]
|
|
_08125C20:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125C2C: .4byte gText_PkmnNeedsToReplaceMove
|
|
_08125C30: .4byte gTasks
|
|
_08125C34: .4byte Task_ReplaceMoveYesNo
|
|
thumb_func_end ItemUseCB_TMHM
|
|
|
|
thumb_func_start Task_LearnedMove_
|
|
Task_LearnedMove_: @ 8125C38
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl Task_LearnedMove
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_LearnedMove_
|
|
|
|
thumb_func_start Task_LearnedMove
|
|
Task_LearnedMove: @ 8125C48
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r2, _08125CCC @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r2, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08125CD0 @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
adds r6, r2, 0
|
|
adds r6, 0xE
|
|
ldr r0, _08125CD4 @ =gSpecialVar_ItemId
|
|
ldrh r4, [r0]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _08125C84
|
|
adds r0, r5, 0
|
|
movs r1, 0x4
|
|
bl AdjustFriendship
|
|
movs r0, 0xA9
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bhi _08125C84
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
_08125C84:
|
|
ldr r1, _08125CD8 @ =gStringVar1
|
|
adds r0, r5, 0
|
|
bl GetMonNickname
|
|
ldr r0, _08125CDC @ =gStringVar2
|
|
movs r1, 0
|
|
ldrsh r2, [r6, r1]
|
|
movs r1, 0xD
|
|
muls r1, r2
|
|
ldr r2, _08125CE0 @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r4, _08125CE4 @ =gStringVar4
|
|
ldr r1, _08125CE8 @ =gText_PkmnLearnedMove3
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08125CEC @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125CF0 @ =Task_DoLearnedMoveFanfareAfterText
|
|
str r1, [r0]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125CCC: .4byte gPartyMenu
|
|
_08125CD0: .4byte gPlayerParty
|
|
_08125CD4: .4byte gSpecialVar_ItemId
|
|
_08125CD8: .4byte gStringVar1
|
|
_08125CDC: .4byte gStringVar2
|
|
_08125CE0: .4byte gMoveNames
|
|
_08125CE4: .4byte gStringVar4
|
|
_08125CE8: .4byte gText_PkmnLearnedMove3
|
|
_08125CEC: .4byte gTasks
|
|
_08125CF0: .4byte Task_DoLearnedMoveFanfareAfterText
|
|
thumb_func_end Task_LearnedMove
|
|
|
|
thumb_func_start Task_DoLearnedMoveFanfareAfterText
|
|
Task_DoLearnedMoveFanfareAfterText: @ 8125CF4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08125D1A
|
|
ldr r0, _08125D20 @ =0x00000101
|
|
bl PlayFanfare
|
|
ldr r1, _08125D24 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125D28 @ =Task_LearnNextMoveOrClosePartyMenu
|
|
str r1, [r0]
|
|
_08125D1A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125D20: .4byte 0x00000101
|
|
_08125D24: .4byte gTasks
|
|
_08125D28: .4byte Task_LearnNextMoveOrClosePartyMenu
|
|
thumb_func_end Task_DoLearnedMoveFanfareAfterText
|
|
|
|
thumb_func_start Task_LearnNextMoveOrClosePartyMenu
|
|
Task_LearnNextMoveOrClosePartyMenu: @ 8125D2C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
bl IsFanfareTaskInactive
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08125D7E
|
|
ldr r0, _08125D68 @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08125D54
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08125D7E
|
|
_08125D54:
|
|
ldr r0, _08125D6C @ =gPartyMenu
|
|
movs r1, 0x10
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x1
|
|
bne _08125D70
|
|
adds r0, r4, 0
|
|
bl Task_TryLearningNextMove
|
|
b _08125D7E
|
|
.align 2, 0
|
|
_08125D68: .4byte gMain
|
|
_08125D6C: .4byte gPartyMenu
|
|
_08125D70:
|
|
cmp r0, 0x2
|
|
bne _08125D78
|
|
ldr r0, _08125D84 @ =gSpecialVar_Result
|
|
strh r2, [r0]
|
|
_08125D78:
|
|
adds r0, r5, 0
|
|
bl Task_ClosePartyMenu
|
|
_08125D7E:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125D84: .4byte gSpecialVar_Result
|
|
thumb_func_end Task_LearnNextMoveOrClosePartyMenu
|
|
|
|
thumb_func_start Task_ReplaceMoveYesNo
|
|
Task_ReplaceMoveYesNo: @ 8125D88
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08125DAC
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08125DB4 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08125DB8 @ =Task_HandleReplaceMoveYesNoInput
|
|
str r0, [r1]
|
|
_08125DAC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125DB4: .4byte gTasks
|
|
_08125DB8: .4byte Task_HandleReplaceMoveYesNoInput
|
|
thumb_func_end Task_ReplaceMoveYesNo
|
|
|
|
thumb_func_start Task_HandleReplaceMoveYesNoInput
|
|
Task_HandleReplaceMoveYesNoInput: @ 8125DBC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _08125DE2
|
|
cmp r1, 0
|
|
bgt _08125DDC
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _08125E08
|
|
b _08125E14
|
|
_08125DDC:
|
|
cmp r1, 0x1
|
|
beq _08125E0E
|
|
b _08125E14
|
|
_08125DE2:
|
|
ldr r0, _08125DFC @ =gText_WhichMoveToForget
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
ldr r1, _08125E00 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08125E04 @ =Task_ShowSummaryScreenToForgetMove
|
|
str r1, [r0]
|
|
b _08125E14
|
|
.align 2, 0
|
|
_08125DFC: .4byte gText_WhichMoveToForget
|
|
_08125E00: .4byte gTasks
|
|
_08125E04: .4byte Task_ShowSummaryScreenToForgetMove
|
|
_08125E08:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_08125E0E:
|
|
adds r0, r4, 0
|
|
bl StopLearningMovePrompt
|
|
_08125E14:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_HandleReplaceMoveYesNoInput
|
|
|
|
thumb_func_start Task_ShowSummaryScreenToForgetMove
|
|
Task_ShowSummaryScreenToForgetMove: @ 8125E1C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08125E3C
|
|
ldr r0, _08125E44 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _08125E48 @ =CB2_ShowSummaryScreenToForgetMove
|
|
str r0, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
_08125E3C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125E44: .4byte sPartyMenuInternal
|
|
_08125E48: .4byte CB2_ShowSummaryScreenToForgetMove
|
|
thumb_func_end Task_ShowSummaryScreenToForgetMove
|
|
|
|
thumb_func_start CB2_ShowSummaryScreenToForgetMove
|
|
CB2_ShowSummaryScreenToForgetMove: @ 8125E4C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r0, _08125E74 @ =gPlayerParty
|
|
ldr r4, _08125E78 @ =gPartyMenu
|
|
ldrb r1, [r4, 0x9]
|
|
ldr r2, _08125E7C @ =gPlayerPartyCount
|
|
ldrb r2, [r2]
|
|
subs r2, 0x1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldr r3, _08125E80 @ =CB2_ReturnToPartyMenuWhileLearningMove
|
|
ldrh r4, [r4, 0xE]
|
|
str r4, [sp]
|
|
bl ShowSelectMovePokemonSummaryScreen
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125E74: .4byte gPlayerParty
|
|
_08125E78: .4byte gPartyMenu
|
|
_08125E7C: .4byte gPlayerPartyCount
|
|
_08125E80: .4byte CB2_ReturnToPartyMenuWhileLearningMove
|
|
thumb_func_end CB2_ShowSummaryScreenToForgetMove
|
|
|
|
thumb_func_start CB2_ReturnToPartyMenuWhileLearningMove
|
|
CB2_ReturnToPartyMenuWhileLearningMove: @ 8125E84
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
bl GetMoveSlotToReplace
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r4, _08125ED0 @ =gPartyMenu
|
|
movs r0, 0x10
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0
|
|
bne _08125EE8
|
|
cmp r2, 0x4
|
|
beq _08125EE8
|
|
movs r1, 0x9
|
|
ldrsb r1, [r4, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08125ED4 @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r2, 0
|
|
adds r1, 0xD
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
ldrb r0, [r4, 0x9]
|
|
ldr r1, _08125ED8 @ =gSpecialVar_ItemId
|
|
ldrh r1, [r1]
|
|
ldr r3, _08125EDC @ =sub_8124EFC
|
|
bl sub_811C568
|
|
ldr r1, _08125EE0 @ =gItemUseCB
|
|
ldr r0, _08125EE4 @ =sub_8125F4C
|
|
str r0, [r1]
|
|
strb r5, [r4, 0xB]
|
|
b _08125F02
|
|
.align 2, 0
|
|
_08125ED0: .4byte gPartyMenu
|
|
_08125ED4: .4byte gPlayerParty
|
|
_08125ED8: .4byte gSpecialVar_ItemId
|
|
_08125EDC: .4byte sub_8124EFC
|
|
_08125EE0: .4byte gItemUseCB
|
|
_08125EE4: .4byte sub_8125F4C
|
|
_08125EE8:
|
|
movs r0, 0x7F
|
|
str r0, [sp]
|
|
ldr r0, _08125F0C @ =Task_ReturnToPartyMenuWhileLearningMove
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08125F10 @ =gPartyMenu
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
_08125F02:
|
|
add sp, 0xC
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125F0C: .4byte Task_ReturnToPartyMenuWhileLearningMove
|
|
_08125F10: .4byte gPartyMenu
|
|
thumb_func_end CB2_ReturnToPartyMenuWhileLearningMove
|
|
|
|
thumb_func_start Task_ReturnToPartyMenuWhileLearningMove
|
|
Task_ReturnToPartyMenuWhileLearningMove: @ 8125F14
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
ldr r0, _08125F3C @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08125F46
|
|
bl GetMoveSlotToReplace
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
beq _08125F40
|
|
adds r0, r4, 0
|
|
bl DisplayPartyMenuForgotMoveMessage
|
|
b _08125F46
|
|
.align 2, 0
|
|
_08125F3C: .4byte gPaletteFade
|
|
_08125F40:
|
|
adds r0, r5, 0
|
|
bl StopLearningMovePrompt
|
|
_08125F46:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_ReturnToPartyMenuWhileLearningMove
|
|
|
|
thumb_func_start sub_8125F4C
|
|
sub_8125F4C: @ 8125F4C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8125F5C
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8125F4C
|
|
|
|
thumb_func_start sub_8125F5C
|
|
sub_8125F5C: @ 8125F5C
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
mov r8, r0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r0, _08125FE4 @ =gPartyMenu
|
|
mov r9, r0
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
adds r6, r1, 0
|
|
muls r6, r0
|
|
ldr r0, _08125FE8 @ =gPlayerParty
|
|
adds r6, r0
|
|
bl GetMoveSlotToReplace
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r1, r5, 0
|
|
adds r1, 0xD
|
|
adds r0, r6, 0
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
ldr r0, _08125FEC @ =gSpecialVar_ItemId
|
|
ldrh r2, [r0]
|
|
movs r0, 0x4
|
|
adds r1, r6, 0
|
|
adds r3, r4, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
ldr r1, _08125FF0 @ =gStringVar1
|
|
adds r0, r6, 0
|
|
bl GetMonNickname
|
|
ldr r0, _08125FF4 @ =gStringVar2
|
|
movs r1, 0xD
|
|
muls r1, r4
|
|
ldr r2, _08125FF8 @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl RemoveMonPPBonus
|
|
mov r0, r9
|
|
ldrh r1, [r0, 0xE]
|
|
adds r0, r6, 0
|
|
adds r2, r5, 0
|
|
bl SetMonMoveSlot
|
|
mov r0, r8
|
|
bl Task_LearnedMove
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08125FE4: .4byte gPartyMenu
|
|
_08125FE8: .4byte gPlayerParty
|
|
_08125FEC: .4byte gSpecialVar_ItemId
|
|
_08125FF0: .4byte gStringVar1
|
|
_08125FF4: .4byte gStringVar2
|
|
_08125FF8: .4byte gMoveNames
|
|
thumb_func_end sub_8125F5C
|
|
|
|
thumb_func_start DisplayPartyMenuForgotMoveMessage
|
|
DisplayPartyMenuForgotMoveMessage: @ 8125FFC
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
ldr r0, _0812605C @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
adds r5, r1, 0
|
|
muls r5, r0
|
|
ldr r0, _08126060 @ =gPlayerParty
|
|
adds r5, r0
|
|
bl GetMoveSlotToReplace
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r1, 0xD
|
|
adds r0, r5, 0
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
ldr r1, _08126064 @ =gStringVar1
|
|
adds r0, r5, 0
|
|
bl GetMonNickname
|
|
ldr r0, _08126068 @ =gStringVar2
|
|
movs r1, 0xD
|
|
muls r1, r4
|
|
ldr r2, _0812606C @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r0, _08126070 @ =gUnknown_8416EC6
|
|
bl DisplayLearnMoveMessage
|
|
ldr r1, _08126074 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126078 @ =Task_PartyMenuReplaceMove
|
|
str r1, [r0]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812605C: .4byte gPartyMenu
|
|
_08126060: .4byte gPlayerParty
|
|
_08126064: .4byte gStringVar1
|
|
_08126068: .4byte gStringVar2
|
|
_0812606C: .4byte gMoveNames
|
|
_08126070: .4byte gUnknown_8416EC6
|
|
_08126074: .4byte gTasks
|
|
_08126078: .4byte Task_PartyMenuReplaceMove
|
|
thumb_func_end DisplayPartyMenuForgotMoveMessage
|
|
|
|
thumb_func_start Task_PartyMenuReplaceMove
|
|
Task_PartyMenuReplaceMove: @ 812607C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _081260C8
|
|
ldr r5, _081260D0 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r5, r1]
|
|
movs r0, 0x64
|
|
adds r4, r1, 0
|
|
muls r4, r0
|
|
ldr r0, _081260D4 @ =gPlayerParty
|
|
adds r4, r0
|
|
bl GetMoveSlotToReplace
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl RemoveMonPPBonus
|
|
ldrh r5, [r5, 0xE]
|
|
bl GetMoveSlotToReplace
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl SetMonMoveSlot
|
|
adds r0, r6, 0
|
|
bl Task_LearnedMove
|
|
_081260C8:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081260D0: .4byte gPartyMenu
|
|
_081260D4: .4byte gPlayerParty
|
|
thumb_func_end Task_PartyMenuReplaceMove
|
|
|
|
thumb_func_start StopLearningMovePrompt
|
|
StopLearningMovePrompt: @ 81260D8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, _08126120 @ =gStringVar2
|
|
ldr r1, _08126124 @ =gPartyMenu
|
|
movs r3, 0xE
|
|
ldrsh r2, [r1, r3]
|
|
movs r1, 0xD
|
|
muls r1, r2
|
|
ldr r2, _08126128 @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r4, _0812612C @ =gStringVar4
|
|
ldr r1, _08126130 @ =gText_StopLearningMove2
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08126134 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126138 @ =Task_StopLearningMoveYesNo
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126120: .4byte gStringVar2
|
|
_08126124: .4byte gPartyMenu
|
|
_08126128: .4byte gMoveNames
|
|
_0812612C: .4byte gStringVar4
|
|
_08126130: .4byte gText_StopLearningMove2
|
|
_08126134: .4byte gTasks
|
|
_08126138: .4byte Task_StopLearningMoveYesNo
|
|
thumb_func_end StopLearningMovePrompt
|
|
|
|
thumb_func_start Task_StopLearningMoveYesNo
|
|
Task_StopLearningMoveYesNo: @ 812613C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08126160
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08126168 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0812616C @ =Task_HandleStopLearningMoveYesNoInput
|
|
str r0, [r1]
|
|
_08126160:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126168: .4byte gTasks
|
|
_0812616C: .4byte Task_HandleStopLearningMoveYesNoInput
|
|
thumb_func_end Task_StopLearningMoveYesNo
|
|
|
|
thumb_func_start Task_HandleStopLearningMoveYesNoInput
|
|
Task_HandleStopLearningMoveYesNoInput: @ 8126170
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r7, _081261A0 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r7, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _081261A4 @ =gPlayerParty
|
|
adds r4, r1, r0
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r5, r0, 24
|
|
cmp r5, 0
|
|
beq _081261AE
|
|
cmp r5, 0
|
|
bgt _081261A8
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r5, r0
|
|
beq _08126234
|
|
b _0812626A
|
|
.align 2, 0
|
|
_081261A0: .4byte gPartyMenu
|
|
_081261A4: .4byte gPlayerParty
|
|
_081261A8:
|
|
cmp r5, 0x1
|
|
beq _0812623A
|
|
b _0812626A
|
|
_081261AE:
|
|
ldr r1, _081261F4 @ =gStringVar1
|
|
adds r0, r4, 0
|
|
bl GetMonNickname
|
|
ldr r0, _081261F8 @ =gStringVar2
|
|
movs r1, 0xE
|
|
ldrsh r2, [r7, r1]
|
|
movs r1, 0xD
|
|
muls r1, r2
|
|
ldr r2, _081261FC @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r4, _08126200 @ =gStringVar4
|
|
ldr r1, _08126204 @ =gText_MoveNotLearned
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r3, 0x10
|
|
ldrsh r0, [r7, r3]
|
|
cmp r0, 0x1
|
|
bne _08126210
|
|
ldr r0, _08126208 @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0812620C @ =Task_TryLearningNextMoveAfterText
|
|
str r0, [r1]
|
|
b _0812626A
|
|
.align 2, 0
|
|
_081261F4: .4byte gStringVar1
|
|
_081261F8: .4byte gStringVar2
|
|
_081261FC: .4byte gMoveNames
|
|
_08126200: .4byte gStringVar4
|
|
_08126204: .4byte gText_MoveNotLearned
|
|
_08126208: .4byte gTasks
|
|
_0812620C: .4byte Task_TryLearningNextMoveAfterText
|
|
_08126210:
|
|
cmp r0, 0x2
|
|
bne _08126218
|
|
ldr r0, _08126228 @ =gSpecialVar_Result
|
|
strh r5, [r0]
|
|
_08126218:
|
|
ldr r0, _0812622C @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08126230 @ =Task_ClosePartyMenuAfterText
|
|
str r0, [r1]
|
|
b _0812626A
|
|
.align 2, 0
|
|
_08126228: .4byte gSpecialVar_Result
|
|
_0812622C: .4byte gTasks
|
|
_08126230: .4byte Task_ClosePartyMenuAfterText
|
|
_08126234:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_0812623A:
|
|
ldr r1, _08126270 @ =gStringVar1
|
|
adds r0, r4, 0
|
|
bl GetMonNickname
|
|
ldr r0, _08126274 @ =gStringVar2
|
|
ldr r1, _08126278 @ =gPartyMenu
|
|
movs r3, 0xE
|
|
ldrsh r2, [r1, r3]
|
|
movs r1, 0xD
|
|
muls r1, r2
|
|
ldr r2, _0812627C @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r0, _08126280 @ =gText_PkmnNeedsToReplaceMove
|
|
bl DisplayLearnMoveMessage
|
|
ldr r1, _08126284 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126288 @ =Task_ReplaceMoveYesNo
|
|
str r1, [r0]
|
|
_0812626A:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126270: .4byte gStringVar1
|
|
_08126274: .4byte gStringVar2
|
|
_08126278: .4byte gPartyMenu
|
|
_0812627C: .4byte gMoveNames
|
|
_08126280: .4byte gText_PkmnNeedsToReplaceMove
|
|
_08126284: .4byte gTasks
|
|
_08126288: .4byte Task_ReplaceMoveYesNo
|
|
thumb_func_end Task_HandleStopLearningMoveYesNoInput
|
|
|
|
thumb_func_start Task_TryLearningNextMoveAfterText
|
|
Task_TryLearningNextMoveAfterText: @ 812628C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _081262A4
|
|
adds r0, r4, 0
|
|
bl Task_TryLearningNextMove
|
|
_081262A4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_TryLearningNextMoveAfterText
|
|
|
|
thumb_func_start dp05_rare_candy
|
|
dp05_rare_candy: @ 81262AC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
mov r8, r1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r7, _081262E8 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r7, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _081262EC @ =gPlayerParty
|
|
adds r4, r1, r0
|
|
ldr r0, _081262F0 @ =gSpecialVar_ItemId
|
|
ldrh r5, [r0]
|
|
adds r0, r4, 0
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
cmp r0, 0x64
|
|
beq _081262F4
|
|
ldrb r2, [r7, 0x9]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r3, 0
|
|
bl PokemonUseItemEffects2
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
b _081262F6
|
|
.align 2, 0
|
|
_081262E8: .4byte gPartyMenu
|
|
_081262EC: .4byte gPlayerParty
|
|
_081262F0: .4byte gSpecialVar_ItemId
|
|
_081262F4:
|
|
movs r4, 0x1
|
|
_081262F6:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
cmp r4, 0
|
|
beq _08126330
|
|
ldr r1, _08126324 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, _08126328 @ =gText_WontHaveEffect
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _0812632C @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
mov r1, r8
|
|
str r1, [r0]
|
|
b _0812633C
|
|
.align 2, 0
|
|
_08126324: .4byte gPartyMenuUseExitCallback
|
|
_08126328: .4byte gText_WontHaveEffect
|
|
_0812632C: .4byte gTasks
|
|
_08126330:
|
|
adds r0, r6, 0
|
|
bl sub_8124DC0
|
|
ldr r1, _08126348 @ =gItemUseCB
|
|
ldr r0, _0812634C @ =ItemUseCB_RareCandy
|
|
str r0, [r1]
|
|
_0812633C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126348: .4byte gItemUseCB
|
|
_0812634C: .4byte ItemUseCB_RareCandy
|
|
thumb_func_end dp05_rare_candy
|
|
|
|
thumb_func_start ItemUseCB_RareCandy
|
|
ItemUseCB_RareCandy: @ 8126350
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
mov r8, r0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r6, _08126410 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r6, r1]
|
|
movs r0, 0x64
|
|
adds r4, r1, 0
|
|
muls r4, r0
|
|
ldr r0, _08126414 @ =gPlayerParty
|
|
adds r4, r0
|
|
ldr r0, _08126418 @ =sPartyMenuInternal
|
|
ldr r7, [r0]
|
|
movs r2, 0x86
|
|
lsls r2, 2
|
|
adds r1, r7, r2
|
|
adds r0, r4, 0
|
|
bl GetMonLevelUpWindowStats
|
|
ldrb r0, [r6, 0x9]
|
|
ldr r5, _0812641C @ =gSpecialVar_ItemId
|
|
ldrh r1, [r5]
|
|
movs r2, 0
|
|
bl ExecuteTableBasedItemEffect_
|
|
movs r0, 0x89
|
|
lsls r0, 2
|
|
adds r1, r7, r0
|
|
adds r0, r4, 0
|
|
bl GetMonLevelUpWindowStats
|
|
ldr r1, _08126420 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldrh r2, [r5]
|
|
ldr r3, _08126424 @ =0x0000ffff
|
|
movs r0, 0x4
|
|
adds r1, r4, 0
|
|
bl ItemUse_SetQuestLogEvent
|
|
movs r0, 0
|
|
bl PlayFanfareByFanfareNum
|
|
ldrb r0, [r6, 0x9]
|
|
adds r1, r4, 0
|
|
bl UpdateMonDisplayInfoAfterRareCandy
|
|
ldrh r0, [r5]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
ldr r1, _08126428 @ =gStringVar1
|
|
adds r0, r4, 0
|
|
bl GetMonNickname
|
|
adds r0, r4, 0
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r0, _0812642C @ =gStringVar2
|
|
movs r2, 0
|
|
movs r3, 0x3
|
|
bl ConvertIntToDecimalStringN
|
|
ldr r4, _08126430 @ =gStringVar4
|
|
ldr r1, _08126434 @ =gText_PkmnElevatedToLvVar2
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08126438 @ =gTasks
|
|
mov r2, r8
|
|
lsls r0, r2, 2
|
|
add r0, r8
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _0812643C @ =Task_DisplayLevelUpStatsPg1
|
|
str r1, [r0]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126410: .4byte gPartyMenu
|
|
_08126414: .4byte gPlayerParty
|
|
_08126418: .4byte sPartyMenuInternal
|
|
_0812641C: .4byte gSpecialVar_ItemId
|
|
_08126420: .4byte gPartyMenuUseExitCallback
|
|
_08126424: .4byte 0x0000ffff
|
|
_08126428: .4byte gStringVar1
|
|
_0812642C: .4byte gStringVar2
|
|
_08126430: .4byte gStringVar4
|
|
_08126434: .4byte gText_PkmnElevatedToLvVar2
|
|
_08126438: .4byte gTasks
|
|
_0812643C: .4byte Task_DisplayLevelUpStatsPg1
|
|
thumb_func_end ItemUseCB_RareCandy
|
|
|
|
thumb_func_start UpdateMonDisplayInfoAfterRareCandy
|
|
UpdateMonDisplayInfoAfterRareCandy: @ 8126440
|
|
push {r4-r7,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r7, r0, 0
|
|
ldr r6, _081264C0 @ =sPartyMenuBoxes
|
|
lsls r4, r7, 4
|
|
ldr r1, [r6]
|
|
adds r1, r4
|
|
adds r0, r5, 0
|
|
bl SetPartyMonAilmentGfx
|
|
ldr r2, _081264C4 @ =gSprites
|
|
ldr r0, [r6]
|
|
adds r3, r4, r0
|
|
ldrb r1, [r3, 0xC]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
bge _0812647C
|
|
adds r0, r5, 0
|
|
adds r1, r3, 0
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonLevelCheck
|
|
_0812647C:
|
|
ldr r1, [r6]
|
|
adds r1, r4
|
|
adds r0, r5, 0
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonHPCheck
|
|
ldr r1, [r6]
|
|
adds r1, r4
|
|
adds r0, r5, 0
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonMaxHPCheck
|
|
ldr r1, [r6]
|
|
adds r1, r4
|
|
adds r0, r5, 0
|
|
bl DisplayPartyPokemonHPBarCheck
|
|
ldr r0, [r6]
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0x9]
|
|
adds r1, r5, 0
|
|
bl UpdatePartyMonHPBar
|
|
adds r0, r7, 0
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
movs r0, 0
|
|
bl ScheduleBgCopyTilemapToVram
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081264C0: .4byte sPartyMenuBoxes
|
|
_081264C4: .4byte gSprites
|
|
thumb_func_end UpdateMonDisplayInfoAfterRareCandy
|
|
|
|
thumb_func_start Task_DisplayLevelUpStatsPg1
|
|
Task_DisplayLevelUpStatsPg1: @ 81264C8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0
|
|
bl WaitFanfare
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08126514
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08126514
|
|
ldr r0, _0812651C @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _081264FA
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08126514
|
|
_081264FA:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r4, 0
|
|
bl DisplayLevelUpStatsPg1
|
|
ldr r0, _08126520 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08126524 @ =Task_DisplayLevelUpStatsPg2
|
|
str r0, [r1]
|
|
_08126514:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812651C: .4byte gMain
|
|
_08126520: .4byte gTasks
|
|
_08126524: .4byte Task_DisplayLevelUpStatsPg2
|
|
thumb_func_end Task_DisplayLevelUpStatsPg1
|
|
|
|
thumb_func_start Task_DisplayLevelUpStatsPg2
|
|
Task_DisplayLevelUpStatsPg2: @ 8126528
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _08126564 @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08126542
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0812655C
|
|
_08126542:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r4, 0
|
|
bl DisplayLevelUpStatsPg2
|
|
ldr r0, _08126568 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0812656C @ =Task_TryLearnNewMoves
|
|
str r0, [r1]
|
|
_0812655C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126564: .4byte gMain
|
|
_08126568: .4byte gTasks
|
|
_0812656C: .4byte Task_TryLearnNewMoves
|
|
thumb_func_end Task_DisplayLevelUpStatsPg2
|
|
|
|
thumb_func_start DisplayLevelUpStatsPg1
|
|
DisplayLevelUpStatsPg1: @ 8126570
|
|
push {r4,r5,lr}
|
|
sub sp, 0x8
|
|
ldr r0, _081265B8 @ =sPartyMenuInternal
|
|
ldr r5, [r0]
|
|
movs r0, 0x86
|
|
lsls r0, 2
|
|
adds r4, r5, r0
|
|
bl CreateLevelUpStatsWindow
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x18]
|
|
ldrh r0, [r4, 0x18]
|
|
movs r1, 0x89
|
|
lsls r1, 2
|
|
adds r2, r5, r1
|
|
movs r1, 0x2
|
|
str r1, [sp]
|
|
movs r1, 0x3
|
|
str r1, [sp, 0x4]
|
|
adds r1, r4, 0
|
|
movs r3, 0x1
|
|
bl DrawLevelUpWindowPg1
|
|
ldrb r0, [r4, 0x18]
|
|
movs r1, 0x2
|
|
bl CopyWindowToVram
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
add sp, 0x8
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081265B8: .4byte sPartyMenuInternal
|
|
thumb_func_end DisplayLevelUpStatsPg1
|
|
|
|
thumb_func_start DisplayLevelUpStatsPg2
|
|
DisplayLevelUpStatsPg2: @ 81265BC
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r0, _081265F4 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
movs r0, 0x86
|
|
lsls r0, 2
|
|
adds r4, r1, r0
|
|
ldrh r0, [r4, 0x18]
|
|
movs r2, 0x89
|
|
lsls r2, 2
|
|
adds r1, r2
|
|
movs r2, 0x3
|
|
str r2, [sp]
|
|
movs r2, 0x1
|
|
movs r3, 0x2
|
|
bl DrawLevelUpWindowPg2
|
|
ldrb r0, [r4, 0x18]
|
|
movs r1, 0x2
|
|
bl CopyWindowToVram
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081265F4: .4byte sPartyMenuInternal
|
|
thumb_func_end DisplayLevelUpStatsPg2
|
|
|
|
thumb_func_start Task_TryLearnNewMoves
|
|
Task_TryLearnNewMoves: @ 81265F8
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r0, 0
|
|
bl WaitFanfare
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0812669A
|
|
ldr r0, _08126650 @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r6, 0x1
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08126620
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0812669A
|
|
_08126620:
|
|
bl RemoveLevelUpStatsWindow
|
|
ldr r4, _08126654 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r4, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08126658 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
bl MonTryLearningNewMove
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
strh r6, [r4, 0x10]
|
|
ldr r0, _0812665C @ =0x0000fffe
|
|
cmp r1, r0
|
|
beq _0812667C
|
|
cmp r1, r0
|
|
bgt _08126660
|
|
cmp r1, 0
|
|
beq _0812666C
|
|
b _08126694
|
|
.align 2, 0
|
|
_08126650: .4byte gMain
|
|
_08126654: .4byte gPartyMenu
|
|
_08126658: .4byte gPlayerParty
|
|
_0812665C: .4byte 0x0000fffe
|
|
_08126660:
|
|
ldr r0, _08126668 @ =0x0000ffff
|
|
cmp r1, r0
|
|
beq _08126674
|
|
b _08126694
|
|
.align 2, 0
|
|
_08126668: .4byte 0x0000ffff
|
|
_0812666C:
|
|
adds r0, r5, 0
|
|
bl PartyMenuTryEvolution
|
|
b _0812669A
|
|
_08126674:
|
|
adds r0, r5, 0
|
|
bl DisplayMonNeedsToReplaceMove
|
|
b _0812669A
|
|
_0812667C:
|
|
ldr r0, _0812668C @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08126690 @ =Task_TryLearningNextMove
|
|
str r0, [r1]
|
|
b _0812669A
|
|
.align 2, 0
|
|
_0812668C: .4byte gTasks
|
|
_08126690: .4byte Task_TryLearningNextMove
|
|
_08126694:
|
|
adds r0, r5, 0
|
|
bl DisplayMonLearnedMove
|
|
_0812669A:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_TryLearnNewMoves
|
|
|
|
thumb_func_start Task_TryLearningNextMove
|
|
Task_TryLearningNextMove: @ 81266A0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _081266D0 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _081266D4 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl MonTryLearningNewMove
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
ldr r0, _081266D8 @ =0x0000fffe
|
|
cmp r1, r0
|
|
beq _081266FE
|
|
cmp r1, r0
|
|
bgt _081266DC
|
|
cmp r1, 0
|
|
beq _081266E8
|
|
b _081266F8
|
|
.align 2, 0
|
|
_081266D0: .4byte gPartyMenu
|
|
_081266D4: .4byte gPlayerParty
|
|
_081266D8: .4byte 0x0000fffe
|
|
_081266DC:
|
|
ldr r0, _081266E4 @ =0x0000ffff
|
|
cmp r1, r0
|
|
beq _081266F0
|
|
b _081266F8
|
|
.align 2, 0
|
|
_081266E4: .4byte 0x0000ffff
|
|
_081266E8:
|
|
adds r0, r4, 0
|
|
bl PartyMenuTryEvolution
|
|
b _081266FE
|
|
_081266F0:
|
|
adds r0, r4, 0
|
|
bl DisplayMonNeedsToReplaceMove
|
|
b _081266FE
|
|
_081266F8:
|
|
adds r0, r4, 0
|
|
bl DisplayMonLearnedMove
|
|
_081266FE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_TryLearningNextMove
|
|
|
|
thumb_func_start PartyMenuTryEvolution
|
|
PartyMenuTryEvolution: @ 8126704
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r6, _08126748 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r6, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _0812674C @ =gPlayerParty
|
|
adds r7, r1, r0
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetEvolutionTargetSpecies
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0
|
|
beq _08126754
|
|
bl FreePartyPointers
|
|
ldr r0, _08126750 @ =gCB2_AfterEvolution
|
|
ldr r1, [r6]
|
|
str r1, [r0]
|
|
ldrb r3, [r6, 0x9]
|
|
adds r0, r7, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x1
|
|
bl BeginEvolutionScene
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
b _08126762
|
|
.align 2, 0
|
|
_08126748: .4byte gPartyMenu
|
|
_0812674C: .4byte gPlayerParty
|
|
_08126750: .4byte gCB2_AfterEvolution
|
|
_08126754:
|
|
ldr r0, _08126768 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _0812676C @ =Task_ClosePartyMenuAfterText
|
|
str r0, [r1]
|
|
_08126762:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126768: .4byte gTasks
|
|
_0812676C: .4byte Task_ClosePartyMenuAfterText
|
|
thumb_func_end PartyMenuTryEvolution
|
|
|
|
thumb_func_start DisplayMonNeedsToReplaceMove
|
|
DisplayMonNeedsToReplaceMove: @ 8126770
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, _081267DC @ =gPartyMenu
|
|
mov r8, r0
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _081267E0 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _081267E4 @ =gStringVar1
|
|
bl GetMonNickname
|
|
ldr r0, _081267E8 @ =gStringVar2
|
|
ldr r6, _081267EC @ =gMoveToLearn
|
|
ldrh r2, [r6]
|
|
movs r1, 0xD
|
|
muls r1, r2
|
|
ldr r2, _081267F0 @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r4, _081267F4 @ =gStringVar4
|
|
ldr r1, _081267F8 @ =gText_PkmnNeedsToReplaceMove
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldrh r0, [r6]
|
|
mov r1, r8
|
|
strh r0, [r1, 0xE]
|
|
ldr r1, _081267FC @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126800 @ =Task_ReplaceMoveYesNo
|
|
str r1, [r0]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081267DC: .4byte gPartyMenu
|
|
_081267E0: .4byte gPlayerParty
|
|
_081267E4: .4byte gStringVar1
|
|
_081267E8: .4byte gStringVar2
|
|
_081267EC: .4byte gMoveToLearn
|
|
_081267F0: .4byte gMoveNames
|
|
_081267F4: .4byte gStringVar4
|
|
_081267F8: .4byte gText_PkmnNeedsToReplaceMove
|
|
_081267FC: .4byte gTasks
|
|
_08126800: .4byte Task_ReplaceMoveYesNo
|
|
thumb_func_end DisplayMonNeedsToReplaceMove
|
|
|
|
thumb_func_start DisplayMonLearnedMove
|
|
DisplayMonLearnedMove: @ 8126804
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r6, r0, 0
|
|
adds r5, r1, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
ldr r0, _08126870 @ =gPartyMenu
|
|
mov r8, r0
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08126874 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08126878 @ =gStringVar1
|
|
bl GetMonNickname
|
|
ldr r0, _0812687C @ =gStringVar2
|
|
movs r1, 0xD
|
|
muls r1, r5
|
|
ldr r2, _08126880 @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r4, _08126884 @ =gStringVar4
|
|
ldr r1, _08126888 @ =gText_PkmnLearnedMove3
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
mov r0, r8
|
|
strh r5, [r0, 0xE]
|
|
ldr r1, _0812688C @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126890 @ =Task_DoLearnedMoveFanfareAfterText
|
|
str r1, [r0]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126870: .4byte gPartyMenu
|
|
_08126874: .4byte gPlayerParty
|
|
_08126878: .4byte gStringVar1
|
|
_0812687C: .4byte gStringVar2
|
|
_08126880: .4byte gMoveNames
|
|
_08126884: .4byte gStringVar4
|
|
_08126888: .4byte gText_PkmnLearnedMove3
|
|
_0812688C: .4byte gTasks
|
|
_08126890: .4byte Task_DoLearnedMoveFanfareAfterText
|
|
thumb_func_end DisplayMonLearnedMove
|
|
|
|
thumb_func_start ItemUseCB_SacredAsh
|
|
ItemUseCB_SacredAsh: @ 8126894
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _081268C8 @ =sPartyMenuInternal
|
|
ldr r2, [r1]
|
|
movs r3, 0x86
|
|
lsls r3, 2
|
|
adds r1, r2, r3
|
|
movs r3, 0
|
|
strh r3, [r1]
|
|
ldr r4, _081268CC @ =0x0000021a
|
|
adds r1, r2, r4
|
|
strh r3, [r1]
|
|
ldr r1, _081268D0 @ =gPartyMenu
|
|
ldrb r1, [r1, 0x9]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r3, 0x87
|
|
lsls r3, 2
|
|
adds r2, r3
|
|
strh r1, [r2]
|
|
bl UseSacredAsh
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081268C8: .4byte sPartyMenuInternal
|
|
_081268CC: .4byte 0x0000021a
|
|
_081268D0: .4byte gPartyMenu
|
|
thumb_func_end ItemUseCB_SacredAsh
|
|
|
|
thumb_func_start UseSacredAsh
|
|
UseSacredAsh: @ 81268D4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
mov r9, r4
|
|
ldr r6, _08126930 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r6, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08126934 @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08126920
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldrb r0, [r6, 0x9]
|
|
ldr r1, _08126938 @ =gSpecialVar_ItemId
|
|
ldrh r1, [r1]
|
|
movs r2, 0
|
|
bl ExecuteTableBasedItemEffect_
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08126944
|
|
_08126920:
|
|
ldr r0, _0812693C @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08126940 @ =Task_SacredAshLoop
|
|
str r0, [r1]
|
|
b _081269EE
|
|
.align 2, 0
|
|
_08126930: .4byte gPartyMenu
|
|
_08126934: .4byte gPlayerParty
|
|
_08126938: .4byte gSpecialVar_ItemId
|
|
_0812693C: .4byte gTasks
|
|
_08126940: .4byte Task_SacredAshLoop
|
|
_08126944:
|
|
movs r0, 0x1
|
|
bl PlaySE
|
|
ldr r7, _08126A00 @ =sPartyMenuInternal
|
|
ldr r0, [r7]
|
|
ldr r1, _08126A04 @ =0x0000021a
|
|
mov r10, r1
|
|
add r0, r10
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
bne _08126960
|
|
ldr r0, _08126A08 @ =gUnknown_203B0D0
|
|
str r5, [r0]
|
|
_08126960:
|
|
ldr r4, _08126A0C @ =sPartyMenuBoxes
|
|
movs r0, 0x9
|
|
ldrsb r0, [r6, r0]
|
|
lsls r0, 4
|
|
ldr r1, [r4]
|
|
adds r1, r0
|
|
adds r0, r5, 0
|
|
bl SetPartyMonAilmentGfx
|
|
ldr r2, _08126A10 @ =gSprites
|
|
movs r0, 0x9
|
|
ldrsb r0, [r6, r0]
|
|
ldr r1, [r4]
|
|
lsls r0, 4
|
|
adds r3, r0, r1
|
|
ldrb r1, [r3, 0xC]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
bge _0812699C
|
|
adds r0, r5, 0
|
|
adds r1, r3, 0
|
|
movs r2, 0x1
|
|
bl DisplayPartyPokemonLevelCheck
|
|
_0812699C:
|
|
ldr r0, [r7]
|
|
movs r1, 0x87
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl AnimatePartySlot
|
|
ldrb r0, [r6, 0x9]
|
|
movs r1, 0x1
|
|
bl AnimatePartySlot
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
adds r3, r0, 0
|
|
mov r2, r8
|
|
subs r3, r2
|
|
lsls r3, 16
|
|
asrs r3, 16
|
|
ldrb r1, [r6, 0x9]
|
|
ldr r0, _08126A14 @ =Task_SacredAshDisplayHPRestored
|
|
str r0, [sp]
|
|
mov r0, r9
|
|
movs r2, 0x1
|
|
bl PartyMenuModifyHP
|
|
mov r0, r9
|
|
movs r1, 0
|
|
mov r2, r8
|
|
bl ResetHPTaskData
|
|
ldr r0, [r7]
|
|
movs r2, 0x86
|
|
lsls r2, 2
|
|
adds r1, r0, r2
|
|
movs r2, 0x1
|
|
strh r2, [r1]
|
|
add r0, r10
|
|
strh r2, [r0]
|
|
_081269EE:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126A00: .4byte sPartyMenuInternal
|
|
_08126A04: .4byte 0x0000021a
|
|
_08126A08: .4byte gUnknown_203B0D0
|
|
_08126A0C: .4byte sPartyMenuBoxes
|
|
_08126A10: .4byte gSprites
|
|
_08126A14: .4byte Task_SacredAshDisplayHPRestored
|
|
thumb_func_end UseSacredAsh
|
|
|
|
thumb_func_start Task_SacredAshLoop
|
|
Task_SacredAshLoop: @ 8126A18
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08126AF6
|
|
ldr r5, _08126A80 @ =sPartyMenuInternal
|
|
ldr r2, [r5]
|
|
movs r0, 0x86
|
|
lsls r0, 2
|
|
adds r1, r2, r0
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
ldr r3, _08126A84 @ =gPartyMenu
|
|
cmp r0, 0x1
|
|
bne _08126A4E
|
|
movs r0, 0
|
|
strh r0, [r1]
|
|
movs r1, 0x9
|
|
ldrsb r1, [r3, r1]
|
|
movs r6, 0x87
|
|
lsls r6, 2
|
|
adds r0, r2, r6
|
|
strh r1, [r0]
|
|
_08126A4E:
|
|
adds r1, r3, 0
|
|
ldrb r0, [r1, 0x9]
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0x6
|
|
bne _08126AF0
|
|
ldr r0, [r5]
|
|
ldr r1, _08126A88 @ =0x0000021a
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bne _08126A94
|
|
ldr r0, _08126A8C @ =gPartyMenuUseExitCallback
|
|
strb r1, [r0]
|
|
ldr r0, _08126A90 @ =gText_WontHaveEffect
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
b _08126ABE
|
|
.align 2, 0
|
|
_08126A80: .4byte sPartyMenuInternal
|
|
_08126A84: .4byte gPartyMenu
|
|
_08126A88: .4byte 0x0000021a
|
|
_08126A8C: .4byte gPartyMenuUseExitCallback
|
|
_08126A90: .4byte gText_WontHaveEffect
|
|
_08126A94:
|
|
ldr r1, _08126AD4 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldrb r1, [r3, 0x8]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _08126AB4
|
|
ldr r0, _08126AD8 @ =gUnknown_203B0D0
|
|
ldr r1, [r0]
|
|
ldr r0, _08126ADC @ =gSpecialVar_ItemId
|
|
ldrh r2, [r0]
|
|
ldr r3, _08126AE0 @ =0x0000ffff
|
|
movs r0, 0x4
|
|
bl ItemUse_SetQuestLogEvent
|
|
_08126AB4:
|
|
ldr r0, _08126ADC @ =gSpecialVar_ItemId
|
|
ldrh r0, [r0]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
_08126ABE:
|
|
ldr r1, _08126AE4 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126AE8 @ =Task_ClosePartyMenuAfterText
|
|
str r1, [r0]
|
|
ldr r1, _08126AEC @ =gPartyMenu
|
|
movs r0, 0
|
|
strb r0, [r1, 0x9]
|
|
b _08126AF6
|
|
.align 2, 0
|
|
_08126AD4: .4byte gPartyMenuUseExitCallback
|
|
_08126AD8: .4byte gUnknown_203B0D0
|
|
_08126ADC: .4byte gSpecialVar_ItemId
|
|
_08126AE0: .4byte 0x0000ffff
|
|
_08126AE4: .4byte gTasks
|
|
_08126AE8: .4byte Task_ClosePartyMenuAfterText
|
|
_08126AEC: .4byte gPartyMenu
|
|
_08126AF0:
|
|
adds r0, r4, 0
|
|
bl UseSacredAsh
|
|
_08126AF6:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_SacredAshLoop
|
|
|
|
thumb_func_start Task_SacredAshDisplayHPRestored
|
|
Task_SacredAshDisplayHPRestored: @ 8126AFC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, _08126B44 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08126B48 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08126B4C @ =gStringVar1
|
|
bl GetMonNickname
|
|
ldr r4, _08126B50 @ =gStringVar4
|
|
ldr r1, _08126B54 @ =gText_PkmnHPRestoredByVar2
|
|
adds r0, r4, 0
|
|
bl StringExpandPlaceholders
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08126B58 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126B5C @ =Task_SacredAshLoop
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126B44: .4byte gPartyMenu
|
|
_08126B48: .4byte gPlayerParty
|
|
_08126B4C: .4byte gStringVar1
|
|
_08126B50: .4byte gStringVar4
|
|
_08126B54: .4byte gText_PkmnHPRestoredByVar2
|
|
_08126B58: .4byte gTasks
|
|
_08126B5C: .4byte Task_SacredAshLoop
|
|
thumb_func_end Task_SacredAshDisplayHPRestored
|
|
|
|
thumb_func_start sub_8126B60
|
|
sub_8126B60: @ 8126B60
|
|
push {r4,r5,lr}
|
|
adds r5, r1, 0
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r2, _08126BB0 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r2, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08126BB4 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08126BB8 @ =gSpecialVar_ItemId
|
|
ldrh r1, [r1]
|
|
ldrb r2, [r2, 0x9]
|
|
movs r3, 0
|
|
bl PokemonUseItemEffects2
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08126BC8
|
|
ldr r1, _08126BBC @ =gPartyMenuUseExitCallback
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, _08126BC0 @ =gText_WontHaveEffect
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _08126BC4 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
str r5, [r0]
|
|
b _08126BCE
|
|
.align 2, 0
|
|
_08126BB0: .4byte gPartyMenu
|
|
_08126BB4: .4byte gPlayerParty
|
|
_08126BB8: .4byte gSpecialVar_ItemId
|
|
_08126BBC: .4byte gPartyMenuUseExitCallback
|
|
_08126BC0: .4byte gText_WontHaveEffect
|
|
_08126BC4: .4byte gTasks
|
|
_08126BC8:
|
|
adds r0, r4, 0
|
|
bl sub_8124DC0
|
|
_08126BCE:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8126B60
|
|
|
|
thumb_func_start ItemUseCB_EvolutionStone
|
|
ItemUseCB_EvolutionStone: @ 8126BD4
|
|
push {r4,r5,lr}
|
|
ldr r1, _08126C10 @ =gCB2_AfterEvolution
|
|
ldr r4, _08126C14 @ =gPartyMenu
|
|
ldr r0, [r4]
|
|
str r0, [r1]
|
|
ldrb r0, [r4, 0x9]
|
|
ldr r5, _08126C18 @ =gSpecialVar_ItemId
|
|
ldrh r1, [r5]
|
|
movs r2, 0
|
|
bl ExecuteTableBasedItemEffect_
|
|
movs r1, 0x9
|
|
ldrsb r1, [r4, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08126C1C @ =gPlayerParty
|
|
adds r1, r0
|
|
ldrh r2, [r5]
|
|
ldr r3, _08126C20 @ =0x0000ffff
|
|
movs r0, 0x4
|
|
bl ItemUse_SetQuestLogEvent
|
|
ldrh r0, [r5]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126C10: .4byte gCB2_AfterEvolution
|
|
_08126C14: .4byte gPartyMenu
|
|
_08126C18: .4byte gSpecialVar_ItemId
|
|
_08126C1C: .4byte gPlayerParty
|
|
_08126C20: .4byte 0x0000ffff
|
|
thumb_func_end ItemUseCB_EvolutionStone
|
|
|
|
thumb_func_start sub_8126C24
|
|
sub_8126C24: @ 8126C24
|
|
push {lr}
|
|
bl IsNationalPokedexEnabled
|
|
cmp r0, 0
|
|
bne _08126C60
|
|
ldr r0, _08126C54 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08126C58 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08126C5C @ =gSpecialVar_ItemId
|
|
ldrh r2, [r1]
|
|
movs r1, 0x2
|
|
bl GetEvolutionTargetSpecies
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x97
|
|
bls _08126C60
|
|
movs r0, 0
|
|
b _08126C62
|
|
.align 2, 0
|
|
_08126C54: .4byte gPartyMenu
|
|
_08126C58: .4byte gPlayerParty
|
|
_08126C5C: .4byte gSpecialVar_ItemId
|
|
_08126C60:
|
|
movs r0, 0x1
|
|
_08126C62:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8126C24
|
|
|
|
thumb_func_start GetItemEffectType
|
|
GetItemEffectType: @ 8126C68
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
adds r2, r1, 0
|
|
subs r2, 0xD
|
|
lsls r0, r2, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xA5
|
|
bls _08126C7C
|
|
b _08126DBC
|
|
_08126C7C:
|
|
cmp r1, 0xAF
|
|
bne _08126C94
|
|
ldr r0, _08126C8C @ =gSaveBlock1Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, _08126C90 @ =0x00003108
|
|
adds r4, r0, r1
|
|
b _08126C9C
|
|
.align 2, 0
|
|
_08126C8C: .4byte gSaveBlock1Ptr
|
|
_08126C90: .4byte 0x00003108
|
|
_08126C94:
|
|
ldr r1, _08126CC4 @ =gItemEffectTable
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
_08126C9C:
|
|
ldrb r1, [r4]
|
|
movs r5, 0x3F
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08126CBE
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0
|
|
bne _08126CBE
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
bne _08126CBE
|
|
ldrb r3, [r4, 0x3]
|
|
movs r0, 0x80
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08126CC8
|
|
_08126CBE:
|
|
movs r0, 0
|
|
b _08126DC2
|
|
.align 2, 0
|
|
_08126CC4: .4byte gItemEffectTable
|
|
_08126CC8:
|
|
movs r2, 0x40
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08126CD6
|
|
movs r0, 0xA
|
|
b _08126DC2
|
|
_08126CD6:
|
|
adds r0, r2, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08126CE2
|
|
movs r0, 0x1
|
|
b _08126DC2
|
|
_08126CE2:
|
|
adds r2, r5, 0
|
|
ands r2, r3
|
|
cmp r2, 0
|
|
bne _08126CF0
|
|
lsrs r0, r1, 7
|
|
cmp r0, 0
|
|
beq _08126D32
|
|
_08126CF0:
|
|
cmp r2, 0x20
|
|
bne _08126CF8
|
|
movs r0, 0x4
|
|
b _08126DC2
|
|
_08126CF8:
|
|
cmp r2, 0x10
|
|
bne _08126D00
|
|
movs r0, 0x3
|
|
b _08126DC2
|
|
_08126D00:
|
|
cmp r2, 0x8
|
|
bne _08126D08
|
|
movs r0, 0x5
|
|
b _08126DC2
|
|
_08126D08:
|
|
cmp r2, 0x4
|
|
bne _08126D10
|
|
movs r0, 0x6
|
|
b _08126DC2
|
|
_08126D10:
|
|
cmp r2, 0x2
|
|
bne _08126D18
|
|
movs r0, 0x7
|
|
b _08126DC2
|
|
_08126D18:
|
|
cmp r2, 0x1
|
|
bne _08126D20
|
|
movs r0, 0x8
|
|
b _08126DC2
|
|
_08126D20:
|
|
lsrs r0, r1, 7
|
|
cmp r0, 0
|
|
beq _08126D2E
|
|
cmp r2, 0
|
|
bne _08126D2E
|
|
movs r0, 0x9
|
|
b _08126DC2
|
|
_08126D2E:
|
|
movs r0, 0xB
|
|
b _08126DC2
|
|
_08126D32:
|
|
ldrb r1, [r4, 0x4]
|
|
movs r0, 0x44
|
|
ands r0, r1
|
|
adds r2, r1, 0
|
|
cmp r0, 0
|
|
beq _08126D42
|
|
movs r0, 0x2
|
|
b _08126DC2
|
|
_08126D42:
|
|
movs r5, 0x2
|
|
adds r0, r5, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08126D50
|
|
movs r0, 0xC
|
|
b _08126DC2
|
|
_08126D50:
|
|
movs r3, 0x1
|
|
adds r0, r3, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08126D5E
|
|
movs r0, 0xD
|
|
b _08126DC2
|
|
_08126D5E:
|
|
ldrb r1, [r4, 0x5]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08126D6C
|
|
movs r0, 0xE
|
|
b _08126DC2
|
|
_08126D6C:
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08126D78
|
|
movs r0, 0xF
|
|
b _08126DC2
|
|
_08126D78:
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08126D84
|
|
movs r0, 0x10
|
|
b _08126DC2
|
|
_08126D84:
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08126D90
|
|
movs r0, 0x11
|
|
b _08126DC2
|
|
_08126D90:
|
|
movs r0, 0x80
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08126D9C
|
|
movs r0, 0x12
|
|
b _08126DC2
|
|
_08126D9C:
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08126DA8
|
|
movs r0, 0x13
|
|
b _08126DC2
|
|
_08126DA8:
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08126DB4
|
|
movs r0, 0x14
|
|
b _08126DC2
|
|
_08126DB4:
|
|
movs r0, 0x18
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08126DC0
|
|
_08126DBC:
|
|
movs r0, 0x16
|
|
b _08126DC2
|
|
_08126DC0:
|
|
movs r0, 0x15
|
|
_08126DC2:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetItemEffectType
|
|
|
|
thumb_func_start TryTutorSelectedMon
|
|
TryTutorSelectedMon: @ 8126DC8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _08126E4C @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08126E98
|
|
ldr r7, _08126E50 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r7, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08126E54 @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
movs r0, 0xE
|
|
adds r0, r7
|
|
mov r8, r0
|
|
ldr r1, _08126E58 @ =gStringVar1
|
|
adds r0, r5, 0
|
|
bl GetMonNickname
|
|
ldr r4, _08126E5C @ =gSpecialVar_0x8005
|
|
ldrb r0, [r4]
|
|
bl GetTutorMove
|
|
strh r0, [r7, 0xE]
|
|
ldr r0, _08126E60 @ =gStringVar2
|
|
movs r1, 0xE
|
|
ldrsh r2, [r7, r1]
|
|
movs r1, 0xD
|
|
muls r1, r2
|
|
ldr r2, _08126E64 @ =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
movs r0, 0x2
|
|
mov r1, r8
|
|
strh r0, [r1, 0x2]
|
|
ldrb r2, [r4]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl CanMonLearnTMTutor
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08126E6C
|
|
cmp r0, 0x2
|
|
beq _08126E74
|
|
ldrh r1, [r7, 0xE]
|
|
adds r0, r5, 0
|
|
bl GiveMoveToMon
|
|
lsls r0, 16
|
|
ldr r1, _08126E68 @ =0xffff0000
|
|
cmp r0, r1
|
|
beq _08126E84
|
|
adds r0, r6, 0
|
|
bl Task_LearnedMove
|
|
b _08126E98
|
|
.align 2, 0
|
|
_08126E4C: .4byte gPaletteFade
|
|
_08126E50: .4byte gPartyMenu
|
|
_08126E54: .4byte gPlayerParty
|
|
_08126E58: .4byte gStringVar1
|
|
_08126E5C: .4byte gSpecialVar_0x8005
|
|
_08126E60: .4byte gStringVar2
|
|
_08126E64: .4byte gMoveNames
|
|
_08126E68: .4byte 0xffff0000
|
|
_08126E6C:
|
|
ldr r1, _08126E70 @ =gText_PkmnCantLearnMove
|
|
b _08126E76
|
|
.align 2, 0
|
|
_08126E70: .4byte gText_PkmnCantLearnMove
|
|
_08126E74:
|
|
ldr r1, _08126E80 @ =gText_PkmnAlreadyKnows
|
|
_08126E76:
|
|
adds r0, r6, 0
|
|
bl DisplayLearnMoveMessageAndClose
|
|
b _08126E98
|
|
.align 2, 0
|
|
_08126E80: .4byte gText_PkmnAlreadyKnows
|
|
_08126E84:
|
|
ldr r0, _08126EA4 @ =gText_PkmnNeedsToReplaceMove
|
|
bl DisplayLearnMoveMessage
|
|
ldr r1, _08126EA8 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126EAC @ =Task_ReplaceMoveYesNo
|
|
str r1, [r0]
|
|
_08126E98:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126EA4: .4byte gText_PkmnNeedsToReplaceMove
|
|
_08126EA8: .4byte gTasks
|
|
_08126EAC: .4byte Task_ReplaceMoveYesNo
|
|
thumb_func_end TryTutorSelectedMon
|
|
|
|
thumb_func_start CB2_PartyMenuFromStartMenu
|
|
CB2_PartyMenuFromStartMenu: @ 8126EB0
|
|
push {lr}
|
|
sub sp, 0xC
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r0, _08126ED4 @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08126ED8 @ =CB2_ReturnToStartMenu
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126ED4: .4byte Task_HandleChooseMonInput
|
|
_08126ED8: .4byte CB2_ReturnToStartMenu
|
|
thumb_func_end CB2_PartyMenuFromStartMenu
|
|
|
|
thumb_func_start CB2_ChooseMonToGiveItem
|
|
CB2_ChooseMonToGiveItem: @ 8126EDC
|
|
push {lr}
|
|
sub sp, 0xC
|
|
ldr r0, _08126EF8 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r0]
|
|
bl GetPocketByItemId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
beq _08126F00
|
|
cmp r0, 0x5
|
|
beq _08126F08
|
|
ldr r1, _08126EFC @ =CB2_ReturnToBagMenu
|
|
b _08126F0A
|
|
.align 2, 0
|
|
_08126EF8: .4byte gSpecialVar_ItemId
|
|
_08126EFC: .4byte CB2_ReturnToBagMenu
|
|
_08126F00:
|
|
ldr r1, _08126F04 @ =sub_8124DA0
|
|
b _08126F0A
|
|
.align 2, 0
|
|
_08126F04: .4byte sub_8124DA0
|
|
_08126F08:
|
|
ldr r1, _08126F30 @ =sub_8124DB0
|
|
_08126F0A:
|
|
movs r0, 0x6
|
|
str r0, [sp]
|
|
ldr r0, _08126F34 @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
str r1, [sp, 0x8]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0x5
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
ldr r1, _08126F38 @ =gPartyMenu
|
|
ldr r0, _08126F3C @ =gSpecialVar_ItemId
|
|
ldrh r0, [r0]
|
|
strh r0, [r1, 0xC]
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126F30: .4byte sub_8124DB0
|
|
_08126F34: .4byte Task_HandleChooseMonInput
|
|
_08126F38: .4byte gPartyMenu
|
|
_08126F3C: .4byte gSpecialVar_ItemId
|
|
thumb_func_end CB2_ChooseMonToGiveItem
|
|
|
|
thumb_func_start TryGiveItemOrMailToSelectedMon
|
|
TryGiveItemOrMailToSelectedMon: @ 8126F40
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r6, r4, 0
|
|
ldr r5, _08126F80 @ =sPartyMenuItemId
|
|
ldr r0, _08126F84 @ =gPartyMenu
|
|
mov r9, r0
|
|
ldrb r0, [r0, 0x9]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
movs r1, 0x64
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r7, _08126F88 @ =gPlayerParty
|
|
adds r0, r7
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
strh r0, [r5]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08126F8C
|
|
adds r0, r4, 0
|
|
bl GiveItemOrMailToSelectedMon
|
|
b _08126FC4
|
|
.align 2, 0
|
|
_08126F80: .4byte sPartyMenuItemId
|
|
_08126F84: .4byte gPartyMenu
|
|
_08126F88: .4byte gPlayerParty
|
|
_08126F8C:
|
|
ldrh r0, [r5]
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08126FA0
|
|
adds r0, r4, 0
|
|
bl DisplayItemMustBeRemovedFirstMessage
|
|
b _08126FC4
|
|
_08126FA0:
|
|
mov r1, r9
|
|
movs r0, 0x9
|
|
ldrsb r0, [r1, r0]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r7
|
|
ldrh r1, [r5]
|
|
movs r2, 0x1
|
|
bl DisplayAlreadyHoldingItemSwitchMessage
|
|
ldr r1, _08126FD0 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08126FD4 @ =Task_SwitchItemsFromBagYesNo
|
|
str r1, [r0]
|
|
_08126FC4:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08126FD0: .4byte gTasks
|
|
_08126FD4: .4byte Task_SwitchItemsFromBagYesNo
|
|
thumb_func_end TryGiveItemOrMailToSelectedMon
|
|
|
|
thumb_func_start GiveItemOrMailToSelectedMon
|
|
GiveItemOrMailToSelectedMon: @ 8126FD8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r5, _08127004 @ =gPartyMenu
|
|
ldrh r0, [r5, 0xC]
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08127010
|
|
ldrh r0, [r5, 0xC]
|
|
bl RemoveItemToGiveFromBag
|
|
ldr r0, _08127008 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _0812700C @ =CB2_WriteMailToGiveMonFromBag
|
|
str r0, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl Task_ClosePartyMenu
|
|
b _08127016
|
|
.align 2, 0
|
|
_08127004: .4byte gPartyMenu
|
|
_08127008: .4byte sPartyMenuInternal
|
|
_0812700C: .4byte CB2_WriteMailToGiveMonFromBag
|
|
_08127010:
|
|
adds r0, r4, 0
|
|
bl GiveItemToSelectedMon
|
|
_08127016:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end GiveItemOrMailToSelectedMon
|
|
|
|
thumb_func_start GiveItemToSelectedMon
|
|
GiveItemToSelectedMon: @ 812701C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08127084 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08127078
|
|
ldr r4, _08127088 @ =gPartyMenu
|
|
ldrh r5, [r4, 0xC]
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
movs r1, 0x64
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r6, _0812708C @ =gPlayerParty
|
|
adds r0, r6
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl DisplayGaveHeldItemMessage
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r6
|
|
adds r1, r5, 0
|
|
bl GiveItemToMon
|
|
adds r0, r5, 0
|
|
bl RemoveItemToGiveFromBag
|
|
ldr r1, _08127090 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08127094 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
str r1, [r0]
|
|
_08127078:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127084: .4byte gPaletteFade
|
|
_08127088: .4byte gPartyMenu
|
|
_0812708C: .4byte gPlayerParty
|
|
_08127090: .4byte gTasks
|
|
_08127094: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
thumb_func_end GiveItemToSelectedMon
|
|
|
|
thumb_func_start Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
Task_UpdateHeldItemSpriteAndClosePartyMenu: @ 8127098
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _081270D4 @ =gPartyMenu
|
|
ldrb r4, [r0, 0x9]
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _081270CC
|
|
lsls r2, r4, 24
|
|
asrs r2, 24
|
|
movs r0, 0x64
|
|
muls r0, r2
|
|
ldr r1, _081270D8 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _081270DC @ =sPartyMenuBoxes
|
|
lsls r2, 4
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
bl UpdatePartyMonHeldItemSprite
|
|
adds r0, r5, 0
|
|
bl Task_ClosePartyMenu
|
|
_081270CC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081270D4: .4byte gPartyMenu
|
|
_081270D8: .4byte gPlayerParty
|
|
_081270DC: .4byte sPartyMenuBoxes
|
|
thumb_func_end Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
|
|
thumb_func_start CB2_WriteMailToGiveMonFromBag
|
|
CB2_WriteMailToGiveMonFromBag: @ 81270E0
|
|
push {r4-r6,lr}
|
|
ldr r4, _08127128 @ =gPartyMenu
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, _0812712C @ =gPlayerParty
|
|
adds r0, r5
|
|
ldrh r1, [r4, 0xC]
|
|
bl GiveItemToMon
|
|
movs r0, 0x9
|
|
ldrsb r0, [r4, r0]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0x40
|
|
bl GetMonData
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _08127130 @ =gSaveBlock1Ptr
|
|
lsls r2, r0, 3
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _08127134 @ =0x00002cd0
|
|
adds r2, r0
|
|
ldr r1, [r1]
|
|
adds r1, r2
|
|
ldr r2, _08127138 @ =CB2_ReturnToPartyOrBagMenuFromWritingMail
|
|
movs r0, 0x4
|
|
bl DoEasyChatScreen
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127128: .4byte gPartyMenu
|
|
_0812712C: .4byte gPlayerParty
|
|
_08127130: .4byte gSaveBlock1Ptr
|
|
_08127134: .4byte 0x00002cd0
|
|
_08127138: .4byte CB2_ReturnToPartyOrBagMenuFromWritingMail
|
|
thumb_func_end CB2_WriteMailToGiveMonFromBag
|
|
|
|
thumb_func_start CB2_ReturnToPartyOrBagMenuFromWritingMail
|
|
CB2_ReturnToPartyOrBagMenuFromWritingMail: @ 812713C
|
|
push {r4-r7,lr}
|
|
sub sp, 0xC
|
|
ldr r6, _0812718C @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r6, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08127190 @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldr r0, _08127194 @ =gSpecialVar_Result
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _0812719C
|
|
adds r0, r5, 0
|
|
bl TakeMailFromMon
|
|
ldr r4, _08127198 @ =sPartyMenuItemId
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
adds r2, r4, 0
|
|
bl SetMonData
|
|
ldrh r0, [r4]
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
adds r0, r7, 0
|
|
bl ReturnGiveItemToBagOrPC
|
|
ldr r0, [r6]
|
|
bl SetMainCallback2
|
|
b _081271B8
|
|
.align 2, 0
|
|
_0812718C: .4byte gPartyMenu
|
|
_08127190: .4byte gPlayerParty
|
|
_08127194: .4byte gSpecialVar_Result
|
|
_08127198: .4byte sPartyMenuItemId
|
|
_0812719C:
|
|
ldrb r0, [r6, 0x8]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
ldrb r2, [r6, 0xB]
|
|
movs r1, 0x7F
|
|
str r1, [sp]
|
|
ldr r1, _081271C0 @ =Task_DisplayGaveMailFromBagMessage
|
|
str r1, [sp, 0x4]
|
|
ldr r1, [r6]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
movs r3, 0x1
|
|
bl InitPartyMenu
|
|
_081271B8:
|
|
add sp, 0xC
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081271C0: .4byte Task_DisplayGaveMailFromBagMessage
|
|
thumb_func_end CB2_ReturnToPartyOrBagMenuFromWritingMail
|
|
|
|
thumb_func_start Task_DisplayGaveMailFromBagMessage
|
|
Task_DisplayGaveMailFromBagMessage: @ 81271C4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _081271EC @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0812721E
|
|
ldr r1, _081271F0 @ =sPartyMenuItemId
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
beq _081271F8
|
|
ldr r0, _081271F4 @ =gPartyMenu
|
|
ldrh r0, [r0, 0xC]
|
|
ldrh r1, [r1]
|
|
movs r2, 0
|
|
bl DisplaySwitchedHeldItemMessage
|
|
b _08127210
|
|
.align 2, 0
|
|
_081271EC: .4byte gPaletteFade
|
|
_081271F0: .4byte sPartyMenuItemId
|
|
_081271F4: .4byte gPartyMenu
|
|
_081271F8:
|
|
ldr r2, _08127224 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r2, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08127228 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldrh r1, [r2, 0xC]
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl DisplayGaveHeldItemMessage
|
|
_08127210:
|
|
ldr r0, _0812722C @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08127230 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
str r0, [r1]
|
|
_0812721E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127224: .4byte gPartyMenu
|
|
_08127228: .4byte gPlayerParty
|
|
_0812722C: .4byte gTasks
|
|
_08127230: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
thumb_func_end Task_DisplayGaveMailFromBagMessage
|
|
|
|
thumb_func_start Task_SwitchItemsFromBagYesNo
|
|
Task_SwitchItemsFromBagYesNo: @ 8127234
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsPartyMenuTextPrinterActive
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08127258
|
|
bl PartyMenuDisplayYesNoMenu
|
|
ldr r0, _08127260 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08127264 @ =Task_HandleSwitchItemsFromBagYesNoInput
|
|
str r0, [r1]
|
|
_08127258:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127260: .4byte gTasks
|
|
_08127264: .4byte Task_HandleSwitchItemsFromBagYesNoInput
|
|
thumb_func_end Task_SwitchItemsFromBagYesNo
|
|
|
|
thumb_func_start Task_HandleSwitchItemsFromBagYesNoInput
|
|
Task_HandleSwitchItemsFromBagYesNoInput: @ 8127268
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
bl Menu_ProcessInputNoWrapClearOnChoose
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _0812728E
|
|
cmp r1, 0
|
|
bgt _08127288
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _08127328
|
|
b _0812733C
|
|
_08127288:
|
|
cmp r1, 0x1
|
|
beq _0812732E
|
|
b _0812733C
|
|
_0812728E:
|
|
ldr r7, _081272C0 @ =gPartyMenu
|
|
ldrh r4, [r7, 0xC]
|
|
adds r0, r4, 0
|
|
bl RemoveItemToGiveFromBag
|
|
ldr r6, _081272C4 @ =sPartyMenuItemId
|
|
ldrh r0, [r6]
|
|
movs r1, 0x1
|
|
bl AddBagItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081272CC
|
|
adds r0, r4, 0
|
|
bl ReturnGiveItemToBagOrPC
|
|
ldrh r0, [r6]
|
|
bl BufferBagFullCantTakeItemMessage
|
|
ldr r0, _081272C8 @ =gStringVar4
|
|
movs r1, 0
|
|
bl DisplayPartyMenuMessage
|
|
b _0812730C
|
|
.align 2, 0
|
|
_081272C0: .4byte gPartyMenu
|
|
_081272C4: .4byte sPartyMenuItemId
|
|
_081272C8: .4byte gStringVar4
|
|
_081272CC:
|
|
adds r0, r4, 0
|
|
bl ItemIsMail
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081272F0
|
|
ldr r0, _081272E8 @ =sPartyMenuInternal
|
|
ldr r1, [r0]
|
|
ldr r0, _081272EC @ =CB2_WriteMailToGiveMonFromBag
|
|
str r0, [r1, 0x4]
|
|
adds r0, r5, 0
|
|
bl Task_ClosePartyMenu
|
|
b _0812733C
|
|
.align 2, 0
|
|
_081272E8: .4byte sPartyMenuInternal
|
|
_081272EC: .4byte CB2_WriteMailToGiveMonFromBag
|
|
_081272F0:
|
|
movs r1, 0x9
|
|
ldrsb r1, [r7, r1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _0812731C @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
bl GiveItemToMon
|
|
ldrh r1, [r6]
|
|
adds r0, r4, 0
|
|
movs r2, 0x1
|
|
bl DisplaySwitchedHeldItemMessage
|
|
_0812730C:
|
|
ldr r1, _08127320 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08127324 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
str r1, [r0]
|
|
b _0812733C
|
|
.align 2, 0
|
|
_0812731C: .4byte gPlayerParty
|
|
_08127320: .4byte gTasks
|
|
_08127324: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
_08127328:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
_0812732E:
|
|
ldr r0, _08127344 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08127348 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
str r0, [r1]
|
|
_0812733C:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127344: .4byte gTasks
|
|
_08127348: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
thumb_func_end Task_HandleSwitchItemsFromBagYesNoInput
|
|
|
|
thumb_func_start DisplayItemMustBeRemovedFirstMessage
|
|
DisplayItemMustBeRemovedFirstMessage: @ 812734C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _08127378 @ =gUnknown_8416BFB
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r1, _0812737C @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _08127380 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127378: .4byte gUnknown_8416BFB
|
|
_0812737C: .4byte gTasks
|
|
_08127380: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
thumb_func_end DisplayItemMustBeRemovedFirstMessage
|
|
|
|
thumb_func_start RemoveItemToGiveFromBag
|
|
RemoveItemToGiveFromBag: @ 8127384
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
ldr r0, _0812739C @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x6
|
|
bne _081273A0
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl RemoveItemFromPC
|
|
b _081273A8
|
|
.align 2, 0
|
|
_0812739C: .4byte gPartyMenu
|
|
_081273A0:
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl RemoveBagItem
|
|
_081273A8:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end RemoveItemToGiveFromBag
|
|
|
|
thumb_func_start ReturnGiveItemToBagOrPC
|
|
ReturnGiveItemToBagOrPC: @ 81273AC
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
ldr r0, _081273C4 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x5
|
|
beq _081273C8
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl AddPCItem
|
|
b _081273D0
|
|
.align 2, 0
|
|
_081273C4: .4byte gPartyMenu
|
|
_081273C8:
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl AddBagItem
|
|
_081273D0:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ReturnGiveItemToBagOrPC
|
|
|
|
thumb_func_start ChooseMonToGiveMailFromMailbox
|
|
ChooseMonToGiveMailFromMailbox: @ 81273D8
|
|
push {lr}
|
|
sub sp, 0xC
|
|
movs r0, 0x6
|
|
str r0, [sp]
|
|
ldr r0, _081273FC @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08127400 @ =CB2_PlayerPC_ReturnFromPartyMenu
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0x7
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081273FC: .4byte Task_HandleChooseMonInput
|
|
_08127400: .4byte CB2_PlayerPC_ReturnFromPartyMenu
|
|
thumb_func_end ChooseMonToGiveMailFromMailbox
|
|
|
|
thumb_func_start TryGiveMailToSelectedMon
|
|
TryGiveMailToSelectedMon: @ 8127404
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _08127450 @ =gPartyMenu
|
|
movs r1, 0x9
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08127454 @ =gPlayerParty
|
|
adds r5, r1, r0
|
|
ldr r1, _08127458 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r2, _0812745C @ =gSaveBlock1Ptr
|
|
ldr r0, _08127460 @ =gPlayerPcMenuManager
|
|
ldrh r1, [r0]
|
|
adds r1, 0x6
|
|
ldrh r0, [r0, 0x2]
|
|
adds r1, r0
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _08127464 @ =0x00002cd0
|
|
adds r0, r1
|
|
ldr r1, [r2]
|
|
adds r4, r1, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0812746C
|
|
ldr r0, _08127468 @ =gText_PkmnHoldingItemCantHoldMail
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
b _08127482
|
|
.align 2, 0
|
|
_08127450: .4byte gPartyMenu
|
|
_08127454: .4byte gPlayerParty
|
|
_08127458: .4byte gPartyMenuUseExitCallback
|
|
_0812745C: .4byte gSaveBlock1Ptr
|
|
_08127460: .4byte gPlayerPcMenuManager
|
|
_08127464: .4byte 0x00002cd0
|
|
_08127468: .4byte gText_PkmnHoldingItemCantHoldMail
|
|
_0812746C:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GiveMailToMon2
|
|
adds r0, r4, 0
|
|
bl ClearMailStruct
|
|
ldr r0, _0812749C @ =gText_MailTransferredFromMailbox
|
|
movs r1, 0x1
|
|
bl DisplayPartyMenuMessage
|
|
_08127482:
|
|
movs r0, 0x2
|
|
bl ScheduleBgCopyTilemapToVram
|
|
ldr r0, _081274A0 @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _081274A4 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
str r0, [r1]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812749C: .4byte gText_MailTransferredFromMailbox
|
|
_081274A0: .4byte gTasks
|
|
_081274A4: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu
|
|
thumb_func_end TryGiveMailToSelectedMon
|
|
|
|
thumb_func_start InitChooseHalfPartyForBattle
|
|
InitChooseHalfPartyForBattle: @ 81274A8
|
|
push {r4,lr}
|
|
sub sp, 0xC
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl ClearSelectedPartyOrder
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r0, _081274EC @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _081274F0 @ =gMain
|
|
ldr r0, [r0, 0x8]
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x4
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
ldr r1, _081274F4 @ =gPartyMenu
|
|
lsls r4, 6
|
|
ldrb r2, [r1, 0x8]
|
|
movs r0, 0x3F
|
|
ands r0, r2
|
|
orrs r0, r4
|
|
strb r0, [r1, 0x8]
|
|
ldr r0, _081274F8 @ =Task_ValidateChosenHalfParty
|
|
str r0, [r1, 0x4]
|
|
add sp, 0xC
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081274EC: .4byte Task_HandleChooseMonInput
|
|
_081274F0: .4byte gMain
|
|
_081274F4: .4byte gPartyMenu
|
|
_081274F8: .4byte Task_ValidateChosenHalfParty
|
|
thumb_func_end InitChooseHalfPartyForBattle
|
|
|
|
thumb_func_start ClearSelectedPartyOrder
|
|
ClearSelectedPartyOrder: @ 81274FC
|
|
push {lr}
|
|
ldr r0, _0812750C @ =gSelectedOrderFromParty
|
|
movs r1, 0
|
|
movs r2, 0x3
|
|
bl memset
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812750C: .4byte gSelectedOrderFromParty
|
|
thumb_func_end ClearSelectedPartyOrder
|
|
|
|
thumb_func_start GetPartySlotEntryStatus
|
|
GetPartySlotEntryStatus: @ 8127510
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
asrs r4, r0, 24
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, _0812752C @ =gPlayerParty
|
|
adds r0, r1
|
|
bl GetBattleEntryEligibility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08127530
|
|
movs r0, 0x2
|
|
b _08127548
|
|
.align 2, 0
|
|
_0812752C: .4byte gPlayerParty
|
|
_08127530:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl HasPartySlotAlreadyBeenSelected
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08127546
|
|
movs r0, 0
|
|
b _08127548
|
|
_08127546:
|
|
movs r0, 0x1
|
|
_08127548:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetPartySlotEntryStatus
|
|
|
|
thumb_func_start GetBattleEntryEligibility
|
|
GetBattleEntryEligibility: @ 8127550
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r5, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _0812757A
|
|
ldr r0, _08127580 @ =gPartyMenu
|
|
ldrb r0, [r0, 0x8]
|
|
lsrs r1, r0, 6
|
|
cmp r1, 0
|
|
beq _08127584
|
|
cmp r1, 0x1
|
|
beq _08127592
|
|
adds r0, r4, 0
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
cmp r0, 0x1E
|
|
bls _081275E0
|
|
_0812757A:
|
|
movs r0, 0
|
|
b _081275E2
|
|
.align 2, 0
|
|
_08127580: .4byte gPartyMenu
|
|
_08127584:
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _081275E0
|
|
b _0812757A
|
|
_08127592:
|
|
ldr r0, _081275E8 @ =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, _081275EC @ =0x0000055c
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _081275AE
|
|
adds r0, r4, 0
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
cmp r0, 0x32
|
|
bhi _0812757A
|
|
_081275AE:
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
ldr r3, _081275F0 @ =gBattleTowerBannedSpecies
|
|
lsls r1, r5, 1
|
|
adds r0, r1, r3
|
|
ldrh r0, [r0]
|
|
ldr r2, _081275F4 @ =0x0000ffff
|
|
cmp r0, r2
|
|
beq _081275E0
|
|
_081275C8:
|
|
adds r0, r1, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, r4
|
|
beq _0812757A
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
lsls r1, r5, 1
|
|
adds r0, r1, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, r2
|
|
bne _081275C8
|
|
_081275E0:
|
|
movs r0, 0x1
|
|
_081275E2:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_081275E8: .4byte gSaveBlock2Ptr
|
|
_081275EC: .4byte 0x0000055c
|
|
_081275F0: .4byte gBattleTowerBannedSpecies
|
|
_081275F4: .4byte 0x0000ffff
|
|
thumb_func_end GetBattleEntryEligibility
|
|
|
|
thumb_func_start CheckBattleEntriesAndGetMessage
|
|
CheckBattleEntriesAndGetMessage: @ 81275F8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r0, _08127618 @ =gPlayerParty
|
|
mov r10, r0
|
|
ldr r0, _0812761C @ =gPartyMenu
|
|
ldrb r0, [r0, 0x8]
|
|
lsrs r0, 6
|
|
cmp r0, 0x1
|
|
beq _08127620
|
|
cmp r0, 0x2
|
|
beq _081276E8
|
|
b _08127700
|
|
.align 2, 0
|
|
_08127618: .4byte gPlayerParty
|
|
_0812761C: .4byte gPartyMenu
|
|
_08127620:
|
|
ldr r1, _0812762C @ =gSelectedOrderFromParty
|
|
ldrb r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _08127630
|
|
movs r0, 0x11
|
|
b _08127702
|
|
.align 2, 0
|
|
_0812762C: .4byte gSelectedOrderFromParty
|
|
_08127630:
|
|
movs r5, 0
|
|
_08127632:
|
|
ldr r2, _081276DC @ =gSelectedOrderFromParty
|
|
adds r4, r2, r5
|
|
ldrb r0, [r4]
|
|
movs r1, 0x64
|
|
muls r0, r1
|
|
subs r0, 0x64
|
|
add r0, r10
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
ldr r2, _081276E0 @ =sPartyMenuInternal
|
|
ldr r1, [r2]
|
|
ldr r2, _081276E4 @ =0x00000236
|
|
adds r1, r2
|
|
strh r0, [r1]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x64
|
|
muls r0, r1
|
|
subs r0, 0x64
|
|
add r0, r10
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
ldr r2, _081276E0 @ =sPartyMenuInternal
|
|
ldr r1, [r2]
|
|
movs r2, 0x8D
|
|
lsls r2, 2
|
|
adds r1, r2
|
|
strh r0, [r1]
|
|
adds r1, r5, 0x1
|
|
lsls r0, r1, 24
|
|
lsrs r5, r0, 24
|
|
mov r9, r1
|
|
cmp r5, 0x2
|
|
bhi _081276D0
|
|
ldr r0, _081276E0 @ =sPartyMenuInternal
|
|
mov r8, r0
|
|
movs r7, 0x64
|
|
_0812767E:
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
ldr r2, _081276E4 @ =0x00000236
|
|
adds r0, r2
|
|
movs r1, 0
|
|
ldrsh r4, [r0, r1]
|
|
ldr r2, _081276DC @ =gSelectedOrderFromParty
|
|
adds r6, r2, r5
|
|
ldrb r0, [r6]
|
|
muls r0, r7
|
|
subs r0, 0x64
|
|
add r0, r10
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r4, r0
|
|
beq _081276F8
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
movs r2, 0x8D
|
|
lsls r2, 2
|
|
adds r1, r0, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
beq _081276C6
|
|
adds r4, r0, 0
|
|
ldrb r0, [r6]
|
|
muls r0, r7
|
|
subs r0, 0x64
|
|
add r0, r10
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
cmp r4, r0
|
|
beq _081276FC
|
|
_081276C6:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x2
|
|
bls _0812767E
|
|
_081276D0:
|
|
mov r1, r9
|
|
lsls r0, r1, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x1
|
|
bls _08127632
|
|
b _08127700
|
|
.align 2, 0
|
|
_081276DC: .4byte gSelectedOrderFromParty
|
|
_081276E0: .4byte sPartyMenuInternal
|
|
_081276E4: .4byte 0x00000236
|
|
_081276E8:
|
|
ldr r2, _081276F4 @ =gSelectedOrderFromParty
|
|
ldrb r0, [r2, 0x1]
|
|
cmp r0, 0
|
|
bne _08127700
|
|
movs r0, 0x12
|
|
b _08127702
|
|
.align 2, 0
|
|
_081276F4: .4byte gSelectedOrderFromParty
|
|
_081276F8:
|
|
movs r0, 0x13
|
|
b _08127702
|
|
_081276FC:
|
|
movs r0, 0x14
|
|
b _08127702
|
|
_08127700:
|
|
movs r0, 0xFF
|
|
_08127702:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CheckBattleEntriesAndGetMessage
|
|
|
|
thumb_func_start HasPartySlotAlreadyBeenSelected
|
|
HasPartySlotAlreadyBeenSelected: @ 8127710
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
movs r1, 0
|
|
ldr r3, _08127728 @ =gSelectedOrderFromParty
|
|
_0812771A:
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _0812772C
|
|
movs r0, 0x1
|
|
b _08127738
|
|
.align 2, 0
|
|
_08127728: .4byte gSelectedOrderFromParty
|
|
_0812772C:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x2
|
|
bls _0812771A
|
|
movs r0, 0
|
|
_08127738:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end HasPartySlotAlreadyBeenSelected
|
|
|
|
thumb_func_start Task_ValidateChosenHalfParty
|
|
Task_ValidateChosenHalfParty: @ 812773C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r6, r5, 0
|
|
bl CheckBattleEntriesAndGetMessage
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0xFF
|
|
beq _08127768
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
adds r0, r4, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _08127764 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
b _08127796
|
|
.align 2, 0
|
|
_08127764: .4byte gTasks
|
|
_08127768:
|
|
ldr r0, _08127780 @ =gSelectedOrderFromParty
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08127784
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
adds r0, r5, 0
|
|
bl Task_ClosePartyMenu
|
|
b _0812779E
|
|
.align 2, 0
|
|
_08127780: .4byte gSelectedOrderFromParty
|
|
_08127784:
|
|
movs r0, 0x1A
|
|
bl PlaySE
|
|
movs r0, 0xE
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _081277A4 @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
_08127796:
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _081277A8 @ =Task_ContinueChoosingHalfParty
|
|
str r0, [r1]
|
|
_0812779E:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081277A4: .4byte gTasks
|
|
_081277A8: .4byte Task_ContinueChoosingHalfParty
|
|
thumb_func_end Task_ValidateChosenHalfParty
|
|
|
|
thumb_func_start Task_ContinueChoosingHalfParty
|
|
Task_ContinueChoosingHalfParty: @ 81277AC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _081277E8 @ =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _081277C6
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _081277E0
|
|
_081277C6:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
movs r0, 0
|
|
bl DisplayPartyMenuStdMessage
|
|
ldr r0, _081277EC @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _081277F0 @ =Task_HandleChooseMonInput
|
|
str r0, [r1]
|
|
_081277E0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081277E8: .4byte gMain
|
|
_081277EC: .4byte gTasks
|
|
_081277F0: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end Task_ContinueChoosingHalfParty
|
|
|
|
thumb_func_start ChooseMonForMoveTutor
|
|
ChooseMonForMoveTutor: @ 81277F4
|
|
push {lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
ldr r2, _08127818 @ =Task_HandleChooseMonInput
|
|
str r2, [sp, 0x4]
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127818: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end ChooseMonForMoveTutor
|
|
|
|
thumb_func_start sub_812781C
|
|
sub_812781C: @ 812781C
|
|
push {lr}
|
|
sub sp, 0xC
|
|
ldr r0, _08127844 @ =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xE
|
|
bhi _08127850
|
|
movs r0, 0x4
|
|
str r0, [sp]
|
|
ldr r0, _08127848 @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _0812784C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0xC
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
b _08127870
|
|
.align 2, 0
|
|
_08127844: .4byte gSpecialVar_0x8005
|
|
_08127848: .4byte Task_HandleChooseMonInput
|
|
_0812784C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
|
|
_08127850:
|
|
movs r0, 0x7F
|
|
str r0, [sp]
|
|
ldr r0, _08127878 @ =TryTutorSelectedMon
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _0812787C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0xC
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
ldr r1, _08127880 @ =gPartyMenu
|
|
ldr r0, _08127884 @ =gSpecialVar_0x8007
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, 0x9]
|
|
_08127870:
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127878: .4byte TryTutorSelectedMon
|
|
_0812787C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
|
|
_08127880: .4byte gPartyMenu
|
|
_08127884: .4byte gSpecialVar_0x8007
|
|
thumb_func_end sub_812781C
|
|
|
|
thumb_func_start ChooseMonForWirelessMinigame
|
|
ChooseMonForWirelessMinigame: @ 8127888
|
|
push {lr}
|
|
sub sp, 0xC
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
ldr r0, _081278AC @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _081278B0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0xB
|
|
movs r1, 0
|
|
movs r2, 0xD
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081278AC: .4byte Task_HandleChooseMonInput
|
|
_081278B0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
|
|
thumb_func_end ChooseMonForWirelessMinigame
|
|
|
|
thumb_func_start GetPartyLayoutFromBattleType
|
|
GetPartyLayoutFromBattleType: @ 81278B4
|
|
push {lr}
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081278C4
|
|
movs r0, 0
|
|
b _081278D6
|
|
_081278C4:
|
|
bl IsMultiBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _081278D4
|
|
movs r0, 0x1
|
|
b _081278D6
|
|
_081278D4:
|
|
movs r0, 0x2
|
|
_081278D6:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetPartyLayoutFromBattleType
|
|
|
|
thumb_func_start OpenPartyMenuInTutorialBattle
|
|
OpenPartyMenuInTutorialBattle: @ 81278DC
|
|
push {r4,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x8
|
|
bl sub_80EB2E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08127930
|
|
ldr r0, _08127924 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08127930
|
|
bl GetPartyLayoutFromBattleType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x7F
|
|
str r0, [sp]
|
|
ldr r0, _08127928 @ =sub_8120C3C
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _0812792C @ =SetCB2ToReshowScreenAfterMenu
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x1
|
|
adds r2, r4, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
movs r0, 0x8
|
|
bl sub_80EB2F4
|
|
b _08127950
|
|
.align 2, 0
|
|
_08127924: .4byte gBattleTypeFlags
|
|
_08127928: .4byte sub_8120C3C
|
|
_0812792C: .4byte SetCB2ToReshowScreenAfterMenu
|
|
_08127930:
|
|
bl GetPartyLayoutFromBattleType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r0, _08127960 @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08127964 @ =SetCB2ToReshowScreenAfterMenu
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x1
|
|
adds r2, r4, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
_08127950:
|
|
bl nullsub_44
|
|
bl UpdatePartyToBattleOrder
|
|
add sp, 0xC
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127960: .4byte Task_HandleChooseMonInput
|
|
_08127964: .4byte SetCB2ToReshowScreenAfterMenu
|
|
thumb_func_end OpenPartyMenuInTutorialBattle
|
|
|
|
thumb_func_start OpenPartyMenuInBattle
|
|
OpenPartyMenuInBattle: @ 8127968
|
|
push {lr}
|
|
sub sp, 0xC
|
|
bl GetPartyLayoutFromBattleType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r0, _0812799C @ =sub_8120EBC
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _081279A0 @ =SetCB2ToReshowScreenAfterMenu
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
bl nullsub_44
|
|
bl UpdatePartyToBattleOrder
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0812799C: .4byte sub_8120EBC
|
|
_081279A0: .4byte SetCB2ToReshowScreenAfterMenu
|
|
thumb_func_end OpenPartyMenuInBattle
|
|
|
|
thumb_func_start ChooseMonForInBattleItem
|
|
ChooseMonForInBattleItem: @ 81279A4
|
|
push {lr}
|
|
sub sp, 0xC
|
|
bl GetPartyLayoutFromBattleType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x5
|
|
str r0, [sp]
|
|
ldr r0, _081279D8 @ =sub_8120FCC
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _081279DC @ =sub_8107ECC
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r2, 0xE
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
bl nullsub_44
|
|
bl UpdatePartyToBattleOrder
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081279D8: .4byte sub_8120FCC
|
|
_081279DC: .4byte sub_8107ECC
|
|
thumb_func_end ChooseMonForInBattleItem
|
|
|
|
thumb_func_start sub_81279E0
|
|
sub_81279E0: @ 81279E0
|
|
push {r4,lr}
|
|
sub sp, 0xC
|
|
movs r0, 0x8
|
|
bl sub_80EB2E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08127A30
|
|
ldr r0, _08127A24 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08127A30
|
|
bl GetPartyLayoutFromBattleType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x7F
|
|
str r0, [sp]
|
|
ldr r0, _08127A28 @ =sub_8120C3C
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08127A2C @ =sub_8107ECC
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r2, 0x3
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
movs r0, 0x8
|
|
bl sub_80EB2F4
|
|
b _08127A62
|
|
.align 2, 0
|
|
_08127A24: .4byte gBattleTypeFlags
|
|
_08127A28: .4byte sub_8120C3C
|
|
_08127A2C: .4byte sub_8107ECC
|
|
_08127A30:
|
|
ldr r0, _08127A74 @ =gSpecialVar_ItemId
|
|
ldrh r0, [r0]
|
|
bl GetPocketByItemId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r4, _08127A78 @ =sub_8107ECC
|
|
cmp r0, 0x5
|
|
bne _08127A44
|
|
ldr r4, _08127A7C @ =sub_8124DB0
|
|
_08127A44:
|
|
bl GetPartyLayoutFromBattleType
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x5
|
|
str r0, [sp]
|
|
ldr r0, _08127A80 @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r2, 0x3
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
_08127A62:
|
|
bl nullsub_44
|
|
bl UpdatePartyToBattleOrder
|
|
add sp, 0xC
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127A74: .4byte gSpecialVar_ItemId
|
|
_08127A78: .4byte sub_8107ECC
|
|
_08127A7C: .4byte sub_8124DB0
|
|
_08127A80: .4byte Task_HandleChooseMonInput
|
|
thumb_func_end sub_81279E0
|
|
|
|
thumb_func_start GetPartyMenuActionsTypeInBattle
|
|
GetPartyMenuActionsTypeInBattle: @ 8127A84
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _08127AA4 @ =gPlayerParty + 100 @ &gPlayerParty[1]
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08127AA0
|
|
adds r0, r4, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08127AA8
|
|
_08127AA0:
|
|
movs r0, 0x7
|
|
b _08127ABA
|
|
.align 2, 0
|
|
_08127AA4: .4byte gPlayerParty + 100 @ &gPlayerParty[1]
|
|
_08127AA8:
|
|
ldr r0, _08127AB4 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x1
|
|
beq _08127AB8
|
|
movs r0, 0x2
|
|
b _08127ABA
|
|
.align 2, 0
|
|
_08127AB4: .4byte gPartyMenu
|
|
_08127AB8:
|
|
movs r0, 0x3
|
|
_08127ABA:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetPartyMenuActionsTypeInBattle
|
|
|
|
thumb_func_start TrySwitchInPokemon
|
|
TrySwitchInPokemon: @ 8127AC0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
bl GetCursorSelectionMonId
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
bl IsMultiBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08127B08
|
|
cmp r5, 0x1
|
|
beq _08127AE6
|
|
cmp r5, 0x4
|
|
beq _08127AE6
|
|
cmp r5, 0x5
|
|
bne _08127B08
|
|
_08127AE6:
|
|
ldr r4, _08127AFC @ =gStringVar1
|
|
bl GetTrainerPartnerName
|
|
adds r1, r0, 0
|
|
adds r0, r4, 0
|
|
bl StringCopy
|
|
ldr r0, _08127B00 @ =gStringVar4
|
|
ldr r1, _08127B04 @ =gUnknown_8416A98
|
|
b _08127C86
|
|
.align 2, 0
|
|
_08127AFC: .4byte gStringVar1
|
|
_08127B00: .4byte gStringVar4
|
|
_08127B04: .4byte gUnknown_8416A98
|
|
_08127B08:
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, _08127B2C @ =gPlayerParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08127B3C
|
|
ldr r1, _08127B30 @ =gStringVar1
|
|
adds r0, r4, 0
|
|
bl GetMonNickname
|
|
ldr r0, _08127B34 @ =gStringVar4
|
|
ldr r1, _08127B38 @ =gUnknown_8416A75
|
|
b _08127C86
|
|
.align 2, 0
|
|
_08127B2C: .4byte gPlayerParty
|
|
_08127B30: .4byte gStringVar1
|
|
_08127B34: .4byte gStringVar4
|
|
_08127B38: .4byte gUnknown_8416A75
|
|
_08127B3C:
|
|
movs r4, 0
|
|
b _08127B68
|
|
_08127B40:
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08127B62
|
|
adds r0, r5, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
lsls r0, 24
|
|
ldr r2, _08127B90 @ =gBattlerPartyIndexes
|
|
lsls r1, r4, 1
|
|
adds r1, r2
|
|
lsrs r0, 24
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
beq _08127C40
|
|
_08127B62:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
_08127B68:
|
|
ldr r0, _08127B94 @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bcc _08127B40
|
|
movs r7, 0x64
|
|
adds r0, r5, 0
|
|
muls r0, r7
|
|
ldr r1, _08127B98 @ =gPlayerParty
|
|
mov r8, r1
|
|
adds r6, r0, r1
|
|
adds r0, r6, 0
|
|
movs r1, 0x2D
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08127BA4
|
|
ldr r0, _08127B9C @ =gStringVar4
|
|
ldr r1, _08127BA0 @ =gUnknown_8416ACB
|
|
b _08127C86
|
|
.align 2, 0
|
|
_08127B90: .4byte gBattlerPartyIndexes
|
|
_08127B94: .4byte gBattlersCount
|
|
_08127B98: .4byte gPlayerParty
|
|
_08127B9C: .4byte gStringVar4
|
|
_08127BA0: .4byte gUnknown_8416ACB
|
|
_08127BA4:
|
|
adds r0, r5, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
ldr r1, _08127BC8 @ =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r1, 0x8B
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _08127BD8
|
|
ldr r1, _08127BCC @ =gStringVar1
|
|
adds r0, r6, 0
|
|
bl GetMonNickname
|
|
ldr r0, _08127BD0 @ =gStringVar4
|
|
ldr r1, _08127BD4 @ =gUnknown_8416A55
|
|
b _08127C86
|
|
.align 2, 0
|
|
_08127BC8: .4byte gBattleStruct
|
|
_08127BCC: .4byte gStringVar1
|
|
_08127BD0: .4byte gStringVar4
|
|
_08127BD4: .4byte gUnknown_8416A55
|
|
_08127BD8:
|
|
ldr r0, _08127BE8 @ =gPartyMenu
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0x4
|
|
bne _08127BEC
|
|
bl SetMonPreventsSwitchingString
|
|
b _08127C8A
|
|
.align 2, 0
|
|
_08127BE8: .4byte gPartyMenu
|
|
_08127BEC:
|
|
cmp r0, 0x2
|
|
beq _08127C64
|
|
adds r0, r5, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
ldr r1, _08127C30 @ =gSelectedMonPartyId
|
|
strb r0, [r1]
|
|
ldr r1, _08127C34 @ =gPartyMenuUseExitCallback
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, _08127C38 @ =gBattlerPartyIndexes
|
|
ldr r0, _08127C3C @ =gBattlerInMenuId
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl SwitchPartyMonSlots
|
|
adds r0, r4, 0
|
|
muls r0, r7
|
|
add r0, r8
|
|
adds r1, r6, 0
|
|
bl SwapPartyPokemon
|
|
movs r0, 0x1
|
|
b _08127C8C
|
|
.align 2, 0
|
|
_08127C30: .4byte gSelectedMonPartyId
|
|
_08127C34: .4byte gPartyMenuUseExitCallback
|
|
_08127C38: .4byte gBattlerPartyIndexes
|
|
_08127C3C: .4byte gBattlerInMenuId
|
|
_08127C40:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, _08127C54 @ =gPlayerParty
|
|
adds r0, r1
|
|
ldr r1, _08127C58 @ =gStringVar1
|
|
bl GetMonNickname
|
|
ldr r0, _08127C5C @ =gStringVar4
|
|
ldr r1, _08127C60 @ =gUnknown_8416A3A
|
|
b _08127C86
|
|
.align 2, 0
|
|
_08127C54: .4byte gPlayerParty
|
|
_08127C58: .4byte gStringVar1
|
|
_08127C5C: .4byte gStringVar4
|
|
_08127C60: .4byte gUnknown_8416A3A
|
|
_08127C64:
|
|
ldr r0, _08127C98 @ =gBattlerInMenuId
|
|
ldrb r0, [r0]
|
|
ldr r1, _08127C9C @ =gBattlerPartyIndexes
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
muls r0, r7
|
|
add r0, r8
|
|
ldr r1, _08127CA0 @ =gStringVar1
|
|
bl GetMonNickname
|
|
ldr r0, _08127CA4 @ =gStringVar4
|
|
ldr r1, _08127CA8 @ =gUnknown_8416A1E
|
|
_08127C86:
|
|
bl StringExpandPlaceholders
|
|
_08127C8A:
|
|
movs r0, 0
|
|
_08127C8C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08127C98: .4byte gBattlerInMenuId
|
|
_08127C9C: .4byte gBattlerPartyIndexes
|
|
_08127CA0: .4byte gStringVar1
|
|
_08127CA4: .4byte gStringVar4
|
|
_08127CA8: .4byte gUnknown_8416A1E
|
|
thumb_func_end TrySwitchInPokemon
|
|
|
|
thumb_func_start BufferBattlePartyCurrentOrder
|
|
BufferBattlePartyCurrentOrder: @ 8127CAC
|
|
push {r4,lr}
|
|
ldr r4, _08127CC8 @ =gBattlePartyCurrentOrder
|
|
bl sub_80435E0
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl BufferBattlePartyOrder
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127CC8: .4byte gBattlePartyCurrentOrder
|
|
thumb_func_end BufferBattlePartyCurrentOrder
|
|
|
|
thumb_func_start BufferBattlePartyOrder
|
|
BufferBattlePartyOrder: @ 8127CCC
|
|
push {r4-r6,lr}
|
|
sub sp, 0x8
|
|
adds r6, r0, 0
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
bl IsMultiBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08127D02
|
|
cmp r4, 0
|
|
beq _08127CF4
|
|
movs r0, 0x30
|
|
strb r0, [r6]
|
|
movs r0, 0x45
|
|
strb r0, [r6, 0x1]
|
|
movs r0, 0x12
|
|
strb r0, [r6, 0x2]
|
|
b _08127D9C
|
|
_08127CF4:
|
|
movs r0, 0x3
|
|
strb r0, [r6]
|
|
movs r0, 0x12
|
|
strb r0, [r6, 0x1]
|
|
movs r0, 0x45
|
|
strb r0, [r6, 0x2]
|
|
b _08127D9C
|
|
_08127D02:
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08127D40
|
|
movs r5, 0x1
|
|
movs r0, 0
|
|
bl GetBattlerAtPosition
|
|
mov r2, sp
|
|
ldr r1, _08127D3C @ =gBattlerPartyIndexes
|
|
lsls r0, 24
|
|
lsrs r0, 23
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
strb r0, [r2]
|
|
movs r4, 0
|
|
mov r1, sp
|
|
_08127D26:
|
|
ldrb r0, [r1]
|
|
cmp r4, r0
|
|
beq _08127D34
|
|
mov r2, sp
|
|
adds r0, r2, r5
|
|
strb r4, [r0]
|
|
adds r5, 0x1
|
|
_08127D34:
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08127D26
|
|
b _08127D84
|
|
.align 2, 0
|
|
_08127D3C: .4byte gBattlerPartyIndexes
|
|
_08127D40:
|
|
movs r5, 0x2
|
|
movs r0, 0
|
|
bl GetBattlerAtPosition
|
|
mov r1, sp
|
|
ldr r4, _08127DA4 @ =gBattlerPartyIndexes
|
|
lsls r0, 24
|
|
lsrs r0, 23
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
strb r0, [r1]
|
|
movs r0, 0x2
|
|
bl GetBattlerAtPosition
|
|
mov r1, sp
|
|
lsls r0, 24
|
|
lsrs r0, 23
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, 0x1]
|
|
movs r4, 0
|
|
_08127D6A:
|
|
ldrb r0, [r1]
|
|
cmp r4, r0
|
|
beq _08127D7E
|
|
ldrb r0, [r1, 0x1]
|
|
cmp r4, r0
|
|
beq _08127D7E
|
|
mov r2, sp
|
|
adds r0, r2, r5
|
|
strb r4, [r0]
|
|
adds r5, 0x1
|
|
_08127D7E:
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08127D6A
|
|
_08127D84:
|
|
movs r4, 0
|
|
mov r3, sp
|
|
_08127D88:
|
|
adds r0, r6, r4
|
|
ldrb r1, [r3]
|
|
lsls r1, 4
|
|
ldrb r2, [r3, 0x1]
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
adds r3, 0x2
|
|
adds r4, 0x1
|
|
cmp r4, 0x2
|
|
ble _08127D88
|
|
_08127D9C:
|
|
add sp, 0x8
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127DA4: .4byte gBattlerPartyIndexes
|
|
thumb_func_end BufferBattlePartyOrder
|
|
|
|
thumb_func_start BufferBattlePartyCurrentOrderBySide
|
|
BufferBattlePartyCurrentOrderBySide: @ 8127DA8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r0, _08127DC8 @ =gBattleStruct
|
|
lsls r3, r2, 1
|
|
adds r3, r2
|
|
adds r3, 0x60
|
|
ldr r0, [r0]
|
|
adds r0, r3
|
|
bl BufferBattlePartyOrderBySide
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127DC8: .4byte gBattleStruct
|
|
thumb_func_end BufferBattlePartyCurrentOrderBySide
|
|
|
|
thumb_func_start BufferBattlePartyOrderBySide
|
|
BufferBattlePartyOrderBySide: @ 8127DCC
|
|
push {r4-r7,lr}
|
|
sub sp, 0x8
|
|
adds r5, r0, 0
|
|
adds r0, r2, 0
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08127DF4
|
|
movs r0, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x2
|
|
b _08127E00
|
|
_08127DF4:
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r0, 0x3
|
|
_08127E00:
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
bl IsMultiBattle
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08127E34
|
|
cmp r7, 0
|
|
beq _08127E26
|
|
movs r0, 0x30
|
|
strb r0, [r5]
|
|
movs r0, 0x45
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x12
|
|
strb r0, [r5, 0x2]
|
|
b _08127EB6
|
|
_08127E26:
|
|
movs r0, 0x3
|
|
strb r0, [r5]
|
|
movs r0, 0x12
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x45
|
|
strb r0, [r5, 0x2]
|
|
b _08127EB6
|
|
_08127E34:
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08127E6C
|
|
movs r3, 0x1
|
|
mov r2, sp
|
|
ldr r1, _08127E68 @ =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
strb r0, [r2]
|
|
movs r4, 0
|
|
mov r1, sp
|
|
_08127E50:
|
|
ldrb r0, [r1]
|
|
cmp r4, r0
|
|
beq _08127E5E
|
|
mov r2, sp
|
|
adds r0, r2, r3
|
|
strb r4, [r0]
|
|
adds r3, 0x1
|
|
_08127E5E:
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08127E50
|
|
b _08127E9E
|
|
.align 2, 0
|
|
_08127E68: .4byte gBattlerPartyIndexes
|
|
_08127E6C:
|
|
movs r3, 0x2
|
|
mov r1, sp
|
|
ldr r2, _08127EC0 @ =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
strb r0, [r1]
|
|
lsls r0, r6, 1
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, 0x1]
|
|
movs r4, 0
|
|
_08127E84:
|
|
ldrb r0, [r1]
|
|
cmp r4, r0
|
|
beq _08127E98
|
|
ldrb r0, [r1, 0x1]
|
|
cmp r4, r0
|
|
beq _08127E98
|
|
mov r2, sp
|
|
adds r0, r2, r3
|
|
strb r4, [r0]
|
|
adds r3, 0x1
|
|
_08127E98:
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08127E84
|
|
_08127E9E:
|
|
movs r4, 0
|
|
mov r3, sp
|
|
_08127EA2:
|
|
adds r0, r5, r4
|
|
ldrb r1, [r3]
|
|
lsls r1, 4
|
|
ldrb r2, [r3, 0x1]
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
adds r3, 0x2
|
|
adds r4, 0x1
|
|
cmp r4, 0x2
|
|
ble _08127EA2
|
|
_08127EB6:
|
|
add sp, 0x8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127EC0: .4byte gBattlerPartyIndexes
|
|
thumb_func_end BufferBattlePartyOrderBySide
|
|
|
|
thumb_func_start SwitchPartyOrderLinkMulti
|
|
SwitchPartyOrderLinkMulti: @ 8127EC4
|
|
push {r4-r7,lr}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
movs r7, 0
|
|
bl IsMultiBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08127F72
|
|
ldr r0, _08127F28 @ =gBattleStruct
|
|
lsls r1, r4, 1
|
|
adds r1, r4
|
|
adds r1, 0x60
|
|
ldr r0, [r0]
|
|
adds r4, r0, r1
|
|
movs r2, 0
|
|
add r6, sp
|
|
mov r12, r6
|
|
movs r6, 0xF
|
|
mov r3, sp
|
|
_08127EF6:
|
|
adds r1, r4, r2
|
|
ldrb r0, [r1]
|
|
lsrs r0, 4
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
ldrb r1, [r1]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
adds r2, 0x1
|
|
cmp r2, 0x2
|
|
ble _08127EF6
|
|
mov r0, r12
|
|
ldrb r3, [r0]
|
|
movs r2, 0
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
cmp r0, r5
|
|
bne _08127F2C
|
|
mov r0, sp
|
|
ldrb r7, [r0]
|
|
strb r3, [r0]
|
|
b _08127F40
|
|
.align 2, 0
|
|
_08127F28: .4byte gBattleStruct
|
|
_08127F2C:
|
|
adds r2, 0x1
|
|
cmp r2, 0x5
|
|
bgt _08127F40
|
|
mov r0, sp
|
|
adds r1, r0, r2
|
|
ldrb r0, [r1]
|
|
cmp r0, r5
|
|
bne _08127F2C
|
|
adds r7, r0, 0
|
|
strb r3, [r1]
|
|
_08127F40:
|
|
cmp r2, 0x6
|
|
beq _08127F72
|
|
mov r0, r12
|
|
strb r7, [r0]
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x1]
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x2]
|
|
lsls r0, 4
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x3]
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x4]
|
|
lsls r0, 4
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x5]
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x2]
|
|
_08127F72:
|
|
add sp, 0x8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SwitchPartyOrderLinkMulti
|
|
|
|
thumb_func_start GetPartyIdFromBattleSlot
|
|
GetPartyIdFromBattleSlot: @ 8127F7C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
movs r1, 0x1
|
|
ands r1, r2
|
|
lsrs r2, r0, 25
|
|
cmp r1, 0
|
|
beq _08127F9C
|
|
ldr r0, _08127F98 @ =gBattlePartyCurrentOrder
|
|
adds r0, r2, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
b _08127FA4
|
|
.align 2, 0
|
|
_08127F98: .4byte gBattlePartyCurrentOrder
|
|
_08127F9C:
|
|
ldr r0, _08127FAC @ =gBattlePartyCurrentOrder
|
|
adds r0, r2, r0
|
|
ldrb r0, [r0]
|
|
lsrs r1, r0, 4
|
|
_08127FA4:
|
|
adds r0, r1, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08127FAC: .4byte gBattlePartyCurrentOrder
|
|
thumb_func_end GetPartyIdFromBattleSlot
|
|
|
|
thumb_func_start SetPartyIdAtBattleSlot
|
|
SetPartyIdAtBattleSlot: @ 8127FB0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
movs r1, 0x1
|
|
ands r1, r3
|
|
lsrs r3, r0, 25
|
|
cmp r1, 0
|
|
beq _08127FD8
|
|
ldr r0, _08127FD4 @ =gBattlePartyCurrentOrder
|
|
adds r0, r3, r0
|
|
ldrb r2, [r0]
|
|
movs r1, 0xF0
|
|
ands r1, r2
|
|
orrs r1, r4
|
|
strb r1, [r0]
|
|
b _08127FE8
|
|
.align 2, 0
|
|
_08127FD4: .4byte gBattlePartyCurrentOrder
|
|
_08127FD8:
|
|
ldr r2, _08127FF0 @ =gBattlePartyCurrentOrder
|
|
adds r2, r3, r2
|
|
ldrb r1, [r2]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
lsls r1, r4, 4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08127FE8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08127FF0: .4byte gBattlePartyCurrentOrder
|
|
thumb_func_end SetPartyIdAtBattleSlot
|
|
|
|
thumb_func_start SwitchPartyMonSlots
|
|
SwitchPartyMonSlots: @ 8127FF4
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
adds r6, r1, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
adds r0, r5, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r6, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl SetPartyIdAtBattleSlot
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl SetPartyIdAtBattleSlot
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SwitchPartyMonSlots
|
|
|
|
thumb_func_start pokemon_order_func
|
|
pokemon_order_func: @ 8128030
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r3, 0
|
|
movs r2, 0
|
|
ldr r5, _08128058 @ =gBattlePartyCurrentOrder
|
|
_0812803C:
|
|
adds r0, r3, r5
|
|
ldrb r1, [r0]
|
|
lsrs r0, r1, 4
|
|
cmp r0, r4
|
|
beq _08128054
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, r4
|
|
bne _0812805C
|
|
_08128054:
|
|
adds r0, r2, 0
|
|
b _0812806E
|
|
.align 2, 0
|
|
_08128058: .4byte gBattlePartyCurrentOrder
|
|
_0812805C:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0x2
|
|
bls _0812803C
|
|
movs r0, 0
|
|
_0812806E:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end pokemon_order_func
|
|
|
|
thumb_func_start UpdatePartyToBattleOrder
|
|
UpdatePartyToBattleOrder: @ 8128074
|
|
push {r4-r6,lr}
|
|
movs r4, 0x96
|
|
lsls r4, 2
|
|
adds r0, r4, 0
|
|
bl Alloc
|
|
adds r5, r0, 0
|
|
ldr r1, _081280C0 @ =gPlayerParty
|
|
adds r2, r4, 0
|
|
bl memcpy
|
|
movs r4, 0
|
|
movs r6, 0x64
|
|
_0812808E:
|
|
adds r0, r4, 0
|
|
bl pokemon_order_func
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
muls r0, r6
|
|
ldr r1, _081280C0 @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
muls r1, r6
|
|
adds r1, r5
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x5
|
|
bls _0812808E
|
|
adds r0, r5, 0
|
|
bl Free
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081280C0: .4byte gPlayerParty
|
|
thumb_func_end UpdatePartyToBattleOrder
|
|
|
|
thumb_func_start UpdatePartyToFieldOrder
|
|
UpdatePartyToFieldOrder: @ 81280C4
|
|
push {r4-r6,lr}
|
|
movs r4, 0x96
|
|
lsls r4, 2
|
|
adds r0, r4, 0
|
|
bl Alloc
|
|
adds r5, r0, 0
|
|
ldr r1, _08128110 @ =gPlayerParty
|
|
adds r2, r4, 0
|
|
bl memcpy
|
|
movs r4, 0
|
|
movs r6, 0x64
|
|
_081280DE:
|
|
adds r0, r4, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
muls r0, r6
|
|
ldr r1, _08128110 @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
muls r1, r6
|
|
adds r1, r5
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x5
|
|
bls _081280DE
|
|
adds r0, r5, 0
|
|
bl Free
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08128110: .4byte gPlayerParty
|
|
thumb_func_end UpdatePartyToFieldOrder
|
|
|
|
thumb_func_start SwitchAliveMonIntoLeadSlot
|
|
SwitchAliveMonIntoLeadSlot: @ 8128114
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
movs r6, 0x1
|
|
movs r7, 0x64
|
|
ldr r0, _0812816C @ =gPlayerParty
|
|
mov r8, r0
|
|
_08128122:
|
|
adds r0, r6, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
adds r0, r5, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08128170
|
|
adds r0, r5, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08128170
|
|
movs r0, 0
|
|
bl GetPartyIdFromBattleSlot
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0
|
|
adds r1, r6, 0
|
|
bl SwitchPartyMonSlots
|
|
adds r0, r4, 0
|
|
muls r0, r7
|
|
add r0, r8
|
|
adds r1, r5, 0
|
|
bl SwapPartyPokemon
|
|
b _0812817A
|
|
.align 2, 0
|
|
_0812816C: .4byte gPlayerParty
|
|
_08128170:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0x5
|
|
bls _08128122
|
|
_0812817A:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SwitchAliveMonIntoLeadSlot
|
|
|
|
thumb_func_start CB2_SetUpExitToBattleScreen
|
|
CB2_SetUpExitToBattleScreen: @ 8128184
|
|
push {lr}
|
|
bl CB2_SetUpReshowBattleScreenAfterMenu
|
|
ldr r0, _08128194 @ =SetCB2ToReshowScreenAfterMenu
|
|
bl SetMainCallback2
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08128194: .4byte SetCB2ToReshowScreenAfterMenu
|
|
thumb_func_end CB2_SetUpExitToBattleScreen
|
|
|
|
thumb_func_start ShowPartyMenuToShowcaseMultiBattleParty
|
|
ShowPartyMenuToShowcaseMultiBattleParty: @ 8128198
|
|
push {lr}
|
|
sub sp, 0xC
|
|
movs r0, 0x7F
|
|
str r0, [sp]
|
|
ldr r0, _081281BC @ =Task_InitMultiPartnerPartySlideIn
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _081281C0 @ =gMain
|
|
ldr r0, [r0, 0x8]
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x5
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081281BC: .4byte Task_InitMultiPartnerPartySlideIn
|
|
_081281C0: .4byte gMain
|
|
thumb_func_end ShowPartyMenuToShowcaseMultiBattleParty
|
|
|
|
thumb_func_start Task_InitMultiPartnerPartySlideIn
|
|
Task_InitMultiPartnerPartySlideIn: @ 81281C4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _081281F4 @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
strh r1, [r4, 0x8]
|
|
bl SlideMultiPartyMenuBoxSpritesOneStep
|
|
movs r1, 0x80
|
|
lsls r1, 9
|
|
movs r0, 0x2
|
|
movs r2, 0
|
|
bl ChangeBgX
|
|
ldr r0, _081281F8 @ =Task_MultiPartnerPartySlideIn
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081281F4: .4byte gTasks
|
|
_081281F8: .4byte Task_MultiPartnerPartySlideIn
|
|
thumb_func_end Task_InitMultiPartnerPartySlideIn
|
|
|
|
thumb_func_start Task_MultiPartnerPartySlideIn
|
|
Task_MultiPartnerPartySlideIn: @ 81281FC
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r6, r5, 2
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
ldr r1, _08128270 @ =gTasks+0x8
|
|
adds r4, r0, r1
|
|
ldr r0, _08128274 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08128268
|
|
ldrh r0, [r4]
|
|
subs r0, 0x8
|
|
strh r0, [r4]
|
|
adds r0, r5, 0
|
|
bl SlideMultiPartyMenuBoxSpritesOneStep
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08128268
|
|
movs r4, 0x3
|
|
ldr r7, _08128278 @ =gMultiPartnerParty
|
|
_08128230:
|
|
subs r0, r4, 0x3
|
|
lsls r0, 5
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _0812824C
|
|
ldr r0, _0812827C @ =sPartyMenuBoxes
|
|
ldr r1, [r0]
|
|
lsls r0, r4, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x9]
|
|
movs r1, 0
|
|
bl AnimateSelectedPartyIcon
|
|
_0812824C:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x5
|
|
bls _08128230
|
|
movs r0, 0x71
|
|
bl PlaySE
|
|
ldr r0, _08128280 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _08128284 @ =Task_WaitAfterMultiPartnerPartySlideIn
|
|
str r0, [r1]
|
|
_08128268:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08128270: .4byte gTasks+0x8
|
|
_08128274: .4byte gPaletteFade
|
|
_08128278: .4byte gMultiPartnerParty
|
|
_0812827C: .4byte sPartyMenuBoxes
|
|
_08128280: .4byte gTasks
|
|
_08128284: .4byte Task_WaitAfterMultiPartnerPartySlideIn
|
|
thumb_func_end Task_MultiPartnerPartySlideIn
|
|
|
|
thumb_func_start Task_WaitAfterMultiPartnerPartySlideIn
|
|
Task_WaitAfterMultiPartnerPartySlideIn: @ 8128288
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _081282B4 @ =gTasks+0x8
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
adds r1, 0x1
|
|
strh r1, [r0]
|
|
lsls r1, 16
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
cmp r1, r0
|
|
bne _081282AE
|
|
adds r0, r2, 0
|
|
bl Task_ClosePartyMenu
|
|
_081282AE:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081282B4: .4byte gTasks+0x8
|
|
thumb_func_end Task_WaitAfterMultiPartnerPartySlideIn
|
|
|
|
thumb_func_start MoveMultiPartyMenuBoxSprite
|
|
MoveMultiPartyMenuBoxSprite: @ 81282B8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 16
|
|
lsrs r3, r1, 16
|
|
cmp r1, 0
|
|
blt _081282D2
|
|
ldr r1, _081282D8 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
strh r3, [r0, 0x24]
|
|
_081282D2:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081282D8: .4byte gSprites
|
|
thumb_func_end MoveMultiPartyMenuBoxSprite
|
|
|
|
thumb_func_start SlideMultiPartyMenuBoxSpritesOneStep
|
|
SlideMultiPartyMenuBoxSpritesOneStep: @ 81282DC
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _08128364 @ =gTasks+0x8
|
|
adds r5, r1, r0
|
|
movs r6, 0x3
|
|
ldr r7, _08128368 @ =sPartyMenuBoxes
|
|
_081282F0:
|
|
ldr r0, _0812836C @ =gMultiPartnerParty
|
|
subs r1, r6, 0x3
|
|
lsls r1, 5
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
beq _08128348
|
|
ldr r0, [r7]
|
|
lsls r4, r6, 4
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0x9]
|
|
ldrh r1, [r5]
|
|
subs r1, 0x8
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl MoveMultiPartyMenuBoxSprite
|
|
ldr r0, [r7]
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0xA]
|
|
ldrh r1, [r5]
|
|
subs r1, 0x8
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl MoveMultiPartyMenuBoxSprite
|
|
ldr r0, [r7]
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0, 0xB]
|
|
ldrh r1, [r5]
|
|
subs r1, 0x8
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl MoveMultiPartyMenuBoxSprite
|
|
ldr r0, [r7]
|
|
adds r4, r0
|
|
ldrb r0, [r4, 0xC]
|
|
ldrh r1, [r5]
|
|
subs r1, 0x8
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl MoveMultiPartyMenuBoxSprite
|
|
_08128348:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0x5
|
|
bls _081282F0
|
|
movs r1, 0x80
|
|
lsls r1, 4
|
|
movs r0, 0x2
|
|
movs r2, 0x1
|
|
bl ChangeBgX
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08128364: .4byte gTasks+0x8
|
|
_08128368: .4byte sPartyMenuBoxes
|
|
_0812836C: .4byte gMultiPartnerParty
|
|
thumb_func_end SlideMultiPartyMenuBoxSpritesOneStep
|
|
|
|
thumb_func_start ChooseMonForDaycare
|
|
ChooseMonForDaycare: @ 8128370
|
|
push {lr}
|
|
sub sp, 0xC
|
|
ldr r1, _08128398 @ =gFieldCallback2
|
|
ldr r0, _0812839C @ =CB2_FadeFromPartyMenu
|
|
str r0, [r1]
|
|
movs r0, 0xF
|
|
str r0, [sp]
|
|
ldr r0, _081283A0 @ =Task_HandleChooseMonInput
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _081283A4 @ =CB2_ReturnToField
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0x6
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08128398: .4byte gFieldCallback2
|
|
_0812839C: .4byte CB2_FadeFromPartyMenu
|
|
_081283A0: .4byte Task_HandleChooseMonInput
|
|
_081283A4: .4byte CB2_ReturnToField
|
|
thumb_func_end ChooseMonForDaycare
|
|
|
|
thumb_func_start ChoosePartyMonByMenuType
|
|
ChoosePartyMonByMenuType: @ 81283A8
|
|
push {lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _081283D4 @ =gFieldCallback2
|
|
ldr r1, _081283D8 @ =CB2_FadeFromPartyMenu
|
|
str r1, [r2]
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
ldr r1, _081283DC @ =Task_HandleChooseMonInput
|
|
str r1, [sp, 0x4]
|
|
ldr r1, _081283E0 @ =CB2_ReturnToField
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0
|
|
movs r2, 0xB
|
|
movs r3, 0
|
|
bl InitPartyMenu
|
|
add sp, 0xC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081283D4: .4byte gFieldCallback2
|
|
_081283D8: .4byte CB2_FadeFromPartyMenu
|
|
_081283DC: .4byte Task_HandleChooseMonInput
|
|
_081283E0: .4byte CB2_ReturnToField
|
|
thumb_func_end ChoosePartyMonByMenuType
|
|
|
|
thumb_func_start CB2_FadeFromPartyMenu
|
|
CB2_FadeFromPartyMenu: @ 81283E4
|
|
push {lr}
|
|
bl sub_807DC00
|
|
ldr r0, _081283F8 @ =Task_PartyMenuWaitForFade
|
|
movs r1, 0xA
|
|
bl CreateTask
|
|
movs r0, 0x1
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_081283F8: .4byte Task_PartyMenuWaitForFade
|
|
thumb_func_end CB2_FadeFromPartyMenu
|
|
|
|
thumb_func_start Task_PartyMenuWaitForFade
|
|
Task_PartyMenuWaitForFade: @ 81283FC
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsWeatherNotFadingIn
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0812841A
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
bl ScriptContext2_Disable
|
|
bl EnableBothScriptContexts
|
|
_0812841A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end Task_PartyMenuWaitForFade
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|