diff options
-rw-r--r-- | asm/item_menu.s | 325 | ||||
-rw-r--r-- | data/item_menu.s | 1 | ||||
-rw-r--r-- | data/strings.s | 16 | ||||
-rw-r--r-- | include/constants/item_menu.h | 17 | ||||
-rw-r--r-- | include/item_menu.h | 3 | ||||
-rw-r--r-- | include/strings.h | 16 | ||||
-rw-r--r-- | src/item_menu.c | 167 | ||||
-rw-r--r-- | src/item_pc.c | 2 |
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--; |