summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/item_menu.s325
-rw-r--r--data/item_menu.s1
-rw-r--r--data/strings.s16
-rw-r--r--include/constants/item_menu.h17
-rw-r--r--include/item_menu.h3
-rw-r--r--include/strings.h16
-rw-r--r--src/item_menu.c167
-rw-r--r--src/item_pc.c2
8 files changed, 186 insertions, 361 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 143e87b66..2444ffeb0 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5,295 +5,6 @@
.text
- thumb_func_start sub_8108B8C
-sub_8108B8C: @ 8108B8C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08108BE0 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r0, _08108BE4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08108C08
- ldr r0, _08108BE8 @ =sub_8108CFC
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08108C08
- ldrb r0, [r4]
- ldr r4, _08108BEC @ =gUnknown_203ACFC
- ldrh r2, [r4, 0x6]
- lsls r2, 1
- adds r1, r4, 0
- adds r1, 0xE
- adds r1, r2, r1
- adds r3, r4, 0
- adds r3, 0x8
- adds r2, r3
- bl DestroyListMenuTask
- ldr r0, _08108BF0 @ =gUnknown_203AD10
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _08108BF4
- bl SetMainCallback2
- b _08108BFA
- .align 2, 0
-_08108BE0: .4byte gTasks+0x8
-_08108BE4: .4byte gPaletteFade
-_08108BE8: .4byte sub_8108CFC
-_08108BEC: .4byte gUnknown_203ACFC
-_08108BF0: .4byte gUnknown_203AD10
-_08108BF4:
- ldr r0, [r4]
- bl SetMainCallback2
-_08108BFA:
- bl sub_8108978
- bl sub_8108B04
- adds r0, r5, 0
- bl DestroyTask
-_08108C08:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8108B8C
-
- thumb_func_start sub_8108C10
-sub_8108C10: @ 8108C10
- push {r4,r5,lr}
- sub sp, 0x8
- movs r5, 0
- add r0, sp, 0x4
- strh r5, [r0]
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3F
- bl SetGpuReg
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- str r5, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r4, _08108C68 @ =gUnknown_203ACFC
- ldrb r0, [r4, 0x5]
- cmp r0, 0x1
- bne _08108C6C
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- b _08108C9E
- .align 2, 0
-_08108C68: .4byte gUnknown_203ACFC
-_08108C6C:
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0xA0
- bl SetGpuReg
- ldr r0, _08108CA8 @ =sub_8108CFC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08108CAC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0xC0
- strh r0, [r1, 0x8]
- ldr r0, _08108CB0 @ =0x0000fff0
- strh r0, [r1, 0xA]
- movs r0, 0x1
- strb r0, [r4, 0x5]
-_08108C9E:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08108CA8: .4byte sub_8108CFC
-_08108CAC: .4byte gTasks
-_08108CB0: .4byte 0x0000fff0
- thumb_func_end sub_8108C10
-
- thumb_func_start sub_8108CB4
-sub_8108CB4: @ 8108CB4
- push {lr}
- ldr r0, _08108CE0 @ =sub_8108CFC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08108CE4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- ldr r0, _08108CE8 @ =0x0000fff0
- strh r0, [r1, 0x8]
- movs r0, 0x10
- strh r0, [r1, 0xA]
- ldr r0, _08108CEC @ =gUnknown_203ACFC
- strb r2, [r0, 0x5]
- pop {r0}
- bx r0
- .align 2, 0
-_08108CE0: .4byte sub_8108CFC
-_08108CE4: .4byte gTasks
-_08108CE8: .4byte 0x0000fff0
-_08108CEC: .4byte gUnknown_203ACFC
- thumb_func_end sub_8108CB4
-
- thumb_func_start CB2_SetUpReshowBattleScreenAfterMenu
-CB2_SetUpReshowBattleScreenAfterMenu: @ 8108CF0
- ldr r1, _08108CF8 @ =gUnknown_203ACFC
- movs r0, 0
- strb r0, [r1, 0x5]
- bx lr
- .align 2, 0
-_08108CF8: .4byte gUnknown_203ACFC
- thumb_func_end CB2_SetUpReshowBattleScreenAfterMenu
-
- thumb_func_start sub_8108CFC
-sub_8108CFC: @ 8108CFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08108D28 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r0, [r4, 0x2]
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA0
- ble _08108D2C
- movs r0, 0x44
- movs r1, 0xA0
- bl SetGpuReg
- b _08108D34
- .align 2, 0
-_08108D28: .4byte gTasks+0x8
-_08108D2C:
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
-_08108D34:
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- cmp r1, 0x10
- bne _08108D44
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0xA0
- beq _08108D54
-_08108D44:
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bne _08108D5A
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08108D5A
-_08108D54:
- adds r0, r5, 0
- bl DestroyTask
-_08108D5A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8108CFC
-
- thumb_func_start ItemMenu_MoveItemSlotToNewPositionInArray
-ItemMenu_MoveItemSlotToNewPositionInArray: @ 8108D60
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r3, r2, 0
- cmp r1, r3
- beq _08108DC0
- lsls r0, r1, 2
- adds r0, r4
- ldr r6, [r0]
- cmp r3, r1
- bls _08108D98
- subs r3, 0x1
- lsls r1, 16
- lsls r0, r3, 16
- asrs r2, r0, 16
- cmp r1, r0
- bge _08108DBA
- adds r5, r2, 0
-_08108D82:
- asrs r2, r1, 16
- lsls r0, r2, 2
- adds r0, r4
- ldr r1, [r0, 0x4]
- str r1, [r0]
- adds r2, 0x1
- lsls r1, r2, 16
- asrs r0, r1, 16
- cmp r0, r5
- blt _08108D82
- b _08108DBA
-_08108D98:
- lsls r1, 16
- lsls r0, r3, 16
- asrs r2, r0, 16
- cmp r1, r0
- ble _08108DBA
- adds r5, r2, 0
-_08108DA4:
- asrs r2, r1, 16
- lsls r1, r2, 2
- adds r1, r4
- subs r0, r1, 0x4
- ldr r0, [r0]
- str r0, [r1]
- subs r2, 0x1
- lsls r1, r2, 16
- asrs r0, r1, 16
- cmp r0, r5
- bgt _08108DA4
-_08108DBA:
- lsls r0, r3, 2
- adds r0, r4
- str r6, [r0]
-_08108DC0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end ItemMenu_MoveItemSlotToNewPositionInArray
-
thumb_func_start sub_8108DC8
sub_8108DC8: @ 8108DC8
push {r4,r5,lr}
@@ -1306,7 +1017,7 @@ _081095E8:
ldr r0, [r0]
adds r1, r2, 0
adds r2, r5, 0
- bl ItemMenu_MoveItemSlotToNewPositionInArray
+ bl MoveItemSlotInList
ldrb r0, [r6]
ldrh r2, [r4, 0x6]
lsls r2, 1
@@ -1641,7 +1352,7 @@ _081098AC:
_081098B6:
ldr r2, _081098D4 @ =gSpecialVar_ItemId
ldrh r1, [r2]
- ldr r0, _081098D8 @ =0x0000016d
+ ldr r0, _081098D8 @ =0x0000016d @ ITEM_BERRY_POUCH
cmp r1, r0
bne _081098E8
ldr r1, _081098DC @ =gUnknown_203AD20
@@ -2068,8 +1779,8 @@ _08109C48: .4byte gUnknown_8452EB8
_08109C4C: .4byte gUnknown_203AD24
thumb_func_end sub_8109BE4
- thumb_func_start sub_8109C50
-sub_8109C50: @ 8109C50
+ thumb_func_start Task_ItemMenuAction_Use
+Task_ItemMenuAction_Use: @ 8109C50
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -2116,10 +1827,10 @@ _08109CB4:
bx r0
.align 2, 0
_08109CBC: .4byte gSpecialVar_ItemId
- thumb_func_end sub_8109C50
+ thumb_func_end Task_ItemMenuAction_Use
- thumb_func_start sub_8109CC0
-sub_8109CC0: @ 8109CC0
+ thumb_func_start Task_ItemMenuAction_Toss
+Task_ItemMenuAction_Toss: @ 8109CC0
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -2171,7 +1882,7 @@ _08109D2A:
.align 2, 0
_08109D30: .4byte gText_TossOutHowManyStrVar1s
_08109D34: .4byte sub_8109DEC
- thumb_func_end sub_8109CC0
+ thumb_func_end Task_ItemMenuAction_Toss
thumb_func_start sub_8109D38
sub_8109D38: @ 8109D38
@@ -2489,8 +2200,8 @@ _08109FF8: .4byte gUnknown_203ACFC
_08109FFC: .4byte gMultiuseListMenuTemplate
thumb_func_end sub_8109F44
- thumb_func_start sub_810A000
-sub_810A000: @ 810A000
+ thumb_func_start Task_ItemMenuAction_ToggleSelect
+Task_ItemMenuAction_ToggleSelect: @ 810A000
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -2557,7 +2268,7 @@ _0810A052:
movs r1, 0x1
bl CopyWindowToVram
mov r0, r8
- bl sub_810A2DC
+ bl Task_ItemMenuAction_Cancel
pop {r3}
mov r8, r3
pop {r4-r7}
@@ -2566,10 +2277,10 @@ _0810A052:
.align 2, 0
_0810A0A0: .4byte gUnknown_203ACFC
_0810A0A4: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_810A000
+ thumb_func_end Task_ItemMenuAction_ToggleSelect
- thumb_func_start sub_810A0A8
-sub_810A0A8: @ 810A0A8
+ thumb_func_start Task_ItemMenuAction_Give
+Task_ItemMenuAction_Give: @ 810A0A8
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -2655,7 +2366,7 @@ _0810A166:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_810A0A8
+ thumb_func_end Task_ItemMenuAction_Give
thumb_func_start sub_810A170
sub_810A170: @ 810A170
@@ -2831,8 +2542,8 @@ sub_810A288: @ 810A288
_0810A2D8: .4byte gTasks+0x8
thumb_func_end sub_810A288
- thumb_func_start sub_810A2DC
-sub_810A2DC: @ 810A2DC
+ thumb_func_start Task_ItemMenuAction_Cancel
+Task_ItemMenuAction_Cancel: @ 810A2DC
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
@@ -2862,7 +2573,7 @@ sub_810A2DC: @ 810A2DC
bx r0
.align 2, 0
_0810A320: .4byte gTasks
- thumb_func_end sub_810A2DC
+ thumb_func_end Task_ItemMenuAction_Cancel
thumb_func_start sub_810A324
sub_810A324: @ 810A324
diff --git a/data/item_menu.s b/data/item_menu.s
index c9385108e..66e13cca0 100644
--- a/data/item_menu.s
+++ b/data/item_menu.s
@@ -1,6 +1,7 @@
#include "constants/region_map.h"
#include "constants/flags.h"
#include "constants/moves.h"
+#include "constants/item_menu.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/strings.s b/data/strings.s
index 55c54f6c3..fc6ab5cb5 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -411,7 +411,7 @@ gOtherText_Use::
gOtherText_Toss::
.string "TOSS$"
-gUnknown_84161A9::
+gOtherText_Register::
.string "REGISTER$"
gOtherText_Give::
@@ -420,7 +420,7 @@ gOtherText_Give::
gUnknown_84161B7::
.string "けってい$"
-gUnknown_84161BC::
+gOtherText_Walk::
.string "WALK$"
gFameCheckerText_Cancel:: @ 84161C1
@@ -447,16 +447,16 @@ gText_Take::
gText_Store::
.string "STORE$"
-gUnknown_84161E9::
+gOtherText_Check::
.string "CHECK$"
gUnknown_84161EF:: @ 84161EF
.string "NONE$"
-gUnknown_84161F4::
+gOtherText_Open::
.string "OPEN$"
-gUnknown_84161F9::
+gOtherText_Deselect::
.string "DESELECT$"
gUnknown_8416202:: @ 8416202
@@ -555,13 +555,13 @@ gUnknown_84162BD:: @ 84162BD
gText_Coins:: @ 84162C4
.string "{STR_VAR_1} COINS$"
-gUnknown_84162CD:: @ 0x84162CD
+gText_Items2:: @ 0x84162CD
.string "ITEMS$"
-gUnknown_84162D3:: @ 0x84162D3
+gText_PokeBalls2:: @ 0x84162D3
.string "POKé BALLS$"
-gUnknown_84162DE:: @ 0x84162DE
+gText_KeyItems2:: @ 0x84162DE
.string "KEY ITEMS$"
gText_DepositItem:: @ 84162E8
diff --git a/include/constants/item_menu.h b/include/constants/item_menu.h
new file mode 100644
index 000000000..8e91d2a17
--- /dev/null
+++ b/include/constants/item_menu.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_CONSTANTS_ITEM_MENU_H
+#define GUARD_CONSTANTS_ITEM_MENU_H
+
+#define ITEMMENUACTION_USE 0
+#define ITEMMENUACTION_TOSS 1
+#define ITEMMENUACTION_REGISTER 2
+#define ITEMMENUACTION_GIVE 3
+#define ITEMMENUACTION_CANCEL 4
+#define ITEMMENUACTION_BATTLE_USE 5
+#define ITEMMENUACTION_CHECK 6
+#define ITEMMENUACTION_OPEN 7
+#define ITEMMENUACTION_OPEN_BERRIES 8
+#define ITEMMENUACTION_WALK 9
+#define ITEMMENUACTION_DESELECT 10
+#define ITEMMENUACTION_DUMMY 11
+
+#endif //GUARD_CONSTANTS_ITEM_MENU_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 343fae393..e7337ffc4 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -3,6 +3,7 @@
#include "global.h"
#include "task.h"
+#include "constants/item_menu.h"
// Exported type declarations
@@ -29,7 +30,7 @@ void CB2_SetUpReshowBattleScreenAfterMenu(void);
void sub_81089BC(void);
void sub_810B108(u8);
void CB2_BagMenuFromStartMenu(void);
-void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2);
+void MoveItemSlotInList(struct ItemSlot * itemSlots_, u32 from, u32 to_);
void ItemMenu_StartFadeToExitCallback(u8 taskId);
void sub_8108CB4(void);
void ItemMenu_SetExitCallback(void (*)(void));
diff --git a/include/strings.h b/include/strings.h
index 809007409..8dba28b3c 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1039,14 +1039,14 @@ extern const u8 gText_SaveFailedScreen_BackupMemoryDamaged[];
extern const u8 gText_SaveFailedScreen_SaveCompleted[];
// item_menu
-extern const u8 gUnknown_84161A9[];
-extern const u8 gUnknown_84161BC[];
-extern const u8 gUnknown_84161E9[];
-extern const u8 gUnknown_84161F4[];
-extern const u8 gUnknown_84161F9[];
-extern const u8 gUnknown_84162CD[];
-extern const u8 gUnknown_84162D3[];
-extern const u8 gUnknown_84162DE[];
+extern const u8 gOtherText_Register[];
+extern const u8 gOtherText_Walk[];
+extern const u8 gOtherText_Check[];
+extern const u8 gOtherText_Open[];
+extern const u8 gOtherText_Deselect[];
+extern const u8 gText_Items2[];
+extern const u8 gText_PokeBalls2[];
+extern const u8 gText_KeyItems2[];
extern const u8 gUnknown_84162F5[];
#endif //GUARD_STRINGS_H
diff --git a/src/item_menu.c b/src/item_menu.c
index a861cb742..5c09791ae 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -22,7 +22,7 @@
struct BagMenuAlloc
{
- u32 field_00;
+ MainCallback field_00;
u8 field_04;
u8 field_05_0:4;
u8 itemMenuIcon:2;
@@ -64,14 +64,15 @@ void sub_8108A68(void);
void sub_8108A84(void);
void sub_8108B04(void);
void sub_8108B8C(u8 taskId);
+void sub_8108CFC(u8 taskId);
void sub_8108C10(void);
void sub_8108E54(void);
void sub_8108F0C(u8 taskId);
-void sub_8109C50(u8 taskId);
-void sub_8109CC0(u8 taskId);
-void sub_810A000(u8 taskId);
-void sub_810A0A8(u8 taskId);
-void sub_810A2DC(u8 taskId);
+void Task_ItemMenuAction_Use(u8 taskId);
+void Task_ItemMenuAction_Toss(u8 taskId);
+void Task_ItemMenuAction_ToggleSelect(u8 taskId);
+void Task_ItemMenuAction_Give(u8 taskId);
+void Task_ItemMenuAction_Cancel(u8 taskId);
void sub_810A324(u8 taskId);
bool8 sub_810ADAC(void);
void sub_810AF9C(u8 taskId);
@@ -100,40 +101,40 @@ const struct BgTemplate gUnknown_8452CF4[2] = {
}
};
-const u8 *const gUnknown_8452CFC[] = {
- gUnknown_84162CD,
- gUnknown_84162DE,
- gUnknown_84162D3
+const u8 *const sPocketNames[] = {
+ gText_Items2,
+ gText_KeyItems2,
+ gText_PokeBalls2
};
const u16 gUnknown_8452D08[][18] = {
- INCBIN_U16("graphics/item_menu/bagmap_0.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_1.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_2.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_3.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_4.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_5.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_6.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_7.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_8.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_9.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_A.bin"),
- INCBIN_U16("graphics/item_menu/bagmap_B.bin")
+ [ITEMMENUACTION_USE] = INCBIN_U16("graphics/item_menu/bagmap_0.bin"),
+ [ITEMMENUACTION_TOSS] = INCBIN_U16("graphics/item_menu/bagmap_1.bin"),
+ [ITEMMENUACTION_REGISTER] = INCBIN_U16("graphics/item_menu/bagmap_2.bin"),
+ [ITEMMENUACTION_GIVE] = INCBIN_U16("graphics/item_menu/bagmap_3.bin"),
+ [ITEMMENUACTION_CANCEL] = INCBIN_U16("graphics/item_menu/bagmap_4.bin"),
+ [ITEMMENUACTION_BATTLE_USE] = INCBIN_U16("graphics/item_menu/bagmap_5.bin"),
+ [ITEMMENUACTION_CHECK] = INCBIN_U16("graphics/item_menu/bagmap_6.bin"),
+ [ITEMMENUACTION_OPEN] = INCBIN_U16("graphics/item_menu/bagmap_7.bin"),
+ [ITEMMENUACTION_OPEN_BERRIES] = INCBIN_U16("graphics/item_menu/bagmap_8.bin"),
+ [ITEMMENUACTION_WALK] = INCBIN_U16("graphics/item_menu/bagmap_9.bin"),
+ [ITEMMENUACTION_DESELECT] = INCBIN_U16("graphics/item_menu/bagmap_A.bin"),
+ [ITEMMENUACTION_DUMMY] = INCBIN_U16("graphics/item_menu/bagmap_B.bin")
};
const struct MenuAction gUnknown_8452EB8[] = {
- {gOtherText_Use, {.void_u8 = sub_8109C50}},
- {gOtherText_Toss, {.void_u8 = sub_8109CC0}},
- {gUnknown_84161A9, {.void_u8 = sub_810A000}},
- {gOtherText_Give, {.void_u8 = sub_810A0A8}},
- {gFameCheckerText_Cancel, {.void_u8 = sub_810A2DC}},
- {gOtherText_Use, {.void_u8 = sub_810A324}},
- {gUnknown_84161E9, {.void_u8 = sub_8109C50}},
- {gUnknown_84161F4, {.void_u8 = sub_8109C50}},
- {gUnknown_84161F4, {.void_u8 = sub_810A324}},
- {gUnknown_84161BC, {.void_u8 = sub_8109C50}},
- {gUnknown_84161F9, {.void_u8 = sub_810A000}},
- {gString_Dummy, {.void_u8 = NULL}}
+ [ITEMMENUACTION_USE] = {gOtherText_Use, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_TOSS] = {gOtherText_Toss, {.void_u8 = Task_ItemMenuAction_Toss}},
+ [ITEMMENUACTION_REGISTER] = {gOtherText_Register, {.void_u8 = Task_ItemMenuAction_ToggleSelect}},
+ [ITEMMENUACTION_GIVE] = {gOtherText_Give, {.void_u8 = Task_ItemMenuAction_Give}},
+ [ITEMMENUACTION_CANCEL] = {gFameCheckerText_Cancel, {.void_u8 = Task_ItemMenuAction_Cancel}},
+ [ITEMMENUACTION_BATTLE_USE] = {gOtherText_Use, {.void_u8 = sub_810A324}},
+ [ITEMMENUACTION_CHECK] = {gOtherText_Check, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_OPEN] = {gOtherText_Open, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_OPEN_BERRIES] = {gOtherText_Open, {.void_u8 = sub_810A324}},
+ [ITEMMENUACTION_WALK] = {gOtherText_Walk, {.void_u8 = Task_ItemMenuAction_Use}},
+ [ITEMMENUACTION_DESELECT] = {gOtherText_Deselect, {.void_u8 = Task_ItemMenuAction_ToggleSelect}},
+ [ITEMMENUACTION_DUMMY] = {gString_Dummy, {.void_u8 = NULL}}
};
extern const u8 gUnknown_8452F60[];
@@ -155,7 +156,7 @@ void GoToBagMenu(u8 location, u8 a1, MainCallback a2)
gUnknown_203ACFC.location = location;
if (a2 != NULL)
gUnknown_203ACFC.bagCallback = a2;
- gUnknown_203AD10->field_00 = 0;
+ gUnknown_203AD10->field_00 = NULL;
gUnknown_203AD10->field_04 = 0xFF;
gUnknown_203AD10->itemMenuIcon = 0;
gUnknown_203AD10->field_05_6 = 0;
@@ -578,7 +579,7 @@ void bag_menu_print_cursor(u8 y, u8 colorIdx)
void sub_81087EC(void)
{
FillWindowPixelBuffer(2, PIXEL_FILL(0));
- sub_810B958(gUnknown_8452CFC[gUnknown_203ACFC.pocket], gUnknown_203ACFC.pocket);
+ sub_810B958(sPocketNames[gUnknown_203ACFC.pocket], gUnknown_203ACFC.pocket);
}
void sub_8108818(s32 itemIndex)
@@ -731,3 +732,97 @@ void ItemMenu_StartFadeToExitCallback(u8 taskId)
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
gTasks[taskId].func = sub_8108B8C;
}
+
+void sub_8108B8C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active && FuncIsActiveTask(sub_8108CFC) != TRUE)
+ {
+ DestroyListMenuTask(data[0], &gUnknown_203ACFC.cursorPos[gUnknown_203ACFC.pocket], &gUnknown_203ACFC.itemsAbove[gUnknown_203ACFC.pocket]);
+ if (gUnknown_203AD10->field_00 != NULL)
+ SetMainCallback2(gUnknown_203AD10->field_00);
+ else
+ SetMainCallback2(gUnknown_203ACFC.bagCallback);
+ sub_8108978();
+ sub_8108B04();
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8108C10(void)
+{
+ u16 paldata = RGB_BLACK;
+ u8 taskId;
+
+ LoadPalette(&paldata, 0x00, 0x02);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x3F);
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ if (gUnknown_203ACFC.unk5 == 1)
+ {
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 240));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 0));
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 240));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 160));
+ taskId = CreateTask(sub_8108CFC, 0);
+ gTasks[taskId].data[0] = 192;
+ gTasks[taskId].data[1] = -16;
+ gUnknown_203ACFC.unk5 = 1;
+ }
+}
+
+void sub_8108CB4(void)
+{
+
+ u8 taskId = CreateTask(sub_8108CFC, 0);
+ gTasks[taskId].data[0] = -16;
+ gTasks[taskId].data[1] = 16;
+ gUnknown_203ACFC.unk5 = 0;
+}
+
+void CB2_SetUpReshowBattleScreenAfterMenu(void)
+{
+ gUnknown_203ACFC.unk5 = 0;
+}
+
+void sub_8108CFC(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[0] += data[1];
+ if (data[0] > 160)
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 160));
+ else
+ SetGpuReg(REG_OFFSET_WIN0V, data[0]);
+ if ((data[1] == 16 && data[0] == 160) || (data[1] == -16 && data[0] == 0))
+ DestroyTask(taskId);
+}
+
+void MoveItemSlotInList(struct ItemSlot * itemSlots_, u32 from, u32 to_)
+{
+ // dumb assignments needed to match
+ struct ItemSlot *itemSlots = itemSlots_;
+ u32 to = to_;
+
+ if (from != to)
+ {
+ s16 i, count;
+ struct ItemSlot firstSlot = itemSlots[from];
+
+ if (to > from)
+ {
+ to--;
+ for (i = from, count = to; i < count; i++)
+ itemSlots[i] = itemSlots[i + 1];
+ }
+ else
+ {
+ for (i = from, count = to; i > count; i--)
+ itemSlots[i] = itemSlots[i - 1];
+ }
+ itemSlots[to] = firstSlot;
+ }
+}
diff --git a/src/item_pc.c b/src/item_pc.c
index 217acc829..3134d9f6b 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -814,7 +814,7 @@ static void ItemPc_InsertItemIntoNewSlot(u8 taskId, u32 pos)
ItemPc_MoveItemModeCancel(taskId, pos);
else
{
- ItemMenu_MoveItemSlotToNewPositionInArray(gSaveBlock1Ptr->pcItems, data[1], pos);
+ MoveItemSlotInList(gSaveBlock1Ptr->pcItems, data[1], pos);
DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
if (data[1] < pos)
sListMenuState.row--;