summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2018-08-30 20:10:57 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2018-08-30 20:10:57 +0200
commit917b32ffbe15243207de849683f8933f56bdeb07 (patch)
treec431013c3afbae159d5bed4d3fac3f8bdf2c4eff
parentbc9fe72c6e85b1930f137ed49c5d2b0c4e4b10de (diff)
Finish decompiling pyramid bag.
-rw-r--r--asm/battle_pyramid_bag.s576
-rw-r--r--asm/party_menu.s2
-rw-r--r--asm/pokenav.s233
-rw-r--r--data/battle_pyramid_bag.s54
-rw-r--r--include/battle_pyramid_bag.h49
-rw-r--r--include/item_use.h1
-rw-r--r--include/save.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle_pyramid_bag.c791
-rw-r--r--src/item.c3
-rwxr-xr-xsrc/item_use.c6
-rw-r--r--src/start_menu.c9
12 files changed, 783 insertions, 945 deletions
diff --git a/asm/battle_pyramid_bag.s b/asm/battle_pyramid_bag.s
deleted file mode 100644
index 23ad7172e..000000000
--- a/asm/battle_pyramid_bag.s
+++ /dev/null
@@ -1,576 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
-
-
- thumb_func_start sub_81C6DAC
-sub_81C6DAC: @ 81C6DAC
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0861F370
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0xE
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x1
- movs r3, 0
- bl CreateYesNoMenuWithCallbacks
- add sp, 0x10
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C6DAC
-
- thumb_func_start DisplayItemMessageInBattlePyramid
-@ void DisplayItemMessageInBattlePyramid(u8 taskId, u8 *str, void ( *callback)(u8 taskId))
-DisplayItemMessageInBattlePyramid: @ 81C6DD8
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x11
- bl FillWindowPixelBuffer
- bl GetPlayerTextSpeed
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0xA
- movs r3, 0xD
- bl DisplayMessageAndContinueTask
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end DisplayItemMessageInBattlePyramid
-
- thumb_func_start sub_81C6E1C
-sub_81C6E1C: @ 81C6E1C
- push {lr}
- movs r0, 0x2
- movs r1, 0
- bl sub_8197DF8
- movs r0, 0x2
- bl ClearWindowTilemap
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- pop {r0}
- bx r0
- thumb_func_end sub_81C6E1C
-
- thumb_func_start sub_81C6E38
-sub_81C6E38: @ 81C6E38
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_0203CF2C
- ldr r2, =0x00000804
- adds r1, r4, r2
- ldr r0, [r0]
- adds r5, r0, r1
- ldrb r0, [r5]
- cmp r0, 0xFF
- beq _081C6E80
- ldr r0, =0x00001024
- adds r4, r0
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- movs r0, 0xFF
- strb r0, [r5]
-_081C6E80:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C6E38
-
- thumb_func_start sub_81C6E98
-sub_81C6E98: @ 81C6E98
- push {r4,lr}
- sub sp, 0x8
- movs r0, 0x40
- bl Alloc
- adds r4, r0, 0
- ldr r0, =gUnknown_08D9ADD0
- adds r1, r4, 0
- bl LZDecompressWram
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, =0x00000ca9
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r4, r0
- str r0, [sp]
- ldr r1, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- ldr r1, =0x00001024
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- adds r0, r4, 0
- bl Free
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C6E98
-
- thumb_func_start sub_81C6EF4
-sub_81C6EF4: @ 81C6EF4
- push {r4,lr}
- ldr r0, =gUnknown_0203CF2C
- ldr r4, [r0]
- ldr r0, =0x00000804
- adds r4, r0
- ldr r0, =gUnknown_0861F3D4
- movs r1, 0x44
- movs r2, 0x38
- movs r3, 0
- bl CreateSprite
- strb r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C6EF4
-
- thumb_func_start sub_81C6F20
-sub_81C6F20: @ 81C6F20
- push {r4,lr}
- ldr r0, =gUnknown_0203CF2C
- ldr r0, [r0]
- ldr r1, =0x00000804
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081C6F50
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, =sub_81C6F68
- str r0, [r4, 0x1C]
-_081C6F50:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C6F20
-
- thumb_func_start sub_81C6F68
-sub_81C6F68: @ 81C6F68
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081C6F84
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r0, =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_081C6F84:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C6F68
-
- thumb_func_start ShowItemImage
-ShowItemImage: @ 81C6F90
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, =gUnknown_0203CF2C
- ldr r2, =0x00000805
- adds r1, r4, r2
- ldr r0, [r0]
- adds r5, r0, r1
- ldrb r0, [r5]
- cmp r0, 0xFF
- bne _081C6FE0
- ldr r0, =0x00001025
- adds r4, r0
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl AddItemIconSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _081C6FE0
- strb r2, [r5]
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x18
- strh r1, [r0, 0x24]
- movs r1, 0x58
- strh r1, [r0, 0x26]
-_081C6FE0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ShowItemImage
-
- thumb_func_start sub_81C6FF8
-sub_81C6FF8: @ 81C6FF8
- push {lr}
- lsls r0, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 24
- bl sub_81C6E38
- pop {r0}
- bx r0
- thumb_func_end sub_81C6FF8
-
- thumb_func_start sub_81C700C
-sub_81C700C: @ 81C700C
- push {lr}
- ldr r0, =gUnknown_0203CF2C
- ldr r0, [r0]
- ldr r1, =0x00000807
- adds r0, r1
- movs r1, 0x8
- bl sub_8122344
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C700C
-
- thumb_func_start sub_81C7028
-sub_81C7028: @ 81C7028
- push {lr}
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gUnknown_0203CF2C
- ldr r0, [r0]
- ldr r1, =0x00000807
- adds r0, r1
- movs r1, 0x8
- bl sub_81223FC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C7028
-
- thumb_func_start sub_81C704C
-sub_81C704C: @ 81C704C
- push {lr}
- adds r3, r0, 0
- lsls r3, 24
- ldr r0, =gUnknown_0203CF2C
- ldr r0, [r0]
- ldr r1, =0x00000807
- adds r0, r1
- lsrs r3, 4
- movs r1, 0x80
- lsls r1, 13
- adds r3, r1
- lsrs r3, 16
- movs r1, 0x88
- movs r2, 0x78
- bl sub_8122448
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C704C
-
- thumb_func_start sub_81C7078
-sub_81C7078: @ 81C7078
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- bl is_c1_link_related_active
- cmp r0, 0
- bne _081C7090
- ldr r0, =sub_81C7170
- b _081C7092
- .pool
-_081C7090:
- ldr r0, =sub_81C71E4
-_081C7092:
- lsls r1, r4, 24
- lsrs r1, 24
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r5, 0
- bl SetWordTaskArg
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r2, =gUnknown_0203CF3C
- ldrb r1, [r2]
- strh r1, [r0, 0xE]
- ldrb r0, [r2]
- adds r1, r0, 0x1
- strb r1, [r2]
- lsls r0, 24
- lsrs r0, 8
- orrs r0, r4
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C7078
-
- thumb_func_start sub_81C70D8
-sub_81C70D8: @ 81C70D8
- push {lr}
- ldr r1, =0x0000ffff
- ands r1, r0
- lsrs r3, r0, 16
- ldr r2, =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _081C711C
- ldr r2, [r1]
- ldr r0, =sub_81C7170
- cmp r2, r0
- beq _081C70FE
- ldr r0, =sub_81C71E4
- cmp r2, r0
- bne _081C711C
-_081C70FE:
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, r3
- bne _081C711C
- movs r0, 0x1
- b _081C711E
- .pool
-_081C711C:
- movs r0, 0
-_081C711E:
- pop {r1}
- bx r1
- thumb_func_end sub_81C70D8
-
- thumb_func_start sub_81C7124
-sub_81C7124: @ 81C7124
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r5, 0
- ldr r4, =gTasks
-_081C712C:
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _081C7160
- ldr r1, [r4]
- ldr r0, =sub_81C7170
- cmp r1, r0
- beq _081C7140
- ldr r0, =sub_81C71E4
- cmp r1, r0
- bne _081C7160
-_081C7140:
- lsls r0, r5, 24
- lsrs r0, 24
- movs r1, 0x1
- bl GetWordTaskArg
- cmp r0, r6
- bne _081C7160
- movs r0, 0x1
- b _081C716A
- .pool
-_081C7160:
- adds r4, 0x28
- adds r5, 0x1
- cmp r5, 0xF
- ble _081C712C
- movs r0, 0
-_081C716A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81C7124
-
- thumb_func_start sub_81C7170
-sub_81C7170: @ 81C7170
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- bl GetWordTaskArg
- adds r6, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r7, 0
-_081C718C:
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl _call_via_r6
- cmp r0, 0x4
- bhi _081C71D6
- lsls r0, 2
- ldr r1, =_081C71AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C71AC:
- .4byte _081C71C6
- .4byte _081C71C0
- .4byte _081C71DE
- .4byte _081C71DA
- .4byte _081C71CE
-_081C71C0:
- ldrh r0, [r4]
- adds r0, 0x1
- b _081C71D8
-_081C71C6:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _081C71DE
-_081C71CE:
- adds r0, r5, 0
- bl DestroyTask
- b _081C71DE
-_081C71D6:
- subs r0, 0x5
-_081C71D8:
- strh r0, [r4]
-_081C71DA:
- cmp r7, 0
- beq _081C718C
-_081C71DE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81C7170
-
- thumb_func_start sub_81C71E4
-sub_81C71E4: @ 81C71E4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8087598
- cmp r0, 0
- bne _081C724A
- adds r0, r5, 0
- movs r1, 0x1
- bl GetWordTaskArg
- adds r2, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl _call_via_r2
- cmp r0, 0x4
- bhi _081C7246
- lsls r0, 2
- ldr r1, =_081C7224
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C7224:
- .4byte _081C7238
- .4byte _081C7238
- .4byte _081C724A
- .4byte _081C724A
- .4byte _081C723E
-_081C7238:
- ldrh r0, [r4]
- adds r0, 0x1
- b _081C7248
-_081C723E:
- adds r0, r5, 0
- bl DestroyTask
- b _081C724A
-_081C7246:
- subs r0, 0x5
-_081C7248:
- strh r0, [r4]
-_081C724A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81C71E4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 92c4905a4..2d1faadab 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -11626,7 +11626,7 @@ c2_815ABFC: @ 81B6254
bl GoToBagMenu
b _081B6276
_081B626C:
- ldr r0, =gUnknown_0203CF30
+ ldr r0, =gPyramidBagCursorData
ldr r1, [r0]
movs r0, 0x4
bl sub_81C4F98
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 8adb3cbd9..b8165ec80 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -4,6 +4,239 @@
.syntax unified
.text
+
+
+
+ thumb_func_start sub_81C7078
+sub_81C7078: @ 81C7078
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ bl is_c1_link_related_active
+ cmp r0, 0
+ bne _081C7090
+ ldr r0, =sub_81C7170
+ b _081C7092
+ .pool
+_081C7090:
+ ldr r0, =sub_81C71E4
+_081C7092:
+ lsls r1, r4, 24
+ lsrs r1, 24
+ bl CreateTask
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ movs r1, 0x1
+ adds r2, r5, 0
+ bl SetWordTaskArg
+ ldr r1, =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r2, =gUnknown_0203CF3C
+ ldrb r1, [r2]
+ strh r1, [r0, 0xE]
+ ldrb r0, [r2]
+ adds r1, r0, 0x1
+ strb r1, [r2]
+ lsls r0, 24
+ lsrs r0, 8
+ orrs r0, r4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81C7078
+
+ thumb_func_start sub_81C70D8
+sub_81C70D8: @ 81C70D8
+ push {lr}
+ ldr r1, =0x0000ffff
+ ands r1, r0
+ lsrs r3, r0, 16
+ ldr r2, =gTasks
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0
+ beq _081C711C
+ ldr r2, [r1]
+ ldr r0, =sub_81C7170
+ cmp r2, r0
+ beq _081C70FE
+ ldr r0, =sub_81C71E4
+ cmp r2, r0
+ bne _081C711C
+_081C70FE:
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ cmp r0, r3
+ bne _081C711C
+ movs r0, 0x1
+ b _081C711E
+ .pool
+_081C711C:
+ movs r0, 0
+_081C711E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C70D8
+
+ thumb_func_start sub_81C7124
+sub_81C7124: @ 81C7124
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r5, 0
+ ldr r4, =gTasks
+_081C712C:
+ ldrb r0, [r4, 0x4]
+ cmp r0, 0
+ beq _081C7160
+ ldr r1, [r4]
+ ldr r0, =sub_81C7170
+ cmp r1, r0
+ beq _081C7140
+ ldr r0, =sub_81C71E4
+ cmp r1, r0
+ bne _081C7160
+_081C7140:
+ lsls r0, r5, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl GetWordTaskArg
+ cmp r0, r6
+ bne _081C7160
+ movs r0, 0x1
+ b _081C716A
+ .pool
+_081C7160:
+ adds r4, 0x28
+ adds r5, 0x1
+ cmp r5, 0xF
+ ble _081C712C
+ movs r0, 0
+_081C716A:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C7124
+
+ thumb_func_start sub_81C7170
+sub_81C7170: @ 81C7170
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl GetWordTaskArg
+ adds r6, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, =gTasks + 0x8
+ adds r4, r0, r1
+ movs r7, 0
+_081C718C:
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ bl _call_via_r6
+ cmp r0, 0x4
+ bhi _081C71D6
+ lsls r0, 2
+ ldr r1, =_081C71AC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081C71AC:
+ .4byte _081C71C6
+ .4byte _081C71C0
+ .4byte _081C71DE
+ .4byte _081C71DA
+ .4byte _081C71CE
+_081C71C0:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ b _081C71D8
+_081C71C6:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _081C71DE
+_081C71CE:
+ adds r0, r5, 0
+ bl DestroyTask
+ b _081C71DE
+_081C71D6:
+ subs r0, 0x5
+_081C71D8:
+ strh r0, [r4]
+_081C71DA:
+ cmp r7, 0
+ beq _081C718C
+_081C71DE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81C7170
+
+ thumb_func_start sub_81C71E4
+sub_81C71E4: @ 81C71E4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ bl sub_8087598
+ cmp r0, 0
+ bne _081C724A
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl GetWordTaskArg
+ adds r2, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, =gTasks + 0x8
+ adds r4, r0, r1
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ bl _call_via_r2
+ cmp r0, 0x4
+ bhi _081C7246
+ lsls r0, 2
+ ldr r1, =_081C7224
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081C7224:
+ .4byte _081C7238
+ .4byte _081C7238
+ .4byte _081C724A
+ .4byte _081C724A
+ .4byte _081C723E
+_081C7238:
+ ldrh r0, [r4]
+ adds r0, 0x1
+ b _081C7248
+_081C723E:
+ adds r0, r5, 0
+ bl DestroyTask
+ b _081C724A
+_081C7246:
+ subs r0, 0x5
+_081C7248:
+ strh r0, [r4]
+_081C724A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81C71E4
thumb_func_start CB2_PokeNav
CB2_PokeNav: @ 81C7250
diff --git a/data/battle_pyramid_bag.s b/data/battle_pyramid_bag.s
index 7327fb1f8..de459075f 100644
--- a/data/battle_pyramid_bag.s
+++ b/data/battle_pyramid_bag.s
@@ -3,60 +3,6 @@
.section .rodata
- .align 2
-gUnknown_0861F2B4:: @ 861F2B4
- .4byte 0x000011f0, 0x000001e1, 0x000021de
-
- .align 2
-gUnknown_0861F2C0:: @ 861F2C0
- .4byte 0x00000000, sub_81C5460, sub_81C5518, 0x00000000, 0x00080000, 0x07003021
-
- .align 2
-gUnknown_0861F2D8:: @ 861F2D8
- .4byte gMenuText_Use, sub_81C61E0
- .4byte gMenuText_Toss, sub_81C62C4
- .4byte gMenuText_Give, sub_81C6648
- .4byte gText_Cancel2, sub_81C6258
- .4byte gMenuText_Use, sub_81C679C
- .4byte gText_EmptyString2, NULL
-
-gUnknown_0861F308:: @ 861F308
- .byte 0x00, 0x02, 0x01, 0x03
-
-gUnknown_0861F30C:: @ 861F30C
- .byte 0x01, 0x03
-
-gUnknown_0861F30E:: @ 861F30E
- .byte 0x04, 0x03
-
-gUnknown_0861F310:: @ 861F310
- .byte 0x03, 0x00, 0x00, 0x00
-
-gUnknown_0861F314:: @ 861F314
- .4byte sub_81C654C
- .4byte sub_81C63D0
-
-gUnknown_0861F31C:: @ 861F31C
- .byte 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_0861F328:: @ 861F328
- window_template 0x00, 0x0e, 0x02, 0x0f, 0x10, 0x0f, 0x001e
- window_template 0x00, 0x00, 0x0d, 0x0e, 0x06, 0x0f, 0x010e
- window_template 0x01, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x0162
- window_template 0x01, 0x18, 0x11, 0x05, 0x02, 0x0f, 0x01ce
- null_window_template
-
- .align 2
-gUnknown_0861F350:: @ 861F350
- window_template 0x01, 0x16, 0x11, 0x07, 0x02, 0x0f, 0x01d8
- window_template 0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01d8
- window_template 0x01, 0x0f, 0x0f, 0x0e, 0x04, 0x0f, 0x01d8
- window_template 0x01, 0x0f, 0x0d, 0x0e, 0x06, 0x0f, 0x01d8
-
- .align 2
-gUnknown_0861F370:: @ 861F370
- window_template 0x01, 0x18, 0x0f, 0x05, 0x04, 0x0f, 0x01d8
.align 2
gOamData_861F378:: @ 861F378
diff --git a/include/battle_pyramid_bag.h b/include/battle_pyramid_bag.h
new file mode 100644
index 000000000..5d5d8ccfa
--- /dev/null
+++ b/include/battle_pyramid_bag.h
@@ -0,0 +1,49 @@
+#ifndef GUARD_BATTLE_PYRAMID_BAG_H
+#define GUARD_BATTLE_PYRAMID_BAG_H
+
+#include "list_menu.h"
+
+struct PyramidBagResources
+{
+ void (*callback2)(void);
+ u8 tilemapBuffer[0x800];
+ u8 itemsSpriteIds[PYRAMID_BAG_ITEMS_COUNT + 1];
+ u8 windowIds[5];
+ u8 unk814;
+ u8 unk815;
+ u8 scrollArrowSpriteId;
+ const u8 *menuActionIds;
+ u8 filler81C[0x820 - 0x81C];
+ u8 menuActionsCount;
+ u8 listMenuCount;
+ u8 listMenuMaxShown;
+ struct ListMenuItem bagListItems[PYRAMID_BAG_ITEMS_COUNT + 1];
+ u8 itemStrings[PYRAMID_BAG_ITEMS_COUNT + 1][ITEM_NAME_LENGTH + 10];
+ s16 state;
+ u8 filler986[0x98C - 0x986];
+};
+
+struct PyramidBagCursorData
+{
+ void (*callback)(void);
+ u8 unk4;
+ u16 cursorPosition;
+ u16 scrollPosition;
+};
+
+extern struct PyramidBagResources *gPyramidBagResources;
+extern struct PyramidBagCursorData gPyramidBagCursorData;
+
+void CB2_PyramidBagMenuFromStartMenu(void);
+void sub_81C4F84(void);
+void sub_81C5924(void);
+void sub_81C59BC(void);
+void sub_81C4EFC(void);
+void sub_81C4F98(u8 a0, void (*callback)(void));
+void sub_81C6714(u8 taskId);
+void sub_81C6A94(void);
+void sub_81C4F24(void);
+void sub_81C5B14(u8 taskId);
+void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId));
+
+#endif // GUARD_BATTLE_PYRAMID_BAG_H
diff --git a/include/item_use.h b/include/item_use.h
index 8f0ce272b..37343f6e7 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -51,6 +51,5 @@ void ItemUseInBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_CannotUse(u8);
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
void sub_80FDD10(u8);
-void DisplayItemMessageInBattlePyramid(u8 taskId, const u8* str, void(*callback)(u8 taskId));
#endif // GUARD_ITEM_USE_H
diff --git a/include/save.h b/include/save.h
index 7b271129a..9859870b4 100644
--- a/include/save.h
+++ b/include/save.h
@@ -32,7 +32,7 @@ struct SaveSectionOffsets
};
// Emerald changes this definition to be the sectors per slot.
-#define NUM_SECTORS_PER_SLOT 16 // move to save.h
+#define NUM_SECTORS_PER_SLOT 16
#define UNKNOWN_CHECK_VALUE 0x8012025
diff --git a/ld_script.txt b/ld_script.txt
index a4219faf3..668cf7c5a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -267,7 +267,6 @@ SECTIONS {
src/pokemon_summary_screen.o(.text);
src/unk_pokedex_area_screen_helper.o(.text);
src/battle_pyramid_bag.o(.text);
- asm/battle_pyramid_bag.o(.text);
asm/pokenav.o(.text);
src/match_call.o(.text);
asm/pokenav.o(.text.after.match.call);
@@ -545,6 +544,7 @@ SECTIONS {
src/berry_fix_program.o(.rodata);
src/pokemon_summary_screen.o(.rodata);
src/unk_pokedex_area_screen_helper.o(.rodata);
+ src/battle_pyramid_bag.o(.rodata);
data/battle_pyramid_bag.o(.rodata);
data/pokenav.o(.rodata);
src/match_call.o(.rodata);
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 721dfca98..9cb35074b 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle_pyramid_bag.h"
#include "main.h"
#include "battle_controllers.h"
#include "bg.h"
@@ -28,122 +29,202 @@
#include "event_data.h"
#include "text_window.h"
#include "international_string_util.h"
+#include "item_icon.h"
#include "constants/items.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-EWRAM_DATA struct
-{
- MainCallback callback2;
- u8 tilemapBuffer[0x800];
- u8 itemsSpriteIds[PYRAMID_BAG_ITEMS_COUNT + 1];
- u8 windowIds[5];
- u8 unk814;
- u8 unk815;
- u8 unk816;
- const u8 *menuActionIds;
- u8 filler81C;
- u8 filler81D;
- u8 filler81E;
- u8 filler81F;
- u8 menuActionsCount;
- u8 listMenuCount;
- u8 listMenuMaxShown;
- struct ListMenuItem bagListItems[PYRAMID_BAG_ITEMS_COUNT + 1];
- u8 itemStrings[PYRAMID_BAG_ITEMS_COUNT + 1][ITEM_NAME_LENGTH + 10];
- s16 unk984;
- u8 filler986[0x98C - 0x986];
-} *gUnknown_0203CF2C = NULL;
-
-EWRAM_DATA struct
-{
- void (*callback)(void);
- u8 unk4;
- u16 unk6;
- u16 unk8;
-} gUnknown_0203CF30 = {0};
-
-extern const struct BgTemplate gUnknown_0861F2B4[3];
-extern const struct WindowTemplate gUnknown_0861F328[];
-extern const struct WindowTemplate gUnknown_0861F350[];
-extern const struct CompressedSpriteSheet gUnknown_0861F3CC;
-extern const struct ListMenuTemplate gUnknown_0861F2C0;
-extern const u8 gUnknown_0861F310[1];
-extern const u8 gUnknown_0861F308[4];
-extern const u8 gUnknown_0861F30E[2];
-extern const u8 gUnknown_0861F30C[2];
-extern const struct MenuAction gUnknown_0861F2D8[];
-extern const struct YesNoFuncTable gUnknown_0861F314;
+EWRAM_DATA struct PyramidBagResources *gPyramidBagResources = NULL;
+EWRAM_DATA struct PyramidBagCursorData gPyramidBagCursorData = {0};
+
+// gfx
+extern const u8 gUnknown_08D9ADD0[];
+extern const u8 gUnknown_08D9AE04[];
+extern const u8 gUnknown_08D9AF44[];
extern const u16 gUnknown_0860F074[];
-extern const u8 gUnknown_0861F31C[][3];
// This file's functions.
-void sub_81C4F98(u8 a0, void (*callback)(void));
-void sub_81C4F44(u8 taskId);
-void Task_HandlePyramidBagInput(u8 taskId);
-void sub_81C5B4C(u8 taskId);
-void sub_81C67CC(u8 taskId);
-void sub_81C5D20(u8 taskId);
-void sub_81C674C(u8 taskId);
-void sub_81C5FE4(u8 taskId);
-void sub_81C5F68(u8 taskId);
-void sub_81C6714(u8 taskId);
-void sub_81C66EC(u8 taskId);
-void sub_81C629C(u8 taskId);
-void sub_81C6350(u8 taskId);
-void sub_81C64B4(u8 taskId);
-void sub_81C65CC(u8 taskId);
-void sub_81C66AC(u8 taskId);
-void sub_81C6964(u8 taskId);
-void sub_81C68B0(u8 taskId);
-void sub_81C6A14(u8 taskId);
-void sub_81C504C(void);
-bool8 sub_81C5078(void);
-void sub_81C51DC(void);
-bool8 sub_81C5238(void);
-void SetBagItemsListTemplate(void);
-void sub_81C5674(void);
-void sub_81C56F8(void);
-void sub_81C5924(void);
-void sub_81C59BC(void);
-void sub_81C5A20(void);
-void sub_81C6BD8(void);
-void sub_81C6EF4(void);
-void sub_81C700C(void);
-void sub_81C6E98(void);
-void sub_81C6F20(void);
-void sub_81C6404(void);
-void sub_81C6E1C(void);
-void ShowItemImage(u16 itemId, u8 tagIdAdder);
-void PyramidBag_CopyItemName(u8 *dst, u16 itemId);
-void sub_81C6FF8(u8 arg0);
-void PrintItemDescription(s32 listMenuId);
-void sub_81C5AB8(u8 y, u8 arg1);
-void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId);
-void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId);
-u8 sub_81C6D24(u8 windowArrayId);
-void sub_81C6D6C(u8 windowArrayId);
-void sub_81C5EAC(u8 windowId);
-void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount);
-bool8 sub_81C616C(s8 arg0);
-void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable);
-void sub_81C6CEC(u8 windowId);
-void sub_81C704C(u8 arg0);
-void sub_81C7028(u8 arg0);
+static void Task_HandlePyramidBagInput(u8 taskId);
+static void sub_81C4F44(u8 taskId);
+static void sub_81C5B4C(u8 taskId);
+static void Task_BeginItemSwap(u8 taskId);
+static void sub_81C5D20(u8 taskId);
+static void sub_81C674C(u8 taskId);
+static void HandleMenuActionInput(u8 taskId);
+static void HandleFewMenuActionsInput(u8 taskId);
+static void sub_81C66EC(u8 taskId);
+static void SetTaskToMainPyramidBagInputHandler(u8 taskId);
+static void sub_81C6350(u8 taskId);
+static void sub_81C64B4(u8 taskId);
+static void sub_81C65CC(u8 taskId);
+static void sub_81C66AC(u8 taskId);
+static void PerformItemSwap(u8 taskId);
+static void Task_ItemSwapHandleInput(u8 taskId);
+static void sub_81C6A14(u8 taskId);
+static void SetBagItemsListTemplate(void);
+static void sub_81C504C(void);
+static void sub_81C51DC(void);
+static void AddScrollArrow(void);
+static void sub_81C56F8(void);
+static void sub_81C5A20(void);
+static void sub_81C6BD8(void);
+static void sub_81C6EF4(void);
+static void sub_81C700C(void);
+static void sub_81C6E98(void);
+static void sub_81C6F20(void);
+static void sub_81C6404(void);
+static void sub_81C6E1C(void);
+static bool8 sub_81C5238(void);
+static bool8 sub_81C5078(void);
+static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId);
+static void PyramidBag_CopyItemName(u8 *dst, u16 itemId);
+static void sub_81C6FF8(u8 arg0);
+static void PrintItemDescription(s32 listMenuId);
+static void sub_81C5AB8(u8 y, u8 arg1);
+static void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId);
+static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId);
+static u8 sub_81C6D24(u8 windowArrayId);
+static void sub_81C6D6C(u8 windowArrayId);
+static void sub_81C5EAC(u8 windowId);
+static void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount);
+static bool8 IsAValidMenuAction(s8 arg0);
+static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable);
+static void sub_81C6CEC(u8 windowId);
+static void sub_81C704C(u8 y);
+static void sub_81C7028(bool8 invisible);
+static void sub_81C6F68(struct Sprite *sprite);
+static void BagAction_UseOnField(u8 taskId);
+static void BagAction_Toss(u8 taskId);
+static void BagAction_Give(u8 taskId);
+static void BagAction_Cancel(u8 taskId);
+static void BagAction_UseInBattle(u8 taskId);
+static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y);
+static void TossItem(u8 taskId);
+static void DontTossItem(u8 taskId);
+
+// Const rom data.
+static const struct BgTemplate gUnknown_0861F2B4[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+};
+
+static const struct ListMenuTemplate gUnknown_0861F2C0 =
+{
+ .items = NULL,
+ .moveCursorFunc = PyramidBagMoveCursorFunc,
+ .itemPrintFunc = PrintItemQuantity,
+ .totalItems = 0,
+ .maxShowed = 0,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 0,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 7,
+ .cursorKind = 0
+};
+
+#define ACTION_USE_FIELD 0
+#define ACTION_TOSS 1
+#define ACTION_GIVE 2
+#define ACTION_CANCEL 3
+#define ACTION_USE_BATTLE 4
+#define ACTION_DUMMY 5
+
+static const struct MenuAction sMenuActions[] =
+{
+ [ACTION_USE_FIELD] = { gMenuText_Use, BagAction_UseOnField },
+ [ACTION_TOSS] = { gMenuText_Toss, BagAction_Toss },
+ [ACTION_GIVE] = { gMenuText_Give, BagAction_Give },
+ [ACTION_CANCEL] = { gText_Cancel2, BagAction_Cancel },
+ [ACTION_USE_BATTLE] = { gMenuText_Use, BagAction_UseInBattle },
+ [ACTION_DUMMY] = { gText_EmptyString2, NULL },
+};
+
+static const u8 sFieldMenuActionIds[] = {ACTION_USE_FIELD, ACTION_GIVE, ACTION_TOSS, ACTION_CANCEL};
+static const u8 gUnknown_0861F30C[] = {ACTION_TOSS, ACTION_CANCEL};
+static const u8 sBattleMenuActionIds[] = {ACTION_USE_BATTLE, ACTION_CANCEL};
+static const u8 gUnknown_0861F310[] = {ACTION_CANCEL};
+
+static const struct YesNoFuncTable sYesNoTossFuncions =
+{
+ TossItem, DontTossItem
+};
+
+static const u8 sColorTable[][3] =
+{
+ {0, 2, 3},
+ {0, 3, 1},
+ {1, 2, 3},
+};
+
+static const struct WindowTemplate gUnknown_0861F328[] =
+{
+ {0x00, 0x0e, 0x02, 0x0f, 0x10, 0x0f, 0x001e},
+ {0x00, 0x00, 0x0d, 0x0e, 0x06, 0x0f, 0x010e},
+ {0x01, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x0162},
+ {0x01, 0x18, 0x11, 0x05, 0x02, 0x0f, 0x01ce},
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct WindowTemplate gUnknown_0861F350[] =
+{
+ {0x01, 0x16, 0x11, 0x07, 0x02, 0x0f, 0x01d8},
+ {0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01d8},
+ {0x01, 0x0f, 0x0f, 0x0e, 0x04, 0x0f, 0x01d8},
+ {0x01, 0x0f, 0x0d, 0x0e, 0x06, 0x0f, 0x01d8},
+ {0x01, 0x18, 0x0f, 0x05, 0x04, 0x0f, 0x01d8},
+};
+
+extern const struct CompressedSpriteSheet gUnknown_0861F3CC;
+extern const struct SpriteTemplate gUnknown_0861F3D4;
// code
void sub_81C4EEC(void)
{
- gUnknown_0203CF30.unk6 = 0;
- gUnknown_0203CF30.unk8 = 0;
+ gPyramidBagCursorData.cursorPosition = 0;
+ gPyramidBagCursorData.scrollPosition = 0;
}
-void sub_81C4EFC(void)
+void CB2_PyramidBagMenuFromStartMenu(void)
{
sub_81C4F98(0, CB2_ReturnToFieldWithOpenMenu);
}
-void sub_81C4F10(void)
+static void sub_81C4F10(void)
{
sub_81C4F98(1, SetCB2ToReshowScreenAfterMenu2);
}
@@ -155,7 +236,7 @@ void sub_81C4F24(void)
CreateTask(sub_81C4F44, 10);
}
-void sub_81C4F44(u8 taskId)
+static void sub_81C4F44(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -168,30 +249,30 @@ void sub_81C4F44(u8 taskId)
void sub_81C4F84(void)
{
- sub_81C4F98(4, gUnknown_0203CF30.callback);
+ sub_81C4F98(4, gPyramidBagCursorData.callback);
}
void sub_81C4F98(u8 a0, void (*callback)(void))
{
- gUnknown_0203CF2C = AllocZeroed(sizeof(*gUnknown_0203CF2C));
+ gPyramidBagResources = AllocZeroed(sizeof(*gPyramidBagResources));
if (a0 != 4)
- gUnknown_0203CF30.unk4 = a0;
+ gPyramidBagCursorData.unk4 = a0;
if (callback != NULL)
- gUnknown_0203CF30.callback = callback;
+ gPyramidBagCursorData.callback = callback;
- gUnknown_0203CF2C->callback2 = NULL;
- gUnknown_0203CF2C->unk814 = 0xFF;
- gUnknown_0203CF2C->unk816 = 0xFF;
+ gPyramidBagResources->callback2 = NULL;
+ gPyramidBagResources->unk814 = 0xFF;
+ gPyramidBagResources->scrollArrowSpriteId = 0xFF;
- memset(gUnknown_0203CF2C->itemsSpriteIds, 0xFF, sizeof(gUnknown_0203CF2C->itemsSpriteIds));
- memset(gUnknown_0203CF2C->windowIds, 0xFF, sizeof(gUnknown_0203CF2C->windowIds));
+ memset(gPyramidBagResources->itemsSpriteIds, 0xFF, sizeof(gPyramidBagResources->itemsSpriteIds));
+ memset(gPyramidBagResources->windowIds, 0xFF, sizeof(gPyramidBagResources->windowIds));
SetMainCallback2(sub_81C504C);
}
-void sub_81C501C(void)
+static void sub_81C501C(void)
{
RunTasks();
AnimateSprites();
@@ -200,19 +281,19 @@ void sub_81C501C(void)
UpdatePaletteFade();
}
-void sub_81C5038(void)
+static void sub_81C5038(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-void sub_81C504C(void)
+static void sub_81C504C(void)
{
while (sub_81221EC() != TRUE && sub_81C5078() != TRUE && sub_81221AC() != TRUE);
}
-bool8 sub_81C5078(void)
+static bool8 sub_81C5078(void)
{
switch (gMain.state)
{
@@ -247,7 +328,7 @@ bool8 sub_81C5078(void)
break;
case 6:
sub_81C51DC();
- gUnknown_0203CF2C->unk984 = 0;
+ gPyramidBagResources->state = 0;
gMain.state++;
break;
case 7:
@@ -279,7 +360,7 @@ bool8 sub_81C5078(void)
gMain.state++;
break;
case 13:
- sub_81C5674();
+ AddScrollArrow();
gMain.state++;
break;
case 14:
@@ -303,12 +384,12 @@ bool8 sub_81C5078(void)
return FALSE;
}
-void sub_81C51DC(void)
+static void sub_81C51DC(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_0861F2B4, ARRAY_COUNT(gUnknown_0861F2B4));
- SetBgTilemapBuffer(2, gUnknown_0203CF2C->tilemapBuffer);
+ SetBgTilemapBuffer(2, gPyramidBagResources->tilemapBuffer);
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(2);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
@@ -320,67 +401,64 @@ void sub_81C51DC(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-extern const u8 gUnknown_08D9AE04[];
-extern const u8 gUnknown_08D9AF44[];
-
-bool8 sub_81C5238(void)
+static bool8 sub_81C5238(void)
{
- switch (gUnknown_0203CF2C->unk984)
+ switch (gPyramidBagResources->state)
{
case 0:
reset_temp_tile_data_buffers();
decompress_and_copy_tile_data_to_vram(2, gBagScreen_Gfx, 0, 0, 0);
- gUnknown_0203CF2C->unk984++;
+ gPyramidBagResources->state++;
break;
case 1:
if (free_temp_tile_data_buffers_if_possible() != TRUE)
{
- LZDecompressWram(gUnknown_08D9AE04, gUnknown_0203CF2C->tilemapBuffer);
- gUnknown_0203CF2C->unk984++;
+ LZDecompressWram(gUnknown_08D9AE04, gPyramidBagResources->tilemapBuffer);
+ gPyramidBagResources->state++;
}
break;
case 2:
LoadCompressedPalette(gUnknown_08D9AF44, 0, 0x20);
- gUnknown_0203CF2C->unk984++;
+ gPyramidBagResources->state++;
break;
case 3:
LoadCompressedObjectPic(&gUnknown_0861F3CC);
- gUnknown_0203CF2C->unk984++;
+ gPyramidBagResources->state++;
break;
case 4:
sub_81C6E98();
- gUnknown_0203CF2C->unk984++;
+ gPyramidBagResources->state++;
break;
default:
LoadListMenuArrowsGfx();
- gUnknown_0203CF2C->unk984 = 0;
+ gPyramidBagResources->state = 0;
return TRUE;
}
return FALSE;
}
-void SetBagItemsListTemplate(void)
+static void SetBagItemsListTemplate(void)
{
u16 i;
u16 *pyramidItems = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
- for (i = 0; i < gUnknown_0203CF2C->listMenuCount - 1; i++)
+ for (i = 0; i < gPyramidBagResources->listMenuCount - 1; i++)
{
- PyramidBag_CopyItemName(gUnknown_0203CF2C->itemStrings[i], pyramidItems[i]);
- gUnknown_0203CF2C->bagListItems[i].name = gUnknown_0203CF2C->itemStrings[i];
- gUnknown_0203CF2C->bagListItems[i].id = i;
+ PyramidBag_CopyItemName(gPyramidBagResources->itemStrings[i], pyramidItems[i]);
+ gPyramidBagResources->bagListItems[i].name = gPyramidBagResources->itemStrings[i];
+ gPyramidBagResources->bagListItems[i].id = i;
}
- StringCopy(gUnknown_0203CF2C->itemStrings[i], gText_CloseBag);
- gUnknown_0203CF2C->bagListItems[i].name = gUnknown_0203CF2C->itemStrings[i];
- gUnknown_0203CF2C->bagListItems[i].id = LIST_B_PRESSED;
+ StringCopy(gPyramidBagResources->itemStrings[i], gText_CloseBag);
+ gPyramidBagResources->bagListItems[i].name = gPyramidBagResources->itemStrings[i];
+ gPyramidBagResources->bagListItems[i].id = LIST_B_PRESSED;
gMultiuseListMenuTemplate = gUnknown_0861F2C0;
- gMultiuseListMenuTemplate.totalItems = gUnknown_0203CF2C->listMenuCount;
- gMultiuseListMenuTemplate.items = gUnknown_0203CF2C->bagListItems;
- gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CF2C->listMenuMaxShown;
+ gMultiuseListMenuTemplate.totalItems = gPyramidBagResources->listMenuCount;
+ gMultiuseListMenuTemplate.items = gPyramidBagResources->bagListItems;
+ gMultiuseListMenuTemplate.maxShowed = gPyramidBagResources->listMenuMaxShown;
}
-void PyramidBag_CopyItemName(u8 *dst, u16 itemId)
+static void PyramidBag_CopyItemName(u8 *dst, u16 itemId)
{
if (ItemId_GetPocket(itemId) == POCKET_BERRIES)
{
@@ -394,34 +472,34 @@ void PyramidBag_CopyItemName(u8 *dst, u16 itemId)
}
}
-void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
{
if (onInit != TRUE)
{
PlaySE(SE_SELECT);
sub_81C6F20();
}
- if (gUnknown_0203CF2C->unk814 == 0xFF)
+ if (gPyramidBagResources->unk814 == 0xFF)
{
- sub_81C6FF8(gUnknown_0203CF2C->unk815 ^ 1);
+ sub_81C6FF8(gPyramidBagResources->unk815 ^ 1);
if (itemIndex != LIST_B_PRESSED)
- ShowItemImage(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][itemIndex], gUnknown_0203CF2C->unk815);
+ ShowItemImage(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][itemIndex], gPyramidBagResources->unk815);
else
- ShowItemImage(0xFFFF, gUnknown_0203CF2C->unk815);
- gUnknown_0203CF2C->unk815 ^= 1;
+ ShowItemImage(0xFFFF, gPyramidBagResources->unk815);
+ gPyramidBagResources->unk815 ^= 1;
PrintItemDescription(itemIndex);
}
}
-void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y)
+static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y)
{
s32 xAlign;
if (itemIndex == LIST_B_PRESSED)
return;
- if (gUnknown_0203CF2C->unk814 != 0xFF)
+ if (gPyramidBagResources->unk814 != 0xFF)
{
- if (gUnknown_0203CF2C->unk814 == (u8)(itemIndex))
+ if (gPyramidBagResources->unk814 == (u8)(itemIndex))
sub_81C5AB8(y, 1);
else
sub_81C5AB8(y, 0xFF);
@@ -435,7 +513,7 @@ void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y)
PrintOnWindow_Font7(windowId, gStringVar4, xAlign, y, 0, 0, TEXT_SPEED_FF, 0);
}
-void PrintItemDescription(s32 listMenuId)
+static void PrintItemDescription(s32 listMenuId)
{
const u8 *desc;
if (listMenuId != LIST_B_PRESSED)
@@ -444,7 +522,7 @@ void PrintItemDescription(s32 listMenuId)
}
else
{
- StringCopy(gStringVar1, gReturnToXStringsTable2[gUnknown_0203CF30.unk4]);
+ StringCopy(gStringVar1, gReturnToXStringsTable2[gPyramidBagCursorData.unk4]);
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
desc = gStringVar4;
}
@@ -452,29 +530,29 @@ void PrintItemDescription(s32 listMenuId)
PrintOnWindow_Font1(1, desc, 3, 0, 0, 1, 0, 0);
}
-void sub_81C5674(void)
+static void AddScrollArrow(void)
{
- if (gUnknown_0203CF2C->unk816 == 0xFF)
- gUnknown_0203CF2C->unk816 = AddScrollIndicatorArrowPairParameterized(2, 172, 12, 148, gUnknown_0203CF2C->listMenuCount - gUnknown_0203CF2C->listMenuMaxShown, 0xB5E, 0xB5E, &gUnknown_0203CF30.unk8);
+ if (gPyramidBagResources->scrollArrowSpriteId == 0xFF)
+ gPyramidBagResources->scrollArrowSpriteId = AddScrollIndicatorArrowPairParameterized(2, 172, 12, 148, gPyramidBagResources->listMenuCount - gPyramidBagResources->listMenuMaxShown, 0xB5E, 0xB5E, &gPyramidBagCursorData.scrollPosition);
}
-void sub_81C56CC(void)
+static void RemoveScrollArrow(void)
{
- if (gUnknown_0203CF2C->unk816 != 0xFF)
+ if (gPyramidBagResources->scrollArrowSpriteId != 0xFF)
{
- RemoveScrollIndicatorArrowPair(gUnknown_0203CF2C->unk816);
- gUnknown_0203CF2C->unk816 = 0xFF;
+ RemoveScrollIndicatorArrowPair(gPyramidBagResources->scrollArrowSpriteId);
+ gPyramidBagResources->scrollArrowSpriteId = 0xFF;
}
}
-void sub_81C56F8(void)
+static void sub_81C56F8(void)
{
u8 taskId = CreateTask(Task_HandlePyramidBagInput, 0);
s16 *data = gTasks[taskId].data;
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203CF30.unk8, gUnknown_0203CF30.unk6);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gPyramidBagCursorData.scrollPosition, gPyramidBagCursorData.cursorPosition);
}
-void SwapItems(u8 id1, u8 id2)
+static void SwapItems(u8 id1, u8 id2)
{
u16 temp;
u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
@@ -484,7 +562,7 @@ void SwapItems(u8 id1, u8 id2)
SWAP(quantities[id1], quantities[id2], temp);
}
-void MovePyramidBagItemSlotInList(u8 from, u8 to)
+static void MovePyramidBagItemSlotInList(u8 from, u8 to)
{
u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
@@ -517,7 +595,7 @@ void MovePyramidBagItemSlotInList(u8 from, u8 to)
}
}
-void CompactItems(void)
+static void CompactItems(void)
{
u8 i, j;
u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
@@ -547,58 +625,58 @@ void sub_81C5924(void)
u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
CompactItems();
- gUnknown_0203CF2C->listMenuCount = 0;
+ gPyramidBagResources->listMenuCount = 0;
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
{
if (itemIds[i] != 0)
- gUnknown_0203CF2C->listMenuCount++;
+ gPyramidBagResources->listMenuCount++;
}
- gUnknown_0203CF2C->listMenuCount++;
- if (gUnknown_0203CF2C->listMenuCount > 8)
- gUnknown_0203CF2C->listMenuMaxShown = 8;
+ gPyramidBagResources->listMenuCount++;
+ if (gPyramidBagResources->listMenuCount > 8)
+ gPyramidBagResources->listMenuMaxShown = 8;
else
- gUnknown_0203CF2C->listMenuMaxShown = gUnknown_0203CF2C->listMenuCount;
+ gPyramidBagResources->listMenuMaxShown = gPyramidBagResources->listMenuCount;
}
void sub_81C59BC(void)
{
- if (gUnknown_0203CF30.unk8 != 0 && gUnknown_0203CF30.unk8 + gUnknown_0203CF2C->listMenuMaxShown > gUnknown_0203CF2C->listMenuCount)
- gUnknown_0203CF30.unk8 = gUnknown_0203CF2C->listMenuCount - gUnknown_0203CF2C->listMenuMaxShown;
- if (gUnknown_0203CF30.unk8 + gUnknown_0203CF30.unk6 >= gUnknown_0203CF2C->listMenuCount)
+ if (gPyramidBagCursorData.scrollPosition != 0 && gPyramidBagCursorData.scrollPosition + gPyramidBagResources->listMenuMaxShown > gPyramidBagResources->listMenuCount)
+ gPyramidBagCursorData.scrollPosition = gPyramidBagResources->listMenuCount - gPyramidBagResources->listMenuMaxShown;
+ if (gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition >= gPyramidBagResources->listMenuCount)
{
- if (gUnknown_0203CF2C->listMenuCount == 0)
- gUnknown_0203CF30.unk6 = 0;
+ if (gPyramidBagResources->listMenuCount == 0)
+ gPyramidBagCursorData.cursorPosition = 0;
else
- gUnknown_0203CF30.unk6 = gUnknown_0203CF2C->listMenuCount - 1;
+ gPyramidBagCursorData.cursorPosition = gPyramidBagResources->listMenuCount - 1;
}
}
-void sub_81C5A20(void)
+static void sub_81C5A20(void)
{
u8 i;
- if (gUnknown_0203CF30.unk6 > 4)
+ if (gPyramidBagCursorData.cursorPosition > 4)
{
- for (i = 0; i <= gUnknown_0203CF30.unk6 - 4; i++)
+ for (i = 0; i <= gPyramidBagCursorData.cursorPosition - 4; i++)
{
- if (gUnknown_0203CF30.unk8 + gUnknown_0203CF2C->listMenuMaxShown == gUnknown_0203CF2C->listMenuCount)
+ if (gPyramidBagCursorData.scrollPosition + gPyramidBagResources->listMenuMaxShown == gPyramidBagResources->listMenuCount)
{
// daycare.c sends its regards.
break;
}
- gUnknown_0203CF30.unk6--;
- gUnknown_0203CF30.unk8++;
+ gPyramidBagCursorData.cursorPosition--;
+ gPyramidBagCursorData.scrollPosition++;
}
}
}
-void sub_81C5A98(u8 listMenuTaskId, u8 arg1)
+static void sub_81C5A98(u8 listMenuTaskId, u8 arg1)
{
u8 y = ListMenuGetYCoordForPrintingArrowCursor(listMenuTaskId);
sub_81C5AB8(y, arg1);
}
-void sub_81C5AB8(u8 y, u8 arg1)
+static void sub_81C5AB8(u8 y, u8 arg1)
{
if (arg1 == 0xFF)
FillWindowPixelRect(0, 0, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
@@ -612,46 +690,46 @@ void sub_81C5B14(u8 taskId)
gTasks[taskId].func = sub_81C5B4C;
}
-void sub_81C5B4C(u8 taskId)
+static void sub_81C5B4C(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
- DestroyListMenuTask(data[0], &gUnknown_0203CF30.unk8, &gUnknown_0203CF30.unk6);
- if (gUnknown_0203CF2C->callback2 != NULL)
- SetMainCallback2(gUnknown_0203CF2C->callback2);
+ DestroyListMenuTask(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
+ if (gPyramidBagResources->callback2 != NULL)
+ SetMainCallback2(gPyramidBagResources->callback2);
else
- SetMainCallback2(gUnknown_0203CF30.callback);
- sub_81C56CC();
+ SetMainCallback2(gPyramidBagCursorData.callback);
+ RemoveScrollArrow();
ResetSpriteData();
FreeAllSpritePalettes();
FreeAllWindowBuffers();
- Free(gUnknown_0203CF2C);
+ Free(gPyramidBagResources);
DestroyTask(taskId);
}
}
-void Task_HandlePyramidBagInput(u8 taskId)
+static void Task_HandlePyramidBagInput(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (sub_81221EC() != TRUE && !gPaletteFade.active)
{
if (gMain.newKeys & SELECT_BUTTON)
{
- if (gUnknown_0203CF30.unk4 != 2)
+ if (gPyramidBagCursorData.unk4 != 2)
{
- ListMenuGetScrollAndRow(data[0], &gUnknown_0203CF30.unk8, &gUnknown_0203CF30.unk6);
- if (gUnknown_0203CF30.unk8 + gUnknown_0203CF30.unk6 != gUnknown_0203CF2C->listMenuCount - 1)
+ ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
+ if (gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition != gPyramidBagResources->listMenuCount - 1)
{
PlaySE(SE_SELECT);
- sub_81C67CC(taskId);
+ Task_BeginItemSwap(taskId);
}
}
}
else
{
s32 listId = ListMenuHandleInputGetItemId(data[0]);
- ListMenuGetScrollAndRow(data[0], &gUnknown_0203CF30.unk8, &gUnknown_0203CF30.unk6);
+ ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
switch (listId)
{
case LIST_NOTHING_CHOSEN:
@@ -666,7 +744,7 @@ void Task_HandlePyramidBagInput(u8 taskId)
gSpecialVar_ItemId = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listId];
data[1] = listId;
data[2] = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode][listId];
- if (gUnknown_0203CF30.unk4 == 2)
+ if (gPyramidBagCursorData.unk4 == 2)
sub_81C674C(taskId);
else
sub_81C5D20(taskId);
@@ -676,33 +754,33 @@ void Task_HandlePyramidBagInput(u8 taskId)
}
}
-void sub_81C5D20(u8 taskId)
+static void sub_81C5D20(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81C56CC();
+ RemoveScrollArrow();
sub_81C5A98(data[0], 1);
- switch (gUnknown_0203CF30.unk4)
+ switch (gPyramidBagCursorData.unk4)
{
default:
- gUnknown_0203CF2C->menuActionIds = gUnknown_0861F308;
- gUnknown_0203CF2C->menuActionsCount = ARRAY_COUNT(gUnknown_0861F308);
+ gPyramidBagResources->menuActionIds = sFieldMenuActionIds;
+ gPyramidBagResources->menuActionsCount = ARRAY_COUNT(sFieldMenuActionIds);
break;
case 1:
if (ItemId_GetBattleUsage(gSpecialVar_ItemId))
{
- gUnknown_0203CF2C->menuActionIds = gUnknown_0861F30E;
- gUnknown_0203CF2C->menuActionsCount = ARRAY_COUNT(gUnknown_0861F30E);
+ gPyramidBagResources->menuActionIds = sBattleMenuActionIds;
+ gPyramidBagResources->menuActionsCount = ARRAY_COUNT(sBattleMenuActionIds);
}
else
{
- gUnknown_0203CF2C->menuActionIds = gUnknown_0861F310;
- gUnknown_0203CF2C->menuActionsCount = ARRAY_COUNT(gUnknown_0861F310);
+ gPyramidBagResources->menuActionIds = gUnknown_0861F310;
+ gPyramidBagResources->menuActionsCount = ARRAY_COUNT(gUnknown_0861F310);
}
break;
case 3:
- gUnknown_0203CF2C->menuActionIds = gUnknown_0861F30C;
- gUnknown_0203CF2C->menuActionsCount = ARRAY_COUNT(gUnknown_0861F30C);
+ gPyramidBagResources->menuActionIds = gUnknown_0861F30C;
+ gPyramidBagResources->menuActionsCount = ARRAY_COUNT(gUnknown_0861F30C);
break;
}
@@ -710,32 +788,32 @@ void sub_81C5D20(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
FillWindowPixelBuffer(1, 0);
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
- if (gUnknown_0203CF2C->menuActionsCount == 1)
+ if (gPyramidBagResources->menuActionsCount == 1)
sub_81C5EAC(sub_81C6D24(0));
- else if (gUnknown_0203CF2C->menuActionsCount == 2)
+ else if (gPyramidBagResources->menuActionsCount == 2)
sub_81C5EAC(sub_81C6D24(1));
else
sub_81C5F08(sub_81C6D24(2), 2, 2);
- if (gUnknown_0203CF2C->menuActionsCount == 4)
- gTasks[taskId].func = sub_81C5FE4;
+ if (gPyramidBagResources->menuActionsCount == 4)
+ gTasks[taskId].func = HandleMenuActionInput;
else
- gTasks[taskId].func = sub_81C5F68;
+ gTasks[taskId].func = HandleFewMenuActionsInput;
}
-void sub_81C5EAC(u8 windowId)
+static void sub_81C5EAC(u8 windowId)
{
- AddItemMenuActionTextPrinters(windowId, 7, 8, 1, 0, 0x10, gUnknown_0203CF2C->menuActionsCount, gUnknown_0861F2D8, gUnknown_0203CF2C->menuActionIds);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, gUnknown_0203CF2C->menuActionsCount, 0);
+ AddItemMenuActionTextPrinters(windowId, 7, 8, 1, 0, 0x10, gPyramidBagResources->menuActionsCount, sMenuActions, gPyramidBagResources->menuActionIds);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, gPyramidBagResources->menuActionsCount, 0);
}
-void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount)
+static void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount)
{
- sub_8198DBC(windowId, 7, 8, 1, 0x38, horizontalCount, verticalCount, gUnknown_0861F2D8, gUnknown_0203CF2C->menuActionIds);
+ sub_8198DBC(windowId, 7, 8, 1, 0x38, horizontalCount, verticalCount, sMenuActions, gPyramidBagResources->menuActionIds);
sub_8199944(windowId, 0x38, horizontalCount, verticalCount, 0);
}
-void sub_81C5F68(u8 taskId)
+static void HandleFewMenuActionsInput(u8 taskId)
{
if (sub_81221EC() != TRUE)
{
@@ -746,25 +824,25 @@ void sub_81C5F68(u8 taskId)
break;
case -1:
PlaySE(SE_SELECT);
- gUnknown_0861F2D8[3].func.void_u8(taskId);
+ sMenuActions[ACTION_CANCEL].func.void_u8(taskId);
break;
default:
PlaySE(SE_SELECT);
- if (gUnknown_0861F2D8[gUnknown_0203CF2C->menuActionIds[id]].func.void_u8 != NULL)
- gUnknown_0861F2D8[gUnknown_0203CF2C->menuActionIds[id]].func.void_u8(taskId);
+ if (sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8 != NULL)
+ sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8(taskId);
break;
}
}
}
-void sub_81C5FE4(u8 taskId)
+static void HandleMenuActionInput(u8 taskId)
{
if (sub_81221EC() != TRUE)
{
s8 id = GetMenuCursorPos();
if (gMain.newKeys & DPAD_UP)
{
- if (id > 0 && sub_81C616C(id - 2))
+ if (id > 0 && IsAValidMenuAction(id - 2))
{
PlaySE(SE_SELECT);
sub_8199134(0, -1);
@@ -772,7 +850,7 @@ void sub_81C5FE4(u8 taskId)
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (id < gUnknown_0203CF2C->menuActionsCount - 2 && sub_81C616C(id + 2))
+ if (id < gPyramidBagResources->menuActionsCount - 2 && IsAValidMenuAction(id + 2))
{
PlaySE(SE_SELECT);
sub_8199134(0, 1);
@@ -780,7 +858,7 @@ void sub_81C5FE4(u8 taskId)
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
{
- if (id & 1 && sub_81C616C(id - 1))
+ if (id & 1 && IsAValidMenuAction(id - 1))
{
PlaySE(SE_SELECT);
sub_8199134(-1, 0);
@@ -788,7 +866,7 @@ void sub_81C5FE4(u8 taskId)
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
{
- if (!(id & 1) && sub_81C616C(id + 1))
+ if (!(id & 1) && IsAValidMenuAction(id + 1))
{
PlaySE(SE_SELECT);
sub_8199134(1, 0);
@@ -797,40 +875,40 @@ void sub_81C5FE4(u8 taskId)
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- if (gUnknown_0861F2D8[gUnknown_0203CF2C->menuActionIds[id]].func.void_u8 != NULL)
- gUnknown_0861F2D8[gUnknown_0203CF2C->menuActionIds[id]].func.void_u8(taskId);
+ if (sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8 != NULL)
+ sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- gUnknown_0861F2D8[3].func.void_u8(taskId);
+ sMenuActions[ACTION_CANCEL].func.void_u8(taskId);
}
}
}
-bool8 sub_81C616C(s8 arg0)
+static bool8 IsAValidMenuAction(s8 actionTableId)
{
- if (arg0 < 0)
+ if (actionTableId < 0)
return FALSE;
- else if (arg0 > gUnknown_0203CF2C->menuActionsCount)
+ else if (actionTableId > gPyramidBagResources->menuActionsCount)
return FALSE;
- else if (gUnknown_0203CF2C->menuActionIds[arg0] == 5)
+ else if (gPyramidBagResources->menuActionIds[actionTableId] == ACTION_DUMMY)
return FALSE;
else
return TRUE;
}
-void sub_81C61A8(void)
+static void sub_81C61A8(void)
{
- if (gUnknown_0203CF2C->menuActionsCount == 1)
+ if (gPyramidBagResources->menuActionsCount == 1)
sub_81C6D6C(0);
- else if (gUnknown_0203CF2C->menuActionsCount == 2)
+ else if (gPyramidBagResources->menuActionsCount == 2)
sub_81C6D6C(1);
else
sub_81C6D6C(2);
}
-void sub_81C61E0(u8 taskId)
+static void BagAction_UseOnField(u8 taskId)
{
u8 pocketId = ItemId_GetPocket(gSpecialVar_ItemId);
@@ -851,7 +929,7 @@ void sub_81C61E0(u8 taskId)
}
}
-void sub_81C6258(u8 taskId)
+static void BagAction_Cancel(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -860,16 +938,16 @@ void sub_81C6258(u8 taskId)
schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1);
sub_81C5A98(data[0], 0);
- sub_81C629C(taskId);
+ SetTaskToMainPyramidBagInputHandler(taskId);
}
-void sub_81C629C(u8 taskId)
+static void SetTaskToMainPyramidBagInputHandler(u8 taskId)
{
- sub_81C5674();
+ AddScrollArrow();
gTasks[taskId].func = Task_HandlePyramidBagInput;
}
-void sub_81C62C4(u8 taskId)
+static void BagAction_Toss(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -890,7 +968,7 @@ void sub_81C62C4(u8 taskId)
}
}
-void sub_81C6350(u8 taskId)
+static void sub_81C6350(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -899,19 +977,19 @@ void sub_81C6350(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
FillWindowPixelBuffer(1, 0);
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
- sub_81C6DAC(taskId, &gUnknown_0861F314);
+ sub_81C6DAC(taskId, &sYesNoTossFuncions);
}
-void sub_81C63D0(u8 taskId)
+static void DontTossItem(u8 taskId)
{
s16 *data = gTasks[taskId].data;
PrintItemDescription(data[1]);
sub_81C5A98(data[0], 0);
- sub_81C629C(taskId);
+ SetTaskToMainPyramidBagInputHandler(taskId);
}
-void sub_81C6404(void)
+static void sub_81C6404(void)
{
s32 x;
@@ -922,7 +1000,7 @@ void sub_81C6404(void)
PrintTextOnWindow(3, 1, gStringVar4, x, 2, 0, NULL);
}
-void sub_81C645C(s16 value)
+static void sub_81C645C(s16 value)
{
s32 x;
@@ -932,7 +1010,7 @@ void sub_81C645C(s16 value)
PrintTextOnWindow(3, 1, gStringVar4, x, 2, 0, NULL);
}
-void sub_81C64B4(u8 taskId)
+static void sub_81C64B4(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -954,11 +1032,11 @@ void sub_81C64B4(u8 taskId)
sub_8198070(3, 0);
ClearWindowTilemap(3);
schedule_bg_copy_tilemap_to_vram(1);
- sub_81C63D0(taskId);
+ DontTossItem(taskId);
}
}
-void sub_81C654C(u8 taskId)
+static void TossItem(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -970,11 +1048,11 @@ void sub_81C654C(u8 taskId)
gTasks[taskId].func = sub_81C65CC;
}
-void sub_81C65CC(u8 taskId)
+static void sub_81C65CC(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *scrollOffset = &gUnknown_0203CF30.unk8;
- u16 *selectedRow = &gUnknown_0203CF30.unk6;
+ u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition;
+ u16 *selectedRow = &gPyramidBagCursorData.cursorPosition;
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
@@ -986,11 +1064,11 @@ void sub_81C65CC(u8 taskId)
SetBagItemsListTemplate();
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
schedule_bg_copy_tilemap_to_vram(0);
- sub_81C629C(taskId);
+ SetTaskToMainPyramidBagInputHandler(taskId);
}
}
-void sub_81C6648(u8 taskId)
+static void BagAction_Give(u8 taskId)
{
sub_81C61A8();
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
@@ -999,7 +1077,7 @@ void sub_81C6648(u8 taskId)
}
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
{
- gUnknown_0203CF2C->callback2 = sub_81B7F60;
+ gPyramidBagResources->callback2 = sub_81B7F60;
sub_81C5B14(taskId);
}
else
@@ -1008,14 +1086,14 @@ void sub_81C6648(u8 taskId)
}
}
-void sub_81C66AC(u8 taskId)
+static void sub_81C66AC(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeld);
DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C66EC);
}
-void sub_81C66EC(u8 taskId)
+static void sub_81C66EC(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
@@ -1031,10 +1109,10 @@ void sub_81C6714(u8 taskId)
sub_81C6E1C();
PrintItemDescription(data[1]);
sub_81C5A98(data[0], 0);
- sub_81C629C(taskId);
+ SetTaskToMainPyramidBagInputHandler(taskId);
}
-void sub_81C674C(u8 taskId)
+static void sub_81C674C(u8 taskId)
{
if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC);
@@ -1044,7 +1122,7 @@ void sub_81C674C(u8 taskId)
sub_81C66AC(taskId);
}
-void sub_81C679C(u8 taskId)
+static void BagAction_UseInBattle(u8 taskId)
{
if (ItemId_GetBattleFunc(gSpecialVar_ItemId) != NULL)
{
@@ -1053,12 +1131,12 @@ void sub_81C679C(u8 taskId)
}
}
-void sub_81C67CC(u8 taskId)
+static void Task_BeginItemSwap(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- data[1] = gUnknown_0203CF30.unk8 + gUnknown_0203CF30.unk6;
- gUnknown_0203CF2C->unk814 = data[1];
+ data[1] = gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition;
+ gPyramidBagResources->unk814 = data[1];
ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1);
CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][data[1]], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
@@ -1066,10 +1144,10 @@ void sub_81C67CC(u8 taskId)
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
sub_81C5A98(data[0], 1);
sub_81C704C(data[1]);
- gTasks[taskId].func = sub_81C68B0;
+ gTasks[taskId].func = Task_ItemSwapHandleInput;
}
-void sub_81C68B0(u8 taskId)
+static void Task_ItemSwapHandleInput(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (sub_81221EC() != TRUE)
@@ -1077,15 +1155,15 @@ void sub_81C68B0(u8 taskId)
if (gMain.newKeys & SELECT_BUTTON)
{
PlaySE(SE_SELECT);
- ListMenuGetScrollAndRow(data[0], &gUnknown_0203CF30.unk8, &gUnknown_0203CF30.unk6);
- sub_81C6964(taskId);
+ ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
+ PerformItemSwap(taskId);
}
else
{
s32 id = ListMenuHandleInputGetItemId(data[0]);
- ListMenuGetScrollAndRow(data[0], &gUnknown_0203CF30.unk8, &gUnknown_0203CF30.unk6);
- sub_81C7028(0);
- sub_81C704C(gUnknown_0203CF30.unk6);
+ ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
+ sub_81C7028(FALSE);
+ sub_81C704C(gPyramidBagCursorData.cursorPosition);
switch (id)
{
case LIST_NOTHING_CHOSEN:
@@ -1093,24 +1171,24 @@ void sub_81C68B0(u8 taskId)
case LIST_B_PRESSED:
PlaySE(SE_SELECT);
if (gMain.newKeys & A_BUTTON)
- sub_81C6964(taskId);
+ PerformItemSwap(taskId);
else
sub_81C6A14(taskId);
break;
default:
PlaySE(SE_SELECT);
- sub_81C6964(taskId);
+ PerformItemSwap(taskId);
break;
}
}
}
}
-void sub_81C6964(u8 taskId)
+static void PerformItemSwap(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *scrollOffset = &gUnknown_0203CF30.unk8;
- u16 *selectedRow = &gUnknown_0203CF30.unk6;
+ u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition;
+ u16 *selectedRow = &gPyramidBagCursorData.cursorPosition;
u16 var = *scrollOffset + *selectedRow;
if (data[1] == var || data[1] == var - 1)
@@ -1120,31 +1198,31 @@ void sub_81C6964(u8 taskId)
else
{
MovePyramidBagItemSlotInList(data[1], var);
- gUnknown_0203CF2C->unk814 = 0xFF;
- sub_81C7028(1);
+ gPyramidBagResources->unk814 = 0xFF;
+ sub_81C7028(TRUE);
DestroyListMenuTask(data[0], scrollOffset, selectedRow);
if (data[1] < var)
- gUnknown_0203CF30.unk6--;
+ gPyramidBagCursorData.cursorPosition--;
SetBagItemsListTemplate();
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
- sub_81C629C(taskId);
+ SetTaskToMainPyramidBagInputHandler(taskId);
}
}
-void sub_81C6A14(u8 taskId)
+static void sub_81C6A14(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *scrollOffset = &gUnknown_0203CF30.unk8;
- u16 *selectedRow = &gUnknown_0203CF30.unk6;
+ u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition;
+ u16 *selectedRow = &gPyramidBagCursorData.cursorPosition;
- gUnknown_0203CF2C->unk814 = 0xFF;
- sub_81C7028(1);
+ gPyramidBagResources->unk814 = 0xFF;
+ sub_81C7028(TRUE);
DestroyListMenuTask(data[0], scrollOffset, selectedRow);
if (data[1] < *scrollOffset + *selectedRow)
- gUnknown_0203CF30.unk6--;
+ gPyramidBagCursorData.cursorPosition--;
SetBagItemsListTemplate();
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
- sub_81C629C(taskId);
+ SetTaskToMainPyramidBagInputHandler(taskId);
}
void sub_81C6A94(void)
@@ -1181,7 +1259,7 @@ void sub_81C6A94(void)
Free(newQuantities);
}
-void sub_81C6BD8(void)
+static void sub_81C6BD8(void)
{
u8 i;
@@ -1200,30 +1278,30 @@ void sub_81C6BD8(void)
schedule_bg_copy_tilemap_to_vram(1);
}
-void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId)
+static void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId)
{
- AddTextPrinterParameterized2(windowId, 1, x, y, letterSpacing, lineSpacing, gUnknown_0861F31C[colorTableId], speed, src);
+ AddTextPrinterParameterized2(windowId, 1, x, y, letterSpacing, lineSpacing, sColorTable[colorTableId], speed, src);
}
-void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId)
+static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId)
{
- AddTextPrinterParameterized2(windowId, 7, x, y, letterSpacing, lineSpacing, gUnknown_0861F31C[colorTableId], speed, src);
+ AddTextPrinterParameterized2(windowId, 7, x, y, letterSpacing, lineSpacing, sColorTable[colorTableId], speed, src);
}
-void sub_81C6CEC(u8 windowId)
+static void sub_81C6CEC(u8 windowId)
{
SetWindowBorderStyle(windowId, 0, 1, 0xE);
schedule_bg_copy_tilemap_to_vram(1);
}
-u8 sub_81C6D08(u8 windowArrayId)
+static u8 sub_81C6D08(u8 windowArrayId)
{
- return gUnknown_0203CF2C->windowIds[windowArrayId];
+ return gPyramidBagResources->windowIds[windowArrayId];
}
-u8 sub_81C6D24(u8 windowArrayId)
+static u8 sub_81C6D24(u8 windowArrayId)
{
- u8 *windowId = &gUnknown_0203CF2C->windowIds[windowArrayId];
+ u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId];
if (*windowId == 0xFF)
{
*windowId = AddWindow(&gUnknown_0861F350[windowArrayId]);
@@ -1233,9 +1311,9 @@ u8 sub_81C6D24(u8 windowArrayId)
return *windowId;
}
-void sub_81C6D6C(u8 windowArrayId)
+static void sub_81C6D6C(u8 windowArrayId)
{
- u8 *windowId = &gUnknown_0203CF2C->windowIds[windowArrayId];
+ u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId];
if (*windowId != 0xFF)
{
sub_8198070(*windowId, FALSE);
@@ -1245,3 +1323,112 @@ void sub_81C6D6C(u8 windowArrayId)
*windowId = 0xFF;
}
}
+
+static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &gUnknown_0861F350[4], 1, 0, 2, 1, 0xE, yesNoTable);
+}
+
+void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId))
+{
+ FillWindowPixelBuffer(2, 0x11);
+ DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeed(), str, callback);
+ schedule_bg_copy_tilemap_to_vram(1);
+}
+
+static void sub_81C6E1C(void)
+{
+ sub_8197DF8(2, FALSE);
+ ClearWindowTilemap(2);
+ schedule_bg_copy_tilemap_to_vram(1);
+}
+
+#define ITEM_IMAGE_TAG 0x1024
+
+static void sub_81C6E38(u8 itemSpriteArrayId)
+{
+ u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[itemSpriteArrayId];
+ if (*spriteId != 0xFF)
+ {
+ FreeSpriteTilesByTag(ITEM_IMAGE_TAG + itemSpriteArrayId);
+ FreeSpritePaletteByTag(ITEM_IMAGE_TAG + itemSpriteArrayId);
+ FreeSpriteOamMatrix(&gSprites[*spriteId]);
+ DestroySprite(&gSprites[*spriteId]);
+ *spriteId = 0xFF;
+ }
+}
+
+static void sub_81C6E98(void)
+{
+ struct SpritePalette spritePalette;
+ u16 *palPtr = Alloc(0x40);
+
+ LZDecompressWram(gUnknown_08D9ADD0, palPtr);
+ spritePalette.data = palPtr + (gSaveBlock2Ptr->frontier.lvlMode * 16);
+ spritePalette.tag = ITEM_IMAGE_TAG;
+ LoadSpritePalette(&spritePalette);
+ Free(palPtr);
+}
+
+static void sub_81C6EF4(void)
+{
+ u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[0];
+ *spriteId = CreateSprite(&gUnknown_0861F3D4, 0x44, 0x38, 0);
+}
+
+static void sub_81C6F20(void)
+{
+ struct Sprite *sprite = &gSprites[gPyramidBagResources->itemsSpriteIds[0]];
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_81C6F68;
+ }
+}
+
+static void sub_81C6F68(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId)
+{
+ u8 itemSpriteId;
+ u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[itemSpriteArrayId + 1];
+ if (*spriteId == 0xFF)
+ {
+ FreeSpriteTilesByTag(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId);
+ FreeSpritePaletteByTag(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId);
+ itemSpriteId = AddItemIconSprite(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId, ITEM_IMAGE_TAG + 1 + itemSpriteArrayId, itemId);
+ if (itemSpriteId != MAX_SPRITES)
+ {
+ *spriteId = itemSpriteId;
+ gSprites[itemSpriteId].pos2.x = 24;
+ gSprites[itemSpriteId].pos2.y = 88;
+ }
+ }
+}
+
+static void sub_81C6FF8(u8 itemSpriteArrayId)
+{
+ sub_81C6E38(itemSpriteArrayId + 1);
+}
+
+static void sub_81C700C(void)
+{
+ sub_8122344(&gPyramidBagResources->itemsSpriteIds[3], 8);
+}
+
+static void sub_81C7028(bool8 invisible)
+{
+ sub_81223FC(&gPyramidBagResources->itemsSpriteIds[3], 8, invisible);
+}
+
+static void sub_81C704C(u8 y)
+{
+ sub_8122448(&gPyramidBagResources->itemsSpriteIds[3], 8 | 0x80, 120, (y + 1) * 16);
+}
diff --git a/src/item.c b/src/item.c
index 29c250989..3866d7316 100644
--- a/src/item.c
+++ b/src/item.c
@@ -10,6 +10,7 @@
#include "item_menu.h"
#include "strings.h"
#include "load_save.h"
+#include "battle_pyramid_bag.h"
extern bool8 InBattlePyramid(void);
extern u16 gUnknown_0203CF30[];
@@ -965,7 +966,7 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count)
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
- i = gUnknown_0203CF30[3] + gUnknown_0203CF30[4];
+ i = gPyramidBagCursorData.cursorPosition + gPyramidBagCursorData.scrollPosition;
if (items[i] == itemId && quantities[i] >= count)
{
quantities[i] -= count;
diff --git a/src/item_use.c b/src/item_use.c
index 23c829391..bf7c2a386 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -33,8 +33,8 @@
#include "pokeblock.h"
#include "menu.h"
#include "item_menu.h"
+#include "battle_pyramid_bag.h"
-extern void(**gUnknown_0203CF2C)(void);
extern void(*gUnknown_0203A0F4)(u8 taskId);
extern void(*gUnknown_085920D8[])(void);
extern void (*gUnknown_03006328)(u8, u16, TaskFunc);
@@ -122,7 +122,7 @@ void SetUpItemUseCallback(u8 taskId)
}
else
{
- *gUnknown_0203CF2C = gUnknown_085920D8[type];
+ gPyramidBagResources->callback2 = gUnknown_085920D8[type];
sub_81C5B14(taskId);
}
}
@@ -987,7 +987,7 @@ void sub_80FE54C(u8 taskId)
}
else
{
- *gUnknown_0203CF2C = sub_81B89F0;
+ gPyramidBagResources->callback2 = sub_81B89F0;
sub_81C5B14(taskId);
}
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 60271317a..4a58c146e 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -33,6 +33,7 @@
#include "international_string_util.h"
#include "constants/songs.h"
#include "field_player_avatar.h"
+#include "battle_pyramid_bag.h"
// Menu actions
enum
@@ -73,12 +74,11 @@ EWRAM_DATA static u8 sSaveDialogTimer = 0;
EWRAM_DATA static bool8 sSavingComplete = FALSE;
EWRAM_DATA static u8 sSaveInfoWindowId = 0;
-// Extern variables
+// Extern variables.
extern u8 gDifferentSaveFile;
-extern u16 gSaveFileStatus;
extern u8 gUnknown_03005DB4;
-// Extern functions in uncompiled files
+// Extern functions in not decompiled files.
extern void sub_80AF688(void);
extern void var_800D_set_xB(void);
extern void sub_808B864(void);
@@ -89,7 +89,6 @@ extern void CB2_PokeNav(void);
extern void sub_80C4DDC(void (*)(void));
extern void sub_80C51C4(void (*)(void));
extern void sub_80C4E74(u8, void (*)(void));
-extern void sub_81C4EFC(void);
extern void ScriptUnfreezeEventObjects(void);
extern void sub_81A9EC8(void);
extern void save_serialize_map(void);
@@ -781,7 +780,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void)
play_some_sound();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
- SetMainCallback2(sub_81C4EFC); // Display battle pyramid bag
+ SetMainCallback2(CB2_PyramidBagMenuFromStartMenu);
return TRUE;
}