summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-07-09 00:40:28 -0500
committercamthesaxman <cameronghall@cox.net>2017-07-09 00:40:28 -0500
commit55db40b3302d3b83df4f764952aba94dd81eb8ad (patch)
tree9970b4c256637956c1df19393937dfa63e22c5c3 /src
parent4a9e02772870528cc3b9653eb4028b236f3c3aa8 (diff)
decompile ItemListMenu_ChangeDescription - sub_80A4F74
Diffstat (limited to 'src')
-rw-r--r--src/item.c2
-rw-r--r--src/item_menu.c274
2 files changed, 272 insertions, 4 deletions
diff --git a/src/item.c b/src/item.c
index 6070a0329..22ac6e7cd 100644
--- a/src/item.c
+++ b/src/item.c
@@ -587,7 +587,7 @@ u8 *ItemId_GetDescription(u16 itemId)
return gItems[SanitizeItemId(itemId)].description;
}
-bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c)
+bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c)
{
u32 r5 = c + 1;
u8 *description = gItems[SanitizeItemId(itemId)].description;
diff --git a/src/item_menu.c b/src/item_menu.c
index b8d9f788a..972a2c748 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -1,8 +1,12 @@
#include "global.h"
#include "data2.h"
#include "decompress.h"
+#include "field_player_avatar.h"
#include "graphics.h"
#include "item.h"
+#include "items.h"
+#include "item_use.h"
+#include "mail_data.h"
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
@@ -48,6 +52,8 @@ extern void gpu_pal_allocator_reset__manage_upper_four(void);
extern void sub_80F9020(void);
extern void sub_80F9988();
extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16);
+extern void PauseVerticalScrollIndicator();
+extern u8 sub_80F9284(void);
extern const struct CompressedSpriteSheet gUnknown_083C1CC8;
extern const struct CompressedSpriteSheet gUnknown_083C1CD0;
@@ -114,10 +120,13 @@ void sub_80A3D40(void);
void sub_80A40D0(void);
void sub_80A48E8(u16, int, int);
void ItemListMenu_InitDescription(s16);
-void ItemListMenu_ChangeDescription();
+void ItemListMenu_ChangeDescription(s16, int);
void sub_80A4F68(u8);
void sub_80A50C8(u8);
void ItemListMenu_InitMenu(void);
+void sub_80A73C0(void);
+void sub_80A73F0(void);
+void sub_80A73FC(void);
void sub_80A740C(void);
void sub_80A751C(void);
void sub_80A7528();
@@ -127,9 +136,11 @@ void sub_80A763C(void);
void sub_80A76A0(void);
void sub_80A770C(void);
void sub_80A7828(void);
+void sub_80A7834();
void sub_80A78B8(void);
void CreateBagSprite(void);
void CreateBagPokeballSprite();
+void sub_80A7C64(void);
void sub_80A3118(void)
{
@@ -460,7 +471,7 @@ void sub_80A37F8(u8 taskId)
{
u32 val = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0;
- ItemListMenu_ChangeDescription((s16)gUnknown_03005D24[val].itemId, gUnknown_02038562);
+ ItemListMenu_ChangeDescription(gUnknown_03005D24[val].itemId, gUnknown_02038562);
gUnknown_02038562++;
}
else
@@ -469,7 +480,7 @@ void sub_80A37F8(u8 taskId)
{
u32 val = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0;
- ItemListMenu_ChangeDescription((s16)gUnknown_03005D24[val].itemId, gUnknown_02038562);
+ ItemListMenu_ChangeDescription(gUnknown_03005D24[val].itemId, gUnknown_02038562);
gUnknown_02038562++;
}
}
@@ -1315,3 +1326,260 @@ void ItemListMenu_InitDescription(s16 itemId)
if (r5 < 3)
MenuZeroFillWindowRect(0, 13 + r5 * 2, 13, 20);
}
+
+void ItemListMenu_ChangeDescription(s16 itemId, int b)
+{
+ u8 description[100];
+
+ if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 == gUnknown_03005D10[gUnknown_02038559].unk2)
+ {
+ if (b == 0)
+ {
+ MenuZeroFillWindowRect(0, 13, 13, 20);
+ MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0);
+ }
+ else if (b == 1)
+ {
+ MenuPrint_PixelCoords(gUnknown_0840E740[gUnknown_03000701], 4, 0x78, 0);
+ }
+ }
+ else
+ {
+ if (b == 0)
+ MenuZeroFillWindowRect(0, 13, 13, 20);
+ if (ItemId_CopyDescription(description, itemId, b))
+ MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0);
+ }
+}
+
+bool32 sub_80A4A54(u8 *a, const u8 *b, u32 c)
+{
+ u32 r4 = c + 1;
+ const u8 *src = b;
+ u8 *dst = a;
+
+ while (1)
+ {
+ if (*src == CHAR_NEWLINE || *src == EOS)
+ {
+ if (--r4 == 0)
+ {
+ *dst = EOS;
+ return TRUE;
+ }
+ if (*src == EOS)
+ return FALSE;
+ dst = a;
+ src++;
+ }
+ else
+ {
+ *dst++ = *src++;
+ }
+ }
+}
+
+void sub_80A4A98(u8 *a, u32 b)
+{
+ u8 text[100];
+
+ if (b == 0)
+ MenuZeroFillWindowRect(0, 13, 13, 20);
+ if (sub_80A4A54(text, a, b))
+ MenuPrint_PixelCoords(text, 4, 104 + b * 16, 0);
+}
+
+void sub_80A4ADC(u8 taskId)
+{
+ if (gTasks[taskId].data[10] == 0)
+ sub_80A7528(0);
+ PlaySE(SE_SELECT);
+ gUnknown_0203855C = 1;
+}
+
+void sub_80A4B14(s8 a, u8 b)
+{
+ gUnknown_03005D10[gUnknown_02038559].unk1 += a;
+ MoveMenuCursor(0);
+ sub_80A73C0();
+ sub_80A763C();
+ sub_80A4ADC(b);
+}
+
+void sub_80A4B58(s8 a, u8 b)
+{
+ gUnknown_03005D10[gUnknown_02038559].unk0 = MoveMenuCursor(a);
+ sub_80A73C0();
+ sub_80A4ADC(b);
+}
+
+const u8 *sub_80A4B90(u16 itemId)
+{
+ if (TestPlayerAvatarFlags(6))
+ {
+ if (itemId == ITEM_MACH_BIKE || itemId == ITEM_ACRO_BIKE)
+ return gOtherText_Walk;
+ }
+ if (ItemIsMail(itemId) == TRUE)
+ return gOtherText_Check;
+ return gUnknown_083C1640[gUnknown_03000704[0]].text;
+}
+
+void sub_80A4BF0(u16 *a)
+{
+ u8 i;
+
+ if (gUnknown_02038564 == 4)
+ {
+ MenuDrawTextWindow(0, 7, 13, 12);
+ sub_80A4008(a, 1, 8, 12, 4);
+ if (sub_80F9344() == 1 && gUnknown_03000701 == 5)
+ {
+ sub_80A7834(1, 0);
+ }
+ else
+ {
+ for (i = 0; i < gUnknown_02038564; i++)
+ {
+ const u8 *text;
+
+ if (i == 0)
+ text = sub_80A4B90(gScriptItemId);
+ else
+ text = gUnknown_083C1640[gUnknown_03000704[i]].text;
+ MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2);
+ }
+ }
+ if (gUnknown_03000701 == 5)
+ InitMenu(0, 1, 8, gUnknown_02038564, gUnknown_03000700, 1);
+ else
+ InitMenu(0, 1, 8, gUnknown_02038564, 0, 1);
+ sub_8072DCC(0x2F);
+ }
+ else
+ {
+ MenuDrawTextWindow(0, 5, 13, 12);
+ sub_80A4008(a, 1, 6, 12, 6);
+ for (i = 0; i < gUnknown_02038564; i++)
+ MenuPrint(gUnknown_083C1640[gUnknown_03000704[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2);
+ InitMenu(0, 1, 6, gUnknown_02038564, 0, 1);
+ sub_8072DCC(0x2F);
+ }
+ sub_80A7528(2);
+}
+
+void sub_80A4DA4(u16 *a)
+{
+ sub_80A73FC();
+ sub_80A36B8(a, 0, 6, 13, 6);
+ MenuZeroFillWindowRect(0, 5, 13, 12);
+ sub_80A7590();
+}
+
+void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 f)
+{
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[2] = b + 2;
+ gTasks[taskId].data[3] = c + 1;
+ MenuDrawTextWindow(b, c, b + d, c + e);
+ sub_80A4008(gBGTilemapBuffers[1], b + 1, c + 1, d - 1, e - 1);
+ sub_80A418C(1, 1, b + 2, c + 1, f);
+}
+
+void sub_80A4E8C(s8 a, u8 b)
+{
+ PlaySE(SE_SELECT);
+ sub_80F979C(0, 1);
+ sub_80F979C(1, 1);
+ sub_80F979C(2, 1);
+ sub_80F979C(3, 1);
+ PauseVerticalScrollIndicator(0);
+ PauseVerticalScrollIndicator(1);
+ PauseVerticalScrollIndicator(2);
+ PauseVerticalScrollIndicator(3);
+ sub_80A3B04(gBGTilemapBuffers[2], a);
+ sub_80A3AC0(gBGTilemapBuffers[2], gUnknown_02038559);
+ sub_80A3770();
+ sub_80A7C64();
+ CreateBagPokeballSprite(b);
+}
+
+static bool8 sub_80A4F0C(void)
+{
+ if (gUnknown_03000701 == 5 || gUnknown_03000701 == 4)
+ return FALSE;
+ if (gMain.newKeys == DPAD_RIGHT || sub_80F9284() == 2)
+ {
+ sub_80A4E8C(1, 2);
+ return TRUE;
+ }
+ if (gMain.newKeys == DPAD_LEFT || sub_80F9284() == 1)
+ {
+ sub_80A4E8C(-1, 1);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_80A4F68(u8 taskId)
+{
+ sub_80A4F0C();
+}
+
+bool8 sub_80A4F74(u8 a)
+{
+ bool8 retVal = FALSE;
+
+ if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk0 != 0)
+ sub_80A4B58(-1, a);
+ else if (gUnknown_03005D10[gUnknown_02038559].unk1 != 0)
+ sub_80A4B14(-1, a);
+ if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5)
+ gMain.keyRepeatCounter = 11;
+ retVal = TRUE;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ if (gUnknown_03000701 != 5)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk0 == gUnknown_03005D10[gUnknown_02038559].unk3)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk2)
+ sub_80A4B14(1, a);
+ }
+ else
+ {
+ sub_80A4B58(1, a);
+ }
+ }
+ else
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk2 - 1)
+ {
+ if (gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk3)
+ sub_80A4B58(1, a);
+ else
+ sub_80A4B14(1, a);
+ }
+ }
+ retVal = TRUE;
+ if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5)
+ gMain.keyRepeatCounter = 11;
+ }
+ else
+ {
+ if (gTasks[a].data[10] == 0 && sub_80A4F0C() == TRUE)
+ {
+ sub_80A73F0();
+ gTasks[a].func = sub_80A4F68;
+ retVal = TRUE;
+ }
+ else
+ {
+ sub_80A73C0();
+ }
+ }
+ return retVal;
+}