summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-14 18:42:50 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-04-14 18:42:50 -0400
commit584bdbe5b57b28fbb06c1e49235f12f7de8c79ed (patch)
treee949cf66180a0d9cb0216c85683b4bf59667ebb4 /src
parentae4e94dd73deef0165801917b63fa8fb3e74b242 (diff)
tm_case through sub_8132F20
Diffstat (limited to 'src')
-rw-r--r--src/tm_case.c500
1 files changed, 489 insertions, 11 deletions
diff --git a/src/tm_case.c b/src/tm_case.c
index bc91de20f..b63260aaf 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -11,6 +11,12 @@
#include "new_menu_helpers.h"
#include "list_menu.h"
#include "item.h"
+#include "item_menu.h"
+#include "link.h"
+#include "money.h"
+#include "shop.h"
+#include "teachy_tv.h"
+#include "pokemon_storage_system.h"
#include "string_util.h"
#include "party_menu.h"
#include "data2.h"
@@ -39,7 +45,8 @@ struct UnkStruct_203B118
u8 unk_07;
u8 unk_08;
u16 unk_0a;
- u8 filler_0c[6];
+ const u8 * unk_0c;
+ u8 unk_10;
s16 unk_12;
u8 filler_14[8];
};
@@ -78,34 +85,70 @@ void sub_8132120(void);
void sub_8132170(void);
void sub_813226C(u8 taskId);
void sub_81322D4(u8 taskId);
+void sub_8132568(u8 taskId);
+void sub_81326F8(u8 taskId);
+void sub_8132714(u8 taskId);
+void sub_8132758(u8 taskId);
+void sub_8132780(u8 taskId);
+void sub_81329C4(u8 taskId);
+void sub_8132A34(u8 taskId);
+void sub_8132AAC(u8 taskId);
+void sub_8132B5C(s16 quantity, s32 value);
+void sub_8132BC8(u8 taskId);
+void sub_8132D34(u8 taskId);
+void sub_8132E0C(u8 taskId);
void sub_8132F20(u8 taskId);
+void sub_8132F60(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_8133354(u8 windowId);
+void sub_8133368(u8 windowId);
+void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func);
void sub_81333C4(void);
void sub_8133404(void);
void sub_8133444(u16 itemId);
void sub_81335B0(u8 windowId, u8 x, u8 y);
+void sub_81335E0(void);
+void sub_8133604(u8 taskId, const u8 *const *ptrs);
+u8 sub_8133630(u8 * a0, u8 a1);
+void sub_8133664(u8 * a0);
u8 sub_813368C(u16 itemId);
void sub_81337E4(u8 a0, u16 itemId);
void sub_81338A8(void);
-extern const struct BgTemplate gUnknown_8463134[3];
-extern const u32 gUnknown_8E845D8[];
-extern const u32 gUnknown_8E84A24[];
-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[];
-
+// event scripts
extern const u8 gUnknown_8416226[];
extern const u8 gFameCheckerText_ListMenuCursor[];
extern const u8 gUnknown_84162B9[];
+extern const u8 gUnknown_8416301[];
+extern const u8 gUnknown_841632A[];
+extern const u8 gUnknown_841635E[];
extern const u8 gUnknown_84166DB[];
extern const u8 gUnknown_84166E1[];
extern const u8 gUnknown_84166FF[];
extern const u8 gUnknown_8416703[];
+extern const u8 gUnknown_84168F1[];
+extern const u8 gUnknown_8416911[];
+extern const u8 gUnknown_8416936[];
+extern const u8 gUnknown_8416959[];
+
+// my rodata
+extern const struct BgTemplate gUnknown_8463134[3];
+extern void (*const gUnknown_8463140[])(u8 taskId);
+extern const struct MenuAction gUnknown_8463150[];
+extern const u8 gUnknown_8463168[];
+extern const u8 gUnknown_846316B[];
+extern const u8 *const gUnknown_8463170[];
+extern const u8 gUnknown_8463178[];
+extern const u8 gUnknown_846317C[];
+extern const struct CompressedSpriteSheet gUnknown_8463218;
+
+// graphics
+extern const u32 gUnknown_8E845D8[];
+extern const u32 gUnknown_8E84A24[];
+extern const u32 gUnknown_8E84B70[];
+extern const u32 gUnknown_8E84CB0[];
+extern const u32 gUnknown_8E84D20[];
void sub_81317F8(u8 a0, void (* a1)(void), u8 a2)
{
@@ -565,3 +608,438 @@ void sub_813226C(u8 taskId)
DestroyTask(taskId);
}
}
+
+void sub_81322D4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s32 input;
+
+ if (!gPaletteFade.active)
+ {
+ if (sub_80BF72C() != TRUE)
+ {
+ input = ListMenuHandleInput(data[0]);
+ get_coro_args_x18_x1A(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08);
+ if (JOY_NEW(SELECT_BUTTON) && gUnknown_203B10C.unk_05 == 1)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = ITEM_NONE;
+ sub_8132230(taskId);
+ }
+ else
+ {
+ switch (input)
+ {
+ case -1:
+ break;
+ case -2:
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = 0;
+ sub_8132230(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sub_8131F64(1);
+ sub_813208C();
+ sub_8131F90(data[0], 2);
+ data[1] = input;
+ data[2] = sub_809A7B4(POCKET_TM_CASE, input);
+ gSpecialVar_ItemId = sub_809A798(POCKET_TM_CASE, input);
+ gTasks[taskId].func = gUnknown_8463140[gUnknown_203B10C.unk_04];
+ break;
+ }
+ }
+ }
+ }
+}
+
+void sub_81323E4(u8 taskId)
+{
+ sub_8131F64(0);
+ sub_8132018();
+ gTasks[taskId].func = sub_81322D4;
+}
+
+void sub_8132414(u8 taskId)
+{
+ u8 * strbuf;
+ sub_8133368(2);
+ if (!sub_80BF708() && InUnionRoom() != TRUE)
+ {
+ sub_8133630(&gUnknown_203B118->unk_07, 0);
+ gUnknown_203B118->unk_0c = gUnknown_8463168;
+ gUnknown_203B118->unk_10 = 3;
+ }
+ else
+ {
+ sub_8133630(&gUnknown_203B118->unk_07, 1);
+ gUnknown_203B118->unk_0c = gUnknown_846316B;
+ gUnknown_203B118->unk_10 = 2;
+ }
+ AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c);
+ ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0);
+ strbuf = Alloc(256);
+ sub_8131D48(strbuf, gSpecialVar_ItemId);
+ StringAppend(strbuf, gUnknown_8416301);
+ sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1);
+ Free(strbuf);
+ if (itemid_is_unique(gSpecialVar_ItemId))
+ {
+ sub_81335B0(2, 0, 2);
+ CopyWindowToVram(2, 2);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ gTasks[taskId].func = sub_8132568;
+}
+
+void sub_8132568(u8 taskId)
+{
+ s8 input;
+
+ if (sub_80BF72C() != TRUE)
+ {
+ input = ProcessMenuInputNoWrapAround();
+ switch (input)
+ {
+ case -1:
+ PlaySE(SE_SELECT);
+ gUnknown_8463150[gUnknown_203B118->unk_0c[gUnknown_203B118->unk_10 - 1]].func.void_u8(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ gUnknown_8463150[gUnknown_203B118->unk_0c[input]].func.void_u8(taskId);
+ break;
+ }
+ }
+}
+
+void sub_81325F0(u8 taskId)
+{
+ sub_8133664(&gUnknown_203B118->unk_07);
+ sub_810F4D8(2, 0);
+ ClearWindowTilemap(2);
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ if (CalculatePlayerPartyCount() == 0)
+ {
+ sub_81326F8(taskId);
+ }
+ else
+ {
+ gUnknown_3005E98 = sub_8125B40;
+ gUnknown_203B118->unk_00 = sub_8124C8C;
+ sub_8132230(taskId);
+ }
+}
+
+void sub_813265C(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]);
+ sub_8133664(&gUnknown_203B118->unk_07);
+ sub_810F4D8(2, 0);
+ ClearWindowTilemap(2);
+ PutWindowTilemap(1);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ if (!itemid_is_unique(itemId))
+ {
+ if (CalculatePlayerPartyCount() == 0)
+ {
+ sub_81326F8(taskId);
+ }
+ else
+ {
+ gUnknown_203B118->unk_00 = sub_8126EDC;
+ sub_8132230(taskId);
+ }
+ }
+ else
+ {
+ sub_8132714(taskId);
+ }
+}
+
+void sub_81326F8(u8 taskId)
+{
+ sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758);
+}
+
+void sub_8132714(u8 taskId)
+{
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841635E);
+ sub_813337C(taskId, 2, gStringVar4, sub_8132758);
+}
+
+void sub_8132758(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_8132780(taskId);
+ }
+}
+
+void sub_8132780(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08);
+ data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08);
+ sub_8131F90(data[0], 1);
+ sub_810F260(6, 0);
+ ClearWindowTilemap(6);
+ PutWindowTilemap(1);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_81323E4(taskId);
+}
+
+void sub_81327FC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_8133664(&gUnknown_203B118->unk_07);
+ sub_810F4D8(2, 0);
+ ClearWindowTilemap(2);
+ PutWindowTilemap(0);
+ sub_8131F90(data[0], 1);
+ PutWindowTilemap(1);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_81323E4(taskId);
+}
+
+void sub_8132868(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1])))
+ {
+ gUnknown_203B118->unk_00 = c2_8123744;
+ sub_8132230(taskId);
+ }
+ else
+ {
+ sub_8132714(taskId);
+ }
+}
+
+void sub_81328B8(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1])))
+ {
+ gUnknown_203B118->unk_00 = sub_808CE60;
+ sub_8132230(taskId);
+ }
+ else
+ {
+ sub_8132714(taskId);
+ }
+}
+
+void sub_8132908(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (itemid_get_market_price(gSpecialVar_ItemId) == 0)
+ {
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84168F1);
+ sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132780);
+ }
+ else
+ {
+ data[8] = 1;
+ if (data[2] == 1)
+ {
+ sub_81335E0();
+ sub_81329C4(taskId);
+ }
+ else
+ {
+ if (data[2] > 99)
+ data[2] = 99;
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416911);
+ sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132AAC);
+ }
+ }
+}
+
+void sub_81329C4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416936);
+ sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34);
+}
+
+void sub_8132A34(u8 taskId)
+{
+ sub_8133604(taskId, gUnknown_8463170);
+}
+
+void sub_8132A48(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_810F4D8(8, 0);
+ sub_810F260(6, 0);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(3);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_8131F90(data[0], 1);
+ sub_81323E4(taskId);
+}
+
+void sub_8132AAC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_8133354(7);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84162B9);
+ sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+ sub_8132B5C(1, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]);
+ sub_81335E0();
+ sub_8132054();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ gTasks[taskId].func = sub_8132BC8;
+}
+
+void sub_8132B5C(s16 quantity, s32 amount)
+{
+ FillWindowPixelBuffer(7, 0x11);
+ ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84162B9);
+ sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1);
+ PrintMoneyAmount(7, 0x38, 0x0A, amount, 0);
+}
+
+void sub_8132BC8(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (sub_80BF848(&data[8], data[2]) == 1)
+ {
+ sub_8132B5C(data[8], itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]);
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810F4D8(7, 0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_813208C();
+ sub_81329C4(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810F4D8(7, 0);
+ sub_810F4D8(8, 0);
+ sub_810F260(6, 0);
+ PutWindowTilemap(3);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_813208C();
+ sub_8131F90(data[0], 1);
+ sub_81323E4(taskId);
+ }
+}
+
+void sub_8132CAC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ CopyItemName(gSpecialVar_ItemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416959);
+ sub_813337C(taskId, 2, gStringVar4, sub_8132D34);
+}
+
+void sub_8132D34(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ PlaySE(0xF8);
+ RemoveBagItem(gSpecialVar_ItemId, data[8]);
+ AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
+ sub_809C09C(gSpecialVar_ItemId, data[8], 2);
+ sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08);
+ sub_81320BC();
+ sub_8132120();
+ sub_8131C50();
+ data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08);
+ sub_8131F90(data[0], 2);
+ PrintMoneyAmountInMoneyBox(8, GetMoney(&gSaveBlock1Ptr->money), 0);
+ gTasks[taskId].func = sub_8132E0C;
+}
+
+void sub_8132E0C(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810F4D8(8, 0);
+ sub_810F260(6, 0);
+ PutWindowTilemap(1);
+ PutWindowTilemap(3);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ sub_8132780(taskId);
+ }
+}
+
+void sub_8132E64(void)
+{
+ gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C));
+ memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
+ memcpy(gUnknown_203B11C->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
+ gUnknown_203B11C->unk_160 = gUnknown_203B10C.unk_08;
+ gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a;
+ ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM));
+ ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems));
+ sub_81320AC();
+ AddBagItem(ITEM_TM01, 1);
+ AddBagItem(ITEM_TM03, 1);
+ AddBagItem(ITEM_TM09, 1);
+ AddBagItem(ITEM_TM35, 1);
+ sub_81317F8(4, sub_815ABFC, 0);
+}
+
+void sub_8132F20(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ data[8] = 0;
+ data[9] = 0;
+ gTasks[taskId].func = sub_8132F60;
+ }
+}