summaryrefslogtreecommitdiff
path: root/src/tm_case.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tm_case.c')
-rw-r--r--src/tm_case.c160
1 files changed, 153 insertions, 7 deletions
diff --git a/src/tm_case.c b/src/tm_case.c
index 011af5d94..60f9c5bcb 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -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_8463178[];
+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_8463178[];
-extern const u8 gUnknown_8416226[];
-extern const u8 gUnknown_846317C[];
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;
+ }
+}