item_pc: through sub_810E548

This commit is contained in:
PikalaxALT
2019-06-16 19:37:28 -04:00
parent d681d7f727
commit 105716d701
6 changed files with 136 additions and 364 deletions
-360
View File
@@ -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}
+4 -4
View File
@@ -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
+1
View File
@@ -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
+1
View File
@@ -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
+6
View File
@@ -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
+124
View File
@@ -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);
}
}