summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-06-20 20:00:13 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-06-20 20:00:13 -0400
commit7abbe42763835f43dc2b08f8292a4ef83c50c5e1 (patch)
tree97ab8dfe4f6208cda7c8d9600b3dd1bad610dee1
parent12f3ceb0f7fb0ed580fa75bbba634307ca463d52 (diff)
Finish item_use
-rw-r--r--asm/berry_crush.s2
-rw-r--r--asm/berry_pouch.s6
-rw-r--r--asm/item_menu.s12
-rw-r--r--asm/item_use.s1506
-rw-r--r--asm/party_menu.s2
-rw-r--r--asm/start_menu.s4
-rw-r--r--include/berry_pouch.h5
-rw-r--r--include/constants/flags.h4
-rw-r--r--include/constants/vars.h4
-rw-r--r--include/field_effect.h1
-rw-r--r--include/field_specials.h1
-rw-r--r--include/item_menu.h5
-rw-r--r--include/item_use.h6
-rw-r--r--include/itemfinder.h6
-rw-r--r--include/mail.h2
-rw-r--r--include/overworld.h1
-rw-r--r--include/party_menu.h9
-rw-r--r--include/pokemon.h2
-rw-r--r--include/region_map.h1
-rw-r--r--include/strings.h6
-rw-r--r--ld_script.txt1
-rw-r--r--src/data/items.json170
-rw-r--r--src/fame_checker.c2
-rw-r--r--src/item_use.c566
-rw-r--r--src/pokemon.c2
-rw-r--r--src/teachy_tv.c2
26 files changed, 709 insertions, 1619 deletions
diff --git a/asm/berry_crush.s b/asm/berry_crush.s
index eb5e8d08d..42de36a1f 100644
--- a/asm/berry_crush.s
+++ b/asm/berry_crush.s
@@ -265,7 +265,7 @@ sub_814B8F0: @ 814B8F0
ldr r1, _0814B910 @ =sub_814B860
movs r0, 0x5
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 08d4ab435..36fa22f9c 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_813CD50
-sub_813CD50: @ 813CD50
+ thumb_func_start InitBerryPouch
+InitBerryPouch: @ 813CD50
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -92,7 +92,7 @@ _0813CDF0: .4byte gTextFlags
_0813CDF4: .4byte gSpecialVar_ItemId
_0813CDF8: .4byte sub_813CE30
_0813CDFC: .4byte 0x0000080c
- thumb_func_end sub_813CD50
+ thumb_func_end InitBerryPouch
thumb_func_start sub_813CE00
sub_813CE00: @ 813CE00
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 1db1f73b8..42378c28e 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -138,8 +138,8 @@ _08107EB0: .4byte gUnknown_203AD10
_08107EB4: .4byte gUnknown_203ACFC
thumb_func_end sub_8107DB4
- thumb_func_start UseFameCheckerFromMenu
-UseFameCheckerFromMenu: @ 8107EB8
+ thumb_func_start ReturnToBagFromKeyItem
+ReturnToBagFromKeyItem: @ 8107EB8
push {lr}
ldr r2, _08107EC8 @ =sub_80568A8
movs r0, 0
@@ -149,7 +149,7 @@ UseFameCheckerFromMenu: @ 8107EB8
bx r0
.align 2, 0
_08107EC8: .4byte sub_80568A8
- thumb_func_end UseFameCheckerFromMenu
+ thumb_func_end ReturnToBagFromKeyItem
thumb_func_start sub_8107ECC
sub_8107ECC: @ 8107ECC
@@ -4776,7 +4776,7 @@ sub_810A448: @ 810A448
ldr r1, _0810A458 @ =sub_810A45C
movs r0, 0x1
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
@@ -4905,7 +4905,7 @@ sub_810A540: @ 810A540
ldr r1, _0810A550 @ =sub_810A554
movs r0, 0x3
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
@@ -5050,7 +5050,7 @@ sub_810A668: @ 810A668
ldr r1, _0810A678 @ =sub_810A67C
movs r0, 0x2
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/item_use.s b/asm/item_use.s
deleted file mode 100644
index e6b649da8..000000000
--- a/asm/item_use.s
+++ /dev/null
@@ -1,1506 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start FieldUseFunc_OpenPartyMenu
-FieldUseFunc_OpenPartyMenu: @ 80A16E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A16F4 @ =gUnknown_3005E98
- ldr r1, _080A16F8 @ =sub_81252D0
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A16F4: .4byte gUnknown_3005E98
-_080A16F8: .4byte sub_81252D0
- thumb_func_end FieldUseFunc_OpenPartyMenu
-
- thumb_func_start FieldUseFunc_Ether
-FieldUseFunc_Ether: @ 80A16FC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1710 @ =gUnknown_3005E98
- ldr r1, _080A1714 @ =sub_81256F8
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A1710: .4byte gUnknown_3005E98
-_080A1714: .4byte sub_81256F8
- thumb_func_end FieldUseFunc_Ether
-
- thumb_func_start FieldUseFunc_PpUp
-FieldUseFunc_PpUp: @ 80A1718
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A172C @ =gUnknown_3005E98
- ldr r1, _080A1730 @ =dp05_pp_up
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A172C: .4byte gUnknown_3005E98
-_080A1730: .4byte dp05_pp_up
- thumb_func_end FieldUseFunc_PpUp
-
- thumb_func_start FieldUseFunc_RareCandy
-FieldUseFunc_RareCandy: @ 80A1734
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1748 @ =gUnknown_3005E98
- ldr r1, _080A174C @ =dp05_rare_candy
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A1748: .4byte gUnknown_3005E98
-_080A174C: .4byte dp05_rare_candy
- thumb_func_end FieldUseFunc_RareCandy
-
- thumb_func_start FieldUseFunc_EvoItem
-FieldUseFunc_EvoItem: @ 80A1750
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1764 @ =gUnknown_3005E98
- ldr r1, _080A1768 @ =sub_8126B60
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A1764: .4byte gUnknown_3005E98
-_080A1768: .4byte sub_8126B60
- thumb_func_end FieldUseFunc_EvoItem
-
- thumb_func_start FieldUseFunc_SacredAsh
-FieldUseFunc_SacredAsh: @ 80A176C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1780 @ =gUnknown_3005E98
- ldr r1, _080A1784 @ =sub_8126894
- str r1, [r2]
- bl sub_80A0FBC
- pop {r0}
- bx r0
- .align 2, 0
-_080A1780: .4byte gUnknown_3005E98
-_080A1784: .4byte sub_8126894
- thumb_func_end FieldUseFunc_SacredAsh
-
- thumb_func_start FieldUseFunc_TmCase
-FieldUseFunc_TmCase: @ 80A1788
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A17B0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A17B8
- ldr r0, _080A17B4 @ =sub_80A17D4
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A17C8
- .align 2, 0
-_080A17B0: .4byte gTasks
-_080A17B4: .4byte sub_80A17D4
-_080A17B8:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A17D0 @ =sub_80A17E8
- str r0, [r5]
-_080A17C8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A17D0: .4byte sub_80A17E8
- thumb_func_end FieldUseFunc_TmCase
-
- thumb_func_start sub_80A17D4
-sub_80A17D4: @ 80A17D4
- push {lr}
- ldr r1, _080A17E4 @ =UseFameCheckerFromMenu
- movs r0, 0
- movs r2, 0
- bl InitTMCase
- pop {r0}
- bx r0
- .align 2, 0
-_080A17E4: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A17D4
-
- thumb_func_start sub_80A17E8
-sub_80A17E8: @ 80A17E8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1818 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1812
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A181C @ =CB2_ReturnToField
- movs r0, 0
- movs r2, 0x1
- bl InitTMCase
- adds r0, r4, 0
- bl DestroyTask
-_080A1812:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1818: .4byte gPaletteFade
-_080A181C: .4byte CB2_ReturnToField
- thumb_func_end sub_80A17E8
-
- thumb_func_start FieldUseFunc_BerryPouch
-FieldUseFunc_BerryPouch: @ 80A1820
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A1848 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1850
- ldr r0, _080A184C @ =sub_80A186C
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1860
- .align 2, 0
-_080A1848: .4byte gTasks
-_080A184C: .4byte sub_80A186C
-_080A1850:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1868 @ =sub_80A1880
- str r0, [r5]
-_080A1860:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1868: .4byte sub_80A1880
- thumb_func_end FieldUseFunc_BerryPouch
-
- thumb_func_start sub_80A186C
-sub_80A186C: @ 80A186C
- push {lr}
- ldr r1, _080A187C @ =UseFameCheckerFromMenu
- movs r0, 0
- movs r2, 0
- bl sub_813CD50
- pop {r0}
- bx r0
- .align 2, 0
-_080A187C: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A186C
-
- thumb_func_start sub_80A1880
-sub_80A1880: @ 80A1880
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A18B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A18AA
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A18B4 @ =CB2_ReturnToField
- movs r0, 0
- movs r2, 0x1
- bl sub_813CD50
- adds r0, r4, 0
- bl DestroyTask
-_080A18AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A18B0: .4byte gPaletteFade
-_080A18B4: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1880
-
- thumb_func_start BattleUseFunc_BerryPouch
-BattleUseFunc_BerryPouch: @ 80A18B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080A18D4 @ =sub_80A18D8
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A18D4: .4byte sub_80A18D8
- thumb_func_end BattleUseFunc_BerryPouch
-
- thumb_func_start sub_80A18D8
-sub_80A18D8: @ 80A18D8
- push {lr}
- ldr r1, _080A18E8 @ =sub_8107ECC
- movs r0, 0x4
- movs r2, 0
- bl sub_813CD50
- pop {r0}
- bx r0
- .align 2, 0
-_080A18E8: .4byte sub_8107ECC
- thumb_func_end sub_80A18D8
-
- thumb_func_start FieldUseFunc_TeachyTv
-FieldUseFunc_TeachyTv: @ 80A18EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1920 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A1924 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r1, _080A1928 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1930
- ldr r0, _080A192C @ =sub_80A194C
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1940
- .align 2, 0
-_080A1920: .4byte gSpecialVar_ItemId
-_080A1924: .4byte 0x0000ffff
-_080A1928: .4byte gTasks
-_080A192C: .4byte sub_80A194C
-_080A1930:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1948 @ =sub_80A1960
- str r0, [r5]
-_080A1940:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1948: .4byte sub_80A1960
- thumb_func_end FieldUseFunc_TeachyTv
-
- thumb_func_start sub_80A194C
-sub_80A194C: @ 80A194C
- push {lr}
- ldr r1, _080A195C @ =UseFameCheckerFromMenu
- movs r0, 0
- bl InitTeachyTvController
- pop {r0}
- bx r0
- .align 2, 0
-_080A195C: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A194C
-
- thumb_func_start sub_80A1960
-sub_80A1960: @ 80A1960
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1990 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1988
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A1994 @ =CB2_ReturnToField
- movs r0, 0
- bl InitTeachyTvController
- adds r0, r4, 0
- bl DestroyTask
-_080A1988:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1990: .4byte gPaletteFade
-_080A1994: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1960
-
- thumb_func_start FieldUseFunc_SuperRepel
-FieldUseFunc_SuperRepel: @ 80A1998
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A19C0 @ =0x00004020
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- bne _080A19CC
- movs r0, 0x29
- bl PlaySE
- ldr r0, _080A19C4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080A19C8 @ =sub_80A19E8
- str r0, [r1]
- b _080A19D8
- .align 2, 0
-_080A19C0: .4byte 0x00004020
-_080A19C4: .4byte gTasks
-_080A19C8: .4byte sub_80A19E8
-_080A19CC:
- ldr r2, _080A19E0 @ =gUnknown_841659E
- ldr r3, _080A19E4 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
-_080A19D8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A19E0: .4byte gUnknown_841659E
-_080A19E4: .4byte sub_810A1F8
- thumb_func_end FieldUseFunc_SuperRepel
-
- thumb_func_start sub_80A19E8
-sub_80A19E8: @ 80A19E8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080A1A2A
- ldr r4, _080A1A30 @ =gSpecialVar_ItemId
- ldrh r2, [r4]
- ldr r3, _080A1A34 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r5, _080A1A38 @ =0x00004020
- ldrh r0, [r4]
- bl ItemId_GetHoldEffectParam
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl VarSet
- bl sub_80A1A44
- ldr r2, _080A1A3C @ =gStringVar4
- ldr r3, _080A1A40 @ =sub_810A1F8
- adds r0, r6, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
-_080A1A2A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1A30: .4byte gSpecialVar_ItemId
-_080A1A34: .4byte 0x0000ffff
-_080A1A38: .4byte 0x00004020
-_080A1A3C: .4byte gStringVar4
-_080A1A40: .4byte sub_810A1F8
- thumb_func_end sub_80A19E8
-
- thumb_func_start sub_80A1A44
-sub_80A1A44: @ 80A1A44
- push {r4,lr}
- ldr r4, _080A1A84 @ =gSpecialVar_ItemId
- ldrh r0, [r4]
- movs r1, 0x1
- bl RemoveBagItem
- ldrh r0, [r4]
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- bl sub_8108DC8
- ldrh r0, [r4]
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- bl sub_81089F4
- ldrh r0, [r4]
- ldr r1, _080A1A88 @ =gStringVar2
- bl CopyItemName
- ldr r0, _080A1A8C @ =gStringVar4
- ldr r1, _080A1A90 @ =gUnknown_841658C
- bl StringExpandPlaceholders
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1A84: .4byte gSpecialVar_ItemId
-_080A1A88: .4byte gStringVar2
-_080A1A8C: .4byte gStringVar4
-_080A1A90: .4byte gUnknown_841658C
- thumb_func_end sub_80A1A44
-
- thumb_func_start FieldUseFunc_BlackFlute
-FieldUseFunc_BlackFlute: @ 80A1A94
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r5, _080A1AD4 @ =gSpecialVar_ItemId
- ldrh r2, [r5]
- ldr r3, _080A1AD8 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldrh r0, [r5]
- cmp r0, 0x2B
- bne _080A1AF4
- ldr r0, _080A1ADC @ =0x00000803
- bl FlagSet
- ldr r0, _080A1AE0 @ =0x00000804
- bl FlagClear
- ldrh r0, [r5]
- ldr r1, _080A1AE4 @ =gStringVar2
- bl CopyItemName
- ldr r0, _080A1AE8 @ =gStringVar4
- ldr r1, _080A1AEC @ =gUnknown_84165D2
- bl StringExpandPlaceholders
- ldr r1, _080A1AF0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- b _080A1B1A
- .align 2, 0
-_080A1AD4: .4byte gSpecialVar_ItemId
-_080A1AD8: .4byte 0x0000ffff
-_080A1ADC: .4byte 0x00000803
-_080A1AE0: .4byte 0x00000804
-_080A1AE4: .4byte gStringVar2
-_080A1AE8: .4byte gStringVar4
-_080A1AEC: .4byte gUnknown_84165D2
-_080A1AF0: .4byte gTasks
-_080A1AF4:
- cmp r0, 0x2A
- bne _080A1B26
- ldr r0, _080A1B2C @ =0x00000804
- bl FlagSet
- ldr r0, _080A1B30 @ =0x00000803
- bl FlagClear
- ldrh r0, [r5]
- ldr r1, _080A1B34 @ =gStringVar2
- bl CopyItemName
- ldr r0, _080A1B38 @ =gStringVar4
- ldr r1, _080A1B3C @ =gUnknown_8416600
- bl StringExpandPlaceholders
- ldr r1, _080A1B40 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
-_080A1B1A:
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A1B44 @ =sub_80A1B48
- str r1, [r0]
- movs r1, 0
- strh r1, [r0, 0x18]
-_080A1B26:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1B2C: .4byte 0x00000804
-_080A1B30: .4byte 0x00000803
-_080A1B34: .4byte gStringVar2
-_080A1B38: .4byte gStringVar4
-_080A1B3C: .4byte gUnknown_8416600
-_080A1B40: .4byte gTasks
-_080A1B44: .4byte sub_80A1B48
- thumb_func_end FieldUseFunc_BlackFlute
-
- thumb_func_start sub_80A1B48
-sub_80A1B48: @ 80A1B48
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1B80 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080A1B78
- movs r0, 0x6E
- bl PlaySE
- ldr r2, _080A1B84 @ =gStringVar4
- ldr r3, _080A1B88 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
-_080A1B78:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1B80: .4byte gTasks
-_080A1B84: .4byte gStringVar4
-_080A1B88: .4byte sub_810A1F8
- thumb_func_end sub_80A1B48
-
- thumb_func_start sub_80A1B8C
-sub_80A1B8C: @ 80A1B8C
- push {lr}
- ldr r0, _080A1BA0 @ =gMapHeader
- ldrb r1, [r0, 0x19]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A1BA4
- movs r0, 0
- b _080A1BA6
- .align 2, 0
-_080A1BA0: .4byte gMapHeader
-_080A1BA4:
- movs r0, 0x1
-_080A1BA6:
- pop {r1}
- bx r1
- thumb_func_end sub_80A1B8C
-
- thumb_func_start ItemUseOutOfBattle_EscapeRope
-ItemUseOutOfBattle_EscapeRope: @ 80A1BAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80A1B8C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A1BEC
- ldr r0, _080A1BDC @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r0, _080A1BE0 @ =gMapHeader
- ldrb r3, [r0, 0x14]
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r1, _080A1BE4 @ =sItemUseOnFieldCB
- ldr r0, _080A1BE8 @ =sub_80A1C08
- str r0, [r1]
- adds r0, r4, 0
- bl sub_80A103C
- b _080A1BFE
- .align 2, 0
-_080A1BDC: .4byte gSpecialVar_ItemId
-_080A1BE0: .4byte gMapHeader
-_080A1BE4: .4byte sItemUseOnFieldCB
-_080A1BE8: .4byte sub_80A1C08
-_080A1BEC:
- ldr r0, _080A1C04 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r4, 0
- bl sub_80A1110
-_080A1BFE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C04: .4byte gTasks
- thumb_func_end ItemUseOutOfBattle_EscapeRope
-
- thumb_func_start sub_80A1C08
-sub_80A1C08: @ 80A1C08
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8054D70
- bl sub_80A1A44
- ldr r1, _080A1C38 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
- ldr r2, _080A1C3C @ =gStringVar4
- ldr r3, _080A1C40 @ =sub_80A1C44
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C38: .4byte gTasks
-_080A1C3C: .4byte gStringVar4
-_080A1C40: .4byte sub_80A1C44
- thumb_func_end sub_80A1C08
-
- thumb_func_start sub_80A1C44
-sub_80A1C44: @ 80A1C44
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ResetInitialPlayerAvatarState
- bl sub_8085620
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1C44
-
- thumb_func_start FieldUseFunc_TownMap
-FieldUseFunc_TownMap: @ 80A1C60
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A1C88 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1C90
- ldr r0, _080A1C8C @ =sub_80A1CAC
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1CA0
- .align 2, 0
-_080A1C88: .4byte gTasks
-_080A1C8C: .4byte sub_80A1CAC
-_080A1C90:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1CA8 @ =sub_80A1CC0
- str r0, [r5]
-_080A1CA0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1CA8: .4byte sub_80A1CC0
- thumb_func_end FieldUseFunc_TownMap
-
- thumb_func_start sub_80A1CAC
-sub_80A1CAC: @ 80A1CAC
- push {lr}
- ldr r1, _080A1CBC @ =UseFameCheckerFromMenu
- movs r0, 0
- bl sub_80BFF50
- pop {r0}
- bx r0
- .align 2, 0
-_080A1CBC: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A1CAC
-
- thumb_func_start sub_80A1CC0
-sub_80A1CC0: @ 80A1CC0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1CF0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1CE8
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A1CF4 @ =CB2_ReturnToField
- movs r0, 0
- bl sub_80BFF50
- adds r0, r4, 0
- bl DestroyTask
-_080A1CE8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1CF0: .4byte gPaletteFade
-_080A1CF4: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1CC0
-
- thumb_func_start FieldUseFunc_FameChecker
-FieldUseFunc_FameChecker: @ 80A1CF8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1D2C @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A1D30 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r1, _080A1D34 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1D3C
- ldr r0, _080A1D38 @ =sub_80A1D58
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1D4C
- .align 2, 0
-_080A1D2C: .4byte gSpecialVar_ItemId
-_080A1D30: .4byte 0x0000ffff
-_080A1D34: .4byte gTasks
-_080A1D38: .4byte sub_80A1D58
-_080A1D3C:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1D54 @ =sub_80A1D68
- str r0, [r5]
-_080A1D4C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D54: .4byte sub_80A1D68
- thumb_func_end FieldUseFunc_FameChecker
-
- thumb_func_start sub_80A1D58
-sub_80A1D58: @ 80A1D58
- push {lr}
- ldr r0, _080A1D64 @ =UseFameCheckerFromMenu
- bl UseFameChecker
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D64: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A1D58
-
- thumb_func_start sub_80A1D68
-sub_80A1D68: @ 80A1D68
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1D94 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1D8E
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r0, _080A1D98 @ =CB2_ReturnToField
- bl UseFameChecker
- adds r0, r4, 0
- bl DestroyTask
-_080A1D8E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D94: .4byte gPaletteFade
-_080A1D98: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1D68
-
- thumb_func_start FieldUseFunc_VsSeeker
-FieldUseFunc_VsSeeker: @ 80A1D9C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080A1DE8 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x3
- beq _080A1DB2
- cmp r0, 0x1
- beq _080A1DB2
- cmp r0, 0x2
- bne _080A1DD2
-_080A1DB2:
- ldr r0, _080A1DEC @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080A1DF4
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080A1DD2
- cmp r0, 0x61
- beq _080A1DD2
- cmp r0, 0x6D
- beq _080A1DD2
- cmp r0, 0x79
- bne _080A1DF4
-_080A1DD2:
- ldr r0, _080A1DF0 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r2, 0
- bl sub_80A1110
- b _080A1E00
- .align 2, 0
-_080A1DE8: .4byte gMapHeader
-_080A1DEC: .4byte gSaveBlock1Ptr
-_080A1DF0: .4byte gTasks
-_080A1DF4:
- ldr r1, _080A1E04 @ =sItemUseOnFieldCB
- ldr r0, _080A1E08 @ =Task_VsSeeker_0
- str r0, [r1]
- adds r0, r2, 0
- bl sub_80A103C
-_080A1E00:
- pop {r0}
- bx r0
- .align 2, 0
-_080A1E04: .4byte sItemUseOnFieldCB
-_080A1E08: .4byte Task_VsSeeker_0
- thumb_func_end FieldUseFunc_VsSeeker
-
- thumb_func_start sub_80A1E0C
-sub_80A1E0C: @ 80A1E0C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A112C
- pop {r0}
- bx r0
- thumb_func_end sub_80A1E0C
-
- thumb_func_start BattleUseFunc_MasterBall
-BattleUseFunc_MasterBall: @ 80A1E1C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPlayerPartyAndPokemonStorageFull
- lsls r0, 24
- cmp r0, 0
- bne _080A1E48
- ldr r0, _080A1E44 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- bl sub_8108CB4
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1E54
- .align 2, 0
-_080A1E44: .4byte gSpecialVar_ItemId
-_080A1E48:
- ldr r2, _080A1E5C @ =gUnknown_8416631
- ldr r3, _080A1E60 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
-_080A1E54:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1E5C: .4byte gUnknown_8416631
-_080A1E60: .4byte sub_810A1F8
- thumb_func_end BattleUseFunc_MasterBall
-
- thumb_func_start BattleUseFunc_PokeFlute
-BattleUseFunc_PokeFlute: @ 80A1E64
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8108CB4
- adds r0, r4, 0
- bl sub_8108B50
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleUseFunc_PokeFlute
-
- thumb_func_start BattleUseFunc_GuardSpec
-BattleUseFunc_GuardSpec: @ 80A1E7C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A1EBC @ =gBattlerPartyIndexes
- ldr r0, _080A1EC0 @ =gBattlerInMenuId
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r1, _080A1EC4 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080A1EC8 @ =gSpecialVar_ItemId
- ldrh r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0
- bl ExecuteTableBasedItemEffect
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _080A1ED4
- ldr r2, _080A1ECC @ =gUnknown_84169DC
- ldr r3, _080A1ED0 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
- b _080A1EE4
- .align 2, 0
-_080A1EBC: .4byte gBattlerPartyIndexes
-_080A1EC0: .4byte gBattlerInMenuId
-_080A1EC4: .4byte gPlayerParty
-_080A1EC8: .4byte gSpecialVar_ItemId
-_080A1ECC: .4byte gUnknown_84169DC
-_080A1ED0: .4byte sub_810A1F8
-_080A1ED4:
- ldr r0, _080A1EEC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- strh r2, [r1, 0x18]
- ldr r0, _080A1EF0 @ =sub_80A1EF4
- str r0, [r1]
-_080A1EE4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1EEC: .4byte gTasks
-_080A1EF0: .4byte sub_80A1EF4
- thumb_func_end BattleUseFunc_GuardSpec
-
- thumb_func_start sub_80A1EF4
-sub_80A1EF4: @ 80A1EF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- ldr r0, _080A1F3C @ =gTasks+0x8
- adds r1, r0
- ldrh r0, [r1, 0x10]
- adds r0, 0x1
- strh r0, [r1, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080A1F36
- ldr r0, _080A1F40 @ =gSpecialVar_ItemId
- ldrh r4, [r0]
- movs r0, 0x1
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r4, 0
- bl sub_8042DA4
- adds r2, r0, 0
- ldr r3, _080A1F44 @ =sub_80A1F48
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
-_080A1F36:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F3C: .4byte gTasks+0x8
-_080A1F40: .4byte gSpecialVar_ItemId
-_080A1F44: .4byte sub_80A1F48
- thumb_func_end sub_80A1EF4
-
- thumb_func_start sub_80A1F48
-sub_80A1F48: @ 80A1F48
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1F74 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A1F62
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080A1F6C
-_080A1F62:
- bl sub_8108CB4
- adds r0, r4, 0
- bl sub_8108B50
-_080A1F6C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F74: .4byte gMain
- thumb_func_end sub_80A1F48
-
- thumb_func_start sub_80A1F78
-sub_80A1F78: @ 80A1F78
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1F9C @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _080A1FA4
- ldr r0, _080A1FA0 @ =sub_81279E0
- bl sub_813D934
- adds r0, r4, 0
- bl sub_813D808
- b _080A1FB0
- .align 2, 0
-_080A1F9C: .4byte gSpecialVar_ItemId
-_080A1FA0: .4byte sub_81279E0
-_080A1FA4:
- ldr r0, _080A1FB8 @ =sub_81279E0
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
-_080A1FB0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FB8: .4byte sub_81279E0
- thumb_func_end sub_80A1F78
-
- thumb_func_start BattleUseFunc_OpenPartyMenu
-BattleUseFunc_OpenPartyMenu: @ 80A1FBC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1FD0 @ =gUnknown_3005E98
- ldr r1, _080A1FD4 @ =ItemUseCB_Medicine
- str r1, [r2]
- bl sub_80A1F78
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FD0: .4byte gUnknown_3005E98
-_080A1FD4: .4byte ItemUseCB_Medicine
- thumb_func_end BattleUseFunc_OpenPartyMenu
-
- thumb_func_start sub_80A1FD8
-sub_80A1FD8: @ 80A1FD8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1FEC @ =gUnknown_3005E98
- ldr r1, _080A1FF0 @ =sub_8126894
- str r1, [r2]
- bl sub_80A1F78
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FEC: .4byte gUnknown_3005E98
-_080A1FF0: .4byte sub_8126894
- thumb_func_end sub_80A1FD8
-
- thumb_func_start BattleUseFunc_Ether
-BattleUseFunc_Ether: @ 80A1FF4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A2008 @ =gUnknown_3005E98
- ldr r1, _080A200C @ =sub_81256F8
- str r1, [r2]
- bl sub_80A1F78
- pop {r0}
- bx r0
- .align 2, 0
-_080A2008: .4byte gUnknown_3005E98
-_080A200C: .4byte sub_81256F8
- thumb_func_end BattleUseFunc_Ether
-
- thumb_func_start BattleUseFunc_PokeDoll
-BattleUseFunc_PokeDoll: @ 80A2010
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A2044 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080A2058
- bl sub_80A1A44
- ldr r0, _080A2048 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A204C @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r2, _080A2050 @ =gStringVar4
- ldr r3, _080A2054 @ =sub_8108B50
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageInBag
- b _080A2060
- .align 2, 0
-_080A2044: .4byte gBattleTypeFlags
-_080A2048: .4byte gSpecialVar_ItemId
-_080A204C: .4byte 0x0000ffff
-_080A2050: .4byte gStringVar4
-_080A2054: .4byte sub_8108B50
-_080A2058:
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A1110
-_080A2060:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleUseFunc_PokeDoll
-
- thumb_func_start ItemUseOutOfBattle_EnigmaBerry
-ItemUseOutOfBattle_EnigmaBerry: @ 80A2068
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A208C @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x14
- bls _080A2082
- b _080A2174
-_080A2082:
- lsls r0, 2
- ldr r1, _080A2090 @ =_080A2094
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A208C: .4byte gSpecialVar_ItemId
-_080A2090: .4byte _080A2094
- .align 2, 0
-_080A2094:
- .4byte _080A2120
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A2174
- .4byte _080A2174
- .4byte _080A2104
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A2174
- .4byte _080A213C
- .4byte _080A213C
- .4byte _080A2158
-_080A20E8:
- ldr r0, _080A2100 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl FieldUseFunc_OpenPartyMenu
- b _080A2188
- .align 2, 0
-_080A2100: .4byte gTasks
-_080A2104:
- ldr r0, _080A211C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl FieldUseFunc_SacredAsh
- b _080A2188
- .align 2, 0
-_080A211C: .4byte gTasks
-_080A2120:
- ldr r0, _080A2138 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl FieldUseFunc_RareCandy
- b _080A2188
- .align 2, 0
-_080A2138: .4byte gTasks
-_080A213C:
- ldr r0, _080A2154 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl FieldUseFunc_PpUp
- b _080A2188
- .align 2, 0
-_080A2154: .4byte gTasks
-_080A2158:
- ldr r0, _080A2170 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl FieldUseFunc_Ether
- b _080A2188
- .align 2, 0
-_080A2170: .4byte gTasks
-_080A2174:
- ldr r0, _080A2190 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x4
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl FieldUseFunc_OakStopsYou
-_080A2188:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2190: .4byte gTasks
- thumb_func_end ItemUseOutOfBattle_EnigmaBerry
-
- thumb_func_start ItemUseInBattle_EnigmaBerry
-ItemUseInBattle_EnigmaBerry: @ 80A2194
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A21B4 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x15
- bhi _080A222C
- lsls r0, 2
- ldr r1, _080A21B8 @ =_080A21BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A21B4: .4byte gSpecialVar_ItemId
-_080A21B8: .4byte _080A21BC
- .align 2, 0
-_080A21BC:
- .4byte _080A2214
- .4byte _080A222C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A222C
- .4byte _080A221C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A2224
-_080A2214:
- adds r0, r4, 0
- bl BattleUseFunc_GuardSpec
- b _080A2232
-_080A221C:
- adds r0, r4, 0
- bl BattleUseFunc_OpenPartyMenu
- b _080A2232
-_080A2224:
- adds r0, r4, 0
- bl BattleUseFunc_Ether
- b _080A2232
-_080A222C:
- adds r0, r4, 0
- bl FieldUseFunc_OakStopsYou
-_080A2232:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ItemUseInBattle_EnigmaBerry
-
- thumb_func_start FieldUseFunc_OakStopsYou
-FieldUseFunc_OakStopsYou: @ 80A2238
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080A2268 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _080A2278
- ldr r4, _080A226C @ =gStringVar4
- ldr r1, _080A2270 @ =gUnknown_8416425
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r3, _080A2274 @ =sub_813E2B8
- adds r0, r5, 0
- movs r1, 0x4
- adds r2, r4, 0
- bl sub_813EB20
- b _080A228A
- .align 2, 0
-_080A2268: .4byte gSpecialVar_ItemId
-_080A226C: .4byte gStringVar4
-_080A2270: .4byte gUnknown_8416425
-_080A2274: .4byte sub_813E2B8
-_080A2278:
- ldr r0, _080A2290 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r5, 0
- bl sub_80A1110
-_080A228A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2290: .4byte gTasks
- thumb_func_end FieldUseFunc_OakStopsYou
-
- thumb_func_start ItemUse_SetQuestLogEvent
-ItemUse_SetQuestLogEvent: @ 80A2294
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r1, 0
- adds r4, r2, 0
- adds r5, r3, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0x8
- bl Alloc
- adds r6, r0, 0
- strh r4, [r6]
- strh r5, [r6, 0x6]
- cmp r7, 0
- beq _080A22C8
- adds r0, r7, 0
- movs r1, 0x41
- bl GetMonData
- b _080A22CA
-_080A22C8:
- ldr r0, _080A22E4 @ =0x0000ffff
-_080A22CA:
- strh r0, [r6, 0x4]
- mov r0, r8
- adds r1, r6, 0
- bl sub_8113550
- adds r0, r6, 0
- bl Free
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A22E4: .4byte 0x0000ffff
- thumb_func_end ItemUse_SetQuestLogEvent
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index be6521bdb..5a55f9f5b 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -12617,7 +12617,7 @@ sub_8124DB0: @ 8124DB0
movs r0, 0x6
movs r1, 0
movs r2, 0xFF
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
thumb_func_end sub_8124DB0
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 358eb7283..9dc9fbab6 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -911,14 +911,14 @@ _0806F498:
bl PlayRainStoppingSoundEffect
bl sub_806EF18
bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F4B0 @ =UseFameCheckerFromMenu
+ ldr r0, _0806F4B0 @ =ReturnToBagFromKeyItem
bl SetMainCallback2
movs r0, 0x1
_0806F4AC:
pop {r1}
bx r1
.align 2, 0
-_0806F4B0: .4byte UseFameCheckerFromMenu
+_0806F4B0: .4byte ReturnToBagFromKeyItem
thumb_func_end sub_806F480
thumb_func_start sub_806F4B4
diff --git a/include/berry_pouch.h b/include/berry_pouch.h
index 8427afc7e..7c2bbb5cd 100644
--- a/include/berry_pouch.h
+++ b/include/berry_pouch.h
@@ -1,7 +1,12 @@
#ifndef GUARD_BERRY_POUCH_H
#define GUARD_BERRY_POUCH_H
+#include "task.h"
+
void sub_813D808(u8 taskId);
void sub_813D934(void (*)(void));
+void InitBerryPouch(u8, void (*)(void), u8);
+void sub_813EB20(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc);
+void sub_813E2B8(u8 taskId);
#endif //GUARD_BERRY_POUCH_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 98ec3e47e..209e68aee 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1,6 +1,10 @@
#ifndef GUARD_CONSTANTS_FLAGS_H
#define GUARD_CONSTANTS_FLAGS_H
+// Sys Flags Maybe
+#define FLAG_WHITE_FLUTE_ACTIVE 0x803
+#define FLAG_BLACK_FLUTE_ACTIVE 0x804
+
// World Map Flags
#define FLAG_WORLD_MAP_PALLET_TOWN 0x890
#define FLAG_WORLD_MAP_VIRIDIAN_CITY 0x891
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 38c47c965..989b27387 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -35,8 +35,8 @@
#define VAR_0x401D 0x401D
#define VAR_0x401E 0x401E
#define VAR_0x401F 0x401F
-#define VAR_RECYCLE_GOODS 0x4020
-#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_REPEL_STEP_COUNT 0x4020
+#define VAR_0x4021 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
#define VAR_0x4023 0x4023
#define VAR_MIRAGE_RND_H 0x4024
diff --git a/include/field_effect.h b/include/field_effect.h
index 979037a8e..426f77510 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -82,5 +82,6 @@ bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
void CreateTeleportFieldEffectTask(void);
void FieldEffectActiveListRemove(u8 id);
+void sub_8085620(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_specials.h b/include/field_specials.h
index c1bc8e8c9..a12fee575 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -7,5 +7,6 @@ u8 GetLeadMonIndex(void);
u8 CountDigits(u16 number);
void TV_PrintIntToStringVar(u8, int);
u16 ScrSpecial_GetStarter(void);
+void sub_80CCB68(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index e8ccfcbd9..cfe55769d 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -27,12 +27,15 @@ void sub_81AAC50(void);
void sub_81AAC70(void);
void sub_8108CF0(void);
void sub_810B108(u8);
-void UseFameCheckerFromMenu(void);
+void ReturnToBagFromKeyItem(void);
void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2);
void sub_8108B50(u8 taskId);
void sub_8108CB4(void);
void sub_8108EE0(void (*)(void));
void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc);
void sub_810A1F8(u8 taskId);
+void sub_8107ECC(void);
+void sub_8108DC8(u8 pocketId);
+void sub_81089F4(u8 pocketId);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_use.h b/include/item_use.h
index d8356d7c1..0a45762f7 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -12,7 +12,7 @@ void FieldUseFunc_OldRod(u8 taskId);
void FieldUseFunc_CoinCase(u8 taskId);
void FieldUseFunc_PowderJar(u8 taskId);
void FieldUseFunc_PokeFlute(u8 taskId);
-void FieldUseFunc_OpenPartyMenu(u8 taskId);
+void FieldUseFunc_Medicine(u8 taskId);
void FieldUseFunc_Ether(u8 taskId);
void FieldUseFunc_PpUp(u8 taskId);
void FieldUseFunc_RareCandy(u8 taskId);
@@ -27,10 +27,10 @@ void FieldUseFunc_BlackFlute(u8 taskId);
void FieldUseFunc_TownMap(u8 taskId);
void FieldUseFunc_FameChecker(u8 taskId);
void FieldUseFunc_VsSeeker(u8 taskId);
-void BattleUseFunc_MasterBall(u8 taskId);
+void BattleUseFunc_PokeBallEtc(u8 taskId);
void BattleUseFunc_PokeFlute(u8 taskId);
void BattleUseFunc_GuardSpec(u8 taskId);
-void BattleUseFunc_OpenPartyMenu(u8 taskId);
+void BattleUseFunc_Medicine(u8 taskId);
void BattleUseFunc_Ether(u8 taskId);
void BattleUseFunc_PokeDoll(u8 taskId);
void FieldUseFunc_OakStopsYou(u8 taskId);
diff --git a/include/itemfinder.h b/include/itemfinder.h
new file mode 100644
index 000000000..2b882b144
--- /dev/null
+++ b/include/itemfinder.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_ITEMFINDER_H
+#define GUARD_ITEMFINDER_H
+
+void sub_813EC8C(u8 taskId);
+
+#endif //GUARD_ITEMFINDER_H
diff --git a/include/mail.h b/include/mail.h
index 8cfca66dd..9ffccbb5b 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -21,6 +21,6 @@ bool8 MonHasMail(struct Pokemon *mon);
void TakeMailFromMon(struct Pokemon *mon);
u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
void ClearMailStruct(struct MailStruct *mail);
-void sub_80BEBEC(u16 *, void (*)(void), u8);
+void sub_80BEBEC(struct MailStruct * mail, void (* callback)(void), u8 a2);
#endif // GUARD_MAIL_H
diff --git a/include/overworld.h b/include/overworld.h
index 122d73736..ab77542c2 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -115,5 +115,6 @@ void sub_8055DC4(void);
bool8 sub_8055FC4(void);
bool8 is_light_level_8_or_9(u8 mapType);
bool32 sub_8055C9C(void);
+void sub_8054D70(void);
#endif //GUARD_ROM4_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 527147296..5b40a945a 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -52,5 +52,14 @@ void GetMonNickname(const struct Pokemon * mon, u8 * dest);
void sub_81202F8(const u8 * src, u8 a1);
bool8 sub_8120370(void);
void PartyMenuInit(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback);
+void sub_81252D0(u8 taskId, TaskFunc followUpFunc);
+void sub_81256F8(u8 taskId, TaskFunc followUpFunc);
+void dp05_pp_up(u8 taskId, TaskFunc followUpFunc);
+void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc);
+void sub_8126B60(u8 taskId, TaskFunc followUpFunc);
+void sub_8126894(u8 taskId, TaskFunc followUpFunc);
+void sub_81279E0(void);
+void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc);
+u8 GetItemEffectType(u16 itemId);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokemon.h b/include/pokemon.h
index a6dd9931b..ec828131b 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -678,4 +678,6 @@ u8 GetMonsStateToDoubles(void);
void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src);
void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition);
+const u8 * sub_8042DA4(u16 itemId);
+
#endif // GUARD_POKEMON_H
diff --git a/include/region_map.h b/include/region_map.h
index ea8a8130e..394fee469 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -95,5 +95,6 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
void sub_80C4DF8(u8 *, u8);
+void sub_80BFF50(u8 a0, void (*a1)(void));
#endif //GUARD_REGION_MAP_H
diff --git a/include/strings.h b/include/strings.h
index 23562d4b9..1aa858e82 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -164,10 +164,16 @@ extern const u8 gText_ReturnToPC[];
extern const u8 gUnknown_8416425[];
extern const u8 gUnknown_8416451[];
extern const u8 gUnknown_8416537[];
+extern const u8 gUnknown_841658C[];
+extern const u8 gUnknown_841659E[];
+extern const u8 gUnknown_84165D2[];
+extern const u8 gUnknown_8416600[];
+extern const u8 gUnknown_8416631[];
extern const u8 gUnknown_8416644[];
extern const u8 gUnknown_841665C[];
extern const u8 gUnknown_8416690[];
extern const u8 gUnknown_84166A7[];
+extern const u8 gUnknown_84169DC[];
extern const u8 gUnknown_84162BD[];
diff --git a/ld_script.txt b/ld_script.txt
index 62ac8c008..9556fb8fd 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -154,7 +154,6 @@ SECTIONS {
asm/field_special_scene.o(.text);
asm/safari_zone.o(.text);
src/item_use.o(.text);
- asm/item_use.o(.text);
asm/battle_anim_effects_1.o(.text);
asm/battle_anim_effects_2.o(.text);
asm/water.o(.text);
diff --git a/src/data/items.json b/src/data/items.json
index 8d176df3d..b976e4c3e 100644
--- a/src/data/items.json
+++ b/src/data/items.json
@@ -29,7 +29,7 @@
"type": 0,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 0
},
{
@@ -45,7 +45,7 @@
"type": 1,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 1
},
{
@@ -61,7 +61,7 @@
"type": 2,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 2
},
{
@@ -77,7 +77,7 @@
"type": 3,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 3
},
{
@@ -93,7 +93,7 @@
"type": 4,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 4
},
{
@@ -109,7 +109,7 @@
"type": 5,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 5
},
{
@@ -125,7 +125,7 @@
"type": 6,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 6
},
{
@@ -141,7 +141,7 @@
"type": 7,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 7
},
{
@@ -157,7 +157,7 @@
"type": 8,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 8
},
{
@@ -173,7 +173,7 @@
"type": 9,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 9
},
{
@@ -189,7 +189,7 @@
"type": 10,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 10
},
{
@@ -205,7 +205,7 @@
"type": 11,
"fieldUseFunc": "NULL",
"battleUsage": 2,
- "battleUseFunc": "BattleUseFunc_MasterBall",
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
"secondaryId": 11
},
{
@@ -219,9 +219,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -235,9 +235,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -251,9 +251,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -267,9 +267,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -283,9 +283,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -299,9 +299,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -315,9 +315,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -331,9 +331,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -347,9 +347,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -363,9 +363,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -379,9 +379,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -395,9 +395,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -411,9 +411,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -427,9 +427,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -443,9 +443,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -459,9 +459,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -475,9 +475,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -491,9 +491,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -507,9 +507,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -523,9 +523,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -539,9 +539,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -619,9 +619,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -635,9 +635,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -653,7 +653,7 @@
"type": 1,
"fieldUseFunc": "FieldUseFunc_OakStopsYou",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -669,7 +669,7 @@
"type": 1,
"fieldUseFunc": "FieldUseFunc_OakStopsYou",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -715,9 +715,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -1019,7 +1019,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1035,7 +1035,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1051,7 +1051,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1067,7 +1067,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1083,7 +1083,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1131,7 +1131,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -2139,9 +2139,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2155,9 +2155,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2171,9 +2171,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2187,9 +2187,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2203,9 +2203,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2235,9 +2235,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2253,7 +2253,7 @@
"type": 4,
"fieldUseFunc": "FieldUseFunc_OakStopsYou",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2267,9 +2267,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
@@ -2283,9 +2283,9 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_BERRY_POUCH",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_OpenPartyMenu",
+ "fieldUseFunc": "FieldUseFunc_Medicine",
"battleUsage": 1,
- "battleUseFunc": "BattleUseFunc_OpenPartyMenu",
+ "battleUseFunc": "BattleUseFunc_Medicine",
"secondaryId": 0
},
{
diff --git a/src/fame_checker.c b/src/fame_checker.c
index b3988d156..bf99bdf56 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -552,7 +552,7 @@ static void Task_TopMenuHandleInput(u8 taskId)
if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF)
{
RunTextPrinters();
- if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu)
+ if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != ReturnToBagFromKeyItem)
task->func = Task_StartToCloseFameChecker;
else if (JOY_NEW(START_BUTTON))
{
diff --git a/src/item_use.c b/src/item_use.c
index 5ce0792de..5413a600f 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -1,31 +1,45 @@
#include "global.h"
+#include "battle.h"
#include "berry_pouch.h"
#include "berry_powder.h"
#include "bike.h"
#include "coins.h"
#include "event_data.h"
+#include "field_effect.h"
#include "field_fadetransition.h"
#include "field_map_obj_helpers.h"
#include "field_player_avatar.h"
+#include "field_specials.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "item.h"
#include "item_menu.h"
#include "item_use.h"
+#include "itemfinder.h"
#include "mail.h"
+#include "main.h"
+#include "malloc.h"
#include "map_obj_80688E4.h"
#include "map_obj_lock.h"
#include "metatile_behavior.h"
#include "new_menu_helpers.h"
#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "quest_log.h"
+#include "region_map.h"
#include "script.h"
#include "sound.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
+#include "teachy_tv.h"
+#include "tm_case.h"
+#include "vs_seeker.h"
#include "constants/fanfares.h"
#include "constants/flags.h"
#include "constants/items.h"
+#include "constants/maps.h"
#include "constants/moves.h"
#include "constants/songs.h"
@@ -43,7 +57,24 @@ void ItemUseOnFieldCB_Rod(u8 taskId);
void FieldUseFunc_EvoItem(u8 taskId);
void sub_80A1648(u8 taskId);
void sub_80A1674(u8 taskId);
-void sub_813EC8C(u8 taskId);
+void InitTMCaseFromBag(void);
+void Task_InitTMCaseFromField(u8 taskId);
+void InitBerryPouchFromBag(void);
+void Task_InitBerryPouchFromField(u8 taskId);
+void InitBerryPouchFromBattle(void);
+void InitTeachyTvFromBag(void);
+void Task_InitTeachyTvFromField(u8 taskId);
+void sub_80A19E8(u8 taskId);
+void sub_80A1A44(void);
+void sub_80A1B48(u8 taskId);
+void sub_80A1C08(u8 taskId);
+void sub_80A1C44(u8 taskId);
+void sub_80A1CAC(void);
+void sub_80A1CC0(u8 taskId);
+void sub_80A1D58(void);
+void sub_80A1D68(u8 taskId);
+void sub_80A1EF4(u8 taskId);
+void sub_80A1F48(u8 taskId);
extern void (*const gUnknown_83E2954[])(void);
@@ -158,10 +189,10 @@ void FieldUseFunc_OrangeMail(u8 taskId)
void sub_80A1208(void)
{
- u16 buffer[18];
+ struct MailStruct mail;
- buffer[16] = gSpecialVar_ItemId;
- sub_80BEBEC(buffer, UseFameCheckerFromMenu, 0);
+ mail.itemId = gSpecialVar_ItemId;
+ sub_80BEBEC(&mail, ReturnToBagFromKeyItem, 0);
}
void FieldUseFunc_MachBike(u8 taskId)
@@ -320,3 +351,530 @@ void sub_80A16D0(u8 taskId)
{
sub_80A0FBC(taskId);
}
+
+void FieldUseFunc_Medicine(u8 taskId)
+{
+ gUnknown_3005E98 = sub_81252D0;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_Ether(u8 taskId)
+{
+ gUnknown_3005E98 = sub_81256F8;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_PpUp(u8 taskId)
+{
+ gUnknown_3005E98 = dp05_pp_up;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_RareCandy(u8 taskId)
+{
+ gUnknown_3005E98 = dp05_rare_candy;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_EvoItem(u8 taskId)
+{
+ gUnknown_3005E98 = sub_8126B60;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_SacredAsh(u8 taskId)
+{
+ gUnknown_3005E98 = sub_8126894;
+ sub_80A0FBC(taskId);
+}
+
+void FieldUseFunc_TmCase(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ sub_8108EE0(InitTMCaseFromBag);
+ sub_8108B50(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_InitTMCaseFromField;
+ }
+}
+
+void InitTMCaseFromBag(void)
+{
+ InitTMCase(0, ReturnToBagFromKeyItem, 0);
+}
+
+void Task_InitTMCaseFromField(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ InitTMCase(0, CB2_ReturnToField, 1);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_BerryPouch(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ sub_8108EE0(InitBerryPouchFromBag);
+ sub_8108B50(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_InitBerryPouchFromField;
+ }
+}
+
+void InitBerryPouchFromBag(void)
+{
+ InitBerryPouch(0, ReturnToBagFromKeyItem, 0);
+}
+
+void Task_InitBerryPouchFromField(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ InitBerryPouch(0, CB2_ReturnToField, 1);
+ DestroyTask(taskId);
+ }
+}
+
+void BattleUseFunc_BerryPouch(u8 taskId)
+{
+ sub_8108EE0(InitBerryPouchFromBattle);
+ sub_8108B50(taskId);
+}
+
+void InitBerryPouchFromBattle(void)
+{
+ InitBerryPouch(4, sub_8107ECC, 0);
+}
+
+void FieldUseFunc_TeachyTv(u8 taskId)
+{
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ {
+ sub_8108EE0(InitTeachyTvFromBag);
+ sub_8108B50(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_InitTeachyTvFromField;
+ }
+}
+
+void InitTeachyTvFromBag(void)
+{
+ InitTeachyTvController(0, ReturnToBagFromKeyItem);
+}
+
+void Task_InitTeachyTvFromField(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ InitTeachyTvController(0, CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_SuperRepel(u8 taskId)
+{
+ if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
+ {
+ PlaySE(SE_RU_GASYAN);
+ gTasks[taskId].func = sub_80A19E8;
+ }
+ else
+ // An earlier repel is still in effect
+ DisplayItemMessageInBag(taskId, 2, gUnknown_841659E, sub_810A1F8);
+}
+
+void sub_80A19E8(u8 taskId)
+{
+ if (!IsSEPlaying())
+ {
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
+ sub_80A1A44();
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ }
+}
+
+void sub_80A1A44(void)
+{
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ sub_8108DC8(ItemId_GetPocket(gSpecialVar_ItemId));
+ sub_81089F4(ItemId_GetPocket(gSpecialVar_ItemId));
+ CopyItemName(gSpecialVar_ItemId, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841658C);
+}
+
+void FieldUseFunc_BlackFlute(u8 taskId)
+{
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE)
+ {
+ FlagSet(FLAG_WHITE_FLUTE_ACTIVE);
+ FlagClear(FLAG_BLACK_FLUTE_ACTIVE);
+ CopyItemName(gSpecialVar_ItemId, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84165D2);
+ gTasks[taskId].func = sub_80A1B48;
+ gTasks[taskId].data[8] = 0;
+ }
+ else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE)
+ {
+ FlagSet(FLAG_BLACK_FLUTE_ACTIVE);
+ FlagClear(FLAG_WHITE_FLUTE_ACTIVE);
+ CopyItemName(gSpecialVar_ItemId, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416600);
+ gTasks[taskId].func = sub_80A1B48;
+ gTasks[taskId].data[8] = 0;
+ }
+}
+
+void sub_80A1B48(u8 taskId)
+{
+ if (++gTasks[taskId].data[8] > 7)
+ {
+ PlaySE(SE_PN_ON);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ }
+}
+
+bool8 sub_80A1B8C(void)
+{
+ if (gMapHeader.escapeRope & 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void ItemUseOutOfBattle_EscapeRope(u8 taskId)
+{
+ if (sub_80A1B8C() == TRUE)
+ {
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, gMapHeader.regionMapSectionId);
+ sItemUseOnFieldCB = sub_80A1C08;
+ sub_80A103C(taskId);
+ }
+ else
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+}
+
+void sub_80A1C08(u8 taskId)
+{
+ sub_8054D70();
+ sub_80A1A44();
+ gTasks[taskId].data[0] = 0;
+ DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A1C44);
+}
+
+void sub_80A1C44(u8 taskId)
+{
+ ResetInitialPlayerAvatarState();
+ sub_8085620();
+ DestroyTask(taskId);
+}
+
+void FieldUseFunc_TownMap(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ sub_8108EE0(sub_80A1CAC);
+ sub_8108B50(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = sub_80A1CC0;
+ }
+}
+
+void sub_80A1CAC(void)
+{
+ sub_80BFF50(0, ReturnToBagFromKeyItem);
+}
+
+void sub_80A1CC0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ sub_80BFF50(0, CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_FameChecker(u8 taskId)
+{
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ {
+ sub_8108EE0(sub_80A1D58);
+ sub_8108B50(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = sub_80A1D68;
+ }
+}
+
+void sub_80A1D58(void)
+{
+ UseFameChecker(ReturnToBagFromKeyItem);
+}
+
+void sub_80A1D68(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ UseFameChecker(CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_VsSeeker(u8 taskId)
+{
+ if ((gMapHeader.mapType != MAP_TYPE_ROUTE
+ && gMapHeader.mapType != MAP_TYPE_TOWN
+ && gMapHeader.mapType != MAP_TYPE_CITY)
+ || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(VIRIDIAN_FOREST)
+ && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_FOREST)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(MT_EMBER_EXTERIOR)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(THREE_ISLAND_BERRY_FOREST)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SIX_ISLAND_PATTERN_BUSH))))
+ {
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+ }
+ else
+ {
+ sItemUseOnFieldCB = Task_VsSeeker_0;
+ sub_80A103C(taskId);
+ }
+}
+
+void sub_80A1E0C(u8 taskId)
+{
+ sub_80A112C(taskId);
+}
+
+void BattleUseFunc_PokeBallEtc(u8 taskId)
+{
+ if (!IsPlayerPartyAndPokemonStorageFull())
+ {
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ sub_8108CB4();
+ sub_8108B50(taskId);
+ }
+ else
+ {
+ DisplayItemMessageInBag(taskId, 2, gUnknown_8416631, sub_810A1F8);
+ }
+}
+
+void BattleUseFunc_PokeFlute(u8 taskId)
+{
+ sub_8108CB4();
+ sub_8108B50(taskId);
+}
+
+void BattleUseFunc_GuardSpec(u8 taskId)
+{
+ if (ExecuteTableBasedItemEffect(&gPlayerParty[gBattlerPartyIndexes[gBattlerInMenuId]], gSpecialVar_ItemId, gBattlerPartyIndexes[gBattlerInMenuId], 0))
+ {
+ DisplayItemMessageInBag(taskId, 2, gUnknown_84169DC, sub_810A1F8);
+ }
+ else
+ {
+ gTasks[taskId].data[8] = 0;
+ gTasks[taskId].func = sub_80A1EF4;
+ }
+}
+
+void sub_80A1EF4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (++data[8] > 7)
+ {
+ u16 itemId = gSpecialVar_ItemId;
+ PlaySE(SE_KAIFUKU);
+ RemoveBagItem(itemId, 1);
+ DisplayItemMessageInBag(taskId, 2, sub_8042DA4(itemId), sub_80A1F48);
+ }
+}
+
+void sub_80A1F48(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ sub_8108CB4();
+ sub_8108B50(taskId);
+ }
+}
+
+void sub_80A1F78(u8 taskId)
+{
+ if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
+ {
+ sub_813D934(sub_81279E0);
+ sub_813D808(taskId);
+ }
+ else
+ {
+ sub_8108EE0(sub_81279E0);
+ sub_8108B50(taskId);
+ }
+}
+
+void BattleUseFunc_Medicine(u8 taskId)
+{
+ gUnknown_3005E98 = ItemUseCB_Medicine;
+ sub_80A1F78(taskId);
+}
+
+void sub_80A1FD8(u8 taskId)
+{
+ gUnknown_3005E98 = sub_8126894;
+ sub_80A1F78(taskId);
+}
+
+void BattleUseFunc_Ether(u8 taskId)
+{
+ gUnknown_3005E98 = sub_81256F8;
+ sub_80A1F78(taskId);
+}
+
+void BattleUseFunc_PokeDoll(u8 taskId)
+{
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
+ {
+ sub_80A1A44();
+ ItemUse_SetQuestLogEvent(4, 0, gSpecialVar_ItemId, 0xFFFF);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_8108B50);
+ }
+ else
+ sub_80A1110(taskId, 0);
+}
+
+void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
+{
+ switch (GetItemEffectType(gSpecialVar_ItemId) - 1)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_Medicine(taskId);
+ break;
+ case 9:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_SacredAsh(taskId);
+ break;
+ case 0:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_RareCandy(taskId);
+ break;
+ case 18:
+ case 19:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_PpUp(taskId);
+ break;
+ case 20:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_Ether(taskId);
+ break;
+ default:
+ gTasks[taskId].data[4] = 4;
+ FieldUseFunc_OakStopsYou(taskId);
+ }
+}
+
+void ItemUseInBattle_EnigmaBerry(u8 taskId)
+{
+ switch (GetItemEffectType(gSpecialVar_ItemId))
+ {
+ case 0:
+ BattleUseFunc_GuardSpec(taskId);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 11:
+ BattleUseFunc_Medicine(taskId);
+ break;
+ case 21:
+ BattleUseFunc_Ether(taskId);
+ break;
+ default:
+ FieldUseFunc_OakStopsYou(taskId);
+ }
+}
+
+void FieldUseFunc_OakStopsYou(u8 taskId)
+{
+ if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416425);
+ sub_813EB20(taskId, 4, gStringVar4, sub_813E2B8);
+ }
+ else
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+}
+
+void ItemUse_SetQuestLogEvent(u8 eventId, struct Pokemon * pokemon, u16 itemId, u16 param)
+{
+ struct UnkStruct_ItemUseQuestLog
+ {
+ u16 itemId;
+ u16 unk2;
+ u16 species;
+ u16 param;
+ } * questLog = Alloc(sizeof(*questLog));
+
+ questLog->itemId = itemId;
+ questLog->param = param;
+ if (pokemon != NULL)
+ questLog->species = GetMonData(pokemon, MON_DATA_SPECIES2);
+ else
+ questLog->species = 0xFFFF;
+ sub_8113550(eventId, (void *)questLog);
+ Free(questLog);
+}
diff --git a/src/pokemon.c b/src/pokemon.c
index 3a9fdbf04..75250565a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -4526,7 +4526,7 @@ void sub_8042D50(int stat)
BattleStringExpandPlaceholdersToDisplayedString(BattleText_UnknownString3);
}
-u8 *sub_8042DA4(u16 itemId)
+const u8 *sub_8042DA4(u16 itemId)
{
int i;
const u8 *itemEffect;
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index 711a7f765..efffe2840 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -736,7 +736,7 @@ static void TeachyTvOptionListController(u8 taskId)
{
input = ListMenuHandleInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
- if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != UseFameCheckerFromMenu))
+ if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem))
{
PlaySE(SE_SELECT);
TeachyTvQuitBeginFade(taskId);