summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-14 13:50:15 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-14 13:52:50 -0400
commit5f7738672ac9b3aa6a7836bc222d60acf7e32f54 (patch)
treefaa17507f8953e356f8e9aa83ce78078b6a0c366
parent6753e18db06fc6636b768bfaae41a68ec8660abf (diff)
through sub_809223C
-rw-r--r--asm/pokemon_storage_system.s2364
-rw-r--r--data/pokemon_storage_system.s213
-rw-r--r--include/pokemon_icon.h2
-rw-r--r--include/pokemon_storage_system.h2
-rw-r--r--include/pokemon_storage_system_internal.h20
-rw-r--r--src/pokemon_storage_system_3.c856
6 files changed, 868 insertions, 2589 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index b789c20a8..4985ec0b0 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,2370 +5,6 @@
.text
- thumb_func_start sub_8091084
-sub_8091084: @ 8091084
- push {lr}
- ldr r0, _080910AC @ =sPSSData
- ldr r0, [r0]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0]
- cmp r1, 0
- beq _080910A6
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- movs r0, 0x4
- ands r0, r2
- cmp r0, 0
- beq _080910B0
-_080910A6:
- movs r0, 0
- b _080910C6
- .align 2, 0
-_080910AC: .4byte sPSSData
-_080910B0:
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080910C4
- movs r0, 0x4
- orrs r0, r2
- strb r0, [r3]
-_080910C4:
- movs r0, 0x1
-_080910C6:
- pop {r1}
- bx r1
- thumb_func_end sub_8091084
-
- thumb_func_start sub_80910CC
-sub_80910CC: @ 80910CC
- push {r4,lr}
- ldr r4, _08091110 @ =sPSSData
- ldr r0, [r4]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _08091108
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldr r0, [r4]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- ldr r0, [r0]
- ldr r0, [r0]
- bl DestroyBoxMonIcon
- ldr r0, [r4]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0
- str r0, [r1]
-_08091108:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08091110: .4byte sPSSData
- thumb_func_end sub_80910CC
-
- thumb_func_start sub_8091114
-sub_8091114: @ 8091114
- push {lr}
- ldr r3, _0809114C @ =sPSSData
- ldr r0, [r3]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _08091148
- adds r2, r0, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- ldr r0, [r0]
- ldr r0, [r0]
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_08091148:
- pop {r0}
- bx r0
- .align 2, 0
-_0809114C: .4byte sPSSData
- thumb_func_end sub_8091114
-
- thumb_func_start sub_8091150
-sub_8091150: @ 8091150
- push {lr}
- ldr r0, _08091168 @ =sPSSData
- ldr r0, [r0]
- movs r1, 0xB0
- lsls r1, 4
- adds r2, r0, r1
- ldr r0, [r2]
- cmp r0, 0
- bne _0809116C
- movs r0, 0
- b _08091180
- .align 2, 0
-_08091168: .4byte sPSSData
-_0809116C:
- ldr r0, [r0]
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0809117E
- movs r0, 0
- str r0, [r2]
-_0809117E:
- movs r0, 0x1
-_08091180:
- pop {r1}
- bx r1
- thumb_func_end sub_8091150
-
- thumb_func_start SetMovingMonPriority
-SetMovingMonPriority: @ 8091184
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080911A8 @ =sPSSData
- ldr r1, [r1]
- ldr r2, _080911AC @ =0x00000a68
- adds r1, r2
- ldr r3, [r1]
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r3, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x5]
- bx lr
- .align 2, 0
-_080911A8: .4byte sPSSData
-_080911AC: .4byte 0x00000a68
- thumb_func_end SetMovingMonPriority
-
- thumb_func_start sub_80911B0
-sub_80911B0: @ 80911B0
- ldr r1, _080911D0 @ =sPSSData
- ldr r1, [r1]
- movs r2, 0xCB
- lsls r2, 4
- adds r1, r2
- ldr r2, [r1]
- ldrh r2, [r2, 0x20]
- strh r2, [r0, 0x20]
- ldr r2, [r1]
- ldrh r1, [r2, 0x26]
- ldrh r2, [r2, 0x22]
- adds r1, r2
- adds r1, 0x4
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080911D0: .4byte sPSSData
- thumb_func_end sub_80911B0
-
- thumb_func_start sub_80911D4
-sub_80911D4: @ 80911D4
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r4, 0
- ldr r1, _0809123C @ =sPSSData
- ldr r0, [r1]
- ldr r2, _08091240 @ =0x00000b54
- adds r0, r2
- ldrh r0, [r0]
- adds r2, r1, 0
- cmp r0, r3
- beq _08091208
- adds r6, r2, 0
- ldr r5, _08091240 @ =0x00000b54
-_080911F0:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x27
- bhi _08091208
- ldr r0, [r6]
- lsls r1, r4, 1
- adds r0, r5
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r3
- bne _080911F0
-_08091208:
- cmp r4, 0x28
- bne _08091248
- movs r4, 0
- ldr r0, [r2]
- ldr r5, _08091240 @ =0x00000b54
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, 0
- beq _08091234
- adds r6, r2, 0
-_0809121C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x27
- bhi _08091234
- ldr r0, [r6]
- lsls r1, r4, 1
- adds r0, r5
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809121C
-_08091234:
- cmp r4, 0x28
- bne _08091248
- ldr r0, _08091244 @ =0x0000ffff
- b _0809127A
- .align 2, 0
-_0809123C: .4byte sPSSData
-_08091240: .4byte 0x00000b54
-_08091244: .4byte 0x0000ffff
-_08091248:
- ldr r1, [r2]
- lsls r2, r4, 1
- ldr r5, _08091280 @ =0x00000b54
- adds r0, r1, r5
- adds r0, r2
- strh r3, [r0]
- ldr r0, _08091284 @ =0x00000b04
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r4, 20
- lsrs r4, 16
- adds r0, r3, 0
- movs r1, 0x1
- bl GetMonIconTiles
- lsls r1, r4, 5
- ldr r2, _08091288 @ =0x06010000
- adds r1, r2
- ldr r2, _0809128C @ =0x04000080
- bl CpuSet
- adds r0, r4, 0
-_0809127A:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08091280: .4byte 0x00000b54
-_08091284: .4byte 0x00000b04
-_08091288: .4byte 0x06010000
-_0809128C: .4byte 0x04000080
- thumb_func_end sub_80911D4
-
- thumb_func_start sub_8091290
-sub_8091290: @ 8091290
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- movs r3, 0
- ldr r6, _080912C4 @ =sPSSData
-_0809129A:
- ldr r1, [r6]
- lsls r2, r3, 1
- ldr r4, _080912C8 @ =0x00000b54
- adds r0, r1, r4
- adds r4, r0, r2
- ldrh r0, [r4]
- cmp r0, r5
- bne _080912D0
- ldr r0, _080912CC @ =0x00000b04
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _080912DA
- strh r0, [r4]
- b _080912DA
- .align 2, 0
-_080912C4: .4byte sPSSData
-_080912C8: .4byte 0x00000b54
-_080912CC: .4byte 0x00000b04
-_080912D0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x27
- bls _0809129A
-_080912DA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8091290
-
- thumb_func_start CreateMonIconSprite
-CreateMonIconSprite: @ 80912E0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x18]
- lsls r3, 16
- lsrs r3, 16
- mov r8, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r9, r5
- mov r2, sp
- ldr r0, _08091390 @ =gUnknown_83CEBF0
- ldm r0!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldm r0!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- adds r0, r6, 0
- bl GetIconSpecies
- mov r10, r0
- mov r6, r10
- mov r2, sp
- ldr r1, _08091394 @ =gMonIconPaletteIndices
- adds r1, r6, r1
- ldr r3, _08091398 @ =0x0000dac0
- adds r0, r3, 0
- ldrb r1, [r1]
- adds r0, r1
- strh r0, [r2, 0x2]
- adds r0, r6, 0
- bl sub_80911D4
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- ldr r0, _0809139C @ =0x0000ffff
- cmp r5, r0
- beq _080913B2
- ldr r7, [sp, 0x18]
- lsls r1, r7, 16
- asrs r1, 16
- mov r0, r8
- lsls r2, r0, 16
- asrs r2, 16
- mov r0, sp
- mov r3, r9
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080913AC
- ldr r1, _080913A0 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldr r2, _080913A4 @ =0x000003ff
- ands r2, r5
- ldrh r3, [r0, 0x4]
- ldr r1, _080913A8 @ =0xfffffc00
- ands r1, r3
- orrs r1, r2
- strh r1, [r0, 0x4]
- movs r1, 0x3
- ands r4, r1
- lsls r3, r4, 2
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r3
- strb r1, [r0, 0x5]
- mov r1, r10
- strh r1, [r0, 0x2E]
- b _080913B4
- .align 2, 0
-_08091390: .4byte gUnknown_83CEBF0
-_08091394: .4byte gMonIconPaletteIndices
-_08091398: .4byte 0x0000dac0
-_0809139C: .4byte 0x0000ffff
-_080913A0: .4byte gSprites
-_080913A4: .4byte 0x000003ff
-_080913A8: .4byte 0xfffffc00
-_080913AC:
- adds r0, r6, 0
- bl sub_8091290
-_080913B2:
- movs r0, 0
-_080913B4:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CreateMonIconSprite
-
- thumb_func_start DestroyBoxMonIcon
-DestroyBoxMonIcon: @ 80913C4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- bl sub_8091290
- adds r0, r4, 0
- bl DestroySprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end DestroyBoxMonIcon
-
- thumb_func_start sub_80913DC
-sub_80913DC: @ 80913DC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08091404 @ =sub_8091420
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08091408 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xC]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08091404: .4byte sub_8091420
-_08091408: .4byte gTasks
- thumb_func_end sub_80913DC
-
- thumb_func_start sub_809140C
-sub_809140C: @ 809140C
- push {lr}
- ldr r0, _0809141C @ =sub_8091420
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0809141C: .4byte sub_8091420
- thumb_func_end sub_809140C
-
- thumb_func_start sub_8091420
-sub_8091420: @ 8091420
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _08091444 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bhi _08091504
- lsls r0, 2
- ldr r1, _08091448 @ =_0809144C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08091444: .4byte gTasks
-_08091448: .4byte _0809144C
- .align 2, 0
-_0809144C:
- .4byte _08091460
- .4byte _08091498
- .4byte _080914CC
- .4byte _080914D6
- .4byte _080914FC
-_08091460:
- ldr r1, _0809148C @ =sPSSData
- ldr r0, [r1]
- ldr r2, _08091490 @ =0x000002d2
- adds r0, r2
- movs r2, 0
- strb r2, [r0]
- ldr r1, [r1]
- movs r3, 0xB3
- lsls r3, 2
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, _08091494 @ =0x00004abc
- adds r1, r0
- movs r2, 0x80
- lsls r2, 5
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- strh r0, [r4, 0xA]
- b _08091508
- .align 2, 0
-_0809148C: .4byte sPSSData
-_08091490: .4byte 0x000002d2
-_08091494: .4byte 0x00004abc
-_08091498:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- bl CheckForSpaceForDma3Request
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0809150E
- ldr r0, _080914C4 @ =sPSSData
- ldr r1, [r0]
- ldr r2, _080914C8 @ =0x00004abc
- adds r1, r2
- movs r0, 0x2
- bl SetBgTilemapBuffer
- movs r0, 0x2
- bl ShowBg
- b _08091508
- .align 2, 0
-_080914C4: .4byte sPSSData
-_080914C8: .4byte 0x00004abc
-_080914CC:
- ldrb r0, [r4, 0xC]
- movs r1, 0
- bl sub_8091850
- b _08091508
-_080914D6:
- bl sub_809196C
- cmp r0, 0
- beq _0809150E
- ldrb r0, [r4, 0xC]
- bl sub_8091A94
- bl sub_8091F80
- ldrb r0, [r4, 0xC]
- bl sub_80900D4
- ldr r1, _080914F8 @ =0x00005b0a
- movs r0, 0xC
- bl SetGpuReg
- b _08091508
- .align 2, 0
-_080914F8: .4byte 0x00005b0a
-_080914FC:
- adds r0, r2, 0
- bl DestroyTask
- b _08091508
-_08091504:
- movs r0, 0
- b _0809150C
-_08091508:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
-_0809150C:
- strh r0, [r4, 0x8]
-_0809150E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8091420
-
- thumb_func_start SetUpScrollToBox
-SetUpScrollToBox: @ 8091514
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- adds r0, r4, 0
- bl sub_80916F4
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r5, _080915D8 @ =sPSSData
- ldr r2, [r5]
- lsls r0, r6, 24
- asrs r3, r0, 24
- movs r0, 0x6
- negs r0, r0
- adds r1, r0, 0
- cmp r3, 0
- ble _08091540
- movs r1, 0x6
-_08091540:
- ldr r7, _080915DC @ =0x000002ce
- adds r0, r2, r7
- strh r1, [r0]
- movs r1, 0x2
- cmp r3, 0
- ble _0809154E
- movs r1, 0x1
-_0809154E:
- ldr r7, _080915E0 @ =0x000002d3
- adds r0, r2, r7
- strb r1, [r0]
- ldr r2, [r5]
- movs r0, 0xB4
- lsls r0, 2
- adds r1, r2, r0
- movs r0, 0x20
- strh r0, [r1]
- movs r1, 0xB5
- lsls r1, 2
- adds r0, r2, r1
- strb r4, [r0]
- ldr r2, [r5]
- movs r1, 0
- cmp r3, 0
- bgt _08091572
- movs r1, 0x5
-_08091572:
- ldr r4, _080915E4 @ =0x000002d6
- adds r0, r2, r4
- strh r1, [r0]
- movs r7, 0xB6
- lsls r7, 2
- adds r0, r2, r7
- strh r3, [r0]
- movs r1, 0x38
- cmp r3, 0
- ble _0809158C
- movs r0, 0x84
- lsls r0, 1
- adds r1, r0, 0
-_0809158C:
- ldr r4, _080915E8 @ =0x000002da
- adds r0, r2, r4
- strh r1, [r0]
- movs r1, 0
- cmp r3, 0
- bgt _0809159A
- movs r1, 0x5
-_0809159A:
- movs r7, 0xB7
- lsls r7, 2
- adds r0, r2, r7
- strh r1, [r0]
- ldr r0, _080915EC @ =0x000002de
- adds r1, r2, r0
- movs r0, 0
- strh r0, [r1]
- movs r3, 0xB8
- lsls r3, 2
- adds r1, r2, r3
- movs r0, 0x2
- strh r0, [r1]
- ldr r4, _080915F0 @ =0x00000a64
- adds r0, r2, r4
- mov r7, r8
- strb r7, [r0]
- ldr r0, [r5]
- ldr r1, _080915F4 @ =0x00000a65
- adds r0, r1
- strb r6, [r0]
- ldr r0, [r5]
- ldr r3, _080915F8 @ =0x00000a63
- adds r0, r3
- movs r1, 0
- strb r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080915D8: .4byte sPSSData
-_080915DC: .4byte 0x000002ce
-_080915E0: .4byte 0x000002d3
-_080915E4: .4byte 0x000002d6
-_080915E8: .4byte 0x000002da
-_080915EC: .4byte 0x000002de
-_080915F0: .4byte 0x00000a64
-_080915F4: .4byte 0x00000a65
-_080915F8: .4byte 0x00000a63
- thumb_func_end SetUpScrollToBox
-
- thumb_func_start ScrollToBox
-ScrollToBox: @ 80915FC
- push {r4-r6,lr}
- ldr r4, _08091618 @ =sPSSData
- ldr r1, [r4]
- ldr r5, _0809161C @ =0x00000a63
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08091644
- cmp r0, 0x1
- bgt _08091620
- cmp r0, 0
- beq _08091626
- b _080916D4
- .align 2, 0
-_08091618: .4byte sPSSData
-_0809161C: .4byte 0x00000a63
-_08091620:
- cmp r0, 0x2
- beq _08091694
- b _080916D4
-_08091626:
- ldr r2, _08091688 @ =0x00000a64
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- bl sub_8091850
- ldr r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08091644:
- bl sub_809196C
- cmp r0, 0
- beq _080916E2
- ldr r6, _0809168C @ =sPSSData
- ldr r1, [r6]
- ldr r4, _08091688 @ =0x00000a64
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r5, _08091690 @ =0x00000a65
- adds r1, r5
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- bl sub_8090574
- ldr r1, [r6]
- adds r4, r1, r4
- ldrb r0, [r4]
- adds r1, r5
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- bl sub_8091C48
- ldr r0, [r6]
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_809200C
- b _080916D4
- .align 2, 0
-_08091688: .4byte 0x00000a64
-_0809168C: .4byte sPSSData
-_08091690: .4byte 0x00000a65
-_08091694:
- bl sub_809062C
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, [r4]
- movs r4, 0xB4
- lsls r4, 2
- adds r3, r2, r4
- ldrh r0, [r3]
- cmp r0, 0
- beq _080916D0
- movs r0, 0xB3
- lsls r0, 2
- adds r1, r2, r0
- subs r4, 0x2
- adds r0, r2, r4
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- ldrh r0, [r3]
- subs r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- cmp r0, 0
- bne _080916E2
- bl sub_8091E34
- bl sub_80920AC
-_080916D0:
- adds r0, r5, 0
- b _080916E4
-_080916D4:
- ldr r0, _080916EC @ =sPSSData
- ldr r1, [r0]
- ldr r4, _080916F0 @ =0x00000a63
- adds r1, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080916E2:
- movs r0, 0x1
-_080916E4:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080916EC: .4byte sPSSData
-_080916F0: .4byte 0x00000a63
- thumb_func_end ScrollToBox
-
- thumb_func_start sub_80916F4
-sub_80916F4: @ 80916F4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl StorageGetCurrentBox
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0
- cmp r1, r4
- beq _0809171E
-_08091708:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xD
- bls _08091714
- movs r1, 0
-_08091714:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r1, r4
- bne _08091708
-_0809171E:
- movs r0, 0x1
- negs r0, r0
- cmp r2, 0x6
- bhi _08091728
- movs r0, 0x1
-_08091728:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80916F4
-
- thumb_func_start SetWallpaperForCurrentBox
-SetWallpaperForCurrentBox: @ 8091730
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl StorageGetCurrentBox
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl SetBoxWallpaper
- ldr r0, _08091758 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _0809175C @ =0x00000a62
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08091758: .4byte sPSSData
-_0809175C: .4byte 0x00000a62
- thumb_func_end SetWallpaperForCurrentBox
-
- thumb_func_start DoWallpaperGfxChange
-DoWallpaperGfxChange: @ 8091760
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _08091780 @ =sPSSData
- ldr r0, [r1]
- ldr r2, _08091784 @ =0x00000a62
- adds r0, r2
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x4
- bhi _08091844
- lsls r0, 2
- ldr r1, _08091788 @ =_0809178C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08091780: .4byte sPSSData
-_08091784: .4byte 0x00000a62
-_08091788: .4byte _0809178C
- .align 2, 0
-_0809178C:
- .4byte _080917A0
- .4byte _080917C8
- .4byte _080917E2
- .4byte _0809181C
- .4byte _08091840
-_080917A0:
- ldr r0, [r4]
- movs r1, 0xE7
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080917C0 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- ldr r2, _080917C4 @ =0x00000a62
- adds r1, r2
- b _0809182E
- .align 2, 0
-_080917C0: .4byte 0x0000ffff
-_080917C4: .4byte 0x00000a62
-_080917C8:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08091844
- bl StorageGetCurrentBox
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8091850
- b _08091826
-_080917E2:
- bl sub_809196C
- cmp r0, 0x1
- bne _08091844
- bl sub_8091EF0
- ldr r4, _08091810 @ =sPSSData
- ldr r0, [r4]
- movs r1, 0xE7
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08091814 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- ldr r2, _08091818 @ =0x00000a62
- adds r1, r2
- b _0809182E
- .align 2, 0
-_08091810: .4byte sPSSData
-_08091814: .4byte 0x0000ffff
-_08091818: .4byte 0x00000a62
-_0809181C:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08091844
-_08091826:
- ldr r0, _08091838 @ =sPSSData
- ldr r1, [r0]
- ldr r0, _0809183C @ =0x00000a62
- adds r1, r0
-_0809182E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08091844
- .align 2, 0
-_08091838: .4byte sPSSData
-_0809183C: .4byte 0x00000a62
-_08091840:
- movs r0, 0
- b _08091846
-_08091844:
- movs r0, 0x1
-_08091846:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end DoWallpaperGfxChange
-
- thumb_func_start sub_8091850
-sub_8091850: @ 8091850
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r4, _08091904 @ =sPSSData
- ldr r2, [r4]
- ldr r3, _08091908 @ =0x000006f9
- adds r2, r3
- movs r3, 0
- strb r3, [r2]
- ldr r2, [r4]
- ldr r3, _0809190C @ =0x000006fa
- adds r2, r3
- strb r0, [r2]
- ldr r0, [r4]
- ldr r2, _08091910 @ =0x000006fb
- adds r0, r2
- strb r1, [r0]
- ldr r1, [r4]
- adds r2, r1, r2
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0
- beq _08091896
- movs r3, 0
- ldr r0, _08091914 @ =0x000002d2
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0
- bne _0809188A
- movs r3, 0x1
-_0809188A:
- strb r3, [r2]
- ldr r0, [r4]
- ldr r1, _08091918 @ =0x00004abc
- adds r0, r1
- bl sub_8091A24
-_08091896:
- ldr r6, _08091904 @ =sPSSData
- ldr r0, [r6]
- ldr r2, _0809190C @ =0x000006fa
- adds r0, r2
- ldrb r0, [r0]
- bl GetBoxWallpaper
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, _0809191C @ =gUnknown_83D2A10
- adds r7, r1, r0
- ldr r0, [r7, 0x4]
- ldr r1, [r6]
- ldr r5, _08091920 @ =0x00000792
- adds r1, r5
- bl LZ77UnCompWram
- ldr r1, [r6]
- ldr r3, _08091918 @ =0x00004abc
- adds r0, r1, r3
- adds r5, r1, r5
- ldr r4, _08091910 @ =0x000006fb
- adds r2, r1, r4
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- ldr r3, _08091914 @ =0x000002d2
- adds r1, r3
- ldrb r3, [r1]
- adds r1, r5, 0
- bl sub_8091984
- ldr r1, [r6]
- adds r4, r1, r4
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0
- beq _08091924
- ldr r0, [r7, 0x8]
- ldr r2, _08091914 @ =0x000002d2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 21
- movs r3, 0x80
- lsls r3, 15
- adds r1, r3
- lsrs r1, 16
- movs r2, 0x40
- bl LoadPalette
- b _08091938
- .align 2, 0
-_08091904: .4byte sPSSData
-_08091908: .4byte 0x000006f9
-_0809190C: .4byte 0x000006fa
-_08091910: .4byte 0x000006fb
-_08091914: .4byte 0x000002d2
-_08091918: .4byte 0x00004abc
-_0809191C: .4byte gUnknown_83D2A10
-_08091920: .4byte 0x00000792
-_08091924:
- ldr r0, [r7, 0x8]
- ldr r2, _08091960 @ =0x000002d2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 6
- ldr r2, _08091964 @ =gPlttBufferUnfaded + 0x80
- adds r1, r2
- movs r2, 0x20
- bl CpuSet
-_08091938:
- ldr r1, [r7]
- ldr r0, _08091968 @ =sPSSData
- ldr r0, [r0]
- ldr r3, _08091960 @ =0x000002d2
- adds r0, r3
- ldrb r3, [r0]
- lsls r3, 8
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- bl DecompressAndLoadBgGfxUsingHeap
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08091960: .4byte 0x000002d2
-_08091964: .4byte gPlttBufferUnfaded + 0x80
-_08091968: .4byte sPSSData
- thumb_func_end sub_8091850
-
- thumb_func_start sub_809196C
-sub_809196C: @ 809196C
- push {lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809197E
- movs r0, 0x1
- b _08091980
-_0809197E:
- movs r0, 0
-_08091980:
- pop {r1}
- bx r1
- thumb_func_end sub_809196C
-
- thumb_func_start sub_8091984
-sub_8091984: @ 8091984
- push {r4-r7,lr}
- sub sp, 0x24
- lsls r3, 24
- lsrs r3, 24
- lsls r5, r3, 17
- ldr r0, _080919F0 @ =sPSSData
- ldr r0, [r0]
- movs r4, 0xB3
- lsls r4, 2
- adds r0, r4
- ldrh r4, [r0]
- lsrs r4, 3
- adds r4, 0xA
- lsls r2, 24
- asrs r7, r2, 24
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- adds r6, r4, r0
- movs r0, 0x3F
- ands r6, r0
- movs r4, 0x14
- str r4, [sp]
- movs r2, 0x12
- str r2, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x2
- str r0, [sp, 0xC]
- str r4, [sp, 0x10]
- str r2, [sp, 0x14]
- movs r0, 0x11
- str r0, [sp, 0x18]
- lsls r3, 24
- asrs r3, 16
- str r3, [sp, 0x1C]
- movs r0, 0xC0
- lsls r0, 10
- adds r5, r0
- asrs r5, 16
- str r5, [sp, 0x20]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyRectToBgTilemapBufferRect
- cmp r7, 0
- beq _08091A16
- cmp r7, 0
- ble _080919F4
- lsls r0, r6, 16
- movs r1, 0xA0
- lsls r1, 13
- adds r0, r1
- b _080919FA
- .align 2, 0
-_080919F0: .4byte sPSSData
-_080919F4:
- lsls r0, r6, 16
- ldr r4, _08091A20 @ =0xfffc0000
- adds r0, r4
-_080919FA:
- lsrs r6, r0, 16
- lsls r2, r6, 24
- lsrs r2, 24
- movs r0, 0x4
- str r0, [sp]
- movs r0, 0x12
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect
-_08091A16:
- add sp, 0x24
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08091A20: .4byte 0xfffc0000
- thumb_func_end sub_8091984
-
- thumb_func_start sub_8091A24
-sub_8091A24: @ 8091A24
- push {r4-r6,lr}
- adds r2, r0, 0
- ldr r0, _08091A50 @ =sPSSData
- ldr r0, [r0]
- movs r1, 0xB3
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- lsrs r0, 3
- adds r3, r0, 0
- adds r3, 0x1E
- movs r0, 0x3F
- ands r3, r0
- adds r0, r3, 0
- cmp r0, 0x1F
- bgt _08091A54
- lsls r0, 1
- movs r6, 0x98
- lsls r6, 3
- adds r0, r6
- b _08091A5C
- .align 2, 0
-_08091A50: .4byte sPSSData
-_08091A54:
- lsls r0, 1
- movs r1, 0xC8
- lsls r1, 4
- adds r0, r1
-_08091A5C:
- adds r2, r0
- movs r0, 0
- movs r5, 0
- movs r4, 0x3F
-_08091A64:
- strh r5, [r2]
- adds r2, 0x2
- adds r3, 0x1
- ands r3, r4
- adds r1, r3, 0
- cmp r1, 0
- bne _08091A76
- ldr r6, _08091A90 @ =0xfffff7c0
- adds r2, r6
-_08091A76:
- cmp r1, 0x20
- bne _08091A80
- movs r1, 0xF8
- lsls r1, 3
- adds r2, r1
-_08091A80:
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2B
- bls _08091A64
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08091A90: .4byte 0xfffff7c0
- thumb_func_end sub_8091A24
-
- thumb_func_start sub_8091A94
-sub_8091A94: @ 8091A94
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _08091C1C @ =sPSSData
- mov r10, r1
- ldr r1, [r1]
- movs r2, 0xBE
- lsls r2, 2
- adds r0, r1, r2
- str r0, [sp, 0x28]
- mov r3, sp
- adds r3, 0x28
- str r3, [sp, 0x30]
- ldr r0, _08091C20 @ =0x00030200
- str r0, [r3, 0x4]
- ldr r4, _08091C24 @ =0x000006fc
- adds r1, r4
- str r1, [sp, 0x18]
- add r0, sp, 0x1C
- ldr r7, _08091C28 @ =0x0000dac9
- strh r7, [r0]
- add r0, sp, 0x20
- movs r1, 0
- movs r2, 0x8
- bl memset
- add r1, sp, 0x18
- add r0, sp, 0x8
- movs r2, 0x10
- bl memcpy
- mov r0, r8
- bl GetBoxWallpaper
- lsls r0, 24
- mov r5, r10
- ldr r4, [r5]
- ldr r2, _08091C2C @ =gUnknown_83D29D0
- lsrs r0, 22
- adds r1, r0, r2
- ldrh r3, [r1]
- movs r5, 0xE3
- lsls r5, 3
- adds r1, r4, r5
- strh r3, [r1]
- adds r2, 0x2
- adds r0, r2
- ldrh r0, [r0]
- ldr r1, _08091C30 @ =0x0000071a
- adds r4, r1
- strh r0, [r4]
- add r0, sp, 0x8
- bl LoadSpritePalettes
- mov r2, r10
- ldr r0, [r2]
- movs r6, 0xE7
- lsls r6, 3
- adds r0, r6
- movs r1, 0xFC
- lsls r1, 2
- str r1, [r0]
- adds r0, r7, 0
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- mov r4, r10
- ldr r3, [r4]
- lsls r1, r0, 4
- movs r5, 0x87
- lsls r5, 1
- mov r9, r5
- add r1, r9
- ldr r4, _08091C34 @ =0x0000071c
- adds r2, r3, r4
- strh r1, [r2]
- adds r3, r6
- movs r5, 0x80
- lsls r5, 9
- adds r1, r5, 0
- lsls r1, r0
- ldr r0, [r3]
- orrs r0, r1
- str r0, [r3]
- adds r0, r7, 0
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- mov r1, r10
- ldr r4, [r1]
- lsls r1, r0, 4
- add r1, r9
- ldr r3, _08091C38 @ =0x0000071e
- adds r2, r4, r3
- strh r1, [r2]
- adds r6, r4, r6
- lsls r5, r0
- ldr r0, [r6]
- orrs r0, r5
- str r0, [r6]
- ldr r5, _08091C3C @ =0x000021a8
- adds r4, r5
- mov r0, r8
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x8
- bl StringCopyPadded
- mov r4, r10
- ldr r0, [r4]
- adds r5, r0, r5
- movs r2, 0xBE
- lsls r2, 2
- adds r1, r0, r2
- movs r3, 0x9F
- lsls r3, 3
- adds r0, r3
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0
- bl DrawTextWindowAndBufferTiles
- ldr r0, [sp, 0x30]
- bl LoadSpriteSheet
- mov r0, r8
- bl GetBoxNamePtr
- bl sub_8091F60
- movs r4, 0
- lsls r0, 16
- asrs r6, r0, 16
-_08091BBC:
- lsls r1, r4, 5
- adds r1, r6, r1
- lsls r1, 16
- asrs r1, 16
- ldr r0, _08091C40 @ =gUnknown_83D2B7C
- movs r2, 0x1C
- movs r3, 0x18
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r5, _08091C1C @ =sPSSData
- ldr r2, [r5]
- lsls r0, r4, 2
- movs r3, 0xE4
- lsls r3, 3
- adds r2, r3
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08091C44 @ =gSprites
- adds r0, r1
- str r0, [r2]
- lsls r1, r4, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _08091BBC
- ldr r0, [r5]
- movs r4, 0xDF
- lsls r4, 3
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08091C1C: .4byte sPSSData
-_08091C20: .4byte 0x00030200
-_08091C24: .4byte 0x000006fc
-_08091C28: .4byte 0x0000dac9
-_08091C2C: .4byte gUnknown_83D29D0
-_08091C30: .4byte 0x0000071a
-_08091C34: .4byte 0x0000071c
-_08091C38: .4byte 0x0000071e
-_08091C3C: .4byte 0x000021a8
-_08091C40: .4byte gUnknown_83D2B7C
-_08091C44: .4byte gSprites
- thumb_func_end sub_8091A94
-
- thumb_func_start sub_8091C48
-sub_8091C48: @ 8091C48
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x2C]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r4, _08091CC4 @ =sPSSData
- ldr r2, [r4]
- movs r1, 0xBE
- lsls r1, 2
- adds r0, r2, r1
- str r0, [sp, 0x20]
- add r3, sp, 0x20
- ldr r5, _08091CC8 @ =0x0000ffff
- mov r12, r5
- movs r6, 0xC0
- lsls r6, 10
- mov r9, r6
- ldr r0, _08091CCC @ =0x00030200
- str r0, [r3, 0x4]
- add r1, sp, 0x8
- ldr r0, _08091CD0 @ =gUnknown_83D2B7C
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- movs r1, 0
- movs r5, 0xDF
- lsls r5, 3
- adds r2, r5
- ldrb r0, [r2]
- mov r8, r4
- adds r6, r3, 0
- cmp r0, 0
- bne _08091C9C
- movs r1, 0x1
-_08091C9C:
- strb r1, [r2]
- mov r7, r8
- ldr r0, [r7]
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _08091CD8
- ldr r0, [r6, 0x4]
- mov r1, r12
- ands r0, r1
- mov r2, r9
- orrs r0, r2
- str r0, [r6, 0x4]
- ldr r0, [r7]
- ldr r3, _08091CD4 @ =0x0000071c
- adds r0, r3
- ldrh r0, [r0]
- mov r9, r0
- b _08091CFC
- .align 2, 0
-_08091CC4: .4byte sPSSData
-_08091CC8: .4byte 0x0000ffff
-_08091CCC: .4byte 0x00030200
-_08091CD0: .4byte gUnknown_83D2B7C
-_08091CD4: .4byte 0x0000071c
-_08091CD8:
- ldr r0, [r6, 0x4]
- mov r5, r12
- ands r0, r5
- movs r1, 0x80
- lsls r1, 11
- orrs r0, r1
- str r0, [r6, 0x4]
- mov r7, r8
- ldr r0, [r7]
- ldr r1, _08091E18 @ =0x0000071c
- adds r0, r1
- ldrh r0, [r0]
- mov r9, r0
- add r1, sp, 0x8
- movs r0, 0x4
- strh r0, [r1]
- ldr r0, _08091E1C @ =0x0000dac9
- strh r0, [r1, 0x2]
-_08091CFC:
- mov r2, r8
- ldr r4, [r2]
- ldr r5, _08091E20 @ =0x000021a8
- adds r4, r5
- ldr r0, [sp, 0x2C]
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x8
- bl StringCopyPadded
- mov r3, r8
- ldr r0, [r3]
- adds r5, r0, r5
- movs r7, 0xBE
- lsls r7, 2
- adds r1, r0, r7
- movs r2, 0x9F
- lsls r2, 3
- adds r0, r2
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0
- bl DrawTextWindowAndBufferTiles
- adds r0, r6, 0
- bl LoadSpriteSheet
- ldr r0, [sp, 0x2C]
- bl GetBoxWallpaper
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _08091E24 @ =gUnknown_83D29D0
- adds r0, r1
- mov r1, r9
- movs r2, 0x4
- bl LoadPalette
- ldr r0, [sp, 0x2C]
- bl GetBoxNamePtr
- bl sub_8091F60
- lsls r0, 16
- mov r3, r10
- lsls r2, r3, 24
- asrs r2, 24
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 6
- lsrs r5, r0, 16
- str r5, [sp, 0x28]
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- movs r7, 0
- mov r9, r8
- negs r2, r2
- mov r8, r2
-_08091D82:
- lsls r6, r7, 5
- mov r0, r10
- lsls r1, r0, 16
- asrs r1, 16
- adds r1, r6
- lsls r1, 16
- asrs r1, 16
- add r0, sp, 0x8
- movs r2, 0x1C
- movs r3, 0x18
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r1, r9
- ldr r2, [r1]
- lsls r5, r7, 2
- movs r3, 0xE5
- lsls r3, 3
- adds r2, r3
- adds r2, r5
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08091E28 @ =gSprites
- adds r1, r0
- str r1, [r2]
- mov r0, r8
- lsls r4, r0, 1
- add r4, r8
- lsls r4, 1
- strh r4, [r1, 0x2E]
- ldr r1, [r2]
- ldr r3, [sp, 0x28]
- lsls r0, r3, 16
- asrs r0, 16
- adds r0, r6
- strh r0, [r1, 0x30]
- ldr r0, [r2]
- movs r6, 0
- strh r6, [r0, 0x32]
- ldr r0, [r2]
- ldr r1, _08091E2C @ =sub_8091E84
- str r1, [r0, 0x1C]
- lsls r1, r7, 24
- lsrs r1, 24
- bl StartSpriteAnim
- mov r1, r9
- ldr r0, [r1]
- movs r2, 0xE4
- lsls r2, 3
- adds r0, r2
- adds r0, r5
- ldr r1, [r0]
- strh r4, [r1, 0x2E]
- ldr r2, [r0]
- movs r1, 0x1
- strh r1, [r2, 0x30]
- ldr r1, [r0]
- ldr r0, _08091E30 @ =sub_8091EB8
- str r0, [r1, 0x1C]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x1
- bls _08091D82
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08091E18: .4byte 0x0000071c
-_08091E1C: .4byte 0x0000dac9
-_08091E20: .4byte 0x000021a8
-_08091E24: .4byte gUnknown_83D29D0
-_08091E28: .4byte gSprites
-_08091E2C: .4byte sub_8091E84
-_08091E30: .4byte sub_8091EB8
- thumb_func_end sub_8091C48
-
- thumb_func_start sub_8091E34
-sub_8091E34: @ 8091E34
- push {lr}
- ldr r0, _08091E50 @ =sPSSData
- ldr r0, [r0]
- movs r1, 0xDF
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08091E54
- movs r0, 0x4
- bl FreeSpriteTilesByTag
- b _08091E5A
- .align 2, 0
-_08091E50: .4byte sPSSData
-_08091E54:
- movs r0, 0x3
- bl FreeSpriteTilesByTag
-_08091E5A:
- ldr r0, _08091E7C @ =sPSSData
- ldr r0, [r0]
- movs r3, 0xE4
- lsls r3, 3
- adds r2, r0, r3
- adds r3, 0x8
- adds r1, r0, r3
- ldr r1, [r1]
- str r1, [r2]
- ldr r2, _08091E80 @ =0x00000724
- adds r1, r0, r2
- adds r3, 0x4
- adds r0, r3
- ldr r0, [r0]
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08091E7C: .4byte sPSSData
-_08091E80: .4byte 0x00000724
- thumb_func_end sub_8091E34
-
- thumb_func_start sub_8091E84
-sub_8091E84: @ 8091E84
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x32]
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _08091E98
- subs r0, r1, 0x1
- strh r0, [r2, 0x32]
- b _08091EB0
-_08091E98:
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x30
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bne _08091EB0
- ldr r0, _08091EB4 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_08091EB0:
- pop {r0}
- bx r0
- .align 2, 0
-_08091EB4: .4byte SpriteCallbackDummy
- thumb_func_end sub_8091E84
-
- thumb_func_start sub_8091EB8
-sub_8091EB8: @ 8091EB8
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x30]
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _08091ECC
- subs r0, r1, 0x1
- strh r0, [r2, 0x30]
- b _08091EEA
-_08091ECC:
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x32]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC0
- bls _08091EEA
- adds r0, r2, 0
- bl DestroySprite
-_08091EEA:
- pop {r0}
- bx r0
- thumb_func_end sub_8091EB8
-
- thumb_func_start sub_8091EF0
-sub_8091EF0: @ 8091EF0
- push {lr}
- bl StorageGetCurrentBox
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxWallpaper
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _08091F2C @ =sPSSData
- ldr r2, [r0]
- movs r3, 0xDF
- lsls r3, 3
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _08091F38
- lsls r0, r1, 2
- ldr r1, _08091F30 @ =gUnknown_83D29D0
- adds r0, r1
- adds r3, 0x24
- adds r1, r2, r3
- ldrh r1, [r1]
- lsls r1, 1
- ldr r2, _08091F34 @ =gPlttBufferUnfaded
- adds r1, r2
- movs r2, 0x2
- bl CpuSet
- b _08091F50
- .align 2, 0
-_08091F2C: .4byte sPSSData
-_08091F30: .4byte gUnknown_83D29D0
-_08091F34: .4byte gPlttBufferUnfaded
-_08091F38:
- lsls r0, r1, 2
- ldr r1, _08091F54 @ =gUnknown_83D29D0
- adds r0, r1
- ldr r3, _08091F58 @ =0x0000071e
- adds r1, r2, r3
- ldrh r1, [r1]
- lsls r1, 1
- ldr r2, _08091F5C @ =gPlttBufferUnfaded
- adds r1, r2
- movs r2, 0x2
- bl CpuSet
-_08091F50:
- pop {r0}
- bx r0
- .align 2, 0
-_08091F54: .4byte gUnknown_83D29D0
-_08091F58: .4byte 0x0000071e
-_08091F5C: .4byte gPlttBufferUnfaded
- thumb_func_end sub_8091EF0
-
- thumb_func_start sub_8091F60
-sub_8091F60: @ 8091F60
- push {lr}
- adds r1, r0, 0
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- adds r1, r0, 0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- movs r0, 0xB0
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8091F60
-
- thumb_func_start sub_8091F80
-sub_8091F80: @ 8091F80
- push {r4,r5,lr}
- ldr r0, _08091FFC @ =gUnknown_83D2B54
- bl LoadSpriteSheet
- movs r5, 0
-_08091F8A:
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 19
- movs r0, 0xB8
- lsls r0, 15
- adds r1, r0
- asrs r1, 16
- ldr r0, _08092000 @ =gUnknown_83D2BB4
- movs r2, 0x1C
- movs r3, 0x16
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08091FDC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08092004 @ =gSprites
- adds r4, r0, r1
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r0, 0x1
- cmp r5, 0
- bne _08091FCA
- movs r1, 0x1
- negs r1, r1
- adds r0, r1, 0
-_08091FCA:
- strh r0, [r4, 0x34]
- ldr r0, _08092008 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r5, 2
- movs r2, 0xE6
- lsls r2, 3
- adds r0, r2
- adds r0, r1
- str r4, [r0]
-_08091FDC:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _08091F8A
- bl IsCursorOnBox
- lsls r0, 24
- cmp r0, 0
- beq _08091FF6
- movs r0, 0x1
- bl sub_80920FC
-_08091FF6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08091FFC: .4byte gUnknown_83D2B54
-_08092000: .4byte gUnknown_83D2BB4
-_08092004: .4byte gSprites
-_08092008: .4byte sPSSData
- thumb_func_end sub_8091F80
-
- thumb_func_start sub_809200C
-sub_809200C: @ 809200C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0
- ldr r7, _08092060 @ =sPSSData
- mov r12, r7
- movs r6, 0xE6
- lsls r6, 3
- movs r4, 0
- movs r3, 0x2
-_08092020:
- mov r0, r12
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r6
- adds r1, r0
- ldr r0, [r1]
- strh r4, [r0, 0x24]
- ldr r0, [r1]
- strh r3, [r0, 0x2E]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1
- bls _08092020
- lsls r0, r5, 24
- cmp r0, 0
- bge _08092068
- ldr r1, [r7]
- movs r2, 0xE6
- lsls r2, 3
- adds r3, r1, r2
- ldr r2, [r3]
- movs r0, 0x1D
- strh r0, [r2, 0x30]
- ldr r0, _08092064 @ =0x00000734
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x5
- strh r0, [r2, 0x30]
- ldr r0, [r3]
- movs r2, 0x48
- b _08092084
- .align 2, 0
-_08092060: .4byte sPSSData
-_08092064: .4byte 0x00000734
-_08092068:
- ldr r1, [r7]
- movs r2, 0xE6
- lsls r2, 3
- adds r3, r1, r2
- ldr r2, [r3]
- movs r0, 0x5
- strh r0, [r2, 0x30]
- ldr r0, _080920A8 @ =0x00000734
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x1D
- strh r0, [r2, 0x30]
- ldr r0, [r3]
- movs r2, 0xF8
-_08092084:
- strh r2, [r0, 0x32]
- ldr r0, [r1]
- strh r2, [r0, 0x32]
- ldr r1, [r7]
- movs r2, 0xE6
- lsls r2, 3
- adds r0, r1, r2
- ldr r2, [r0]
- movs r0, 0
- strh r0, [r2, 0x3C]
- ldr r0, _080920A8 @ =0x00000734
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x1
- strh r0, [r1, 0x3C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080920A8: .4byte 0x00000734
- thumb_func_end sub_809200C
-
- thumb_func_start sub_80920AC
-sub_80920AC: @ 80920AC
- push {r4-r6,lr}
- movs r3, 0
- movs r5, 0
- movs r6, 0x5
- negs r6, r6
- ldr r4, _080920F8 @ =sPSSData
-_080920B8:
- ldr r1, [r4]
- lsls r0, r3, 2
- movs r2, 0xE6
- lsls r2, 3
- adds r1, r2
- adds r1, r0
- ldr r2, [r1]
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 3
- adds r0, 0x5C
- strh r0, [r2, 0x20]
- ldr r0, [r1]
- strh r5, [r0, 0x24]
- ldr r1, [r1]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x1
- bls _080920B8
- movs r0, 0x1
- bl sub_80920FC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080920F8: .4byte sPSSData
- thumb_func_end sub_80920AC
-
- thumb_func_start sub_80920FC
-sub_80920FC: @ 80920FC
- push {r4-r6,lr}
- lsls r0, 24
- cmp r0, 0
- beq _08092138
- movs r2, 0
- ldr r6, _08092134 @ =sPSSData
- movs r5, 0xE6
- lsls r5, 3
- movs r3, 0
- movs r4, 0x1
-_08092110:
- ldr r1, [r6]
- lsls r0, r2, 2
- adds r1, r5
- adds r1, r0
- ldr r0, [r1]
- strh r4, [r0, 0x2E]
- ldr r0, [r1]
- strh r3, [r0, 0x30]
- ldr r0, [r1]
- strh r3, [r0, 0x32]
- ldr r0, [r1]
- strh r3, [r0, 0x36]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1
- bls _08092110
- b _08092158
- .align 2, 0
-_08092134: .4byte sPSSData
-_08092138:
- movs r2, 0
- ldr r5, _08092160 @ =sPSSData
- movs r4, 0xE6
- lsls r4, 3
- movs r3, 0
-_08092142:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r4
- adds r0, r1
- ldr r0, [r0]
- strh r3, [r0, 0x2E]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1
- bls _08092142
-_08092158:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08092160: .4byte sPSSData
- thumb_func_end sub_80920FC
-
- thumb_func_start sub_8092164
-sub_8092164: @ 8092164
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x4
- bhi _08092230
- lsls r0, 2
- ldr r1, _0809217C @ =_08092180
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809217C: .4byte _08092180
- .align 2, 0
-_08092180:
- .4byte _08092194
- .4byte _0809219A
- .4byte _080921C8
- .4byte _080921CE
- .4byte _08092220
-_08092194:
- movs r0, 0
- strh r0, [r2, 0x24]
- b _08092230
-_0809219A:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08092230
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x34]
- ldrh r3, [r2, 0x24]
- adds r0, r3
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _08092230
- strh r1, [r2, 0x32]
- strh r1, [r2, 0x24]
- b _08092230
-_080921C8:
- movs r0, 0x3
- strh r0, [r2, 0x2E]
- b _08092230
-_080921CE:
- ldr r0, _08092218 @ =sPSSData
- ldr r1, [r0]
- ldr r0, _0809221C @ =0x000002ce
- adds r1, r0
- ldrh r0, [r2, 0x20]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2, 0x20]
- subs r0, 0x49
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAE
- bls _080921F4
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
-_080921F4:
- ldrh r0, [r2, 0x30]
- subs r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _08092230
- ldrh r0, [r2, 0x32]
- strh r0, [r2, 0x20]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- movs r0, 0x4
- strh r0, [r2, 0x2E]
- b _08092230
- .align 2, 0
-_08092218: .4byte sPSSData
-_0809221C: .4byte 0x000002ce
-_08092220:
- ldr r0, _08092234 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _08092238 @ =0x000002ce
- adds r0, r1
- ldrh r1, [r2, 0x20]
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r2, 0x20]
-_08092230:
- pop {r0}
- bx r0
- .align 2, 0
-_08092234: .4byte sPSSData
-_08092238: .4byte 0x000002ce
- thumb_func_end sub_8092164
-
- thumb_func_start sub_809223C
-sub_809223C: @ 809223C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r4, [sp, 0x18]
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080922A8 @ =gUnknown_83D2BB4
- lsls r5, 16
- asrs r5, 16
- lsls r6, 16
- asrs r6, 16
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080922B4
- movs r1, 0x1
- ands r1, r7
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r5, _080922AC @ =gSprites
- adds r6, r4, r5
- adds r0, r6, 0
- bl StartSpriteAnim
- movs r0, 0x3
- mov r1, r8
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r6, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x5]
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _080922B0 @ =SpriteCallbackDummy
- str r0, [r4]
- adds r0, r6, 0
- b _080922B6
- .align 2, 0
-_080922A8: .4byte gUnknown_83D2BB4
-_080922AC: .4byte gSprites
-_080922B0: .4byte SpriteCallbackDummy
-_080922B4:
- movs r0, 0
-_080922B6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809223C
-
@ file boundary?
thumb_func_start sub_80922C0
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index 092eeed5a..7ff882ede 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -6,219 +6,6 @@
.section .rodata
.align 2
-gUnknown_83CEC40:: @ 83CEC40
- .incbin "graphics/interface/pss_unk_83CEC40.gbapal"
-
-gUnknown_83CEC80:: @ 83CEC80
- .incbin "graphics/interface/pss_unk_83CEC80.4bpp.lz"
-
-gUnknown_83CF050:: @ 83CF050
- .incbin "graphics/interface/pss_unk_83CF050.bin.lz"
-
-gUnknown_83CF12C:: @ 83CF12C
- .incbin "graphics/interface/pss_unk_83CF12C.gbapal"
-
-gUnknown_83CF16C:: @ 83CF16C
- .incbin "graphics/interface/pss_unk_83CF16C.4bpp.lz"
-
-gUnknown_83CF374:: @ 83CF374
- .incbin "graphics/interface/pss_unk_83CF374.bin.lz"
-
-gUnknown_83CF424:: @ 83CF424
- .incbin "graphics/interface/pss_unk_83CF424.gbapal"
-
-gUnknown_83CF464:: @ 83CF464
- .incbin "graphics/interface/pss_unk_83CF464.4bpp.lz"
-
-gUnknown_83CF750:: @ 83CF750
- .incbin "graphics/interface/pss_unk_83CF750.bin.lz"
-
-gUnknown_83CF834:: @ 83CF834
- .incbin "graphics/interface/pss_unk_83CF834.gbapal"
-
-gUnknown_83CF874:: @ 83CF874
- .incbin "graphics/interface/pss_unk_83CF874.4bpp.lz"
-
-gUnknown_83CFA94:: @ 83CFA94
- .incbin "graphics/interface/pss_unk_83CFA94.bin.lz"
-
-gUnknown_83CFB60:: @ 83CFB60
- .incbin "graphics/interface/pss_unk_83CFB60.gbapal"
-
-gUnknown_83CFBA0:: @ 83CFBA0
- .incbin "graphics/interface/pss_unk_83CFBA0.4bpp.lz"
-
-gUnknown_83CFEF0:: @ 83CFEF0
- .incbin "graphics/interface/pss_unk_83CFEF0.bin.lz"
-
-gUnknown_83CFFC8:: @ 83CFFC8
- .incbin "graphics/interface/pss_unk_83CFFC8.gbapal"
-
-gUnknown_83D0008:: @ 83D0008
- .incbin "graphics/interface/pss_unk_83D0008.4bpp.lz"
- .space 4
-
-gUnknown_83D033C:: @ 83D033C
- .incbin "graphics/interface/pss_unk_83D033C.bin.lz"
-
-gUnknown_83D0414:: @ 83D0414
- .incbin "graphics/interface/pss_unk_83D0414.gbapal"
-
-gUnknown_83D0454:: @ 83D0454
- .incbin "graphics/interface/pss_unk_83D0454.4bpp.lz"
-
-gUnknown_83D070C:: @ 83D070C
- .incbin "graphics/interface/pss_unk_83D070C.bin.lz"
-
-gUnknown_83D07D8:: @ 83D07D8
- .incbin "graphics/interface/pss_unk_83D07D8.gbapal"
-
-gUnknown_83D0818:: @ 83D0818
- .incbin "graphics/interface/pss_unk_83D0818.4bpp.lz"
-
-gUnknown_83D0B5C:: @ 83D0B5C
- .incbin "graphics/interface/pss_unk_83D0B5C.bin.lz"
-
-gUnknown_83D0C38:: @ 83D0C38
- .incbin "graphics/interface/pss_unk_83D0C38.gbapal"
-
-gUnknown_83D0C78:: @ 83D0C78
- .incbin "graphics/interface/pss_unk_83D0C78.4bpp.lz"
-
-gUnknown_83D0FFC:: @ 83D0FFC
- .incbin "graphics/interface/pss_unk_83D0FFC.bin.lz"
-
-gUnknown_83D10E4:: @ 83D10E4
- .incbin "graphics/interface/pss_unk_83D10E4.gbapal"
-
-gUnknown_83D1124:: @ 83D1124
- .incbin "graphics/interface/pss_unk_83D1124.4bpp.lz"
-
-gUnknown_83D13D8:: @ 83D13D8
- .incbin "graphics/interface/pss_unk_83D13D8.bin.lz"
-
-gUnknown_83D14B4:: @ 83D14B4
- .incbin "graphics/interface/pss_unk_83D14B4.gbapal"
-
-gUnknown_83D14F4:: @ 83D14F4
- .incbin "graphics/interface/pss_unk_83D14F4.4bpp.lz"
-
-gUnknown_83D1788:: @ 83D1788
- .incbin "graphics/interface/pss_unk_83D1788.bin.lz"
-
-gUnknown_83D1874:: @ 83D1874
- .incbin "graphics/interface/pss_unk_83D1874.gbapal"
-
-gUnknown_83D18B4:: @ 83D18B4
- .incbin "graphics/interface/pss_unk_83D18B4.4bpp.lz"
-
-gUnknown_83D1B4C:: @ 83D1B4C
- .incbin "graphics/interface/pss_unk_83D1B4C.bin.lz"
-
-gUnknown_83D1C2C:: @ 83D1C2C
- .incbin "graphics/interface/pss_unk_83D1C2C.gbapal"
-
- .space 32
-
-gUnknown_83D1C8C:: @ 83D1C8C
- .incbin "graphics/interface/pss_unk_83D1C8C.4bpp.lz"
-
-gUnknown_83D1EC4:: @ 83D1EC4
- .incbin "graphics/interface/pss_unk_83D1EC4.bin.lz"
-
-gUnknown_83D1F94:: @ 83D1F94
- .incbin "graphics/interface/pss_unk_83D1F94.gbapal"
-
-gUnknown_83D1FD4:: @ 83D1FD4
- .incbin "graphics/interface/pss_unk_83D1FD4.4bpp.lz"
-
-gUnknown_83D22B8:: @ 83D22B8
- .incbin "graphics/interface/pss_unk_83D22B8.bin.lz"
-
-gUnknown_83D239C:: @ 83D239C
- .incbin "graphics/interface/pss_unk_83D239C.gbapal"
-
-gUnknown_83D23DC:: @ 83D23DC
- .incbin "graphics/interface/pss_unk_83D23DC.4bpp.lz"
-
-gUnknown_83D256C:: @ 83D256C
- .incbin "graphics/interface/pss_unk_83D256C.bin.lz"
-
-gUnknown_83D2614:: @ 83D2614
- .incbin "graphics/interface/pss_unk_83D2614.gbapal"
-
-gUnknown_83D2654:: @ 83D2654
- .incbin "graphics/interface/pss_unk_83D2654.4bpp.lz"
-
-gUnknown_83D277C:: @ 83D277C
- .incbin "graphics/interface/pss_unk_83D277C.bin.lz"
-
- .incbin "graphics/interface/pss_unk_83D2820.bin"
-
-gUnknown_83D29D0:: @ 83D29D0
- .incbin "graphics/interface/pss_unk_83D29D0.gbapal"
-
-gUnknown_83D2A10:: @ 83D2A10
- .4byte gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40
- .4byte gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C
- .4byte gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424
- .4byte gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834
- .4byte gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60
- .4byte gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8
- .4byte gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414
- .4byte gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8
- .4byte gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38
- .4byte gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4
- .4byte gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4
- .4byte gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874
- .4byte gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C
- .4byte gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94
- .4byte gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C
- .4byte gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614
-
-gUnknown_83D2AD0::
- .incbin "graphics/interface/pss_unk_83D2AD0.4bpp"
- .4byte 0x000023ba
-
-gUnknown_83D2B54:: @ 83D2B54
- obj_tiles gUnknown_83D2AD0, 0x0080, 6
-
-gUnknown_83D2B5C::
- .4byte 0x80004000, 0x00000800
-
-gUnknown_83D2B64::
- obj_image_anim_frame 0x0000, 5
- obj_image_anim_end
-
-gUnknown_83D2B6C::
- obj_image_anim_frame 0x0008, 5
- obj_image_anim_end
-
-gUnknown_83D2B74::
- .4byte gUnknown_83D2B64
- .4byte gUnknown_83D2B6C
-
-gUnknown_83D2B7C:: @ 83D2B7C
- spr_template 3, 56009, gUnknown_83D2B5C, gUnknown_83D2B74, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83D2B94::
- .4byte 0x00008000, 0x00000800
-
-gUnknown_83D2B9C::
- obj_image_anim_frame 0x0000, 5
- obj_image_anim_end
-
-gUnknown_83D2BA4::
- obj_image_anim_frame 0x0002, 5
- obj_image_anim_end
-
-gUnknown_83D2BAC::
- .4byte gUnknown_83D2B9C
- .4byte gUnknown_83D2BA4
-
-gUnknown_83D2BB4:: @ 83D2BB4
- spr_template 6, 56010, gUnknown_83D2B94, gUnknown_83D2BAC, NULL, gDummySpriteAffineAnimTable, sub_8092164
-
gUnknown_83D2BCC::
.incbin "graphics/interface/pss_unk_83D2BCC.gbapal"
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 5b9876677..597694baf 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -4,6 +4,7 @@
#include "global.h"
extern const u16 gMonIconPalettes[][16];
+extern const u8 gMonIconPaletteIndices[];
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra);
@@ -26,5 +27,6 @@ void LoadMonIconPalette(u16 iconId);
void FreeMonIconPalette(u16 iconId);
void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum);
u8 GetMonIconPaletteIndexFromSpecies(u16 species);
+u16 GetIconSpecies(u16 species, u32 personality);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 6ded8983c..7a98e1a77 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -36,7 +36,7 @@ void ZeroBoxMonAt(u8 boxId, u8 monPosition);
void Cb2_ReturnToPSS(void);
void ResetPokemonStorageSystem(void);
u8 StorageGetCurrentBox(void);
-void DrawTextWindowAndBufferTiles(const u8 *name, void *a1, u8 a2, u8 a3, u8 *buffer, s32 a5);
+void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer);
void SetCurrentBox(u8 boxId);
void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h
index 28b39cb7c..889651175 100644
--- a/include/pokemon_storage_system_internal.h
+++ b/include/pokemon_storage_system_internal.h
@@ -7,6 +7,8 @@
#define IN_BOX_COLUMNS 5
#define IN_BOX_ROWS 6
+#define MAX_MON_ICONS 40
+
enum
{
MODE_PARTY,
@@ -106,6 +108,14 @@ enum
#define TAG_TILE_7 0x7
#define TAG_TILE_0 0x0
#define TAG_TILE_1 0x1
+#define TAG_TILE_6 0x6
+
+struct WallpaperTable
+{
+ const u32 *tiles;
+ const u32 *tileMap;
+ const u16 *palettes;
+};
struct StorageAction
{
@@ -202,7 +212,8 @@ struct PokemonStorageSystemData
u16 field_2DE;
u16 field_2E0;
u8 filler[22];
- u8 field_2F8[1024];
+ u8 field_2F8[512];
+ u8 field_4F8[512];
u8 field_6F8;
u8 field_6F9;
u8 field_6FA;
@@ -229,8 +240,8 @@ struct PokemonStorageSystemData
/* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT];
/* 0afc */ struct Sprite **field_B00;
/* 0b00 */ struct Sprite **field_B04;
- /* 0b04 */ u16 field_B08[40];
- /* 0b54 */ u16 field_B58[40];
+ /* 0b04 */ u16 field_B08[MAX_MON_ICONS];
+ /* 0b54 */ u16 field_B58[MAX_MON_ICONS];
/* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT];
/* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT];
/* 0c58 */ u8 field_C5C;
@@ -406,5 +417,8 @@ void InitMenu(void);
void SetMenuText(u8 textId);
void sub_8095C84(u8 cursorArea, u8 cursorPos);
void sub_8095E2C(u16 itemId);
+u8 GetBoxWallpaper(u8 boxId);
+bool8 IsCursorOnBox(void);
+bool8 IsCursorInBox(void);
#endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H
diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c
index da943f74b..521d7cf78 100644
--- a/src/pokemon_storage_system_3.c
+++ b/src/pokemon_storage_system_3.c
@@ -100,6 +100,7 @@ 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);
@@ -120,12 +121,28 @@ void DestroyAllPartyMonIcons(void);
void sub_8091114(void);
bool8 sub_8091150(void);
void DestroyBoxMonIcon(struct Sprite * sprite);
-bool8 IsCursorOnBox(void);
-bool8 IsCursorInBox(void);
void sub_80911B0(struct Sprite * sprite);
void sub_80913DC(u8 box);
+
+void sub_8091420(u8 taskId);
bool8 sub_809140C(void);
+s8 sub_80916F4(u8 boxId);
+void LoadWallpaperGfx(u8 wallpaperId, s8 direction);
+bool32 WaitForWallpaperGfxLoad(void);
+void sub_8091984(void *buffer, const void *buffer2, s8 direction, u8 baseBlock);
+void sub_8091A24(void *buffer);
+void sub_8091A94(u8 wallpaperId);
+void sub_8091C48(u8 wallpaperId, s8 direction);
+void sub_8091E84(struct Sprite * sprite);
+void sub_8091EB8(struct Sprite * sprite);
+s16 sub_8091F60(const u8 *boxName);
+void sub_8091E34(void);
+void sub_8091EF0(void);
+void sub_8091F80(void);
+void sub_809200C(s8 direction);
+void sub_80920AC(void);
void sub_80920FC(bool8 species);
+void sub_8092164(struct Sprite * sprite);
const u32 gPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/interface/pss_unk_83CE438.4bpp.lz");
const u32 gPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE4D0.bin.lz");
@@ -2841,14 +2858,18 @@ void sub_808FF70(void)
}
}
+// ******************************************************************
+// Mon icons
+// ******************************************************************
+
void sub_808FFAC(void)
{
u16 i;
LoadMonIconPalettes();
- for (i = 0; i < 40; i++)
+ for (i = 0; i < MAX_MON_ICONS; i++)
sPSSData->field_B08[i] = 0;
- for (i = 0; i < 40; i++)
+ for (i = 0; i < MAX_MON_ICONS; i++)
sPSSData->field_B58[i] = 0;
for (i = 0; i < PARTY_SIZE; i++)
sPSSData->partySprites[i] = NULL;
@@ -2859,10 +2880,6 @@ void sub_808FFAC(void)
sPSSData->field_78C = 0;
}
-// ******************************************************************
-// Mon icons
-// ******************************************************************
-
u8 sub_8090058(void)
{
return (IsCursorInBox() ? 2 : 1);
@@ -3434,3 +3451,826 @@ void sub_8090FC4(u8 mode, u8 position)
StartSpriteAffineAnim(*sPSSData->field_B04, 0);
}
}
+
+bool8 sub_8091084(void)
+{
+ if (*sPSSData->field_B04 == NULL || (*sPSSData->field_B04)->invisible)
+ return FALSE;
+
+ if ((*sPSSData->field_B04)->affineAnimEnded)
+ (*sPSSData->field_B04)->invisible = TRUE;
+
+ return TRUE;
+}
+
+void sub_80910CC(void)
+{
+ if (*sPSSData->field_B04 != NULL)
+ {
+ FreeOamMatrix((*sPSSData->field_B04)->oam.matrixNum);
+ DestroyBoxMonIcon(*sPSSData->field_B04);
+ *sPSSData->field_B04 = NULL;
+ }
+}
+
+void sub_8091114(void)
+{
+ if (*sPSSData->field_B04 != NULL)
+ {
+ (*sPSSData->field_B04)->invisible = FALSE;
+ StartSpriteAffineAnim(*sPSSData->field_B04, 1);
+ }
+}
+
+bool8 sub_8091150(void)
+{
+ if (sPSSData->field_B04 == NULL)
+ return FALSE;
+
+ if ((*sPSSData->field_B04)->affineAnimEnded)
+ sPSSData->field_B04 = NULL;
+
+ return TRUE;
+}
+
+void SetMovingMonPriority(u8 priority)
+{
+ sPSSData->movingMonSprite->oam.priority = priority;
+}
+
+void sub_80911B0(struct Sprite *sprite)
+{
+ sprite->pos1.x = sPSSData->field_CB4->pos1.x;
+ sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 4;
+}
+
+u16 sub_80911D4(u16 species)
+{
+ u16 i, var;
+
+ // Find the currently-allocated slot
+ for (i = 0; i < MAX_MON_ICONS; i++)
+ {
+ if (sPSSData->field_B58[i] == species)
+ break;
+ }
+
+ if (i == MAX_MON_ICONS)
+ {
+ // Find the first empty slot
+ for (i = 0; i < MAX_MON_ICONS; i++)
+ {
+ if (sPSSData->field_B58[i] == SPECIES_NONE)
+ break;
+ }
+ if (i == MAX_MON_ICONS)
+ return 0xFFFF;
+ }
+
+ sPSSData->field_B58[i] = species;
+ sPSSData->field_B08[i]++;
+ var = 16 * i;
+ CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + var * 32, 0x200);
+
+ return var;
+}
+
+void sub_8091290(u16 species)
+{
+ u16 i;
+
+ for (i = 0; i < MAX_MON_ICONS; i++)
+ {
+ if (sPSSData->field_B58[i] == species)
+ {
+ if (--sPSSData->field_B08[i] == 0)
+ sPSSData->field_B58[i] = 0;
+ break;
+ }
+ }
+}
+
+struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority)
+{
+ u16 tileNum;
+ u8 spriteId;
+ struct SpriteTemplate template = gUnknown_83CEBF0;
+
+ species = GetIconSpecies(species, personality);
+ template.paletteTag = 0xDAC0 + gMonIconPaletteIndices[species];
+ tileNum = sub_80911D4(species);
+ if (tileNum == 0xFFFF)
+ return NULL;
+
+ spriteId = CreateSprite(&template, x, y, subpriority);
+ if (spriteId == MAX_SPRITES)
+ {
+ sub_8091290(species);
+ return NULL;
+ }
+
+ gSprites[spriteId].oam.tileNum = tileNum;
+ gSprites[spriteId].oam.priority = oamPriority;
+ gSprites[spriteId].data[0] = species;
+ return &gSprites[spriteId];
+}
+
+void DestroyBoxMonIcon(struct Sprite *sprite)
+{
+ sub_8091290(sprite->data[0]);
+ DestroySprite(sprite);
+}
+
+// ******************************************************************
+// Load wallpaper
+// ******************************************************************
+
+const u16 gUnknown_83CEC40[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal");
+const u32 gUnknown_83CEC80[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz");
+const u32 gUnknown_83CF050[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz");
+const u16 gUnknown_83CF12C[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal");
+const u32 gUnknown_83CF16C[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz");
+const u32 gUnknown_83CF374[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz");
+const u16 gUnknown_83CF424[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal");
+const u32 gUnknown_83CF464[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz");
+const u32 gUnknown_83CF750[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz");
+const u16 gUnknown_83CF834[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal");
+const u32 gUnknown_83CF874[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz");
+const u32 gUnknown_83CFA94[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz");
+const u16 gUnknown_83CFB60[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal");
+const u32 gUnknown_83CFBA0[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz");
+const u32 gUnknown_83CFEF0[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz");
+const u16 gUnknown_83CFFC8[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal");
+const u32 gUnknown_83D0008[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz");
+const u8 sSpace_83D0338[4] = {};
+const u32 gUnknown_83D033C[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz");
+const u16 gUnknown_83D0414[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal");
+const u32 gUnknown_83D0454[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz");
+const u32 gUnknown_83D070C[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz");
+const u16 gUnknown_83D07D8[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal");
+const u32 gUnknown_83D0818[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz");
+const u32 gUnknown_83D0B5C[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz");
+const u16 gUnknown_83D0C38[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal");
+const u32 gUnknown_83D0C78[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz");
+const u32 gUnknown_83D0FFC[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz");
+const u16 gUnknown_83D10E4[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal");
+const u32 gUnknown_83D1124[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz");
+const u32 gUnknown_83D13D8[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz");
+const u16 gUnknown_83D14B4[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal");
+const u32 gUnknown_83D14F4[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz");
+const u32 gUnknown_83D1788[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz");
+const u16 gUnknown_83D1874[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal");
+const u32 gUnknown_83D18B4[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz");
+const u32 gUnknown_83D1B4C[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz");
+const u16 gUnknown_83D1C2C[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal");
+const u8 sSpace_83D1C6C[32] = {};
+const u32 gUnknown_83D1C8C[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz");
+const u32 gUnknown_83D1EC4[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz");
+const u16 gUnknown_83D1F94[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal");
+const u32 gUnknown_83D1FD4[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz");
+const u32 gUnknown_83D22B8[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz");
+const u16 gUnknown_83D239C[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal");
+const u32 gUnknown_83D23DC[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz");
+const u32 gUnknown_83D256C[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz");
+const u16 gUnknown_83D2614[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal");
+const u32 gUnknown_83D2654[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz");
+const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz");
+const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin");
+
+const u16 gUnknown_83D29D0[][2] = {
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)},
+ {RGB( 7, 7, 7), RGB(31, 31, 31)}
+};
+
+const struct WallpaperTable gWallpaperTable[] = {
+ {gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40},
+ {gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C},
+ {gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424},
+ {gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834},
+ {gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60},
+ {gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8},
+ {gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414},
+ {gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8},
+ {gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38},
+ {gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4},
+ {gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4},
+ {gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874},
+ {gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C},
+ {gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94},
+ {gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C},
+ {gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614},
+};
+
+const u16 gUnknown_83D2AD0[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp");
+const u8 sUnref_83D2B50[] = {0xba, 0x23};
+
+const struct SpriteSheet gUnknown_83D2B54 = {
+ gUnknown_83D2AD0, 0x0080, TAG_TILE_6
+};
+
+const struct OamData gUnknown_83D2B5C = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0
+};
+
+const union AnimCmd gUnknown_83D2B64[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_83D2B6C[] = {
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_83D2B74[] = {
+ gUnknown_83D2B64,
+ gUnknown_83D2B6C
+};
+
+const struct SpriteTemplate gUnknown_83D2B7C = {
+ .tileTag = TAG_TILE_3,
+ .paletteTag = TAG_PAL_DAC9,
+ .oam = &gUnknown_83D2B5C,
+ .anims = gUnknown_83D2B74,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+const struct OamData gUnknown_83D2B94 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0x000,
+ .priority = 2,
+ .paletteNum = 0
+};
+
+const union AnimCmd gUnknown_83D2B9C[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_83D2BA4[] = {
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_83D2BAC[] = {
+ gUnknown_83D2B9C,
+ gUnknown_83D2BA4
+};
+
+const struct SpriteTemplate gUnknown_83D2BB4 = {
+ .tileTag = TAG_TILE_6,
+ .paletteTag = TAG_PAL_WAVEFORM,
+ .oam = &gUnknown_83D2B94,
+ .anims = gUnknown_83D2BAC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8092164
+};
+
+void sub_80913DC(u8 boxId)
+{
+ u8 taskId = CreateTask(sub_8091420, 2);
+
+ gTasks[taskId].data[2] = boxId;
+}
+
+bool8 sub_809140C(void)
+{
+ return FuncIsActiveTask(sub_8091420);
+}
+
+void sub_8091420(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sPSSData->field_2D2 = 0;
+ sPSSData->bg2_X = 0;
+ task->data[1] = RequestDma3Fill(0, sPSSData->field_4AC4, 0x1000, 1);
+ break;
+ case 1:
+ if (CheckForSpaceForDma3Request(task->data[1]) == -1)
+ return;
+
+ SetBgTilemapBuffer(2, sPSSData->field_4AC4);
+ ShowBg(2);
+ break;
+ case 2:
+ LoadWallpaperGfx(task->data[2], 0);
+ break;
+ case 3:
+ if (!WaitForWallpaperGfxLoad())
+ return;
+
+ sub_8091A94(task->data[2]);
+ sub_8091F80();
+ sub_80900D4(task->data[2]);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(27) | BGCNT_TXT512x256);
+ break;
+ case 4:
+ DestroyTask(taskId);
+ break;
+ default:
+ task->data[0] = 0;
+ return;
+ }
+
+ task->data[0]++;
+}
+
+void SetUpScrollToBox(u8 boxId)
+{
+ s8 direction = sub_80916F4(boxId);
+
+ sPSSData->field_2CE = (direction > 0) ? 6 : -6;
+ sPSSData->field_2D3 = (direction > 0) ? 1 : 2;
+ sPSSData->field_2D0 = 32;
+ sPSSData->field_2D4 = boxId;
+ sPSSData->field_2D6 = (direction <= 0) ? 5 : 0;
+ sPSSData->field_2D8 = direction;
+ sPSSData->field_2DA = (direction > 0) ? 264 : 56;
+ sPSSData->field_2DC = (direction <= 0) ? 5 : 0;
+ sPSSData->field_2DE = 0;
+ sPSSData->field_2E0 = 2;
+ sPSSData->field_A64 = boxId;
+ sPSSData->field_A65 = direction;
+ sPSSData->field_A63 = 0;
+}
+
+bool8 ScrollToBox(void)
+{
+ bool8 var;
+
+ switch (sPSSData->field_A63)
+ {
+ case 0:
+ LoadWallpaperGfx(sPSSData->field_A64, sPSSData->field_A65);
+ sPSSData->field_A63++;
+ case 1:
+ if (!WaitForWallpaperGfxLoad())
+ return TRUE;
+
+ sub_8090574(sPSSData->field_A64, sPSSData->field_A65);
+ sub_8091C48(sPSSData->field_A64, sPSSData->field_A65);
+ sub_809200C(sPSSData->field_A65);
+ break;
+ case 2:
+ var = sub_809062C();
+ if (sPSSData->field_2D0 != 0)
+ {
+ sPSSData->bg2_X += sPSSData->field_2CE;
+ if (--sPSSData->field_2D0 != 0)
+ return TRUE;
+ sub_8091E34();
+ sub_80920AC();
+ }
+ return var;
+ }
+
+ sPSSData->field_A63++;
+ return TRUE;
+}
+
+s8 sub_80916F4(u8 boxId)
+{
+ u8 i;
+ u8 currentBox = StorageGetCurrentBox();
+
+ for (i = 0; currentBox != boxId; i++)
+ {
+ currentBox++;
+ if (currentBox >= TOTAL_BOXES_COUNT)
+ currentBox = 0;
+ }
+
+ return (i < TOTAL_BOXES_COUNT / 2) ? 1 : -1;
+}
+
+void SetWallpaperForCurrentBox(u8 wallpaperId)
+{
+ u8 boxId = StorageGetCurrentBox();
+ SetBoxWallpaper(boxId, wallpaperId);
+ sPSSData->wallpaperChangeState = 0;
+}
+
+bool8 DoWallpaperGfxChange(void)
+{
+ switch (sPSSData->wallpaperChangeState)
+ {
+ case 0:
+ BeginNormalPaletteFade(sPSSData->field_738, 1, 0, 16, RGB_WHITEALPHA);
+ sPSSData->wallpaperChangeState++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ u8 curBox = StorageGetCurrentBox();
+ LoadWallpaperGfx(curBox, 0);
+ sPSSData->wallpaperChangeState++;
+ }
+ break;
+ case 2:
+ if (WaitForWallpaperGfxLoad() == TRUE)
+ {
+ sub_8091EF0();
+ BeginNormalPaletteFade(sPSSData->field_738, 1, 16, 0, RGB_WHITEALPHA);
+ sPSSData->wallpaperChangeState++;
+ }
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ sPSSData->wallpaperChangeState++;
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void LoadWallpaperGfx(u8 boxId, s8 direction)
+{
+ u8 wallpaperId;
+ const struct WallpaperTable *wallpaperGfx;
+ void *iconGfx;
+ u32 size1, size2;
+
+ sPSSData->field_6F9 = 0;
+ sPSSData->field_6FA = boxId;
+ sPSSData->field_6FB = direction;
+ if (sPSSData->field_6FB != 0)
+ {
+ sPSSData->field_2D2 = (sPSSData->field_2D2 == 0);
+ sub_8091A24(sPSSData->field_4AC4);
+ }
+
+ wallpaperId = GetBoxWallpaper(sPSSData->field_6FA);
+ wallpaperGfx = &gWallpaperTable[wallpaperId];
+ LZ77UnCompWram(wallpaperGfx->tileMap, sPSSData->field_792);
+ sub_8091984(sPSSData->field_4AC4, sPSSData->field_792, sPSSData->field_6FB, sPSSData->field_2D2);
+
+ if (sPSSData->field_6FB != 0)
+ LoadPalette(wallpaperGfx->palettes, (sPSSData->field_2D2 * 32) + 0x40, 0x40);
+ else
+ CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(sPSSData->field_2D2 * 32) + 0x40], 0x40);
+
+ DecompressAndLoadBgGfxUsingHeap(2, wallpaperGfx->tiles, 0, 256 * sPSSData->field_2D2, 0);
+
+ CopyBgTilemapBufferToVram(2);
+}
+
+bool32 WaitForWallpaperGfxLoad(void)
+{
+ if (IsDma3ManagerBusyWithBgCopy() == TRUE)
+ return FALSE;
+
+ return TRUE;
+}
+
+void sub_8091984(void *buffer, const void *tilemap, s8 direction, u8 arg2)
+{
+ s16 var = (arg2 * 2) + 3;
+ s16 x = ((sPSSData->bg2_X / 8 + 10) + (direction * 24)) & 0x3F;
+
+ CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 0x14, 0x12, x, 2, 0x14, 0x12, 0x11, arg2 << 8, var);
+
+ if (direction == 0)
+ return;
+ else if (direction > 0)
+ x *= 1, x += 0x14; // x * 1 is needed to match, but can be safely removed as it makes no functional difference
+ else
+ x -= 4;
+
+ FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 0x11);
+}
+
+void sub_8091A24(void *arg0)
+{
+ u16 i;
+ u16 *dest = arg0;
+ s16 r3 = ((sPSSData->bg2_X / 8) + 30) & 0x3F;
+
+ if (r3 <= 31)
+ dest += r3 + 0x260;
+ else
+ dest += r3 + 0x640;
+
+ for (i = 0; i < 0x2C; i++)
+ {
+ *dest++ = 0;
+ r3 = (r3 + 1) & 0x3F;
+ if (r3 == 0)
+ dest -= 0x420;
+ if (r3 == 0x20)
+ dest += 0x3e0;
+ }
+}
+
+void sub_8091A94(u8 boxId)
+{
+ u8 tagIndex;
+ s16 r6;
+ u16 i;
+
+ struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3};
+ struct SpritePalette palettes[] = {
+ {sPSSData->field_6FC, TAG_PAL_DAC9},
+ {}
+ };
+
+ u16 wallpaperId = GetBoxWallpaper(boxId);
+
+ sPSSData->field_6FC[14] = gUnknown_83D29D0[wallpaperId][0];
+ sPSSData->field_6FC[15] = gUnknown_83D29D0[wallpaperId][1];
+ LoadSpritePalettes(palettes);
+ sPSSData->field_738 = 0x3f0;
+
+ tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
+ sPSSData->field_71C = 0x10e + 16 * tagIndex;
+ sPSSData->field_738 |= 0x10000 << tagIndex;
+
+ tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
+ sPSSData->field_71E = 0x10e + 16 * tagIndex;
+ sPSSData->field_738 |= 0x10000 << tagIndex;
+
+ StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
+ DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, sPSSData->field_4F8, 2);
+ LoadSpriteSheet(&spriteSheet);
+ r6 = sub_8091F60(GetBoxNamePtr(boxId));
+
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_83D2B7C, r6 + i * 32, 28, 24);
+ sPSSData->field_720[i] = &gSprites[spriteId];
+ StartSpriteAnim(sPSSData->field_720[i], i);
+ }
+ sPSSData->field_6F8 = 0;
+}
+
+void sub_8091C48(u8 boxId, s8 direction)
+{
+ u16 r8;
+ s16 x, x2;
+ u16 i;
+ struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3};
+ struct SpriteTemplate template = gUnknown_83D2B7C;
+
+ sPSSData->field_6F8 = (sPSSData->field_6F8 == 0);
+ if (sPSSData->field_6F8 == 0)
+ {
+ spriteSheet.tag = TAG_TILE_3;
+ r8 = sPSSData->field_71C;
+ }
+ else
+ {
+ spriteSheet.tag = TAG_TILE_4;
+ r8 = sPSSData->field_71C;
+ template.tileTag = TAG_TILE_4;
+ template.paletteTag = TAG_PAL_DAC9;
+ }
+
+ StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
+ DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, sPSSData->field_4F8, 2);
+ LoadSpriteSheet(&spriteSheet);
+ LoadPalette(gUnknown_83D29D0[GetBoxWallpaper(boxId)], r8, 4);
+ x = sub_8091F60(GetBoxNamePtr(boxId));
+ x2 = x;
+ x2 += direction * 192;
+
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24);
+
+ sPSSData->field_728[i] = &gSprites[spriteId];
+ sPSSData->field_728[i]->data[0] = (-direction) * 6;
+ sPSSData->field_728[i]->data[1] = i * 32 + x;
+ sPSSData->field_728[i]->data[2] = 0;
+ sPSSData->field_728[i]->callback = sub_8091E84;
+ StartSpriteAnim(sPSSData->field_728[i], i);
+
+ sPSSData->field_720[i]->data[0] = (-direction) * 6;
+ sPSSData->field_720[i]->data[1] = 1;
+ sPSSData->field_720[i]->callback = sub_8091EB8;
+ }
+}
+
+void sub_8091E34(void)
+{
+ if (sPSSData->field_6F8 == 0)
+ FreeSpriteTilesByTag(TAG_TILE_4);
+ else
+ FreeSpriteTilesByTag(TAG_TILE_3);
+
+ sPSSData->field_720[0] = sPSSData->field_728[0];
+ sPSSData->field_720[1] = sPSSData->field_728[1];
+}
+
+void sub_8091E84(struct Sprite *sprite)
+{
+ if (sprite->data[2] != 0)
+ sprite->data[2]--;
+ else if ((sprite->pos1.x += sprite->data[0]) == sprite->data[1])
+ sprite->callback = SpriteCallbackDummy;
+}
+
+void sub_8091EB8(struct Sprite *sprite)
+{
+ if (sprite->data[1] != 0)
+ {
+ sprite->data[1]--;
+ }
+ else
+ {
+ sprite->pos1.x += sprite->data[0];
+ sprite->data[2] = sprite->pos1.x + sprite->pos2.x;
+ if (sprite->data[2] < 0x40 || sprite->data[2] > 0x100)
+ DestroySprite(sprite);
+ }
+}
+
+void sub_8091EF0(void)
+{
+ u8 boxId = StorageGetCurrentBox();
+ u8 wallpaperId = GetBoxWallpaper(boxId);
+ if (sPSSData->field_6F8 == 0)
+ CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71C, 4);
+ else
+ CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71E, 4);
+}
+
+s16 sub_8091F60(const u8 *string)
+{
+ return 0xB0 - GetStringWidth(1, string, 0) / 2;
+}
+
+void sub_8091F80(void)
+{
+ u16 i;
+
+ LoadSpriteSheet(&gUnknown_83D2B54);
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_83D2BB4, 0x5c + i * 0x88, 28, 22);
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ StartSpriteAnim(sprite, i);
+ sprite->data[3] = (i == 0) ? -1 : 1;
+ sPSSData->field_730[i] = sprite;
+ }
+ }
+ if (IsCursorOnBox())
+ sub_80920FC(TRUE);
+}
+
+void sub_809200C(s8 direction)
+{
+ u16 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ sPSSData->field_730[i]->pos2.x = 0;
+ sPSSData->field_730[i]->data[0] = 2;
+ }
+ if (direction < 0)
+ {
+ sPSSData->field_730[0]->data[1] = 29;
+ sPSSData->field_730[1]->data[1] = 5;
+ sPSSData->field_730[0]->data[2] = 0x48;
+ sPSSData->field_730[1]->data[2] = 0x48;
+ }
+ else
+ {
+ sPSSData->field_730[0]->data[1] = 5;
+ sPSSData->field_730[1]->data[1] = 29;
+ sPSSData->field_730[0]->data[2] = 0xF8;
+ sPSSData->field_730[1]->data[2] = 0xF8;
+ }
+ sPSSData->field_730[0]->data[7] = 0;
+ sPSSData->field_730[1]->data[7] = 1;
+}
+
+void sub_80920AC(void)
+{
+ u16 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ sPSSData->field_730[i]->pos1.x = 0x88 * i + 0x5c;
+ sPSSData->field_730[i]->pos2.x = 0;
+ sPSSData->field_730[i]->invisible = FALSE;
+ }
+ sub_80920FC(TRUE);
+}
+
+void sub_80920FC(bool8 a0)
+{
+ u16 i;
+
+ if (a0)
+ {
+ for (i = 0; i < 2; i++)
+ {
+ sPSSData->field_730[i]->data[0] = 1;
+ sPSSData->field_730[i]->data[1] = 0;
+ sPSSData->field_730[i]->data[2] = 0;
+ sPSSData->field_730[i]->data[4] = 0;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 2; i++)
+ {
+ sPSSData->field_730[i]->data[0] = 0;
+ }
+ }
+}
+
+void sub_8092164(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.x = 0;
+ break;
+ case 1:
+ if (++sprite->data[1] > 3)
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.x += sprite->data[3];
+ if (++sprite->data[2] > 5)
+ {
+ sprite->data[2] = 0;
+ sprite->pos2.x = 0;
+ }
+ }
+ break;
+ case 2:
+ sprite->data[0] = 3;
+ break;
+ case 3:
+ sprite->pos1.x -= sPSSData->field_2CE;
+ if (sprite->pos1.x < 73 || sprite->pos1.x > 247)
+ sprite->invisible = TRUE;
+ if (--sprite->data[1] == 0)
+ {
+ sprite->pos1.x = sprite->data[2];
+ sprite->invisible = FALSE;
+ sprite->data[0] = 4;
+ }
+ break;
+ case 4:
+ sprite->pos1.x -= sPSSData->field_2CE;
+ break;
+ }
+}
+
+struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority)
+{
+ u8 spriteId = CreateSprite(&gUnknown_83D2BB4, x, y, subpriority);
+ if (spriteId == MAX_SPRITES)
+ return NULL;
+
+ animId %= 2;
+ StartSpriteAnim(&gSprites[spriteId], animId);
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ return &gSprites[spriteId];
+}