summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-03-13 16:28:17 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-03-13 16:52:47 -0400
commita89e8474fdb31e1e1b13a64be4109ce8603f81a3 (patch)
tree2dac0a82b02033929b67fef5ca5d360d2691a9d3
parent50e063032001eb81a46817a0d998bee8578335d2 (diff)
Through sub_808FE54
-rw-r--r--asm/pokemon_storage_system.s2096
-rw-r--r--data/pokemon_storage_system.s231
-rw-r--r--graphics/interface/pss_unk_83CEA30.pal19
-rw-r--r--include/box_party_pokemon_dropdown.h22
-rw-r--r--include/graphics.h7
-rw-r--r--include/pokemon_storage_system_internal.h108
-rw-r--r--include/strings.h31
-rw-r--r--src/box_party_pokemon_dropdown.c120
-rw-r--r--src/graphics.c4
-rw-r--r--src/pokemon_storage_system_3.c1046
-rw-r--r--src/strings.c60
11 files changed, 1250 insertions, 2494 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 0b03b6a23..4c6f57d22 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,2012 +5,6 @@
.text
- thumb_func_start FreePSSData
-FreePSSData: @ 808EF68
- push {r4,lr}
- bl sub_80F7B2C
- bl sub_80950A4
- ldr r4, _0808EF88 @ =sPSSData
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- bl FreeAllWindowBuffers
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808EF88: .4byte sPSSData
- thumb_func_end FreePSSData
-
- thumb_func_start SetScrollingBackground
-SetScrollingBackground: @ 808EF8C
- push {lr}
- sub sp, 0x4
- ldr r1, _0808EFB8 @ =0x00001f0f
- movs r0, 0xE
- bl SetGpuReg
- ldr r1, _0808EFBC @ =gUnknown_83CE438
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r0, _0808EFC0 @ =gUnknown_83CE4D0
- ldr r1, _0808EFC4 @ =0x0600f800
- bl LZ77UnCompVram
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0808EFB8: .4byte 0x00001f0f
-_0808EFBC: .4byte gUnknown_83CE438
-_0808EFC0: .4byte gUnknown_83CE4D0
-_0808EFC4: .4byte 0x0600f800
- thumb_func_end SetScrollingBackground
-
- thumb_func_start sub_808EFC8
-sub_808EFC8: @ 808EFC8
- push {lr}
- movs r0, 0x3
- movs r1, 0x80
- movs r2, 0x1
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0x80
- movs r2, 0x2
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_808EFC8
-
- thumb_func_start LoadPSSMenuGfx
-LoadPSSMenuGfx: @ 808EFE4
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _0808F030 @ =gUnknown_83CEA50
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r1, _0808F034 @ =gUnknown_8E9C438
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r0, _0808F038 @ =gUnknown_83CE5FC
- ldr r5, _0808F03C @ =sPSSData
- ldr r1, [r5]
- ldr r4, _0808F040 @ =0x00005abc
- adds r1, r4
- bl LZ77UnCompWram
- ldr r1, [r5]
- adds r1, r4
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F030: .4byte gUnknown_83CEA50
-_0808F034: .4byte gUnknown_8E9C438
-_0808F038: .4byte gUnknown_83CE5FC
-_0808F03C: .4byte sPSSData
-_0808F040: .4byte 0x00005abc
- thumb_func_end LoadPSSMenuGfx
-
- thumb_func_start InitPSSWindows
-InitPSSWindows: @ 808F044
- push {lr}
- ldr r0, _0808F05C @ =gUnknown_83CEA30
- bl InitWindows
- lsls r0, 16
- cmp r0, 0
- beq _0808F060
- bl DeactivateAllTextPrinters
- movs r0, 0x1
- b _0808F062
- .align 2, 0
-_0808F05C: .4byte gUnknown_83CEA30
-_0808F060:
- movs r0, 0
-_0808F062:
- pop {r1}
- bx r1
- thumb_func_end InitPSSWindows
-
- thumb_func_start LoadWaveformSpritePalette
-LoadWaveformSpritePalette: @ 808F068
- push {lr}
- ldr r0, _0808F074 @ =gUnknown_83CEA60
- bl LoadSpritePalette
- pop {r0}
- bx r0
- .align 2, 0
-_0808F074: .4byte gUnknown_83CEA60
- thumb_func_end LoadWaveformSpritePalette
-
- thumb_func_start sub_808F078
-sub_808F078: @ 808F078
- push {lr}
- ldr r0, _0808F0B0 @ =gUnknown_8E9C3F8
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0808F0B4 @ =gUnknown_8E9C418
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0808F0B8 @ =gUnknown_83CEA10
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0808F0BC @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- beq _0808F0C4
- ldr r0, _0808F0C0 @ =gUnknown_83CE738
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- b _0808F0CE
- .align 2, 0
-_0808F0B0: .4byte gUnknown_8E9C3F8
-_0808F0B4: .4byte gUnknown_8E9C418
-_0808F0B8: .4byte gUnknown_83CEA10
-_0808F0BC: .4byte sPSSData
-_0808F0C0: .4byte gUnknown_83CE738
-_0808F0C4:
- ldr r0, _0808F0EC @ =gUnknown_83CE758
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
-_0808F0CE:
- ldr r1, _0808F0F0 @ =0x00001e05
- movs r0, 0xA
- bl SetGpuReg
- bl sub_808F2BC
- bl sub_808F0F4
- bl sub_808F164
- bl RefreshCursorMonData
- pop {r0}
- bx r0
- .align 2, 0
-_0808F0EC: .4byte gUnknown_83CE758
-_0808F0F0: .4byte 0x00001e05
- thumb_func_end sub_808F078
-
- thumb_func_start sub_808F0F4
-sub_808F0F4: @ 808F0F4
- push {r4,lr}
- ldr r1, _0808F154 @ =0x0000dac8
- movs r0, 0x10
- movs r2, 0
- bl CreateMonMarkingSprite_AllOff
- ldr r4, _0808F158 @ =sPSSData
- ldr r1, [r4]
- movs r3, 0xD9
- lsls r3, 4
- adds r1, r3
- str r0, [r1]
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r0, [r4]
- adds r0, r3
- ldr r0, [r0]
- adds r0, 0x43
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, r3
- ldr r2, [r0]
- movs r1, 0x28
- strh r1, [r2, 0x20]
- ldr r1, [r0]
- movs r0, 0x96
- strh r0, [r1, 0x22]
- movs r0, 0x10
- bl GetSpriteTileStartByTag
- ldr r1, [r4]
- ldr r2, _0808F15C @ =0x00000d9c
- adds r1, r2
- lsls r0, 16
- lsrs r0, 11
- ldr r2, _0808F160 @ =0x06010000
- adds r0, r2
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F154: .4byte 0x0000dac8
-_0808F158: .4byte sPSSData
-_0808F15C: .4byte 0x00000d9c
-_0808F160: .4byte 0x06010000
- thumb_func_end sub_808F0F4
-
- thumb_func_start sub_808F164
-sub_808F164: @ 808F164
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _0808F1BC @ =gUnknown_83CEA68
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- movs r4, 0
-_0808F17A:
- lsls r1, r4, 6
- subs r1, r4
- adds r1, 0x8
- lsls r1, 16
- asrs r1, 16
- ldr r0, _0808F1C0 @ =gUnknown_83CEBD8
- movs r2, 0x9
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0808F1C4 @ =sPSSData
- ldr r2, [r1]
- lsls r1, r4, 2
- ldr r3, _0808F1C8 @ =0x00000d94
- adds r2, r3
- adds r2, r1
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0808F1CC @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _0808F17A
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F1BC: .4byte gUnknown_83CEA68
-_0808F1C0: .4byte gUnknown_83CEBD8
-_0808F1C4: .4byte sPSSData
-_0808F1C8: .4byte 0x00000d94
-_0808F1CC: .4byte gSprites
- thumb_func_end sub_808F164
-
- thumb_func_start RefreshCursorMonData
-RefreshCursorMonData: @ 808F1D0
- push {lr}
- ldr r0, _0808F1FC @ =sPSSData
- ldr r1, [r0]
- movs r2, 0xCE
- lsls r2, 4
- adds r0, r1, r2
- ldrh r0, [r0]
- subs r2, 0x4
- adds r1, r2
- ldr r1, [r1]
- bl sub_808F3F8
- bl PrintCursorMonInfo
- bl sub_808F5E8
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- pop {r0}
- bx r0
- .align 2, 0
-_0808F1FC: .4byte sPSSData
- thumb_func_end RefreshCursorMonData
-
- thumb_func_start BoxSetMosaic
-BoxSetMosaic: @ 808F200
- push {lr}
- bl RefreshCursorMonData
- ldr r3, _0808F24C @ =sPSSData
- ldr r0, [r3]
- ldr r1, _0808F250 @ =0x00002238
- adds r0, r1
- ldr r2, [r0]
- cmp r2, 0
- beq _0808F248
- ldrb r0, [r2, 0x1]
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r1, [r3]
- ldr r0, _0808F250 @ =0x00002238
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0xA
- strh r0, [r2, 0x2E]
- ldr r2, [r1]
- movs r0, 0x1
- strh r0, [r2, 0x30]
- ldr r2, [r1]
- ldr r0, _0808F254 @ =BoxSetMosaic2
- str r0, [r2, 0x1C]
- ldr r0, [r1]
- ldrh r0, [r0, 0x2E]
- lsls r1, r0, 12
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
-_0808F248:
- pop {r0}
- bx r0
- .align 2, 0
-_0808F24C: .4byte sPSSData
-_0808F250: .4byte 0x00002238
-_0808F254: .4byte BoxSetMosaic2
- thumb_func_end BoxSetMosaic
-
- thumb_func_start sub_808F258
-sub_808F258: @ 808F258
- ldr r0, _0808F26C @ =sPSSData
- ldr r0, [r0]
- ldr r1, _0808F270 @ =0x00002238
- adds r0, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- lsls r0, 27
- lsrs r0, 31
- bx lr
- .align 2, 0
-_0808F26C: .4byte sPSSData
-_0808F270: .4byte 0x00002238
- thumb_func_end sub_808F258
-
- thumb_func_start BoxSetMosaic2
-BoxSetMosaic2: @ 808F274
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- subs r0, r1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bge _0808F28A
- movs r0, 0
- strh r0, [r4, 0x2E]
-_0808F28A:
- ldrh r0, [r4, 0x2E]
- lsls r1, r0, 12
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0808F2B2
- ldrb r0, [r4, 0x1]
- movs r1, 0x11
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x1]
- ldr r0, _0808F2B8 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_0808F2B2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F2B8: .4byte SpriteCallbackDummy
- thumb_func_end BoxSetMosaic2
-
- thumb_func_start sub_808F2BC
-sub_808F2BC: @ 808F2BC
- push {r4-r7,lr}
- sub sp, 0x28
- ldr r0, _0808F350 @ =sPSSData
- mov r12, r0
- ldr r1, [r0]
- ldr r4, _0808F354 @ =0x000022bc
- adds r0, r1, r4
- str r0, [sp, 0x18]
- add r3, sp, 0x18
- movs r0, 0x82
- lsls r0, 10
- str r0, [r3, 0x4]
- ldr r5, _0808F358 @ =0x0000223c
- adds r1, r5
- str r1, [sp, 0x20]
- ldr r0, _0808F35C @ =0x0000dac6
- add r2, sp, 0x20
- str r0, [r2, 0x4]
- mov r1, sp
- ldr r0, _0808F360 @ =gUnknown_83CEA70
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- movs r6, 0
- adds r7, r2, 0
- mov r5, r12
- movs r2, 0
- ldr r1, _0808F364 @ =0x000007ff
-_0808F2F6:
- ldr r0, [r5]
- adds r0, r4
- adds r0, r6
- strb r2, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r1
- bls _0808F2F6
- movs r6, 0
- ldr r5, _0808F350 @ =sPSSData
- ldr r4, _0808F358 @ =0x0000223c
- movs r2, 0
-_0808F310:
- ldr r0, [r5]
- lsls r1, r6, 1
- adds r0, r4
- adds r0, r1
- strh r2, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0xF
- bls _0808F310
- ldr r0, _0808F350 @ =sPSSData
- ldr r0, [r0]
- ldr r6, _0808F368 @ =0x00002238
- adds r0, r6
- movs r1, 0
- str r1, [r0]
- adds r0, r3, 0
- bl LoadSpriteSheet
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _0808F3C8
- adds r0, r7, 0
- bl LoadSpritePalette
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- beq _0808F3C8
- b _0808F3B4
- .align 2, 0
-_0808F350: .4byte sPSSData
-_0808F354: .4byte 0x000022bc
-_0808F358: .4byte 0x0000223c
-_0808F35C: .4byte 0x0000dac6
-_0808F360: .4byte gUnknown_83CEA70
-_0808F364: .4byte 0x000007ff
-_0808F368: .4byte 0x00002238
-_0808F36C:
- ldr r0, _0808F39C @ =sPSSData
- ldr r2, [r0]
- ldr r7, _0808F3A0 @ =0x00002238
- adds r3, r2, r7
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0808F3A4 @ =gSprites
- adds r0, r1
- str r0, [r3]
- lsls r0, r4, 4
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- ldr r3, _0808F3A8 @ =0x00002232
- adds r1, r2, r3
- strh r0, [r1]
- ldr r6, _0808F3AC @ =0x00002234
- adds r2, r6
- lsls r0, r5, 5
- ldr r7, _0808F3B0 @ =0x06010000
- adds r0, r7
- str r0, [r2]
- b _0808F3C8
- .align 2, 0
-_0808F39C: .4byte sPSSData
-_0808F3A0: .4byte 0x00002238
-_0808F3A4: .4byte gSprites
-_0808F3A8: .4byte 0x00002232
-_0808F3AC: .4byte 0x00002234
-_0808F3B0: .4byte 0x06010000
-_0808F3B4:
- mov r0, sp
- movs r1, 0x28
- movs r2, 0x30
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _0808F36C
-_0808F3C8:
- ldr r0, _0808F3EC @ =sPSSData
- ldr r0, [r0]
- ldr r1, _0808F3F0 @ =0x00002238
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _0808F3E2
- movs r0, 0x2
- bl FreeSpriteTilesByTag
- ldr r0, _0808F3F4 @ =0x0000dac6
- bl FreeSpritePaletteByTag
-_0808F3E2:
- add sp, 0x28
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F3EC: .4byte sPSSData
-_0808F3F0: .4byte 0x00002238
-_0808F3F4: .4byte 0x0000dac6
- thumb_func_end sub_808F2BC
-
- thumb_func_start sub_808F3F8
-sub_808F3F8: @ 808F3F8
- push {r4-r7,lr}
- adds r3, r1, 0
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r6, _0808F468 @ =sPSSData
- ldr r4, [r6]
- ldr r7, _0808F46C @ =0x00002238
- adds r0, r4, r7
- ldr r0, [r0]
- cmp r0, 0
- beq _0808F496
- cmp r2, 0
- beq _0808F48C
- lsls r0, r2, 3
- ldr r1, _0808F470 @ =gMonFrontPicTable
- adds r0, r1
- ldr r5, _0808F474 @ =0x000022bc
- adds r1, r4, r5
- bl HandleLoadSpecialPokePic
- ldr r1, [r6]
- ldr r2, _0808F478 @ =0x00000cd8
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r4, _0808F47C @ =0x0000223c
- adds r1, r4
- bl LZ77UnCompWram
- ldr r0, [r6]
- adds r5, r0, r5
- ldr r1, _0808F480 @ =0x00002234
- adds r0, r1
- ldr r1, [r0]
- ldr r2, _0808F484 @ =0x04000200
- adds r0, r5, 0
- bl CpuSet
- ldr r0, [r6]
- adds r4, r0, r4
- ldr r2, _0808F488 @ =0x00002232
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, [r6]
- adds r0, r7
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- b _0808F496
- .align 2, 0
-_0808F468: .4byte sPSSData
-_0808F46C: .4byte 0x00002238
-_0808F470: .4byte gMonFrontPicTable
-_0808F474: .4byte 0x000022bc
-_0808F478: .4byte 0x00000cd8
-_0808F47C: .4byte 0x0000223c
-_0808F480: .4byte 0x00002234
-_0808F484: .4byte 0x04000200
-_0808F488: .4byte 0x00002232
-_0808F48C:
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_0808F496:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_808F3F8
-
- thumb_func_start PrintCursorMonInfo
-PrintCursorMonInfo: @ 808F49C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r6, _0808F51C @ =sPSSData
- ldr r2, [r6]
- ldrb r0, [r2, 0x1]
- cmp r0, 0x3
- beq _0808F528
- movs r4, 0
- movs r5, 0
- mov r8, r6
-_0808F4BC:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- ldr r1, _0808F520 @ =0x00000cf5
- adds r0, r1
- mov r2, r8
- ldr r1, [r2]
- adds r2, r1, r0
- movs r3, 0x6
- cmp r4, 0x2
- bne _0808F4D4
- movs r3, 0xA
-_0808F4D4:
- lsls r0, r5, 24
- lsrs r0, 24
- str r0, [sp]
- movs r7, 0xFF
- str r7, [sp, 0x4]
- movs r6, 0
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- adds r0, 0xE
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r4, 0x2
- bls _0808F4BC
- ldr r0, _0808F51C @ =sPSSData
- ldr r2, [r0]
- ldr r0, _0808F524 @ =0x00000d61
- adds r2, r0
- adds r0, r5, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r7, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r3, 0x6
- bl AddTextPrinterParameterized
- b _0808F57E
- .align 2, 0
-_0808F51C: .4byte sPSSData
-_0808F520: .4byte 0x00000cf5
-_0808F524: .4byte 0x00000d61
-_0808F528:
- ldr r1, _0808F5BC @ =0x00000d61
- adds r2, r1
- movs r1, 0
- str r1, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0
- movs r3, 0x6
- bl AddTextPrinterParameterized
- movs r4, 0
- movs r5, 0xF
-_0808F542:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- ldr r2, _0808F5C0 @ =0x00000cf5
- adds r0, r2
- ldr r1, [r6]
- adds r2, r1, r0
- movs r3, 0x6
- cmp r4, 0x2
- bne _0808F558
- movs r3, 0xA
-_0808F558:
- lsls r0, r5, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0x2
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- adds r0, 0xE
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r4, 0x2
- bls _0808F542
-_0808F57E:
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r4, _0808F5C4 @ =sPSSData
- ldr r1, [r4]
- movs r2, 0xCE
- lsls r2, 4
- adds r0, r1, r2
- ldrh r0, [r0]
- cmp r0, 0
- beq _0808F5C8
- adds r2, 0x7
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0xB5
- adds r1, r2
- ldr r1, [r1]
- bl sub_80BEBD0
- ldr r0, [r4]
- movs r1, 0xD9
- lsls r1, 4
- adds r0, r1
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- b _0808F5D8
- .align 2, 0
-_0808F5BC: .4byte 0x00000d61
-_0808F5C0: .4byte 0x00000cf5
-_0808F5C4: .4byte sPSSData
-_0808F5C8:
- movs r2, 0xD9
- lsls r2, 4
- adds r0, r1, r2
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
-_0808F5D8:
- strb r0, [r1]
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PrintCursorMonInfo
-
- thumb_func_start sub_808F5E8
-sub_808F5E8: @ 808F5E8
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0808F634 @ =sPSSData
- ldr r0, [r0]
- movs r1, 0xCE
- lsls r1, 4
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _0808F63C
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x8
- bl sub_80F7CE8
- movs r4, 0
-_0808F60E:
- ldr r0, _0808F634 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r2, _0808F638 @ =0x00000d94
- adds r0, r2
- adds r0, r1
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnimIfDifferent
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _0808F60E
- b _0808F66E
- .align 2, 0
-_0808F634: .4byte sPSSData
-_0808F638: .4byte 0x00000d94
-_0808F63C:
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x8
- bl sub_80F7CE8
- movs r4, 0
-_0808F64E:
- ldr r0, _0808F684 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r2, _0808F688 @ =0x00000d94
- adds r0, r2
- adds r0, r1
- ldr r0, [r0]
- lsls r1, r4, 25
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _0808F64E
-_0808F66E:
- movs r0, 0
- bl sub_80F7E54
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F684: .4byte sPSSData
-_0808F688: .4byte 0x00000d94
- thumb_func_end sub_808F5E8
-
- thumb_func_start sub_808F68C
-sub_808F68C: @ 808F68C
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0808F704 @ =gUnknown_8E9CAEC
- ldr r4, _0808F708 @ =sPSSData
- ldr r1, [r4]
- adds r1, 0xB0
- bl LZ77UnCompWram
- ldr r0, _0808F70C @ =gUnknown_8E9C3D8
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r2, [r4]
- adds r2, 0xB0
- movs r0, 0x16
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0xC
- bl SetBoxPartyPokemonDropdownMap2
- ldr r2, _0808F710 @ =gUnknown_83CE778
- movs r0, 0x4
- str r0, [sp]
- movs r0, 0x2
- movs r1, 0x1
- movs r3, 0x9
- bl SetBoxPartyPokemonDropdownMap2
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0
- bl SetBoxPartyPokemonDropdownMap2Pos
- movs r0, 0x2
- movs r1, 0x15
- movs r2, 0
- bl SetBoxPartyPokemonDropdownMap2Pos
- bl sub_808F9FC
- ldr r0, _0808F714 @ =sInPartyMenu
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808F718
- movs r0, 0x1
- bl sub_808F90C
- movs r0, 0x1
- bl sub_809088C
- movs r0, 0x2
- bl sub_80F7E54
- movs r0, 0x1
- bl sub_80F7E54
- b _0808F73A
- .align 2, 0
-_0808F704: .4byte gUnknown_8E9CAEC
-_0808F708: .4byte sPSSData
-_0808F70C: .4byte gUnknown_8E9C3D8
-_0808F710: .4byte gUnknown_83CE778
-_0808F714: .4byte sInPartyMenu
-_0808F718:
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x14
- movs r3, 0xC
- bl sub_80F7CE8
- movs r0, 0x1
- bl sub_808F90C
- movs r0, 0x1
- bl sub_80F7E54
- movs r0, 0x2
- bl sub_80F7E54
-_0808F73A:
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- ldr r0, _0808F754 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _0808F758 @ =0x000002c7
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F754: .4byte sPSSData
-_0808F758: .4byte 0x000002c7
- thumb_func_end sub_808F68C
-
- thumb_func_start sub_808F75C
-sub_808F75C: @ 808F75C
- push {lr}
- ldr r0, _0808F788 @ =sPSSData
- ldr r1, [r0]
- movs r0, 0xB0
- lsls r0, 2
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0x14
- strh r0, [r2]
- ldr r0, _0808F78C @ =0x000002c2
- adds r2, r1, r0
- movs r0, 0x2
- strh r0, [r2]
- ldr r0, _0808F790 @ =0x000002c5
- adds r1, r0
- strb r3, [r1]
- movs r0, 0
- bl sub_809088C
- pop {r0}
- bx r0
- .align 2, 0
-_0808F788: .4byte sPSSData
-_0808F78C: .4byte 0x000002c2
-_0808F790: .4byte 0x000002c5
- thumb_func_end sub_808F75C
-
- thumb_func_start sub_808F794
-sub_808F794: @ 808F794
- push {r4,lr}
- ldr r4, _0808F7F0 @ =sPSSData
- ldr r2, [r4]
- ldr r1, _0808F7F4 @ =0x000002c5
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x14
- beq _0808F802
- movs r0, 0xB0
- lsls r0, 2
- adds r1, r2, r0
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldr r0, _0808F7F8 @ =0x000002c2
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl sub_80F7D30
- movs r0, 0x1
- bl sub_80F7E54
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x8
- bl sub_8090B98
- ldr r1, [r4]
- ldr r0, _0808F7F4 @ =0x000002c5
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x14
- beq _0808F7FC
- movs r0, 0x1
- b _0808F804
- .align 2, 0
-_0808F7F0: .4byte sPSSData
-_0808F7F4: .4byte 0x000002c5
-_0808F7F8: .4byte 0x000002c2
-_0808F7FC:
- ldr r1, _0808F80C @ =sInPartyMenu
- movs r0, 0x1
- strb r0, [r1]
-_0808F802:
- movs r0, 0
-_0808F804:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0808F80C: .4byte sInPartyMenu
- thumb_func_end sub_808F794
-
- thumb_func_start SetUpHidePartyMenu
-SetUpHidePartyMenu: @ 808F810
- push {r4,lr}
- ldr r4, _0808F844 @ =sPSSData
- ldr r1, [r4]
- movs r0, 0xB0
- lsls r0, 2
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0
- strh r0, [r2]
- ldr r0, _0808F848 @ =0x000002c2
- adds r2, r1, r0
- movs r0, 0x16
- strh r0, [r2]
- ldr r0, _0808F84C @ =0x000002c5
- adds r1, r0
- strb r3, [r1]
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _0808F83C
- bl sub_80960C0
-_0808F83C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F844: .4byte sPSSData
-_0808F848: .4byte 0x000002c2
-_0808F84C: .4byte 0x000002c5
- thumb_func_end SetUpHidePartyMenu
-
- thumb_func_start HidePartyMenu
-HidePartyMenu: @ 808F850
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r5, _0808F8C8 @ =sPSSData
- ldr r2, [r5]
- ldr r1, _0808F8CC @ =0x000002c5
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x14
- beq _0808F8FC
- movs r0, 0xB0
- lsls r0, 2
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldr r4, _0808F8D0 @ =0x000002c2
- adds r1, r2, r4
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x1
- movs r1, 0x3
- bl sub_80F7D30
- movs r0, 0x1
- bl sub_80F7E54
- movs r1, 0x80
- lsls r1, 1
- ldr r0, [r5]
- adds r0, r4
- ldrb r3, [r0]
- movs r0, 0xC
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r2, 0xA
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x8
- negs r0, r0
- bl sub_8090B98
- ldr r1, [r5]
- ldr r0, _0808F8CC @ =0x000002c5
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x14
- beq _0808F8D4
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x1
- b _0808F8FE
- .align 2, 0
-_0808F8C8: .4byte sPSSData
-_0808F8CC: .4byte 0x000002c5
-_0808F8D0: .4byte 0x000002c2
-_0808F8D4:
- ldr r0, _0808F908 @ =sInPartyMenu
- movs r1, 0
- strb r1, [r0]
- bl sub_8090C44
- bl CompactPartySlots
- movs r0, 0x2
- str r0, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x9
- bl sub_80F7CE8
- movs r0, 0x2
- bl sub_80F7E54
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
-_0808F8FC:
- movs r0, 0
-_0808F8FE:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0808F908: .4byte sInPartyMenu
- thumb_func_end HidePartyMenu
-
- thumb_func_start sub_808F90C
-sub_808F90C: @ 808F90C
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- cmp r0, 0
- beq _0808F926
- movs r0, 0x2
- str r0, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x9
- bl sub_80F7CE8
- b _0808F934
-_0808F926:
- movs r0, 0x2
- str r0, [sp]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x9
- bl sub_80F7CE8
-_0808F934:
- movs r0, 0x2
- bl sub_80F7E54
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end sub_808F90C
-
- thumb_func_start sub_808F948
-sub_808F948: @ 808F948
- ldr r2, _0808F968 @ =sPSSData
- ldr r0, [r2]
- ldr r1, _0808F96C @ =0x000002c7
- adds r0, r1
- movs r3, 0x1
- strb r3, [r0]
- ldr r0, [r2]
- adds r1, 0x1
- adds r0, r1
- movs r1, 0x1E
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _0808F970 @ =0x000002c9
- adds r0, r1
- strb r3, [r0]
- bx lr
- .align 2, 0
-_0808F968: .4byte sPSSData
-_0808F96C: .4byte 0x000002c7
-_0808F970: .4byte 0x000002c9
- thumb_func_end sub_808F948
-
- thumb_func_start sub_808F974
-sub_808F974: @ 808F974
- push {lr}
- ldr r0, _0808F994 @ =sPSSData
- ldr r0, [r0]
- ldr r2, _0808F998 @ =0x000002c7
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _0808F98E
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- bl sub_808F90C
-_0808F98E:
- pop {r0}
- bx r0
- .align 2, 0
-_0808F994: .4byte sPSSData
-_0808F998: .4byte 0x000002c7
- thumb_func_end sub_808F974
-
- thumb_func_start sub_808F99C
-sub_808F99C: @ 808F99C
- push {r4,lr}
- ldr r3, _0808F9F0 @ =sPSSData
- ldr r1, [r3]
- ldr r2, _0808F9F4 @ =0x000002c7
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808F9E8
- movs r0, 0xB2
- lsls r0, 2
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bls _0808F9E8
- ldr r0, [r3]
- movs r1, 0xB2
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r3]
- movs r2, 0
- ldr r4, _0808F9F8 @ =0x000002c9
- adds r1, r0, r4
- ldrb r0, [r1]
- cmp r0, 0
- bne _0808F9DC
- movs r2, 0x1
-_0808F9DC:
- strb r2, [r1]
- ldr r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- bl sub_808F90C
-_0808F9E8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F9F0: .4byte sPSSData
-_0808F9F4: .4byte 0x000002c7
-_0808F9F8: .4byte 0x000002c9
- thumb_func_end sub_808F99C
-
- thumb_func_start sub_808F9FC
-sub_808F9FC: @ 808F9FC
- push {r4,lr}
- movs r4, 0x1
-_0808FA00:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0808FA2C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- negs r1, r0
- orrs r1, r0
- lsrs r1, 31
- adds r0, r4, 0
- bl sub_808FA30
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0808FA00
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808FA2C: .4byte gPlayerParty
- thumb_func_end sub_808F9FC
-
- thumb_func_start sub_808FA30
-sub_808FA30: @ 808FA30
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r7, _0808FA9C @ =gUnknown_83CE7D8
- cmp r1, 0
- beq _0808FA40
- ldr r7, _0808FAA0 @ =gUnknown_83CE7C0
-_0808FA40:
- subs r0, 0x1
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 18
- movs r1, 0xE0
- lsls r1, 11
- adds r0, r1
- lsrs r3, r0, 16
- movs r0, 0
- ldr r1, _0808FAA4 @ =sPSSData
- mov r12, r1
-_0808FA5C:
- movs r2, 0
- adds r4, r7, 0
- adds r4, 0x8
- adds r5, r3, 0
- adds r5, 0xC
- adds r6, r0, 0x1
-_0808FA68:
- mov r0, r12
- ldr r1, [r0]
- adds r0, r3, r2
- lsls r0, 1
- adds r1, 0xB0
- adds r1, r0
- lsls r0, r2, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x3
- bls _0808FA68
- adds r7, r4, 0
- lsls r0, r5, 16
- lsrs r3, r0, 16
- lsls r0, r6, 16
- lsrs r0, 16
- cmp r0, 0x2
- bls _0808FA5C
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808FA9C: .4byte gUnknown_83CE7D8
-_0808FAA0: .4byte gUnknown_83CE7C0
-_0808FAA4: .4byte sPSSData
- thumb_func_end sub_808FA30
-
- thumb_func_start sub_808FAA8
-sub_808FAA8: @ 808FAA8
- push {lr}
- sub sp, 0x4
- bl sub_808F9FC
- movs r0, 0x16
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0xC
- bl sub_80F7CE8
- movs r0, 0x1
- bl sub_80F7E54
- movs r0, 0x1
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end sub_808FAA8
-
- thumb_func_start SetUpDoShowPartyMenu
-SetUpDoShowPartyMenu: @ 808FAD4
- push {lr}
- ldr r0, _0808FAF0 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _0808FAF4 @ =0x000002c6
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x6
- bl PlaySE
- bl sub_808F75C
- pop {r0}
- bx r0
- .align 2, 0
-_0808FAF0: .4byte sPSSData
-_0808FAF4: .4byte 0x000002c6
- thumb_func_end SetUpDoShowPartyMenu
-
- thumb_func_start DoShowPartyMenu
-DoShowPartyMenu: @ 808FAF8
- push {r4,r5,lr}
- ldr r4, _0808FB14 @ =sPSSData
- ldr r0, [r4]
- ldr r5, _0808FB18 @ =0x000002c6
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808FB32
- cmp r0, 0x1
- bgt _0808FB1C
- cmp r0, 0
- beq _0808FB22
- b _0808FB60
- .align 2, 0
-_0808FB14: .4byte sPSSData
-_0808FB18: .4byte 0x000002c6
-_0808FB1C:
- cmp r0, 0x2
- beq _0808FB5C
- b _0808FB60
-_0808FB22:
- bl sub_808F794
- lsls r0, 24
- cmp r0, 0
- bne _0808FB60
- bl sub_8092AE4
- b _0808FB4C
-_0808FB32:
- bl sub_80924A8
- lsls r0, 24
- cmp r0, 0
- bne _0808FB60
- ldr r0, [r4]
- ldr r1, _0808FB58 @ =0x00000ce6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808FB4C
- bl BoxSetMosaic
-_0808FB4C:
- ldr r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0808FB60
- .align 2, 0
-_0808FB58: .4byte 0x00000ce6
-_0808FB5C:
- movs r0, 0
- b _0808FB62
-_0808FB60:
- movs r0, 0x1
-_0808FB62:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end DoShowPartyMenu
-
- thumb_func_start sub_808FB68
-sub_808FB68: @ 808FB68
- push {lr}
- sub sp, 0xC
- movs r1, 0xE8
- lsls r1, 5
- movs r0, 0x8
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0xD0
- bl TextWindow_SetStdFrame0_WithPal
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_808FB68
-
- thumb_func_start PrintStorageActionText
-PrintStorageActionText: @ 808FBA4
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- bl DynamicPlaceholderTextUtil_Reset
- ldr r1, _0808FBC8 @ =gUnknown_83CEA88
- lsls r0, r6, 3
- adds r0, r1
- ldrb r0, [r0, 0x4]
- cmp r0, 0x7
- bhi _0808FC7C
- lsls r0, 2
- ldr r1, _0808FBCC @ =_0808FBD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0808FBC8: .4byte gUnknown_83CEA88
-_0808FBCC: .4byte _0808FBD0
- .align 2, 0
-_0808FBD0:
- .4byte _0808FC7C
- .4byte _0808FBF0
- .4byte _0808FBF0
- .4byte _0808FBF0
- .4byte _0808FC04
- .4byte _0808FC04
- .4byte _0808FC04
- .4byte _0808FC1C
-_0808FBF0:
- ldr r0, _0808FBFC @ =sPSSData
- ldr r1, [r0]
- ldr r0, _0808FC00 @ =0x00000cea
- adds r1, r0
- b _0808FC0C
- .align 2, 0
-_0808FBFC: .4byte sPSSData
-_0808FC00: .4byte 0x00000cea
-_0808FC04:
- ldr r0, _0808FC14 @ =sPSSData
- ldr r1, [r0]
- ldr r2, _0808FC18 @ =0x000021d0
- adds r1, r2
-_0808FC0C:
- movs r0, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- b _0808FC7C
- .align 2, 0
-_0808FC14: .4byte sPSSData
-_0808FC18: .4byte 0x000021d0
-_0808FC1C:
- bl IsActiveItemMoving
- lsls r0, 24
- cmp r0, 0
- beq _0808FC40
- ldr r0, _0808FC38 @ =sPSSData
- ldr r4, [r0]
- ldr r0, _0808FC3C @ =0x000021db
- adds r4, r0
- bl sub_80961A8
- adds r1, r0, 0
- adds r0, r4, 0
- b _0808FC4C
- .align 2, 0
-_0808FC38: .4byte sPSSData
-_0808FC3C: .4byte 0x000021db
-_0808FC40:
- ldr r0, _0808FC54 @ =sPSSData
- ldr r1, [r0]
- ldr r2, _0808FC58 @ =0x000021db
- adds r0, r1, r2
- ldr r2, _0808FC5C @ =0x00000d61
- adds r1, r2
-_0808FC4C:
- bl StringCopy
- adds r2, r0, 0
- b _0808FC62
- .align 2, 0
-_0808FC54: .4byte sPSSData
-_0808FC58: .4byte 0x000021db
-_0808FC5C: .4byte 0x00000d61
-_0808FC60:
- adds r2, r1, 0
-_0808FC62:
- subs r1, r2, 0x1
- ldrb r0, [r1]
- cmp r0, 0
- beq _0808FC60
- movs r0, 0xFF
- strb r0, [r2]
- ldr r0, _0808FCDC @ =sPSSData
- ldr r1, [r0]
- ldr r0, _0808FCE0 @ =0x000021db
- adds r1, r0
- movs r0, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
-_0808FC7C:
- ldr r5, _0808FCDC @ =sPSSData
- ldr r0, [r5]
- movs r4, 0x86
- lsls r4, 6
- adds r0, r4
- ldr r2, _0808FCE4 @ =gUnknown_83CEA88
- lsls r1, r6, 3
- adds r1, r2
- ldr r1, [r1]
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, [r5]
- adds r2, r4
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0xD
- bl DrawTextBorderOuter
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0808FCDC: .4byte sPSSData
-_0808FCE0: .4byte 0x000021db
-_0808FCE4: .4byte gUnknown_83CEA88
- thumb_func_end PrintStorageActionText
-
- thumb_func_start ShowYesNoWindow
-ShowYesNoWindow: @ 808FCE8
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0808FD1C @ =gUnknown_83CEB80
- movs r1, 0xB
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0x1
- str r1, [sp, 0x8]
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- lsls r4, 24
- asrs r4, 24
- adds r0, r4, 0
- bl Menu_MoveCursorNoWrapAround
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808FD1C: .4byte gUnknown_83CEB80
- thumb_func_end ShowYesNoWindow
-
- thumb_func_start ClearBottomWindow
-ClearBottomWindow: @ 808FD20
- push {lr}
- movs r0, 0x1
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- pop {r0}
- bx r0
- thumb_func_end ClearBottomWindow
-
- thumb_func_start AddWallpaperSetsMenu
-AddWallpaperSetsMenu: @ 808FD34
- push {lr}
- bl sub_8094DA8
- movs r0, 0x12
- bl sub_8094DEC
- movs r0, 0x13
- bl sub_8094DEC
- movs r0, 0x14
- bl sub_8094DEC
- movs r0, 0x15
- bl sub_8094DEC
- bl AddMenu
- pop {r0}
- bx r0
- thumb_func_end AddWallpaperSetsMenu
-
- thumb_func_start AddWallpapersMenu
-AddWallpapersMenu: @ 808FD5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_8094DA8
- cmp r4, 0x1
- beq _0808FD9A
- cmp r4, 0x1
- bgt _0808FD76
- cmp r4, 0
- beq _0808FD80
- b _0808FDE6
-_0808FD76:
- cmp r5, 0x2
- beq _0808FDB4
- cmp r5, 0x3
- beq _0808FDCE
- b _0808FDE6
-_0808FD80:
- movs r0, 0x16
- bl sub_8094DEC
- movs r0, 0x17
- bl sub_8094DEC
- movs r0, 0x18
- bl sub_8094DEC
- movs r0, 0x19
- bl sub_8094DEC
- b _0808FDE6
-_0808FD9A:
- movs r0, 0x1A
- bl sub_8094DEC
- movs r0, 0x1B
- bl sub_8094DEC
- movs r0, 0x1C
- bl sub_8094DEC
- movs r0, 0x1D
- bl sub_8094DEC
- b _0808FDE6
-_0808FDB4:
- movs r0, 0x1E
- bl sub_8094DEC
- movs r0, 0x1F
- bl sub_8094DEC
- movs r0, 0x20
- bl sub_8094DEC
- movs r0, 0x21
- bl sub_8094DEC
- b _0808FDE6
-_0808FDCE:
- movs r0, 0x22
- bl sub_8094DEC
- movs r0, 0x23
- bl sub_8094DEC
- movs r0, 0x24
- bl sub_8094DEC
- movs r0, 0x25
- bl sub_8094DEC
-_0808FDE6:
- bl AddMenu
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end AddWallpapersMenu
-
- thumb_func_start GetCurrentBoxOption
-GetCurrentBoxOption: @ 808FDF0
- ldr r0, _0808FDF8 @ =sCurrentBoxOption
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0808FDF8: .4byte sCurrentBoxOption
- thumb_func_end GetCurrentBoxOption
-
- thumb_func_start sub_808FDFC
-sub_808FDFC: @ 808FDFC
- push {lr}
- bl sub_80939AC
- lsls r0, 24
- cmp r0, 0
- bne _0808FE38
- ldr r0, _0808FE24 @ =sInPartyMenu
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808FE28
- bl GetBoxCursorPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- bl sub_8095C84
- b _0808FE38
- .align 2, 0
-_0808FE24: .4byte sInPartyMenu
-_0808FE28:
- bl GetBoxCursorPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_8095C84
-_0808FE38:
- ldr r1, _0808FE50 @ =gUnknown_20397BA
- ldrh r0, [r1]
- cmp r0, 0
- beq _0808FE4A
- bl sub_8095E2C
- movs r0, 0x3
- bl sub_8094D14
-_0808FE4A:
- pop {r0}
- bx r0
- .align 2, 0
-_0808FE50: .4byte gUnknown_20397BA
- thumb_func_end sub_808FDFC
-
- thumb_func_start sub_808FE54
-sub_808FE54: @ 808FE54
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8094D34
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808FE90 @ =sPSSData
- ldr r0, [r0]
- movs r1, 0xCE
- lsls r1, 4
- adds r0, r1
- ldrh r7, [r0]
- ldr r0, _0808FE94 @ =sInPartyMenu
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808FE9C
- movs r6, 0xE
- bl GetBoxCursorPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808FE98 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- b _0808FEB2
- .align 2, 0
-_0808FE90: .4byte sPSSData
-_0808FE94: .4byte sInPartyMenu
-_0808FE98: .4byte gPlayerParty
-_0808FE9C:
- bl StorageGetCurrentBox
- lsls r0, 24
- lsrs r6, r0, 24
- bl GetBoxCursorPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x41
- bl GetCurrentBoxMonData
-_0808FEB2:
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, _0808FECC @ =sPSSData
- ldr r0, [r0]
- ldr r2, _0808FED0 @ =0x00002228
- adds r1, r0, r2
- cmp r5, 0x1
- beq _0808FF08
- cmp r5, 0x1
- bgt _0808FED4
- cmp r5, 0
- beq _0808FEDE
- b _0808FF6A
- .align 2, 0
-_0808FECC: .4byte sPSSData
-_0808FED0: .4byte 0x00002228
-_0808FED4:
- cmp r5, 0x2
- beq _0808FF3E
- cmp r5, 0x3
- beq _0808FF58
- b _0808FF6A
-_0808FEDE:
- ldr r0, _0808FEF0 @ =sInPartyMenu
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808FEF4
- cmp r4, 0xE
- beq _0808FF6A
-_0808FEEA:
- movs r2, 0x16
- b _0808FF02
- .align 2, 0
-_0808FEF0: .4byte sInPartyMenu
-_0808FEF4:
- cmp r4, 0xE
- beq _0808FEEA
- movs r0, 0x15
- cmp r4, r6
- beq _0808FF00
- movs r0, 0x14
-_0808FF00:
- adds r2, r0, 0
-_0808FF02:
- strh r7, [r1]
- strh r3, [r1, 0x2]
- b _0808FF60
-_0808FF08:
- movs r0, 0
- strh r7, [r1]
- strh r0, [r1, 0x2]
- strb r4, [r1, 0x4]
- movs r0, 0xFF
- strb r0, [r1, 0x5]
- ldr r0, _0808FF24 @ =sInPartyMenu
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808FF28
- cmp r4, 0xE
- beq _0808FF6A
- movs r2, 0x19
- b _0808FF64
- .align 2, 0
-_0808FF24: .4byte sInPartyMenu
-_0808FF28:
- cmp r4, 0xE
- bne _0808FF32
- movs r2, 0x1A
- strb r6, [r1, 0x4]
- b _0808FF64
-_0808FF32:
- cmp r4, r6
- beq _0808FF3A
- movs r2, 0x17
- b _0808FF62
-_0808FF3A:
- movs r2, 0x18
- b _0808FF64
-_0808FF3E:
- movs r2, 0x1A
- movs r0, 0
- strh r7, [r1]
- strh r0, [r1, 0x2]
- ldr r0, _0808FF54 @ =gUnknown_20397B6
- ldrb r0, [r0]
- strb r0, [r1, 0x4]
- movs r0, 0xFF
- strb r0, [r1, 0x5]
- b _0808FF64
- .align 2, 0
-_0808FF54: .4byte gUnknown_20397B6
-_0808FF58:
- movs r2, 0x1B
- movs r0, 0
- strh r0, [r1]
- strh r0, [r1, 0x2]
-_0808FF60:
- strb r4, [r1, 0x4]
-_0808FF62:
- strb r6, [r1, 0x5]
-_0808FF64:
- adds r0, r2, 0
- bl SetQuestLogEvent
-_0808FF6A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_808FE54
-
thumb_func_start sub_808FF70
sub_808FF70: @ 808FF70
push {r4,lr}
@@ -3200,8 +1194,8 @@ _08090884: .4byte sPSSData
_08090888: .4byte 0x00000a84
thumb_func_end sub_8090850
- thumb_func_start sub_809088C
-sub_809088C: @ 809088C
+ thumb_func_start CreatePartyMonsSprites
+CreatePartyMonsSprites: @ 809088C
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -3378,7 +1372,7 @@ _080909DA:
_080909E8: .4byte sPSSData
_080909EC: .4byte 0x00000a6c
_080909F0: .4byte gPlayerParty
- thumb_func_end sub_809088C
+ thumb_func_end CreatePartyMonsSprites
thumb_func_start sub_80909F4
sub_80909F4: @ 80909F4
@@ -3705,8 +1699,8 @@ _08090C3C: .4byte sPSSData
_08090C40: .4byte 0x00000a6c
thumb_func_end sub_8090C10
- thumb_func_start sub_8090C44
-sub_8090C44: @ 8090C44
+ thumb_func_start DestroyAllPartyMonIcons
+DestroyAllPartyMonIcons: @ 8090C44
push {r4-r6,lr}
movs r5, 0
ldr r6, _08090C7C @ =sPSSData
@@ -3738,7 +1732,7 @@ _08090C6A:
.align 2, 0
_08090C7C: .4byte sPSSData
_08090C80: .4byte 0x00000a6c
- thumb_func_end sub_8090C44
+ thumb_func_end DestroyAllPartyMonIcons
thumb_func_start sub_8090C84
sub_8090C84: @ 8090C84
@@ -6243,7 +4237,7 @@ _08091FDC:
lsrs r5, r0, 16
cmp r5, 0x1
bls _08091F8A
- bl sub_80939AC
+ bl IsCursorOnBox
lsls r0, 24
cmp r0, 0
beq _08091FF6
@@ -6628,6 +4622,8 @@ _080922B6:
bx r1
thumb_func_end sub_809223C
+ @ file boundary?
+
thumb_func_start sub_80922C0
sub_80922C0: @ 80922C0
push {lr}
@@ -9551,8 +7547,8 @@ IsMonBeingMoved: @ 80939A0
_080939A8: .4byte sIsMonBeingMoved
thumb_func_end IsMonBeingMoved
- thumb_func_start sub_80939AC
-sub_80939AC: @ 80939AC
+ thumb_func_start IsCursorOnBox
+IsCursorOnBox: @ 80939AC
push {lr}
movs r1, 0
ldr r0, _080939C4 @ =sBoxCursorArea
@@ -9568,7 +7564,7 @@ _080939BE:
bx r1
.align 2, 0
_080939C4: .4byte sBoxCursorArea
- thumb_func_end sub_80939AC
+ thumb_func_end IsCursorOnBox
thumb_func_start IsCursorOnCloseBox
IsCursorOnCloseBox: @ 80939C8
@@ -11504,15 +9500,15 @@ _080948FA:
thumb_func_start sub_8094900
sub_8094900: @ 8094900
push {lr}
- bl sub_8094DA8
+ bl InitMenu
movs r0, 0x9
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0xA
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0xB
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0
- bl sub_8094DEC
+ bl SetMenuText
pop {r0}
bx r0
thumb_func_end sub_8094900
@@ -11520,7 +9516,7 @@ sub_8094900: @ 8094900
thumb_func_start sub_8094924
sub_8094924: @ 8094924
push {lr}
- bl sub_8094DA8
+ bl InitMenu
ldr r0, _0809493C @ =sPSSData
ldr r0, [r0]
ldrb r0, [r0, 0x1]
@@ -11565,13 +9561,13 @@ _08094976:
cmp r1, 0
beq _080949BC
movs r0, 0x1
- bl sub_8094DEC
+ bl SetMenuText
b _080949C0
_08094982:
cmp r1, 0
beq _080949BC
movs r0, 0x2
- bl sub_8094DEC
+ bl SetMenuText
b _080949C0
_0809498E:
ldr r0, _080949A4 @ =sIsMonBeingMoved
@@ -11581,26 +9577,26 @@ _0809498E:
cmp r1, 0
beq _080949A8
movs r0, 0x4
- bl sub_8094DEC
+ bl SetMenuText
b _080949C0
.align 2, 0
_080949A4: .4byte sIsMonBeingMoved
_080949A8:
movs r0, 0x5
- bl sub_8094DEC
+ bl SetMenuText
b _080949C0
_080949B0:
cmp r1, 0
beq _080949BC
movs r0, 0x3
- bl sub_8094DEC
+ bl SetMenuText
b _080949C0
_080949BC:
movs r0, 0
b _08094A06
_080949C0:
movs r0, 0x6
- bl sub_8094DEC
+ bl SetMenuText
ldr r0, _080949E4 @ =sPSSData
ldr r0, [r0]
ldrb r0, [r0, 0x1]
@@ -11613,21 +9609,21 @@ _080949C0:
cmp r0, 0
bne _080949EC
movs r0, 0x2
- bl sub_8094DEC
+ bl SetMenuText
b _080949F2
.align 2, 0
_080949E4: .4byte sPSSData
_080949E8: .4byte sBoxCursorArea
_080949EC:
movs r0, 0x1
- bl sub_8094DEC
+ bl SetMenuText
_080949F2:
movs r0, 0x8
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0x7
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0x1
_08094A06:
pop {r1}
@@ -11662,7 +9658,7 @@ sub_8094A0C: @ 8094A0C
cmp r0, 0
beq _08094A9E
movs r0, 0xE
- bl sub_8094DEC
+ bl SetMenuText
b _08094AA8
.align 2, 0
_08094A48: .4byte sPSSData
@@ -11674,12 +9670,12 @@ _08094A50:
cmp r0, 0
bne _08094A68
movs r0, 0xC
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0x10
- bl sub_8094DEC
+ bl SetMenuText
_08094A68:
movs r0, 0x11
- bl sub_8094DEC
+ bl SetMenuText
b _08094AA8
_08094A70:
ldr r2, [r4]
@@ -11693,7 +9689,7 @@ _08094A70:
cmp r0, 0
beq _08094A9E
movs r0, 0xD
- bl sub_8094DEC
+ bl SetMenuText
b _08094AA8
.align 2, 0
_08094A8C: .4byte 0x00000ce2
@@ -11709,10 +9705,10 @@ _08094A9E:
b _08094AB0
_08094AA2:
movs r0, 0xF
- bl sub_8094DEC
+ bl SetMenuText
_08094AA8:
movs r0, 0
- bl sub_8094DEC
+ bl SetMenuText
movs r0, 0x1
_08094AB0:
pop {r4,r5}
@@ -12107,8 +10103,10 @@ _08094DA0: .4byte sBoxCursorArea
_08094DA4: .4byte sBoxCursorPosition
thumb_func_end sub_8094D84
- thumb_func_start sub_8094DA8
-sub_8094DA8: @ 8094DA8
+ @ file boundary?
+
+ thumb_func_start InitMenu
+InitMenu: @ 8094DA8
ldr r2, _08094DDC @ =sPSSData
ldr r0, [r2]
ldr r1, _08094DE0 @ =0x00000ca8
@@ -12139,10 +10137,10 @@ _08094DDC: .4byte sPSSData
_08094DE0: .4byte 0x00000ca8
_08094DE4: .4byte 0x00000ca9
_08094DE8: .4byte 0x00000c6d
- thumb_func_end sub_8094DA8
+ thumb_func_end InitMenu
- thumb_func_start sub_8094DEC
-sub_8094DEC: @ 8094DEC
+ thumb_func_start SetMenuText
+SetMenuText: @ 8094DEC
push {r4,r5,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -12190,7 +10188,7 @@ _08094E40: .4byte sPSSData
_08094E44: .4byte 0x00000ca8
_08094E48: .4byte gUnknown_83D353C
_08094E4C: .4byte 0x00000ca9
- thumb_func_end sub_8094DEC
+ thumb_func_end SetMenuText
thumb_func_start sub_8094E50
sub_8094E50: @ 8094E50
@@ -14711,8 +12709,8 @@ _080961A2:
bx r1
thumb_func_end IsActiveItemMoving
- thumb_func_start sub_80961A8
-sub_80961A8: @ 80961A8
+ thumb_func_start GetMovingItemName
+GetMovingItemName: @ 80961A8
push {lr}
ldr r0, _080961BC @ =sPSSData
ldr r0, [r0]
@@ -14725,7 +12723,7 @@ sub_80961A8: @ 80961A8
.align 2, 0
_080961BC: .4byte sPSSData
_080961C0: .4byte 0x00002224
- thumb_func_end sub_80961A8
+ thumb_func_end GetMovingItemName
thumb_func_start GetMovingItem
GetMovingItem: @ 80961C4
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index b09148603..70a682949 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -6,237 +6,6 @@
.section .rodata
.align 2
-gUnknown_83CE438:: @ 83CE438 4bpp.lz
- .incbin "graphics/interface/pss_unk_83CE438.4bpp.lz"
-
-gUnknown_83CE4D0:: @ 83CE4D0 bin.lz
- .incbin "graphics/interface/pss_unk_83CE4D0.bin.lz"
- .incbin "graphics/interface/pss_unk_83CE5DC.gbapal"
-
-gUnknown_83CE5FC:: @ 83CE5FC bin.lz
- .incbin "graphics/interface/pss_unk_83CE5FC.bin.lz"
-
-gUnknown_83CE6F8:: @ 83CE6F8 data16
- .2byte 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108
- .2byte 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118
- .2byte 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108
- .2byte 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118
-
-gUnknown_83CE738:: @ 83CE738 gbapal
- .incbin "graphics/interface/pss_unk_83CE738.gbapal"
-
-gUnknown_83CE758:: @ 83CE758 gbapal
- .incbin "graphics/interface/pss_unk_83CE758.gbapal"
-
-gUnknown_83CE778:: @ 83CE778 @ raw16
- .2byte 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182
- .2byte 0x0183, 0x0184, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189
- .2byte 0x018a, 0x018b, 0x018c, 0x018d
-
-gUnknown_83CE7C0:: @ 83CE7C0 @ raw8
- .byte 0x40, 0x11, 0x41, 0x11, 0x41, 0x11, 0x42, 0x11, 0x50, 0x11, 0x51, 0x11, 0x51, 0x11, 0x52, 0x11, 0x60, 0x11, 0x61, 0x11, 0x61, 0x11, 0x62, 0x11
-
-gUnknown_83CE7D8:: @ 83CE7D8 @ raw8
- .byte 0x43, 0x11, 0x44, 0x11, 0x44, 0x11, 0x45, 0x11, 0x53, 0x11, 0x54, 0x11, 0x54, 0x11, 0x55, 0x11, 0x63, 0x11, 0x64, 0x11, 0x64, 0x11, 0x65, 0x11
-
-gUnknown_83CE7F0:: @ 83CE7F0 gbapal
- .incbin "graphics/interface/pss_unk_83CE810.gbapal"
-
-gUnknown_83CE810:: @ 83CE810 4bpp
- .incbin "graphics/interface/pss_unk_83CE810.4bpp"
- .incbin "graphics/interface/pss_unk_83CE9D0.gbapal"
-
-gUnknown_83CEA10:: @ 83CEA10 gbapal
- .incbin "graphics/interface/pss_unk_83CEA10.gbapal"
-
-gUnknown_83CEA30:: @ 83CEA30 gbapal
- .incbin "graphics/interface/pss_unk_83CEA30.gbapal"
-
-gUnknown_83CEA50:: @ 83CEA50 bg_template
- .4byte 0x000001d0
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 29,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x004011e5
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 1,
- @ .mapBaseIndex = 30,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0100
- @ }
- .4byte 0x000023ba
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 27,
- @ .screenSize = 1,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000031ff
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 3,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_83CEA60:: @ 83CEA60 sprite_palette
- obj_pal gUnknown_83CE7F0, 56010
-
-gUnknown_83CEA68:: @ 83CEA68 sprite_sheet
- obj_tiles gUnknown_83CE810, 0x01c0, 5
-
-gUnknown_83CEA70:: @ 83CEA70 spr_template
- spr_template 2, 56006, gUnknown_83CEB88, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83CEA88:: @ 83CEA88 struct {const u8 *; u8;}
- .4byte gUnknown_8418208
- .byte 0
- .align 2
- .4byte gUnknown_841821B
- .byte 0
- .align 2
- .4byte gUnknown_8418233
- .byte 0
- .align 2
- .4byte gUnknown_8418248
- .byte 0
- .align 2
- .4byte gUnknown_841825C
- .byte 1
- .align 2
- .4byte gUnknown_841826C
- .byte 0
- .align 2
- .4byte gUnknown_841827F
- .byte 0
- .align 2
- .4byte gUnknown_8418295
- .byte 1
- .align 2
- .4byte gUnknown_84182A7
- .byte 0
- .align 2
- .4byte gUnknown_84182B8
- .byte 0
- .align 2
- .4byte gUnknown_84182CE
- .byte 4
- .align 2
- .4byte gUnknown_84182DF
- .byte 6
- .align 2
- .4byte gUnknown_84182EC
- .byte 0
- .align 2
- .4byte gUnknown_84182FF
- .byte 0
- .align 2
- .4byte gUnknown_8418319
- .byte 0
- .align 2
- .4byte gUnknown_841832C
- .byte 0
- .align 2
- .4byte gUnknown_8418346
- .byte 0
- .align 2
- .4byte gUnknown_841835F
- .byte 0
- .align 2
- .4byte gUnknown_8418379
- .byte 0
- .align 2
- .4byte gUnknown_8418392
- .byte 1
- .align 2
- .4byte gUnknown_84183A0
- .byte 0
- .align 2
- .4byte gUnknown_84183BA
- .byte 0
- .align 2
- .4byte gUnknown_84183C5
- .byte 0
- .align 2
- .4byte gUnknown_841825C
- .byte 7
- .align 2
- .4byte gUnknown_84183DD
- .byte 0
- .align 2
- .4byte gUnknown_84183F0
- .byte 7
- .align 2
- .4byte gUnknown_8418408
- .byte 0
- .align 2
- .4byte gUnknown_8418419
- .byte 0
- .align 2
- .4byte gUnknown_8418433
- .byte 7
- .align 2
- .4byte gUnknown_8418443
- .byte 7
- .align 2
- .4byte gUnknown_8418452
- .byte 0
- .align 2
-
-gUnknown_83CEB80:: @ 83CEB80 window_template
- .byte 0, 24, 11, 5, 4, 15
- .2byte 0x005c
-
-gUnknown_83CEB88::
- .4byte 0xc0000000, 0x00000000
-
-gUnknown_83CEB90::
- .4byte 0x00004000, 0x00000000
-
-gUnknown_83CEB98::
- obj_image_anim_frame 0x0000, 5
- obj_image_anim_end
-
-gUnknown_83CEBA0::
- obj_image_anim_frame 0x0002, 8
- obj_image_anim_frame 0x0004, 8
- obj_image_anim_frame 0x0006, 8
- obj_image_anim_jump 0
-
-gUnknown_83CEBB0::
- obj_image_anim_frame 0x0008, 5
- obj_image_anim_end
-
-gUnknown_83CEBB8::
- obj_image_anim_frame 0x000a, 8
- obj_image_anim_frame 0x0004, 8
- obj_image_anim_frame 0x000c, 8
- obj_image_anim_jump 0
-
-gUnknown_83CEBC8::
- .4byte gUnknown_83CEB98
- .4byte gUnknown_83CEBA0
- .4byte gUnknown_83CEBB0
- .4byte gUnknown_83CEBB8
-
-gUnknown_83CEBD8:: @ 83CEBD8 spr_template
- spr_template 5, 56010, gUnknown_83CEB90, gUnknown_83CEBC8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
gUnknown_83CEBF0:: @ 83CEBF0 spr_template
spr_template 18, 56000, gUnknown_83CEC08, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/graphics/interface/pss_unk_83CEA30.pal b/graphics/interface/pss_unk_83CEA30.pal
deleted file mode 100644
index dcc6395db..000000000
--- a/graphics/interface/pss_unk_83CEA30.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-8 0 0
-90 65 16
-57 197 0
-0 49 0
-0 197 16
-139 131 32
-16 65 24
-164 0 0
-0 0 0
-98 65 49
-65 197 24
-164 0 0
-255 57 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/include/box_party_pokemon_dropdown.h b/include/box_party_pokemon_dropdown.h
index c2df93f1e..52e620956 100644
--- a/include/box_party_pokemon_dropdown.h
+++ b/include/box_party_pokemon_dropdown.h
@@ -1,14 +1,24 @@
#ifndef GUARD_BOX_PARTY_POKEMON_DROPDOWN_H
#define GUARD_BOX_PARTY_POKEMON_DROPDOWN_H
+enum
+{
+ BPPD_MOVE_INNER_LEFT = 0,
+ BPPD_MOVE_OUTER_LEFT,
+ BPPD_MOVE_INNER_TOP,
+ BPPD_MOVE_OUTER_TOP,
+ BPPD_MOVE_INNER_X,
+ BPPD_MOVE_INNER_Y
+};
+
void AllocBoxPartyPokemonDropdowns(u8 num);
-void sub_80F7B2C(void);
-void sub_80F7B40(void);
+void FreeBoxPartyPokemonDropdowns(void);
+void CopyAllBoxPartyPokemonDropdownsToVram(void);
void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void * src, u16 width, u16 height);
-void sub_80F7C7C(u8 a0, const void * a1);
+void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void * src);
void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y);
-void sub_80F7CE8(u8 a0, u16 a1, u16 a2, u16 a3, u16 a4);
-void sub_80F7D30(u8 a0, u8 a1, s8 a2);
-void sub_80F7E54(u8 a0);
+void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height);
+void AdjustBoxPartyPokemonDropdownPos(u8 a0, u8 a1, s8 a2);
+void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx);
#endif //GUARD_BOX_PARTY_POKEMON_DROPDOWN_H
diff --git a/include/graphics.h b/include/graphics.h
index d84371e3a..3930861f8 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4917,4 +4917,11 @@ extern const u16 gUnknown_8E98F38[];
extern const u16 gUnknown_8E990D8[];
extern const u16 gUnknown_8E990F8[];
+// pokemon_storage_system
+extern const u32 gPSSMenu_Gfx[];
+extern const u32 gUnknown_8E9CAEC[];
+extern const u16 gPSSMenu_Pal[];
+extern const u16 gUnknown_8E9C3F8[];
+extern const u16 gUnknown_8E9C418[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h
index 9a4dcdfaa..1e7430dd9 100644
--- a/include/pokemon_storage_system_internal.h
+++ b/include/pokemon_storage_system_internal.h
@@ -50,6 +50,18 @@ enum
enum
{
+ PC_TEXT_FMT_NORMAL,
+ PC_TEXT_FMT_MON_NAME_1,
+ PC_TEXT_FMT_MON_NAME_2,
+ PC_TEXT_FMT_MON_NAME_3,
+ PC_TEXT_FMT_MON_NAME_4,
+ PC_TEXT_FMT_MON_NAME_5,
+ PC_TEXT_FMT_MON_NAME_6,
+ PC_TEXT_FMT_ITEM_NAME,
+};
+
+enum
+{
CURSOR_AREA_IN_BOX,
CURSOR_AREA_IN_PARTY,
CURSOR_AREA_BOX,
@@ -85,6 +97,12 @@ enum
#define TAG_TILE_0 0x0
#define TAG_TILE_1 0x1
+struct StorageAction
+{
+ const u8 *text;
+ u8 format;
+};
+
struct UnkPSSStruct_2002370
{
struct Sprite *unk_0000;
@@ -136,10 +154,10 @@ struct UnkStorageStruct
struct PssQuestLogBuffer
{
- u16 a0;
- u16 a2;
- u8 a4;
- u8 a5;
+ u16 species;
+ u16 species2;
+ u8 fromBox;
+ u8 toBox;
};
struct PokemonStorageSystemData
@@ -157,7 +175,7 @@ struct PokemonStorageSystemData
u8 field_2C4;
u8 field_2C5;
u8 showPartyMenuState;
- u8 unk_02C7;
+ bool8 unk_02C7;
u8 unk_02C8;
bool8 unk_02C9;
s16 newCurrBoxId;
@@ -248,10 +266,7 @@ struct PokemonStorageSystemData
/* 0ce8 */ u8 cursorMonLevel;
/* 0ce9 */ bool8 cursorMonIsEgg;
/* 0cea */ u8 cursorMonNick[POKEMON_NAME_LENGTH + 1];
- /* 0cf5 */ u8 cursorMonNickText[36];
- /* 0d19 */ u8 cursorMonSpeciesName[36];
- /* 0d3d */ u8 cursorMonGenderLvlText[36];
- /* 0d61 */ u8 cursorMonItemName[36];
+ /* 0cf5 */ u8 cursorMonTexts[4][36];
/* 0d88 */ bool8 (*monPlaceChangeFunc)(void);
/* 0d8c */ u8 monPlaceChangeState;
/* 0d8d */ u8 field_D91;
@@ -289,8 +304,9 @@ struct PokemonStorageSystemData
/* 21f4 */ struct UnkStorageStruct field_2204[3];
/* 2224 */ u16 movingItem;
/* 2226 */ u16 field_2236;
- /* 2228 */ struct PssQuestLogBuffer field_2238;
- /* 2230 */ u16 field_223A;
+ /* 2228 */ struct PssQuestLogBuffer qlogBuffer;
+ /* 2230 */ u16 field_2238;
+ /* 2232 */ u16 field_223A;
/* 2234 */ u16 *field_223C;
/* 2238 */ struct Sprite *cursorMonSprite;
/* 223c */ u16 field_2244[0x40];
@@ -310,5 +326,75 @@ void sub_808C950(void);
u8 HandleBoxChooseSelectionInput(void);
void sub_808C854(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal);
void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value);
+u32 GetCurrentBoxMonData(u8 boxPosition, s32 request);
+
+void sub_80922C0(void);
+void sub_8092340(void);
+bool8 sub_80924A8(void);
+void sub_8092AE4(void);
+void sub_8092B3C(u8 a0);
+void sub_8092B50(void);
+void sub_8092B5C(void);
+u8 sub_8092B70(void);
+void sub_8092F54(void);
+void sub_8093174(void);
+void sub_8093194(void);
+bool8 sub_80931EC(void);
+void sub_8093264(void);
+void sub_8093630(void);
+void sub_8093660(void);
+void sub_80936B8(void);
+void sub_80937B4(void);
+void sub_8094D14(u8 a0);
+u8 sub_8094D34(void);
+void sub_8094D60(void);
+void sub_8094D84(void);
+bool8 sub_8094F90(void);
+s16 sub_8094F94(void);
+void sub_8095024(void);
+bool8 sub_8095050(void);
+void sub_80950A4(void);
+void sub_80950BC(u8 a0);
+bool8 sub_80950D0(void);
+void sub_8095B5C(void);
+void sub_8096088(void);
+void sub_80960C0(void);
+bool8 sub_809610C(void);
+const u8 *GetMovingItemName(void);
+void sub_80966F4(void);
+bool8 sub_8096728(void);
+bool8 sub_80967C0(void);
+void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2);
+void sub_8096BF8(void);
+void AddMenu(void);
+bool8 CanMovePartyMon(void);
+bool8 CanShiftMon(void);
+bool8 DoMonPlaceChange(void);
+bool8 DoWallpaperGfxChange(void);
+u8 GetBoxCursorPosition(void);
+u16 GetMovingItem(void);
+u8 HandleInput(void);
+void InitCanReleaseMonVars(void);
+void InitMonPlaceChange(u8 a0);
+bool8 IsActiveItemMoving(void);
+bool8 IsCursorOnCloseBox(void);
+bool8 IsMonBeingMoved(void);
+void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos);
+void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos);
+void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos);
+void Item_TakeMons(u8 cursorArea, u8 cursorPos);
+void PrintItemDescription(void);
+void ReleaseMon(void);
+s8 RunCanReleaseMon(void);
+bool8 ScrollToBox(void);
+void SetMonMarkings(u8 markings);
+void SetMovingMonPriority(u8 priority);
+void SetUpScrollToBox(u8 targetBox);
+void SetWallpaperForCurrentBox(u8 wallpaper);
+bool8 TryStorePartyMonInBox(u8 boxId);
+void InitMenu(void);
+void SetMenuText(u8 textId);
+void sub_8095C84(u8 cursorArea, u8 cursorPos);
+void sub_8095E2C(u16 itemId);
#endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H
diff --git a/include/strings.h b/include/strings.h
index 06851c983..0b3e61dba 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1372,5 +1372,36 @@ extern const u8 gText_SeeYaDescription[];
extern const u8 gText_PartyFull[];
extern const u8 gText_JustOnePkmn[];
extern const u8 gText_Box[];
+extern const u8 gText_ExitFromBox[];
+extern const u8 gText_WhatDoYouWantToDo[];
+extern const u8 gText_PleasePickATheme[];
+extern const u8 gText_PickTheWallpaper[];
+extern const u8 gText_PkmnIsSelected[];
+extern const u8 gText_JumpToWhichBox[];
+extern const u8 gText_DepositInWhichBox[];
+extern const u8 gText_PkmnWasDeposited[];
+extern const u8 gText_BoxIsFull2[];
+extern const u8 gText_ReleaseThisPokemon[];
+extern const u8 gText_PkmnWasReleased[];
+extern const u8 gText_ByeByePkmn[];
+extern const u8 gText_MarkYourPkmn[];
+extern const u8 gText_ThatsYourLastPkmn[];
+extern const u8 gText_YourPartysFull[];
+extern const u8 gText_YoureHoldingAPkmn[];
+extern const u8 gText_WhichOneWillYouTake[];
+extern const u8 gText_YouCantReleaseAnEgg[];
+extern const u8 gText_ContinueBoxOperations[];
+extern const u8 gText_PkmnCameBack[];
+extern const u8 gText_WasItWorriedAboutYou[];
+extern const u8 gText_FourEllipsesExclamation[];
+extern const u8 gText_PleaseRemoveTheMail[];
+extern const u8 gText_PkmnIsSelected[];
+extern const u8 gText_GiveToAPkmn[];
+extern const u8 gText_PlacedItemInBag[];
+extern const u8 gText_BagIsFull2[];
+extern const u8 gText_PutItemInBag[];
+extern const u8 gText_ItemIsNowHeld[];
+extern const u8 gText_ChangedToNewItem[];
+extern const u8 gText_MailCantBeStored[];
#endif //GUARD_STRINGS_H
diff --git a/src/box_party_pokemon_dropdown.c b/src/box_party_pokemon_dropdown.c
index 2e0becdf9..b194777f3 100644
--- a/src/box_party_pokemon_dropdown.c
+++ b/src/box_party_pokemon_dropdown.c
@@ -3,7 +3,7 @@
#include "box_party_pokemon_dropdown.h"
#include "malloc.h"
-struct UnkStruct_203ABE4_Sub
+struct BPPD_MapRect
{
s16 destX;
s16 destY;
@@ -13,10 +13,10 @@ struct UnkStruct_203ABE4_Sub
s16 destY2;
};
-struct UnkStruct_203ABE4
+struct BPPD_Struct
{
- struct UnkStruct_203ABE4_Sub map1Rect;
- struct UnkStruct_203ABE4_Sub map2Rect;
+ struct BPPD_MapRect map1Rect;
+ struct BPPD_MapRect map2Rect;
const void * src1;
const void * src2;
u16 src1Height;
@@ -29,11 +29,11 @@ struct UnkStruct_203ABE4
bool8 bgUpdateScheduled;
};
-static EWRAM_DATA struct UnkStruct_203ABE4 * sBoxPartyPokemonDropdownPtr = NULL;
+static EWRAM_DATA struct BPPD_Struct * sBoxPartyPokemonDropdownPtr = NULL;
static EWRAM_DATA u16 sBoxPartyPokemonDropdownCount = 0;
-static void PushMap1(u8 a0);
-static void PushMap2(u8 a0);
+static void PushMap1(u8 idx);
+static void PushMap2(u8 idx);
static const struct {
u16 height;
@@ -55,7 +55,7 @@ static const struct {
void AllocBoxPartyPokemonDropdowns(u8 num)
{
u16 i;
- sBoxPartyPokemonDropdownPtr = Alloc(num * sizeof(struct UnkStruct_203ABE4));
+ sBoxPartyPokemonDropdownPtr = Alloc(num * sizeof(struct BPPD_Struct));
sBoxPartyPokemonDropdownCount = sBoxPartyPokemonDropdownPtr == NULL ? 0 : num;
for (i = 0; i < sBoxPartyPokemonDropdownCount; i++)
{
@@ -64,19 +64,19 @@ void AllocBoxPartyPokemonDropdowns(u8 num)
}
}
-void sub_80F7B2C(void)
+void FreeBoxPartyPokemonDropdowns(void)
{
Free(sBoxPartyPokemonDropdownPtr);
}
-void sub_80F7B40(void)
+void CopyAllBoxPartyPokemonDropdownsToVram(void)
{
int i;
for (i = 0; i < sBoxPartyPokemonDropdownCount; i++)
{
if (sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled == TRUE)
- sub_80F7E54(i);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(i);
}
}
@@ -112,12 +112,12 @@ void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void * src, u16 width
}
}
-void sub_80F7C7C(u8 a0, const void * a1)
+void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void * src)
{
- if (a0 < sBoxPartyPokemonDropdownCount)
+ if (idx < sBoxPartyPokemonDropdownCount)
{
- sBoxPartyPokemonDropdownPtr[a0].src1 = a1;
- sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE;
+ sBoxPartyPokemonDropdownPtr[idx].src1 = src;
+ sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
}
}
@@ -131,82 +131,82 @@ void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y)
}
}
-void sub_80F7CE8(u8 a0, u16 a1, u16 a2, u16 a3, u16 a4)
+void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height)
{
- if (a0 < sBoxPartyPokemonDropdownCount)
+ if (idx < sBoxPartyPokemonDropdownCount)
{
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX = a1;
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY = a2;
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.width = a3;
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.height = a4;
- sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = x;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = y;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height;
+ sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
}
}
-void sub_80F7D30(u8 a0, u8 a1, s8 a2)
+void AdjustBoxPartyPokemonDropdownPos(u8 idx, u8 op, s8 param)
{
- if (a0 < sBoxPartyPokemonDropdownCount)
+ if (idx < sBoxPartyPokemonDropdownCount)
{
- switch (a1)
+ switch (op)
{
- case 0:
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2 += a2;
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.width -= a2;
+ case BPPD_MOVE_INNER_LEFT:
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.width -= param;
break;
- case 1:
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX += a2;
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.width += a2;
+ case BPPD_MOVE_OUTER_LEFT:
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX += param;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.width += param;
break;
- case 2:
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 += a2;
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.height -= a2;
+ case BPPD_MOVE_INNER_TOP:
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.height -= param;
break;
- case 3:
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY -= a2;
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.height += a2;
+ case BPPD_MOVE_OUTER_TOP:
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY -= param;
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.height += param;
break;
- case 4:
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2 += a2;
+ case BPPD_MOVE_INNER_X:
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param;
break;
- case 5:
- sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 += a2;
+ case BPPD_MOVE_INNER_Y:
+ sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param;
break;
}
- sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE;
+ sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
}
}
-void sub_80F7E54(u8 a0)
+void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx)
{
- if (a0 < sBoxPartyPokemonDropdownCount)
+ if (idx < sBoxPartyPokemonDropdownCount)
{
- if (sBoxPartyPokemonDropdownPtr[a0].src1 != NULL)
- PushMap1(a0);
- PushMap2(a0);
- sBoxPartyPokemonDropdownPtr[a0].map1Rect = sBoxPartyPokemonDropdownPtr[a0].map2Rect;
+ if (sBoxPartyPokemonDropdownPtr[idx].src1 != NULL)
+ PushMap1(idx);
+ PushMap2(idx);
+ sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect;
}
}
-static void PushMap1(u8 a0)
+static void PushMap1(u8 idx)
{
int i;
- int r9 = sBoxPartyPokemonDropdownPtr[a0].mapSize * sBoxPartyPokemonDropdownPtr[a0].src1Height;
- const void * addr = sBoxPartyPokemonDropdownPtr[a0].src1 + r9 * sBoxPartyPokemonDropdownPtr[a0].map1Rect.destY2 + sBoxPartyPokemonDropdownPtr[a0].map1Rect.destX2 * sBoxPartyPokemonDropdownPtr[a0].mapSize;
- for (i = 0; i < sBoxPartyPokemonDropdownPtr[a0].map1Rect.height; i++)
+ int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src1Height;
+ const void * addr = sBoxPartyPokemonDropdownPtr[idx].src1 + run * sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2 * sBoxPartyPokemonDropdownPtr[idx].mapSize;
+ for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map1Rect.height; i++)
{
- CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[a0].bgId, addr, sBoxPartyPokemonDropdownPtr[a0].map1Rect.destX2, sBoxPartyPokemonDropdownPtr[a0].map1Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[a0].map1Rect.width, 1);
- addr += r9;
+ CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map1Rect.width, 1);
+ addr += run;
}
}
-static void PushMap2(u8 a0)
+static void PushMap2(u8 idx)
{
int i;
- int r9 = sBoxPartyPokemonDropdownPtr[a0].mapSize * sBoxPartyPokemonDropdownPtr[a0].src2Width;
- const void * addr = sBoxPartyPokemonDropdownPtr[a0].src2 + r9 * sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY + sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX * sBoxPartyPokemonDropdownPtr[a0].mapSize;
- for (i = 0; i < sBoxPartyPokemonDropdownPtr[a0].map2Rect.height; i++)
+ int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src2Width;
+ const void * addr = sBoxPartyPokemonDropdownPtr[idx].src2 + run * sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX * sBoxPartyPokemonDropdownPtr[idx].mapSize;
+ for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map2Rect.height; i++)
{
- CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[a0].bgId, addr, sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2, sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[a0].map2Rect.width, 1);
- addr += r9;
+ CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map2Rect.width, 1);
+ addr += run;
}
}
diff --git a/src/graphics.c b/src/graphics.c
index 69e804fd9..5a802cd35 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1247,10 +1247,10 @@ const u32 gUnknown_8E9BF48[] = INCBIN_U32("graphics/interface/link_rfu_status.4b
const u16 gUnknown_8E9C14C[] = INCBIN_U16("graphics/interface/pokedex_abc.gbapal");
const u32 gUnknown_8E9C16C[] = INCBIN_U32("graphics/interface/pokedex_abc.4bpp.lz");
-const u16 gUnknown_8E9C3D8[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal");
+const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal");
const u16 gUnknown_8E9C3F8[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal");
const u16 gUnknown_8E9C418[] = INCBIN_U16("graphics/interface/box_tiles_pal3.gbapal");
-const u32 gUnknown_8E9C438[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz");
+const u32 gPSSMenu_Gfx[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz");
const u32 gUnknown_8E9CAEC[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz");
diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c
index 8cf2e1953..3378bcef5 100644
--- a/src/pokemon_storage_system_3.c
+++ b/src/pokemon_storage_system_3.c
@@ -1,6 +1,10 @@
#include "global.h"
#include "gflib.h"
#include "box_party_pokemon_dropdown.h"
+#include "data.h"
+#include "decompress.h"
+#include "dynamic_placeholder_text_util.h"
+#include "graphics.h"
#include "help_system.h"
#include "item.h"
#include "item_menu.h"
@@ -11,6 +15,8 @@
#include "pc_screen_effect.h"
#include "pokemon_storage_system_internal.h"
#include "pokemon_summary_screen.h"
+#include "quest_log.h"
+#include "strings.h"
#include "task.h"
#include "text_window.h"
#include "constants/items.h"
@@ -56,104 +62,297 @@ void Cb_OnCloseBoxPressed(u8 taskId);
void Cb_OnBPressed(u8 taskId);
void Cb_ChangeScreen(u8 taskId);
void GiveChosenBagItem(void);
-void sub_80920FC(bool8 a0);
-void sub_8094D14(u8 a0);
-void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos);
-void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos);
-void Item_TakeMons(u8 cursorArea, u8 cursorPos);
-void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos);
-u8 GetBoxCursorPosition(void);
-void PrintCursorMonInfo(void);
-void InitMonPlaceChange(u8 a0);
-bool8 DoMonPlaceChange(void);
-void SetUpDoShowPartyMenu(void);
-bool8 DoShowPartyMenu(void);
-bool8 InitPSSWindows(void);
+void FreePSSData(void);
+void SetScrollingBackground(void);
+void ScrollBackground(void);
void LoadPSSMenuGfx(void);
+bool8 InitPSSWindows(void);
void LoadWaveformSpritePalette(void);
-void SetScrollingBackground(void);
-void SetMonMarkings(u8 markings);
-void AddWallpaperSetsMenu(void);
-void sub_8095024(void);
-void AddWallpapersMenu(u8 wallpaperSet);
-void SetWallpaperForCurrentBox(u8 wallpaper);
-bool8 DoWallpaperGfxChange(void);
-void sub_808EFC8(void);
void sub_808F078(void);
-bool8 sub_808F258(void);
+void sub_808F0F4(void);
+void sub_808F164(void);
+void RefreshCursorMonData(void);
+void BoxSetMosaic(void);
+void SpriteCB_CursorMon_Mosaic(struct Sprite * sprite);
+bool8 BoxGetMosaic(void);
+void LoadCursorMonSprite(void);
+void LoadCursorMonGfx(u16 species, u32 pid);
+void PrintCursorMonInfo(void);
+void sub_808F5E8(void);
void sub_808F68C(void);
+void SetUpHidePartyMenu(void);
+bool8 HidePartyMenu(void);
+void sub_808F90C(bool8 species);
void sub_808F948(void);
void sub_808F974(void);
void sub_808F99C(void);
+void sub_808F9FC(void);
+void sub_808FA30(u8 pos, bool8 isPartyMon);
+void sub_808FAA8(void);
+void SetUpDoShowPartyMenu(void);
+bool8 DoShowPartyMenu(void);
void sub_808FB68(void);
+void PrintStorageActionText(u8 textId);
+void ShowYesNoWindow(s8 species);
+void ClearBottomWindow(void);
+void AddWallpaperSetsMenu(void);
+void AddWallpapersMenu(u8 wallpaperSet);
void sub_808FDFC(void);
-void sub_808FE54(u8 a0);
+void sub_808FE54(u8 species);
+bool8 IsCursorOnBox(void);
+void sub_808FF70(void);
void sub_808FFAC(void);
-void sub_80913DC(u8 box);
-bool8 sub_809140C(void);
-void SetUpHidePartyMenu(void);
-bool8 HidePartyMenu(void);
-void sub_80922C0(void);
-void sub_8092340(void);
-void sub_8092B3C(u8 a0);
-void sub_8092B50(void);
-u8 sub_8092B70(void);
-void sub_8093660(void);
-void sub_80937B4(void);
-bool8 sub_8095050(void);
-void sub_8095B5C(void);
-void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2);
-void sub_8096BF8(void);
-void BoxSetMosaic(void);
-bool8 CanMovePartyMon(void);
-bool8 CanShiftMon(void);
-void ClearBottomWindow(void);
-u8 HandleInput(void);
-bool8 IsCursorOnCloseBox(void);
-bool8 IsMonBeingMoved(void);
-void PrintStorageActionText(u8 textId);
-bool8 ScrollToBox(void);
-void SetUpScrollToBox(u8 targetBox);
-bool8 sub_80924A8(void);
-void sub_8092F54(void);
-void sub_8094D60(void);
-void sub_8094D84(void);
-void sub_80950BC(u8 a0);
-bool8 sub_80950D0(void);
-bool8 sub_809610C(void);
-bool8 IsActiveItemMoving(void);
-void AddMenu(void);
-bool8 sub_8094F90(void);
-s16 sub_8094F94(void);
-void sub_8092B5C(void);
-void SetMovingMonPriority(u8 priority);
-void sub_808FAA8(void);
-bool8 TryStorePartyMonInBox(u8 boxId);
+void CreatePartyMonsSprites(bool8 species);
void sub_80909F4(void);
bool8 sub_8090A60(void);
-void sub_8093174(void);
-void ShowYesNoWindow(u8 a0);
-void InitCanReleaseMonVars(void);
-void sub_8093194(void);
-s8 RunCanReleaseMon(void);
-bool8 sub_80931EC(void);
-void ReleaseMon(void);
-void RefreshCursorMonData(void);
+void sub_8090B98(s16 yDelta);
+void DestroyAllPartyMonIcons(void);
void sub_8091114(void);
bool8 sub_8091150(void);
-void sub_8093264(void);
-void PrintItemDescription(void);
-void sub_80966F4(void);
-bool8 sub_8096728(void);
-bool8 sub_80967C0(void);
-void sub_8096088(void);
-void sub_8093630(void);
-void sub_80936B8(void);
-void sub_808FF70(void);
-u16 GetMovingItem(void);
-void FreePSSData(void);
+void sub_80913DC(u8 box);
+bool8 sub_809140C(void);
+void sub_80920FC(bool8 species);
+
+const u32 gPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/interface/pss_unk_83CE438.4bpp.lz");
+const u32 gPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE4D0.bin.lz");
+const u16 gPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/interface/pss_unk_83CE5DC.gbapal");
+const u32 gUnknown_83CE5FC[] = INCBIN_U32("graphics/interface/pss_unk_83CE5FC.bin.lz");
+
+const u16 gUnknown_83CE6F8[] = {
+ 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108,
+ 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118,
+ 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108,
+ 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118,
+};
+
+const u16 gUnknown_83CE738[] = INCBIN_U16("graphics/interface/pss_unk_83CE738.gbapal");
+const u16 gUnknown_83CE758[] = INCBIN_U16("graphics/interface/pss_unk_83CE758.gbapal");
+
+const u16 gUnknown_83CE778[] = {
+ 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174,
+ 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182, 0x0183, 0x0184,
+ 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d,
+ 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x018d,
+};
-extern const u16 gUnknown_83CE6F8[];
+const u16 gUnknown_83CE7C0[] = {
+ 0x1140, 0x1141, 0x1141, 0x1142,
+ 0x1150, 0x1151, 0x1151, 0x1152,
+ 0x1160, 0x1161, 0x1161, 0x1162,
+};
+
+const u16 gUnknown_83CE7D8[] = {
+ 0x1143, 0x1144, 0x1144, 0x1145,
+ 0x1153, 0x1154, 0x1154, 0x1155,
+ 0x1163, 0x1164, 0x1164, 0x1165,
+};
+
+const u16 gUnknown_83CE7F0[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.gbapal");
+const u16 gUnknown_83CE810[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.4bpp");
+const u16 gUnknown_83CE9D0[] = INCBIN_U16("graphics/interface/pss_unk_83CE9D0.gbapal");
+const u16 gUnknown_83CEA10[] = INCBIN_U16("graphics/interface/pss_unk_83CEA10.gbapal");
+
+const struct WindowTemplate gUnknown_83CEA30[] = {
+ {
+ .bg = 1,
+ .tilemapLeft = 0,
+ .tilemapTop = 11,
+ .width = 9,
+ .height = 7,
+ .paletteNum = 3,
+ .baseBlock = 0x0c0
+ }, {
+ .bg = 0,
+ .tilemapLeft = 11,
+ .tilemapTop = 17,
+ .width = 18,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x014
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 12,
+ .width = 25,
+ .height = 8,
+ .paletteNum = 15,
+ .baseBlock = 0x014
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const struct BgTemplate gUnknown_83CEA50[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x100
+ }, {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 27,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+const struct SpritePalette gWaveformSpritePalette = {
+ gUnknown_83CE7F0, TAG_PAL_WAVEFORM
+};
+
+const struct SpriteSheet gWaveformSpriteSheet = {
+ gUnknown_83CE810, 0x01c0, TAG_TILE_WAVEFORM
+};
+
+const struct OamData gUnknown_83CEB88;
+
+const struct SpriteTemplate sSpriteTemplate_CursorMon = {
+ .tileTag = TAG_TILE_2,
+ .paletteTag = TAG_PAL_DAC6,
+ .oam = &gUnknown_83CEB88,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+const struct StorageAction gPCStorageActionTexts[] = {
+ [PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, PC_TEXT_FMT_MON_NAME_1},
+ [PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, PC_TEXT_FMT_MON_NAME_1},
+ [PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, PC_TEXT_FMT_MON_NAME_4},
+ [PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, PC_TEXT_FMT_MON_NAME_6},
+ [PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, PC_TEXT_FMT_MON_NAME_1},
+ [PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, PC_TEXT_FMT_ITEM_NAME},
+ [PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, PC_TEXT_FMT_ITEM_NAME},
+ [PC_TEXT_BAG_FULL] = {gText_BagIsFull2, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, PC_TEXT_FMT_NORMAL},
+ [PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, PC_TEXT_FMT_ITEM_NAME},
+ [PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, PC_TEXT_FMT_ITEM_NAME},
+ [PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, PC_TEXT_FMT_NORMAL},
+};
+
+// Yes/No menu
+const struct WindowTemplate sYesNoWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 24,
+ .tilemapTop = 11,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x05c
+};
+
+const struct OamData gUnknown_83CEB88 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0x000,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+// Waveform
+
+const struct OamData gUnknown_83CEB90 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0x000,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+const union AnimCmd gUnknown_83CEB98[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_83CEBA0[] = {
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gUnknown_83CEBB0[] = {
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_83CEBB8[] = {
+ ANIMCMD_FRAME(10, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gUnknown_83CEBC8[] = {
+ gUnknown_83CEB98,
+ gUnknown_83CEBA0,
+ gUnknown_83CEBB0,
+ gUnknown_83CEBB8
+};
+
+const struct SpriteTemplate sSpriteTemplate_Waveform = {
+ .tileTag = TAG_TILE_WAVEFORM,
+ .paletteTag = TAG_PAL_WAVEFORM,
+ .oam = &gUnknown_83CEB90,
+ .anims = gUnknown_83CEBC8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
void VblankCb_PSS(void)
{
@@ -168,7 +367,7 @@ void Cb2_PSS(void)
{
RunTasks();
DoScheduledBgTilemapCopiesToVram();
- sub_808EFC8();
+ ScrollBackground();
sub_808F99C();
AnimateSprites();
BuildOamBuffer();
@@ -237,7 +436,7 @@ void sub_808CF10(void)
AllocBoxPartyPokemonDropdowns(3);
SetBoxPartyPokemonDropdownMap2(0, 1, gUnknown_83CE6F8, 8, 4);
SetBoxPartyPokemonDropdownMap2Pos(0, 1, 0);
- sPSSData->unk_02C7 = 0;
+ sPSSData->unk_02C7 = FALSE;
}
void sub_808CF94(void)
@@ -716,7 +915,7 @@ void Cb_OnSelectedMon(u8 taskId)
switch (sPSSData->state)
{
case 0:
- if (!sub_808F258())
+ if (!BoxGetMosaic())
{
PlaySE(SE_SELECT);
if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
@@ -1900,3 +2099,678 @@ void GiveChosenBagItem(void)
RemoveBagItem(item, 1);
}
}
+
+void FreePSSData(void)
+{
+ FreeBoxPartyPokemonDropdowns();
+ sub_80950A4();
+ FREE_AND_SET_NULL(sPSSData);
+ FreeAllWindowBuffers();
+}
+
+// ******************************************************************
+// Graphics util
+// ******************************************************************
+
+void SetScrollingBackground(void)
+{
+ SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31));
+ DecompressAndLoadBgGfxUsingHeap(3, gPokemonStorageScrollingBGTileset, 0, 0, 0);
+ LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)BG_SCREEN_ADDR(31));
+}
+
+void ScrollBackground(void)
+{
+ ChangeBgX(3, 128, 1);
+ ChangeBgY(3, 128, 2);
+}
+
+void LoadPSSMenuGfx(void)
+{
+ InitBgsFromTemplates(0, gUnknown_83CEA50, NELEMS(gUnknown_83CEA50));
+ DecompressAndLoadBgGfxUsingHeap(1, gPSSMenu_Gfx, 0, 0, 0);
+ LZ77UnCompWram(gUnknown_83CE5FC, sPSSData->field_5AC4);
+ SetBgTilemapBuffer(1, sPSSData->field_5AC4);
+ ShowBg(1);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+bool8 InitPSSWindows(void)
+{
+ if (!InitWindows(gUnknown_83CEA30))
+ {
+ return FALSE;
+ }
+ else
+ {
+ DeactivateAllTextPrinters();
+ return TRUE;
+ }
+}
+
+void LoadWaveformSpritePalette(void)
+{
+ LoadSpritePalette(&gWaveformSpritePalette);
+}
+
+void sub_808F078(void)
+{
+ LoadPalette(gUnknown_8E9C3F8, 0, 0x20);
+ LoadPalette(gUnknown_8E9C418, 0x20, 0x20);
+ LoadPalette(gUnknown_83CEA10, 0xF0, 0x20);
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ LoadPalette(gUnknown_83CE738, 0x30, 0x20);
+ else
+ LoadPalette(gUnknown_83CE758, 0x30, 0x20);
+
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30));
+ LoadCursorMonSprite();
+ sub_808F0F4();
+ sub_808F164();
+ RefreshCursorMonData();
+}
+
+void sub_808F0F4(void)
+{
+ sPSSData->field_D94 = CreateMonMarkingSprite_AllOff(TAG_TILE_10, TAG_PAL_DAC8, NULL);
+ sPSSData->field_D94->oam.priority = 1;
+ sPSSData->field_D94->subpriority = 1;
+ sPSSData->field_D94->pos1.x = 40;
+ sPSSData->field_D94->pos1.y = 150;
+ sPSSData->field_DA0 = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10);
+}
+
+void sub_808F164(void)
+{
+ u16 i;
+ struct SpriteSheet sheet = gWaveformSpriteSheet;
+
+ LoadSpriteSheet(&sheet);
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&sSpriteTemplate_Waveform, i * 63 + 8, 9, 2);
+ sPSSData->field_D98[i] = &gSprites[spriteId];
+ }
+}
+
+void RefreshCursorMonData(void)
+{
+ LoadCursorMonGfx(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality);
+ PrintCursorMonInfo();
+ sub_808F5E8();
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void BoxSetMosaic(void)
+{
+ RefreshCursorMonData();
+ if (sPSSData->cursorMonSprite)
+ {
+ sPSSData->cursorMonSprite->oam.mosaic = TRUE;
+ sPSSData->cursorMonSprite->data[0] = 10;
+ sPSSData->cursorMonSprite->data[1] = 1;
+ sPSSData->cursorMonSprite->callback = SpriteCB_CursorMon_Mosaic;
+ SetGpuReg(REG_OFFSET_MOSAIC, (sPSSData->cursorMonSprite->data[0] << 12) | (sPSSData->cursorMonSprite->data[0] << 8));
+ }
+}
+
+u8 BoxGetMosaic(void)
+{
+ return sPSSData->cursorMonSprite->oam.mosaic;
+}
+
+void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite)
+{
+ sprite->data[0] -= sprite->data[1];
+ if (sprite->data[0] < 0)
+ sprite->data[0] = 0;
+ SetGpuReg(REG_OFFSET_MOSAIC, (sprite->data[0] << 12) | (sprite->data[0] << 8));
+ if (sprite->data[0] == 0)
+ {
+ sprite->oam.mosaic = FALSE;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void LoadCursorMonSprite(void)
+{
+ u16 i;
+ u16 tileStart;
+ u8 palSlot;
+ u8 spriteId;
+ struct SpriteSheet sheet = {sPSSData->field_22C4, 0x800, TAG_TILE_2};
+ struct SpritePalette palette = {sPSSData->field_2244, TAG_PAL_DAC6};
+ struct SpriteTemplate template = sSpriteTemplate_CursorMon;
+
+ for (i = 0; i < 0x800; i++)
+ sPSSData->field_22C4[i] = 0;
+ for (i = 0; i < 0x10; i++)
+ sPSSData->field_2244[i] = 0;
+
+ sPSSData->cursorMonSprite = NULL;
+
+ do
+ {
+ tileStart = LoadSpriteSheet(&sheet);
+ if (tileStart == 0)
+ break;
+
+ palSlot = LoadSpritePalette(&palette);
+ if (palSlot == 0xFF)
+ break;
+
+ spriteId = CreateSprite(&template, 40, 48, 0);
+ if (spriteId == MAX_SPRITES)
+ break;
+
+ sPSSData->cursorMonSprite = &gSprites[spriteId];
+ sPSSData->field_223A = palSlot * 16 + 0x100;
+ sPSSData->field_223C = (void *)OBJ_VRAM0 + tileStart * 32;
+ } while (0);
+
+ if (sPSSData->cursorMonSprite == NULL)
+ {
+ FreeSpriteTilesByTag(TAG_TILE_2);
+ FreeSpritePaletteByTag(TAG_PAL_DAC6);
+ }
+}
+
+void LoadCursorMonGfx(u16 species, u32 pid)
+{
+ if (sPSSData->cursorMonSprite == NULL)
+ return;
+
+ if (species != SPECIES_NONE)
+ {
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], sPSSData->field_22C4, species, pid);
+ LZ77UnCompWram(sPSSData->cursorMonPalette, sPSSData->field_2244);
+ CpuCopy32(sPSSData->field_22C4, sPSSData->field_223C, 0x800);
+ LoadPalette(sPSSData->field_2244, sPSSData->field_223A, 0x20);
+ sPSSData->cursorMonSprite->invisible = FALSE;
+ }
+ else
+ {
+ sPSSData->cursorMonSprite->invisible = TRUE;
+ }
+}
+
+void PrintCursorMonInfo(void)
+{
+ u16 i;
+ u16 y;
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ {
+ for (i = 0, y = 0; i < 3; i++, y += 14)
+ {
+ AddTextPrinterParameterized(0, 2, sPSSData->cursorMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SPEED_FF, NULL);
+ }
+ AddTextPrinterParameterized(0, 0, sPSSData->cursorMonTexts[3], 6, y + 2, TEXT_SPEED_FF, NULL);
+ }
+ else
+ {
+ AddTextPrinterParameterized(0, 0, sPSSData->cursorMonTexts[3], 6, 0, TEXT_SPEED_FF, NULL);
+ for (i = 0, y = 15; i < 3; i++, y += 14)
+ {
+ AddTextPrinterParameterized(0, 2, sPSSData->cursorMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SPEED_FF, NULL);
+ }
+ }
+
+ CopyWindowToVram(0, 2);
+ if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ {
+ sub_80BEBD0(sPSSData->cursorMonMarkings, sPSSData->field_DA0);
+ sPSSData->field_D94->invisible = FALSE;
+ }
+ else
+ {
+ sPSSData->field_D94->invisible = TRUE;
+ }
+}
+
+void sub_808F5E8(void)
+{
+ u16 i;
+
+ if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ {
+ SetBoxPartyPokemonDropdownMap2Rect(0, 0, 0, 8, 2);
+ for (i = 0; i < 2; i++)
+ StartSpriteAnimIfDifferent(sPSSData->field_D98[i], i * 2 + 1);
+ }
+ else
+ {
+ SetBoxPartyPokemonDropdownMap2Rect(0, 0, 2, 8, 2);
+ for (i = 0; i < 2; i++)
+ StartSpriteAnim(sPSSData->field_D98[i], i * 2);
+ }
+
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(0);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+void sub_808F68C(void)
+{
+ LZ77UnCompWram(gUnknown_8E9CAEC, sPSSData->field_B0);
+ LoadPalette(gPSSMenu_Pal, 0x10, 0x20);
+ SetBoxPartyPokemonDropdownMap2(1, 1, sPSSData->field_B0, 12, 22);
+ SetBoxPartyPokemonDropdownMap2(2, 1, gUnknown_83CE778, 9, 4);
+ SetBoxPartyPokemonDropdownMap2Pos(1, 10, 0);
+ SetBoxPartyPokemonDropdownMap2Pos(2, 21, 0);
+ sub_808F9FC();
+ if (sInPartyMenu)
+ {
+ sub_808F90C(TRUE);
+ CreatePartyMonsSprites(TRUE);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
+ }
+ else
+ {
+ SetBoxPartyPokemonDropdownMap2Rect(1, 0, 20, 12, 2);
+ sub_808F90C(TRUE);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2);
+ }
+
+ ScheduleBgCopyTilemapToVram(1);
+ sPSSData->unk_02C7 = FALSE;
+}
+
+void SetUpShowPartyMenu(void)
+{
+ sPSSData->field_2C0 = 20;
+ sPSSData->field_2C2 = 2;
+ sPSSData->field_2C5 = 0;
+ CreatePartyMonsSprites(FALSE);
+}
+
+bool8 ShowPartyMenu(void)
+{
+ if (sPSSData->field_2C5 == 20)
+ return FALSE;
+
+ sPSSData->field_2C0--;
+ sPSSData->field_2C2++;
+ AdjustBoxPartyPokemonDropdownPos(1, 3, 1);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
+ ScheduleBgCopyTilemapToVram(1);
+ sub_8090B98(8);
+ if (++sPSSData->field_2C5 == 20)
+ {
+ sInPartyMenu = TRUE;
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+void SetUpHidePartyMenu(void)
+{
+ sPSSData->field_2C0 = 0;
+ sPSSData->field_2C2 = 22;
+ sPSSData->field_2C5 = 0;
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ sub_80960C0();
+}
+
+bool8 HidePartyMenu(void)
+{
+ if (sPSSData->field_2C5 != 20)
+ {
+ sPSSData->field_2C0++;
+ sPSSData->field_2C2--;
+ AdjustBoxPartyPokemonDropdownPos(1, 3, -1);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
+ FillBgTilemapBufferRect_Palette0(1, 0x100, 10, sPSSData->field_2C2, 12, 1);
+ sub_8090B98(-8);
+ if (++sPSSData->field_2C5 != 20)
+ {
+ ScheduleBgCopyTilemapToVram(1);
+ return TRUE;
+ }
+ else
+ {
+ sInPartyMenu = FALSE;
+ DestroyAllPartyMonIcons();
+ CompactPartySlots();
+ SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2);
+ ScheduleBgCopyTilemapToVram(1);
+ return FALSE;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_808F90C(bool8 arg0)
+{
+ if (arg0)
+ SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2);
+ else
+ SetBoxPartyPokemonDropdownMap2Rect(2, 0, 2, 9, 2);
+
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+void sub_808F948(void)
+{
+ sPSSData->unk_02C7 = TRUE;
+ sPSSData->unk_02C8 = 30;
+ sPSSData->unk_02C9 = TRUE;
+}
+
+void sub_808F974(void)
+{
+ if (sPSSData->unk_02C7)
+ {
+ sPSSData->unk_02C7 = FALSE;
+ sub_808F90C(TRUE);
+ }
+}
+
+void sub_808F99C(void)
+{
+ if (sPSSData->unk_02C7 && ++sPSSData->unk_02C8 > 30)
+ {
+ sPSSData->unk_02C8 = 0;
+ sPSSData->unk_02C9 = (sPSSData->unk_02C9 == FALSE);
+ sub_808F90C(sPSSData->unk_02C9);
+ }
+}
+
+void sub_808F9FC(void)
+{
+ u8 i;
+
+ for (i = 1; i < PARTY_SIZE; i++)
+ {
+ s32 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ sub_808FA30(i, (species != SPECIES_NONE));
+ }
+}
+
+void sub_808FA30(u8 pos, bool8 isPartyMon)
+{
+ u16 i, j, index;
+ const u16 *data;
+
+ if (isPartyMon)
+ data = gUnknown_83CE7C0;
+ else
+ data = gUnknown_83CE7D8;
+
+ index = 3 * (3 * (pos - 1) + 1);
+ index *= 4;
+ index += 7;
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ sPSSData->field_B0[index + j] = data[j];
+ }
+ data += 4;
+ index += 12;
+ }
+}
+
+void sub_808FAA8(void)
+{
+ sub_808F9FC();
+ SetBoxPartyPokemonDropdownMap2Rect(1, 0, 0, 12, 22);
+ CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+void SetUpDoShowPartyMenu(void)
+{
+ sPSSData->showPartyMenuState = 0;
+ PlaySE(SE_WIN_OPEN);
+ SetUpShowPartyMenu();
+}
+
+bool8 DoShowPartyMenu(void)
+{
+ switch (sPSSData->showPartyMenuState)
+ {
+ case 0:
+ if (!ShowPartyMenu())
+ {
+ sub_8092AE4();
+ sPSSData->showPartyMenuState++;
+ }
+ break;
+ case 1:
+ if (!sub_80924A8())
+ {
+ if (sPSSData->setMosaic)
+ BoxSetMosaic();
+ sPSSData->showPartyMenuState++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_808FB68(void)
+{
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29));
+ TextWindow_SetStdFrame0_WithPal(1, 2, 208);
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
+ CopyBgTilemapBufferToVram(0);
+}
+
+void PrintStorageActionText(u8 id)
+{
+ u8 *txtPtr;
+
+ DynamicPlaceholderTextUtil_Reset();
+ switch (gPCStorageActionTexts[id].format)
+ {
+ case PC_TEXT_FMT_NORMAL:
+ break;
+ case PC_TEXT_FMT_MON_NAME_1:
+ case PC_TEXT_FMT_MON_NAME_2:
+ case PC_TEXT_FMT_MON_NAME_3:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->cursorMonNick);
+ break;
+ case PC_TEXT_FMT_MON_NAME_4:
+ case PC_TEXT_FMT_MON_NAME_5:
+ case PC_TEXT_FMT_MON_NAME_6:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->field_21E0);
+ break;
+ case PC_TEXT_FMT_ITEM_NAME:
+ if (IsActiveItemMoving())
+ txtPtr = StringCopy(sPSSData->itemName, GetMovingItemName());
+ else
+ txtPtr = StringCopy(sPSSData->itemName, sPSSData->cursorMonTexts[3]);
+
+ while (*(txtPtr - 1) == CHAR_SPACE)
+ txtPtr--;
+
+ *txtPtr = EOS;
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->itemName);
+ break;
+ }
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(sPSSData->field_2190, gPCStorageActionTexts[id].text);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ AddTextPrinterParameterized(1, 1, sPSSData->field_2190, 0, 2, TEXT_SPEED_FF, NULL);
+ DrawTextBorderOuter(1, 2, 13);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 2);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void ShowYesNoWindow(s8 cursorPos)
+{
+ CreateYesNoMenu(&sYesNoWindowTemplate, 1, 0, 2, 0x00b, 14, 1);
+ Menu_MoveCursorNoWrapAround(cursorPos);
+}
+
+void ClearBottomWindow(void)
+{
+ ClearStdWindowAndFrameToTransparent(1, FALSE);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void AddWallpaperSetsMenu(void)
+{
+ InitMenu();
+ SetMenuText(18);
+ SetMenuText(19);
+ SetMenuText(20);
+ SetMenuText(21);
+ AddMenu();
+}
+void AddWallpapersMenu(u8 wallpaperSet)
+{
+ InitMenu();
+ switch (wallpaperSet)
+ {
+ case 0:
+ SetMenuText(22);
+ SetMenuText(23);
+ SetMenuText(24);
+ SetMenuText(25);
+ break;
+ case 1:
+ SetMenuText(26);
+ SetMenuText(27);
+ SetMenuText(28);
+ SetMenuText(29);
+ break;
+ case 2:
+ SetMenuText(30);
+ SetMenuText(31);
+ SetMenuText(32);
+ SetMenuText(33);
+ break;
+ case 3:
+ SetMenuText(34);
+ SetMenuText(35);
+ SetMenuText(36);
+ SetMenuText(37);
+ break;
+ }
+ AddMenu();
+}
+
+u8 GetCurrentBoxOption(void)
+{
+ return sCurrentBoxOption;
+}
+
+void sub_808FDFC(void)
+{
+ if (!IsCursorOnBox())
+ {
+ if (sInPartyMenu)
+ sub_8095C84(CURSOR_AREA_IN_PARTY, GetBoxCursorPosition());
+ else
+ sub_8095C84(CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
+ }
+
+ if (gUnknown_20397BA != ITEM_NONE)
+ {
+ sub_8095E2C(gUnknown_20397BA);
+ sub_8094D14(3);
+ }
+}
+
+void sub_808FE54(u8 action)
+{
+ u16 event;
+ u8 fromBox = sub_8094D34();
+ u16 species = sPSSData->cursorMonSpecies;
+ u16 species2;
+ u8 toBox;
+ struct PssQuestLogBuffer * qlogBuffer;
+ if (sInPartyMenu)
+ {
+ toBox = 14;
+ species2 = GetMonData(&gPlayerParty[GetBoxCursorPosition()], MON_DATA_SPECIES2);
+ }
+ else
+ {
+ toBox = StorageGetCurrentBox();
+ species2 = GetCurrentBoxMonData(GetBoxCursorPosition(), MON_DATA_SPECIES2);
+ }
+ qlogBuffer = &sPSSData->qlogBuffer;
+
+ switch (action)
+ {
+ default:
+ return;
+ case 0:
+ if (sInPartyMenu)
+ {
+ if (fromBox == 14)
+ return;
+ else
+ event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON;
+ }
+ else
+ {
+ if (fromBox == 14)
+ // Should upmerge but doesn't
+ event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON;
+ else
+ event = fromBox != toBox ? QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES : QL_EVENT_SWITCHED_MONS_WITHIN_BOX;
+ }
+ qlogBuffer->species = species;
+ qlogBuffer->species2 = species2;
+ qlogBuffer->fromBox = fromBox;
+ qlogBuffer->toBox = toBox;
+ break;
+ case 1:
+ qlogBuffer->species = species;
+ qlogBuffer->species2 = SPECIES_NONE;
+ qlogBuffer->fromBox = fromBox;
+ qlogBuffer->toBox = 0xFF;
+ if (sInPartyMenu)
+ {
+ if (fromBox == 14)
+ return;
+ else
+ event = QL_EVENT_WITHDREW_MON_PC;
+ }
+ else
+ {
+ if (fromBox == 14)
+ {
+ event = QL_EVENT_DEPOSITED_MON_PC;
+ qlogBuffer->fromBox = toBox;
+ }
+ else if (fromBox != toBox)
+ {
+ event = QL_EVENT_MOVED_MON_BETWEEN_BOXES;
+ qlogBuffer->toBox = toBox;
+ }
+ else
+ event = QL_EVENT_MOVED_MON_WITHIN_BOX;
+ }
+ break;
+ case 2:
+ event = QL_EVENT_DEPOSITED_MON_PC;
+ qlogBuffer->species = species;
+ qlogBuffer->species2 = SPECIES_NONE;
+ qlogBuffer->fromBox = gUnknown_20397B6;
+ qlogBuffer->toBox = 0xFF;
+ break;
+ case 3:
+ event = QL_EVENT_SWITCHED_MULTIPLE_MONS;
+ qlogBuffer->species = SPECIES_NONE;
+ qlogBuffer->species2 = SPECIES_NONE;
+ qlogBuffer->fromBox = fromBox;
+ qlogBuffer->toBox = toBox;
+ break;
+ }
+ SetQuestLogEvent(event, (const void *)qlogBuffer);
+}
diff --git a/src/strings.c b/src/strings.c
index ee67c6dae..751d1e7bd 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -601,36 +601,36 @@ const u8 gString_BattleRecords_4Dashes[] = _("----");
const u8 gFameCheckerText_FameCheckerWillBeClosed[] = _("The FAME CHECKER will be closed.");
const u8 gFameCheckerText_ClearTextbox[] = _("\n ");
const u8 gUnknown_8418204[] = _("やめる");
-const u8 gUnknown_8418208[] = _("Exit from the BOX.");
-const u8 gUnknown_841821B[] = _("What do you want to do?");
-const u8 gUnknown_8418233[] = _("Please pick a theme.");
-const u8 gUnknown_8418248[] = _("Pick the wallpaper.");
-const u8 gUnknown_841825C[] = _("{DYNAMIC 0x00} is selected.");
-const u8 gUnknown_841826C[] = _("Jump to which BOX?");
-const u8 gUnknown_841827F[] = _("Deposit in which BOX?");
-const u8 gUnknown_8418295[] = _("{DYNAMIC 0x00} was deposited.");
-const u8 gUnknown_84182A7[] = _("The BOX is full.");
-const u8 gUnknown_84182B8[] = _("Release this POKéMON?");
-const u8 gUnknown_84182CE[] = _("{DYNAMIC 0x00} was released.");
-const u8 gUnknown_84182DF[] = _("Bye-bye, {DYNAMIC 0x00}!");
-const u8 gUnknown_84182EC[] = _("Mark your POKéMON.");
-const u8 gUnknown_84182FF[] = _("That's your last POKéMON!");
-const u8 gUnknown_8418319[] = _("Your party's full!");
-const u8 gUnknown_841832C[] = _("You're holding a POKéMON!");
-const u8 gUnknown_8418346[] = _("Which one will you take?");
-const u8 gUnknown_841835F[] = _("You can't release an EGG.");
-const u8 gUnknown_8418379[] = _("Continue BOX operations?");
-const u8 gUnknown_8418392[] = _("{DYNAMIC 0x00} came back!");
-const u8 gUnknown_84183A0[] = _("Was it worried about you?");
-const u8 gUnknown_84183BA[] = _("‥ ‥ ‥ ‥ ‥!");
-const u8 gUnknown_84183C5[] = _("Please remove the MAIL.");
-const u8 gUnknown_84183DD[] = _("GIVE to a POKéMON?");
-const u8 gUnknown_84183F0[] = _("Placed item in the BAG.");
-const u8 gUnknown_8418408[] = _("The BAG is full.");
-const u8 gUnknown_8418419[] = _("Put this item in the BAG?");
-const u8 gUnknown_8418433[] = _("{DYNAMIC 0x00} is now held.");
-const u8 gUnknown_8418443[] = _("Changed to {DYNAMIC 0x00}.");
-const u8 gUnknown_8418452[] = _("MAIL can't be stored!");
+const u8 gText_ExitFromBox[] = _("Exit from the BOX.");
+const u8 gText_WhatDoYouWantToDo[] = _("What do you want to do?");
+const u8 gText_PleasePickATheme[] = _("Please pick a theme.");
+const u8 gText_PickTheWallpaper[] = _("Pick the wallpaper.");
+const u8 gText_PkmnIsSelected[] = _("{DYNAMIC 0x00} is selected.");
+const u8 gText_JumpToWhichBox[] = _("Jump to which BOX?");
+const u8 gText_DepositInWhichBox[] = _("Deposit in which BOX?");
+const u8 gText_PkmnWasDeposited[] = _("{DYNAMIC 0x00} was deposited.");
+const u8 gText_BoxIsFull2[] = _("The BOX is full.");
+const u8 gText_ReleaseThisPokemon[] = _("Release this POKéMON?");
+const u8 gText_PkmnWasReleased[] = _("{DYNAMIC 0x00} was released.");
+const u8 gText_ByeByePkmn[] = _("Bye-bye, {DYNAMIC 0x00}!");
+const u8 gText_MarkYourPkmn[] = _("Mark your POKéMON.");
+const u8 gText_ThatsYourLastPkmn[] = _("That's your last POKéMON!");
+const u8 gText_YourPartysFull[] = _("Your party's full!");
+const u8 gText_YoureHoldingAPkmn[] = _("You're holding a POKéMON!");
+const u8 gText_WhichOneWillYouTake[] = _("Which one will you take?");
+const u8 gText_YouCantReleaseAnEgg[] = _("You can't release an EGG.");
+const u8 gText_ContinueBoxOperations[] = _("Continue BOX operations?");
+const u8 gText_PkmnCameBack[] = _("{DYNAMIC 0x00} came back!");
+const u8 gText_WasItWorriedAboutYou[] = _("Was it worried about you?");
+const u8 gText_FourEllipsesExclamation[] = _("‥ ‥ ‥ ‥ ‥!");
+const u8 gText_PleaseRemoveTheMail[] = _("Please remove the MAIL.");
+const u8 gText_GiveToAPkmn[] = _("GIVE to a POKéMON?");
+const u8 gText_PlacedItemInBag[] = _("Placed item in the BAG.");
+const u8 gText_BagIsFull2[] = _("The BAG is full.");
+const u8 gText_PutItemInBag[] = _("Put this item in the BAG?");
+const u8 gText_ItemIsNowHeld[] = _("{DYNAMIC 0x00} is now held.");
+const u8 gText_ChangedToNewItem[] = _("Changed to {DYNAMIC 0x00}.");
+const u8 gText_MailCantBeStored[] = _("MAIL can't be stored!");
const u8 gUnknown_8418468[] = _("CANCEL");
const u8 gUnknown_841846F[] = _("STORE");
const u8 gUnknown_8418475[] = _("WITHDRAW");