summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-06-16 19:37:28 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-06-16 19:37:28 -0400
commit105716d701e54270179c20425dfcc1e396211519 (patch)
tree39a0d07662834fe20af3ff75b75df94026993e79
parentd681d7f727e01f1e5b167f5042e9edd1542ae6c6 (diff)
item_pc: through sub_810E548
-rw-r--r--asm/item_pc.s360
-rw-r--r--data/data_83FECCC.s8
-rw-r--r--include/item.h1
-rw-r--r--include/menu.h1
-rw-r--r--include/strings.h6
-rw-r--r--src/item_pc.c124
6 files changed, 136 insertions, 364 deletions
diff --git a/asm/item_pc.s b/asm/item_pc.s
index dadc7ff92..49de9cebb 100644
--- a/asm/item_pc.s
+++ b/asm/item_pc.s
@@ -5,366 +5,6 @@
.text
- thumb_func_start sub_810E274
-sub_810E274: @ 810E274
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0810E340 @ =gTasks+0x8
- mov r9, r0
- adds r6, r4, r0
- movs r0, 0x4
- bl sub_810EA9C
- movs r0, 0
- bl sub_810EAB4
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r5, 0x3
- str r5, [sp, 0x4]
- ldr r0, _0810E344 @ =gUnknown_8453F74
- str r0, [sp, 0x8]
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x8
- movs r3, 0x2
- bl PrintTextArray
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
- ldrh r0, [r6, 0x2]
- bl ItemPc_GetItemIdBySlotId
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0810E348 @ =gStringVar1
- bl CopyItemName
- ldr r6, _0810E34C @ =gStringVar4
- ldr r1, _0810E350 @ =gUnknown_84162FF
- adds r0, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- str r5, [sp, 0xC]
- str r0, [sp, 0x10]
- mov r0, r8
- movs r1, 0x2
- adds r2, r6, 0
- movs r3, 0
- bl sub_810EA34
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x8
- negs r0, r0
- add r9, r0
- add r4, r9
- ldr r0, _0810E354 @ =sub_810E358
- str r0, [r4]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E340: .4byte gTasks+0x8
-_0810E344: .4byte gUnknown_8453F74
-_0810E348: .4byte gStringVar1
-_0810E34C: .4byte gStringVar4
-_0810E350: .4byte gUnknown_84162FF
-_0810E354: .4byte sub_810E358
- thumb_func_end sub_810E274
-
- thumb_func_start sub_810E358
-sub_810E358: @ 810E358
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _0810E39A
- adds r0, 0x1
- cmp r4, r0
- bne _0810E384
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_810E8A0
- b _0810E39A
-_0810E384:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0810E3A0 @ =gUnknown_8453F74
- lsls r1, r4, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r6, 0
- bl _call_via_r1
-_0810E39A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E3A0: .4byte gUnknown_8453F74
- thumb_func_end sub_810E358
-
- thumb_func_start sub_810E3A4
-sub_810E3A4: @ 810E3A4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _0810E3F0 @ =gTasks+0x8
- adds r4, r6, r7
- movs r0, 0x4
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0
- bl sub_810EAF0
- movs r0, 0x4
- bl ClearWindowTilemap
- movs r0, 0x1
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0x2]
- bl ItemPc_GetItemQuantityBySlotId
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _0810E3F4
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r5, 0
- bl sub_810E418
- b _0810E40E
- .align 2, 0
-_0810E3F0: .4byte gTasks+0x8
-_0810E3F4:
- movs r0, 0
- bl PutWindowTilemap
- ldrh r0, [r4, 0x2]
- bl sub_810E5E0
- bl sub_810DB98
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810E414 @ =sub_810E6D8
- str r1, [r0]
-_0810E40E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E414: .4byte sub_810E6D8
- thumb_func_end sub_810E3A4
-
- thumb_func_start sub_810E418
-sub_810E418: @ 810E418
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _0810E49C @ =gTasks+0x8
- adds r5, r6, r7
- ldrh r0, [r5, 0x2]
- bl ItemPc_GetItemIdBySlotId
- lsls r0, 16
- lsrs r4, r0, 16
- ldrh r1, [r5, 0x10]
- adds r0, r4, 0
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810E4B8
- ldr r3, _0810E4A0 @ =0x0000ffff
- movs r0, 0x1D
- movs r1, 0
- adds r2, r4, 0
- bl sub_80A2294
- ldr r1, _0810E4A4 @ =gStringVar1
- adds r0, r4, 0
- bl CopyItemName
- ldr r0, _0810E4A8 @ =gStringVar2
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _0810E4AC @ =gStringVar4
- ldr r1, _0810E4B0 @ =gUnknown_84177C5
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- bl sub_810EAB4
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810E4B4 @ =sub_810E4F4
- b _0810E4E0
- .align 2, 0
-_0810E49C: .4byte gTasks+0x8
-_0810E4A0: .4byte 0x0000ffff
-_0810E4A4: .4byte gStringVar1
-_0810E4A8: .4byte gStringVar2
-_0810E4AC: .4byte gStringVar4
-_0810E4B0: .4byte gUnknown_84177C5
-_0810E4B4: .4byte sub_810E4F4
-_0810E4B8:
- movs r0, 0x2
- bl sub_810EAB4
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _0810E4EC @ =gUnknown_841778A
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810E4F0 @ =sub_810E548
-_0810E4E0:
- str r1, [r0]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E4EC: .4byte gUnknown_841778A
-_0810E4F0: .4byte sub_810E548
- thumb_func_end sub_810E418
-
- thumb_func_start sub_810E4F4
-sub_810E4F4: @ 810E4F4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0810E540 @ =gTasks+0x8
- adds r5, r0, r1
- ldr r0, _0810E544 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810E51A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810E53A
-_0810E51A:
- movs r0, 0x5
- bl PlaySE
- ldrh r0, [r5, 0x2]
- bl ItemPc_GetItemIdBySlotId
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r5, 0x10]
- bl sub_809A460
- bl sub_809A4E8
- adds r0, r4, 0
- bl sub_810E578
-_0810E53A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E540: .4byte gTasks+0x8
-_0810E544: .4byte gMain
- thumb_func_end sub_810E4F4
-
- thumb_func_start sub_810E548
-sub_810E548: @ 810E548
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810E574 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810E562
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810E56E
-_0810E562:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_810E578
-_0810E56E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E574: .4byte gMain
- thumb_func_end sub_810E548
-
thumb_func_start sub_810E578
sub_810E578: @ 810E578
push {r4-r6,lr}
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 33feb4cee..6a38913d5 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -1272,7 +1272,10 @@ gUnknown_841786B:: @ 841786B
.incbin "baserom.gba", 0x41786B, 0x3C
gUnknown_84178A7:: @ 84178A7
- .incbin "baserom.gba", 0x4178A7, 0x17
+ .incbin "baserom.gba", 0x4178A7, 0xE
+
+gUnknown_84178B5::
+ .incbin "baserom.gba", 0x4178B5, 0x9
gUnknown_84178BE:: @ 84178BE
.incbin "baserom.gba", 0x4178BE, 0x12
@@ -3071,9 +3074,6 @@ gUnknown_8453094:: @ 8453094
.section .rodata.8453F6C
// item_pc.o
-gUnknown_8453F74:: @ 8453F74
- .incbin "baserom.gba", 0x453F74, 0x18
-
gUnknown_8453F8C:: @ 8453F8C
.incbin "baserom.gba", 0x453F8C, 0xC
diff --git a/include/item.h b/include/item.h
index 9d67bec66..08133ef31 100644
--- a/include/item.h
+++ b/include/item.h
@@ -74,5 +74,6 @@ void sub_809A584(struct ItemSlot * slots, u8 capacity);
u16 GetBagItemId(u16 *);
void sub_809A4E8(void);
+void sub_809A460(u16 itemId, u16 quantity);
#endif // ITEM_H
diff --git a/include/menu.h b/include/menu.h
index 08112c891..74c4025b8 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -50,5 +50,6 @@ void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_st
bool8 IsBlendTaskActive(void);
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
void sub_810F260(u8 windowId, u8 a1);
+void PrintTextArray(u8, u8, u8, u8, u8, u8, const struct MenuAction *);
#endif // GUARD_MENU_H
diff --git a/include/strings.h b/include/strings.h
index 822bd4783..e9a6be2bd 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -149,9 +149,15 @@ extern const u8 gString_Someone[];
extern const u8 gString_Help[];
extern const u8 gString_HelpSystem_ClearTo8[];
+extern const u8 gOtherText_Give[];
+extern const u8 gFameCheckerText_Cancel[];
+extern const u8 gUnknown_84162FF[];
extern const u8 gUnknown_841633F[];
extern const u8 gUnknown_8416655[];
+extern const u8 gUnknown_841778A[];
+extern const u8 gUnknown_84177C5[];
extern const u8 gUnknown_84178A7[];
+extern const u8 gUnknown_84178B5[];
extern const u8 gUnknown_84178BE[];
#endif //GUARD_STRINGS_H
diff --git a/src/item_pc.c b/src/item_pc.c
index 7a3fbd7af..753463761 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -9,6 +9,7 @@
#include "item_menu.h"
#include "item_menu_icons.h"
#include "list_menu.h"
+#include "item_use.h"
#include "main.h"
#include "malloc.h"
#include "menu.h"
@@ -82,8 +83,21 @@ void sub_810E0B4(u8 taskId);
void sub_810E160(u8 taskId, u32 pos);
void sub_810E200(u8 taskId, u32 pos);
void sub_810E274(u8 taskId);
+void sub_810E358(u8 taskId);
+void sub_810E3A4(u8 taskId);
+void sub_810E418(u8 taskId);
+void sub_810E4F4(u8 taskId);
+void sub_810E548(u8 taskId);
+void sub_810E578(u8 taskId);
+void sub_810E5E0(u16 itemId);
+void sub_810E6D8(u8 taskId);
+void sub_810E79C(u8 taskId);
+void sub_810E8A0(u8 taskId);
void sub_810E8F0(void);
void sub_810EA34(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
+void sub_810EA9C(u8 windowId);
+u8 sub_810EAB4(u8 idx);
+void sub_810EAF0(u8 idx);
const struct BgTemplate gUnknown_8453F6C[2] = {
{
@@ -99,6 +113,12 @@ const struct BgTemplate gUnknown_8453F6C[2] = {
}
};
+const struct MenuAction gUnknown_8453F74[] = {
+ {gUnknown_84178B5, {.void_u8 = sub_810E3A4}},
+ {gOtherText_Give, {.void_u8 = sub_810E79C}},
+ {gFameCheckerText_Cancel, {.void_u8 = sub_810E8A0}}
+};
+
void sub_810D3F4(u8 a0, MainCallback callback)
{
u8 i;
@@ -723,3 +743,107 @@ void sub_810E200(u8 taskId, u32 pos)
sub_8098660(1);
gTasks[taskId].func = sub_810DEA0;
}
+
+void sub_810E274(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 windowId;
+
+ sub_810EA9C(4);
+ windowId = sub_810EAB4(0);
+ PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, gUnknown_8453F74);
+ ProgramAndPlaceMenuCursorOnWindow(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
+ CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84162FF);
+ sub_810EA34(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gTasks[taskId].func = sub_810E358;
+}
+
+void sub_810E358(u8 taskId)
+{
+ s8 input = ProcessMenuInputNoWrapAround();
+ switch (input)
+ {
+ case -1:
+ PlaySE(SE_SELECT);
+ sub_810E8A0(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ gUnknown_8453F74[input].func.void_u8(taskId);
+ }
+}
+
+void sub_810E3A4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_810F4D8(4, 0);
+ sub_810EAF0(0);
+ ClearWindowTilemap(4);
+ data[8] = 1;
+ if (ItemPc_GetItemQuantityBySlotId(data[1]) == 1)
+ {
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_810E418(taskId);
+ }
+ else
+ {
+ PutWindowTilemap(0);
+ sub_810E5E0(data[1]);
+ sub_810DB98();
+ gTasks[taskId].func = sub_810E6D8;
+ }
+}
+
+void sub_810E418(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId = ItemPc_GetItemIdBySlotId(data[1]);
+ u8 windowId;
+
+ if (AddBagItem(itemId, data[8]) == TRUE)
+ {
+ sub_80A2294(29, 0, itemId, 0xFFFF);
+ CopyItemName(itemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84177C5);
+ windowId = sub_810EAB4(2);
+ AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 0, NULL);
+ gTasks[taskId].func = sub_810E4F4;
+ }
+ else
+ {
+ windowId = sub_810EAB4(2);
+ AddTextPrinterParameterized(windowId, 2, gUnknown_841778A, 0, 2, 0, NULL);
+ gTasks[taskId].func = sub_810E548;
+ }
+}
+
+void sub_810E4F4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId;
+
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ itemId = ItemPc_GetItemIdBySlotId(data[1]);
+ sub_809A460(itemId, data[8]);
+ sub_809A4E8();
+ sub_810E578(taskId);
+ }
+}
+
+void sub_810E548(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810E578(taskId);
+ }
+}