summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/item_menu.s357
-rw-r--r--src/item_menu.c106
2 files changed, 106 insertions, 357 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index d42c65d45..20e9423e9 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5,363 +5,6 @@
.text
- thumb_func_start sub_810A568
-sub_810A568: @ 810A568
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810A58C @ =gTasks+0x8
- adds r4, r0, r1
- ldr r6, _0810A590 @ =gSpecialVar_ItemId
- ldrh r1, [r6]
- movs r0, 0xB6
- lsls r0, 1
- cmp r1, r0
- bne _0810A598
- ldr r0, _0810A594 @ =sub_810A654
- b _0810A5A0
- .align 2, 0
-_0810A58C: .4byte gTasks+0x8
-_0810A590: .4byte gSpecialVar_ItemId
-_0810A594: .4byte sub_810A654
-_0810A598:
- ldr r0, _0810A5AC @ =0x0000016d
- cmp r1, r0
- bne _0810A5B4
- ldr r0, _0810A5B0 @ =sub_810A668
-_0810A5A0:
- bl ItemMenu_SetExitCallback
- adds r0, r5, 0
- bl ItemMenu_StartFadeToExitCallback
- b _0810A63E
- .align 2, 0
-_0810A5AC: .4byte 0x0000016d
-_0810A5B0: .4byte sub_810A668
-_0810A5B4:
- ldrh r0, [r6]
- bl itemid_get_market_price
- lsls r0, 16
- cmp r0, 0
- bne _0810A5F8
- ldrh r0, [r6]
- ldr r1, _0810A5E8 @ =gStringVar1
- bl CopyItemName
- ldr r4, _0810A5EC @ =gStringVar4
- ldr r1, _0810A5F0 @ =gText_OhNoICantBuyThat
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0810A5F4 @ =sub_810A1F8
- adds r0, r5, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBag
- b _0810A63E
- .align 2, 0
-_0810A5E8: .4byte gStringVar1
-_0810A5EC: .4byte gStringVar4
-_0810A5F0: .4byte gText_OhNoICantBuyThat
-_0810A5F4: .4byte sub_810A1F8
-_0810A5F8:
- movs r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _0810A610
- bl sub_810BB40
- adds r0, r5, 0
- bl sub_810A690
- b _0810A63E
-_0810A610:
- cmp r0, 0x63
- ble _0810A618
- movs r0, 0x63
- strh r0, [r4, 0x4]
-_0810A618:
- ldrh r0, [r6]
- ldr r1, _0810A644 @ =gStringVar1
- bl CopyItemName
- ldr r4, _0810A648 @ =gStringVar4
- ldr r1, _0810A64C @ =gText_HowManyWouldYouLikeToSell
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0810A650 @ =sub_810A770
- adds r0, r7, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBag
-_0810A63E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A644: .4byte gStringVar1
-_0810A648: .4byte gStringVar4
-_0810A64C: .4byte gText_HowManyWouldYouLikeToSell
-_0810A650: .4byte sub_810A770
- thumb_func_end sub_810A568
-
- thumb_func_start sub_810A654
-sub_810A654: @ 810A654
- push {lr}
- ldr r1, _0810A664 @ =sub_810A67C
- movs r0, 0x2
- movs r2, 0
- bl InitTMCase
- pop {r0}
- bx r0
- .align 2, 0
-_0810A664: .4byte sub_810A67C
- thumb_func_end sub_810A654
-
- thumb_func_start sub_810A668
-sub_810A668: @ 810A668
- push {lr}
- ldr r1, _0810A678 @ =sub_810A67C
- movs r0, 0x2
- movs r2, 0
- bl InitBerryPouch
- pop {r0}
- bx r0
- .align 2, 0
-_0810A678: .4byte sub_810A67C
- thumb_func_end sub_810A668
-
- thumb_func_start sub_810A67C
-sub_810A67C: @ 810A67C
- push {lr}
- ldr r2, _0810A68C @ =CB2_ReturnToField
- movs r0, 0x2
- movs r1, 0x3
- bl GoToBagMenu
- pop {r0}
- bx r0
- .align 2, 0
-_0810A68C: .4byte CB2_ReturnToField
- thumb_func_end sub_810A67C
-
- thumb_func_start sub_810A690
-sub_810A690: @ 810A690
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0810A6F4 @ =gTasks+0x8
- adds r4, r0
- ldr r6, _0810A6F8 @ =gStringVar3
- ldr r0, _0810A6FC @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- muls r1, r0
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- ldr r4, _0810A700 @ =gStringVar4
- ldr r1, _0810A704 @ =gText_ICanPayThisMuch_WouldThatBeOkay
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80BF8E4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0810A708 @ =sub_810A70C
- adds r0, r5, 0
- adds r2, r4, 0
- bl DisplayItemMessageInBag
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A6F4: .4byte gTasks+0x8
-_0810A6F8: .4byte gStringVar3
-_0810A6FC: .4byte gUnknown_203ACFC
-_0810A700: .4byte gStringVar4
-_0810A704: .4byte gText_ICanPayThisMuch_WouldThatBeOkay
-_0810A708: .4byte sub_810A70C
- thumb_func_end sub_810A690
-
- thumb_func_start sub_810A70C
-sub_810A70C: @ 810A70C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0810A71C @ =gUnknown_8452F58
- bl sub_810BB14
- pop {r0}
- bx r0
- .align 2, 0
-_0810A71C: .4byte gUnknown_8452F58
- thumb_func_end sub_810A70C
-
- thumb_func_start sub_810A720
-sub_810A720: @ 810A720
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0810A76C @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x2
- bl sub_810BA3C
- movs r0, 0x5
- bl sub_810BA9C
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl bag_menu_print_cursor_
- adds r0, r5, 0
- bl sub_810910C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A76C: .4byte gTasks+0x8
- thumb_func_end sub_810A720
-
- thumb_func_start sub_810A770
-sub_810A770: @ 810A770
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 3
- ldr r0, _0810A81C @ =gTasks+0x8
- mov r8, r0
- adds r2, r5, 0
- add r2, r8
- mov r9, r2
- movs r0, 0
- movs r1, 0x1
- bl sub_810B9DC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810A820 @ =gStringVar1
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r6, _0810A824 @ =gStringVar4
- ldr r1, _0810A828 @ =gText_TimesStrVar1
- adds r0, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r6, 0
- movs r3, 0x4
- bl sub_810B8F0
- ldr r0, _0810A82C @ =gUnknown_203ACFC
- ldrb r0, [r0, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r3, r9
- ldrh r1, [r3, 0x2]
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 17
- mov r2, r9
- movs r3, 0x10
- ldrsh r1, [r2, r3]
- muls r0, r1
- bl sub_810A834
- bl sub_810BB40
- bl sub_8108908
- movs r0, 0x8
- negs r0, r0
- add r8, r0
- add r5, r8
- ldr r0, _0810A830 @ =sub_810A85C
- str r0, [r5]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810A81C: .4byte gTasks+0x8
-_0810A820: .4byte gStringVar1
-_0810A824: .4byte gStringVar4
-_0810A828: .4byte gText_TimesStrVar1
-_0810A82C: .4byte gUnknown_203ACFC
-_0810A830: .4byte sub_810A85C
- thumb_func_end sub_810A770
-
- thumb_func_start sub_810A834
-sub_810A834: @ 810A834
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0
- bl sub_810BAD8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- str r1, [sp]
- movs r1, 0x38
- movs r2, 0xA
- adds r3, r4, 0
- bl PrintMoneyAmount
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810A834
-
thumb_func_start sub_810A85C
sub_810A85C: @ 810A85C
push {r4-r6,lr}
diff --git a/src/item_menu.c b/src/item_menu.c
index 1e2cbfa3b..b73d9f1a8 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -15,6 +15,7 @@
#include "mail_data.h"
#include "menu.h"
#include "menu_indicators.h"
+#include "money.h"
#include "new_menu_helpers.h"
#include "overworld.h"
#include "party_menu.h"
@@ -113,7 +114,15 @@ void sub_810A52C(void);
void sub_810A540(void);
void sub_810A554(void);
void sub_810A568(u8 taskId);
+void sub_810A654(void);
+void sub_810A668(void);
+void sub_810A67C(void);
+void sub_810A690(u8 taskId);
+void sub_810A70C(u8 taskId);
void sub_810A720(u8 taskId);
+void sub_810A770(u8 taskId);
+void sub_810A834(s32 price);
+void sub_810A85C(u8 taskId);
void sub_810A940(u8 taskId);
void sub_810AB40(u8 taskId);
bool8 sub_810ADAC(void);
@@ -1749,3 +1758,100 @@ void sub_810A554(void)
{
GoToBagMenu(4, 3, sub_808CE60);
}
+
+void sub_810A568(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (gSpecialVar_ItemId == ITEM_TM_CASE)
+ {
+ ItemMenu_SetExitCallback(sub_810A654);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (gSpecialVar_ItemId == ITEM_BERRY_POUCH)
+ {
+ ItemMenu_SetExitCallback(sub_810A668);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else if (itemid_get_market_price(gSpecialVar_ItemId) == 0)
+ {
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat);
+ DisplayItemMessageInBag(taskId, sub_80BF8E4(), gStringVar4, sub_810A1F8);
+ }
+ else
+ {
+ data[8] = 1;
+ if (data[2] == 1)
+ {
+ sub_810BB40();
+ sub_810A690(taskId);
+ }
+ else
+ {
+ if (data[2] > 99)
+ data[2] = 99;
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell);
+ DisplayItemMessageInBag(taskId, sub_80BF8E4(), gStringVar4, sub_810A770);
+ }
+ }
+}
+
+void sub_810A654(void)
+{
+ InitTMCase(2, sub_810A67C, FALSE);
+}
+
+void sub_810A668(void)
+{
+ InitBerryPouch(2, sub_810A67C, FALSE);
+}
+
+void sub_810A67C(void)
+{
+ GoToBagMenu(2, 3, CB2_ReturnToField);
+}
+
+void sub_810A690(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay);
+ DisplayItemMessageInBag(taskId, sub_80BF8E4(), gStringVar4, sub_810A70C);
+}
+
+void sub_810A70C(u8 taskId)
+{
+ sub_810BB14(taskId, &gUnknown_8452F58);
+}
+
+void sub_810A720(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_810BA3C(2);
+ sub_810BA9C(5);
+ PutWindowTilemap(2);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ bag_menu_print_cursor_(data[0], 1);
+ sub_810910C(taskId);
+}
+
+void sub_810A770(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 r4 = sub_810B9DC(0, 1);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ sub_810B8F0(r4, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1);
+ sub_810A834(itemid_get_market_price(BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, data[1])) / 2 * data[8]);
+ sub_810BB40();
+ sub_8108908();
+ gTasks[taskId].func = sub_810A85C;
+}
+
+void sub_810A834(s32 amount)
+{
+ PrintMoneyAmount(sub_810BAD8(0), 56, 10, amount, 0);
+}