tm_case through sub_8132F20

This commit is contained in:
PikalaxALT
2019-04-14 18:42:50 -04:00
parent ae4e94dd73
commit 584bdbe5b5
9 changed files with 510 additions and 1455 deletions
-1442
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -48,5 +48,7 @@ void sub_810FF60(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
void sub_810F260(u8 windowId, u8 a1);
#endif // GUARD_MENU_H
+2
View File
@@ -22,5 +22,7 @@ bool8 sub_80BF72C(void);
bool8 sub_80BF708(void);
void sub_80BF768(void);
void sub_80BF7C8(void);
u8 sub_80BF8E4(void);
u8 sub_80BF848(s16 * a0, u16 a1);
#endif //GUARD_MENU_HELPERS_H
+2 -1
View File
@@ -11,12 +11,13 @@ void RemoveMoney(u32* moneyPtr, u32 toSub);
bool8 IsEnoughForCostInVar0x8005(void);
void SubtractMoneyFromVar0x8005(void);
void PrintMoneyAmountInMoneyBoxInMoneyBox(u8 windowId, int amount, u8 speed);
void PrintMoneyAmountInMoneyBox(u8 windowId, u8 x, u8 y, int amount, u8 speed);
void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed);
void PrintMoneyAmountInMoneyBoxInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount);
void ChangeAmountInMoneyBox(int amount);
void DrawMoneyBox(int amount, u8 x, u8 y);
void HideMoneyBox(void);
void AddMoneyLabelObject(u16 x, u16 y);
void RemoveMoneyLabelObject(void);
void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed);
#endif // GUARD_MONEY_H
+6
View File
@@ -12,10 +12,16 @@ enum {
AILMENT_BRN
};
extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
bool8 MonKnowsMove(struct Pokemon *, u16);
void sub_81B58A8(void);
void DoWallyTutorialBagMenu(void);
u8 pokemon_ailments_get_primary(u32 status);
u16 ItemIdToBattleMoveId(u16 itemId);
void sub_8125B40(u8 taskId, TaskFunc func);
void sub_8124C8C(void);
void sub_8126EDC(void);
void c2_8123744(void);
#endif // GUARD_PARTY_MENU_H
+1
View File
@@ -13,5 +13,6 @@ void CompactPartySlots(void);
u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
void sub_808BCB4(u8 boxId, u8 monPosition);
u8 * GetBoxNamePtr(u8 boxId);
void sub_808CE60(void);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
+1
View File
@@ -8,5 +8,6 @@ extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
void CreatePokemartMenu(const u16 *);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
void sub_809C09C(u16, u16, u8);
#endif // GUARD_SHOP_H
+6
View File
@@ -0,0 +1,6 @@
#ifndef GUARD_TEACHY_TV_H
#define GUARD_TEACHY_TV_H
void sub_815ABFC(void);
#endif //GUARD_TEACHY_TV_H
+490 -12
View File
@@ -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);
// 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[];
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_8416703[];
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;
}
}