summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokemon_storage_system.s589
-rw-r--r--data/pokemon_storage_system.s57
-rw-r--r--include/graphics.h4
-rw-r--r--include/pokemon_storage_system.h12
-rw-r--r--ld_script.txt4
-rw-r--r--src/pokemon/pokemon_storage_system_2.c282
6 files changed, 270 insertions, 678 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index a96857b35..bf3d49532 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,595 +5,6 @@
.text
- thumb_func_start sub_8098400
-sub_8098400: @ 8098400
- push {r4,r5,lr}
- sub sp, 0x14
- ldr r1, _0809847C @ =REG_BG1CNT
- ldr r2, _08098480 @ =0x00000f01
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08098484 @ =gPSSMenuMisc_Gfx
- ldr r1, _08098488 @ =0x06006800
- bl LZ77UnCompVram
- ldr r0, _0809848C @ =gPSSMenuMisc_Tilemap
- ldr r5, _08098490 @ =gSharedMem + 0xA8
- adds r1, r5, 0
- bl LZ77UnCompWram
- ldr r0, _08098494 @ =gPSSMenu3_Pal
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08098498 @ =gPSSMenu4_Pal
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _0809849C @ =0x06007800
- add r1, sp, 0x10
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080984A0 @ =0x040000d4
- str r1, [r0]
- str r4, [r0, 0x4]
- ldr r1, _080984A4 @ =0x81000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- bl sub_8098780
- ldr r0, _080984A8 @ =gUnknown_0203847C
- ldrb r0, [r0]
- cmp r0, 0
- beq _080984AC
- movs r0, 0x1
- bl sub_8098690
- movs r0, 0x1
- bl sub_8099200
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0xC
- str r0, [sp, 0x8]
- movs r0, 0x16
- str r0, [sp, 0xC]
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0
- adds r3, r5, 0
- bl sub_809D034
- b _080984CC
- .align 2, 0
-_0809847C: .4byte REG_BG1CNT
-_08098480: .4byte 0x00000f01
-_08098484: .4byte gPSSMenuMisc_Gfx
-_08098488: .4byte 0x06006800
-_0809848C: .4byte gPSSMenuMisc_Tilemap
-_08098490: .4byte gSharedMem + 0xA8
-_08098494: .4byte gPSSMenu3_Pal
-_08098498: .4byte gPSSMenu4_Pal
-_0809849C: .4byte 0x06007800
-_080984A0: .4byte 0x040000d4
-_080984A4: .4byte 0x81000400
-_080984A8: .4byte gUnknown_0203847C
-_080984AC:
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0xC
- str r0, [sp, 0x8]
- movs r0, 0x2
- str r0, [sp, 0xC]
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0
- adds r3, r5, 0
- bl sub_809D034
- movs r0, 0x1
- bl sub_8098690
-_080984CC:
- ldr r0, _080984E0 @ =gSharedMem
- ldr r1, _080984E4 @ =0x000008af
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080984E0: .4byte gSharedMem
-_080984E4: .4byte 0x000008af
- thumb_func_end sub_8098400
-
- thumb_func_start sub_80984E8
-sub_80984E8: @ 80984E8
- push {lr}
- ldr r1, _08098510 @ =gSharedMem
- ldr r0, _08098514 @ =0x000008a8
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0x14
- strh r0, [r2]
- ldr r0, _08098518 @ =0x000008aa
- adds r2, r1, r0
- movs r0, 0x2
- strh r0, [r2]
- ldr r0, _0809851C @ =0x000008ad
- adds r1, r0
- strb r3, [r1]
- movs r0, 0
- bl sub_8099200
- pop {r0}
- bx r0
- .align 2, 0
-_08098510: .4byte gSharedMem
-_08098514: .4byte 0x000008a8
-_08098518: .4byte 0x000008aa
-_0809851C: .4byte 0x000008ad
- thumb_func_end sub_80984E8
-
- thumb_func_start sub_8098520
-sub_8098520: @ 8098520
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r3, _08098578 @ =gSharedMem
- ldr r0, _0809857C @ =0x000008ad
- adds r5, r3, r0
- ldrb r0, [r5]
- cmp r0, 0x14
- beq _08098592
- ldr r0, _08098580 @ =0x000008a8
- adds r1, r3, r0
- ldrh r0, [r1]
- subs r0, 0x1
- movs r4, 0
- strh r0, [r1]
- ldr r0, _08098584 @ =0x000008aa
- adds r2, r3, r0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ldr r0, _08098588 @ =0x06007800
- adds r3, 0xA8
- str r4, [sp]
- ldrh r1, [r1]
- str r1, [sp, 0x4]
- movs r1, 0xC
- str r1, [sp, 0x8]
- ldrh r1, [r2]
- str r1, [sp, 0xC]
- movs r1, 0xA
- movs r2, 0
- bl sub_809D034
- movs r0, 0x8
- bl sub_80994A8
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x14
- beq _0809858C
- movs r0, 0x1
- b _08098594
- .align 2, 0
-_08098578: .4byte gSharedMem
-_0809857C: .4byte 0x000008ad
-_08098580: .4byte 0x000008a8
-_08098584: .4byte 0x000008aa
-_08098588: .4byte 0x06007800
-_0809858C:
- ldr r1, _0809859C @ =gUnknown_0203847C
- movs r0, 0x1
- strb r0, [r1]
-_08098592:
- movs r0, 0
-_08098594:
- add sp, 0x10
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0809859C: .4byte gUnknown_0203847C
- thumb_func_end sub_8098520
-
- thumb_func_start add_to_c3_somehow
-add_to_c3_somehow: @ 80985A0
- ldr r1, _080985BC @ =gSharedMem
- ldr r0, _080985C0 @ =0x000008a8
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0
- strh r0, [r2]
- ldr r0, _080985C4 @ =0x000008aa
- adds r2, r1, r0
- movs r0, 0x16
- strh r0, [r2]
- ldr r0, _080985C8 @ =0x000008ad
- adds r1, r0
- strb r3, [r1]
- bx lr
- .align 2, 0
-_080985BC: .4byte gSharedMem
-_080985C0: .4byte 0x000008a8
-_080985C4: .4byte 0x000008aa
-_080985C8: .4byte 0x000008ad
- thumb_func_end add_to_c3_somehow
-
- thumb_func_start sub_80985CC
-sub_80985CC: @ 80985CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- ldr r3, _08098640 @ =gSharedMem
- ldr r0, _08098644 @ =0x000008ad
- adds r6, r3, r0
- ldrb r0, [r6]
- cmp r0, 0x14
- beq _0809867A
- ldr r2, _08098648 @ =0x000008a8
- adds r1, r3, r2
- ldrh r0, [r1]
- adds r0, 0x1
- movs r2, 0
- mov r9, r2
- strh r0, [r1]
- ldr r0, _0809864C @ =0x000008aa
- adds r4, r3, r0
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- ldr r5, _08098650 @ =0x06007800
- adds r3, 0xA8
- mov r8, r3
- str r2, [sp]
- ldrh r0, [r1]
- str r0, [sp, 0x4]
- movs r7, 0xC
- str r7, [sp, 0x8]
- ldrh r0, [r4]
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0xA
- bl sub_809D034
- ldrh r2, [r4]
- movs r4, 0x1
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0xA
- movs r3, 0xC
- bl sub_809D16C
- movs r0, 0x8
- negs r0, r0
- bl sub_80994A8
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x14
- beq _08098654
- movs r0, 0x1
- b _0809867C
- .align 2, 0
-_08098640: .4byte gSharedMem
-_08098644: .4byte 0x000008ad
-_08098648: .4byte 0x000008a8
-_0809864C: .4byte 0x000008aa
-_08098650: .4byte 0x06007800
-_08098654:
- ldr r0, _0809868C @ =gUnknown_0203847C
- movs r1, 0
- strb r1, [r0]
- bl sub_809954C
- bl party_compaction
- str r7, [sp]
- mov r2, r9
- str r2, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x2
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0x15
- movs r2, 0
- mov r3, r8
- bl sub_809D034
-_0809867A:
- movs r0, 0
-_0809867C:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0809868C: .4byte gUnknown_0203847C
- thumb_func_end sub_80985CC
-
- thumb_func_start sub_8098690
-sub_8098690: @ 8098690
- push {lr}
- sub sp, 0x10
- lsls r0, 24
- cmp r0, 0
- beq _080986C0
- ldr r0, _080986B8 @ =0x06007800
- ldr r3, _080986BC @ =gSharedMem + 0xA8
- movs r1, 0xC
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x9
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0x15
- movs r2, 0
- bl sub_809D034
- b _080986DA
- .align 2, 0
-_080986B8: .4byte 0x06007800
-_080986BC: .4byte gSharedMem + 0xA8
-_080986C0:
- ldr r0, _080986E0 @ =0x06007800
- ldr r3, _080986E4 @ =gSharedMem + 0xA8
- movs r1, 0xC
- str r1, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r1, 0x9
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- movs r1, 0x15
- movs r2, 0
- bl sub_809D034
-_080986DA:
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_080986E0: .4byte 0x06007800
-_080986E4: .4byte gSharedMem + 0xA8
- thumb_func_end sub_8098690
-
- thumb_func_start sub_80986E8
-sub_80986E8: @ 80986E8
- ldr r1, _08098704 @ =gSharedMem
- ldr r2, _08098708 @ =0x000008af
- adds r0, r1, r2
- movs r3, 0x1
- strb r3, [r0]
- movs r0, 0x8B
- lsls r0, 4
- adds r2, r1, r0
- movs r0, 0x1E
- strb r0, [r2]
- ldr r2, _0809870C @ =0x000008b1
- adds r1, r2
- strb r3, [r1]
- bx lr
- .align 2, 0
-_08098704: .4byte gSharedMem
-_08098708: .4byte 0x000008af
-_0809870C: .4byte 0x000008b1
- thumb_func_end sub_80986E8
-
- thumb_func_start sub_8098710
-sub_8098710: @ 8098710
- push {lr}
- ldr r0, _0809872C @ =gSharedMem
- ldr r2, _08098730 @ =0x000008af
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _08098728
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- bl sub_8098690
-_08098728:
- pop {r0}
- bx r0
- .align 2, 0
-_0809872C: .4byte gSharedMem
-_08098730: .4byte 0x000008af
- thumb_func_end sub_8098710
-
- thumb_func_start sub_8098734
-sub_8098734: @ 8098734
- push {lr}
- ldr r2, _08098774 @ =gSharedMem
- ldr r1, _08098778 @ =0x000008af
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08098770
- movs r0, 0x8B
- lsls r0, 4
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bls _08098770
- movs r0, 0
- strb r0, [r1]
- movs r3, 0
- ldr r0, _0809877C @ =0x000008b1
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _08098768
- movs r3, 0x1
-_08098768:
- strb r3, [r1]
- ldrb r0, [r1]
- bl sub_8098690
-_08098770:
- pop {r0}
- bx r0
- .align 2, 0
-_08098774: .4byte gSharedMem
-_08098778: .4byte 0x000008af
-_0809877C: .4byte 0x000008b1
- thumb_func_end sub_8098734
-
- thumb_func_start sub_8098780
-sub_8098780: @ 8098780
- push {r4-r6,lr}
- sub sp, 0x10
- movs r4, 0x1
- ldr r6, _080987D4 @ =gSharedMem + 0xA8
- movs r5, 0x80
- lsls r5, 9
-_0809878C:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080987D8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080987A0
- movs r0, 0x1
-_080987A0:
- movs r1, 0x10
- cmp r0, 0
- beq _080987A8
- movs r1, 0xC
-_080987A8:
- lsrs r2, r5, 16
- str r1, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0x7
- adds r3, r6, 0
- bl sub_809D104
- movs r0, 0xC0
- lsls r0, 10
- adds r5, r0
- adds r4, 0x1
- cmp r4, 0x5
- ble _0809878C
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080987D4: .4byte gSharedMem + 0xA8
-_080987D8: .4byte gPlayerParty
- thumb_func_end sub_8098780
-
- thumb_func_start sub_80987DC
-sub_80987DC: @ 80987DC
- push {lr}
- sub sp, 0x10
- bl sub_8098780
- ldr r0, _08098804 @ =0x06007800
- ldr r3, _08098808 @ =gSharedMem + 0xA8
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0xC
- str r1, [sp, 0x8]
- movs r1, 0x16
- str r1, [sp, 0xC]
- movs r1, 0xA
- movs r2, 0
- bl sub_809D034
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_08098804: .4byte 0x06007800
-_08098808: .4byte gSharedMem + 0xA8
- thumb_func_end sub_80987DC
-
- thumb_func_start sub_809880C
-sub_809880C: @ 809880C
- push {lr}
- ldr r0, _08098828 @ =gSharedMem
- ldr r1, _0809882C @ =0x000008ae
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x6
- bl PlaySE
- bl sub_80984E8
- pop {r0}
- bx r0
- .align 2, 0
-_08098828: .4byte gSharedMem
-_0809882C: .4byte 0x000008ae
- thumb_func_end sub_809880C
-
- thumb_func_start sub_8098830
-sub_8098830: @ 8098830
- push {r4,r5,lr}
- ldr r5, _08098848 @ =gSharedMem
- ldr r0, _0809884C @ =0x000008ae
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _08098866
- cmp r0, 0x1
- bgt _08098850
- cmp r0, 0
- beq _08098856
- b _08098890
- .align 2, 0
-_08098848: .4byte gSharedMem
-_0809884C: .4byte 0x000008ae
-_08098850:
- cmp r0, 0x2
- beq _0809888C
- b _08098890
-_08098856:
- bl sub_8098520
- lsls r0, 24
- cmp r0, 0
- bne _08098890
- bl sub_809B068
- b _0809887E
-_08098866:
- bl sub_809AC00
- lsls r0, 24
- cmp r0, 0
- bne _08098890
- ldr r1, _08098888 @ =0x000011f6
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809887E
- bl BoxSetMosaic
-_0809887E:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08098890
- .align 2, 0
-_08098888: .4byte 0x000011f6
-_0809888C:
- movs r0, 0
- b _08098892
-_08098890:
- movs r0, 0x1
-_08098892:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8098830
-
-.section .text_8098A38
-
thumb_func_start sub_8098A38
sub_8098A38: @ 8098A38
push {r4,lr}
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index d21bc324f..66cc84000 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -4,63 +4,6 @@
.section .rodata
.align 2
-gOamData_83B6EAC:: @ 83B6EAC
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gOamData_83B6EB4:: @ 83B6EB4
- .2byte 0x4000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_83B6EBC:: @ 83B6EBC
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83B6EC4:: @ 83B6EC4
- obj_image_anim_frame 2, 8
- obj_image_anim_frame 4, 8
- obj_image_anim_frame 6, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83B6ED4:: @ 83B6ED4
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83B6EDC:: @ 83B6EDC
- obj_image_anim_frame 10, 8
- obj_image_anim_frame 4, 8
- obj_image_anim_frame 12, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_83B6EEC:: @ 83B6EEC
- .4byte gSpriteAnim_83B6EBC
- .4byte gSpriteAnim_83B6EC4
- .4byte gSpriteAnim_83B6ED4
- .4byte gSpriteAnim_83B6EDC
-
- .align 2
-gSpriteTemplate_83B6EFC:: @ 83B6EFC
- spr_template 5, 56013, gOamData_83B6EB4, gSpriteAnimTable_83B6EEC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83B6F14:: @ 83B6F14
- spr_template 15, 56000, gOamData_83B6F2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_83B6F2C:: @ 83B6F2C
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
gSpriteAffineAnim_83B6F34:: @ 83B6F34
obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 120
obj_rot_scal_anim_end
diff --git a/include/graphics.h b/include/graphics.h
index 91ba45acd..a8ac2783d 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2747,5 +2747,9 @@ extern const u8 gPSSMenuHeader_Gfx[];
extern const u8 gPSSMenuHeader_Tilemap[];
extern const u16 gPSSMenu1_Pal[];
extern const u16 gPSSMenu2_Pal[];
+extern const u8 gPSSMenuMisc_Gfx[];
+extern const u8 gPSSMenuMisc_Tilemap[];
+extern const u16 gPSSMenu3_Pal[];
+extern const u16 gPSSMenu4_Pal[];
#endif // GUARD_GRAPHICS_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index f91a5f08e..b82213bb2 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -78,8 +78,16 @@ struct PokemonStorageSystemData {
u16 unk_0008;
u16 unk_000a;
struct PCScreenEffectStruct unk_000c;
- struct UnkStruct_2000020 unk_0020[274]; // refine size later
- u8 filler_08b0[2];
+ struct UnkStruct_2000020 unk_0020[17]; // refine size later
+ u16 unk_00a8[0x400];
+ u16 unk_08a8;
+ u16 unk_08aa;
+ u8 unk_08ac;
+ u8 unk_08ad;
+ u8 unk_08ae;
+ u8 unk_08af;
+ u8 unk_08b0;
+ bool8 unk_08b1;
s16 unk_08b2;
u16 unk_08b4;
u8 filler_08b6[0x4a8];
diff --git a/ld_script.txt b/ld_script.txt
index 2157e6da5..f81caa5bf 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -129,10 +129,8 @@ SECTIONS {
asm/unk_text_8095904.o(.text);
src/pokemon/pokemon_storage_system.o(.text);
src/pokemon/pokemon_storage_system_2.o(.text);
- asm/pokemon_storage_system.o(.text);
- src/pokemon/pokemon_storage_system_2.o(.text.8098898);
src/pokemon/pokemon_storage_system_3.o(.text);
- asm/pokemon_storage_system.o(.text_8098A38);
+ asm/pokemon_storage_system.o(.text);
src/pokemon/pokemon_icon.o(.text);
src/pokemon/pokemon_summary_screen.o(.text);
src/field/script_movement.o(.text);
diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c
index 7f97d7681..ff6f1f587 100644
--- a/src/pokemon/pokemon_storage_system_2.c
+++ b/src/pokemon/pokemon_storage_system_2.c
@@ -78,6 +78,9 @@ void sub_80982B4(void);
void sub_8098350(void);
void sub_8098400(void);
void add_to_c3_somehow(void);
+void sub_8098780(void);
+void sub_8098690(bool8 flag);
+void sub_8099200(u8 a0);
bool8 sub_80985CC(void);
void sub_80986E8(void);
void sub_8098710(void);
@@ -93,6 +96,8 @@ void sub_8098AA8(u8 a0);
void sub_8098B48(void);
void sub_8099310(void);
bool8 sub_8099374(void);
+void sub_80994A8(s16 a0);
+void sub_809954C(void);
void sub_8099958(void);
bool8 sub_8099990(void);
void sub_809BB90(void);
@@ -109,6 +114,7 @@ void sub_809B0C0(u8 a0);
void sub_809B0D4(void);
void sub_809B0E0(void);
u8 sub_809B0F4(void);
+void sub_809B068(void);
void sub_809B100(u8 a0);
bool8 sub_809B130(void);
void sub_809B440(void);
@@ -134,6 +140,8 @@ s16 sub_809CF30(void);
void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2);
void sub_809CFF0(void);
void sub_809D034(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);
+void sub_809D104(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);
+void sub_809D16C(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height);
// .rodata
@@ -1743,9 +1751,192 @@ void sub_8098350(void)
}
}
-extern const struct StorageAction gPCStorageActionTexts[];
+void sub_8098400(void)
+{
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(15);
+ LZ77UnCompVram(gPSSMenuMisc_Gfx, BG_SCREEN_ADDR(13));
+ LZ77UnCompWram(gPSSMenuMisc_Tilemap, gPokemonStorageSystemPtr->unk_00a8);
+ LoadPalette(gPSSMenu3_Pal, 0x20, 0x20);
+ LoadPalette(gPSSMenu4_Pal, 0x30, 0x20);
+ DmaClear16(3, BG_SCREEN_ADDR(15), 0x800);
+ sub_8098780();
+ if (gUnknown_0203847C)
+ {
+ sub_8098690(TRUE);
+ sub_8099200(1);
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 0, 12, 22);
+ }
+ else
+ {
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 20, 12, 2);
+ sub_8098690(TRUE);
+ }
+ gPokemonStorageSystemPtr->unk_08af = 0;
+}
+
+void sub_80984E8(void)
+{
+ gPokemonStorageSystemPtr->unk_08a8 = 20;
+ gPokemonStorageSystemPtr->unk_08aa = 2;
+ gPokemonStorageSystemPtr->unk_08ad = 0;
+ sub_8099200(0);
+}
+
+bool8 sub_8098520(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08ad == 20)
+ return FALSE;
+ gPokemonStorageSystemPtr->unk_08a8--;
+ gPokemonStorageSystemPtr->unk_08aa++;
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, gPokemonStorageSystemPtr->unk_08a8, 12, gPokemonStorageSystemPtr->unk_08aa);
+ sub_80994A8(8);
+ if (++gPokemonStorageSystemPtr->unk_08ad == 20)
+ {
+ gUnknown_0203847C = 1;
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void add_to_c3_somehow(void)
+{
+ gPokemonStorageSystemPtr->unk_08a8 = 0;
+ gPokemonStorageSystemPtr->unk_08aa = 22;
+ gPokemonStorageSystemPtr->unk_08ad = 0;
+}
+
+bool8 sub_80985CC(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08ad == 20)
+ return FALSE;
+ gPokemonStorageSystemPtr->unk_08a8++;
+ gPokemonStorageSystemPtr->unk_08aa--;
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, gPokemonStorageSystemPtr->unk_08a8, 12, gPokemonStorageSystemPtr->unk_08aa);
+ sub_809D16C(BG_SCREEN_ADDR(15), 10, gPokemonStorageSystemPtr->unk_08aa, 12, 1);
+ sub_80994A8(-8);
+ if (++gPokemonStorageSystemPtr->unk_08ad == 20)
+ {
+ gUnknown_0203847C = 0;
+ sub_809954C();
+ party_compaction();
+ sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 0, 1, 2);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_8098690(bool8 flag)
+{
+ if (flag)
+ sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 0, 9, 2);
+ else
+ sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 2, 9, 2);
+}
+
+void sub_80986E8(void)
+{
+ gPokemonStorageSystemPtr->unk_08af = 1;
+ gPokemonStorageSystemPtr->unk_08b0 = 30;
+ gPokemonStorageSystemPtr->unk_08b1 = 1;
+}
+
+void sub_8098710(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08af)
+ {
+ gPokemonStorageSystemPtr->unk_08af = 0;
+ sub_8098690(TRUE);
+ }
+}
+
+void sub_8098734(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08af && ++gPokemonStorageSystemPtr->unk_08b0 > 30)
+ {
+ gPokemonStorageSystemPtr->unk_08b0 = 0;
+ gPokemonStorageSystemPtr->unk_08b1 = gPokemonStorageSystemPtr->unk_08b1 ? FALSE : TRUE;
+ sub_8098690(gPokemonStorageSystemPtr->unk_08b1);
+ }
+}
+
+void sub_8098780(void)
+{
+ int i;
+
+ for (i = 1; i < PARTY_SIZE; i++)
+ {
+ u16 r1;
+ bool32 r0 = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ if (r0)
+ r0 = TRUE;
+ r1 = r0 ? 12 : 16;
+ sub_809D104(gPokemonStorageSystemPtr->unk_00a8, 7, (i - 1) * 3 + 1, gPokemonStorageSystemPtr->unk_00a8, r1, 4, 4, 3);
+ }
+}
+
+void sub_80987DC(void)
+{
+ sub_8098780();
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 0, 12, 22);
+}
+
+void sub_809880C(void)
+{
+ gPokemonStorageSystemPtr->unk_08ae = 0;
+ PlaySE(SE_WIN_OPEN);
+ sub_80984E8();
+}
+
+bool8 sub_8098830(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_08ae)
+ {
+ case 0:
+ if (!sub_8098520())
+ {
+ sub_809B068();
+ gPokemonStorageSystemPtr->unk_08ae++;
+ }
+ break;
+ case 1:
+ if (!sub_809AC00())
+ {
+ if (gPokemonStorageSystemPtr->unk_11f6)
+ BoxSetMosaic();
+ gPokemonStorageSystemPtr->unk_08ae++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+ return TRUE;
+}
-asm(".section .text.8098898");
+const struct StorageAction gPCStorageActionTexts[] = {
+ {PCText_ExitBox, 0},
+ {PCText_WhatYouDo, 0},
+ {PCText_PickATheme, 0},
+ {PCText_PickAWallpaper, 0},
+ {PCText_IsSelected, 1},
+ {PCText_JumpToWhichBox, 0},
+ {PCText_DepositInWhichBox, 0},
+ {PCText_WasDeposited, 1},
+ {PCText_BoxIsFull, 0},
+ {PCText_ReleasePoke, 0},
+ {PCText_WasReleased, 4},
+ {PCText_ByeBye, 6},
+ {PCText_MarkPoke, 0},
+ {PCText_LastPoke, 0},
+ {PCText_PartyFull, 0},
+ {PCText_HoldingPoke, 0},
+ {PCText_WhichOneWillTake, 0},
+ {PCText_CantReleaseEgg, 0},
+ {PCText_ContinueBox, 0},
+ {PCText_CameBack, 1},
+ {PCText_Worried, 0},
+ {PCText_Surprise, 0},
+ {PCText_PleaseRemoveMail, 0}
+};
void PrintStorageActionText(u8 index) {
u8 *ptr;
@@ -1826,30 +2017,67 @@ void PrintStorageActionText(u8 index) {
MenuPrint(gPokemonStorageSystemPtr->unk_2694, 11, 17);
}
-// FIXME: move this back
+const struct OamData gOamData_83B6EAC = {
+ .size = 3
+};
-const struct StorageAction gPCStorageActionTexts[] = {
- {PCText_ExitBox, 0},
- {PCText_WhatYouDo, 0},
- {PCText_PickATheme, 0},
- {PCText_PickAWallpaper, 0},
- {PCText_IsSelected, 1},
- {PCText_JumpToWhichBox, 0},
- {PCText_DepositInWhichBox, 0},
- {PCText_WasDeposited, 1},
- {PCText_BoxIsFull, 0},
- {PCText_ReleasePoke, 0},
- {PCText_WasReleased, 4},
- {PCText_ByeBye, 6},
- {PCText_MarkPoke, 0},
- {PCText_LastPoke, 0},
- {PCText_PartyFull, 0},
- {PCText_HoldingPoke, 0},
- {PCText_WhichOneWillTake, 0},
- {PCText_CantReleaseEgg, 0},
- {PCText_ContinueBox, 0},
- {PCText_CameBack, 1},
- {PCText_Worried, 0},
- {PCText_Surprise, 0},
- {PCText_PleaseRemoveMail, 0}
+const struct OamData gOamData_83B6EB4 = {
+ .shape = ST_OAM_H_RECTANGLE
+};
+
+const union AnimCmd gSpriteAnim_83B6EBC[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83B6EC4[] = {
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gSpriteAnim_83B6ED4[] = {
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83B6EDC[] = {
+ ANIMCMD_FRAME(10, 8),
+ ANIMCMD_FRAME( 4, 8),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gSpriteAnimTable_83B6EEC[] = {
+ gSpriteAnim_83B6EBC,
+ gSpriteAnim_83B6EC4,
+ gSpriteAnim_83B6ED4,
+ gSpriteAnim_83B6EDC
+};
+
+const struct SpriteTemplate gSpriteTemplate_83B6EFC = {
+ 0x0005,
+ 0xdacd,
+ &gOamData_83B6EB4,
+ gSpriteAnimTable_83B6EEC,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const struct OamData gOamData_83B6F2C;
+
+const struct SpriteTemplate gSpriteTemplate_83B6F14 = {
+ 0x000f,
+ 0xdac0,
+ &gOamData_83B6F2C,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const struct OamData gOamData_83B6F2C = {
+ .size = 2
};