summaryrefslogtreecommitdiff
path: root/src/item_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/item_menu.c')
-rwxr-xr-xsrc/item_menu.c255
1 files changed, 27 insertions, 228 deletions
diff --git a/src/item_menu.c b/src/item_menu.c
index e88d1c2d3..8c05f0828 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "item_menu.h"
#include "battle.h"
#include "battle_controllers.h"
#include "battle_frontier_2.h"
@@ -58,7 +59,6 @@ void load_bag_item_list_buffers(u8);
void bag_menu_print_pocket_names(u8*, u8*);
void bag_menu_copy_pocket_name_to_window(u32);
void bag_menu_draw_pocket_indicator_square(u8, u8);
-void AddBagVisualObject(u8);
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void);
void bag_menu_add_list_scroll_arrow_indicators_maybe(void);
void bag_menu_prepare_tmhm_move_window(void);
@@ -67,9 +67,8 @@ void Task_WallyTutorialBagMenu(u8);
void Task_BagMenu(u8);
void get_name(s8*, u16);
u16 ItemIdToBattleMoveId(u16);
-void ShakeBagVisual(void);
u16 BagGetItemIdByPocketPosition(u8, u16);
-void AddBagItemIconObject(u16, u8);
+void AddBagItemIconSprite(u16, u8);
void bag_menu_print_description_box_text(int);
void bag_menu_print_cursor(u8, u8);
void bag_menu_print(u8, u8, const u8*, u8, u8, u8, u8, u8, u8);
@@ -86,9 +85,6 @@ u8 GetSwitchBagPocketDirection(void);
void SwitchBagPocket(u8, s16, u16);
bool8 sub_81AC2C0(void);
void bag_menu_swap_items(u8);
-void SetBagVisualPocketId(u8, u8);
-void RemoveBagObject(u8);
-void AddSwitchPocketRotatingBallObject(s16);
void sub_81AC10C(u8);
void sub_81AC3C0(u8);
void sub_81AC498(u8);
@@ -128,7 +124,7 @@ void sub_81ABAC4(void);
void sub_81ABAE0(void);
u8 sub_81AB1F0(u8);
void sub_81AC23C(u8);
-void bag_menu_change_item_callback(u32 a, bool8 b, struct ListMenu*);
+void bag_menu_change_item_callback(s32 a, bool8 b, struct ListMenu*);
void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a);
void ItemMenu_UseOutOfBattle(u8 taskId);
void ItemMenu_Toss(u8 taskId);
@@ -251,46 +247,6 @@ const struct WindowTemplate gUnknown_086141AC[] = {
// .text
-struct BagStruct {
- void (*bagCallback)(void);
- u8 location;
- u8 pocket;
- u8 unk6[2];
- u16 cursorPosition[5];
- u16 scrollPosition[5];
-};
-
-struct UnkBagStruct {
- MainCallback unk0;
- u8 unk4[0x800];
- u8 unk804;
- u8 unk805;
- u8 unk806[10];
- u8 unk810[7];
- u8 unk817;
- u8 unk818;
- u8 unk819;
- u8 unk81A;
- u8 unk81B:4;
- u8 unk81B_1:2;
- u8 unk81B_3:1;
- u8 unk81B_2:1;
- u8 filler3[2];
- u8 unk81E;
- u8 unk81F;
- const u8* unk820;
- u8 unk824;
- u8 unk825;
- u8 filler[2];
- u8 unk828;
- u8 unk829[5];
- u8 unk82E[6];
- s16 unk834;
- u8 filler4[0xE];
- u8 unk844[32][32];
- u8 filler2[4];
-};
-
struct ListBuffer1 {
struct ListMenuItem subBuffers[65];
};
@@ -319,16 +275,12 @@ void (*gFieldCallback)(void);
extern u8 *gPocketNamesStringsTable[];
extern u8 gUnknown_08D9A88C[];
-extern struct CompressedSpriteSheet gUnknown_0857FB34;
-extern struct CompressedSpriteSheet gUnknown_0857FB3C;
-extern struct CompressedSpritePalette gUnknown_0857FB44;
extern struct ListMenuTemplate gUnknown_08613F9C;
-extern u8 gMoveNames[][0xD];
+extern const u8 gMoveNames[][0xD];
extern u8* gReturnToXStringsTable[];
extern u32 gUnknown_0203CE5E[];
-extern u8 EventScript_2736B3[];
+extern const u8 EventScript_2736B3[];
extern const u16 gUnknown_0860F074[];
-extern struct BattleMove gBattleMoves[];
void ResetBagScrollPositions(void)
{
@@ -412,7 +364,7 @@ void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)
gUnknown_0203CE54->unk81A = 0xFF;
gUnknown_0203CE54->unk81E = -1;
gUnknown_0203CE54->unk81F = -1;
- memset(&gUnknown_0203CE54->unk804, 0xFF, 12);
+ memset(gUnknown_0203CE54->unk804, 0xFF, sizeof(gUnknown_0203CE54->unk804));
memset(gUnknown_0203CE54->unk810, 0xFF, 10);
SetMainCallback2(CB2_Bag);
}
@@ -518,7 +470,7 @@ bool8 setup_bag_menu(void)
gMain.state++;
break;
case 15:
- AddBagVisualObject(gUnknown_0203CE58.pocket);
+ AddBagVisualSprite(gUnknown_0203CE58.pocket);
gMain.state++;
break;
case 16:
@@ -689,7 +641,7 @@ void get_name(s8 *dest, u16 itemId)
}
}
-void bag_menu_change_item_callback(u32 a, bool8 b, struct ListMenu *unused)
+void bag_menu_change_item_callback(s32 a, bool8 b, struct ListMenu *unused)
{
if (b != 1)
{
@@ -698,11 +650,11 @@ void bag_menu_change_item_callback(u32 a, bool8 b, struct ListMenu *unused)
}
if (gUnknown_0203CE54->unk81A == 0xFF)
{
- RemoveBagItemIconObject(1 ^ gUnknown_0203CE54->unk81B_1);
+ RemoveBagItemIconSprite(1 ^ gUnknown_0203CE54->unk81B_1);
if (a != -2)
- AddBagItemIconObject(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, a), gUnknown_0203CE54->unk81B_1);
+ AddBagItemIconSprite(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, a), gUnknown_0203CE54->unk81B_1);
else
- AddBagItemIconObject(-1, gUnknown_0203CE54->unk81B_1);
+ AddBagItemIconSprite(-1, gUnknown_0203CE54->unk81B_1);
gUnknown_0203CE54->unk81B_1 ^= 1;
if (!gUnknown_0203CE54->unk81B_3)
bag_menu_print_description_box_text(a);
@@ -831,7 +783,7 @@ void task_close_bag_menu_2(u8 taskId)
s16* data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
- sub_81AE6C8(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
if (gUnknown_0203CE54->unk0 != 0)
SetMainCallback2(gUnknown_0203CE54->unk0);
else
@@ -916,7 +868,7 @@ void bag_menu_inits_lists_menu(u8 taskId)
u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
bag_menu_RemoveBagItem_message_window(4);
- sub_81AE6C8(data[0], scrollPos, cursorPos);
+ DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
sub_81ABA88(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
@@ -968,7 +920,7 @@ void Task_BagMenu(u8 taskId)
{
if (sub_81AC2C0() == 1)
{
- sub_81AE860(data[0], scrollPos, cursorPos);
+ ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - 1)
{
PlaySE(SE_SELECT);
@@ -980,7 +932,7 @@ void Task_BagMenu(u8 taskId)
else
{
int r4 = ListMenuHandleInputGetItemId(data[0]);
- sub_81AE860(data[0], scrollPos, cursorPos);
+ ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
switch (r4)
{
case -1:
@@ -1039,7 +991,6 @@ u8 GetSwitchBagPocketDirection(void)
return 0;
}
-
void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId)
{
if (deltaBagPocketId == 1 && *bagPocketId == 4)
@@ -1050,13 +1001,11 @@ void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId)
*bagPocketId += deltaBagPocketId;
}
-#ifdef NONMATCHING
void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
{
s16* data = gTasks[taskId].data;
u8 pocketId;
-
data[13] = 0;
data[12] = 0;
data[11] = deltaBagPocketId;
@@ -1064,9 +1013,9 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
{
ClearWindowTilemap(0);
ClearWindowTilemap(1);
- sub_81AE6C8(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
schedule_bg_copy_tilemap_to_vram(0);
- gSprites[gUnknown_0203CE54->unk806[gUnknown_0203CE54->unk81B_1 ^ 1]].invisible = 1;
+ gSprites[gUnknown_0203CE54->unk804[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = 1;
sub_81AB824();
}
pocketId = gUnknown_0203CE58.pocket;
@@ -1086,160 +1035,10 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16);
schedule_bg_copy_tilemap_to_vram(2);
SetBagVisualPocketId(pocketId, 1);
- RemoveBagObject(1);
- AddSwitchPocketRotatingBallObject(deltaBagPocketId);
+ RemoveBagSprite(1);
+ AddSwitchPocketRotatingBallSprite(deltaBagPocketId);
SetTaskFuncWithFollowupFunc(taskId, sub_81AC10C, gTasks[taskId].func);
}
-#else
-__attribute__((naked))
-void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0xC\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- lsls r1, 16\n\
- lsrs r5, r1, 16\n\
- lsls r2, 16\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r0, 3\n\
- ldr r1, =gTasks + 0x8\n\
- adds r4, r0, r1\n\
- movs r0, 0\n\
- strh r0, [r4, 0x1A]\n\
- strh r0, [r4, 0x18]\n\
- strh r5, [r4, 0x16]\n\
- cmp r2, 0\n\
- bne _081AC026\n\
- movs r0, 0\n\
- bl ClearWindowTilemap\n\
- movs r0, 0x1\n\
- bl ClearWindowTilemap\n\
- ldrb r0, [r4]\n\
- ldr r3, =gUnknown_0203CE58\n\
- ldrb r2, [r3, 0x5]\n\
- lsls r2, 1\n\
- adds r1, r3, 0\n\
- adds r1, 0x12\n\
- adds r1, r2, r1\n\
- adds r3, 0x8\n\
- adds r2, r3\n\
- bl sub_81AE6C8\n\
- movs r0, 0\n\
- bl schedule_bg_copy_tilemap_to_vram\n\
- ldr r3, =gSprites\n\
- ldr r0, =gUnknown_0203CE54\n\
- ldr r2, [r0]\n\
- ldr r1, =0x0000081b\n\
- adds r0, r2, r1\n\
- ldrb r1, [r0]\n\
- lsls r1, 26\n\
- lsrs r1, 30\n\
- movs r0, 0x1\n\
- eors r0, r1\n\
- adds r2, r0\n\
- ldr r0, =0x00000806\n\
- adds r2, r0\n\
- ldrb r1, [r2]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- adds r0, 0x3E\n\
- ldrb r1, [r0]\n\
- movs r2, 0x4\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
- bl sub_81AB824\n\
-_081AC026:\n\
- ldr r4, =gUnknown_0203CE58\n\
- ldrb r1, [r4, 0x5]\n\
- add r0, sp, 0x8\n\
- strb r1, [r0]\n\
- lsls r1, r5, 24\n\
- asrs r1, 24\n\
- bl ChangeBagPocketId\n\
- lsls r0, r5, 16\n\
- asrs r1, r0, 16\n\
- adds r5, r0, 0\n\
- cmp r1, 0x1\n\
- bne _081AC07C\n\
- ldr r2, =gPocketNamesStringsTable\n\
- ldrb r0, [r4, 0x5]\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- add r1, sp, 0x8\n\
- ldrb r1, [r1]\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldr r1, [r1]\n\
- bl bag_menu_print_pocket_names\n\
- movs r0, 0\n\
- bl bag_menu_copy_pocket_name_to_window\n\
- b _081AC09A\n\
- .pool\n\
-_081AC07C:\n\
- ldr r2, =gPocketNamesStringsTable\n\
- add r0, sp, 0x8\n\
- ldrb r0, [r0]\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ldrb r1, [r4, 0x5]\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldr r1, [r1]\n\
- bl bag_menu_print_pocket_names\n\
- movs r0, 0x8\n\
- bl bag_menu_copy_pocket_name_to_window\n\
-_081AC09A:\n\
- ldr r0, =gUnknown_0203CE58\n\
- ldrb r0, [r0, 0x5]\n\
- movs r1, 0\n\
- bl bag_menu_draw_pocket_indicator_square\n\
- add r0, sp, 0x8\n\
- ldrb r0, [r0]\n\
- movs r1, 0x1\n\
- bl bag_menu_draw_pocket_indicator_square\n\
- movs r0, 0xF\n\
- str r0, [sp]\n\
- movs r0, 0x10\n\
- str r0, [sp, 0x4]\n\
- movs r0, 0x2\n\
- movs r1, 0xB\n\
- movs r2, 0xE\n\
- movs r3, 0x2\n\
- bl FillBgTilemapBufferRect_Palette0\n\
- movs r0, 0x2\n\
- bl schedule_bg_copy_tilemap_to_vram\n\
- add r0, sp, 0x8\n\
- ldrb r0, [r0]\n\
- movs r1, 0x1\n\
- bl SetBagVisualPocketId\n\
- movs r0, 0x1\n\
- bl RemoveBagObject\n\
- asrs r0, r5, 16\n\
- bl AddSwitchPocketRotatingBallObject\n\
- ldr r1, =sub_81AC10C\n\
- ldr r2, =gTasks\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- ldr r2, [r0]\n\
- adds r0, r6, 0\n\
- bl SetTaskFuncWithFollowupFunc\n\
- add sp, 0xC\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided\n");
-}
-#endif
void sub_81AC10C(u8 taskId)
{
@@ -1341,13 +1140,13 @@ void sub_81AC3C0(u8 taskId)
if (gMain.newKeys & SELECT_BUTTON)
{
PlaySE(SE_SELECT);
- sub_81AE860(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ ListMenuGetScrollAndRow(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
sub_81AC498(taskId);
}
else
{
r7 = ListMenuHandleInputGetItemId(data[0]);
- sub_81AE860(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ ListMenuGetScrollAndRow(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
sub_80D4FC8(0);
sub_80D4FEC(gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
switch (r7)
@@ -1382,7 +1181,7 @@ void sub_81AC498(u8 taskId)
{
sub_80D702C(gBagPockets[gUnknown_0203CE58.pocket].itemSlots, data[1], realPos);
gUnknown_0203CE54->unk81A = -1;
- sub_81AE6C8(data[0], scrollPos, cursorPos);
+ DestroyListMenuTask(data[0], scrollPos, cursorPos);
if (data[1] < realPos)
gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]--;
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
@@ -1400,7 +1199,7 @@ void sub_81AC590(u8 taskId)
u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
gUnknown_0203CE54->unk81A = -1;
- sub_81AE6C8(data[0], scrollPos, cursorPos);
+ DestroyListMenuTask(data[0], scrollPos, cursorPos);
if (data[1] < (*scrollPos + *cursorPos))
gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]--;
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
@@ -1772,7 +1571,7 @@ void Task_ActuallyToss(u8 taskId)
{
PlaySE(SE_SELECT);
RemoveBagItem(gSpecialVar_ItemId, data[8]);
- sub_81AE6C8(data[0], scrollPos, cursorPos);
+ DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
sub_81ABA88(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
@@ -1792,7 +1591,7 @@ void ItemMenu_Register(u8 taskId)
gSaveBlock1Ptr->registeredItem = 0;
else
gSaveBlock1Ptr->registeredItem = gSpecialVar_ItemId;
- sub_81AE6C8(data[0], scrollPos, cursorPos);
+ DestroyListMenuTask(data[0], scrollPos, cursorPos);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
@@ -2040,7 +1839,7 @@ void sub_81AD8C8(u8 taskId)
PlaySE(SE_REGI);
RemoveBagItem(gSpecialVar_ItemId, data[8]);
AddMoney(&gSaveBlock1Ptr->money, (itemid_get_market_price(gSpecialVar_ItemId) / 2) * data[8]);
- sub_81AE6C8(data[0], scrollPos, cursorPos);
+ DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
sub_81ABA88(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
@@ -2213,7 +2012,7 @@ void Task_WallyTutorialBagMenu(u8 taskId)
case 0x132:
PlaySE(SE_SELECT);
bag_menu_remove_some_window();
- sub_81AE6C8(data[0], 0, 0);
+ DestroyListMenuTask(data[0], 0, 0);
RestoreBagAfterWallyTutorial();
unknown_ItemMenu_Confirm(taskId);
break;