summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/item_menu.s284
-rw-r--r--include/bag.h2
-rw-r--r--src/bag.c2
-rw-r--r--src/item_menu.c71
4 files changed, 72 insertions, 287 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index c90b708cd..8e0d2e137 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5,290 +5,6 @@
.text
- thumb_func_start sub_81085A4
-sub_81085A4: @ 81085A4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _081085BA
- movs r0, 0xF5
- bl PlaySE
- bl sub_8098580
-_081085BA:
- ldr r4, _08108604 @ =gUnknown_203AD10
- ldr r1, [r4]
- ldrb r0, [r1, 0x4]
- cmp r0, 0xFF
- bne _08108644
- ldrb r1, [r1, 0x5]
- lsls r1, 26
- lsrs r1, 30
- movs r0, 0x1
- eors r0, r1
- bl DestroyItemMenuIcon
- ldr r2, [r4]
- ldr r0, _08108608 @ =gUnknown_203ACFC
- ldrh r1, [r0, 0x6]
- adds r0, r2, 0
- adds r0, 0xA
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, r5
- beq _0810860C
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r5, 16
- lsrs r1, 16
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [r4]
- ldrb r1, [r1, 0x5]
- lsls r1, 26
- lsrs r1, 30
- bl CreateItemMenuIcon
- b _08108618
- .align 2, 0
-_08108604: .4byte gUnknown_203AD10
-_08108608: .4byte gUnknown_203ACFC
-_0810860C:
- ldr r0, _0810864C @ =0x00000177
- ldrb r1, [r2, 0x5]
- lsls r1, 26
- lsrs r1, 30
- bl CreateItemMenuIcon
-_08108618:
- ldr r4, _08108650 @ =gUnknown_203AD10
- ldr r3, [r4]
- ldrb r2, [r3, 0x5]
- lsls r0, r2, 26
- lsrs r0, 30
- movs r1, 0x1
- eors r1, r0
- lsls r1, 4
- movs r0, 0x31
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- bne _08108644
- adds r0, r5, 0
- bl sub_8108818
-_08108644:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810864C: .4byte 0x00000177
-_08108650: .4byte gUnknown_203AD10
- thumb_func_end sub_81085A4
-
- thumb_func_start sub_8108654
-sub_8108654: @ 8108654
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _08108684 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldrb r1, [r0, 0x4]
- cmp r1, 0xFF
- beq _08108690
- lsls r0, r4, 24
- lsrs r0, 24
- cmp r1, r0
- bne _08108688
- adds r0, r6, 0
- movs r1, 0x2
- bl bag_menu_print_cursor
- b _08108690
- .align 2, 0
-_08108684: .4byte gUnknown_203AD10
-_08108688:
- adds r0, r6, 0
- movs r1, 0xFF
- bl bag_menu_print_cursor
-_08108690:
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _08108752
- ldr r0, _08108718 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldr r5, _0810871C @ =gUnknown_203ACFC
- ldrh r1, [r5, 0x6]
- adds r0, 0xA
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, r4
- beq _08108752
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 16
- lsrs r4, 16
- adds r1, r4, 0
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r7, r0, 16
- ldrb r0, [r5, 0x6]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl BagGetQuantityByPocketPosition
- lsls r0, 16
- lsrs r4, r0, 16
- ldrh r0, [r5, 0x6]
- cmp r0, 0x1
- beq _0810872C
- adds r0, r7, 0
- bl itemid_is_unique
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0810872C
- ldr r0, _08108720 @ =gStringVar1
- adds r1, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _08108724 @ =gStringVar4
- ldr r1, _08108728 @ =gText_TimesStrVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- str r6, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- movs r0, 0x1
- str r0, [sp, 0x10]
- mov r0, r8
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x6E
- bl sub_810B8F0
- b _08108752
- .align 2, 0
-_08108718: .4byte gUnknown_203AD10
-_0810871C: .4byte gUnknown_203ACFC
-_08108720: .4byte gStringVar1
-_08108724: .4byte gStringVar4
-_08108728: .4byte gText_TimesStrVar1
-_0810872C:
- ldr r0, _08108760 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08108764 @ =0x00000296
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _08108752
- cmp r0, r7
- bne _08108752
- ldr r1, _08108768 @ =gUnknown_8452F7C
- movs r0, 0x18
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- mov r0, r8
- movs r2, 0x70
- adds r3, r6, 0
- bl BlitBitmapToWindow
-_08108752:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108760: .4byte gSaveBlock1Ptr
-_08108764: .4byte 0x00000296
-_08108768: .4byte gUnknown_8452F7C
- thumb_func_end sub_8108654
-
- thumb_func_start bag_menu_print_cursor_
-bag_menu_print_cursor_: @ 810876C
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- bl ListMenuGetYCoordForPrintingArrowCursor
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl bag_menu_print_cursor
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end bag_menu_print_cursor_
-
- thumb_func_start bag_menu_print_cursor
-bag_menu_print_cursor: @ 810878C
- push {r4,r5,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0xFF
- bne _081087C8
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1
- adds r3, r5, 0
- bl FillWindowPixelRect
- b _081087DE
-_081087C8:
- ldr r2, _081087E8 @ =gFameCheckerText_ListMenuCursor
- str r5, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r3, 0x1
- bl sub_810B8F0
-_081087DE:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081087E8: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end bag_menu_print_cursor
-
thumb_func_start sub_81087EC
sub_81087EC: @ 81087EC
push {lr}
diff --git a/include/bag.h b/include/bag.h
index 8c085a211..321a48ab0 100644
--- a/include/bag.h
+++ b/include/bag.h
@@ -4,7 +4,7 @@
#include "menu_helpers.h"
void sub_810B858(void);
-void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx);
+void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
void sub_810B958(const u8 * str);
void sub_810B994(void);
u8 sub_810B9DC(u8 a0, u8 a1);
diff --git a/src/bag.c b/src/bag.c
index c30bc626d..4a962bec6 100644
--- a/src/bag.c
+++ b/src/bag.c
@@ -227,7 +227,7 @@ void sub_810B858(void)
}
}
-void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx)
+void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
{
AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_84530B8[colorIdx], speed, str);
}
diff --git a/src/item_menu.c b/src/item_menu.c
index ce964b647..578170c17 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -14,6 +14,7 @@
#include "scanline_effect.h"
#include "strings.h"
#include "constants/items.h"
+#include "constants/songs.h"
struct BagMenuAlloc
{
@@ -46,10 +47,12 @@ bool8 sub_8108240(void);
u8 sub_8108388(u8 location);
bool8 sub_81083F4(void);
void sub_810842C(u8 pocket);
+void sub_8108560(u8 *dest, u16 itemId);
void sub_81085A4(s32 itemIndex, bool8 onInit, struct ListMenu *list);
void sub_8108654(u8 windowId, s32 itemId, u8 y);
-void sub_8108560(u8 *dest, u16 itemId);
+void bag_menu_print_cursor(u8 y, u8 colorIdx);
void sub_81087EC(void);
+void sub_8108818(s32 itemIndex);
void sub_8108888(void);
void sub_81088D8(void);
void sub_8108A68(void);
@@ -68,6 +71,7 @@ void sub_810B5D4(u8 taskId);
extern const struct BgTemplate gUnknown_8452CF4[2];
extern const u8 gUnknown_8452F60[];
extern const u8 gUnknown_8452F66[];
+extern const u8 gUnknown_8452F7C[];
void GoToBagMenu(u8 location, u8 a1, MainCallback a2)
{
@@ -437,3 +441,68 @@ void sub_8108560(u8 *dest, u16 itemId)
StringCopy(dest, gUnknown_8452F60);
StringAppend(dest, ItemId_GetName(itemId));
}
+
+void sub_81085A4(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (onInit != TRUE)
+ {
+ PlaySE(SE_BAG1);
+ sub_8098580();
+ }
+ if (gUnknown_203AD10->field_04 == 0xFF)
+ {
+ DestroyItemMenuIcon(gUnknown_203AD10->field_05_4 ^ 1);
+ if (gUnknown_203AD10->field_0A[gUnknown_203ACFC.pocket] != itemIndex)
+ CreateItemMenuIcon(BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, itemIndex), gUnknown_203AD10->field_05_4);
+ else
+ CreateItemMenuIcon(ITEM_N_A, gUnknown_203AD10->field_05_4);
+ gUnknown_203AD10->field_05_4 ^= 1;
+ if (gUnknown_203AD10->field_05_6 == 0)
+ sub_8108818(itemIndex);
+ }
+}
+
+void sub_8108654(u8 windowId, s32 itemId, u8 y)
+{
+ u16 bagItemId;
+ u16 bagItemQuantity;
+ if (gUnknown_203AD10->field_04 != 0xFF)
+ {
+ if (gUnknown_203AD10->field_04 == (u8)itemId)
+ bag_menu_print_cursor(y, 2);
+ else
+ bag_menu_print_cursor(y, 0xFF);
+ }
+ if (itemId != -2 && gUnknown_203AD10->field_0A[gUnknown_203ACFC.pocket] != itemId)
+ {
+ bagItemId = BagGetItemIdByPocketPosition(gUnknown_203ACFC.pocket + 1, itemId);
+ bagItemQuantity = BagGetQuantityByPocketPosition(gUnknown_203ACFC.pocket + 1, itemId);
+ if (gUnknown_203ACFC.pocket != POCKET_KEY_ITEMS - 1 && !itemid_is_unique(bagItemId))
+ {
+ ConvertIntToDecimalStringN(gStringVar1, bagItemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ sub_810B8F0(windowId, 0, gStringVar4, 0x6e, y, 0, 0, 0xFF, 1);
+ }
+ else if (gSaveBlock1Ptr->registeredItem != ITEM_NONE && gSaveBlock1Ptr->registeredItem == bagItemId)
+ {
+ BlitBitmapToWindow(windowId, gUnknown_8452F7C, 0x70, y, 0x18, 0x10);
+ }
+ }
+}
+
+void bag_menu_print_cursor_(u8 taskId, u8 colorIdx)
+{
+ bag_menu_print_cursor(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx);
+}
+
+void bag_menu_print_cursor(u8 y, u8 colorIdx)
+{
+ if (colorIdx == 0xFF)
+ {
+ FillWindowPixelRect(0, PIXEL_FILL(0), 1, y, GetMenuCursorDimensionByFont(2, 0), GetMenuCursorDimensionByFont(2, 1));
+ }
+ else
+ {
+ sub_810B8F0(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx);
+ }
+}