tm_case through sub_8132120

This commit is contained in:
PikalaxALT
2019-04-14 15:59:22 -04:00
parent ed4b353795
commit ef00905bd7
8 changed files with 197 additions and 505 deletions
+154 -8
View File
@@ -8,13 +8,17 @@
#include "text.h"
#include "menu.h"
#include "menu_helpers.h"
#include "new_menu_helpers.h"
#include "list_menu.h"
#include "item.h"
#include "string_util.h"
#include "party_menu.h"
#include "data2.h"
#include "scanline_effect.h"
#include "sound.h"
#include "menu_indicators.h"
#include "constants/items.h"
#include "constants/songs.h"
struct UnkStruct_203B10C
{
@@ -34,7 +38,8 @@ struct UnkStruct_203B118
u8 unk_06;
u8 unk_07;
u8 unk_08;
u8 filler_09[9];
u16 unk_0a;
u8 filler_0c[6];
s16 unk_12;
u8 filler_14[8];
};
@@ -65,6 +70,8 @@ void sub_8131C50(void);
void sub_8131D48(u8 * dest, u16 itemId);
void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list);
void sub_8131E68(u8 windowId, s32 itemId, u8 y);
void sub_8131F0C(s32 itemIndex);
void sub_8131FB0(u8 a0, u8 a1);
void sub_8132018(void);
void sub_81320BC(void);
void sub_8132120(void);
@@ -72,9 +79,13 @@ void sub_8132170(void);
void sub_81322D4(u8 taskId);
void sub_8132F20(u8 taskId);
void sub_8133244(void);
void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
void sub_81333C4(void);
void sub_8133404(void);
void sub_8133444(u16 itemId);
void sub_81335B0(u8 windowId, u8 x, u8 y);
u8 sub_813368C(u16 itemId);
void sub_81337E4(u8 a0, u16 itemId);
void sub_81338A8(void);
extern const struct BgTemplate gUnknown_8463134[3];
@@ -84,12 +95,15 @@ extern const u32 gUnknown_8E84B70[];
extern const u32 gUnknown_8E84CB0[];
extern const u32 gUnknown_8E84D20[];
extern const struct CompressedSpriteSheet gUnknown_8463218;
extern const u8 gUnknown_84166DB[];
extern const u8 gUnknown_84166FF[];
extern const u8 gUnknown_8463178[];
extern const u8 gUnknown_8416226[];
extern const u8 gUnknown_846317C[];
extern const u8 gUnknown_8416226[];
extern const u8 gFameCheckerText_ListMenuCursor[];
extern const u8 gUnknown_84162B9[];
extern const u8 gUnknown_84166DB[];
extern const u8 gUnknown_84166E1[];
extern const u8 gUnknown_84166FF[];
extern const u8 gUnknown_8416703[];
void sub_81317F8(u8 a0, void (* a1)(void), u8 a2)
@@ -183,7 +197,7 @@ bool8 sub_81318C0(void)
gMain.state++;
break;
case 9:
sub_809A5E4(&gUnknown_20398A4);
sub_809A5E4(&gBagPockets[POCKET_TM_CASE - 1]);
gMain.state++;
break;
case 10:
@@ -307,14 +321,14 @@ bool8 sub_8131B20(void)
void sub_8131C10(void)
{
struct BagPocket * pocket = &gUnknown_20398A4;
struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1];
gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem));
gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29);
}
void sub_8131C50(void)
{
struct BagPocket * pocket = &gUnknown_20398A4;
struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1];
u16 i;
for (i = 0; i < gUnknown_203B118->unk_06; i++)
@@ -366,3 +380,135 @@ void sub_8131D48(u8 * dest, u16 itemId)
StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]);
StringCopy(dest, gStringVar4);
}
void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list)
{
u16 itemId;
if (itemIndex == -2)
itemId = 0;
else
itemId = sub_809A798(POCKET_TM_CASE, itemIndex);
if (onInit != TRUE)
{
PlaySE(SE_SELECT);
sub_81337E4(gUnknown_203B118->unk_04, itemId);
}
sub_8131F0C(itemIndex);
sub_8133444(itemId);
}
void sub_8131E68(u8 windowId, s32 itemId, u8 y)
{
if (itemId != -2)
{
if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, itemId)))
{
ConvertIntToDecimalStringN(gStringVar1, sub_809A7B4(POCKET_TM_CASE, itemId), STR_CONV_MODE_RIGHT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, gUnknown_84162B9);
sub_81332EC(windowId, 0, gStringVar4, 0x7E, y, 0, 0, 0xFF, 1);
}
else
{
sub_81335B0(windowId, 8, y);
}
}
}
void sub_8131F0C(s32 itemIndex)
{
const u8 * str;
if (itemIndex != -2)
{
str = ItemId_GetDescription(sub_809A798(POCKET_TM_CASE, itemIndex));
}
else
{
str = gUnknown_84166E1;
}
FillWindowPixelBuffer(1, 0);
sub_81332EC(1, 2, str, 2, 3, 1, 0, 0, 0);
}
void sub_8131F64(s32 a0)
{
sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1);
schedule_bg_copy_tilemap_to_vram(2);
}
void sub_8131F90(u8 a0, u8 a1)
{
sub_8131FB0(ListMenuGetYCoordForPrintingArrowCursor(a0), a1);
}
void sub_8131FB0(u8 a0, u8 a1)
{
if (a1 == 0xFF)
{
FillWindowPixelRect(0, 0, 0, a0, GetFontAttribute(2, 0), GetFontAttribute(2, 1));
CopyWindowToVram(0, 2);
}
else
{
sub_81332EC(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1);
}
}
void sub_8132018(void)
{
gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, gUnknown_203B118->unk_06 - gUnknown_203B118->unk_05 + 1, 0x6E, 0x6E, &gUnknown_203B10C.unk_0a);
}
void sub_8132054(void)
{
gUnknown_203B118->unk_0a = 1;
gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gUnknown_203B118->unk_0a);
}
void sub_813208C(void)
{
if (gUnknown_203B118->unk_08 != 0xFF)
{
RemoveScrollIndicatorArrowPair(gUnknown_203B118->unk_08);
gUnknown_203B118->unk_08 = 0xFF;
}
}
void sub_81320AC(void)
{
gUnknown_203B10C.unk_08 = 0;
gUnknown_203B10C.unk_0a = 0;
}
void sub_81320BC(void)
{
struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1];
u16 i;
sub_809A584(pocket->itemSlots, pocket->capacity);
gUnknown_203B118->unk_06 = 0;
for (i = 0; i < pocket->capacity; i++)
{
if (pocket->itemSlots[i].itemId == ITEM_NONE)
break;
gUnknown_203B118->unk_06++;
}
gUnknown_203B118->unk_05 = min(gUnknown_203B118->unk_06 + 1, 5);
}
void sub_8132120(void)
{
if (gUnknown_203B10C.unk_0a != 0)
{
if (gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 > gUnknown_203B118->unk_06 + 1)
gUnknown_203B10C.unk_0a = gUnknown_203B118->unk_06 + 1 - gUnknown_203B118->unk_05;
}
if (gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08 >= gUnknown_203B118->unk_06 + 1)
{
if (gUnknown_203B118->unk_06 + 1 < 2)
gUnknown_203B10C.unk_08 = 0;
else
gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06;
}
}