Berry_pouch through sub_813D5BC
This commit is contained in:
+161
-1
@@ -13,14 +13,22 @@
|
||||
#include "item_menu_icons.h"
|
||||
#include "list_menu.h"
|
||||
#include "graphics.h"
|
||||
#include "berry.h"
|
||||
#include "item.h"
|
||||
#include "strings.h"
|
||||
#include "string_util.h"
|
||||
#include "sound.h"
|
||||
#include "menu_indicators.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
struct BerryPouchStruct_203F36C
|
||||
{
|
||||
u32 unk_000;
|
||||
u8 filler_004[2];
|
||||
u8 unk_006;
|
||||
u8 filler_007[2];
|
||||
u8 unk_007;
|
||||
u8 unk_008;
|
||||
u8 unk_009;
|
||||
u8 filler_00a[2];
|
||||
u8 unk_00C[BG_SCREEN_SIZE];
|
||||
@@ -39,6 +47,8 @@ struct BerryPouchStruct_203F370
|
||||
|
||||
EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL;
|
||||
EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {};
|
||||
EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL;
|
||||
EWRAM_DATA u8 *gUnknown_203F380 = NULL;
|
||||
|
||||
void sub_813CE30(void);
|
||||
bool8 sub_813CE5C(void);
|
||||
@@ -48,6 +58,11 @@ void sub_813D07C(void);
|
||||
bool8 sub_813D0E4(void);
|
||||
bool8 sub_813D1C0(void);
|
||||
void sub_813D204(void);
|
||||
void sub_813D31C(u8 * dest, u16 itemId);
|
||||
void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list);
|
||||
void sub_813D430(u8 windowId, s32 itemId, u8 y);
|
||||
void sub_813D4D0(u8 y, u8 colorIdx);
|
||||
void sub_813D538(s32 itemIndex);
|
||||
void sub_813D5BC(void);
|
||||
void sub_813D6A4(void);
|
||||
void sub_813D6F4(void);
|
||||
@@ -55,7 +70,9 @@ void sub_813D754(void);
|
||||
void sub_813D7CC(void);
|
||||
void sub_813D8AC(void);
|
||||
void sub_813DA68(u8 taskId);
|
||||
void sub_813EC28(void);
|
||||
void sub_813E910(void);
|
||||
void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
|
||||
void sub_813EC08(void);
|
||||
|
||||
static const struct BgTemplate gUnknown_846434C[] = {
|
||||
@@ -86,6 +103,8 @@ static const struct BgTemplate gUnknown_846434C[] = {
|
||||
}
|
||||
};
|
||||
|
||||
extern const u8 gUnknown_84643B4[];
|
||||
|
||||
extern const struct CompressedSpriteSheet gUnknown_84644A8;
|
||||
extern const struct CompressedSpritePalette gUnknown_84644B0;
|
||||
|
||||
@@ -315,3 +334,144 @@ bool8 sub_813D0E4(void)
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_813D1C0(void)
|
||||
{
|
||||
gUnknown_203F37C = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem));
|
||||
if (gUnknown_203F37C == NULL)
|
||||
return FALSE;
|
||||
gUnknown_203F380 = Alloc(gUnknown_203F36C->unk_007 * 27);
|
||||
if (gUnknown_203F380 == NULL)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_813D204(void)
|
||||
{
|
||||
u16 i;
|
||||
struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1];
|
||||
for (i = 0; i < gUnknown_203F36C->unk_007; i++)
|
||||
{
|
||||
sub_813D31C(&gUnknown_203F380[i * 27], pocket->itemSlots[i].itemId);
|
||||
gUnknown_203F37C[i].label = &gUnknown_203F380[i * 27];
|
||||
gUnknown_203F37C[i].index = i;
|
||||
}
|
||||
gUnknown_203F37C[i].label = gText_Close;
|
||||
gUnknown_203F37C[i].index = i;
|
||||
gMultiuseListMenuTemplate.items = gUnknown_203F37C;
|
||||
if (gUnknown_203F370.unk_04 != 5)
|
||||
gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007 + 1;
|
||||
else
|
||||
gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007;
|
||||
gMultiuseListMenuTemplate.windowId = 0;
|
||||
gMultiuseListMenuTemplate.header_X = 0;
|
||||
gMultiuseListMenuTemplate.item_X = 9;
|
||||
gMultiuseListMenuTemplate.cursor_X = 1;
|
||||
gMultiuseListMenuTemplate.lettersSpacing = 0;
|
||||
gMultiuseListMenuTemplate.itemVerticalPadding = 2;
|
||||
gMultiuseListMenuTemplate.upText_Y = 2;
|
||||
gMultiuseListMenuTemplate.maxShowed = gUnknown_203F36C->unk_008;
|
||||
gMultiuseListMenuTemplate.fontId = 2;
|
||||
gMultiuseListMenuTemplate.cursorPal = 2;
|
||||
gMultiuseListMenuTemplate.fillValue = 0;
|
||||
gMultiuseListMenuTemplate.cursorShadowPal = 3;
|
||||
gMultiuseListMenuTemplate.moveCursorFunc = sub_813D3C0;
|
||||
gMultiuseListMenuTemplate.itemPrintFunc = sub_813D430;
|
||||
gMultiuseListMenuTemplate.cursorKind = 0;
|
||||
gMultiuseListMenuTemplate.scrollMultiple = 0;
|
||||
}
|
||||
|
||||
void sub_813D31C(u8 * dest, u16 itemId)
|
||||
{
|
||||
StringCopy(gStringVar4, gText_FontSize0);
|
||||
StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01);
|
||||
ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
|
||||
StringAppend(gStringVar4, gStringVar1);
|
||||
CopyItemName(itemId, gStringVar1);
|
||||
StringAppend(gStringVar4, gUnknown_84643B4);
|
||||
StringAppend(gStringVar4, gText_FontSize2);
|
||||
StringAppend(gStringVar4, gStringVar1);
|
||||
StringCopy(dest, gStringVar4);
|
||||
}
|
||||
|
||||
void sub_813D39C(s16 a0, u8 *dest)
|
||||
{
|
||||
StringCopy(dest, &gUnknown_203F380[a0 * 27]);
|
||||
}
|
||||
|
||||
void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list)
|
||||
{
|
||||
if (onInit != TRUE)
|
||||
{
|
||||
PlaySE(SE_W287B);
|
||||
sub_813EC28();
|
||||
}
|
||||
DestroyItemMenuIcon(gUnknown_203F36C->unk_009 ^ 1);
|
||||
if (gUnknown_203F36C->unk_007 != itemIndex)
|
||||
sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), gUnknown_203F36C->unk_009);
|
||||
else
|
||||
sub_80989A0(ITEM_N_A, gUnknown_203F36C->unk_009);
|
||||
gUnknown_203F36C->unk_009 ^= 1;
|
||||
sub_813D538(itemIndex);
|
||||
}
|
||||
|
||||
void sub_813D430(u8 windowId, s32 itemId, u8 y)
|
||||
{
|
||||
u16 unused;
|
||||
u16 itemQuantity;
|
||||
if (itemId != -2 && gUnknown_203F36C->unk_007 != itemId)
|
||||
{
|
||||
unused = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemId);
|
||||
itemQuantity = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, itemId);
|
||||
ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3);
|
||||
StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
|
||||
sub_813E9A0(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_813D4B0(u8 taskId, u8 colorIdx)
|
||||
{
|
||||
sub_813D4D0(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx);
|
||||
}
|
||||
|
||||
void sub_813D4D0(u8 y, u8 colorIdx)
|
||||
{
|
||||
u8 width;
|
||||
u8 height;
|
||||
if (colorIdx == 0xFF)
|
||||
{
|
||||
width = GetMenuCursorDimensionByFont(2, 0);
|
||||
height = GetMenuCursorDimensionByFont(2, 1);
|
||||
FillWindowPixelRect(0, 0, 1, y, width, height);
|
||||
CopyWindowToVram(0, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_813E9A0(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_813D538(s32 itemIdx)
|
||||
{
|
||||
const u8 *str;
|
||||
if (itemIdx != gUnknown_203F36C->unk_007)
|
||||
str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIdx));
|
||||
else
|
||||
str = gUnknown_8416716;
|
||||
FillWindowPixelBuffer(1, PIXEL_FILL(0));
|
||||
sub_813E9A0(1, 2, str, 0, 2, 2, 0, 0, 0);
|
||||
}
|
||||
|
||||
void sub_813D594(s32 pal)
|
||||
{
|
||||
SetBgRectPal(1, 0, 16, 30, 4, pal + 1);
|
||||
ScheduleBgCopyTilemapToVram(1);
|
||||
}
|
||||
|
||||
void sub_813D5BC(void)
|
||||
{
|
||||
if (gUnknown_203F370.unk_04 != 5)
|
||||
gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008 + 1, 110, 110, &gUnknown_203F370.unk_0A);
|
||||
else
|
||||
gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008, 110, 110, &gUnknown_203F370.unk_0A);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user