summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-06-20 11:02:09 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-06-20 11:02:09 -0400
commit12f3ceb0f7fb0ed580fa75bbba634307ca463d52 (patch)
tree0ef3542851d2a62a794adf390c5f1b1b1c7cc56a
parent164dd43a62f212132f02f1965c51a2ac52c49e4f (diff)
item_use: through sub_80A16D0
-rw-r--r--asm/berry_crush_2.s2
-rw-r--r--asm/item_menu.s26
-rw-r--r--asm/item_use.s322
-rw-r--r--asm/party_menu.s4
-rw-r--r--asm/pokemon_special_anim.s2
-rw-r--r--include/berry_powder.h6
-rw-r--r--include/constants/fanfares.h22
-rw-r--r--include/item_menu.h3
-rw-r--r--include/item_use.h2
-rw-r--r--include/strings.h5
-rw-r--r--ld_script.txt2
-rw-r--r--src/berry_powder.c (renamed from src/unk_815EDDC.c)6
-rw-r--r--src/data/items.json12
-rw-r--r--src/item_use.c88
-rw-r--r--sym_ewram.txt2
15 files changed, 158 insertions, 346 deletions
diff --git a/asm/berry_crush_2.s b/asm/berry_crush_2.s
index f5c170bdc..172724d0f 100644
--- a/asm/berry_crush_2.s
+++ b/asm/berry_crush_2.s
@@ -2758,7 +2758,7 @@ _0814D03C:
movs r3, 0x6
bl ConvertIntToDecimalStringN
ldr r4, _0814D080 @ =gStringVar2
- bl sub_815EFA0
+ bl GetBerryPowder
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 82ddfdae4..1db1f73b8 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -2150,8 +2150,8 @@ _08108E58:
bx r0
thumb_func_end sub_8108E54
- thumb_func_start sub_8108E70
-sub_8108E70: @ 8108E70
+ thumb_func_start DisplayItemMessageInBag
+DisplayItemMessageInBag: @ 8108E70
push {r4-r6,lr}
mov r6, r9
mov r5, r8
@@ -2202,7 +2202,7 @@ sub_8108E70: @ 8108E70
bx r0
.align 2, 0
_08108EDC: .4byte gTasks+0x8
- thumb_func_end sub_8108E70
+ thumb_func_end DisplayItemMessageInBag
thumb_func_start sub_8108EE0
sub_8108EE0: @ 8108EE0
@@ -4376,7 +4376,7 @@ sub_810A0A8: @ 810A0A8
ldr r3, _0810A11C @ =sub_810A1D0
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A166
.align 2, 0
_0810A110: .4byte gTasks+0x8
@@ -4430,7 +4430,7 @@ sub_810A170: @ 810A170
ldr r2, _0810A184 @ =gText_ThereIsNoPokemon
ldr r3, _0810A188 @ =sub_810A1D0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r0}
bx r0
.align 2, 0
@@ -4456,7 +4456,7 @@ sub_810A18C: @ 810A18C
adds r0, r4, 0
movs r1, 0x2
adds r2, r5, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r4,r5}
pop {r0}
bx r0
@@ -4697,7 +4697,7 @@ sub_810A370: @ 810A370
ldr r3, _0810A3C8 @ =sub_810A1D0
adds r0, r5, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A426
.align 2, 0
_0810A3BC: .4byte gTasks+0x8
@@ -4826,7 +4826,7 @@ sub_810A468: @ 810A468
ldr r3, _0810A4C0 @ =sub_810A1D0
adds r0, r5, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A51E
.align 2, 0
_0810A4B4: .4byte gTasks+0x8
@@ -4981,7 +4981,7 @@ _0810A5B4:
ldr r3, _0810A5F4 @ =sub_810A1F8
adds r0, r5, 0
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A63E
.align 2, 0
_0810A5E8: .4byte gStringVar1
@@ -5019,7 +5019,7 @@ _0810A618:
ldr r3, _0810A650 @ =sub_810A770
adds r0, r7, 0
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_0810A63E:
pop {r4-r7}
pop {r0}
@@ -5112,7 +5112,7 @@ sub_810A690: @ 810A690
ldr r3, _0810A708 @ =sub_810A70C
adds r0, r5, 0
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r4-r6}
pop {r0}
bx r0
@@ -5426,7 +5426,7 @@ sub_810A940: @ 810A940
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r4-r6}
pop {r0}
bx r0
@@ -5803,7 +5803,7 @@ _0810ACEC:
ldr r3, _0810AD0C @ =sub_810A1D0
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_0810ACF8:
add sp, 0x14
pop {r3,r4}
diff --git a/asm/item_use.s b/asm/item_use.s
index 669eba852..e6b649da8 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -5,308 +5,6 @@
.text
- thumb_func_start FieldUseFunc_CoinCase
-FieldUseFunc_CoinCase: @ 80A1460
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080A14B4 @ =gStringVar1
- bl GetCoins
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r4, _080A14B8 @ =gStringVar4
- ldr r1, _080A14BC @ =gUnknown_8416537
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _080A14C0 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A14C4 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r1, _080A14C8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A14D0
- ldr r3, _080A14CC @ =sub_810A1F8
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl sub_8108E70
- b _080A14DC
- .align 2, 0
-_080A14B4: .4byte gStringVar1
-_080A14B8: .4byte gStringVar4
-_080A14BC: .4byte gUnknown_8416537
-_080A14C0: .4byte gSpecialVar_ItemId
-_080A14C4: .4byte 0x0000ffff
-_080A14C8: .4byte gTasks
-_080A14CC: .4byte sub_810A1F8
-_080A14D0:
- ldr r3, _080A14E4 @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageOnField
-_080A14DC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A14E4: .4byte sub_80A112C
- thumb_func_end FieldUseFunc_CoinCase
-
- thumb_func_start FieldUseFunc_PowderJar
-FieldUseFunc_PowderJar: @ 80A14E8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080A1538 @ =gStringVar1
- bl sub_815EFA0
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r4, _080A153C @ =gStringVar4
- ldr r1, _080A1540 @ =gUnknown_8416644
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _080A1544 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A1548 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r1, _080A154C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A1554
- ldr r3, _080A1550 @ =sub_810A1F8
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl sub_8108E70
- b _080A1560
- .align 2, 0
-_080A1538: .4byte gStringVar1
-_080A153C: .4byte gStringVar4
-_080A1540: .4byte gUnknown_8416644
-_080A1544: .4byte gSpecialVar_ItemId
-_080A1548: .4byte 0x0000ffff
-_080A154C: .4byte gTasks
-_080A1550: .4byte sub_810A1F8
-_080A1554:
- ldr r3, _080A1568 @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageOnField
-_080A1560:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1568: .4byte sub_80A112C
- thumb_func_end FieldUseFunc_PowderJar
-
- thumb_func_start FieldUseFunc_PokeFlute
-FieldUseFunc_PokeFlute: @ 80A156C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- movs r4, 0
- b _080A1598
-_080A1578:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080A15D0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x11
- adds r2, r4, 0
- movs r3, 0
- bl ExecuteTableBasedItemEffect
- lsls r0, 24
- cmp r0, 0
- bne _080A1592
- movs r6, 0x1
-_080A1592:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080A1598:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _080A1578
- cmp r6, 0
- beq _080A1600
- ldr r0, _080A15D4 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A15D8 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl ItemUse_SetQuestLogEvent
- ldr r1, _080A15DC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A15E8
- ldr r2, _080A15E0 @ =gUnknown_8416690
- ldr r3, _080A15E4 @ =sub_80A1648
- b _080A1616
- .align 2, 0
-_080A15D0: .4byte gPlayerParty
-_080A15D4: .4byte gSpecialVar_ItemId
-_080A15D8: .4byte 0x0000ffff
-_080A15DC: .4byte gTasks
-_080A15E0: .4byte gUnknown_8416690
-_080A15E4: .4byte sub_80A1648
-_080A15E8:
- ldr r2, _080A15F8 @ =gUnknown_8416690
- ldr r3, _080A15FC @ =sub_80A1648
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- b _080A1638
- .align 2, 0
-_080A15F8: .4byte gUnknown_8416690
-_080A15FC: .4byte sub_80A1648
-_080A1600:
- ldr r0, _080A1620 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080A162C
- ldr r2, _080A1624 @ =gUnknown_841665C
- ldr r3, _080A1628 @ =sub_810A1F8
-_080A1616:
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8108E70
- b _080A1638
- .align 2, 0
-_080A1620: .4byte gTasks
-_080A1624: .4byte gUnknown_841665C
-_080A1628: .4byte sub_810A1F8
-_080A162C:
- ldr r2, _080A1640 @ =gUnknown_841665C
- ldr r3, _080A1644 @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
-_080A1638:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1640: .4byte gUnknown_841665C
-_080A1644: .4byte sub_80A112C
- thumb_func_end FieldUseFunc_PokeFlute
-
- thumb_func_start sub_80A1648
-sub_80A1648: @ 80A1648
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xB
- bl PlayFanfareByFanfareNum
- ldr r1, _080A166C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A1670 @ =sub_80A1674
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A166C: .4byte gTasks
-_080A1670: .4byte sub_80A1674
- thumb_func_end sub_80A1648
-
- thumb_func_start sub_80A1674
-sub_80A1674: @ 80A1674
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- movs r0, 0
- bl WaitFanfare
- lsls r0, 24
- cmp r0, 0
- beq _080A16C0
- ldr r0, _080A16A8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080A16B4
- ldr r2, _080A16AC @ =gUnknown_84166A7
- ldr r3, _080A16B0 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8108E70
- b _080A16C0
- .align 2, 0
-_080A16A8: .4byte gTasks
-_080A16AC: .4byte gUnknown_84166A7
-_080A16B0: .4byte sub_810A1F8
-_080A16B4:
- ldr r2, _080A16C8 @ =gUnknown_84166A7
- ldr r3, _080A16CC @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
-_080A16C0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A16C8: .4byte gUnknown_84166A7
-_080A16CC: .4byte sub_80A112C
- thumb_func_end sub_80A1674
-
- thumb_func_start sub_80A16D0
-sub_80A16D0: @ 80A16D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A0FBC
- pop {r0}
- bx r0
- thumb_func_end sub_80A16D0
-
thumb_func_start FieldUseFunc_OpenPartyMenu
FieldUseFunc_OpenPartyMenu: @ 80A16E0
push {lr}
@@ -371,8 +69,8 @@ _080A1748: .4byte gUnknown_3005E98
_080A174C: .4byte dp05_rare_candy
thumb_func_end FieldUseFunc_RareCandy
- thumb_func_start FieldUseFunc_SunStone
-FieldUseFunc_SunStone: @ 80A1750
+ thumb_func_start FieldUseFunc_EvoItem
+FieldUseFunc_EvoItem: @ 80A1750
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -385,7 +83,7 @@ FieldUseFunc_SunStone: @ 80A1750
.align 2, 0
_080A1764: .4byte gUnknown_3005E98
_080A1768: .4byte sub_8126B60
- thumb_func_end FieldUseFunc_SunStone
+ thumb_func_end FieldUseFunc_EvoItem
thumb_func_start FieldUseFunc_SacredAsh
FieldUseFunc_SacredAsh: @ 80A176C
@@ -702,7 +400,7 @@ _080A19CC:
ldr r3, _080A19E4 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_080A19D8:
pop {r4}
pop {r0}
@@ -740,7 +438,7 @@ sub_80A19E8: @ 80A19E8
ldr r3, _080A1A40 @ =sub_810A1F8
adds r0, r6, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_080A1A2A:
pop {r4-r6}
pop {r0}
@@ -884,7 +582,7 @@ sub_80A1B48: @ 80A1B48
ldr r3, _080A1B88 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_080A1B78:
pop {r4}
pop {r0}
@@ -1254,7 +952,7 @@ _080A1E48:
ldr r3, _080A1E60 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_080A1E54:
pop {r4}
pop {r0}
@@ -1307,7 +1005,7 @@ BattleUseFunc_GuardSpec: @ 80A1E7C
ldr r3, _080A1ED0 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _080A1EE4
.align 2, 0
_080A1EBC: .4byte gBattlerPartyIndexes
@@ -1364,7 +1062,7 @@ sub_80A1EF4: @ 80A1EF4
ldr r3, _080A1F44 @ =sub_80A1F48
adds r0, r5, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_080A1F36:
pop {r4,r5}
pop {r0}
@@ -1505,7 +1203,7 @@ BattleUseFunc_PokeDoll: @ 80A2010
ldr r3, _080A2054 @ =sub_8108B50
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _080A2060
.align 2, 0
_080A2044: .4byte gBattleTypeFlags
diff --git a/asm/party_menu.s b/asm/party_menu.s
index d873fb9aa..be6521bdb 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -1274,7 +1274,7 @@ _0811F47C:
cmp r0, 0x3
bne _0811F492
adds r0, r4, 0
- bl sub_80A1150
+ bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -12644,7 +12644,7 @@ sub_8124DE0: @ 8124DE0
push {r4,lr}
ldr r4, _08124E0C @ =gSpecialVar_ItemId
ldrh r0, [r4]
- bl sub_80A1150
+ bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index 8a14c09c3..94d451a73 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -558,7 +558,7 @@ _0811C9AA:
adds r0, r4, 0
adds r0, 0x96
ldrh r0, [r0]
- bl sub_80A1150
+ bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
diff --git a/include/berry_powder.h b/include/berry_powder.h
new file mode 100644
index 000000000..89582aacc
--- /dev/null
+++ b/include/berry_powder.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_POWDER_H
+#define GUARD_BERRY_POWDER_H
+
+u32 GetBerryPowder(void);
+
+#endif //GUARD_BERRY_POWDER_H
diff --git a/include/constants/fanfares.h b/include/constants/fanfares.h
new file mode 100644
index 000000000..21d3af79c
--- /dev/null
+++ b/include/constants/fanfares.h
@@ -0,0 +1,22 @@
+#ifndef GUARD_CONSTANTS_FANFARES_H
+#define GUARD_CONSTANTS_FANFARES_H
+
+enum Fanfares
+{
+ FANFARE_00,
+ FANFARE_01,
+ FANFARE_02,
+ FANFARE_03,
+ FANFARE_04,
+ FANFARE_05,
+ FANFARE_06,
+ FANFARE_07,
+ FANFARE_08,
+ FANFARE_09,
+ FANFARE_10,
+ FANFARE_POKEFLUTE,
+ FANFARE_KEY_ITEM,
+ FANFARE_DEX_EVAL
+};
+
+#endif //GUARD_CONSTANTS_FANFARES_H
diff --git a/include/item_menu.h b/include/item_menu.h
index b4815d164..e8ccfcbd9 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -2,6 +2,7 @@
#define GUARD_ITEM_MENU_H
#include "global.h"
+#include "task.h"
// Exported type declarations
@@ -31,7 +32,7 @@ void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1
void sub_8108B50(u8 taskId);
void sub_8108CB4(void);
void sub_8108EE0(void (*)(void));
-void sub_8108E70(u8, u8, const u8 *, void (*)(u8));
+void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc);
void sub_810A1F8(u8 taskId);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_use.h b/include/item_use.h
index ca22a56d0..d8356d7c1 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -16,7 +16,7 @@ void FieldUseFunc_OpenPartyMenu(u8 taskId);
void FieldUseFunc_Ether(u8 taskId);
void FieldUseFunc_PpUp(u8 taskId);
void FieldUseFunc_RareCandy(u8 taskId);
-void FieldUseFunc_SunStone(u8 taskId);
+void FieldUseFunc_EvoItem(u8 taskId);
void FieldUseFunc_SacredAsh(u8 taskId);
void FieldUseFunc_TmCase(u8 taskId);
void FieldUseFunc_BerryPouch(u8 taskId);
diff --git a/include/strings.h b/include/strings.h
index 8b98abb20..23562d4b9 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -163,6 +163,11 @@ extern const u8 gText_ReturnToPC[];
extern const u8 gUnknown_8416425[];
extern const u8 gUnknown_8416451[];
+extern const u8 gUnknown_8416537[];
+extern const u8 gUnknown_8416644[];
+extern const u8 gUnknown_841665C[];
+extern const u8 gUnknown_8416690[];
+extern const u8 gUnknown_84166A7[];
extern const u8 gUnknown_84162BD[];
diff --git a/ld_script.txt b/ld_script.txt
index 3079bca5d..62ac8c008 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -285,7 +285,7 @@ SECTIONS {
src/ss_anne.o(.text);
src/cereader_tool.o(.text);
src/trainer_tower.o(.text);
- src/unk_815EDDC.o(.text);
+ src/berry_powder.o(.text);
src/unk_815F138.o(.text);
src/berry_fix_program.o(.text);
} =0
diff --git a/src/unk_815EDDC.c b/src/berry_powder.c
index 669bb2ddb..b3069d697 100644
--- a/src/unk_815EDDC.c
+++ b/src/berry_powder.c
@@ -84,7 +84,7 @@ bool8 sub_815EF5C(void)
}
}
-u32 sub_815EFA0(void)
+u32 GetBerryPowder(void)
{
return sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount);
}
@@ -104,7 +104,7 @@ void sub_815F014(u8 windowId, u16 baseBlock, u8 palette, u32 powder)
void sub_815F070(void)
{
- sub_815EFBC(gUnknown_203F464, sub_815EFA0(), 39, 12, 0);
+ sub_815EFBC(gUnknown_203F464, GetBerryPowder(), 39, 12, 0);
}
void sub_815F094(void)
@@ -120,7 +120,7 @@ void sub_815F094(void)
FillWindowPixelBuffer(gUnknown_203F464, 0);
PutWindowTilemap(gUnknown_203F464);
TextWindow_SetStdFrame0_WithPal(gUnknown_203F464, 0x21D, 0xD0);
- sub_815F014(gUnknown_203F464, 0x21D, 0xD, sub_815EFA0());
+ sub_815F014(gUnknown_203F464, 0x21D, 0xD, GetBerryPowder());
}
}
diff --git a/src/data/items.json b/src/data/items.json
index 0f5aa5f19..8d176df3d 100644
--- a/src/data/items.json
+++ b/src/data/items.json
@@ -1499,7 +1499,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_SunStone",
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1515,7 +1515,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_SunStone",
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1531,7 +1531,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_SunStone",
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1547,7 +1547,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_SunStone",
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1563,7 +1563,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_SunStone",
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@@ -1579,7 +1579,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
- "fieldUseFunc": "FieldUseFunc_SunStone",
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
diff --git a/src/item_use.c b/src/item_use.c
index 66658b6eb..5ce0792de 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "berry_pouch.h"
+#include "berry_powder.h"
#include "bike.h"
+#include "coins.h"
#include "event_data.h"
#include "field_fadetransition.h"
#include "field_map_obj_helpers.h"
@@ -9,6 +11,7 @@
#include "fieldmap.h"
#include "item.h"
#include "item_menu.h"
+#include "item_use.h"
#include "mail.h"
#include "map_obj_80688E4.h"
#include "map_obj_lock.h"
@@ -20,8 +23,10 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
+#include "constants/fanfares.h"
#include "constants/flags.h"
#include "constants/items.h"
+#include "constants/moves.h"
#include "constants/songs.h"
EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL;
@@ -35,8 +40,10 @@ void sub_80A1208(void);
void ItemUseOnFieldCB_Bicycle(u8 taskId);
bool8 ItemUseCheckFunc_Rod(void);
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 FieldUseFunc_SunStone(u8 taskId);
extern void (*const gUnknown_83E2954[])(void);
@@ -90,7 +97,7 @@ void sub_80A10C4(u8 taskId, bool8 a1, u8 a2, const u8 * str)
{
StringExpandPlaceholders(gStringVar4, str);
if (a1 == FALSE)
- sub_8108E70(taskId, a2, gStringVar4, sub_810A1F8);
+ DisplayItemMessageInBag(taskId, a2, gStringVar4, sub_810A1F8);
else
DisplayItemMessageOnField(taskId, a2, gStringVar4, sub_80A112C);
}
@@ -108,11 +115,11 @@ void sub_80A112C(u8 taskId)
ScriptContext2_Disable();
}
-u8 sub_80A1150(u16 itemId)
+u8 GetItemCompatibilityRule(u16 itemId)
{
if (ItemId_GetPocket(itemId) == POCKET_TM_CASE)
return 1;
- else if (ItemId_GetFieldFunc(itemId) == FieldUseFunc_SunStone)
+ else if (ItemId_GetFieldFunc(itemId) == FieldUseFunc_EvoItem)
return 2;
else
return 0;
@@ -240,3 +247,76 @@ void ItemUseOutOfBattle_Itemfinder(u8 taskId)
sItemUseOnFieldCB = sub_813EC8C;
sub_80A103C(taskId);
}
+
+void FieldUseFunc_CoinCase(u8 taskId)
+{
+ ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416537);
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
+}
+
+void FieldUseFunc_PowderJar(u8 taskId)
+{
+ ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416644);
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
+}
+
+void FieldUseFunc_PokeFlute(u8 taskId)
+{
+ bool8 wokeSomeoneUp = FALSE;
+ u8 i;
+
+ for (i = 0; i < CalculatePlayerPartyCount(); i++)
+ {
+ if (!ExecuteTableBasedItemEffect(&gPlayerParty[i], ITEM_AWAKENING, i, MOVE_NONE))
+ wokeSomeoneUp = TRUE;
+ }
+
+ if (wokeSomeoneUp)
+ {
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gUnknown_8416690, sub_80A1648);
+ else
+ DisplayItemMessageOnField(taskId, 2, gUnknown_8416690, sub_80A1648);
+ }
+ else
+ {
+ // Now that's a catchy tune!
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gUnknown_841665C, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gUnknown_841665C, sub_80A112C);
+ }
+}
+
+void sub_80A1648(u8 taskId)
+{
+ PlayFanfareByFanfareNum(FANFARE_POKEFLUTE);
+ gTasks[taskId].func = sub_80A1674;
+}
+
+void sub_80A1674(u8 taskId)
+{
+ if (WaitFanfare(FALSE))
+ {
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gUnknown_84166A7, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gUnknown_84166A7, sub_80A112C);
+ }
+}
+
+void sub_80A16D0(u8 taskId)
+{
+ sub_80A0FBC(taskId);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 0541f4d07..a8672a553 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1571,4 +1571,4 @@ gUnknown_203F440: @ 203F440
.align 2
.include "src/trainer_tower.o"
.align 2
- .include "src/unk_815EDDC.o"
+ .include "src/berry_powder.o"