diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-20 11:02:09 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-20 11:02:09 -0400 |
commit | 12f3ceb0f7fb0ed580fa75bbba634307ca463d52 (patch) | |
tree | 0ef3542851d2a62a794adf390c5f1b1b1c7cc56a | |
parent | 164dd43a62f212132f02f1965c51a2ac52c49e4f (diff) |
item_use: through sub_80A16D0
-rw-r--r-- | asm/berry_crush_2.s | 2 | ||||
-rw-r--r-- | asm/item_menu.s | 26 | ||||
-rw-r--r-- | asm/item_use.s | 322 | ||||
-rw-r--r-- | asm/party_menu.s | 4 | ||||
-rw-r--r-- | asm/pokemon_special_anim.s | 2 | ||||
-rw-r--r-- | include/berry_powder.h | 6 | ||||
-rw-r--r-- | include/constants/fanfares.h | 22 | ||||
-rw-r--r-- | include/item_menu.h | 3 | ||||
-rw-r--r-- | include/item_use.h | 2 | ||||
-rw-r--r-- | include/strings.h | 5 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/berry_powder.c (renamed from src/unk_815EDDC.c) | 6 | ||||
-rw-r--r-- | src/data/items.json | 12 | ||||
-rw-r--r-- | src/item_use.c | 88 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
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" |