summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-11-23 08:09:06 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-11-23 08:09:23 +0800
commit5c1bdd0eb54b4159e4d66d9f733b0f66697a2436 (patch)
tree4f424d1f724867ead5bd9341f531f19ec0c3b0ba
parent49eb3504620af68314628eb945c14be4afd441cf (diff)
party_menu third quarter
-rw-r--r--asm/item_menu.s4
-rw-r--r--asm/naming_screen.s20
-rw-r--r--asm/overworld.s6
-rw-r--r--asm/party_menu.s5102
-rw-r--r--asm/pokedex_screen.s4
-rw-r--r--asm/region_map.s6
-rw-r--r--data/strings.s8
-rw-r--r--include/constants/easy_chat.h22
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/field_player_avatar.h2
-rw-r--r--include/field_screen_effect.h1
-rw-r--r--include/global.h2
-rw-r--r--include/link_rfu.h4
-rw-r--r--include/overworld.h2
-rw-r--r--include/pokemon_special_anim.h4
-rw-r--r--include/quest_log.h2
-rw-r--r--include/region_map.h1
-rw-r--r--include/strings.h38
-rw-r--r--include/trade.h3
-rw-r--r--include/union_room.h4
-rw-r--r--src/option_menu.c2
-rw-r--r--src/party_menu.c1660
-rw-r--r--src/start_menu.c6
-rw-r--r--src/trade.c2
24 files changed, 1752 insertions, 5154 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 6967a7876..c2c1925f2 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -141,14 +141,14 @@ _08107EB4: .4byte gUnknown_203ACFC
thumb_func_start CB2_BagMenuFromStartMenu
CB2_BagMenuFromStartMenu: @ 8107EB8
push {lr}
- ldr r2, _08107EC8 @ =CB2_ReturnToStartMenu
+ ldr r2, _08107EC8 @ =CB2_ReturnToFieldWithOpenMenu
movs r0, 0
movs r1, 0x3
bl GoToBagMenu
pop {r0}
bx r0
.align 2, 0
-_08107EC8: .4byte CB2_ReturnToStartMenu
+_08107EC8: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end CB2_BagMenuFromStartMenu
thumb_func_start sub_8107ECC
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
index a42d6e4ab..49ab9164f 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -4490,7 +4490,7 @@ sub_809FC90: @ 809FC90
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FCB4 @ =CB2_ReturnToStartMenu
+ ldr r0, _0809FCB4 @ =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x4]
movs r0, 0
movs r3, 0
@@ -4500,7 +4500,7 @@ sub_809FC90: @ 809FC90
bx r0
.align 2, 0
_0809FCB0: .4byte gSaveBlock2Ptr
-_0809FCB4: .4byte CB2_ReturnToStartMenu
+_0809FCB4: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end sub_809FC90
thumb_func_start sub_809FCB8
@@ -4512,7 +4512,7 @@ sub_809FCB8: @ 809FCB8
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FCDC @ =CB2_ReturnToStartMenu
+ ldr r0, _0809FCDC @ =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x4]
movs r0, 0x1
movs r3, 0
@@ -4522,7 +4522,7 @@ sub_809FCB8: @ 809FCB8
bx r0
.align 2, 0
_0809FCD8: .4byte gSaveBlock2Ptr
-_0809FCDC: .4byte CB2_ReturnToStartMenu
+_0809FCDC: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end sub_809FCB8
thumb_func_start sub_809FCE0
@@ -4534,7 +4534,7 @@ sub_809FCE0: @ 809FCE0
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FD04 @ =CB2_ReturnToStartMenu
+ ldr r0, _0809FD04 @ =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x4]
movs r0, 0x2
movs r3, 0
@@ -4544,7 +4544,7 @@ sub_809FCE0: @ 809FCE0
bx r0
.align 2, 0
_0809FD00: .4byte gSaveBlock2Ptr
-_0809FD04: .4byte CB2_ReturnToStartMenu
+_0809FD04: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end sub_809FCE0
thumb_func_start sub_809FD08
@@ -4556,7 +4556,7 @@ sub_809FD08: @ 809FD08
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FD2C @ =CB2_ReturnToStartMenu
+ ldr r0, _0809FD2C @ =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x4]
movs r0, 0x3
movs r3, 0
@@ -4566,7 +4566,7 @@ sub_809FD08: @ 809FD08
bx r0
.align 2, 0
_0809FD28: .4byte gSaveBlock2Ptr
-_0809FD2C: .4byte CB2_ReturnToStartMenu
+_0809FD2C: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end sub_809FD08
thumb_func_start sub_809FD30
@@ -4578,7 +4578,7 @@ sub_809FD30: @ 809FD30
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FD54 @ =CB2_ReturnToStartMenu
+ ldr r0, _0809FD54 @ =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x4]
movs r0, 0x4
movs r3, 0
@@ -4588,7 +4588,7 @@ sub_809FD30: @ 809FD30
bx r0
.align 2, 0
_0809FD50: .4byte gSaveBlock2Ptr
-_0809FD54: .4byte CB2_ReturnToStartMenu
+_0809FD54: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end sub_809FD30
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/overworld.s b/asm/overworld.s
index 29c676060..370aa054d 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -3754,8 +3754,8 @@ _080568A0: .4byte gFieldCallback
_080568A4: .4byte sub_807DDD0
thumb_func_end c2_8056854
- thumb_func_start CB2_ReturnToStartMenu
-CB2_ReturnToStartMenu: @ 80568A8
+ thumb_func_start CB2_ReturnToFieldWithOpenMenu
+CB2_ReturnToFieldWithOpenMenu: @ 80568A8
push {lr}
bl sub_80569BC
ldr r1, _080568BC @ =gFieldCallback2
@@ -3767,7 +3767,7 @@ CB2_ReturnToStartMenu: @ 80568A8
.align 2, 0
_080568BC: .4byte gFieldCallback2
_080568C0: .4byte FieldCB2_ReturnToStartMenuInit
- thumb_func_end CB2_ReturnToStartMenu
+ thumb_func_end CB2_ReturnToFieldWithOpenMenu
thumb_func_start sub_80568C4
sub_80568C4: @ 80568C4
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 32674fea2..0e68a23b2 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -5,5098 +5,6 @@
.text
- thumb_func_start Task_SwitchHoldItemsPrompt
-Task_SwitchHoldItemsPrompt: @ 81238A4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081238E4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081238DC
- ldr r0, _081238E8 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081238EC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081238F0 @ =sPartyMenuItemId
- ldrh r1, [r1]
- movs r2, 0x1
- bl DisplayAlreadyHoldingItemSwitchMessage
- ldr r1, _081238F4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081238F8 @ =Task_SwitchItemsYesNo
- str r1, [r0]
-_081238DC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081238E4: .4byte gPaletteFade
-_081238E8: .4byte gPartyMenu
-_081238EC: .4byte gPlayerParty
-_081238F0: .4byte sPartyMenuItemId
-_081238F4: .4byte gTasks
-_081238F8: .4byte Task_SwitchItemsYesNo
- thumb_func_end Task_SwitchHoldItemsPrompt
-
- thumb_func_start Task_SwitchItemsYesNo
-Task_SwitchItemsYesNo: @ 81238FC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08123920
- bl PartyMenuDisplayYesNoMenu
- ldr r0, _08123928 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812392C @ =Task_HandleSwitchItemsYesNoInput
- str r0, [r1]
-_08123920:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123928: .4byte gTasks
-_0812392C: .4byte Task_HandleSwitchItemsYesNoInput
- thumb_func_end Task_SwitchItemsYesNo
-
- thumb_func_start Task_HandleSwitchItemsYesNoInput
-Task_HandleSwitchItemsYesNoInput: @ 8123930
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08123956
- cmp r1, 0
- bgt _08123950
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08123A2C
- b _08123A40
-_08123950:
- cmp r1, 0x1
- beq _08123A32
- b _08123A40
-_08123956:
- ldr r5, _08123998 @ =gSpecialVar_ItemId
- ldrh r0, [r5]
- movs r1, 0x1
- bl RemoveBagItem
- ldr r6, _0812399C @ =sPartyMenuItemId
- ldrh r0, [r6]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- bne _081239AC
- ldrh r0, [r5]
- movs r1, 0x1
- bl AddBagItem
- ldrh r0, [r6]
- bl BufferBagFullCantTakeItemMessage
- ldr r0, _081239A0 @ =gStringVar4
- movs r1, 0
- bl DisplayPartyMenuMessage
- ldr r1, _081239A4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081239A8 @ =Task_ReturnToChooseMonAfterText
- str r1, [r0]
- b _08123A40
- .align 2, 0
-_08123998: .4byte gSpecialVar_ItemId
-_0812399C: .4byte sPartyMenuItemId
-_081239A0: .4byte gStringVar4
-_081239A4: .4byte gTasks
-_081239A8: .4byte Task_ReturnToChooseMonAfterText
-_081239AC:
- ldrh r0, [r5]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081239EC
- ldr r0, _081239DC @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081239E0 @ =gPlayerParty
- adds r0, r1
- ldrh r1, [r5]
- bl GiveItemToMon
- ldr r1, _081239E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081239E8 @ =Task_WriteMailToGiveMonAfterText
- str r1, [r0]
- b _08123A40
- .align 2, 0
-_081239DC: .4byte gPartyMenu
-_081239E0: .4byte gPlayerParty
-_081239E4: .4byte gTasks
-_081239E8: .4byte Task_WriteMailToGiveMonAfterText
-_081239EC:
- ldr r0, _08123A1C @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08123A20 @ =gPlayerParty
- adds r0, r1
- ldrh r1, [r5]
- bl GiveItemToMon
- ldrh r0, [r5]
- ldrh r1, [r6]
- movs r2, 0x1
- bl DisplaySwitchedHeldItemMessage
- ldr r1, _08123A24 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08123A28 @ =Task_UpdateHeldItemSprite
- str r1, [r0]
- b _08123A40
- .align 2, 0
-_08123A1C: .4byte gPartyMenu
-_08123A20: .4byte gPlayerParty
-_08123A24: .4byte gTasks
-_08123A28: .4byte Task_UpdateHeldItemSprite
-_08123A2C:
- movs r0, 0x5
- bl PlaySE
-_08123A32:
- ldr r0, _08123A48 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08123A4C @ =Task_ReturnToChooseMonAfterText
- str r0, [r1]
-_08123A40:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08123A48: .4byte gTasks
-_08123A4C: .4byte Task_ReturnToChooseMonAfterText
- thumb_func_end Task_HandleSwitchItemsYesNoInput
-
- thumb_func_start Task_WriteMailToGiveMonAfterText
-Task_WriteMailToGiveMonAfterText: @ 8123A50
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08123A70
- ldr r0, _08123A78 @ =sPartyMenuInternal
- ldr r1, [r0]
- ldr r0, _08123A7C @ =CB2_WriteMailToGiveMon
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl Task_ClosePartyMenu
-_08123A70:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123A78: .4byte sPartyMenuInternal
-_08123A7C: .4byte CB2_WriteMailToGiveMon
- thumb_func_end Task_WriteMailToGiveMonAfterText
-
- thumb_func_start CB2_WriteMailToGiveMon
-CB2_WriteMailToGiveMon: @ 8123A80
- push {lr}
- ldr r0, _08123AB8 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08123ABC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08123AC0 @ =gSaveBlock1Ptr
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- ldr r0, _08123AC4 @ =0x00002cd0
- adds r2, r0
- ldr r1, [r1]
- adds r1, r2
- ldr r2, _08123AC8 @ =CB2_ReturnToPartyMenuFromWritingMail
- movs r0, 0x4
- bl DoEasyChatScreen
- pop {r0}
- bx r0
- .align 2, 0
-_08123AB8: .4byte gPartyMenu
-_08123ABC: .4byte gPlayerParty
-_08123AC0: .4byte gSaveBlock1Ptr
-_08123AC4: .4byte 0x00002cd0
-_08123AC8: .4byte CB2_ReturnToPartyMenuFromWritingMail
- thumb_func_end CB2_WriteMailToGiveMon
-
- thumb_func_start CB2_ReturnToPartyMenuFromWritingMail
-CB2_ReturnToPartyMenuFromWritingMail: @ 8123ACC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r6, _08123B38 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r6, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08123B3C @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, _08123B40 @ =gSpecialVar_Result
- ldrh r7, [r0]
- cmp r7, 0
- bne _08123B4C
- adds r0, r5, 0
- bl TakeMailFromMon
- ldr r4, _08123B44 @ =sPartyMenuItemId
- adds r0, r5, 0
- movs r1, 0xC
- adds r2, r4, 0
- bl SetMonData
- ldrh r0, [r4]
- movs r1, 0x1
- bl RemoveBagItem
- mov r0, r8
- movs r1, 0x1
- bl AddBagItem
- ldrb r0, [r6, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r6, 0xB]
- str r7, [sp]
- ldr r1, _08123B48 @ =Task_TryCreateSelectionWindow
- str r1, [sp, 0x4]
- ldr r1, [r6]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl InitPartyMenu
- b _08123B68
- .align 2, 0
-_08123B38: .4byte gPartyMenu
-_08123B3C: .4byte gPlayerParty
-_08123B40: .4byte gSpecialVar_Result
-_08123B44: .4byte sPartyMenuItemId
-_08123B48: .4byte Task_TryCreateSelectionWindow
-_08123B4C:
- ldrb r0, [r6, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r6, 0xB]
- movs r1, 0
- str r1, [sp]
- ldr r1, _08123B74 @ =Task_DisplayGaveMailFromPartyMessage
- str r1, [sp, 0x4]
- ldr r1, [r6]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl InitPartyMenu
-_08123B68:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08123B74: .4byte Task_DisplayGaveMailFromPartyMessage
- thumb_func_end CB2_ReturnToPartyMenuFromWritingMail
-
- thumb_func_start Task_DisplayGaveMailFromPartyMessage
-Task_DisplayGaveMailFromPartyMessage: @ 8123B78
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08123BB0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08123BDE
- ldr r1, _08123BB4 @ =sPartyMenuItemId
- ldrh r0, [r1]
- cmp r0, 0
- bne _08123BC4
- ldr r0, _08123BB8 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08123BBC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08123BC0 @ =gSpecialVar_ItemId
- ldrh r1, [r1]
- movs r2, 0
- movs r3, 0
- bl DisplayGaveHeldItemMessage
- b _08123BD0
- .align 2, 0
-_08123BB0: .4byte gPaletteFade
-_08123BB4: .4byte sPartyMenuItemId
-_08123BB8: .4byte gPartyMenu
-_08123BBC: .4byte gPlayerParty
-_08123BC0: .4byte gSpecialVar_ItemId
-_08123BC4:
- ldr r0, _08123BE4 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- ldrh r1, [r1]
- movs r2, 0
- bl DisplaySwitchedHeldItemMessage
-_08123BD0:
- ldr r0, _08123BE8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08123BEC @ =Task_UpdateHeldItemSprite
- str r0, [r1]
-_08123BDE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123BE4: .4byte gSpecialVar_ItemId
-_08123BE8: .4byte gTasks
-_08123BEC: .4byte Task_UpdateHeldItemSprite
- thumb_func_end Task_DisplayGaveMailFromPartyMessage
-
- thumb_func_start Task_UpdateHeldItemSprite
-Task_UpdateHeldItemSprite: @ 8123BF0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08123C2C @ =gPartyMenu
- ldrb r4, [r0, 0x9]
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08123C24
- lsls r2, r4, 24
- asrs r2, 24
- movs r0, 0x64
- muls r0, r2
- ldr r1, _08123C30 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08123C34 @ =sPartyMenuBoxes
- lsls r2, 4
- ldr r1, [r1]
- adds r1, r2
- bl UpdatePartyMonHeldItemSprite
- adds r0, r5, 0
- bl Task_ReturnToChooseMonAfterText
-_08123C24:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08123C2C: .4byte gPartyMenu
-_08123C30: .4byte gPlayerParty
-_08123C34: .4byte sPartyMenuBoxes
- thumb_func_end Task_UpdateHeldItemSprite
-
- thumb_func_start CursorCB_TakeItem
-CursorCB_TakeItem: @ 8123C38
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08123C90 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08123C94 @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- movs r0, 0x5
- bl PlaySE
- ldr r4, _08123C98 @ =sPartyMenuInternal
- ldr r0, [r4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r4]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- adds r0, r5, 0
- bl TryTakeMonItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08123C9C
- cmp r0, 0x1
- beq _08123CC0
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x1
- bl DisplayTookHeldItemMessage
- b _08123CCE
- .align 2, 0
-_08123C90: .4byte gPartyMenu
-_08123C94: .4byte gPlayerParty
-_08123C98: .4byte sPartyMenuInternal
-_08123C9C:
- ldr r1, _08123CB4 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r4, _08123CB8 @ =gStringVar4
- ldr r1, _08123CBC @ =gUnknown_8416C8F
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- b _08123CC8
- .align 2, 0
-_08123CB4: .4byte gStringVar1
-_08123CB8: .4byte gStringVar4
-_08123CBC: .4byte gUnknown_8416C8F
-_08123CC0:
- adds r0, r6, 0
- bl BufferBagFullCantTakeItemMessage
- ldr r0, _08123CE8 @ =gStringVar4
-_08123CC8:
- movs r1, 0x1
- bl DisplayPartyMenuMessage
-_08123CCE:
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _08123CEC @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _08123CF0 @ =Task_UpdateHeldItemSprite
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08123CE8: .4byte gStringVar4
-_08123CEC: .4byte gTasks
-_08123CF0: .4byte Task_UpdateHeldItemSprite
- thumb_func_end CursorCB_TakeItem
-
- thumb_func_start CursorCB_Mail
-CursorCB_Mail: @ 8123CF4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x5
- bl PlaySE
- ldr r4, _08123D44 @ =sPartyMenuInternal
- ldr r0, [r4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r4]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- ldr r0, _08123D48 @ =gPlayerParty
- ldr r1, _08123D4C @ =gPartyMenu
- ldrb r1, [r1, 0x9]
- movs r2, 0x9
- bl SetPartyMonSelectionActions
- movs r0, 0x2
- bl DisplaySelectionWindow
- movs r0, 0x1A
- bl DisplayPartyMenuStdMessage
- ldr r1, _08123D50 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xFF
- strh r1, [r0, 0x8]
- ldr r1, _08123D54 @ =Task_HandleSelectionMenuInput
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08123D44: .4byte sPartyMenuInternal
-_08123D48: .4byte gPlayerParty
-_08123D4C: .4byte gPartyMenu
-_08123D50: .4byte gTasks
-_08123D54: .4byte Task_HandleSelectionMenuInput
- thumb_func_end CursorCB_Mail
-
- thumb_func_start CursorCB_Read
-CursorCB_Read: @ 8123D58
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08123D7C @ =sPartyMenuInternal
- ldr r1, [r0]
- ldr r0, _08123D80 @ =CB2_ReadHeldMail
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl Task_ClosePartyMenu
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123D7C: .4byte sPartyMenuInternal
-_08123D80: .4byte CB2_ReadHeldMail
- thumb_func_end CursorCB_Read
-
- thumb_func_start CB2_ReadHeldMail
-CB2_ReadHeldMail: @ 8123D84
- push {lr}
- ldr r0, _08123DB8 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08123DBC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- ldr r2, _08123DC0 @ =gSaveBlock1Ptr
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _08123DC4 @ =0x00002cd0
- adds r1, r0
- ldr r0, [r2]
- adds r0, r1
- ldr r1, _08123DC8 @ =CB2_ReturnToPartyMenuFromReadingMail
- movs r2, 0x1
- bl ReadMail
- pop {r0}
- bx r0
- .align 2, 0
-_08123DB8: .4byte gPartyMenu
-_08123DBC: .4byte gPlayerParty
-_08123DC0: .4byte gSaveBlock1Ptr
-_08123DC4: .4byte 0x00002cd0
-_08123DC8: .4byte CB2_ReturnToPartyMenuFromReadingMail
- thumb_func_end CB2_ReadHeldMail
-
- thumb_func_start CB2_ReturnToPartyMenuFromReadingMail
-CB2_ReturnToPartyMenuFromReadingMail: @ 8123DCC
- push {lr}
- sub sp, 0xC
- ldr r2, _08123E00 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r3, _08123E04 @ =gPartyMenu
- ldrb r0, [r3, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r3, 0xB]
- movs r1, 0x16
- str r1, [sp]
- ldr r1, _08123E08 @ =Task_TryCreateSelectionWindow
- str r1, [sp, 0x4]
- ldr r1, [r3]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r3, 0x1
- bl InitPartyMenu
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_08123E00: .4byte gPaletteFade
-_08123E04: .4byte gPartyMenu
-_08123E08: .4byte Task_TryCreateSelectionWindow
- thumb_func_end CB2_ReturnToPartyMenuFromReadingMail
-
- thumb_func_start CursorCB_TakeMail
-CursorCB_TakeMail: @ 8123E0C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r5, _08123E48 @ =sPartyMenuInternal
- ldr r0, [r5]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- ldr r0, [r5]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, _08123E4C @ =gText_SendMailToPC
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _08123E50 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08123E54 @ =Task_SendMailToPCYesNo
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08123E48: .4byte sPartyMenuInternal
-_08123E4C: .4byte gText_SendMailToPC
-_08123E50: .4byte gTasks
-_08123E54: .4byte Task_SendMailToPCYesNo
- thumb_func_end CursorCB_TakeMail
-
- thumb_func_start Task_SendMailToPCYesNo
-Task_SendMailToPCYesNo: @ 8123E58
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08123E7C
- bl PartyMenuDisplayYesNoMenu
- ldr r0, _08123E84 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08123E88 @ =Task_HandleSendMailToPCYesNoInput
- str r0, [r1]
-_08123E7C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123E84: .4byte gTasks
-_08123E88: .4byte Task_HandleSendMailToPCYesNoInput
- thumb_func_end Task_SendMailToPCYesNo
-
- thumb_func_start Task_HandleSendMailToPCYesNoInput
-Task_HandleSendMailToPCYesNoInput: @ 8123E8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08123EB2
- cmp r1, 0
- bgt _08123EAC
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08123F1C
- b _08123F38
-_08123EAC:
- cmp r1, 0x1
- beq _08123F22
- b _08123F38
-_08123EB2:
- ldr r0, _08123EE4 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08123EE8 @ =gPlayerParty
- adds r0, r1
- bl TakeMailFromMon2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08123EF8
- ldr r0, _08123EEC @ =gText_MailSentToPC
- movs r1, 0
- bl DisplayPartyMenuMessage
- ldr r1, _08123EF0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08123EF4 @ =Task_UpdateHeldItemSprite
- b _08123F36
- .align 2, 0
-_08123EE4: .4byte gPartyMenu
-_08123EE8: .4byte gPlayerParty
-_08123EEC: .4byte gText_MailSentToPC
-_08123EF0: .4byte gTasks
-_08123EF4: .4byte Task_UpdateHeldItemSprite
-_08123EF8:
- ldr r0, _08123F10 @ =gText_PCMailboxFull
- movs r1, 0
- bl DisplayPartyMenuMessage
- ldr r1, _08123F14 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08123F18 @ =Task_ReturnToChooseMonAfterText
- b _08123F36
- .align 2, 0
-_08123F10: .4byte gText_PCMailboxFull
-_08123F14: .4byte gTasks
-_08123F18: .4byte Task_ReturnToChooseMonAfterText
-_08123F1C:
- movs r0, 0x5
- bl PlaySE
-_08123F22:
- ldr r0, _08123F40 @ =gText_MailMessageWillBeLost
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _08123F44 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08123F48 @ =Task_LoseMailMessageYesNo
-_08123F36:
- str r1, [r0]
-_08123F38:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123F40: .4byte gText_MailMessageWillBeLost
-_08123F44: .4byte gTasks
-_08123F48: .4byte Task_LoseMailMessageYesNo
- thumb_func_end Task_HandleSendMailToPCYesNoInput
-
- thumb_func_start Task_LoseMailMessageYesNo
-Task_LoseMailMessageYesNo: @ 8123F4C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08123F70
- bl PartyMenuDisplayYesNoMenu
- ldr r0, _08123F78 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08123F7C @ =Task_HandleLoseMailMessageYesNoInput
- str r0, [r1]
-_08123F70:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123F78: .4byte gTasks
-_08123F7C: .4byte Task_HandleLoseMailMessageYesNoInput
- thumb_func_end Task_LoseMailMessageYesNo
-
- thumb_func_start Task_HandleLoseMailMessageYesNoInput
-Task_HandleLoseMailMessageYesNoInput: @ 8123F80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08123FAA
- cmp r1, 0
- bgt _08123FA4
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0812403C
- b _08124050
-_08123FA4:
- cmp r1, 0x1
- beq _08124042
- b _08124050
-_08123FAA:
- ldr r0, _08123FFC @ =gPartyMenu
- mov r8, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r7, 0x64
- muls r0, r7
- ldr r6, _08124000 @ =gPlayerParty
- adds r0, r6
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124010
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r7
- adds r0, r6
- bl TakeMailFromMon
- ldr r0, _08124004 @ =gText_MailTakenFromPkmn
- movs r1, 0
- bl DisplayPartyMenuMessage
- ldr r1, _08124008 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812400C @ =Task_UpdateHeldItemSprite
- str r1, [r0]
- b _08124050
- .align 2, 0
-_08123FFC: .4byte gPartyMenu
-_08124000: .4byte gPlayerParty
-_08124004: .4byte gText_MailTakenFromPkmn
-_08124008: .4byte gTasks
-_0812400C: .4byte Task_UpdateHeldItemSprite
-_08124010:
- adds r0, r4, 0
- bl BufferBagFullCantTakeItemMessage
- ldr r0, _08124030 @ =gStringVar4
- movs r1, 0
- bl DisplayPartyMenuMessage
- ldr r1, _08124034 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08124038 @ =Task_ReturnToChooseMonAfterText
- str r1, [r0]
- b _08124050
- .align 2, 0
-_08124030: .4byte gStringVar4
-_08124034: .4byte gTasks
-_08124038: .4byte Task_ReturnToChooseMonAfterText
-_0812403C:
- movs r0, 0x5
- bl PlaySE
-_08124042:
- ldr r0, _0812405C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _08124060 @ =Task_ReturnToChooseMonAfterText
- str r0, [r1]
-_08124050:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812405C: .4byte gTasks
-_08124060: .4byte Task_ReturnToChooseMonAfterText
- thumb_func_end Task_HandleLoseMailMessageYesNoInput
-
- thumb_func_start CursorCB_Cancel2
-CursorCB_Cancel2: @ 8124064
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _081240E0 @ =gPartyMenu
- mov r8, r0
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, _081240E4 @ =gPlayerParty
- mov r9, r0
- add r5, r9
- movs r0, 0x5
- bl PlaySE
- ldr r4, _081240E8 @ =sPartyMenuInternal
- ldr r0, [r4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r4]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- mov r0, r8
- ldrb r4, [r0, 0x9]
- adds r0, r5, 0
- bl GetPartyMenuActionsType
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- mov r0, r9
- adds r1, r4, 0
- bl SetPartyMonSelectionActions
- movs r0, 0
- bl DisplaySelectionWindow
- movs r0, 0x16
- bl DisplayPartyMenuStdMessage
- ldr r1, _081240EC @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0xFF
- strh r1, [r0, 0x8]
- ldr r1, _081240F0 @ =Task_HandleSelectionMenuInput
- str r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081240E0: .4byte gPartyMenu
-_081240E4: .4byte gPlayerParty
-_081240E8: .4byte sPartyMenuInternal
-_081240EC: .4byte gTasks
-_081240F0: .4byte Task_HandleSelectionMenuInput
- thumb_func_end CursorCB_Cancel2
-
- thumb_func_start CursorCB_SendMon
-CursorCB_SendMon: @ 81240F4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r5, _08124120 @ =sPartyMenuInternal
- ldr r0, [r5]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- bl TrySwitchInPokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124124
- adds r0, r4, 0
- bl Task_ClosePartyMenu
- b _08124142
- .align 2, 0
-_08124120: .4byte sPartyMenuInternal
-_08124124:
- ldr r0, [r5]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- ldr r0, _08124148 @ =gStringVar4
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _0812414C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08124150 @ =Task_ReturnToChooseMonAfterText
- str r1, [r0]
-_08124142:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08124148: .4byte gStringVar4
-_0812414C: .4byte gTasks
-_08124150: .4byte Task_ReturnToChooseMonAfterText
- thumb_func_end CursorCB_SendMon
-
- thumb_func_start CursorCB_Enter
-CursorCB_Enter: @ 8124154
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0812417C @ =gPartyMenu
- ldrb r1, [r0, 0x8]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0x80
- bne _08124184
- movs r0, 0x2
- mov r8, r0
- ldr r1, _08124180 @ =gUnknown_8416B3E
- str r1, [sp]
- b _0812418C
- .align 2, 0
-_0812417C: .4byte gPartyMenu
-_08124180: .4byte gUnknown_8416B3E
-_08124184:
- movs r2, 0x3
- mov r8, r2
- ldr r0, _081241FC @ =gUnknown_8416B16
- str r0, [sp]
-_0812418C:
- ldr r4, _08124200 @ =sPartyMenuInternal
- ldr r0, [r4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r4]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- movs r5, 0
- lsls r1, r7, 2
- mov r9, r1
- cmp r5, r8
- bcs _08124222
- ldr r6, _08124204 @ =gPartyMenu
- ldr r1, _08124208 @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- mov r10, r0
-_081241B6:
- ldr r0, _0812420C @ =gSelectedOrderFromParty
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0
- bne _08124218
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r6, 0x9]
- adds r0, 0x1
- strb r0, [r4]
- adds r0, r5, 0x2
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08124210 @ =sPartyMenuBoxes
- movs r2, 0x9
- ldrsb r2, [r6, r2]
- lsls r2, 4
- ldr r1, [r1]
- adds r1, r2
- movs r2, 0x1
- bl DisplayPartyPokemonDescriptionText
- mov r0, r8
- subs r0, 0x1
- cmp r5, r0
- bne _081241F0
- bl MoveCursorToConfirm
-_081241F0:
- movs r0, 0
- bl DisplayPartyMenuStdMessage
- ldr r0, _08124214 @ =Task_HandleChooseMonInput
- mov r1, r10
- b _0812423C
- .align 2, 0
-_081241FC: .4byte gUnknown_8416B16
-_08124200: .4byte sPartyMenuInternal
-_08124204: .4byte gPartyMenu
-_08124208: .4byte gTasks
-_0812420C: .4byte gSelectedOrderFromParty
-_08124210: .4byte sPartyMenuBoxes
-_08124214: .4byte Task_HandleChooseMonInput
-_08124218:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r8
- bcc _081241B6
-_08124222:
- movs r0, 0x1A
- bl PlaySE
- ldr r0, [sp]
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r0, _08124250 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _08124254 @ =Task_ReturnToChooseMonAfterText
-_0812423C:
- str r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08124250: .4byte gTasks
-_08124254: .4byte Task_ReturnToChooseMonAfterText
- thumb_func_end CursorCB_Enter
-
- thumb_func_start MoveCursorToConfirm
-MoveCursorToConfirm: @ 8124258
- push {r4,lr}
- ldr r4, _08124274 @ =gPartyMenu
- ldrb r0, [r4, 0x9]
- movs r1, 0
- bl AnimatePartySlot
- movs r0, 0x6
- strb r0, [r4, 0x9]
- movs r1, 0x1
- bl AnimatePartySlot
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08124274: .4byte gPartyMenu
- thumb_func_end MoveCursorToConfirm
-
- thumb_func_start CursorCB_NoEntry
-CursorCB_NoEntry: @ 8124278
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r4, _081242BC @ =sPartyMenuInternal
- ldr r0, [r4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r4]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- movs r4, 0
- ldr r3, _081242C0 @ =gSelectedOrderFromParty
- ldr r6, _081242C4 @ =gPartyMenu
- adds r5, r6, 0
-_0812429E:
- adds r2, r4, r3
- ldrb r1, [r2]
- movs r0, 0x9
- ldrsb r0, [r5, r0]
- adds r0, 0x1
- cmp r1, r0
- bne _081242DC
- movs r1, 0
- strb r1, [r2]
- cmp r4, 0
- beq _081242C8
- cmp r4, 0x1
- beq _081242D4
- b _081242E6
- .align 2, 0
-_081242BC: .4byte sPartyMenuInternal
-_081242C0: .4byte gSelectedOrderFromParty
-_081242C4: .4byte gPartyMenu
-_081242C8:
- ldrb r0, [r3, 0x1]
- strb r0, [r3]
- ldrb r0, [r3, 0x2]
- strb r0, [r3, 0x1]
- strb r4, [r3, 0x2]
- b _081242E6
-_081242D4:
- ldrb r0, [r3, 0x2]
- strb r0, [r3, 0x1]
- strb r1, [r3, 0x2]
- b _081242E6
-_081242DC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0812429E
-_081242E6:
- ldr r5, _08124344 @ =sPartyMenuBoxes
- movs r0, 0x9
- ldrsb r0, [r6, r0]
- lsls r0, 4
- ldr r1, [r5]
- adds r1, r0
- movs r0, 0x1
- movs r2, 0x1
- bl DisplayPartyPokemonDescriptionText
- ldr r4, _08124348 @ =gSelectedOrderFromParty
- ldrb r0, [r4]
- cmp r0, 0
- beq _08124312
- lsls r0, 4
- subs r0, 0x10
- ldr r1, [r5]
- adds r1, r0
- movs r0, 0x2
- movs r2, 0x1
- bl DisplayPartyPokemonDescriptionText
-_08124312:
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08124328
- lsls r0, 4
- subs r0, 0x10
- ldr r1, [r5]
- adds r1, r0
- movs r0, 0x3
- movs r2, 0x1
- bl DisplayPartyPokemonDescriptionText
-_08124328:
- movs r0, 0
- bl DisplayPartyMenuStdMessage
- ldr r0, _0812434C @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _08124350 @ =Task_HandleChooseMonInput
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08124344: .4byte sPartyMenuBoxes
-_08124348: .4byte gSelectedOrderFromParty
-_0812434C: .4byte gTasks
-_08124350: .4byte Task_HandleChooseMonInput
- thumb_func_end CursorCB_NoEntry
-
- thumb_func_start CursorCB_Store
-CursorCB_Store: @ 8124354
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0812437C @ =gSpecialVar_0x8004
- ldr r0, _08124380 @ =gPartyMenu
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1]
- adds r0, r4, 0
- bl Task_ClosePartyMenu
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812437C: .4byte gSpecialVar_0x8004
-_08124380: .4byte gPartyMenu
- thumb_func_end CursorCB_Store
-
- thumb_func_start CursorCB_Register
-CursorCB_Register: @ 8124384
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08124410 @ =gPartyMenu
- mov r9, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r4, _08124414 @ =gPlayerParty
- adds r0, r4
- movs r1, 0x41
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- mov r1, r9
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r9
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4
- movs r1, 0x50
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F9800
- ldr r0, [r0]
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl Trade_CanTradeSelectedMon
- cmp r0, 0x1
- beq _08124418
- cmp r0, 0x2
- beq _0812442C
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl Task_ClosePartyMenu
- b _0812446C
- .align 2, 0
-_08124410: .4byte gPartyMenu
-_08124414: .4byte gPlayerParty
-_08124418:
- ldr r0, _08124424 @ =gStringVar4
- ldr r1, _08124428 @ =gText_PkmnCantBeTradedNow
- bl StringExpandPlaceholders
- b _08124434
- .align 2, 0
-_08124424: .4byte gStringVar4
-_08124428: .4byte gText_PkmnCantBeTradedNow
-_0812442C:
- ldr r0, _08124478 @ =gStringVar4
- ldr r1, _0812447C @ =gText_EggCantBeTradedNow
- bl StringExpandPlaceholders
-_08124434:
- movs r0, 0x1A
- bl PlaySE
- ldr r4, _08124480 @ =sPartyMenuInternal
- ldr r0, [r4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r4]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- ldr r4, _08124478 @ =gStringVar4
- ldr r1, _08124484 @ =gText_PauseUntilPress
- adds r0, r4, 0
- bl StringAppend
- adds r0, r4, 0
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _08124488 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812448C @ =Task_ReturnToChooseMonAfterText
- str r1, [r0]
-_0812446C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08124478: .4byte gStringVar4
-_0812447C: .4byte gText_EggCantBeTradedNow
-_08124480: .4byte sPartyMenuInternal
-_08124484: .4byte gText_PauseUntilPress
-_08124488: .4byte gTasks
-_0812448C: .4byte Task_ReturnToChooseMonAfterText
- thumb_func_end CursorCB_Register
-
- thumb_func_start CursorCB_Trade1
-CursorCB_Trade1: @ 8124490
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08124558 @ =gPartyMenu
- mov r8, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r6, 0x64
- muls r0, r6
- ldr r4, _0812455C @ =gPlayerParty
- adds r0, r4
- movs r1, 0x41
- bl GetMonData
- mov r9, r0
- mov r1, r9
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r6
- adds r0, r4
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r6
- adds r0, r4
- movs r1, 0x50
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F9800
- ldr r0, [r0]
- ldr r1, _08124560 @ =gUnknown_203B064
- ldr r1, [r1]
- ldr r2, _08124564 @ =gUnionRoomOfferedSpecies
- ldrh r3, [r2]
- ldr r2, _08124568 @ =gUnionRoomRequestedMonType
- ldrb r2, [r2]
- str r2, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- mov r2, r9
- bl GetUnionRoomTradeMessageId
- cmp r0, 0
- beq _08124584
- ldr r5, _0812456C @ =gStringVar4
- ldr r1, _08124570 @ =sUnionRoomTradeMessages
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x1A
- bl PlaySE
- ldr r4, _08124574 @ =sPartyMenuInternal
- ldr r0, [r4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r4]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- ldr r1, _08124578 @ =gText_PauseUntilPress
- adds r0, r5, 0
- bl StringAppend
- adds r0, r5, 0
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _0812457C @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _08124580 @ =Task_ReturnToChooseMonAfterText
- str r1, [r0]
- b _08124590
- .align 2, 0
-_08124558: .4byte gPartyMenu
-_0812455C: .4byte gPlayerParty
-_08124560: .4byte gUnknown_203B064
-_08124564: .4byte gUnionRoomOfferedSpecies
-_08124568: .4byte gUnionRoomRequestedMonType
-_0812456C: .4byte gStringVar4
-_08124570: .4byte sUnionRoomTradeMessages
-_08124574: .4byte sPartyMenuInternal
-_08124578: .4byte gText_PauseUntilPress
-_0812457C: .4byte gTasks
-_08124580: .4byte Task_ReturnToChooseMonAfterText
-_08124584:
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl Task_ClosePartyMenu
-_08124590:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end CursorCB_Trade1
-
- thumb_func_start CursorCB_Trade2
-CursorCB_Trade2: @ 81245A0
- bx lr
- thumb_func_end CursorCB_Trade2
-
- thumb_func_start CursorCB_FieldMove
-CursorCB_FieldMove: @ 81245A4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- bl Menu_GetCursorPos
- ldr r5, _08124610 @ =sPartyMenuInternal
- ldr r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- adds r1, 0xF
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x12
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08124614 @ =sFieldMoveCursorCallbacks
- lsls r0, r4, 3
- adds r7, r0, r1
- ldr r0, [r7]
- cmp r0, 0
- bne _081245D6
- b _081247B4
-_081245D6:
- ldr r0, [r5]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- ldr r0, [r5]
- adds r0, 0xD
- bl PartyMenuRemoveWindow
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081245FA
- bl InUnionRoom
- cmp r0, 0x1
- bne _0812461C
-_081245FA:
- adds r0, r4, 0
- subs r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08124618
- movs r0, 0xD
- bl DisplayPartyMenuStdMessage
- b _081247A6
- .align 2, 0
-_08124610: .4byte sPartyMenuInternal
-_08124614: .4byte sFieldMoveCursorCallbacks
-_08124618:
- ldrb r0, [r7, 0x4]
- b _081247A2
-_0812461C:
- cmp r4, 0x6
- bhi _08124658
- movs r1, 0x82
- lsls r1, 4
- adds r0, r4, r1
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08124658
- ldr r0, _0812464C @ =gText_CantUseUntilNewBadge
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _08124650 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08124654 @ =Task_ReturnToChooseMonAfterText
- str r1, [r0]
- b _081247B4
- .align 2, 0
-_0812464C: .4byte gText_CantUseUntilNewBadge
-_08124650: .4byte gTasks
-_08124654: .4byte Task_ReturnToChooseMonAfterText
-_08124658:
- ldr r1, _08124680 @ =sFieldMoveCursorCallbacks
- lsls r0, r4, 3
- adds r5, r0, r1
- ldr r0, [r5]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812466E
- b _0812478C
-_0812466E:
- subs r0, r4, 0x2
- cmp r0, 0x8
- bhi _0812475C
- lsls r0, 2
- ldr r1, _08124684 @ =_08124688
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08124680: .4byte sFieldMoveCursorCallbacks
-_08124684: .4byte _08124688
- .align 2, 0
-_08124688:
- .4byte _0812474C
- .4byte _0812475C
- .4byte _0812475C
- .4byte _0812475C
- .4byte _0812475C
- .4byte _081246B4
- .4byte _081246F0
- .4byte _081246AC
- .4byte _081246AC
-_081246AC:
- adds r0, r6, 0
- bl ChooseMonForSoftboiled
- b _081247B4
-_081246B4:
- ldr r0, _081246E0 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x1C
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x1D]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r1, r0, 0
- ldr r0, _081246E4 @ =gStringVar1
- ldrb r1, [r1, 0x14]
- bl GetMapNameGeneric
- ldr r0, _081246E8 @ =gStringVar4
- ldr r1, _081246EC @ =gUnknown_8417640
- b _08124720
- .align 2, 0
-_081246E0: .4byte gSaveBlock1Ptr
-_081246E4: .4byte gStringVar1
-_081246E8: .4byte gStringVar4
-_081246EC: .4byte gUnknown_8417640
-_081246F0:
- ldr r0, _08124738 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x25
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r1, r0, 0
- ldr r0, _0812473C @ =gStringVar1
- ldrb r1, [r1, 0x14]
- bl GetMapNameGeneric
- ldr r0, _08124740 @ =gStringVar4
- ldr r1, _08124744 @ =gUnknown_8417615
-_08124720:
- bl StringExpandPlaceholders
- adds r0, r6, 0
- bl DisplayFieldMoveExitAreaMessage
- ldr r0, _08124748 @ =sPartyMenuInternal
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- strh r4, [r0]
- b _081247B4
- .align 2, 0
-_08124738: .4byte gSaveBlock1Ptr
-_0812473C: .4byte gStringVar1
-_08124740: .4byte gStringVar4
-_08124744: .4byte gUnknown_8417615
-_08124748: .4byte sPartyMenuInternal
-_0812474C:
- ldr r1, _08124754 @ =gPartyMenu
- ldr r0, _08124758 @ =sub_80C4EF8
- str r0, [r1]
- b _08124778
- .align 2, 0
-_08124754: .4byte gPartyMenu
-_08124758: .4byte sub_80C4EF8
-_0812475C:
- ldr r1, _08124780 @ =gPartyMenu
- ldr r0, _08124784 @ =CB2_ReturnToField
- str r0, [r1]
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _08124788 @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_8124BB0
-_08124778:
- adds r0, r6, 0
- bl Task_ClosePartyMenu
- b _081247B4
- .align 2, 0
-_08124780: .4byte gPartyMenu
-_08124784: .4byte CB2_ReturnToField
-_08124788: .4byte gPlayerParty
-_0812478C:
- cmp r4, 0
- beq _0812479A
- cmp r4, 0x4
- bne _081247A0
- bl DisplayCantUseSurfMessage
- b _081247A6
-_0812479A:
- bl DisplayCantUseFlashMessage
- b _081247A6
-_081247A0:
- ldrb r0, [r5, 0x4]
-_081247A2:
- bl DisplayPartyMenuStdMessage
-_081247A6:
- ldr r0, _081247BC @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _081247C0 @ =Task_CancelAfterAorBPress
- str r0, [r1]
-_081247B4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081247BC: .4byte gTasks
-_081247C0: .4byte Task_CancelAfterAorBPress
- thumb_func_end CursorCB_FieldMove
-
- thumb_func_start DisplayFieldMoveExitAreaMessage
-DisplayFieldMoveExitAreaMessage: @ 81247C4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _081247E8 @ =gStringVar4
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _081247EC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081247F0 @ =Task_FieldMoveExitAreaYesNo
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081247E8: .4byte gStringVar4
-_081247EC: .4byte gTasks
-_081247F0: .4byte Task_FieldMoveExitAreaYesNo
- thumb_func_end DisplayFieldMoveExitAreaMessage
-
- thumb_func_start Task_FieldMoveExitAreaYesNo
-Task_FieldMoveExitAreaYesNo: @ 81247F4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08124818
- bl PartyMenuDisplayYesNoMenu
- ldr r0, _08124820 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08124824 @ =Task_HandleFieldMoveExitAreaYesNoInput
- str r0, [r1]
-_08124818:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08124820: .4byte gTasks
-_08124824: .4byte Task_HandleFieldMoveExitAreaYesNoInput
- thumb_func_end Task_FieldMoveExitAreaYesNo
-
- thumb_func_start Task_HandleFieldMoveExitAreaYesNoInput
-Task_HandleFieldMoveExitAreaYesNoInput: @ 8124828
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0812484E
- cmp r1, 0
- bgt _08124848
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0812488C
- b _081248A2
-_08124848:
- cmp r1, 0x1
- beq _08124892
- b _081248A2
-_0812484E:
- ldr r1, _0812487C @ =gPartyMenu
- ldr r0, _08124880 @ =CB2_ReturnToField
- str r0, [r1]
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _08124884 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08124888 @ =sPartyMenuInternal
- ldr r1, [r1]
- movs r2, 0x86
- lsls r2, 2
- adds r1, r2
- ldrb r1, [r1]
- bl sub_8124BB0
- adds r0, r4, 0
- bl Task_ClosePartyMenu
- b _081248A2
- .align 2, 0
-_0812487C: .4byte gPartyMenu
-_08124880: .4byte CB2_ReturnToField
-_08124884: .4byte gPlayerParty
-_08124888: .4byte sPartyMenuInternal
-_0812488C:
- movs r0, 0x5
- bl PlaySE
-_08124892:
- ldr r0, _081248A8 @ =gFieldCallback2
- movs r1, 0
- str r1, [r0]
- ldr r0, _081248AC @ =gPostMenuFieldCallback
- str r1, [r0]
- adds r0, r4, 0
- bl Task_ReturnToChooseMonAfterText
-_081248A2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081248A8: .4byte gFieldCallback2
-_081248AC: .4byte gPostMenuFieldCallback
- thumb_func_end Task_HandleFieldMoveExitAreaYesNoInput
-
- thumb_func_start FieldCallback_PrepareFadeInFromMenu
-FieldCallback_PrepareFadeInFromMenu: @ 81248B0
- push {lr}
- bl sub_807DC00
- ldr r0, _081248C4 @ =Task_FieldMoveWaitForFade
- movs r1, 0x8
- bl CreateTask
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_081248C4: .4byte Task_FieldMoveWaitForFade
- thumb_func_end FieldCallback_PrepareFadeInFromMenu
-
- thumb_func_start Task_FieldMoveWaitForFade
-Task_FieldMoveWaitForFade: @ 81248C8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsWeatherNotFadingIn
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081248F4
- bl GetFieldMoveMonSpecies
- ldr r1, _081248FC @ =gFieldEffectArguments
- lsls r0, 16
- lsrs r0, 16
- str r0, [r1]
- ldr r0, _08124900 @ =gPostMenuFieldCallback
- ldr r0, [r0]
- bl _call_via_r0
- adds r0, r4, 0
- bl DestroyTask
-_081248F4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081248FC: .4byte gFieldEffectArguments
-_08124900: .4byte gPostMenuFieldCallback
- thumb_func_end Task_FieldMoveWaitForFade
-
- thumb_func_start GetFieldMoveMonSpecies
-GetFieldMoveMonSpecies: @ 8124904
- push {lr}
- ldr r0, _08124924 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08124928 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_08124924: .4byte gPartyMenu
-_08124928: .4byte gPlayerParty
- thumb_func_end GetFieldMoveMonSpecies
-
- thumb_func_start Task_CancelAfterAorBPress
-Task_CancelAfterAorBPress: @ 812492C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08124950 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08124946
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812494C
-_08124946:
- adds r0, r2, 0
- bl CursorCB_Cancel1
-_0812494C:
- pop {r0}
- bx r0
- .align 2, 0
-_08124950: .4byte gMain
- thumb_func_end Task_CancelAfterAorBPress
-
- thumb_func_start DisplayCantUseFlashMessage
-DisplayCantUseFlashMessage: @ 8124954
- push {lr}
- ldr r0, _0812496C @ =0x00000806
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124970
- movs r0, 0xC
- bl DisplayPartyMenuStdMessage
- b _08124976
- .align 2, 0
-_0812496C: .4byte 0x00000806
-_08124970:
- movs r0, 0xD
- bl DisplayPartyMenuStdMessage
-_08124976:
- pop {r0}
- bx r0
- thumb_func_end DisplayCantUseFlashMessage
-
- thumb_func_start FieldCallback_Surf
-FieldCallback_Surf: @ 812497C
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, _08124994 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- movs r0, 0x9
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08124994: .4byte gFieldEffectArguments
- thumb_func_end FieldCallback_Surf
-
- thumb_func_start SetUpFieldMove_Surf
-SetUpFieldMove_Surf: @ 8124998
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSemiDeepWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08124A00
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124A00
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124A00
- ldr r1, _081249F0 @ =gFieldCallback2
- ldr r0, _081249F4 @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _081249F8 @ =gPostMenuFieldCallback
- ldr r0, _081249FC @ =FieldCallback_Surf
- str r0, [r1]
- movs r0, 0x1
- b _08124A02
- .align 2, 0
-_081249F0: .4byte gFieldCallback2
-_081249F4: .4byte FieldCallback_PrepareFadeInFromMenu
-_081249F8: .4byte gPostMenuFieldCallback
-_081249FC: .4byte FieldCallback_Surf
-_08124A00:
- movs r0, 0
-_08124A02:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Surf
-
- thumb_func_start DisplayCantUseSurfMessage
-DisplayCantUseSurfMessage: @ 8124A0C
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _08124A24
- movs r0, 0x9
- bl DisplayPartyMenuStdMessage
- b _08124A82
-_08124A24:
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSemiDeepWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124A56
- movs r0, 0xA
- bl DisplayPartyMenuStdMessage
- b _08124A82
-_08124A56:
- ldr r0, _08124A78 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x3
- bne _08124A7C
- ldrb r0, [r1, 0x5]
- subs r0, 0x23
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08124A7C
- movs r0, 0xB
- bl DisplayPartyMenuStdMessage
- b _08124A82
- .align 2, 0
-_08124A78: .4byte gSaveBlock1Ptr
-_08124A7C:
- movs r0, 0x8
- bl DisplayPartyMenuStdMessage
-_08124A82:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end DisplayCantUseSurfMessage
-
- thumb_func_start SetUpFieldMove_Fly
-SetUpFieldMove_Fly: @ 8124A8C
- push {lr}
- ldr r0, _08124AA4 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl Overworld_MapTypeAllowsTeleportAndFly
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08124AA8
- movs r0, 0
- b _08124AAA
- .align 2, 0
-_08124AA4: .4byte gMapHeader
-_08124AA8:
- movs r0, 0x1
-_08124AAA:
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Fly
-
- thumb_func_start CB2_ReturnToPartyMenuFromFlyMap
-CB2_ReturnToPartyMenuFromFlyMap: @ 8124AB0
- push {lr}
- sub sp, 0xC
- movs r0, 0
- str r0, [sp]
- ldr r0, _08124AD4 @ =Task_HandleChooseMonInput
- str r0, [sp, 0x4]
- ldr r0, _08124AD8 @ =CB2_ReturnToStartMenu
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl InitPartyMenu
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_08124AD4: .4byte Task_HandleChooseMonInput
-_08124AD8: .4byte CB2_ReturnToStartMenu
- thumb_func_end CB2_ReturnToPartyMenuFromFlyMap
-
- thumb_func_start FieldCallback_Waterfall
-FieldCallback_Waterfall: @ 8124ADC
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, _08124AF4 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- movs r0, 0x2B
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08124AF4: .4byte gFieldEffectArguments
- thumb_func_end FieldCallback_Waterfall
-
- thumb_func_start SetUpFieldMove_Waterfall
-SetUpFieldMove_Waterfall: @ 8124AF8
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124B54
- bl IsPlayerSurfingNorth
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124B54
- ldr r1, _08124B44 @ =gFieldCallback2
- ldr r0, _08124B48 @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _08124B4C @ =gPostMenuFieldCallback
- ldr r0, _08124B50 @ =FieldCallback_Waterfall
- str r0, [r1]
- movs r0, 0x1
- b _08124B56
- .align 2, 0
-_08124B44: .4byte gFieldCallback2
-_08124B48: .4byte FieldCallback_PrepareFadeInFromMenu
-_08124B4C: .4byte gPostMenuFieldCallback
-_08124B50: .4byte FieldCallback_Waterfall
-_08124B54:
- movs r0, 0
-_08124B56:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Waterfall
-
- thumb_func_start sub_8124B60
-sub_8124B60: @ 8124B60
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0x8
- bl Alloc
- adds r7, r0, 0
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- strh r0, [r7, 0x4]
- strh r4, [r7]
- strh r5, [r7, 0x2]
- ldr r0, _08124B98 @ =gPartyMenu
- ldrb r0, [r0, 0xB]
- cmp r0, 0x6
- bne _08124B9C
- movs r0, 0xA
- adds r1, r7, 0
- bl sub_8113550
- b _08124BA4
- .align 2, 0
-_08124B98: .4byte gPartyMenu
-_08124B9C:
- movs r0, 0x9
- adds r1, r7, 0
- bl sub_8113550
-_08124BA4:
- adds r0, r7, 0
- bl Free
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8124B60
-
- thumb_func_start sub_8124BB0
-sub_8124BB0: @ 8124BB0
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- movs r0, 0x4
- bl Alloc
- adds r6, r0, 0
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- strh r0, [r6]
- strb r4, [r6, 0x2]
- ldrb r0, [r6, 0x2]
- cmp r0, 0x7
- beq _08124BDA
- cmp r0, 0x8
- beq _08124BFC
- movs r0, 0xFF
- b _08124C00
-_08124BDA:
- ldr r0, _08124BF8 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x1C
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x1D]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- b _08124BFE
- .align 2, 0
-_08124BF8: .4byte gSaveBlock1Ptr
-_08124BFC:
- ldr r0, _08124C18 @ =gMapHeader
-_08124BFE:
- ldrb r0, [r0, 0x14]
-_08124C00:
- strb r0, [r6, 0x3]
- movs r0, 0x24
- adds r1, r6, 0
- bl sub_8113550
- adds r0, r6, 0
- bl Free
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08124C18: .4byte gMapHeader
- thumb_func_end sub_8124BB0
-
- thumb_func_start sub_8124C1C
-sub_8124C1C: @ 8124C1C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x8
- bl Alloc
- adds r4, r0, 0
- ldrb r0, [r5]
- strb r0, [r4]
- ldrb r0, [r5, 0x1]
- strb r0, [r4, 0x1]
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r4, r1]
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r5, r0, 0
- adds r0, r4, 0
- bl Free
- movs r0, 0x4
- bl Alloc
- adds r4, r0, 0
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _08124C88 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- strh r0, [r4]
- movs r0, 0x2
- strb r0, [r4, 0x2]
- ldrb r0, [r5, 0x14]
- strb r0, [r4, 0x3]
- movs r0, 0x24
- adds r1, r4, 0
- bl sub_8113550
- adds r0, r4, 0
- bl Free
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08124C88: .4byte gPlayerParty
- thumb_func_end sub_8124C1C
-
- thumb_func_start CB2_ShowPartyMenuForItemUse
-CB2_ShowPartyMenuForItemUse: @ 8124C8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r6, _08124CB4 @ =CB2_ReturnToBagMenu
- ldr r0, _08124CB8 @ =gMain
- ldr r1, _08124CBC @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08124CCC
- movs r0, 0x1
- mov r8, r0
- bl GetPartyLayoutFromBattleType
- lsls r0, 24
- lsrs r7, r0, 24
- b _08124CD2
- .align 2, 0
-_08124CB4: .4byte CB2_ReturnToBagMenu
-_08124CB8: .4byte gMain
-_08124CBC: .4byte 0x00000439
-_08124CC0:
- ldr r0, _08124CC8 @ =gPartyMenu
- strb r5, [r0, 0x9]
- b _08124D16
- .align 2, 0
-_08124CC8: .4byte gPartyMenu
-_08124CCC:
- movs r1, 0
- mov r8, r1
- movs r7, 0
-_08124CD2:
- ldr r4, _08124D30 @ =gSpecialVar_ItemId
- ldrh r0, [r4]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA
- bne _08124D44
- ldr r1, _08124D34 @ =gPartyMenu
- movs r0, 0
- strb r0, [r1, 0x9]
- movs r5, 0
-_08124CEA:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08124D38 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08124D0C
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08124CC0
-_08124D0C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08124CEA
-_08124D16:
- ldr r0, _08124D30 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _08124D28
- ldr r6, _08124D3C @ =sub_8124DB0
-_08124D28:
- ldr r1, _08124D40 @ =Task_SetSacredAshCB
- movs r0, 0x7F
- b _08124D6A
- .align 2, 0
-_08124D30: .4byte gSpecialVar_ItemId
-_08124D34: .4byte gPartyMenu
-_08124D38: .4byte gPlayerParty
-_08124D3C: .4byte sub_8124DB0
-_08124D40: .4byte Task_SetSacredAshCB
-_08124D44:
- ldrh r0, [r4]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _08124D5A
- cmp r0, 0x5
- beq _08124D64
- movs r0, 0x5
- b _08124D68
-_08124D5A:
- movs r0, 0x4
- ldr r6, _08124D60 @ =sub_8124DA0
- b _08124D68
- .align 2, 0
-_08124D60: .4byte sub_8124DA0
-_08124D64:
- movs r0, 0x5
- ldr r6, _08124D88 @ =sub_8124DB0
-_08124D68:
- ldr r1, _08124D8C @ =Task_HandleChooseMonInput
-_08124D6A:
- str r0, [sp]
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r0, r8
- adds r1, r7, 0
- movs r2, 0x3
- movs r3, 0x1
- bl InitPartyMenu
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08124D88: .4byte sub_8124DB0
-_08124D8C: .4byte Task_HandleChooseMonInput
- thumb_func_end CB2_ShowPartyMenuForItemUse
-
- thumb_func_start CB2_ReturnToBagMenu
-CB2_ReturnToBagMenu: @ 8124D90
- push {lr}
- movs r0, 0xB
- movs r1, 0x3
- movs r2, 0
- bl GoToBagMenu
- pop {r0}
- bx r0
- thumb_func_end CB2_ReturnToBagMenu
-
- thumb_func_start sub_8124DA0
-sub_8124DA0: @ 8124DA0
- push {lr}
- movs r0, 0x5
- movs r1, 0
- movs r2, 0xFF
- bl InitTMCase
- pop {r0}
- bx r0
- thumb_func_end sub_8124DA0
-
- thumb_func_start sub_8124DB0
-sub_8124DB0: @ 8124DB0
- push {lr}
- movs r0, 0x6
- movs r1, 0
- movs r2, 0xFF
- bl InitBerryPouch
- pop {r0}
- bx r0
- thumb_func_end sub_8124DB0
-
- thumb_func_start sub_8124DC0
-sub_8124DC0: @ 8124DC0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08124DD8 @ =sPartyMenuInternal
- ldr r2, [r1]
- ldr r1, _08124DDC @ =sub_8124DE0
- str r1, [r2, 0x4]
- bl Task_ClosePartyMenu
- pop {r0}
- bx r0
- .align 2, 0
-_08124DD8: .4byte sPartyMenuInternal
-_08124DDC: .4byte sub_8124DE0
- thumb_func_end sub_8124DC0
-
- thumb_func_start sub_8124DE0
-sub_8124DE0: @ 8124DE0
- push {r4,lr}
- ldr r4, _08124E0C @ =gSpecialVar_ItemId
- ldrh r0, [r4]
- bl CheckIfItemIsTMHMOrEvolutionStone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08124E2C
- bl sub_8126C24
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08124E18
- ldr r0, _08124E10 @ =gPartyMenu
- ldrb r0, [r0, 0x9]
- ldrh r1, [r4]
- ldr r2, _08124E14 @ =ItemUseCB_EvolutionStone
- bl sub_811C540
- b _08124E38
- .align 2, 0
-_08124E0C: .4byte gSpecialVar_ItemId
-_08124E10: .4byte gPartyMenu
-_08124E14: .4byte ItemUseCB_EvolutionStone
-_08124E18:
- ldr r2, _08124E28 @ =gPartyMenu
- ldrb r0, [r2, 0x9]
- ldrh r1, [r4]
- ldr r2, [r2]
- bl sub_811C5AC
- b _08124E38
- .align 2, 0
-_08124E28: .4byte gPartyMenu
-_08124E2C:
- ldr r0, _08124E40 @ =gPartyMenu
- ldrb r0, [r0, 0x9]
- ldrh r1, [r4]
- ldr r2, _08124E44 @ =sub_8124E48
- bl sub_811C540
-_08124E38:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08124E40: .4byte gPartyMenu
-_08124E44: .4byte sub_8124E48
- thumb_func_end sub_8124DE0
-
- thumb_func_start sub_8124E48
-sub_8124E48: @ 8124E48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r7, _08124EBC @ =gSpecialVar_ItemId
- ldrh r0, [r7]
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _08124EC8
- bl sub_811D178
- cmp r0, 0x1
- bne _08124EC8
- ldr r0, _08124EC0 @ =gPartyMenu
- mov r8, r0
- ldrb r0, [r0, 0x9]
- lsls r0, 24
- asrs r0, 24
- movs r6, 0x64
- adds r4, r0, 0
- muls r4, r6
- ldr r5, _08124EC4 @ =gPlayerParty
- adds r4, r5
- ldrh r0, [r7]
- bl ItemIdToBattleMoveId
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl GiveMoveToMon
- mov r1, r8
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0x4
- bl AdjustFriendship
- ldrh r1, [r7]
- movs r0, 0xA9
- lsls r0, 1
- cmp r1, r0
- bhi _08124EB0
- adds r0, r1, 0
- movs r1, 0x1
- bl RemoveBagItem
-_08124EB0:
- mov r1, r8
- ldr r0, [r1]
- bl SetMainCallback2
- b _08124EE6
- .align 2, 0
-_08124EBC: .4byte gSpecialVar_ItemId
-_08124EC0: .4byte gPartyMenu
-_08124EC4: .4byte gPlayerParty
-_08124EC8:
- ldr r2, _08124EF4 @ =gPartyMenu
- ldrb r0, [r2, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r3, [r2, 0x9]
- movs r1, 0x7F
- str r1, [sp]
- ldr r1, _08124EF8 @ =Task_SetSacredAshCB
- str r1, [sp, 0x4]
- ldr r1, [r2]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- movs r2, 0
- bl InitPartyMenu
-_08124EE6:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08124EF4: .4byte gPartyMenu
-_08124EF8: .4byte Task_SetSacredAshCB
- thumb_func_end sub_8124E48
-
- thumb_func_start sub_8124EFC
-sub_8124EFC: @ 8124EFC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- bl sub_811D178
- cmp r0, 0x1
- bne _08124F94
- ldr r0, _08124F88 @ =gPartyMenu
- mov r8, r0
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, _08124F8C @ =gPlayerParty
- adds r5, r0
- bl GetMoveSlotToReplace
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r5, 0
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl RemoveMonPPBonus
- ldr r7, _08124F90 @ =gSpecialVar_ItemId
- ldrh r0, [r7]
- bl ItemIdToBattleMoveId
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- adds r2, r4, 0
- bl SetMonMoveSlot
- adds r0, r5, 0
- movs r1, 0x4
- bl AdjustFriendship
- ldrh r2, [r7]
- movs r0, 0x4
- adds r1, r5, 0
- adds r3, r6, 0
- bl ItemUse_SetQuestLogEvent
- ldrh r1, [r7]
- movs r0, 0xA9
- lsls r0, 1
- cmp r1, r0
- bhi _08124F7C
- adds r0, r1, 0
- movs r1, 0x1
- bl RemoveBagItem
-_08124F7C:
- mov r1, r8
- ldr r0, [r1]
- bl SetMainCallback2
- b _08124FB2
- .align 2, 0
-_08124F88: .4byte gPartyMenu
-_08124F8C: .4byte gPlayerParty
-_08124F90: .4byte gSpecialVar_ItemId
-_08124F94:
- ldr r4, _08124FC0 @ =gPartyMenu
- ldrb r0, [r4, 0x8]
- lsls r0, 28
- lsrs r0, 28
- ldrb r2, [r4, 0xB]
- ldrb r3, [r4, 0x9]
- movs r1, 0x7F
- str r1, [sp]
- ldr r1, _08124FC4 @ =Task_SetSacredAshCB
- str r1, [sp, 0x4]
- ldr r1, [r4]
- str r1, [sp, 0x8]
- movs r1, 0xFF
- bl InitPartyMenu
-_08124FB2:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08124FC0: .4byte gPartyMenu
-_08124FC4: .4byte Task_SetSacredAshCB
- thumb_func_end sub_8124EFC
-
- thumb_func_start Task_SetSacredAshCB
-Task_SetSacredAshCB: @ 8124FC8
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _08125000 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08124FFA
- ldr r0, _08125004 @ =gPartyMenu
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _08124FEE
- ldr r0, _08125008 @ =sPartyMenuInternal
- ldr r1, [r0]
- ldr r0, _0812500C @ =CB2_SetUpExitToBattleScreen
- str r0, [r1, 0x4]
-_08124FEE:
- ldr r0, _08125010 @ =gItemUseCB
- ldr r1, _08125014 @ =Task_ClosePartyMenuAfterText
- ldr r2, [r0]
- adds r0, r3, 0
- bl _call_via_r2
-_08124FFA:
- pop {r0}
- bx r0
- .align 2, 0
-_08125000: .4byte gPaletteFade
-_08125004: .4byte gPartyMenu
-_08125008: .4byte sPartyMenuInternal
-_0812500C: .4byte CB2_SetUpExitToBattleScreen
-_08125010: .4byte gItemUseCB
-_08125014: .4byte Task_ClosePartyMenuAfterText
- thumb_func_end Task_SetSacredAshCB
-
- thumb_func_start IsHPRecoveryItem
-IsHPRecoveryItem: @ 8125018
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _08125034
- ldr r0, _0812502C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08125030 @ =0x00003108
- adds r0, r1
- b _0812503E
- .align 2, 0
-_0812502C: .4byte gSaveBlock1Ptr
-_08125030: .4byte 0x00003108
-_08125034:
- ldr r1, _0812504C @ =gItemEffectTable
- subs r0, 0xD
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
-_0812503E:
- ldrb r1, [r0, 0x4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08125050
- movs r0, 0
- b _08125052
- .align 2, 0
-_0812504C: .4byte gItemEffectTable
-_08125050:
- movs r0, 0x1
-_08125052:
- pop {r1}
- bx r1
- thumb_func_end IsHPRecoveryItem
-
- thumb_func_start GetMedicineItemEffectMessage
-GetMedicineItemEffectMessage: @ 8125058
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x3
- cmp r0, 0x12
- bls _0812506E
- b _08125204
-_0812506E:
- lsls r0, 2
- ldr r1, _08125078 @ =_0812507C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08125078: .4byte _0812507C
- .align 2, 0
-_0812507C:
- .4byte _081250C8
- .4byte _081250DC
- .4byte _081250F0
- .4byte _08125104
- .4byte _08125118
- .4byte _0812512C
- .4byte _08125140
- .4byte _08125204
- .4byte _08125154
- .4byte _08125178
- .4byte _08125168
- .4byte _081251A8
- .4byte _081251B8
- .4byte _08125198
- .4byte _08125188
- .4byte _08125204
- .4byte _081251DC
- .4byte _081251DC
- .4byte _081251F0
-_081250C8:
- ldr r0, _081250D4 @ =gStringVar4
- ldr r1, _081250D8 @ =gText_PkmnCuredOfPoison
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_081250D4: .4byte gStringVar4
-_081250D8: .4byte gText_PkmnCuredOfPoison
-_081250DC:
- ldr r0, _081250E8 @ =gStringVar4
- ldr r1, _081250EC @ =gText_PkmnWokeUp2
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_081250E8: .4byte gStringVar4
-_081250EC: .4byte gText_PkmnWokeUp2
-_081250F0:
- ldr r0, _081250FC @ =gStringVar4
- ldr r1, _08125100 @ =gText_PkmnBurnHealed
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_081250FC: .4byte gStringVar4
-_08125100: .4byte gText_PkmnBurnHealed
-_08125104:
- ldr r0, _08125110 @ =gStringVar4
- ldr r1, _08125114 @ =gText_PkmnThawedOut
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_08125110: .4byte gStringVar4
-_08125114: .4byte gText_PkmnThawedOut
-_08125118:
- ldr r0, _08125124 @ =gStringVar4
- ldr r1, _08125128 @ =gText_PkmnCuredOfParalysis
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_08125124: .4byte gStringVar4
-_08125128: .4byte gText_PkmnCuredOfParalysis
-_0812512C:
- ldr r0, _08125138 @ =gStringVar4
- ldr r1, _0812513C @ =gText_PkmnSnappedOutOfConfusion
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_08125138: .4byte gStringVar4
-_0812513C: .4byte gText_PkmnSnappedOutOfConfusion
-_08125140:
- ldr r0, _0812514C @ =gStringVar4
- ldr r1, _08125150 @ =gText_PkmnGotOverInfatuation
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_0812514C: .4byte gStringVar4
-_08125150: .4byte gText_PkmnGotOverInfatuation
-_08125154:
- ldr r0, _08125160 @ =gStringVar4
- ldr r1, _08125164 @ =gText_PkmnBecameHealthy
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_08125160: .4byte gStringVar4
-_08125164: .4byte gText_PkmnBecameHealthy
-_08125168:
- ldr r0, _08125170 @ =gStringVar2
- ldr r1, _08125174 @ =gText_HP3
- b _081251BC
- .align 2, 0
-_08125170: .4byte gStringVar2
-_08125174: .4byte gText_HP3
-_08125178:
- ldr r0, _08125180 @ =gStringVar2
- ldr r1, _08125184 @ =gText_Attack3
- b _081251BC
- .align 2, 0
-_08125180: .4byte gStringVar2
-_08125184: .4byte gText_Attack3
-_08125188:
- ldr r0, _08125190 @ =gStringVar2
- ldr r1, _08125194 @ =gText_Defense3
- b _081251BC
- .align 2, 0
-_08125190: .4byte gStringVar2
-_08125194: .4byte gText_Defense3
-_08125198:
- ldr r0, _081251A0 @ =gStringVar2
- ldr r1, _081251A4 @ =gText_Speed2
- b _081251BC
- .align 2, 0
-_081251A0: .4byte gStringVar2
-_081251A4: .4byte gText_Speed2
-_081251A8:
- ldr r0, _081251B0 @ =gStringVar2
- ldr r1, _081251B4 @ =gText_SpAtk3
- b _081251BC
- .align 2, 0
-_081251B0: .4byte gStringVar2
-_081251B4: .4byte gText_SpAtk3
-_081251B8:
- ldr r0, _081251CC @ =gStringVar2
- ldr r1, _081251D0 @ =gText_SpDef3
-_081251BC:
- bl StringCopy
- ldr r0, _081251D4 @ =gStringVar4
- ldr r1, _081251D8 @ =gText_PkmnBaseVar2StatIncreased
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_081251CC: .4byte gStringVar2
-_081251D0: .4byte gText_SpDef3
-_081251D4: .4byte gStringVar4
-_081251D8: .4byte gText_PkmnBaseVar2StatIncreased
-_081251DC:
- ldr r0, _081251E8 @ =gStringVar4
- ldr r1, _081251EC @ =gText_MovesPPIncreased
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_081251E8: .4byte gStringVar4
-_081251EC: .4byte gText_MovesPPIncreased
-_081251F0:
- ldr r0, _081251FC @ =gStringVar4
- ldr r1, _08125200 @ =gText_PPWasRestored
- bl StringExpandPlaceholders
- b _0812520C
- .align 2, 0
-_081251FC: .4byte gStringVar4
-_08125200: .4byte gText_PPWasRestored
-_08125204:
- ldr r0, _08125210 @ =gStringVar4
- ldr r1, _08125214 @ =gText_WontHaveEffect
- bl StringExpandPlaceholders
-_0812520C:
- pop {r0}
- bx r0
- .align 2, 0
-_08125210: .4byte gStringVar4
-_08125214: .4byte gText_WontHaveEffect
- thumb_func_end GetMedicineItemEffectMessage
-
- thumb_func_start NotUsingHPEVItemOnShedinja
-NotUsingHPEVItemOnShedinja: @ 8125218
- push {r4,lr}
- adds r4, r0, 0
- lsls r0, r1, 16
- lsrs r0, 16
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- bne _08125244
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- ldr r1, _08125240 @ =0x0000012f
- cmp r0, r1
- bne _08125244
- movs r0, 0
- b _08125246
- .align 2, 0
-_08125240: .4byte 0x0000012f
-_08125244:
- movs r0, 0x1
-_08125246:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end NotUsingHPEVItemOnShedinja
-
- thumb_func_start IsItemFlute
-IsItemFlute: @ 812524C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x27
- beq _0812525E
- cmp r0, 0x29
- beq _0812525E
- cmp r0, 0x28
- bne _08125262
-_0812525E:
- movs r0, 0x1
- b _08125264
-_08125262:
- movs r0, 0
-_08125264:
- pop {r1}
- bx r1
- thumb_func_end IsItemFlute
-
- thumb_func_start ExecuteTableBasedItemEffect_
-ExecuteTableBasedItemEffect_: @ 8125268
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _08125294 @ =gMain
- ldr r1, _08125298 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081252A0
- movs r0, 0x64
- muls r0, r3
- ldr r1, _0812529C @ =gPlayerParty
- adds r0, r1
- adds r1, r5, 0
- adds r2, r3, 0
- b _081252BA
- .align 2, 0
-_08125294: .4byte gMain
-_08125298: .4byte 0x00000439
-_0812529C: .4byte gPlayerParty
-_081252A0:
- movs r0, 0x64
- adds r4, r3, 0
- muls r4, r0
- ldr r0, _081252CC @ =gPlayerParty
- adds r4, r0
- adds r0, r3, 0
- bl GetPartyIdFromBattleSlot
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
-_081252BA:
- adds r3, r6, 0
- bl ExecuteTableBasedItemEffect
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081252CC: .4byte gPlayerParty
- thumb_func_end ExecuteTableBasedItemEffect_
-
- thumb_func_start sub_81252D0
-sub_81252D0: @ 81252D0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08125300 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08125304 @ =gPlayerParty
- adds r5, r1, r0
- ldr r0, _08125308 @ =gSpecialVar_ItemId
- ldrh r6, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl NotUsingHPEVItemOnShedinja
- lsls r0, 24
- cmp r0, 0
- bne _0812530C
- movs r4, 0x1
- b _08125342
- .align 2, 0
-_08125300: .4byte gPartyMenu
-_08125304: .4byte gPlayerParty
-_08125308: .4byte gSpecialVar_ItemId
-_0812530C:
- adds r0, r6, 0
- bl IsHPRecoveryItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08125330
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
-_08125330:
- ldr r0, _08125370 @ =gPartyMenu
- ldrb r2, [r0, 0x9]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r3, 0
- bl PokemonUseItemEffects2
- lsls r0, 24
- lsrs r4, r0, 24
-_08125342:
- movs r0, 0x5
- bl PlaySE
- cmp r4, 0
- beq _08125380
- ldr r1, _08125374 @ =gPartyMenuUseExitCallback
- movs r0, 0
- strb r0, [r1]
- ldr r0, _08125378 @ =gText_WontHaveEffect
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _0812537C @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- mov r1, r8
- str r1, [r0]
- b _08125398
- .align 2, 0
-_08125370: .4byte gPartyMenu
-_08125374: .4byte gPartyMenuUseExitCallback
-_08125378: .4byte gText_WontHaveEffect
-_0812537C: .4byte gTasks
-_08125380:
- ldr r3, _081253A4 @ =0x0000ffff
- movs r0, 0x4
- adds r1, r5, 0
- adds r2, r6, 0
- bl ItemUse_SetQuestLogEvent
- adds r0, r7, 0
- bl sub_8124DC0
- ldr r1, _081253A8 @ =gItemUseCB
- ldr r0, _081253AC @ =ItemUseCB_Medicine
- str r0, [r1]
-_08125398:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081253A4: .4byte 0x0000ffff
-_081253A8: .4byte gItemUseCB
-_081253AC: .4byte ItemUseCB_Medicine
- thumb_func_end sub_81252D0
-
- thumb_func_start ItemUseCB_Medicine
-ItemUseCB_Medicine: @ 81253B0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- str r1, [sp, 0x4]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r0, 0
- mov r10, r0
- ldr r0, _08125438 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0812543C @ =gPlayerParty
- adds r5, r1, r0
- ldr r0, _08125440 @ =gSpecialVar_ItemId
- ldrh r6, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl NotUsingHPEVItemOnShedinja
- lsls r0, 24
- cmp r0, 0
- beq _08125428
- adds r0, r6, 0
- bl IsHPRecoveryItem
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x1
- bne _08125416
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- cmp r10, r0
- bne _08125416
- movs r1, 0
- mov r8, r1
-_08125416:
- ldr r4, _08125438 @ =gPartyMenu
- ldrb r0, [r4, 0x9]
- adds r1, r6, 0
- movs r2, 0
- bl ExecuteTableBasedItemEffect_
- lsls r0, 24
- cmp r0, 0
- beq _0812544C
-_08125428:
- ldr r1, _08125444 @ =gPartyMenuUseExitCallback
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08125448 @ =gText_WontHaveEffect
- b _0812551C
- .align 2, 0
-_08125438: .4byte gPartyMenu
-_0812543C: .4byte gPlayerParty
-_08125440: .4byte gSpecialVar_ItemId
-_08125444: .4byte gPartyMenuUseExitCallback
-_08125448: .4byte gText_WontHaveEffect
-_0812544C:
- ldr r1, _08125474 @ =gPartyMenuUseExitCallback
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r6, 0
- bl IsItemFlute
- lsls r0, 24
- cmp r0, 0
- bne _08125478
- movs r0, 0x1
- bl PlaySE
- ldrb r0, [r4, 0xB]
- cmp r0, 0xE
- beq _0812547E
- adds r0, r6, 0
- movs r1, 0x1
- bl RemoveBagItem
- b _0812547E
- .align 2, 0
-_08125474: .4byte gPartyMenuUseExitCallback
-_08125478:
- movs r0, 0x6E
- bl PlaySE
-_0812547E:
- ldr r4, _081254FC @ =sPartyMenuBoxes
- ldr r7, _08125500 @ =gPartyMenu
- movs r0, 0x9
- ldrsb r0, [r7, r0]
- lsls r0, 4
- ldr r1, [r4]
- adds r1, r0
- adds r0, r5, 0
- bl SetPartyMonAilmentGfx
- ldr r2, _08125504 @ =gSprites
- movs r0, 0x9
- ldrsb r0, [r7, r0]
- ldr r1, [r4]
- lsls r0, 4
- adds r3, r0, r1
- ldrb r1, [r3, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _081254BC
- adds r0, r5, 0
- adds r1, r3, 0
- movs r2, 0x1
- bl DisplayPartyPokemonLevelCheck
-_081254BC:
- mov r2, r8
- cmp r2, 0x1
- bne _0812550C
- mov r0, r10
- cmp r0, 0
- bne _081254D0
- ldrb r0, [r7, 0x9]
- movs r1, 0x1
- bl AnimatePartySlot
-_081254D0:
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- mov r1, r10
- subs r3, r1
- lsls r3, 16
- asrs r3, 16
- ldrb r1, [r7, 0x9]
- ldr r0, _08125508 @ =Task_DisplayHPRestoredMessage
- str r0, [sp]
- mov r0, r9
- movs r2, 0x1
- bl PartyMenuModifyHP
- mov r0, r9
- movs r1, 0
- mov r2, r10
- bl ResetHPTaskData
- b _08125538
- .align 2, 0
-_081254FC: .4byte sPartyMenuBoxes
-_08125500: .4byte gPartyMenu
-_08125504: .4byte gSprites
-_08125508: .4byte Task_DisplayHPRestoredMessage
-_0812550C:
- ldr r1, _08125548 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- adds r0, r6, 0
- bl GetMedicineItemEffectMessage
- ldr r0, _0812554C @ =gStringVar4
-_0812551C:
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _08125550 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldr r1, [sp, 0x4]
- str r1, [r0]
-_08125538:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08125548: .4byte gStringVar1
-_0812554C: .4byte gStringVar4
-_08125550: .4byte gTasks
- thumb_func_end ItemUseCB_Medicine
-
- thumb_func_start Task_DisplayHPRestoredMessage
-Task_DisplayHPRestoredMessage: @ 8125554
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _081255A0 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081255A4 @ =gPlayerParty
- adds r0, r1
- ldr r1, _081255A8 @ =gStringVar1
- bl GetMonNickname
- ldr r4, _081255AC @ =gStringVar4
- ldr r1, _081255B0 @ =gText_PkmnHPRestoredByVar2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- bl HandleBattleLowHpMusicChange
- ldr r1, _081255B4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _081255B8 @ =Task_ClosePartyMenuAfterText
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081255A0: .4byte gPartyMenu
-_081255A4: .4byte gPlayerParty
-_081255A8: .4byte gStringVar1
-_081255AC: .4byte gStringVar4
-_081255B0: .4byte gText_PkmnHPRestoredByVar2
-_081255B4: .4byte gTasks
-_081255B8: .4byte Task_ClosePartyMenuAfterText
- thumb_func_end Task_DisplayHPRestoredMessage
-
- thumb_func_start Task_ClosePartyMenuAfterText
-Task_ClosePartyMenuAfterText: @ 81255BC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081255E2
- ldr r0, _081255E8 @ =gPartyMenuUseExitCallback
- ldrb r1, [r0]
- cmp r1, 0
- bne _081255DC
- ldr r0, _081255EC @ =sPartyMenuInternal
- ldr r0, [r0]
- str r1, [r0, 0x4]
-_081255DC:
- adds r0, r4, 0
- bl Task_ClosePartyMenu
-_081255E2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081255E8: .4byte gPartyMenuUseExitCallback
-_081255EC: .4byte sPartyMenuInternal
- thumb_func_end Task_ClosePartyMenuAfterText
-
- thumb_func_start ShowMoveSelectWindow
-ShowMoveSelectWindow: @ 81255F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- mov r10, r0
- movs r1, 0x2
- mov r8, r1
- movs r0, 0x3
- bl DisplaySelectionWindow
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r6, 0
- movs r0, 0x64
- adds r2, r4, 0
- muls r2, r0
- str r2, [sp, 0xC]
-_08125620:
- ldr r0, _081256B8 @ =gPlayerParty
- adds r1, r6, 0
- adds r1, 0xD
- ldr r2, [sp, 0xC]
- adds r0, r2, r0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r0, r8
- movs r1, 0
- bl GetFontAttribute
- adds r4, r0, 0
- mov r0, r8
- movs r1, 0x2
- bl GetFontAttribute
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xD
- adds r2, r5, 0
- muls r2, r0
- ldr r0, _081256BC @ =gMoveNames
- adds r2, r0
- lsls r0, r6, 4
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r7, 0
- str r7, [sp, 0x8]
- mov r0, r9
- mov r1, r8
- adds r3, r4, 0
- bl AddTextPrinterParameterized
- cmp r5, 0
- beq _08125680
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_08125680:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _08125620
- movs r0, 0x10
- str r0, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- str r7, [sp, 0x8]
- mov r0, r9
- mov r1, r8
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081256B8: .4byte gPlayerParty
-_081256BC: .4byte gMoveNames
- thumb_func_end ShowMoveSelectWindow
-
- thumb_func_start Task_HandleWhichMoveInput
-Task_HandleWhichMoveInput: @ 81256C0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl Menu_ProcessInput
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _081256F2
- adds r0, 0x1
- cmp r1, r0
- bne _081256EC
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl ReturnToUseOnWhichMon
- b _081256F2
-_081256EC:
- adds r0, r5, 0
- bl SetSelectedMoveForPPItem
-_081256F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end Task_HandleWhichMoveInput
-
- thumb_func_start ItemUseCB_PPRecovery
-ItemUseCB_PPRecovery: @ 81256F8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08125710 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- cmp r0, 0xAF
- bne _0812571C
- ldr r0, _08125714 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08125718 @ =0x00003108
- adds r0, r1
- b _08125726
- .align 2, 0
-_08125710: .4byte gSpecialVar_ItemId
-_08125714: .4byte gSaveBlock1Ptr
-_08125718: .4byte 0x00003108
-_0812571C:
- ldr r1, _0812574C @ =gItemEffectTable
- subs r0, 0xD
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
-_08125726:
- ldrb r1, [r0, 0x4]
- movs r0, 0x10
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0812575C
- ldr r0, _08125750 @ =gPartyMenu
- strh r1, [r0, 0xE]
- ldrb r1, [r0, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _08125754
- adds r0, r4, 0
- bl TryUsePPItem
- b _0812577E
- .align 2, 0
-_0812574C: .4byte gItemEffectTable
-_08125750: .4byte gPartyMenu
-_08125754:
- adds r0, r4, 0
- bl sub_812580C
- b _0812577E
-_0812575C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x17
- bl DisplayPartyMenuStdMessage
- ldr r0, _08125784 @ =gPartyMenu
- ldrb r0, [r0, 0x9]
- bl ShowMoveSelectWindow
- ldr r1, _08125788 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812578C @ =Task_HandleWhichMoveInput
- str r1, [r0]
-_0812577E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125784: .4byte gPartyMenu
-_08125788: .4byte gTasks
-_0812578C: .4byte Task_HandleWhichMoveInput
- thumb_func_end ItemUseCB_PPRecovery
-
- thumb_func_start SetSelectedMoveForPPItem
-SetSelectedMoveForPPItem: @ 8125790
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081257C0 @ =sPartyMenuInternal
- ldr r0, [r0]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- bl Menu_GetCursorPos
- ldr r1, _081257C4 @ =gPartyMenu
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- ldrb r1, [r1, 0x8]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _081257C8
- adds r0, r4, 0
- bl TryUsePPItem
- b _081257CE
- .align 2, 0
-_081257C0: .4byte sPartyMenuInternal
-_081257C4: .4byte gPartyMenu
-_081257C8:
- adds r0, r4, 0
- bl sub_812580C
-_081257CE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SetSelectedMoveForPPItem
-
- thumb_func_start ReturnToUseOnWhichMon
-ReturnToUseOnWhichMon: @ 81257D4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08125800 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _08125804 @ =Task_HandleChooseMonInput
- str r0, [r1]
- ldr r0, _08125808 @ =sPartyMenuInternal
- ldr r0, [r0]
- movs r1, 0
- str r1, [r0, 0x4]
- adds r0, 0xC
- bl PartyMenuRemoveWindow
- movs r0, 0x5
- bl DisplayPartyMenuStdMessage
- pop {r0}
- bx r0
- .align 2, 0
-_08125800: .4byte gTasks
-_08125804: .4byte Task_HandleChooseMonInput
-_08125808: .4byte sPartyMenuInternal
- thumb_func_end ReturnToUseOnWhichMon
-
- thumb_func_start sub_812580C
-sub_812580C: @ 812580C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r3, _08125860 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r3, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08125864 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08125868 @ =gSpecialVar_ItemId
- ldrh r1, [r1]
- ldrb r2, [r3, 0x9]
- ldrb r3, [r3, 0xE]
- bl PokemonUseItemEffects2
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- cmp r4, 0
- beq _0812587C
- ldr r1, _0812586C @ =gPartyMenuUseExitCallback
- movs r0, 0
- strb r0, [r1]
- ldr r0, _08125870 @ =gText_WontHaveEffect
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _08125874 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125878 @ =Task_ClosePartyMenuAfterText
- str r1, [r0]
- b _08125888
- .align 2, 0
-_08125860: .4byte gPartyMenu
-_08125864: .4byte gPlayerParty
-_08125868: .4byte gSpecialVar_ItemId
-_0812586C: .4byte gPartyMenuUseExitCallback
-_08125870: .4byte gText_WontHaveEffect
-_08125874: .4byte gTasks
-_08125878: .4byte Task_ClosePartyMenuAfterText
-_0812587C:
- adds r0, r5, 0
- bl sub_8124DC0
- ldr r1, _08125890 @ =gItemUseCB
- ldr r0, _08125894 @ =sub_8125898
- str r0, [r1]
-_08125888:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08125890: .4byte gItemUseCB
-_08125894: .4byte sub_8125898
- thumb_func_end sub_812580C
-
- thumb_func_start sub_8125898
-sub_8125898: @ 8125898
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r5, _08125930 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r5, r1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, _08125934 @ =gPlayerParty
- adds r4, r0
- ldrb r0, [r5, 0x9]
- ldr r6, _08125938 @ =gSpecialVar_ItemId
- ldrh r1, [r6]
- ldrb r2, [r5, 0xE]
- bl ExecuteTableBasedItemEffect_
- ldr r1, _0812593C @ =gPartyMenuUseExitCallback
- movs r0, 0x1
- strb r0, [r1]
- ldrh r2, [r6]
- ldr r3, _08125940 @ =0x0000ffff
- movs r0, 0x4
- adds r1, r4, 0
- bl ItemUse_SetQuestLogEvent
- movs r0, 0x1
- bl PlaySE
- ldrh r0, [r6]
- movs r1, 0x1
- bl RemoveBagItem
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08125944 @ =gStringVar1
- movs r1, 0xD
- muls r1, r0
- ldr r0, _08125948 @ =gMoveNames
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- ldrh r0, [r6]
- bl GetMedicineItemEffectMessage
- ldr r0, _0812594C @ =gStringVar4
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _08125950 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125954 @ =Task_ClosePartyMenuAfterText
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08125930: .4byte gPartyMenu
-_08125934: .4byte gPlayerParty
-_08125938: .4byte gSpecialVar_ItemId
-_0812593C: .4byte gPartyMenuUseExitCallback
-_08125940: .4byte 0x0000ffff
-_08125944: .4byte gStringVar1
-_08125948: .4byte gMoveNames
-_0812594C: .4byte gStringVar4
-_08125950: .4byte gTasks
-_08125954: .4byte Task_ClosePartyMenuAfterText
- thumb_func_end sub_8125898
-
- thumb_func_start TryUsePPItem
-TryUsePPItem: @ 8125958
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r7, _08125990 @ =gPartyMenu + 14
- ldr r0, _08125994 @ =gSpecialVar_ItemId
- ldrh r5, [r0]
- movs r0, 0xE
- negs r0, r0
- adds r0, r7
- mov r8, r0
- ldrb r0, [r0, 0x9]
- ldrb r2, [r7]
- adds r1, r5, 0
- bl ExecuteTableBasedItemEffect_
- lsls r0, 24
- cmp r0, 0
- beq _081259A0
- ldr r0, _08125998 @ =gPartyMenuUseExitCallback
- strb r4, [r0]
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0812599C @ =gText_WontHaveEffect
- b _081259F6
- .align 2, 0
-_08125990: .4byte gPartyMenu + 14
-_08125994: .4byte gSpecialVar_ItemId
-_08125998: .4byte gPartyMenuUseExitCallback
-_0812599C: .4byte gText_WontHaveEffect
-_081259A0:
- ldr r1, _08125A1C @ =gPartyMenuUseExitCallback
- movs r0, 0x1
- strb r0, [r1]
- mov r0, r8
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, _08125A20 @ =gPlayerParty
- adds r4, r0
- ldr r3, _08125A24 @ =0x0000ffff
- movs r0, 0x4
- adds r1, r4, 0
- adds r2, r5, 0
- bl ItemUse_SetQuestLogEvent
- movs r0, 0x1
- bl PlaySE
- adds r0, r5, 0
- movs r1, 0x1
- bl RemoveBagItem
- movs r0, 0
- ldrsh r1, [r7, r0]
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _08125A28 @ =gStringVar1
- movs r1, 0xD
- muls r1, r4
- ldr r2, _08125A2C @ =gMoveNames
- adds r1, r2
- bl StringCopy
- adds r0, r5, 0
- bl GetMedicineItemEffectMessage
- ldr r0, _08125A30 @ =gStringVar4
-_081259F6:
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _08125A34 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125A38 @ =Task_ClosePartyMenuAfterText
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08125A1C: .4byte gPartyMenuUseExitCallback
-_08125A20: .4byte gPlayerParty
-_08125A24: .4byte 0x0000ffff
-_08125A28: .4byte gStringVar1
-_08125A2C: .4byte gMoveNames
-_08125A30: .4byte gStringVar4
-_08125A34: .4byte gTasks
-_08125A38: .4byte Task_ClosePartyMenuAfterText
- thumb_func_end TryUsePPItem
-
- thumb_func_start ItemUseCB_PPUp
-ItemUseCB_PPUp: @ 8125A3C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x18
- bl DisplayPartyMenuStdMessage
- ldr r0, _08125A6C @ =gPartyMenu
- ldrb r0, [r0, 0x9]
- bl ShowMoveSelectWindow
- ldr r1, _08125A70 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125A74 @ =Task_HandleWhichMoveInput
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125A6C: .4byte gPartyMenu
-_08125A70: .4byte gTasks
-_08125A74: .4byte Task_HandleWhichMoveInput
- thumb_func_end ItemUseCB_PPUp
-
- thumb_func_start ItemIdToBattleMoveId
-ItemIdToBattleMoveId: @ 8125A78
- lsls r0, 16
- ldr r1, _08125A88 @ =0xfedf0000
- adds r0, r1
- ldr r1, _08125A8C @ =sTMHMMoves
- lsrs r0, 15
- adds r0, r1
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_08125A88: .4byte 0xfedf0000
-_08125A8C: .4byte sTMHMMoves
- thumb_func_end ItemIdToBattleMoveId
-
- thumb_func_start IsMoveHm
-IsMoveHm: @ 8125A90
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0
- ldr r3, _08125AAC @ =sTMHMMoves
-_08125A9A:
- adds r0, r1, 0
- adds r0, 0x32
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, r2
- bne _08125AB0
- movs r0, 0x1
- b _08125ABC
- .align 2, 0
-_08125AAC: .4byte sTMHMMoves
-_08125AB0:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x6
- bls _08125A9A
- movs r0, 0
-_08125ABC:
- pop {r1}
- bx r1
- thumb_func_end IsMoveHm
-
- thumb_func_start MonKnowsMove
-MonKnowsMove: @ 8125AC0
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- movs r4, 0
-_08125ACA:
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r6, 0
- bl GetMonData
- cmp r0, r5
- bne _08125ADC
- movs r0, 0x1
- b _08125AE8
-_08125ADC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08125ACA
- movs r0, 0
-_08125AE8:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end MonKnowsMove
-
- thumb_func_start DisplayLearnMoveMessage
-DisplayLearnMoveMessage: @ 8125AF0
- push {r4,lr}
- adds r1, r0, 0
- ldr r4, _08125B10 @ =gStringVar4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125B10: .4byte gStringVar4
- thumb_func_end DisplayLearnMoveMessage
-
- thumb_func_start DisplayLearnMoveMessageAndClose
-DisplayLearnMoveMessageAndClose: @ 8125B14
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- bl DisplayLearnMoveMessage
- ldr r1, _08125B38 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125B3C @ =Task_ClosePartyMenuAfterText
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125B38: .4byte gTasks
-_08125B3C: .4byte Task_ClosePartyMenuAfterText
- thumb_func_end DisplayLearnMoveMessageAndClose
-
- thumb_func_start ItemUseCB_TMHM
-ItemUseCB_TMHM: @ 8125B40
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r7, _08125BD0 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r7, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08125BD4 @ =gPlayerParty
- adds r4, r1, r0
- movs r0, 0xE
- adds r0, r7
- mov r8, r0
- ldr r0, _08125BD8 @ =gSpecialVar_ItemId
- ldrh r5, [r0]
- ldr r1, _08125BDC @ =gStringVar1
- adds r0, r4, 0
- bl GetMonNickname
- adds r0, r5, 0
- bl ItemIdToBattleMoveId
- strh r0, [r7, 0xE]
- ldr r0, _08125BE0 @ =gStringVar2
- movs r1, 0xE
- ldrsh r2, [r7, r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08125BE4 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- movs r0, 0
- mov r1, r8
- strh r0, [r1, 0x2]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl CanMonLearnTMTutor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08125BF4
- cmp r0, 0x2
- beq _08125BFC
- ldrh r1, [r7, 0xE]
- adds r0, r4, 0
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _08125BE8 @ =0x0000ffff
- cmp r0, r3
- beq _08125C0C
- movs r0, 0x4
- adds r1, r4, 0
- adds r2, r5, 0
- bl ItemUse_SetQuestLogEvent
- adds r0, r6, 0
- bl sub_8124DC0
- ldr r1, _08125BEC @ =gItemUseCB
- ldr r0, _08125BF0 @ =Task_LearnedMove_
- str r0, [r1]
- b _08125C20
- .align 2, 0
-_08125BD0: .4byte gPartyMenu
-_08125BD4: .4byte gPlayerParty
-_08125BD8: .4byte gSpecialVar_ItemId
-_08125BDC: .4byte gStringVar1
-_08125BE0: .4byte gStringVar2
-_08125BE4: .4byte gMoveNames
-_08125BE8: .4byte 0x0000ffff
-_08125BEC: .4byte gItemUseCB
-_08125BF0: .4byte Task_LearnedMove_
-_08125BF4:
- ldr r1, _08125BF8 @ =gText_PkmnCantLearnMove
- b _08125BFE
- .align 2, 0
-_08125BF8: .4byte gText_PkmnCantLearnMove
-_08125BFC:
- ldr r1, _08125C08 @ =gText_PkmnAlreadyKnows
-_08125BFE:
- adds r0, r6, 0
- bl DisplayLearnMoveMessageAndClose
- b _08125C20
- .align 2, 0
-_08125C08: .4byte gText_PkmnAlreadyKnows
-_08125C0C:
- ldr r0, _08125C2C @ =gText_PkmnNeedsToReplaceMove
- bl DisplayLearnMoveMessage
- ldr r1, _08125C30 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125C34 @ =Task_ReplaceMoveYesNo
- str r1, [r0]
-_08125C20:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08125C2C: .4byte gText_PkmnNeedsToReplaceMove
-_08125C30: .4byte gTasks
-_08125C34: .4byte Task_ReplaceMoveYesNo
- thumb_func_end ItemUseCB_TMHM
-
- thumb_func_start Task_LearnedMove_
-Task_LearnedMove_: @ 8125C38
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl Task_LearnedMove
- pop {r0}
- bx r0
- thumb_func_end Task_LearnedMove_
-
- thumb_func_start Task_LearnedMove
-Task_LearnedMove: @ 8125C48
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _08125CCC @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r2, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08125CD0 @ =gPlayerParty
- adds r5, r1, r0
- adds r6, r2, 0
- adds r6, 0xE
- ldr r0, _08125CD4 @ =gSpecialVar_ItemId
- ldrh r4, [r0]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08125C84
- adds r0, r5, 0
- movs r1, 0x4
- bl AdjustFriendship
- movs r0, 0xA9
- lsls r0, 1
- cmp r4, r0
- bhi _08125C84
- adds r0, r4, 0
- movs r1, 0x1
- bl RemoveBagItem
-_08125C84:
- ldr r1, _08125CD8 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, _08125CDC @ =gStringVar2
- movs r1, 0
- ldrsh r2, [r6, r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08125CE0 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, _08125CE4 @ =gStringVar4
- ldr r1, _08125CE8 @ =gText_PkmnLearnedMove3
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _08125CEC @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125CF0 @ =Task_DoLearnedMoveFanfareAfterText
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08125CCC: .4byte gPartyMenu
-_08125CD0: .4byte gPlayerParty
-_08125CD4: .4byte gSpecialVar_ItemId
-_08125CD8: .4byte gStringVar1
-_08125CDC: .4byte gStringVar2
-_08125CE0: .4byte gMoveNames
-_08125CE4: .4byte gStringVar4
-_08125CE8: .4byte gText_PkmnLearnedMove3
-_08125CEC: .4byte gTasks
-_08125CF0: .4byte Task_DoLearnedMoveFanfareAfterText
- thumb_func_end Task_LearnedMove
-
- thumb_func_start Task_DoLearnedMoveFanfareAfterText
-Task_DoLearnedMoveFanfareAfterText: @ 8125CF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08125D1A
- ldr r0, _08125D20 @ =0x00000101
- bl PlayFanfare
- ldr r1, _08125D24 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125D28 @ =Task_LearnNextMoveOrClosePartyMenu
- str r1, [r0]
-_08125D1A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125D20: .4byte 0x00000101
-_08125D24: .4byte gTasks
-_08125D28: .4byte Task_LearnNextMoveOrClosePartyMenu
- thumb_func_end Task_DoLearnedMoveFanfareAfterText
-
- thumb_func_start Task_LearnNextMoveOrClosePartyMenu
-Task_LearnNextMoveOrClosePartyMenu: @ 8125D2C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08125D7E
- ldr r0, _08125D68 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08125D54
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08125D7E
-_08125D54:
- ldr r0, _08125D6C @ =gPartyMenu
- movs r1, 0x10
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _08125D70
- adds r0, r4, 0
- bl Task_TryLearningNextMove
- b _08125D7E
- .align 2, 0
-_08125D68: .4byte gMain
-_08125D6C: .4byte gPartyMenu
-_08125D70:
- cmp r0, 0x2
- bne _08125D78
- ldr r0, _08125D84 @ =gSpecialVar_Result
- strh r2, [r0]
-_08125D78:
- adds r0, r5, 0
- bl Task_ClosePartyMenu
-_08125D7E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08125D84: .4byte gSpecialVar_Result
- thumb_func_end Task_LearnNextMoveOrClosePartyMenu
-
- thumb_func_start Task_ReplaceMoveYesNo
-Task_ReplaceMoveYesNo: @ 8125D88
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08125DAC
- bl PartyMenuDisplayYesNoMenu
- ldr r0, _08125DB4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08125DB8 @ =Task_HandleReplaceMoveYesNoInput
- str r0, [r1]
-_08125DAC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125DB4: .4byte gTasks
-_08125DB8: .4byte Task_HandleReplaceMoveYesNoInput
- thumb_func_end Task_ReplaceMoveYesNo
-
- thumb_func_start Task_HandleReplaceMoveYesNoInput
-Task_HandleReplaceMoveYesNoInput: @ 8125DBC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08125DE2
- cmp r1, 0
- bgt _08125DDC
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08125E08
- b _08125E14
-_08125DDC:
- cmp r1, 0x1
- beq _08125E0E
- b _08125E14
-_08125DE2:
- ldr r0, _08125DFC @ =gText_WhichMoveToForget
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- ldr r1, _08125E00 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08125E04 @ =Task_ShowSummaryScreenToForgetMove
- str r1, [r0]
- b _08125E14
- .align 2, 0
-_08125DFC: .4byte gText_WhichMoveToForget
-_08125E00: .4byte gTasks
-_08125E04: .4byte Task_ShowSummaryScreenToForgetMove
-_08125E08:
- movs r0, 0x5
- bl PlaySE
-_08125E0E:
- adds r0, r4, 0
- bl StopLearningMovePrompt
-_08125E14:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end Task_HandleReplaceMoveYesNoInput
-
- thumb_func_start Task_ShowSummaryScreenToForgetMove
-Task_ShowSummaryScreenToForgetMove: @ 8125E1C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08125E3C
- ldr r0, _08125E44 @ =sPartyMenuInternal
- ldr r1, [r0]
- ldr r0, _08125E48 @ =CB2_ShowSummaryScreenToForgetMove
- str r0, [r1, 0x4]
- adds r0, r4, 0
- bl Task_ClosePartyMenu
-_08125E3C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125E44: .4byte sPartyMenuInternal
-_08125E48: .4byte CB2_ShowSummaryScreenToForgetMove
- thumb_func_end Task_ShowSummaryScreenToForgetMove
-
- thumb_func_start CB2_ShowSummaryScreenToForgetMove
-CB2_ShowSummaryScreenToForgetMove: @ 8125E4C
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _08125E74 @ =gPlayerParty
- ldr r4, _08125E78 @ =gPartyMenu
- ldrb r1, [r4, 0x9]
- ldr r2, _08125E7C @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08125E80 @ =CB2_ReturnToPartyMenuWhileLearningMove
- ldrh r4, [r4, 0xE]
- str r4, [sp]
- bl ShowSelectMovePokemonSummaryScreen
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08125E74: .4byte gPlayerParty
-_08125E78: .4byte gPartyMenu
-_08125E7C: .4byte gPlayerPartyCount
-_08125E80: .4byte CB2_ReturnToPartyMenuWhileLearningMove
- thumb_func_end CB2_ShowSummaryScreenToForgetMove
-
- thumb_func_start CB2_ReturnToPartyMenuWhileLearningMove
-CB2_ReturnToPartyMenuWhileLearningMove: @ 8125E84
- push {r4,r5,lr}
- sub sp, 0xC
- bl GetMoveSlotToReplace
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r4, _08125ED0 @ =gPartyMenu
- movs r0, 0x10
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _08125EE8
- cmp r2, 0x4
- beq _08125EE8
- movs r1, 0x9
- ldrsb r1, [r4, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08125ED4 @ =gPlayerParty
- adds r0, r1
- adds r1, r2, 0
- adds r1, 0xD
- bl GetMonData
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- ldrb r0, [r4, 0x9]
- ldr r1, _08125ED8 @ =gSpecialVar_ItemId
- ldrh r1, [r1]
- ldr r3, _08125EDC @ =sub_8124EFC
- bl sub_811C568
- ldr r1, _08125EE0 @ =gItemUseCB
- ldr r0, _08125EE4 @ =sub_8125F4C
- str r0, [r1]
- strb r5, [r4, 0xB]
- b _08125F02
- .align 2, 0
-_08125ED0: .4byte gPartyMenu
-_08125ED4: .4byte gPlayerParty
-_08125ED8: .4byte gSpecialVar_ItemId
-_08125EDC: .4byte sub_8124EFC
-_08125EE0: .4byte gItemUseCB
-_08125EE4: .4byte sub_8125F4C
-_08125EE8:
- movs r0, 0x7F
- str r0, [sp]
- ldr r0, _08125F0C @ =Task_ReturnToPartyMenuWhileLearningMove
- str r0, [sp, 0x4]
- ldr r0, _08125F10 @ =gPartyMenu
- ldr r0, [r0]
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl InitPartyMenu
-_08125F02:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08125F0C: .4byte Task_ReturnToPartyMenuWhileLearningMove
-_08125F10: .4byte gPartyMenu
- thumb_func_end CB2_ReturnToPartyMenuWhileLearningMove
-
- thumb_func_start Task_ReturnToPartyMenuWhileLearningMove
-Task_ReturnToPartyMenuWhileLearningMove: @ 8125F14
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _08125F3C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08125F46
- bl GetMoveSlotToReplace
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _08125F40
- adds r0, r4, 0
- bl DisplayPartyMenuForgotMoveMessage
- b _08125F46
- .align 2, 0
-_08125F3C: .4byte gPaletteFade
-_08125F40:
- adds r0, r5, 0
- bl StopLearningMovePrompt
-_08125F46:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end Task_ReturnToPartyMenuWhileLearningMove
-
- thumb_func_start sub_8125F4C
-sub_8125F4C: @ 8125F4C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8125F5C
- pop {r0}
- bx r0
- thumb_func_end sub_8125F4C
-
- thumb_func_start sub_8125F5C
-sub_8125F5C: @ 8125F5C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08125FE4 @ =gPartyMenu
- mov r9, r0
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- adds r6, r1, 0
- muls r6, r0
- ldr r0, _08125FE8 @ =gPlayerParty
- adds r6, r0
- bl GetMoveSlotToReplace
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r1, r5, 0
- adds r1, 0xD
- adds r0, r6, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08125FEC @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- movs r0, 0x4
- adds r1, r6, 0
- adds r3, r4, 0
- bl ItemUse_SetQuestLogEvent
- ldr r1, _08125FF0 @ =gStringVar1
- adds r0, r6, 0
- bl GetMonNickname
- ldr r0, _08125FF4 @ =gStringVar2
- movs r1, 0xD
- muls r1, r4
- ldr r2, _08125FF8 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- adds r0, r6, 0
- adds r1, r5, 0
- bl RemoveMonPPBonus
- mov r0, r9
- ldrh r1, [r0, 0xE]
- adds r0, r6, 0
- adds r2, r5, 0
- bl SetMonMoveSlot
- mov r0, r8
- bl Task_LearnedMove
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08125FE4: .4byte gPartyMenu
-_08125FE8: .4byte gPlayerParty
-_08125FEC: .4byte gSpecialVar_ItemId
-_08125FF0: .4byte gStringVar1
-_08125FF4: .4byte gStringVar2
-_08125FF8: .4byte gMoveNames
- thumb_func_end sub_8125F5C
-
- thumb_func_start DisplayPartyMenuForgotMoveMessage
-DisplayPartyMenuForgotMoveMessage: @ 8125FFC
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _0812605C @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, _08126060 @ =gPlayerParty
- adds r5, r0
- bl GetMoveSlotToReplace
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r1, 0xD
- adds r0, r5, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r1, _08126064 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, _08126068 @ =gStringVar2
- movs r1, 0xD
- muls r1, r4
- ldr r2, _0812606C @ =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, _08126070 @ =gUnknown_8416EC6
- bl DisplayLearnMoveMessage
- ldr r1, _08126074 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08126078 @ =Task_PartyMenuReplaceMove
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812605C: .4byte gPartyMenu
-_08126060: .4byte gPlayerParty
-_08126064: .4byte gStringVar1
-_08126068: .4byte gStringVar2
-_0812606C: .4byte gMoveNames
-_08126070: .4byte gUnknown_8416EC6
-_08126074: .4byte gTasks
-_08126078: .4byte Task_PartyMenuReplaceMove
- thumb_func_end DisplayPartyMenuForgotMoveMessage
-
- thumb_func_start Task_PartyMenuReplaceMove
-Task_PartyMenuReplaceMove: @ 812607C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081260C8
- ldr r5, _081260D0 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r5, r1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, _081260D4 @ =gPlayerParty
- adds r4, r0
- bl GetMoveSlotToReplace
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RemoveMonPPBonus
- ldrh r5, [r5, 0xE]
- bl GetMoveSlotToReplace
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl SetMonMoveSlot
- adds r0, r6, 0
- bl Task_LearnedMove
-_081260C8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081260D0: .4byte gPartyMenu
-_081260D4: .4byte gPlayerParty
- thumb_func_end Task_PartyMenuReplaceMove
-
- thumb_func_start StopLearningMovePrompt
-StopLearningMovePrompt: @ 81260D8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _08126120 @ =gStringVar2
- ldr r1, _08126124 @ =gPartyMenu
- movs r3, 0xE
- ldrsh r2, [r1, r3]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08126128 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, _0812612C @ =gStringVar4
- ldr r1, _08126130 @ =gText_StopLearningMove2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r0, 0x2
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _08126134 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08126138 @ =Task_StopLearningMoveYesNo
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08126120: .4byte gStringVar2
-_08126124: .4byte gPartyMenu
-_08126128: .4byte gMoveNames
-_0812612C: .4byte gStringVar4
-_08126130: .4byte gText_StopLearningMove2
-_08126134: .4byte gTasks
-_08126138: .4byte Task_StopLearningMoveYesNo
- thumb_func_end StopLearningMovePrompt
-
- thumb_func_start Task_StopLearningMoveYesNo
-Task_StopLearningMoveYesNo: @ 812613C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPartyMenuTextPrinterActive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08126160
- bl PartyMenuDisplayYesNoMenu
- ldr r0, _08126168 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812616C @ =Task_HandleStopLearningMoveYesNoInput
- str r0, [r1]
-_08126160:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08126168: .4byte gTasks
-_0812616C: .4byte Task_HandleStopLearningMoveYesNoInput
- thumb_func_end Task_StopLearningMoveYesNo
-
- thumb_func_start Task_HandleStopLearningMoveYesNoInput
-Task_HandleStopLearningMoveYesNoInput: @ 8126170
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, _081261A0 @ =gPartyMenu
- movs r1, 0x9
- ldrsb r1, [r7, r1]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _081261A4 @ =gPlayerParty
- adds r4, r1, r0
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r5, r0, 24
- cmp r5, 0
- beq _081261AE
- cmp r5, 0
- bgt _081261A8
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _08126234
- b _0812626A
- .align 2, 0
-_081261A0: .4byte gPartyMenu
-_081261A4: .4byte gPlayerParty
-_081261A8:
- cmp r5, 0x1
- beq _0812623A
- b _0812626A
-_081261AE:
- ldr r1, _081261F4 @ =gStringVar1
- adds r0, r4, 0
- bl GetMonNickname
- ldr r0, _081261F8 @ =gStringVar2
- movs r1, 0xE
- ldrsh r2, [r7, r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _081261FC @ =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, _08126200 @ =gStringVar4
- ldr r1, _08126204 @ =gText_MoveNotLearned
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl DisplayPartyMenuMessage
- movs r3, 0x10
- ldrsh r0, [r7, r3]
- cmp r0, 0x1
- bne _08126210
- ldr r0, _08126208 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812620C @ =Task_TryLearningNextMoveAfterText
- str r0, [r1]
- b _0812626A
- .align 2, 0
-_081261F4: .4byte gStringVar1
-_081261F8: .4byte gStringVar2
-_081261FC: .4byte gMoveNames
-_08126200: .4byte gStringVar4
-_08126204: .4byte gText_MoveNotLearned
-_08126208: .4byte gTasks
-_0812620C: .4byte Task_TryLearningNextMoveAfterText
-_08126210:
- cmp r0, 0x2
- bne _08126218
- ldr r0, _08126228 @ =gSpecialVar_Result
- strh r5, [r0]
-_08126218:
- ldr r0, _0812622C @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _08126230 @ =Task_ClosePartyMenuAfterText
- str r0, [r1]
- b _0812626A
- .align 2, 0
-_08126228: .4byte gSpecialVar_Result
-_0812622C: .4byte gTasks
-_08126230: .4byte Task_ClosePartyMenuAfterText
-_08126234:
- movs r0, 0x5
- bl PlaySE
-_0812623A:
- ldr r1, _08126270 @ =gStringVar1
- adds r0, r4, 0
- bl GetMonNickname
- ldr r0, _08126274 @ =gStringVar2
- ldr r1, _08126278 @ =gPartyMenu
- movs r3, 0xE
- ldrsh r2, [r1, r3]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _0812627C @ =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, _08126280 @ =gText_PkmnNeedsToReplaceMove
- bl DisplayLearnMoveMessage
- ldr r1, _08126284 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _08126288 @ =Task_ReplaceMoveYesNo
- str r1, [r0]
-_0812626A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126270: .4byte gStringVar1
-_08126274: .4byte gStringVar2
-_08126278: .4byte gPartyMenu
-_0812627C: .4byte gMoveNames
-_08126280: .4byte gText_PkmnNeedsToReplaceMove
-_08126284: .4byte gTasks
-_08126288: .4byte Task_ReplaceMoveYesNo
- thumb_func_end Task_HandleStopLearningMoveYesNoInput
-
thumb_func_start Task_TryLearningNextMoveAfterText
Task_TryLearningNextMoveAfterText: @ 812628C
push {r4,lr}
@@ -6211,8 +1119,8 @@ _08126BCE:
bx r0
thumb_func_end sub_8126B60
- thumb_func_start ItemUseCB_EvolutionStone
-ItemUseCB_EvolutionStone: @ 8126BD4
+ thumb_func_start sub_8126BD4
+sub_8126BD4: @ 8126BD4
push {r4,r5,lr}
ldr r1, _08126C10 @ =gCB2_AfterEvolution
ldr r4, _08126C14 @ =gPartyMenu
@@ -6245,7 +1153,7 @@ _08126C14: .4byte gPartyMenu
_08126C18: .4byte gSpecialVar_ItemId
_08126C1C: .4byte gPlayerParty
_08126C20: .4byte 0x0000ffff
- thumb_func_end ItemUseCB_EvolutionStone
+ thumb_func_end sub_8126BD4
thumb_func_start sub_8126C24
sub_8126C24: @ 8126C24
@@ -6600,7 +1508,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0
str r0, [sp]
ldr r0, _08126ED4 @ =Task_HandleChooseMonInput
str r0, [sp, 0x4]
- ldr r0, _08126ED8 @ =CB2_ReturnToStartMenu
+ ldr r0, _08126ED8 @ =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -6612,7 +1520,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0
bx r0
.align 2, 0
_08126ED4: .4byte Task_HandleChooseMonInput
-_08126ED8: .4byte CB2_ReturnToStartMenu
+_08126ED8: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end CB2_PartyMenuFromStartMenu
thumb_func_start CB2_ChooseMonToGiveItem
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 8320c5809..9c57cff88 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -428,13 +428,13 @@ sub_8102858: @ 8102858
lsls r1, 7
movs r0, 0
bl SetGpuRegBits
- ldr r0, _08102878 @ =CB2_ReturnToStartMenu
+ ldr r0, _08102878 @ =CB2_ReturnToFieldWithOpenMenu
bl SetMainCallback2
_08102874:
pop {r0}
bx r0
.align 2, 0
-_08102878: .4byte CB2_ReturnToStartMenu
+_08102878: .4byte CB2_ReturnToFieldWithOpenMenu
thumb_func_end sub_8102858
thumb_func_start sub_810287C
diff --git a/asm/region_map.s b/asm/region_map.s
index 7b23cf1e3..662c65fa7 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -9893,15 +9893,15 @@ _080C4EF2:
bx r0
thumb_func_end sub_80C4ED0
- thumb_func_start sub_80C4EF8
-sub_80C4EF8: @ 80C4EF8
+ thumb_func_start MCB2_FlyMap
+MCB2_FlyMap: @ 80C4EF8
push {lr}
bl sub_80C51E8
movs r0, 0x2
bl sub_80BFEDC
pop {r0}
bx r0
- thumb_func_end sub_80C4EF8
+ thumb_func_end MCB2_FlyMap
thumb_func_start sub_80C4F08
sub_80C4F08: @ 80C4F08
diff --git a/data/strings.s b/data/strings.s
index 547005fd6..35548d0dc 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -922,7 +922,7 @@ gText_PkmnAlreadyHoldingItemSwitch:: @ 8416C49
.string "Would you like to switch the\n"
.string "two items?$"
-gUnknown_8416C8F:: @ 8416C8F
+gText_PkmnNotHolding:: @ 8416C8F
.string "{STR_VAR_1} isn't holding\n"
.string "anything.{PAUSE_UNTIL_PRESS}$"
@@ -979,7 +979,7 @@ gText_MoveNotLearned:: @ 8416E84
gText_WhichMoveToForget:: @ 8416EA4
.string "Which move should be forgotten?{PAUSE_UNTIL_PRESS}$"
-gUnknown_8416EC6:: @ 8416EC6
+gText_12PoofForgotMove:: @ 8416EC6
.string "1, {PAUSE 0x0F}2, and{PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_KON}Poof!\p"
.string "{STR_VAR_1} forgot how to\n"
.string "use {STR_VAR_2}.\p"
@@ -1233,11 +1233,11 @@ gText_ShareHp:: @ 0x84175F1
gText_ReturnToAHealingSpot:: @ 0x84175FB
.string "Return to a healing spot.$"
-gUnknown_8417615:: @ 8417615
+gText_EscapeFromHereAndReturnTo:: @ 8417615
.string "Want to escape from here and return\n"
.string "to {STR_VAR_1}?$"
-gUnknown_8417640:: @ 8417640
+gText_ReturnToHealingSpot:: @ 8417640
.string "Want to return to the healing spot\n"
.string "used last in {STR_VAR_1}?$"
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 746f10679..4ef90ed60 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -1,6 +1,28 @@
#ifndef GUARD_CONSTANTS_EASY_CHAT_H
#define GUARD_CONSTANTS_EASY_CHAT_H
+#define EASY_CHAT_TYPE_PROFILE 0
+#define EASY_CHAT_TYPE_BATTLE_START 1
+#define EASY_CHAT_TYPE_BATTLE_WON 2
+#define EASY_CHAT_TYPE_BATTLE_LOST 3
+#define EASY_CHAT_TYPE_MAIL 4
+#define EASY_CHAT_TYPE_INTERVIEW 5
+#define EASY_CHAT_TYPE_BARD_SONG 6
+#define EASY_CHAT_TYPE_FAN_CLUB 7
+#define EASY_CHAT_TYPE_UNK_8 8
+#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
+#define EASY_CHAT_TYPE_GABBY_AND_TY 10
+#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11
+#define EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW 12
+#define EASY_CHAT_TYPE_GOOD_SAYING 13
+#define EASY_CHAT_TYPE_FAN_QUESTION 14
+#define EASY_CHAT_TYPE_QUIZ_ANSWER 15
+#define EASY_CHAT_TYPE_QUIZ_QUESTION 16
+#define EASY_CHAT_TYPE_QUIZ_SET_QUESTION 17
+#define EASY_CHAT_TYPE_QUIZ_SET_ANSWER 18
+#define EASY_CHAT_TYPE_APPRENTICE 19
+#define EASY_CHAT_TYPE_QUESTIONNAIRE 20
+
#define EC_GROUP_POKEMON_2 0x0
#define EC_GROUP_TRAINER 0x1
#define EC_GROUP_STATUS 0x2
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 765758035..9c642bb36 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -45,5 +45,6 @@ u16 GetDisplayedWordByIndex(u16 index);
u16 GetNumDisplayedWords(void);
const u8 *GetEasyChatWordGroupName(u8);
u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback); // TODO: currently in link_rfu.s. further file split needed?
#endif // GUARD_EASYCHAT_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 1d431771b..ec1a077be 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -33,5 +33,7 @@ void sub_805DC04(void);
void sub_805DAB0(void);
bool32 sub_805DAD0(void);
bool32 sub_805DC24(void);
+bool8 PartyHasMonWithSurf(void);
+bool8 IsPlayerSurfingNorth(void);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index 1b8044592..86fab62e0 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -9,5 +9,6 @@ void sub_80B0244(void);
void sub_807E3EC(void);
void sub_807F114(void);
void sub_807F204(u8 taskId);
+void sub_807DC00(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/global.h b/include/global.h
index 744d23eb3..3d6049d64 100644
--- a/include/global.h
+++ b/include/global.h
@@ -742,7 +742,7 @@ struct SaveBlock1
/*0x000C*/ struct WarpData warp1;
/*0x0014*/ struct WarpData warp2;
/*0x001C*/ struct WarpData lastHealLocation;
- /*0x0024*/ struct WarpData warp4;
+ /*0x0024*/ struct WarpData escapeWarp;
/*0x002C*/ u16 savedMusic;
/*0x002E*/ u8 weather;
/*0x002F*/ u8 filler_2F;
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 671488be0..d1bc2b2bc 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -1,6 +1,9 @@
#ifndef GUARD_LINK_RFU_H
#define GUARD_LINK_RFU_H
+#include "global.h"
+#include "librfu.h"
+
struct Padded_U8
{
u8 value;
@@ -42,6 +45,7 @@ void sub_80F8DC0(void);
void sub_80FBB20(void);
bool8 sub_80FA484(bool32 a0);
void var_800D_set_xB(void);
+struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/include/overworld.h b/include/overworld.h
index d893899eb..ab20d9ff0 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -140,7 +140,7 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd
bool32 sub_8058318(void);
-void CB2_ReturnToStartMenu(void);
+void CB2_ReturnToFieldWithOpenMenu(void);
void CB2_WhiteOut(void);
void c2_8056854(void);
void sub_8054F38(u32 newKey);
diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h
index 8dbf0efa4..d2580552d 100644
--- a/include/pokemon_special_anim.h
+++ b/include/pokemon_special_anim.h
@@ -8,5 +8,9 @@ bool8 sub_811E680(void);
void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats);
void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr);
void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr);
+void sub_811C540(u8 slotId, u16 itemId, MainCallback callback);
+void sub_811C5AC(u8 slotId, u16 itemId, MainCallback callback);
+u32 sub_811D178(void);
+void sub_811C568(u8 slotId, u16 itemId, u16 moveId, MainCallback callback);
#endif // GUARD_POKEMON_SPECIAL_ANIM_H
diff --git a/include/quest_log.h b/include/quest_log.h
index 4040ed4c9..3dfd5f35c 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -49,6 +49,4 @@ void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
void sub_8110840(void *oldSave);
void sub_8112F18(u8 windowId);
-extern u8 gUnknown_203ADFA;
-
#endif //GUARD_QUEST_LOG_H
diff --git a/include/region_map.h b/include/region_map.h
index 8d609f104..67287b6c4 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -96,5 +96,6 @@ u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
void GetMapNameGeneric(u8 *, u8);
void sub_80BFF50(u8 a0, void (*a1)(void));
+void MCB2_FlyMap(void);
#endif //GUARD_REGION_MAP_H
diff --git a/include/strings.h b/include/strings.h
index 16a107de7..8c082ccb4 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -350,6 +350,44 @@ extern const u8 gText_MaleSymbol[];
extern const u8 gText_FemaleSymbol[];
extern const u8 gText_Slash[];
extern const u8 gUnknown_8417457[];
+extern const u8 gText_PkmnNotHolding[];
+extern const u8 gText_PCMailboxFull[];
+extern const u8 gText_MailSentToPC[];
+extern const u8 gText_MailMessageWillBeLost[];
+extern const u8 gText_SendMailToPC[];
+extern const u8 gText_MailTakenFromPkmn[];
+extern const u8 gUnknown_8416B3E[];
+extern const u8 gUnknown_8416B16[];
+extern const u8 gText_PauseUntilPress[];
+extern const u8 gText_CantUseUntilNewBadge[];
+extern const u8 gText_ReturnToHealingSpot[];
+extern const u8 gText_EscapeFromHereAndReturnTo[];
+extern const u8 gText_PkmnCuredOfPoison[];
+extern const u8 gText_PkmnWokeUp2[];
+extern const u8 gText_PkmnBurnHealed[];
+extern const u8 gText_PkmnThawedOut[];
+extern const u8 gText_PkmnCuredOfParalysis[];
+extern const u8 gText_PkmnSnappedOutOfConfusion[];
+extern const u8 gText_PkmnGotOverInfatuation[];
+extern const u8 gText_PkmnBecameHealthy[];
+extern const u8 gText_HP3[];
+extern const u8 gText_Attack3[];
+extern const u8 gText_Defense3[];
+extern const u8 gText_Speed2[];
+extern const u8 gText_SpAtk3[];
+extern const u8 gText_SpDef3[];
+extern const u8 gText_PkmnBaseVar2StatIncreased[];
+extern const u8 gText_MovesPPIncreased[];
+extern const u8 gText_PPWasRestored[];
+extern const u8 gText_PkmnHPRestoredByVar2[];
+extern const u8 gText_PkmnNeedsToReplaceMove[];
+extern const u8 gText_PkmnCantLearnMove[];
+extern const u8 gText_PkmnAlreadyKnows[];
+extern const u8 gText_PkmnLearnedMove3[];
+extern const u8 gText_WhichMoveToForget[];
+extern const u8 gText_12PoofForgotMove[];
+extern const u8 gText_StopLearningMove2[];
+extern const u8 gText_MoveNotLearned[];
// credits
extern const u8 gString_Dummy[];
diff --git a/include/trade.h b/include/trade.h
index 3c42be3ea..b3b1de23b 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -2,6 +2,7 @@
#define GUARD_TRADE_H
#include "global.h"
+#include "librfu.h"
#include "constants/trade.h"
extern struct MailStruct gLinkPartnerMail[6];
@@ -10,5 +11,7 @@ extern u8 gSelectedTradeMonPositions[2];
extern const u16 gUnknown_826601C[];
void CB2_ReturnFromLinkTrade(void);
s32 sub_804FB34(void);
+s32 CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet); // TODO: currently in link_rfu_2.s. further file split needed?
+s32 GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, struct UnkLinkRfuStruct_02022B14Substruct rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet);
#endif //GUARD_TRADE_H
diff --git a/include/union_room.h b/include/union_room.h
index 00354ff31..03628441b 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -149,4 +149,8 @@ struct TradeUnkStruct
u32 personality;
};
+extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_203B064;
+extern u16 gUnionRoomOfferedSpecies;
+extern u8 gUnionRoomRequestedMonType;
+
#endif //GUARD_UNION_ROOM_H
diff --git a/src/option_menu.c b/src/option_menu.c
index 35fe957be..5453dfa9e 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -206,7 +206,7 @@ void CB2_OptionsMenuFromStartMenu(void)
u8 i;
if (gMain.savedCallback == NULL)
- gMain.savedCallback = CB2_ReturnToStartMenu;
+ gMain.savedCallback = CB2_ReturnToFieldWithOpenMenu;
sOptionMenuPtr = AllocZeroed(sizeof(struct OptionMenu));
sOptionMenuPtr->state3 = 0;
sOptionMenuPtr->state2 = 0;
diff --git a/src/party_menu.c b/src/party_menu.c
index 08600229a..f88f2f6fc 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -5,6 +5,7 @@
#include "battle_controllers.h"
#include "battle_gfx_sfx_util.h"
#include "battle_interface.h"
+#include "berry_pouch.h"
#include "bg.h"
#include "data.h"
#include "decompress.h"
@@ -42,6 +43,7 @@
#include "pokemon.h"
#include "pokemon_icon.h"
#include "pokemon_jump.h"
+#include "pokemon_special_anim.h"
#include "pokemon_storage_system.h"
#include "pokemon_summary_screen.h"
#include "quest_log.h"
@@ -58,6 +60,7 @@
#include "teachy_tv.h"
#include "text.h"
#include "text_window.h"
+#include "tm_case.h"
#include "trade.h"
#include "union_room.h"
#include "window.h"
@@ -69,6 +72,7 @@
#include "constants/items.h"
#include "constants/maps.h"
#include "constants/moves.h"
+#include "constants/pokemon.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/vars.h"
@@ -250,24 +254,6 @@ void Task_HandleCancelParticipationYesNoInput(u8 taskId);
void Task_TryCreateSelectionWindow(u8 taskId);
u16 GetTutorMove(u8 tutor);
bool8 CanLearnTutorMove(u16 species, u8 tutor);
-void sub_8120C6C(u8 taskId);
-void sub_8120CA8(u8 taskId);
-void sub_8120CD8(u8 taskId);
-void sub_8120D08(u8 taskId);
-void sub_8120D40(u8 taskId);
-void sub_8120D7C(u8 taskId);
-void sub_8120DAC(u8 taskId);
-void sub_8120DE0(u8 taskId);
-void sub_8120E1C(u8 taskId);
-void sub_8120E58(u8 taskId);
-void sub_8120EE0(u8 taskId);
-void sub_8120FF0(u8 taskId);
-void sub_8120FB0(void);
-bool8 sub_8120F78(u8 taskId);
-u8 sub_81220D4(void);
-void sub_8122084(u8 windowId, const u8 *str);
-void sub_8122110(u8 windowId);
-void sub_812358C(void);
void CreateSelectionWindow(void);
bool8 ShouldUseChooseMonText(void);
void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon);
@@ -294,6 +280,81 @@ void CB2_WriteMailToGiveMon(void);
void Task_SwitchHoldItemsPrompt(u8 taskId);
void Task_GiveHoldItem(u8 taskId);
void Task_UpdateHeldItemSprite(u8 taskId);
+void Task_HandleSwitchItemsYesNoInput(u8 taskId);
+void Task_SwitchItemsYesNo(u8 taskId);
+void Task_WriteMailToGiveMonAfterText(u8 taskId);
+void CB2_ReturnToPartyMenuFromWritingMail(void);
+void CB2_ReturnToPartyMenuFromWritingMail(void);
+void Task_DisplayGaveMailFromPartyMessage(u8 taskId);
+void CB2_ReadHeldMail(void);
+void CB2_ReturnToPartyMenuFromReadingMail(void);
+void Task_SendMailToPCYesNo(u8 taskId);
+void Task_HandleSendMailToPCYesNoInput(u8 taskId);
+void Task_LoseMailMessageYesNo(u8 taskId);
+void Task_HandleLoseMailMessageYesNoInput(u8 taskId);
+bool8 TrySwitchInPokemon(void);
+void DisplayCantUseFlashMessage(void);
+void DisplayCantUseSurfMessage(void);
+void Task_CancelAfterAorBPress(u8 taskId);
+void DisplayFieldMoveExitAreaMessage(u8 taskId);
+void Task_FieldMoveExitAreaYesNo(u8 taskId);
+void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId);
+void Task_FieldMoveWaitForFade(u8 taskId);
+u16 GetFieldMoveMonSpecies(void);
+u8 GetPartyLayoutFromBattleType(void);
+void Task_SetSacredAshCB(u8 taskId);
+void CB2_ReturnToBagMenu(void);
+u8 GetPartyIdFromBattleSlot(u8 slot);
+void Task_DisplayHPRestoredMessage(u8 taskId);
+void SetSelectedMoveForPPItem(u8 taskId);
+void ReturnToUseOnWhichMon(u8 taskId);
+void TryUsePPItem(u8 taskId);
+void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func);
+void Task_LearnedMove(u8 taskId);
+void Task_ReplaceMoveYesNo(u8 taskId);
+void Task_DoLearnedMoveFanfareAfterText(u8 taskId);
+void Task_TryLearningNextMove(u8 taskId);
+void Task_LearnNextMoveOrClosePartyMenu(u8 taskId);
+void Task_HandleReplaceMoveYesNoInput(u8 taskId);
+void StopLearningMovePrompt(u8 taskId);
+void Task_ShowSummaryScreenToForgetMove(u8 taskId);
+void CB2_ShowSummaryScreenToForgetMove(void);
+void CB2_ReturnToPartyMenuWhileLearningMove(void);
+void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId);
+void DisplayPartyMenuForgotMoveMessage(u8 taskId);
+void Task_PartyMenuReplaceMove(u8 taskId);
+void Task_StopLearningMoveYesNo(u8 taskId);
+void Task_HandleStopLearningMoveYesNoInput(u8 taskId);
+void Task_TryLearningNextMoveAfterText(u8 taskId);
+void sub_8120C6C(u8 taskId);
+void sub_8120CA8(u8 taskId);
+void sub_8120CD8(u8 taskId);
+void sub_8120D08(u8 taskId);
+void sub_8120D40(u8 taskId);
+void sub_8120D7C(u8 taskId);
+void sub_8120DAC(u8 taskId);
+void sub_8120DE0(u8 taskId);
+void sub_8120E1C(u8 taskId);
+void sub_8120E58(u8 taskId);
+void sub_8120EE0(u8 taskId);
+void sub_8120FF0(u8 taskId);
+bool8 sub_8120F78(u8 taskId);
+void sub_8120FB0(void);
+void sub_8122084(u8 windowId, const u8 *str);
+u8 sub_81220D4(void);
+void sub_8122110(u8 windowId);
+void sub_812358C(void);
+void sub_8124BB0(struct Pokemon *mon, u8 fieldMove);
+void sub_8124DB0(void);
+void sub_8124DA0(void);
+void sub_8124DE0(void);
+void sub_8124E48(void);
+void sub_812580C(u8 taskId);
+void sub_8125898(u8 taskId, UNUSED TaskFunc func);
+void sub_8125F4C(u8 taskId, UNUSED TaskFunc func);
+void sub_8125F5C(u8 taskId);
+void sub_8126BD4(void);
+bool8 sub_8126C24(void);
EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL;
EWRAM_DATA struct PartyMenu gPartyMenu = {0};
@@ -712,7 +773,7 @@ void DisplayPartyPokemonDataForChooseHalf(u8 slot)
u8 i;
struct Pokemon *mon = &gPlayerParty[slot];
u8 *order = gSelectedOrderFromParty;
- u8 r3;
+ u8 maxBattlers;
if (!GetBattleEntryEligibility(mon))
{
@@ -721,10 +782,10 @@ void DisplayPartyPokemonDataForChooseHalf(u8 slot)
else
{
if (gPartyMenu.unk_8_6 == 2)
- r3 = 2;
+ maxBattlers = 2;
else
- r3 = 3;
- for (i = 0; i < r3; ++i)
+ maxBattlers = 3;
+ for (i = 0; i < maxBattlers; ++i)
{
if (order[i] != 0 && (order[i] - 1) == slot)
{
@@ -2570,7 +2631,7 @@ void sub_8122138(u8 action)
ptr->windowId[2] = AddWindow(&gUnknown_845A178);
sub_8112F18(ptr->windowId[2]);
attr = GetFontAttribute(2, FONTATTR_LETTER_SPACING);
- AddTextPrinterParameterized4(ptr->windowId[2], 2, 3, 6, attr, 0, sFontColorTable[5], 0, sHMDescriptionTable[action - 18]);
+ AddTextPrinterParameterized4(ptr->windowId[2], 2, 3, 6, attr, 0, sFontColorTable[5], 0, sHMDescriptionTable[action - MENU_FIELD_MOVES]);
PutWindowTilemap(ptr->windowId[2]);
ScheduleBgCopyTilemapToVram(2);
}
@@ -3224,7 +3285,7 @@ void Task_SlideSelectedSlotsOnscreen(u8 taskId)
PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId);
PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId);
ScheduleBgCopyTilemapToVram(0);
- // memory leak
+ // BUG: memory leak
// Free(sSlot1TilemapBuffer);
// Free(sSlot2TilemapBuffer);
FinishTwoMonAction(taskId);
@@ -3396,3 +3457,1554 @@ void Task_GiveHoldItem(u8 taskId)
gTasks[taskId].func = Task_UpdateHeldItemSprite;
}
}
+
+void Task_SwitchHoldItemsPrompt(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DisplayAlreadyHoldingItemSwitchMessage(&gPlayerParty[gPartyMenu.slotId], sPartyMenuItemId, TRUE);
+ gTasks[taskId].func = Task_SwitchItemsYesNo;
+ }
+}
+
+void Task_SwitchItemsYesNo(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ PartyMenuDisplayYesNoMenu();
+ gTasks[taskId].func = Task_HandleSwitchItemsYesNoInput;
+ }
+}
+
+void Task_HandleSwitchItemsYesNoInput(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0: // Yes, switch items
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+
+ // No room to return held item to bag
+ if (AddBagItem(sPartyMenuItemId, 1) == FALSE)
+ {
+ AddBagItem(gSpecialVar_ItemId, 1);
+ BufferBagFullCantTakeItemMessage(sPartyMenuItemId);
+ DisplayPartyMenuMessage(gStringVar4, FALSE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ }
+ // Giving mail
+ else if (ItemIsMail(gSpecialVar_ItemId))
+ {
+ GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId);
+ gTasks[taskId].func = Task_WriteMailToGiveMonAfterText;
+ }
+ // Giving item
+ else
+ {
+ GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId);
+ DisplaySwitchedHeldItemMessage(gSpecialVar_ItemId, sPartyMenuItemId, TRUE);
+ gTasks[taskId].func = Task_UpdateHeldItemSprite;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ // fallthrough
+ case 1: // No
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ break;
+ }
+}
+
+void Task_WriteMailToGiveMonAfterText(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ sPartyMenuInternal->exitCallback = CB2_WriteMailToGiveMon;
+ Task_ClosePartyMenu(taskId);
+ }
+}
+
+void CB2_WriteMailToGiveMon(void)
+{
+ u8 mail = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAIL);
+
+ DoEasyChatScreen(EASY_CHAT_TYPE_MAIL,
+ gSaveBlock1Ptr->mail[mail].words,
+ CB2_ReturnToPartyMenuFromWritingMail);
+}
+
+void CB2_ReturnToPartyMenuFromWritingMail(void)
+{
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
+
+ // Canceled writing mail
+ if (gSpecialVar_Result == FALSE)
+ {
+ TakeMailFromMon(mon);
+ SetMonData(mon, MON_DATA_HELD_ITEM, &sPartyMenuItemId);
+ RemoveBagItem(sPartyMenuItemId, 1);
+ AddBagItem(item, 1);
+ InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_CHOOSE_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback);
+ }
+ // Wrote mail
+ else
+ {
+ InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_CHOOSE_MON, Task_DisplayGaveMailFromPartyMessage, gPartyMenu.exitCallback);
+ }
+}
+
+// Nearly redundant with Task_DisplayGaveMailFromBagMessgae
+void Task_DisplayGaveMailFromPartyMessage(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (sPartyMenuItemId == ITEM_NONE)
+ DisplayGaveHeldItemMessage(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId, FALSE, 0);
+ else
+ DisplaySwitchedHeldItemMessage(gSpecialVar_ItemId, sPartyMenuItemId, FALSE);
+ gTasks[taskId].func = Task_UpdateHeldItemSprite;
+ }
+}
+
+void Task_UpdateHeldItemSprite(u8 taskId)
+{
+ s8 slotId = gPartyMenu.slotId;
+
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ UpdatePartyMonHeldItemSprite(&gPlayerParty[slotId], &sPartyMenuBoxes[slotId]);
+ Task_ReturnToChooseMonAfterText(taskId);
+ }
+}
+
+void CursorCB_TakeItem(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
+
+ PlaySE(SE_SELECT);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ switch (TryTakeMonItem(mon))
+ {
+ case 0: // Not holding item
+ GetMonNickname(mon, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ break;
+ case 1: // No room to take item
+ BufferBagFullCantTakeItemMessage(item);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ break;
+ default: // Took item
+ DisplayTookHeldItemMessage(mon, item, TRUE);
+ break;
+ }
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = Task_UpdateHeldItemSprite;
+}
+
+void CursorCB_Mail(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, ACTIONS_MAIL);
+ DisplaySelectionWindow(SELECTWINDOW_MAIL);
+ DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_MAIL);
+ gTasks[taskId].data[0] = 0xFF;
+ gTasks[taskId].func = Task_HandleSelectionMenuInput;
+}
+
+void CursorCB_Read(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sPartyMenuInternal->exitCallback = CB2_ReadHeldMail;
+ Task_ClosePartyMenu(taskId);
+}
+
+void CB2_ReadHeldMail(void)
+{
+ ReadMail(&gSaveBlock1Ptr->mail[GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAIL)], CB2_ReturnToPartyMenuFromReadingMail, 1);
+}
+
+void CB2_ReturnToPartyMenuFromReadingMail(void)
+{
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_DO_WHAT_WITH_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback);
+}
+
+void CursorCB_TakeMail(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ DisplayPartyMenuMessage(gText_SendMailToPC, TRUE);
+ gTasks[taskId].func = Task_SendMailToPCYesNo;
+}
+
+void Task_SendMailToPCYesNo(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ PartyMenuDisplayYesNoMenu();
+ gTasks[taskId].func = Task_HandleSendMailToPCYesNoInput;
+ }
+}
+
+void Task_HandleSendMailToPCYesNoInput(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0: // Yes, send to PC
+ if (TakeMailFromMon2(&gPlayerParty[gPartyMenu.slotId]) != 0xFF)
+ {
+ DisplayPartyMenuMessage(gText_MailSentToPC, FALSE);
+ gTasks[taskId].func = Task_UpdateHeldItemSprite;
+ }
+ else
+ {
+ DisplayPartyMenuMessage(gText_PCMailboxFull, FALSE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ // fallthrough
+ case 1:
+ DisplayPartyMenuMessage(gText_MailMessageWillBeLost, TRUE);
+ gTasks[taskId].func = Task_LoseMailMessageYesNo;
+ break;
+ }
+}
+
+void Task_LoseMailMessageYesNo(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ PartyMenuDisplayYesNoMenu();
+ gTasks[taskId].func = Task_HandleLoseMailMessageYesNoInput;
+ }
+}
+
+void Task_HandleLoseMailMessageYesNoInput(u8 taskId)
+{
+ u16 item;
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0: // Yes, lose mail message
+ item = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM);
+ if (AddBagItem(item, 1) == TRUE)
+ {
+ TakeMailFromMon(&gPlayerParty[gPartyMenu.slotId]);
+ DisplayPartyMenuMessage(gText_MailTakenFromPkmn, FALSE);
+ gTasks[taskId].func = Task_UpdateHeldItemSprite;
+ }
+ else
+ {
+ BufferBagFullCantTakeItemMessage(item);
+ DisplayPartyMenuMessage(gStringVar4, FALSE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ // fallthrough
+ case 1:
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ break;
+ }
+}
+
+void CursorCB_Cancel2(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+
+ PlaySE(SE_SELECT);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, GetPartyMenuActionsType(mon));
+ DisplaySelectionWindow(SELECTWINDOW_ACTIONS);
+ DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_MON);
+ gTasks[taskId].data[0] = 0xFF;
+ gTasks[taskId].func = Task_HandleSelectionMenuInput;
+}
+
+void CursorCB_SendMon(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ if (TrySwitchInPokemon() == TRUE)
+ {
+ Task_ClosePartyMenu(taskId);
+ }
+ else
+ {
+ // gStringVar4 below is the error message buffered by TrySwitchInPokemon
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ }
+}
+
+void CursorCB_Enter(u8 taskId)
+{
+ u8 maxBattlers;
+ u8 i;
+ const u8 *str;
+
+ if (gPartyMenu.unk_8_6 == 2)
+ {
+ maxBattlers = 2;
+ str = gUnknown_8416B3E;
+ }
+ else
+ {
+ maxBattlers = 3;
+ str = gUnknown_8416B16;
+ }
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ for (i = 0; i < maxBattlers; ++i)
+ {
+ if (gSelectedOrderFromParty[i] == 0)
+ {
+ PlaySE(SE_SELECT);
+ gSelectedOrderFromParty[i] = gPartyMenu.slotId + 1;
+ DisplayPartyPokemonDescriptionText(i + PARTYBOX_DESC_FIRST, &sPartyMenuBoxes[gPartyMenu.slotId], 1);
+ if (i == (maxBattlers - 1))
+ MoveCursorToConfirm();
+ DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
+ gTasks[taskId].func = Task_HandleChooseMonInput;
+ return;
+ }
+ }
+ PlaySE(SE_HAZURE);
+ DisplayPartyMenuMessage(str, TRUE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+}
+
+void MoveCursorToConfirm(void)
+{
+ AnimatePartySlot(gPartyMenu.slotId, 0);
+ gPartyMenu.slotId = PARTY_SIZE;
+ AnimatePartySlot(gPartyMenu.slotId, 1);
+}
+
+void CursorCB_NoEntry(u8 taskId)
+{
+ u8 i;
+
+ PlaySE(SE_SELECT);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ for (i = 0; i < 3; ++i)
+ {
+ if (gSelectedOrderFromParty[i] == gPartyMenu.slotId + 1)
+ {
+ gSelectedOrderFromParty[i] = 0;
+ switch (i)
+ {
+ case 0:
+ gSelectedOrderFromParty[0] = gSelectedOrderFromParty[1];
+ gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2];
+ gSelectedOrderFromParty[2] = 0;
+ break;
+ case 1:
+ gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2];
+ gSelectedOrderFromParty[2] = 0;
+ break;
+ }
+ break;
+ }
+ }
+ DisplayPartyPokemonDescriptionText(PARTYBOX_DESC_ABLE_3, &sPartyMenuBoxes[gPartyMenu.slotId], 1);
+ if (gSelectedOrderFromParty[0] != 0)
+ DisplayPartyPokemonDescriptionText(PARTYBOX_DESC_FIRST, &sPartyMenuBoxes[gSelectedOrderFromParty[0] - 1], 1);
+ if (gSelectedOrderFromParty[1] != 0)
+ DisplayPartyPokemonDescriptionText(1 + PARTYBOX_DESC_FIRST, &sPartyMenuBoxes[gSelectedOrderFromParty[1] - 1], 1);
+ DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
+ gTasks[taskId].func = Task_HandleChooseMonInput;
+}
+
+void CursorCB_Store(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ gSpecialVar_0x8004 = gPartyMenu.slotId;
+ Task_ClosePartyMenu(taskId);
+}
+
+// Register mon for the Trading Board in Union Room
+void CursorCB_Register(u8 taskId)
+{
+ u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
+ u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
+ u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
+
+ switch (CanRegisterMonForTradingBoard(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), species2, species, obedience))
+ {
+ case CANT_REGISTER_MON:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
+ break;
+ case CANT_REGISTER_EGG:
+ StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ Task_ClosePartyMenu(taskId);
+ return;
+ }
+ PlaySE(SE_HAZURE);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ StringAppend(gStringVar4, gText_PauseUntilPress);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+}
+
+void CursorCB_Trade1(u8 taskId)
+{
+ u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
+ u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
+ u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
+ u32 stringId = GetUnionRoomTradeMessageId(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), gUnknown_203B064, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience);
+
+ if (stringId != UR_TRADE_MSG_NONE)
+ {
+ StringExpandPlaceholders(gStringVar4, sUnionRoomTradeMessages[stringId - 1]);
+ PlaySE(SE_HAZURE);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ StringAppend(gStringVar4, gText_PauseUntilPress);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ Task_ClosePartyMenu(taskId);
+ }
+}
+
+// Spin Trade (based on the translation of the Japanese trade prompt)
+// Not implemented, and normally unreachable because PARTY_MENU_TYPE_SPIN_TRADE is never used
+void CursorCB_Trade2(u8 taskId)
+{
+}
+
+void CursorCB_FieldMove(u8 taskId)
+{
+ u8 fieldMove = sPartyMenuInternal->actions[Menu_GetCursorPos()] - MENU_FIELD_MOVES;
+ const struct MapHeader *mapHeader;
+
+ PlaySE(SE_SELECT);
+ if (sFieldMoveCursorCallbacks[fieldMove].fieldMoveFunc == NULL)
+ return;
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
+ if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE)
+ {
+ if (fieldMove == FIELD_MOVE_MILK_DRINK || fieldMove == FIELD_MOVE_SOFT_BOILED)
+ DisplayPartyMenuStdMessage(PARTY_MSG_CANT_USE_HERE);
+ else
+ DisplayPartyMenuStdMessage(sFieldMoveCursorCallbacks[fieldMove].msgId);
+ gTasks[taskId].func = Task_CancelAfterAorBPress;
+ }
+ else
+ {
+ // All field moves before WATERFALL are HMs.
+ if (fieldMove <= FIELD_MOVE_WATERFALL && FlagGet(FLAG_BADGE01_GET + fieldMove) != TRUE)
+ {
+ DisplayPartyMenuMessage(gText_CantUseUntilNewBadge, TRUE);
+ gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
+ }
+ else if (sFieldMoveCursorCallbacks[fieldMove].fieldMoveFunc() == TRUE)
+ {
+ switch (fieldMove)
+ {
+ case FIELD_MOVE_MILK_DRINK:
+ case FIELD_MOVE_SOFT_BOILED:
+ ChooseMonForSoftboiled(taskId);
+ break;
+ case FIELD_MOVE_TELEPORT:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->lastHealLocation.mapGroup, gSaveBlock1Ptr->lastHealLocation.mapNum);
+ GetMapNameGeneric(gStringVar1, mapHeader->regionMapSectionId);
+ StringExpandPlaceholders(gStringVar4, gText_ReturnToHealingSpot);
+ DisplayFieldMoveExitAreaMessage(taskId);
+ sPartyMenuInternal->data[0] = fieldMove;
+ break;
+ case FIELD_MOVE_DIG:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
+ GetMapNameGeneric(gStringVar1, mapHeader->regionMapSectionId);
+ StringExpandPlaceholders(gStringVar4, gText_EscapeFromHereAndReturnTo);
+ DisplayFieldMoveExitAreaMessage(taskId);
+ sPartyMenuInternal->data[0] = fieldMove;
+ break;
+ case FIELD_MOVE_FLY:
+ gPartyMenu.exitCallback = MCB2_FlyMap;
+ Task_ClosePartyMenu(taskId);
+ break;
+ default:
+ gPartyMenu.exitCallback = CB2_ReturnToField;
+ sub_8124BB0(&gPlayerParty[GetCursorSelectionMonId()], fieldMove);
+ Task_ClosePartyMenu(taskId);
+ break;
+ }
+ }
+ // Cant use Field Move
+ else
+ {
+ switch (fieldMove)
+ {
+ case FIELD_MOVE_SURF:
+ DisplayCantUseSurfMessage();
+ break;
+ case FIELD_MOVE_FLASH:
+ DisplayCantUseFlashMessage();
+ break;
+ default:
+ DisplayPartyMenuStdMessage(sFieldMoveCursorCallbacks[fieldMove].msgId);
+ break;
+ }
+ gTasks[taskId].func = Task_CancelAfterAorBPress;
+ }
+ }
+}
+
+void DisplayFieldMoveExitAreaMessage(u8 taskId)
+{
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ gTasks[taskId].func = Task_FieldMoveExitAreaYesNo;
+}
+
+void Task_FieldMoveExitAreaYesNo(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ PartyMenuDisplayYesNoMenu();
+ gTasks[taskId].func = Task_HandleFieldMoveExitAreaYesNoInput;
+ }
+}
+
+void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ gPartyMenu.exitCallback = CB2_ReturnToField;
+ sub_8124BB0(&gPlayerParty[GetCursorSelectionMonId()], sPartyMenuInternal->data[0]);
+ Task_ClosePartyMenu(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ // fallthrough
+ case 1:
+ gFieldCallback2 = NULL;
+ gPostMenuFieldCallback = NULL;
+ Task_ReturnToChooseMonAfterText(taskId);
+ break;
+ }
+}
+
+bool8 FieldCallback_PrepareFadeInFromMenu(void)
+{
+ sub_807DC00();
+ CreateTask(Task_FieldMoveWaitForFade, 8);
+ return TRUE;
+}
+
+void Task_FieldMoveWaitForFade(u8 taskId)
+{
+ if (IsWeatherNotFadingIn() == TRUE)
+ {
+ gFieldEffectArguments[0] = GetFieldMoveMonSpecies();
+ gPostMenuFieldCallback();
+ DestroyTask(taskId);
+ }
+}
+
+u16 GetFieldMoveMonSpecies(void)
+{
+ return GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
+}
+
+void Task_CancelAfterAorBPress(u8 taskId)
+{
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ CursorCB_Cancel1(taskId);
+}
+
+void DisplayCantUseFlashMessage(void)
+{
+ if (FlagGet(FLAG_SYS_FLASH_ACTIVE) == TRUE)
+ DisplayPartyMenuStdMessage(PARTY_MSG_ALREADY_IN_USE);
+ else
+ DisplayPartyMenuStdMessage(PARTY_MSG_CANT_USE_HERE);
+}
+
+void FieldCallback_Surf(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ FieldEffectStart(FLDEFF_USE_SURF);
+}
+
+bool8 SetUpFieldMove_Surf(void)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsSemiDeepWater(MapGridGetMetatileBehaviorAt(x, y)) != TRUE
+ && PartyHasMonWithSurf() == TRUE
+ && IsPlayerFacingSurfableFishableWater() == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_Surf;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void DisplayCantUseSurfMessage(void)
+{
+ s16 x, y;
+
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ {
+ DisplayPartyMenuStdMessage(PARTY_MSG_ALREADY_SURFING);
+ }
+ else
+ {
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsSemiDeepWater(MapGridGetMetatileBehaviorAt(x, y)) == TRUE)
+ DisplayPartyMenuStdMessage(PARTY_MSG_CURRENT_TOO_FAST);
+ else if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE17))
+ && ((gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE17))
+ || (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE18))))
+ DisplayPartyMenuStdMessage(PARTY_MSG_ENJOY_CYCLING);
+ else
+ DisplayPartyMenuStdMessage(PARTY_MSG_CANT_SURF_HERE);
+ }
+}
+
+bool8 SetUpFieldMove_Fly(void)
+{
+ if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void CB2_ReturnToPartyMenuFromFlyMap(void)
+{
+ InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_ReturnToFieldWithOpenMenu);
+}
+
+void FieldCallback_Waterfall(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ FieldEffectStart(FLDEFF_USE_WATERFALL);
+}
+
+bool8 SetUpFieldMove_Waterfall(void)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE && IsPlayerSurfingNorth() == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_Waterfall;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8124B60(struct Pokemon *mon, u16 item, u16 item2)
+{
+ u16 *ptr = Alloc(4 * sizeof(u16));
+
+ ptr[2] = GetMonData(mon, MON_DATA_SPECIES2);
+ ptr[0] = item;
+ ptr[1] = item2;
+ if (gPartyMenu.action == PARTY_ACTION_GIVE_PC_ITEM)
+ sub_8113550(10, ptr);
+ else
+ sub_8113550(9, ptr);
+ Free(ptr);
+}
+
+struct FieldMoveWarpParams
+{
+ u16 species;
+ u8 fieldMove;
+ u8 regionMapSectionId;
+};
+
+void sub_8124BB0(struct Pokemon *mon, u8 fieldMove)
+{
+ struct FieldMoveWarpParams *ptr = Alloc(sizeof(*ptr));
+
+ ptr->species = GetMonData(mon, MON_DATA_SPECIES2);
+ ptr->fieldMove = fieldMove;
+ switch (ptr->fieldMove)
+ {
+ case FIELD_MOVE_TELEPORT:
+ ptr->regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->lastHealLocation.mapGroup, gSaveBlock1Ptr->lastHealLocation.mapNum)->regionMapSectionId;
+ break;
+ case FIELD_MOVE_DIG:
+ ptr->regionMapSectionId = gMapHeader.regionMapSectionId;
+ break;
+ default:
+ ptr->regionMapSectionId = 0xFF;
+ }
+ sub_8113550(36, (u16 *)ptr);
+ Free(ptr);
+}
+
+void sub_8124C1C(const u8 *healLocCtrlData) // TODO: confirm the type of data chunk at 0x83F2EE0
+{
+ const struct MapHeader *mapHeader;
+ struct FieldMoveWarpParams *ptr2;
+ struct
+ {
+ s8 mapGroup;
+ s8 mapNum;
+ u32 unk_4;
+ } *ptr = Alloc(sizeof(*ptr));
+
+ ptr->mapGroup = healLocCtrlData[0];
+ ptr->mapNum = healLocCtrlData[1];
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(ptr->mapGroup, ptr->mapNum);
+ Free(ptr);
+ ptr2 = Alloc(4);
+ ptr2->species = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_SPECIES2);
+ ptr2->fieldMove = FIELD_MOVE_FLY;
+ ptr2->regionMapSectionId = mapHeader->regionMapSectionId;
+ sub_8113550(36, (u16 *)ptr2);
+ Free(ptr2);
+}
+
+void CB2_ShowPartyMenuForItemUse(void)
+{
+ MainCallback callback = CB2_ReturnToBagMenu;
+ u8 partyLayout;
+ u8 menuType;
+ u8 i;
+ u8 msgId;
+ TaskFunc task;
+
+ if (gMain.inBattle)
+ {
+ menuType = PARTY_MENU_TYPE_IN_BATTLE;
+ partyLayout = GetPartyLayoutFromBattleType();
+ }
+ else
+ {
+ menuType = PARTY_MENU_TYPE_FIELD;
+ partyLayout = PARTY_LAYOUT_SINGLE;
+ }
+
+ if (GetItemEffectType(gSpecialVar_ItemId) == ITEM_EFFECT_SACRED_ASH)
+ {
+ gPartyMenu.slotId = 0;
+ for (i = 0; i < PARTY_SIZE; ++i)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ {
+ gPartyMenu.slotId = i;
+ break;
+ }
+ }
+ if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
+ callback = sub_8124DB0;
+ task = Task_SetSacredAshCB;
+ msgId = PARTY_MSG_NONE;
+ }
+ else
+ {
+ switch (GetPocketByItemId(gSpecialVar_ItemId))
+ {
+ default:
+ msgId = PARTY_MSG_USE_ON_WHICH_MON;
+ break;
+ case POCKET_TM_CASE:
+ msgId = PARTY_MSG_TEACH_WHICH_MON;
+ callback = sub_8124DA0;
+ break;
+ case POCKET_BERRY_POUCH:
+ msgId = PARTY_MSG_USE_ON_WHICH_MON;
+ callback = sub_8124DB0;
+ break;
+ }
+ task = Task_HandleChooseMonInput;
+ }
+ InitPartyMenu(menuType, partyLayout, PARTY_ACTION_USE_ITEM, TRUE, msgId, task, callback);
+}
+
+void CB2_ReturnToBagMenu(void)
+{
+ GoToBagMenu(11, 3, NULL);
+}
+
+void sub_8124DA0(void)
+{
+ InitTMCase(5, NULL, 0xFF);
+}
+
+void sub_8124DB0(void)
+{
+ InitBerryPouch(BERRYPOUCH_NA, NULL, 0xFF);
+}
+
+void sub_8124DC0(u8 taskId)
+{
+ sPartyMenuInternal->exitCallback = sub_8124DE0;
+ Task_ClosePartyMenu(taskId);
+}
+
+void sub_8124DE0(void)
+{
+ if (CheckIfItemIsTMHMOrEvolutionStone(gSpecialVar_ItemId) == 2) // Evolution stone
+ {
+ if (sub_8126C24() == TRUE)
+ sub_811C540(gPartyMenu.slotId, gSpecialVar_ItemId, sub_8126BD4);
+ else
+ sub_811C5AC(gPartyMenu.slotId, gSpecialVar_ItemId, gPartyMenu.exitCallback);
+ }
+ else
+ {
+ sub_811C540(gPartyMenu.slotId, gSpecialVar_ItemId, sub_8124E48);
+ }
+}
+
+void sub_8124E48(void)
+{
+ if (ItemId_GetPocket(gSpecialVar_ItemId) == POCKET_TM_CASE
+ && sub_811D178() == 1)
+ {
+ GiveMoveToMon(&gPlayerParty[gPartyMenu.slotId], ItemIdToBattleMoveId(gSpecialVar_ItemId));
+ AdjustFriendship(&gPlayerParty[gPartyMenu.slotId], 4);
+ if (gSpecialVar_ItemId <= ITEM_TM50)
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ SetMainCallback2(gPartyMenu.exitCallback);
+ }
+ else
+ {
+ InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, PARTY_ACTION_CHOOSE_MON, gPartyMenu.slotId, PARTY_MSG_NONE, Task_SetSacredAshCB, gPartyMenu.exitCallback);
+ }
+}
+
+void sub_8124EFC(void)
+{
+ if (sub_811D178() == 1)
+ {
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ u8 moveIdx = GetMoveSlotToReplace();
+ u16 move = GetMonData(mon, moveIdx + MON_DATA_MOVE1);
+
+ RemoveMonPPBonus(mon, moveIdx);
+ SetMonMoveSlot(mon, ItemIdToBattleMoveId(gSpecialVar_ItemId), moveIdx);
+ AdjustFriendship(mon, 4);
+ ItemUse_SetQuestLogEvent(4, mon, gSpecialVar_ItemId, move);
+ if (gSpecialVar_ItemId <= ITEM_TM50)
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ SetMainCallback2(gPartyMenu.exitCallback);
+ }
+ else
+ {
+ InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, gPartyMenu.slotId, PARTY_MSG_NONE, Task_SetSacredAshCB, gPartyMenu.exitCallback);
+ }
+}
+
+void Task_SetSacredAshCB(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE)
+ sPartyMenuInternal->exitCallback = CB2_SetUpExitToBattleScreen;
+ gItemUseCB(taskId, Task_ClosePartyMenuAfterText); // ItemUseCB_SacredAsh in this case
+ }
+}
+
+bool8 IsHPRecoveryItem(u16 item)
+{
+ const u8 *effect;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
+ else
+ effect = gItemEffectTable[item - ITEM_POTION];
+ if (effect[4] & ITEM4_HEAL_HP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void GetMedicineItemEffectMessage(u16 item)
+{
+ switch (GetItemEffectType(item))
+ {
+ case ITEM_EFFECT_CURE_POISON:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfPoison);
+ break;
+ case ITEM_EFFECT_CURE_SLEEP:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnWokeUp2);
+ break;
+ case ITEM_EFFECT_CURE_BURN:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBurnHealed);
+ break;
+ case ITEM_EFFECT_CURE_FREEZE:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut);
+ break;
+ case ITEM_EFFECT_CURE_PARALYSIS:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfParalysis);
+ break;
+ case ITEM_EFFECT_CURE_CONFUSION:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnSnappedOutOfConfusion);
+ break;
+ case ITEM_EFFECT_CURE_INFATUATION:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnGotOverInfatuation);
+ break;
+ case ITEM_EFFECT_CURE_ALL_STATUS:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBecameHealthy);
+ break;
+ case ITEM_EFFECT_HP_EV:
+ StringCopy(gStringVar2, gText_HP3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case ITEM_EFFECT_ATK_EV:
+ StringCopy(gStringVar2, gText_Attack3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case ITEM_EFFECT_DEF_EV:
+ StringCopy(gStringVar2, gText_Defense3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case ITEM_EFFECT_SPEED_EV:
+ StringCopy(gStringVar2, gText_Speed2);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case ITEM_EFFECT_SPATK_EV:
+ StringCopy(gStringVar2, gText_SpAtk3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case ITEM_EFFECT_SPDEF_EV:
+ StringCopy(gStringVar2, gText_SpDef3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case ITEM_EFFECT_PP_UP:
+ case ITEM_EFFECT_PP_MAX:
+ StringExpandPlaceholders(gStringVar4, gText_MovesPPIncreased);
+ break;
+ case ITEM_EFFECT_HEAL_PP:
+ StringExpandPlaceholders(gStringVar4, gText_PPWasRestored);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gText_WontHaveEffect);
+ break;
+ }
+}
+
+bool8 NotUsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item)
+{
+ if (GetItemEffectType(item) == ITEM_EFFECT_HP_EV && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA)
+ return FALSE;
+ return TRUE;
+}
+
+bool8 IsItemFlute(u16 item)
+{
+ if (item == ITEM_BLUE_FLUTE || item == ITEM_RED_FLUTE || item == ITEM_YELLOW_FLUTE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 ExecuteTableBasedItemEffect_(u8 partyMonIndex, u16 item, u8 monMoveIndex)
+{
+ if (gMain.inBattle)
+ return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, GetPartyIdFromBattleSlot(partyMonIndex), monMoveIndex);
+ else
+ return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, partyMonIndex, monMoveIndex);
+}
+
+void sub_81252D0(u8 taskId, TaskFunc func)
+{
+ u16 hp;
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ u16 item = gSpecialVar_ItemId;
+ bool8 canHeal;
+
+ if (!NotUsingHPEVItemOnShedinja(mon, item))
+ {
+ canHeal = TRUE;
+ }
+ else
+ {
+ if (IsHPRecoveryItem(item) == TRUE)
+ {
+ hp = GetMonData(mon, MON_DATA_HP);
+ if (hp == GetMonData(mon, MON_DATA_MAX_HP))
+ canHeal = FALSE;
+ }
+ canHeal = PokemonUseItemEffects2(mon, item, gPartyMenu.slotId, 0);
+ }
+ PlaySE(SE_SELECT);
+ if (canHeal)
+ {
+ gPartyMenuUseExitCallback = FALSE;
+ DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = func;
+ }
+ else
+ {
+ ItemUse_SetQuestLogEvent(4, mon, item, 0xFFFF);
+ sub_8124DC0(taskId);
+ gItemUseCB = ItemUseCB_Medicine;
+ }
+}
+
+void ItemUseCB_Medicine(u8 taskId, TaskFunc func)
+{
+ u16 hp = 0;
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ u16 item = gSpecialVar_ItemId;
+ bool8 canHeal;
+
+ if (NotUsingHPEVItemOnShedinja(mon, item))
+ {
+ canHeal = IsHPRecoveryItem(item);
+ if (canHeal == TRUE)
+ {
+ hp = GetMonData(mon, MON_DATA_HP);
+ if (hp == GetMonData(mon, MON_DATA_MAX_HP))
+ canHeal = FALSE;
+ }
+ if (ExecuteTableBasedItemEffect_(gPartyMenu.slotId, item, 0))
+ {
+ WONT_HAVE_EFFECT:
+ gPartyMenuUseExitCallback = FALSE;
+ PlaySE(SE_SELECT);
+ DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = func;
+ return;
+ }
+ }
+ else
+ {
+ goto WONT_HAVE_EFFECT; // even loop wrap won't work
+ }
+ gPartyMenuUseExitCallback = TRUE;
+ if (!IsItemFlute(item))
+ {
+ PlaySE(SE_KAIFUKU);
+ if (gPartyMenu.action != PARTY_ACTION_REUSABLE_ITEM)
+ RemoveBagItem(item, 1);
+ }
+ else
+ {
+ PlaySE(SE_BIDORO);
+ }
+ SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[gPartyMenu.slotId]);
+ if (gSprites[sPartyMenuBoxes[gPartyMenu.slotId].statusSpriteId].invisible)
+ DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[gPartyMenu.slotId], 1);
+ if (canHeal == TRUE)
+ {
+ if (hp == 0)
+ AnimatePartySlot(gPartyMenu.slotId, 1);
+ PartyMenuModifyHP(taskId, gPartyMenu.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, Task_DisplayHPRestoredMessage);
+ ResetHPTaskData(taskId, 0, hp);
+ return;
+ }
+ else
+ {
+ GetMonNickname(mon, gStringVar1);
+ GetMedicineItemEffectMessage(item);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = func;
+ }
+}
+
+void Task_DisplayHPRestoredMessage(u8 taskId)
+{
+ GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
+ DisplayPartyMenuMessage(gStringVar4, FALSE);
+ ScheduleBgCopyTilemapToVram(2);
+ HandleBattleLowHpMusicChange();
+ gTasks[taskId].func = Task_ClosePartyMenuAfterText;
+}
+
+void Task_ClosePartyMenuAfterText(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ if (gPartyMenuUseExitCallback == FALSE)
+ sPartyMenuInternal->exitCallback = NULL;
+ Task_ClosePartyMenu(taskId);
+ }
+}
+
+void ShowMoveSelectWindow(u8 slot)
+{
+ u8 i;
+ u8 moveCount = 0;
+ u8 fontId = 2;
+ u8 windowId = DisplaySelectionWindow(SELECTWINDOW_MOVES);
+ u16 move;
+
+ for (i = 0; i < MAX_MON_MOVES; ++i)
+ {
+ move = GetMonData(&gPlayerParty[slot], MON_DATA_MOVE1 + i);
+ AddTextPrinterParameterized(windowId,
+ fontId,
+ gMoveNames[move],
+ GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH) + GetFontAttribute(fontId, FONTATTR_LETTER_SPACING),
+ (i * 16) + 2,
+ TEXT_SPEED_FF,
+ NULL);
+ if (move != MOVE_NONE)
+ ++moveCount;
+ }
+ Menu_InitCursor(windowId, fontId, 0, 2, 16, moveCount, FALSE);
+ ScheduleBgCopyTilemapToVram(2);
+}
+
+void Task_HandleWhichMoveInput(u8 taskId)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input != MENU_NOTHING_CHOSEN)
+ {
+ if (input == MENU_B_PRESSED)
+ {
+ PlaySE(SE_SELECT);
+ ReturnToUseOnWhichMon(taskId);
+ }
+ else
+ {
+ SetSelectedMoveForPPItem(taskId);
+ }
+ }
+}
+
+void ItemUseCB_PPRecovery(u8 taskId, UNUSED TaskFunc func)
+{
+ const u8 *effect;
+ u16 item = gSpecialVar_ItemId;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
+ else
+ effect = gItemEffectTable[item - ITEM_POTION];
+
+ if (!(effect[4] & ITEM4_HEAL_PP_ONE))
+ {
+ gPartyMenu.data1 = 0;
+ if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE)
+ TryUsePPItem(taskId);
+ else
+ sub_812580C(taskId);
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ DisplayPartyMenuStdMessage(PARTY_MSG_RESTORE_WHICH_MOVE);
+ ShowMoveSelectWindow(gPartyMenu.slotId);
+ gTasks[taskId].func = Task_HandleWhichMoveInput;
+ }
+}
+
+void SetSelectedMoveForPPItem(u8 taskId)
+{
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ gPartyMenu.data1 = Menu_GetCursorPos();
+ if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE)
+ TryUsePPItem(taskId);
+ else
+ sub_812580C(taskId);
+}
+
+void ReturnToUseOnWhichMon(u8 taskId)
+{
+ gTasks[taskId].func = Task_HandleChooseMonInput;
+ sPartyMenuInternal->exitCallback = NULL;
+ PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
+ DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON);
+}
+
+void sub_812580C(u8 taskId)
+{
+ bool8 noEffect = PokemonUseItemEffects2(&gPlayerParty[gPartyMenu.slotId],
+ gSpecialVar_ItemId,
+ gPartyMenu.slotId,
+ gPartyMenu.data1);
+ PlaySE(SE_SELECT);
+ if (noEffect)
+ {
+ gPartyMenuUseExitCallback = FALSE;
+ DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = Task_ClosePartyMenuAfterText;
+ }
+ else
+ {
+ sub_8124DC0(taskId);
+ gItemUseCB = sub_8125898;
+ }
+}
+
+void sub_8125898(u8 taskId, UNUSED TaskFunc func)
+{
+ u16 move;
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+
+ ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, (u8)gPartyMenu.data1);
+ gPartyMenuUseExitCallback = TRUE;
+ ItemUse_SetQuestLogEvent(4, mon, gSpecialVar_ItemId, 0xFFFF);
+ PlaySE(SE_KAIFUKU);
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ move = GetMonData(mon, gPartyMenu.data1 + MON_DATA_MOVE1);
+ StringCopy(gStringVar1, gMoveNames[move]);
+ GetMedicineItemEffectMessage(gSpecialVar_ItemId);
+ DisplayPartyMenuMessage(gStringVar4, 1);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = Task_ClosePartyMenuAfterText;
+}
+
+void TryUsePPItem(u8 taskId)
+{
+ u16 move = MOVE_NONE;
+ s16 *moveSlot = &gPartyMenu.data1;
+ u16 item = gSpecialVar_ItemId;
+ struct PartyMenu *ptr = &gPartyMenu;
+ struct Pokemon *mon;
+
+ if (ExecuteTableBasedItemEffect_(ptr->slotId, item, *moveSlot))
+ {
+ gPartyMenuUseExitCallback = FALSE;
+ PlaySE(SE_SELECT);
+ DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = Task_ClosePartyMenuAfterText;
+ }
+ else
+ {
+ gPartyMenuUseExitCallback = TRUE;
+ mon = &gPlayerParty[ptr->slotId];
+ ItemUse_SetQuestLogEvent(4, mon, item, 0xFFFF);
+ PlaySE(SE_KAIFUKU);
+ RemoveBagItem(item, 1);
+ move = GetMonData(mon, MON_DATA_MOVE1 + *moveSlot);
+ StringCopy(gStringVar1, gMoveNames[move]);
+ GetMedicineItemEffectMessage(item);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = Task_ClosePartyMenuAfterText;
+ }
+}
+
+void ItemUseCB_PPUp(u8 taskId, UNUSED TaskFunc func)
+{
+ PlaySE(SE_SELECT);
+ DisplayPartyMenuStdMessage(PARTY_MSG_BOOST_PP_WHICH_MOVE);
+ ShowMoveSelectWindow(gPartyMenu.slotId);
+ gTasks[taskId].func = Task_HandleWhichMoveInput;
+}
+
+u16 ItemIdToBattleMoveId(u16 item)
+{
+ u16 tmNumber = item - ITEM_TM01_FOCUS_PUNCH;
+
+ return sTMHMMoves[tmNumber];
+}
+
+bool8 IsMoveHm(u16 move)
+{
+ u8 i;
+
+ for (i = 0; i < NUM_HIDDEN_MACHINES - 1; ++i) // no dive
+ if (sTMHMMoves[i + NUM_TECHNICAL_MACHINES] == move)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_MON_MOVES; ++i)
+ {
+ if (GetMonData(mon, MON_DATA_MOVE1 + i) == move)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void DisplayLearnMoveMessage(const u8 *str)
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+}
+
+void DisplayLearnMoveMessageAndClose(u8 taskId, const u8 *str)
+{
+ DisplayLearnMoveMessage(str);
+ gTasks[taskId].func = Task_ClosePartyMenuAfterText;
+}
+
+void ItemUseCB_TMHM(u8 taskId, UNUSED TaskFunc func)
+{
+ struct Pokemon *mon;
+ s16 *move;
+ u16 item;
+
+ PlaySE(SE_SELECT);
+ mon = &gPlayerParty[gPartyMenu.slotId];
+ move = &gPartyMenu.data1;
+ item = gSpecialVar_ItemId;
+ GetMonNickname(mon, gStringVar1);
+ move[0] = ItemIdToBattleMoveId(item);
+ StringCopy(gStringVar2, gMoveNames[move[0]]);
+ move[1] = 0;
+ switch (CanMonLearnTMTutor(mon, item, 0))
+ {
+ case CANNOT_LEARN_MOVE:
+ DisplayLearnMoveMessageAndClose(taskId, gText_PkmnCantLearnMove);
+ return;
+ case ALREADY_KNOWS_MOVE:
+ DisplayLearnMoveMessageAndClose(taskId, gText_PkmnAlreadyKnows);
+ return;
+ }
+ if (GiveMoveToMon(mon, move[0]) != MON_HAS_MAX_MOVES)
+ {
+ ItemUse_SetQuestLogEvent(4, mon, item, 0xFFFF);
+ sub_8124DC0(taskId);
+ gItemUseCB = ItemUseCB_LearnedMove;
+ }
+ else
+ {
+ DisplayLearnMoveMessage(gText_PkmnNeedsToReplaceMove);
+ gTasks[taskId].func = Task_ReplaceMoveYesNo;
+ }
+}
+
+void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func)
+{
+ Task_LearnedMove(taskId);
+}
+
+void Task_LearnedMove(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ s16 *move = &gPartyMenu.data1;
+ u16 item = gSpecialVar_ItemId;
+
+ if (move[1] == 0)
+ {
+ AdjustFriendship(mon, 4);
+ if (item < ITEM_HM01_CUT)
+ RemoveBagItem(item, 1);
+ }
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move[0]]);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnLearnedMove3);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = Task_DoLearnedMoveFanfareAfterText;
+}
+
+void Task_DoLearnedMoveFanfareAfterText(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ PlayFanfare(MUS_FANFA1);
+ gTasks[taskId].func = Task_LearnNextMoveOrClosePartyMenu;
+ }
+}
+
+void Task_LearnNextMoveOrClosePartyMenu(u8 taskId)
+{
+ if (IsFanfareTaskInactive() && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
+ {
+ if (gPartyMenu.learnMoveState == 1)
+ Task_TryLearningNextMove(taskId);
+ else
+ {
+ if (gPartyMenu.learnMoveState == 2) // never occurs
+ gSpecialVar_Result = TRUE;
+ Task_ClosePartyMenu(taskId);
+ }
+ }
+}
+
+void Task_ReplaceMoveYesNo(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ PartyMenuDisplayYesNoMenu();
+ gTasks[taskId].func = Task_HandleReplaceMoveYesNoInput;
+ }
+}
+
+void Task_HandleReplaceMoveYesNoInput(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ DisplayPartyMenuMessage(gText_WhichMoveToForget, TRUE);
+ gTasks[taskId].func = Task_ShowSummaryScreenToForgetMove;
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ // fallthrough
+ case 1:
+ StopLearningMovePrompt(taskId);
+ break;
+ }
+}
+
+void Task_ShowSummaryScreenToForgetMove(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ sPartyMenuInternal->exitCallback = CB2_ShowSummaryScreenToForgetMove;
+ Task_ClosePartyMenu(taskId);
+ }
+}
+
+void CB2_ShowSummaryScreenToForgetMove(void)
+{
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuWhileLearningMove, gPartyMenu.data1);
+}
+
+void CB2_ReturnToPartyMenuWhileLearningMove(void)
+{
+ u8 moveIdx = GetMoveSlotToReplace();
+ u16 move;
+ s32 learnMoveState = gPartyMenu.learnMoveState;
+
+ if (learnMoveState == 0 && moveIdx != MAX_MON_MOVES)
+ {
+ move = GetMonData(&gPlayerParty[gPartyMenu.slotId], moveIdx + MON_DATA_MOVE1);
+ sub_811C568(gPartyMenu.slotId, gSpecialVar_ItemId, move, sub_8124EFC);
+ gItemUseCB = sub_8125F4C;
+ gPartyMenu.action = learnMoveState;
+ }
+ else
+ {
+ InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback);
+ }
+}
+
+void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (GetMoveSlotToReplace() != MAX_MON_MOVES)
+ DisplayPartyMenuForgotMoveMessage(taskId);
+ else
+ StopLearningMovePrompt(taskId);
+ }
+}
+
+void sub_8125F4C(u8 taskId, UNUSED TaskFunc func)
+{
+ sub_8125F5C(taskId);
+}
+
+void sub_8125F5C(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ u8 moveIdx = GetMoveSlotToReplace();
+ u16 move = GetMonData(mon, moveIdx + MON_DATA_MOVE1);
+
+ ItemUse_SetQuestLogEvent(4, mon, gSpecialVar_ItemId, move);
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move]);
+ RemoveMonPPBonus(mon, moveIdx);
+ SetMonMoveSlot(mon, gPartyMenu.data1, moveIdx);
+ Task_LearnedMove(taskId);
+}
+
+void DisplayPartyMenuForgotMoveMessage(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+ u16 move = GetMonData(mon, MON_DATA_MOVE1 + GetMoveSlotToReplace());
+
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move]);
+ DisplayLearnMoveMessage(gText_12PoofForgotMove);
+ gTasks[taskId].func = Task_PartyMenuReplaceMove;
+}
+
+void Task_PartyMenuReplaceMove(u8 taskId)
+{
+ struct Pokemon *mon;
+ u16 move;
+
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ mon = &gPlayerParty[gPartyMenu.slotId];
+ RemoveMonPPBonus(mon, GetMoveSlotToReplace());
+ move = gPartyMenu.data1;
+ SetMonMoveSlot(mon, move, GetMoveSlotToReplace());
+ Task_LearnedMove(taskId);
+ }
+}
+
+void StopLearningMovePrompt(u8 taskId)
+{
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]);
+ StringExpandPlaceholders(gStringVar4, gText_StopLearningMove2);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = Task_StopLearningMoveYesNo;
+}
+
+void Task_StopLearningMoveYesNo(u8 taskId)
+{
+ if (IsPartyMenuTextPrinterActive() != TRUE)
+ {
+ PartyMenuDisplayYesNoMenu();
+ gTasks[taskId].func = Task_HandleStopLearningMoveYesNoInput;
+ }
+}
+
+void Task_HandleStopLearningMoveYesNoInput(u8 taskId)
+{
+ struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]);
+ StringExpandPlaceholders(gStringVar4, gText_MoveNotLearned);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ if (gPartyMenu.learnMoveState == 1)
+ {
+ gTasks[taskId].func = Task_TryLearningNextMoveAfterText;
+ }
+ else
+ {
+ if (gPartyMenu.learnMoveState == 2) // never occurs
+ gSpecialVar_Result = FALSE;
+ gTasks[taskId].func = Task_ClosePartyMenuAfterText;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ // fallthrough
+ case 1:
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]);
+ DisplayLearnMoveMessage(gText_PkmnNeedsToReplaceMove);
+ gTasks[taskId].func = Task_ReplaceMoveYesNo;
+ break;
+ }
+}
diff --git a/src/start_menu.c b/src/start_menu.c
index 4a4fe52e3..2a1713902 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -504,7 +504,7 @@ static bool8 StartMenuPlayerCallback(void)
PlayRainStoppingSoundEffect();
DestroySafariZoneStatsWindow();
CleanupOverworldWindowsAndTilemaps();
- InitTrainerCard(CB2_ReturnToStartMenu);
+ InitTrainerCard(CB2_ReturnToFieldWithOpenMenu);
return TRUE;
}
return FALSE;
@@ -524,7 +524,7 @@ static bool8 StartMenuOptionCallback(void)
DestroySafariZoneStatsWindow();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_OptionsMenuFromStartMenu);
- gMain.savedCallback = CB2_ReturnToStartMenu;
+ gMain.savedCallback = CB2_ReturnToFieldWithOpenMenu;
return TRUE;
}
return FALSE;
@@ -554,7 +554,7 @@ static bool8 StartMenuLinkPlayerCallback(void)
{
PlayRainStoppingSoundEffect();
CleanupOverworldWindowsAndTilemaps();
- InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToStartMenu);
+ InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToFieldWithOpenMenu);
return TRUE;
}
return FALSE;
diff --git a/src/trade.c b/src/trade.c
index 537a5503b..4921a1ba3 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -4474,7 +4474,7 @@ int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, str
return 0;
}
-int Trade_CanTradeSelectedMon(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3)
+int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3)
{
u8 canTradeEggAndNational = a0.unk_01_0;