summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokemon_storage_system.s606
-rw-r--r--data/pokemon_storage_system.s44
-rw-r--r--include/pokemon_storage_system_internal.h42
-rw-r--r--src/pokemon_storage_system_3.c40
-rw-r--r--src/pokemon_storage_system_5.c319
5 files changed, 369 insertions, 682 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 01eed1eb7..a68cd3f6a 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,612 +5,6 @@
.text
- thumb_func_start AddBoxMenu
-AddBoxMenu: @ 8094900
- push {lr}
- bl InitMenu
- movs r0, 0x9
- bl SetMenuText
- movs r0, 0xA
- bl SetMenuText
- movs r0, 0xB
- bl SetMenuText
- movs r0, 0
- bl SetMenuText
- pop {r0}
- bx r0
- thumb_func_end AddBoxMenu
-
- thumb_func_start sub_8094924
-sub_8094924: @ 8094924
- push {lr}
- bl InitMenu
- ldr r0, _0809493C @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _08094940
- bl sub_8094A0C
- b _08094944
- .align 2, 0
-_0809493C: .4byte sPSSData
-_08094940:
- bl sub_809494C
-_08094944:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8094924
-
- thumb_func_start sub_809494C
-sub_809494C: @ 809494C
- push {lr}
- bl sub_8092458
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _0809496C @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x1
- beq _08094976
- cmp r0, 0x1
- bgt _08094970
- cmp r0, 0
- beq _08094982
- b _080949BC
- .align 2, 0
-_0809496C: .4byte sPSSData
-_08094970:
- cmp r0, 0x2
- beq _0809498E
- b _080949BC
-_08094976:
- cmp r1, 0
- beq _080949BC
- movs r0, 0x1
- bl SetMenuText
- b _080949C0
-_08094982:
- cmp r1, 0
- beq _080949BC
- movs r0, 0x2
- bl SetMenuText
- b _080949C0
-_0809498E:
- ldr r0, _080949A4 @ =sIsMonBeingMoved
- ldrb r0, [r0]
- cmp r0, 0
- beq _080949B0
- cmp r1, 0
- beq _080949A8
- movs r0, 0x4
- bl SetMenuText
- b _080949C0
- .align 2, 0
-_080949A4: .4byte sIsMonBeingMoved
-_080949A8:
- movs r0, 0x5
- bl SetMenuText
- b _080949C0
-_080949B0:
- cmp r1, 0
- beq _080949BC
- movs r0, 0x3
- bl SetMenuText
- b _080949C0
-_080949BC:
- movs r0, 0
- b _08094A06
-_080949C0:
- movs r0, 0x6
- bl SetMenuText
- ldr r0, _080949E4 @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x2
- bne _080949F2
- ldr r0, _080949E8 @ =sBoxCursorArea
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _080949EC
- movs r0, 0x2
- bl SetMenuText
- b _080949F2
- .align 2, 0
-_080949E4: .4byte sPSSData
-_080949E8: .4byte sBoxCursorArea
-_080949EC:
- movs r0, 0x1
- bl SetMenuText
-_080949F2:
- movs r0, 0x8
- bl SetMenuText
- movs r0, 0x7
- bl SetMenuText
- movs r0, 0
- bl SetMenuText
- movs r0, 0x1
-_08094A06:
- pop {r1}
- bx r1
- thumb_func_end sub_809494C
-
- thumb_func_start sub_8094A0C
-sub_8094A0C: @ 8094A0C
- push {r4,r5,lr}
- ldr r4, _08094A48 @ =sPSSData
- ldr r0, [r4]
- movs r5, 0xCE
- lsls r5, 4
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _08094A9E
- bl IsActiveItemMoving
- lsls r0, 24
- cmp r0, 0
- bne _08094A70
- ldr r2, [r4]
- ldr r0, _08094A4C @ =0x00000ce2
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _08094A50
- adds r0, r2, r5
- ldrh r0, [r0]
- cmp r0, 0
- beq _08094A9E
- movs r0, 0xE
- bl SetMenuText
- b _08094AA8
- .align 2, 0
-_08094A48: .4byte sPSSData
-_08094A4C: .4byte 0x00000ce2
-_08094A50:
- ldrh r0, [r1]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- bne _08094A68
- movs r0, 0xC
- bl SetMenuText
- movs r0, 0x10
- bl SetMenuText
-_08094A68:
- movs r0, 0x11
- bl SetMenuText
- b _08094AA8
-_08094A70:
- ldr r2, [r4]
- ldr r0, _08094A8C @ =0x00000ce2
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _08094A90
- adds r0, r2, r5
- ldrh r0, [r0]
- cmp r0, 0
- beq _08094A9E
- movs r0, 0xD
- bl SetMenuText
- b _08094AA8
- .align 2, 0
-_08094A8C: .4byte 0x00000ce2
-_08094A90:
- ldrh r0, [r1]
- bl ItemIsMail
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08094AA2
-_08094A9E:
- movs r0, 0
- b _08094AB0
-_08094AA2:
- movs r0, 0xF
- bl SetMenuText
-_08094AA8:
- movs r0, 0
- bl SetMenuText
- movs r0, 0x1
-_08094AB0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8094A0C
-
- thumb_func_start sub_8094AB8
-sub_8094AB8: @ 8094AB8
- ldr r1, _08094AD4 @ =sPSSData
- ldr r1, [r1]
- movs r2, 0xCB
- lsls r2, 4
- adds r1, r2
- ldr r2, [r1]
- ldrh r2, [r2, 0x20]
- strh r2, [r0, 0x20]
- ldr r1, [r1]
- ldrh r1, [r1, 0x22]
- adds r1, 0x14
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_08094AD4: .4byte sPSSData
- thumb_func_end sub_8094AB8
-
- thumb_func_start sub_8094AD8
-sub_8094AD8: @ 8094AD8
- push {r4-r6,lr}
- sub sp, 0x2C
- mov r1, sp
- ldr r0, _08094BA4 @ =gUnknown_83D34A0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- add r4, sp, 0x18
- adds r1, r4, 0
- ldr r0, _08094BA8 @ =gUnknown_83D34B8
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldr r0, [r0]
- str r0, [r1]
- mov r0, sp
- bl LoadSpriteSheets
- adds r0, r4, 0
- bl LoadSpritePalettes
- ldr r0, _08094BAC @ =0x0000daca
- bl IndexOfSpritePaletteTag
- ldr r6, _08094BB0 @ =sPSSData
- ldr r1, [r6]
- ldr r4, _08094BB4 @ =0x00000cd4
- adds r1, r4
- strb r0, [r1]
- ldr r0, _08094BB8 @ =0x0000dac7
- bl IndexOfSpritePaletteTag
- ldr r1, [r6]
- ldr r5, _08094BBC @ =0x00000cd5
- adds r1, r5
- strb r0, [r1]
- ldr r0, _08094BC0 @ =sBoxCursorArea
- ldrb r0, [r0]
- ldr r1, _08094BC4 @ =sBoxCursorPosition
- ldrb r1, [r1]
- add r4, sp, 0x28
- mov r5, sp
- adds r5, 0x2A
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_8092398
- ldr r0, _08094BC8 @ =gUnknown_83D350C
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0
- ldrsh r2, [r5, r3]
- movs r3, 0x6
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08094BD8
- ldr r2, [r6]
- movs r4, 0xCB
- lsls r4, 4
- adds r3, r2, r4
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08094BCC @ =gSprites
- adds r1, r0
- str r1, [r3]
- ldr r0, _08094BD0 @ =sCanOnlyMove
- ldr r5, _08094BB4 @ =0x00000cd4
- adds r2, r5
- ldrb r0, [r0]
- adds r2, r0
- ldrb r2, [r2]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [r6]
- adds r0, r4
- ldr r2, [r0]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, _08094BD4 @ =sIsMonBeingMoved
- ldrb r0, [r0]
- cmp r0, 0
- beq _08094BE4
- ldr r0, [r6]
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0x3
- bl StartSpriteAnim
- b _08094BE4
- .align 2, 0
-_08094BA4: .4byte gUnknown_83D34A0
-_08094BA8: .4byte gUnknown_83D34B8
-_08094BAC: .4byte 0x0000daca
-_08094BB0: .4byte sPSSData
-_08094BB4: .4byte 0x00000cd4
-_08094BB8: .4byte 0x0000dac7
-_08094BBC: .4byte 0x00000cd5
-_08094BC0: .4byte sBoxCursorArea
-_08094BC4: .4byte sBoxCursorPosition
-_08094BC8: .4byte gUnknown_83D350C
-_08094BCC: .4byte gSprites
-_08094BD0: .4byte sCanOnlyMove
-_08094BD4: .4byte sIsMonBeingMoved
-_08094BD8:
- ldr r0, [r6]
- movs r1, 0xCB
- lsls r1, 4
- adds r0, r1
- movs r1, 0
- str r1, [r0]
-_08094BE4:
- ldr r0, _08094BF8 @ =sBoxCursorArea
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _08094BFC
- movs r3, 0xD
- movs r4, 0x1
- b _08094C00
- .align 2, 0
-_08094BF8: .4byte sBoxCursorArea
-_08094BFC:
- movs r3, 0x15
- movs r4, 0x2
-_08094C00:
- ldr r0, _08094C54 @ =gUnknown_83D3524
- movs r1, 0
- movs r2, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08094C68
- ldr r5, _08094C58 @ =sPSSData
- ldr r2, [r5]
- ldr r3, _08094C5C @ =0x00000cb4
- adds r2, r3
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08094C60 @ =gSprites
- adds r1, r0
- str r1, [r2]
- lsls r3, r4, 2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldr r0, _08094C64 @ =sBoxCursorArea
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _08094C74
- ldr r0, [r5]
- ldr r4, _08094C5C @ =0x00000cb4
- adds r0, r4
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- b _08094C74
- .align 2, 0
-_08094C54: .4byte gUnknown_83D3524
-_08094C58: .4byte sPSSData
-_08094C5C: .4byte 0x00000cb4
-_08094C60: .4byte gSprites
-_08094C64: .4byte sBoxCursorArea
-_08094C68:
- ldr r0, _08094C7C @ =sPSSData
- ldr r0, [r0]
- ldr r5, _08094C80 @ =0x00000cb4
- adds r0, r5
- movs r1, 0
- str r1, [r0]
-_08094C74:
- add sp, 0x2C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08094C7C: .4byte sPSSData
-_08094C80: .4byte 0x00000cb4
- thumb_func_end sub_8094AD8
-
- thumb_func_start sub_8094C84
-sub_8094C84: @ 8094C84
- push {lr}
- ldr r2, _08094CBC @ =sCanOnlyMove
- movs r1, 0
- ldrb r0, [r2]
- cmp r0, 0
- bne _08094C92
- movs r1, 0x1
-_08094C92:
- strb r1, [r2]
- ldr r0, _08094CC0 @ =sPSSData
- ldr r0, [r0]
- movs r3, 0xCB
- lsls r3, 4
- adds r1, r0, r3
- ldr r3, [r1]
- ldr r1, _08094CC4 @ =0x00000cd4
- adds r0, r1
- ldrb r2, [r2]
- adds r0, r2
- ldrb r1, [r0]
- lsls r1, 4
- ldrb r2, [r3, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- pop {r0}
- bx r0
- .align 2, 0
-_08094CBC: .4byte sCanOnlyMove
-_08094CC0: .4byte sPSSData
-_08094CC4: .4byte 0x00000cd4
- thumb_func_end sub_8094C84
-
- thumb_func_start GetBoxCursorPosition
-GetBoxCursorPosition: @ 8094CC8
- ldr r0, _08094CD0 @ =sBoxCursorPosition
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08094CD0: .4byte sBoxCursorPosition
- thumb_func_end GetBoxCursorPosition
-
- thumb_func_start sub_8094CD4
-sub_8094CD4: @ 8094CD4
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r0, _08094D00 @ =sBoxCursorArea
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _08094D08
- ldr r4, _08094D04 @ =sBoxCursorPosition
- movs r0, 0
- ldrsb r0, [r4, r0]
- movs r1, 0x6
- bl __modsi3
- strb r0, [r5]
- movs r0, 0
- ldrsb r0, [r4, r0]
- movs r1, 0x6
- bl __divsi3
- b _08094D0C
- .align 2, 0
-_08094D00: .4byte sBoxCursorArea
-_08094D04: .4byte sBoxCursorPosition
-_08094D08:
- movs r0, 0
- strb r0, [r5]
-_08094D0C:
- strb r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8094CD4
-
- thumb_func_start sub_8094D14
-sub_8094D14: @ 8094D14
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08094D30 @ =sPSSData
- ldr r0, [r0]
- movs r2, 0xCB
- lsls r2, 4
- adds r0, r2
- ldr r0, [r0]
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .align 2, 0
-_08094D30: .4byte sPSSData
- thumb_func_end sub_8094D14
-
- thumb_func_start sub_8094D34
-sub_8094D34: @ 8094D34
- ldr r0, _08094D3C @ =sMovingMonOrigBoxId
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08094D3C: .4byte sMovingMonOrigBoxId
- thumb_func_end sub_8094D34
-
- thumb_func_start sub_8094D40
-sub_8094D40: @ 8094D40
- ldr r0, _08094D5C @ =sPSSData
- ldr r0, [r0]
- movs r1, 0xCB
- lsls r1, 4
- adds r0, r1
- ldr r2, [r0]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x5]
- bx lr
- .align 2, 0
-_08094D5C: .4byte sPSSData
- thumb_func_end sub_8094D40
-
- thumb_func_start sub_8094D60
-sub_8094D60: @ 8094D60
- push {lr}
- ldr r0, _08094D7C @ =sBoxCursorArea
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _08094D78
- ldr r0, _08094D80 @ =sBoxCursorPosition
- ldrb r1, [r0]
- movs r0, 0
- bl sub_8095D44
-_08094D78:
- pop {r0}
- bx r0
- .align 2, 0
-_08094D7C: .4byte sBoxCursorArea
-_08094D80: .4byte sBoxCursorPosition
- thumb_func_end sub_8094D60
-
- thumb_func_start sub_8094D84
-sub_8094D84: @ 8094D84
- push {lr}
- ldr r0, _08094DA0 @ =sBoxCursorArea
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _08094D9C
- ldr r0, _08094DA4 @ =sBoxCursorPosition
- ldrb r1, [r0]
- movs r0, 0
- bl sub_8095C84
-_08094D9C:
- pop {r0}
- bx r0
- .align 2, 0
-_08094DA0: .4byte sBoxCursorArea
-_08094DA4: .4byte sBoxCursorPosition
- thumb_func_end sub_8094D84
-
@ file boundary?
thumb_func_start InitMenu
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index fc4129263..5ea2f7219 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -6,50 +6,6 @@
.section .rodata
.align 2
-gUnknown_83D34A0:: @ 83D34A0
- obj_tiles gUnknown_83D2BEC, 0x0800, 0
- obj_tiles gUnknown_83D33EC, 0x0080, 1
- null_obj_tiles
-
-gUnknown_83D34B8:: @ 83D34B8
- obj_pal gUnknown_83D2BCC, 56007
- null_obj_pal
-
-gUnknown_83D34C8::
- .4byte 0x80000000, 0x00000400
-
-gUnknown_83D34D0::
- .4byte 0x40000000, 0x00000400
-
-gUnknown_83D34D8::
- obj_image_anim_frame 0x0000, 30
- obj_image_anim_frame 0x0010, 30
- obj_image_anim_jump 0
-
-gUnknown_83D34E4::
- obj_image_anim_frame 0x0000, 5
- obj_image_anim_end
-
-gUnknown_83D34EC::
- obj_image_anim_frame 0x0020, 5
- obj_image_anim_end
-
-gUnknown_83D34F4::
- obj_image_anim_frame 0x0030, 5
- obj_image_anim_end
-
-gUnknown_83D34FC::
- .4byte gUnknown_83D34D8
- .4byte gUnknown_83D34E4
- .4byte gUnknown_83D34EC
- .4byte gUnknown_83D34F4
-
-gUnknown_83D350C:: @ 83D350C
- spr_template 0, 56010, gUnknown_83D34C8, gUnknown_83D34FC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83D3524:: @ 83D3524
- spr_template 1, 56010, gUnknown_83D34D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8094AB8
-
gUnknown_83D353C:: @ 83D353C
.4byte gUnknown_8418468
.4byte gUnknown_841846F
diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h
index b518e49f4..0b67fade3 100644
--- a/include/pokemon_storage_system_internal.h
+++ b/include/pokemon_storage_system_internal.h
@@ -74,6 +74,48 @@ enum
enum
{
+ PC_TEXT_CANCEL,
+ PC_TEXT_STORE,
+ PC_TEXT_WITHDRAW,
+ PC_TEXT_MOVE,
+ PC_TEXT_SHIFT,
+ PC_TEXT_PLACE,
+ PC_TEXT_SUMMARY,
+ PC_TEXT_RELEASE,
+ PC_TEXT_MARK,
+ PC_TEXT_JUMP,
+ PC_TEXT_WALLPAPER,
+ PC_TEXT_NAME,
+ PC_TEXT_TAKE,
+ PC_TEXT_GIVE,
+ PC_TEXT_GIVE2,
+ PC_TEXT_SWITCH,
+ PC_TEXT_BAG,
+ PC_TEXT_INFO,
+ PC_TEXT_SCENERY1,
+ PC_TEXT_SCENERY2,
+ PC_TEXT_SCENERY3,
+ PC_TEXT_ETCETERA,
+ PC_TEXT_FOREST,
+ PC_TEXT_CITY,
+ PC_TEXT_DESERT,
+ PC_TEXT_SAVANNA,
+ PC_TEXT_CRAG,
+ PC_TEXT_VOLCANO,
+ PC_TEXT_SNOW,
+ PC_TEXT_CAVE,
+ PC_TEXT_BEACH,
+ PC_TEXT_SEAFLOOR,
+ PC_TEXT_RIVER,
+ PC_TEXT_SKY,
+ PC_TEXT_POLKADOT,
+ PC_TEXT_POKECENTER,
+ PC_TEXT_MACHINE,
+ PC_TEXT_SIMPLE,
+};
+
+enum
+{
CURSOR_AREA_IN_BOX,
CURSOR_AREA_IN_PARTY,
CURSOR_AREA_BOX,
diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c
index 1015c86c3..1f9e6caf3 100644
--- a/src/pokemon_storage_system_3.c
+++ b/src/pokemon_storage_system_3.c
@@ -2616,10 +2616,10 @@ void ClearBottomWindow(void)
void AddWallpaperSetsMenu(void)
{
InitMenu();
- SetMenuText(18);
- SetMenuText(19);
- SetMenuText(20);
- SetMenuText(21);
+ SetMenuText(PC_TEXT_SCENERY1);
+ SetMenuText(PC_TEXT_SCENERY2);
+ SetMenuText(PC_TEXT_SCENERY3);
+ SetMenuText(PC_TEXT_ETCETERA);
AddMenu();
}
@@ -2629,28 +2629,28 @@ void AddWallpapersMenu(u8 wallpaperSet)
switch (wallpaperSet)
{
case 0:
- SetMenuText(22);
- SetMenuText(23);
- SetMenuText(24);
- SetMenuText(25);
+ SetMenuText(PC_TEXT_FOREST);
+ SetMenuText(PC_TEXT_CITY);
+ SetMenuText(PC_TEXT_DESERT);
+ SetMenuText(PC_TEXT_SAVANNA);
break;
case 1:
- SetMenuText(26);
- SetMenuText(27);
- SetMenuText(28);
- SetMenuText(29);
+ SetMenuText(PC_TEXT_CRAG);
+ SetMenuText(PC_TEXT_VOLCANO);
+ SetMenuText(PC_TEXT_SNOW);
+ SetMenuText(PC_TEXT_CAVE);
break;
case 2:
- SetMenuText(30);
- SetMenuText(31);
- SetMenuText(32);
- SetMenuText(33);
+ SetMenuText(PC_TEXT_BEACH);
+ SetMenuText(PC_TEXT_SEAFLOOR);
+ SetMenuText(PC_TEXT_RIVER);
+ SetMenuText(PC_TEXT_SKY);
break;
case 3:
- SetMenuText(34);
- SetMenuText(35);
- SetMenuText(36);
- SetMenuText(37);
+ SetMenuText(PC_TEXT_POLKADOT);
+ SetMenuText(PC_TEXT_POKECENTER);
+ SetMenuText(PC_TEXT_MACHINE);
+ SetMenuText(PC_TEXT_SIMPLE);
break;
}
AddMenu();
diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c
index 5530bb81c..3c82895e0 100644
--- a/src/pokemon_storage_system_5.c
+++ b/src/pokemon_storage_system_5.c
@@ -2,10 +2,11 @@
#include "gflib.h"
#include "data.h"
#include "item.h"
+#include "mail_data.h"
#include "pokemon_storage_system_internal.h"
#include "pokemon_summary_screen.h"
#include "strings.h"
-#include "constants/species.h"
+#include "constants/items.h"
#include "constants/moves.h"
EWRAM_DATA struct Pokemon gUnknown_20397BC = {};
@@ -39,12 +40,14 @@ u8 InBoxInput_GrabbingMultiple(void);
u8 InBoxInput_MovingMultiple(void);
void AddBoxMenu(void);
bool8 sub_8094924(void);
+bool8 sub_809494C(void);
+bool8 sub_8094A0C(void);
void sub_8094AD8(void);
void sub_8094C84(void);
-const u16 gUnknown_83D2BCC[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal");
-const u16 gUnknown_83D2BEC[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp");
-const u16 gUnknown_83D33EC[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp");
+const u16 gHandCursorPalette[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal");
+const u16 gHandCursorTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp");
+const u16 gHandCursorShadowTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp");
void sub_80922C0(void)
{
@@ -1720,14 +1723,13 @@ u8 HandleInput(void)
u8 (*func)(void);
s8 area;
}
- static const inputFuncs[] =
- {
- {HandleInput_InBox, CURSOR_AREA_IN_BOX},
- {HandleInput_InParty, CURSOR_AREA_IN_PARTY},
- {HandleInput_OnBox, CURSOR_AREA_BOX},
- {HandleInput_OnButtons, CURSOR_AREA_BUTTONS},
- {NULL, 0},
- };
+ static const inputFuncs[] = {
+ {HandleInput_InBox, CURSOR_AREA_IN_BOX},
+ {HandleInput_InParty, CURSOR_AREA_IN_PARTY},
+ {HandleInput_OnBox, CURSOR_AREA_BOX},
+ {HandleInput_OnButtons, CURSOR_AREA_BUTTONS},
+ {NULL, 0},
+ };
u16 i = 0;
while (inputFuncs[i].func != NULL)
@@ -1739,3 +1741,296 @@ u8 HandleInput(void)
return 0;
}
+
+void AddBoxMenu(void)
+{
+ InitMenu();
+ SetMenuText(PC_TEXT_JUMP);
+ SetMenuText(PC_TEXT_WALLPAPER);
+ SetMenuText(PC_TEXT_NAME);
+ SetMenuText(PC_TEXT_CANCEL);
+}
+
+bool8 sub_8094924(void)
+{
+ InitMenu();
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ return sub_809494C();
+ else
+ return sub_8094A0C();
+}
+
+bool8 sub_809494C(void)
+{
+ u16 var0 = sub_8092458();
+
+ switch (sPSSData->boxOption)
+ {
+ case BOX_OPTION_DEPOSIT:
+ if (var0)
+ SetMenuText(PC_TEXT_STORE);
+ else
+ return FALSE;
+ break;
+ case BOX_OPTION_WITHDRAW:
+ if (var0)
+ SetMenuText(PC_TEXT_WITHDRAW);
+ else
+ return FALSE;
+ break;
+ case BOX_OPTION_MOVE_MONS:
+ if (sIsMonBeingMoved)
+ {
+ if (var0)
+ SetMenuText(PC_TEXT_SHIFT);
+ else
+ SetMenuText(PC_TEXT_PLACE);
+ }
+ else
+ {
+ if (var0)
+ SetMenuText(PC_TEXT_MOVE);
+ else
+ return FALSE;
+ }
+ break;
+ case BOX_OPTION_MOVE_ITEMS:
+ default:
+ return FALSE;
+ }
+
+ SetMenuText(PC_TEXT_SUMMARY);
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_MONS)
+ {
+ if (!sBoxCursorArea)
+ SetMenuText(PC_TEXT_WITHDRAW);
+ else
+ SetMenuText(PC_TEXT_STORE);
+ }
+
+ SetMenuText(PC_TEXT_MARK);
+ SetMenuText(PC_TEXT_RELEASE);
+ SetMenuText(PC_TEXT_CANCEL);
+ return TRUE;
+}
+
+bool8 sub_8094A0C(void)
+{
+ if (sPSSData->cursorMonSpecies == SPECIES_EGG)
+ return FALSE;
+
+ if (!IsActiveItemMoving())
+ {
+ if (sPSSData->cursorMonItem == ITEM_NONE)
+ {
+ if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ return FALSE;
+
+ SetMenuText(PC_TEXT_GIVE2);
+ }
+ else
+ {
+ if (!ItemIsMail(sPSSData->cursorMonItem))
+ {
+ SetMenuText(PC_TEXT_TAKE);
+ SetMenuText(PC_TEXT_BAG);
+ }
+ SetMenuText(PC_TEXT_INFO);
+ }
+ }
+ else
+ {
+ if (sPSSData->cursorMonItem == ITEM_NONE)
+ {
+ if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ return FALSE;
+
+ SetMenuText(PC_TEXT_GIVE);
+ }
+ else
+ {
+ if (ItemIsMail(sPSSData->cursorMonItem) == TRUE)
+ return FALSE;
+
+ SetMenuText(PC_TEXT_SWITCH);
+ }
+ }
+
+ SetMenuText(PC_TEXT_CANCEL);
+ return TRUE;
+}
+
+void sub_8094AB8(struct Sprite *sprite)
+{
+ sprite->pos1.x = sPSSData->field_CB4->pos1.x;
+ sprite->pos1.y = sPSSData->field_CB4->pos1.y + 20;
+}
+
+void sub_8094AD8(void)
+{
+ u16 x, y;
+ u8 spriteId;
+ u8 priority, subpriority;
+ struct SpriteSheet spriteSheets[] = {
+ {gHandCursorTiles, 0x800, TAG_TILE_0},
+ {gHandCursorShadowTiles, 0x80, TAG_TILE_1},
+ {}
+ };
+
+ struct SpritePalette spritePalettes[] = {
+ {gHandCursorPalette, TAG_PAL_DAC7},
+ {}
+ };
+
+ static const struct OamData sOamData_857BA0C = {
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .priority = 1,
+ };
+ static const struct OamData sOamData_857BA14 = {
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .priority = 1,
+ };
+
+ static const union AnimCmd sSpriteAnim_857BA1C[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_JUMP(0)
+ };
+ static const union AnimCmd sSpriteAnim_857BA28[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+ };
+ static const union AnimCmd sSpriteAnim_857BA30[] = {
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END
+ };
+ static const union AnimCmd sSpriteAnim_857BA38[] = {
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END
+ };
+
+ static const union AnimCmd *const sSpriteAnimTable_857BA40[] = {
+ sSpriteAnim_857BA1C,
+ sSpriteAnim_857BA28,
+ sSpriteAnim_857BA30,
+ sSpriteAnim_857BA38
+ };
+
+ static const struct SpriteTemplate gSpriteTemplate_857BA50 = {
+ .tileTag = TAG_TILE_0,
+ .paletteTag = TAG_PAL_WAVEFORM,
+ .oam = &sOamData_857BA0C,
+ .anims = sSpriteAnimTable_857BA40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ static const struct SpriteTemplate gSpriteTemplate_857BA68 = {
+ .tileTag = TAG_TILE_1,
+ .paletteTag = TAG_PAL_WAVEFORM,
+ .oam = &sOamData_857BA14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8094AB8,
+ };
+
+ LoadSpriteSheets(spriteSheets);
+ LoadSpritePalettes(spritePalettes);
+ sPSSData->field_CD8[0] = IndexOfSpritePaletteTag(TAG_PAL_WAVEFORM);
+ sPSSData->field_CD8[1] = IndexOfSpritePaletteTag(TAG_PAL_DAC7);
+
+ sub_8092398(sBoxCursorArea, sBoxCursorPosition, &x, &y);
+ spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6);
+ if (spriteId != MAX_SPRITES)
+ {
+ sPSSData->field_CB4 = &gSprites[spriteId];
+ sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove];
+ sPSSData->field_CB4->oam.priority = 1;
+ if (sIsMonBeingMoved)
+ StartSpriteAnim(sPSSData->field_CB4, 3);
+ }
+ else
+ {
+ sPSSData->field_CB4 = NULL;
+ }
+
+ if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
+ {
+ subpriority = 13;
+ priority = 1;
+ }
+ else
+ {
+ subpriority = 21;
+ priority = 2;
+ }
+
+ spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sPSSData->field_CB8 = &gSprites[spriteId];
+ sPSSData->field_CB8->oam.priority = priority;
+ if (sBoxCursorArea)
+ sPSSData->field_CB8->invisible = 1;
+ }
+ else
+ {
+ sPSSData->field_CB8 = NULL;
+ }
+}
+
+void sub_8094C84(void)
+{
+ sCanOnlyMove = !sCanOnlyMove;
+ sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove];
+}
+
+u8 GetBoxCursorPosition(void)
+{
+ return sBoxCursorPosition;
+}
+
+void sub_8094CD4(u8 *arg0, u8 *arg1)
+{
+ if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
+ {
+ *arg0 = sBoxCursorPosition % IN_BOX_ROWS;
+ *arg1 = sBoxCursorPosition / IN_BOX_ROWS;
+ }
+ else
+ {
+ *arg0 = 0;
+ *arg1 = 0;
+ }
+}
+
+void sub_8094D14(u8 animNum)
+{
+ StartSpriteAnim(sPSSData->field_CB4, animNum);
+}
+
+u8 sub_8094D34(void)
+{
+ return sMovingMonOrigBoxId;
+}
+
+void sub_8094D40(void)
+{
+ sPSSData->field_CB4->oam.priority = 1;
+}
+
+void sub_8094D60(void)
+{
+ if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
+ sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition);
+}
+
+void sub_8094D84(void)
+{
+ if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
+ sub_8095C84(CURSOR_AREA_IN_BOX, sBoxCursorPosition);
+}