summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-13 20:53:22 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-13 20:53:22 -0400
commit6753e18db06fc6636b768bfaae41a68ec8660abf (patch)
tree748fcd7b8a454e1b331ad3bf3cd8f2fcfed9999e
parenta89e8474fdb31e1e1b13a64be4109ce8603f81a3 (diff)
through sub_8090FC4
-rw-r--r--asm/pokemon_storage_system.s2293
-rw-r--r--data/pokemon_storage_system.s19
-rw-r--r--include/constants/flags.h2
-rw-r--r--include/pokemon_storage_system_internal.h10
-rw-r--r--src/field_specials.c6
-rw-r--r--src/pokemon.c2
-rw-r--r--src/pokemon_storage_system_3.c672
7 files changed, 701 insertions, 2303 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 4c6f57d22..b789c20a8 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,2259 +5,6 @@
.text
- thumb_func_start sub_808FF70
-sub_808FF70: @ 808FF70
- push {r4,lr}
- ldr r4, _0808FFA0 @ =sLastUsedBox
- bl StorageGetCurrentBox
- ldrb r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- beq _0808FF9A
- ldr r0, _0808FFA4 @ =0x00000843
- bl FlagClear
- ldr r4, _0808FFA8 @ =0x00004037
- bl StorageGetCurrentBox
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl VarSet
-_0808FF9A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808FFA0: .4byte sLastUsedBox
-_0808FFA4: .4byte 0x00000843
-_0808FFA8: .4byte 0x00004037
- thumb_func_end sub_808FF70
-
- thumb_func_start sub_808FFAC
-sub_808FFAC: @ 808FFAC
- push {r4-r6,lr}
- bl LoadMonIconPalettes
- movs r2, 0
- ldr r3, _0809003C @ =sPSSData
- ldr r5, _08090040 @ =0x00000b04
- movs r4, 0
- adds r6, r3, 0
-_0808FFBC:
- ldr r0, [r3]
- lsls r1, r2, 1
- adds r0, r5
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x27
- bls _0808FFBC
- movs r2, 0
- ldr r5, _0809003C @ =sPSSData
- ldr r4, _08090044 @ =0x00000b54
- movs r3, 0
-_0808FFD8:
- ldr r0, [r5]
- lsls r1, r2, 1
- adds r0, r4
- adds r0, r1
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x27
- bls _0808FFD8
- movs r2, 0
- ldr r5, _0809003C @ =sPSSData
- ldr r4, _08090048 @ =0x00000a6c
- movs r3, 0
-_0808FFF4:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r4
- adds r0, r1
- str r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _0808FFF4
- movs r2, 0
- ldr r5, _0809003C @ =sPSSData
- ldr r4, _0809004C @ =0x00000a84
- movs r3, 0
-_08090010:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r4
- adds r0, r1
- str r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1D
- bls _08090010
- ldr r0, [r6]
- ldr r2, _08090050 @ =0x00000a68
- adds r1, r0, r2
- movs r2, 0
- str r2, [r1]
- ldr r1, _08090054 @ =0x0000078c
- adds r0, r1
- strh r2, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809003C: .4byte sPSSData
-_08090040: .4byte 0x00000b04
-_08090044: .4byte 0x00000b54
-_08090048: .4byte 0x00000a6c
-_0809004C: .4byte 0x00000a84
-_08090050: .4byte 0x00000a68
-_08090054: .4byte 0x0000078c
- thumb_func_end sub_808FFAC
-
- thumb_func_start sub_8090058
-sub_8090058: @ 8090058
- push {lr}
- bl sub_80939F4
- lsls r0, 24
- movs r1, 0x1
- cmp r0, 0
- beq _08090068
- movs r1, 0x2
-_08090068:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8090058
-
- thumb_func_start sub_8090070
-sub_8090070: @ 8090070
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r5, _080900C4 @ =sPSSData
- ldr r0, [r5]
- ldr r4, _080900C8 @ =0x000020a0
- adds r0, r4
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0x41
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_8090058
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0x7
- str r0, [sp, 0x4]
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl sub_80912E0
- ldr r1, [r5]
- ldr r2, _080900CC @ =0x00000a68
- adds r1, r2
- str r0, [r1]
- ldr r1, _080900D0 @ =sub_80911B0
- str r1, [r0, 0x1C]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080900C4: .4byte sPSSData
-_080900C8: .4byte 0x000020a0
-_080900CC: .4byte 0x00000a68
-_080900D0: .4byte sub_80911B0
- thumb_func_end sub_8090070
-
- thumb_func_start sub_80900D4
-sub_80900D4: @ 80900D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r0, 0
- mov r8, r0
- movs r6, 0
- movs r7, 0
-_080900EE:
- movs r5, 0
- adds r1, r7, 0x1
- mov r10, r1
-_080900F4:
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0x41
- bl GetBoxMonDataAt
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _0809015C
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0
- bl GetBoxMonDataAt
- adds r1, r0, 0
- lsls r2, r5, 1
- adds r2, r5
- lsls r2, 19
- movs r3, 0xC8
- lsls r3, 15
- adds r2, r3
- asrs r2, 16
- lsls r3, r7, 1
- adds r3, r7
- lsls r3, 19
- movs r0, 0xB0
- lsls r0, 14
- adds r3, r0
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x13
- subs r0, r5
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- adds r0, r4, 0
- asrs r3, 16
- bl sub_80912E0
- ldr r1, _08090154 @ =sPSSData
- ldr r1, [r1]
- mov r3, r8
- lsls r2, r3, 2
- ldr r3, _08090158 @ =0x00000a84
- adds r1, r3
- adds r1, r2
- str r0, [r1]
- b _0809016C
- .align 2, 0
-_08090154: .4byte sPSSData
-_08090158: .4byte 0x00000a84
-_0809015C:
- ldr r0, _080901E4 @ =sPSSData
- ldr r0, [r0]
- mov r2, r8
- lsls r1, r2, 2
- ldr r3, _080901E8 @ =0x00000a84
- adds r0, r3
- adds r0, r1
- str r4, [r0]
-_0809016C:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _080900F4
- mov r1, r10
- lsls r0, r1, 16
- lsrs r7, r0, 16
- cmp r7, 0x4
- bls _080900EE
- ldr r0, _080901E4 @ =sPSSData
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _080901D2
- movs r6, 0
- movs r2, 0xD
- negs r2, r2
- adds r4, r2, 0
-_080901A2:
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0xC
- bl GetBoxMonDataAt
- cmp r0, 0
- bne _080901C8
- ldr r0, _080901E4 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r3, _080901E8 @ =0x00000a84
- adds r0, r3
- adds r0, r1
- ldr r2, [r0]
- ldrb r0, [r2, 0x1]
- ands r0, r4
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x1]
-_080901C8:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1D
- bls _080901A2
-_080901D2:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080901E4: .4byte sPSSData
-_080901E8: .4byte 0x00000a84
- thumb_func_end sub_80900D4
-
- thumb_func_start sub_80901EC
-sub_80901EC: @ 80901EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r7, 0
- movs r1, 0x41
- bl GetCurrentBoxMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r0, 0
- beq _08090286
- adds r0, r7, 0
- movs r1, 0x6
- bl __umodsi3
- adds r6, r0, 0
- lsls r0, r6, 24
- lsrs r0, 24
- lsls r5, r0, 1
- adds r5, r0
- lsls r5, 19
- movs r0, 0xC8
- lsls r0, 15
- adds r5, r0
- lsrs r5, 16
- adds r0, r7, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 19
- movs r0, 0xB0
- lsls r0, 14
- adds r4, r0
- lsrs r4, 16
- adds r0, r7, 0
- movs r1, 0
- bl GetCurrentBoxMonData
- adds r1, r0, 0
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x13
- subs r0, r6
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- mov r0, r8
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_80912E0
- adds r3, r0, 0
- ldr r0, _08090294 @ =sPSSData
- ldr r2, [r0]
- lsls r1, r7, 2
- ldr r4, _08090298 @ =0x00000a84
- adds r0, r2, r4
- adds r0, r1
- str r3, [r0]
- ldrb r0, [r2, 0x1]
- cmp r0, 0x3
- bne _08090286
- ldrb r0, [r3, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r3, 0x1]
-_08090286:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08090294: .4byte sPSSData
-_08090298: .4byte 0x00000a84
- thumb_func_end sub_80901EC
-
- thumb_func_start sub_809029C
-sub_809029C: @ 809029C
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r7, _080902D4 @ =sPSSData
- ldr r6, _080902D8 @ =0x00000a84
- movs r5, 0x1
- ldr r4, _080902DC @ =sub_8090324
-_080902AC:
- ldr r0, [r7]
- lsls r1, r2, 2
- adds r0, r6
- adds r1, r0, r1
- ldr r0, [r1]
- cmp r0, 0
- beq _080902C4
- strh r3, [r0, 0x32]
- ldr r0, [r1]
- strh r5, [r0, 0x36]
- ldr r0, [r1]
- str r4, [r0, 0x1C]
-_080902C4:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1D
- bls _080902AC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080902D4: .4byte sPSSData
-_080902D8: .4byte 0x00000a84
-_080902DC: .4byte sub_8090324
- thumb_func_end sub_809029C
-
- thumb_func_start sub_80902E0
-sub_80902E0: @ 80902E0
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x30]
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080902FC
- subs r0, r1, 0x1
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- b _08090312
-_080902FC:
- ldr r0, _08090318 @ =sPSSData
- ldr r1, [r0]
- ldr r3, _0809031C @ =0x00000c62
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrh r0, [r2, 0x34]
- strh r0, [r2, 0x20]
- ldr r0, _08090320 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_08090312:
- pop {r0}
- bx r0
- .align 2, 0
-_08090318: .4byte sPSSData
-_0809031C: .4byte 0x00000c62
-_08090320: .4byte SpriteCallbackDummy
- thumb_func_end sub_80902E0
-
- thumb_func_start sub_8090324
-sub_8090324: @ 8090324
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x36]
- movs r3, 0x36
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _08090338
- subs r0, r1, 0x1
- strh r0, [r2, 0x36]
- b _08090354
-_08090338:
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x38]
- subs r0, 0x45
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB6
- bls _08090354
- ldr r0, _08090358 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_08090354:
- pop {r0}
- bx r0
- .align 2, 0
-_08090358: .4byte SpriteCallbackDummy
- thumb_func_end sub_8090324
-
- thumb_func_start sub_809035C
-sub_809035C: @ 809035C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- ldr r7, _0809039C @ =sPSSData
-_08090366:
- ldr r0, [r7]
- lsls r4, r5, 2
- ldr r1, _080903A0 @ =0x00000a84
- adds r0, r1
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _08090386
- bl sub_80913C4
- ldr r0, [r7]
- ldr r1, _080903A0 @ =0x00000a84
- adds r0, r1
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_08090386:
- adds r0, r5, 0x6
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x4
- bls _08090366
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809039C: .4byte sPSSData
-_080903A0: .4byte 0x00000a84
- thumb_func_end sub_809035C
-
- thumb_func_start sub_80903A4
-sub_80903A4: @ 80903A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x8]
- lsls r2, 16
- movs r1, 0x2C
- mov r8, r1
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 19
- movs r3, 0xC8
- lsls r3, 15
- adds r1, r3
- lsrs r1, 16
- str r1, [sp, 0x10]
- ldr r1, [sp, 0x8]
- adds r1, 0x1
- lsrs r6, r2, 16
- str r6, [sp, 0xC]
- asrs r2, 16
- muls r1, r2
- ldr r2, [sp, 0x10]
- subs r1, r2, r1
- lsls r1, 16
- lsrs r2, r1, 16
- movs r1, 0x13
- subs r1, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- movs r3, 0
- mov r9, r3
- adds r5, r0, 0
- ldr r1, _08090488 @ =sPSSData
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- beq _08090498
- movs r7, 0x4
- lsls r2, 16
- mov r10, r2
-_08090404:
- ldr r6, _08090488 @ =sPSSData
- ldr r2, [r6]
- lsls r0, r5, 1
- ldr r3, _0809048C @ =0x00000ba4
- adds r1, r2, r3
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08090470
- lsls r4, r5, 2
- movs r6, 0xBE
- lsls r6, 4
- adds r1, r2, r6
- adds r1, r4
- ldr r1, [r1]
- mov r2, r8
- lsls r3, r2, 16
- asrs r3, 16
- movs r2, 0x2
- str r2, [sp]
- ldr r6, [sp, 0x14]
- str r6, [sp, 0x4]
- mov r6, r10
- asrs r2, r6, 16
- bl sub_80912E0
- adds r2, r0, 0
- ldr r1, _08090488 @ =sPSSData
- ldr r0, [r1]
- ldr r3, _08090490 @ =0x00000a84
- adds r0, r3
- adds r1, r0, r4
- str r2, [r1]
- cmp r2, 0
- beq _08090470
- mov r6, sp
- ldrh r6, [r6, 0x8]
- strh r6, [r2, 0x30]
- ldr r0, [r1]
- mov r2, sp
- ldrh r2, [r2, 0xC]
- strh r2, [r0, 0x32]
- ldr r0, [r1]
- mov r3, sp
- ldrh r3, [r3, 0x10]
- strh r3, [r0, 0x34]
- ldr r1, [r1]
- ldr r0, _08090494 @ =sub_80902E0
- str r0, [r1, 0x1C]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08090470:
- adds r0, r5, 0x6
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- adds r0, 0x18
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- subs r7, 0x1
- cmp r7, 0
- bge _08090404
- b _08090550
- .align 2, 0
-_08090488: .4byte sPSSData
-_0809048C: .4byte 0x00000ba4
-_08090490: .4byte 0x00000a84
-_08090494: .4byte sub_80902E0
-_08090498:
- mov r10, r1
- movs r7, 0x4
- lsls r2, 16
- str r2, [sp, 0x18]
-_080904A0:
- mov r6, r10
- ldr r2, [r6]
- lsls r0, r5, 1
- ldr r3, _08090564 @ =0x00000ba4
- adds r1, r2, r3
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0809053A
- lsls r4, r5, 2
- movs r6, 0xBE
- lsls r6, 4
- adds r1, r2, r6
- adds r1, r4
- ldr r1, [r1]
- mov r2, r8
- lsls r3, r2, 16
- asrs r3, 16
- movs r2, 0x2
- str r2, [sp]
- ldr r6, [sp, 0x14]
- str r6, [sp, 0x4]
- ldr r6, [sp, 0x18]
- asrs r2, r6, 16
- bl sub_80912E0
- adds r2, r0, 0
- mov r0, r10
- ldr r3, [r0]
- ldr r1, _08090568 @ =0x00000a84
- adds r0, r3, r1
- adds r1, r0, r4
- str r2, [r1]
- cmp r2, 0
- beq _0809053A
- mov r6, sp
- ldrh r6, [r6, 0x8]
- strh r6, [r2, 0x30]
- ldr r0, [r1]
- mov r2, sp
- ldrh r2, [r2, 0xC]
- strh r2, [r0, 0x32]
- ldr r0, [r1]
- mov r6, sp
- ldrh r6, [r6, 0x10]
- strh r6, [r0, 0x34]
- ldr r1, [r1]
- ldr r0, _0809056C @ =sub_80902E0
- str r0, [r1, 0x1C]
- ldr r1, _08090570 @ =0x00000c58
- adds r0, r3, r1
- ldrb r0, [r0]
- adds r1, r5, 0
- movs r2, 0xC
- bl GetBoxMonDataAt
- cmp r0, 0
- bne _08090530
- mov r2, r10
- ldr r0, [r2]
- ldr r3, _08090568 @ =0x00000a84
- adds r0, r3
- adds r0, r4
- ldr r2, [r0]
- ldrb r1, [r2, 0x1]
- movs r6, 0xD
- negs r6, r6
- adds r0, r6, 0
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r2, 0x1]
-_08090530:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0809053A:
- adds r0, r5, 0x6
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- adds r0, 0x18
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- subs r7, 0x1
- cmp r7, 0
- bge _080904A0
-_08090550:
- mov r0, r9
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08090564: .4byte 0x00000ba4
-_08090568: .4byte 0x00000a84
-_0809056C: .4byte sub_80902E0
-_08090570: .4byte 0x00000c58
- thumb_func_end sub_80903A4
-
- thumb_func_start sub_8090574
-sub_8090574: @ 8090574
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _080905D0 @ =sPSSData
- ldr r1, [r6]
- ldr r2, _080905D4 @ =0x00000c66
- adds r1, r2
- movs r5, 0
- strb r5, [r1]
- ldr r1, [r6]
- ldr r3, _080905D8 @ =0x00000c67
- adds r1, r3
- strb r0, [r1]
- ldr r1, [r6]
- ldr r7, _080905DC @ =0x00000c65
- adds r1, r7
- strb r4, [r1]
- ldr r3, [r6]
- ldr r1, _080905E0 @ =0x00000c5c
- adds r2, r3, r1
- movs r1, 0x20
- strh r1, [r2]
- lsls r4, 24
- asrs r4, 24
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 1
- negs r1, r1
- subs r7, 0x5
- adds r2, r3, r7
- strh r1, [r2]
- ldr r1, _080905E4 @ =0x00000c62
- adds r3, r1
- strh r5, [r3]
- bl sub_8090794
- cmp r4, 0
- ble _080905EC
- ldr r0, [r6]
- ldr r2, _080905E8 @ =0x00000c64
- adds r0, r2
- movs r1, 0
- b _080905F4
- .align 2, 0
-_080905D0: .4byte sPSSData
-_080905D4: .4byte 0x00000c66
-_080905D8: .4byte 0x00000c67
-_080905DC: .4byte 0x00000c65
-_080905E0: .4byte 0x00000c5c
-_080905E4: .4byte 0x00000c62
-_080905E8: .4byte 0x00000c64
-_080905EC:
- ldr r0, [r6]
- ldr r3, _08090620 @ =0x00000c64
- adds r0, r3
- movs r1, 0x5
-_080905F4:
- strb r1, [r0]
- ldr r0, _08090624 @ =sPSSData
- ldr r2, [r0]
- ldr r7, _08090620 @ =0x00000c64
- adds r0, r2, r7
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x64
- ldr r3, _08090628 @ =0x00000c5e
- adds r1, r2, r3
- strh r0, [r1]
- subs r7, 0x4
- adds r2, r7
- movs r1, 0
- ldrsh r0, [r2, r1]
- bl sub_809029C
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08090620: .4byte 0x00000c64
-_08090624: .4byte sPSSData
-_08090628: .4byte 0x00000c5e
- thumb_func_end sub_8090574
-
- thumb_func_start sub_809062C
-sub_809062C: @ 809062C
- push {r4-r6,lr}
- ldr r5, _08090658 @ =sPSSData
- ldr r0, [r5]
- ldr r4, _0809065C @ =0x00000c5c
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, 0
- beq _08090640
- subs r0, 0x1
- strh r0, [r1]
-_08090640:
- ldr r3, [r5]
- ldr r6, _08090660 @ =0x00000c66
- adds r0, r3, r6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080906C4
- cmp r0, 0x1
- bgt _08090664
- cmp r0, 0
- beq _0809066C
- b _08090782
- .align 2, 0
-_08090658: .4byte sPSSData
-_0809065C: .4byte 0x00000c5c
-_08090660: .4byte 0x00000c66
-_08090664:
- cmp r0, 0x2
- bne _0809066A
- b _08090770
-_0809066A:
- b _08090782
-_0809066C:
- ldr r0, _080906B8 @ =0x00000c5e
- adds r1, r3, r0
- movs r2, 0xC6
- lsls r2, 4
- adds r0, r3, r2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xBA
- bhi _0809068A
- b _0809078C
-_0809068A:
- ldr r1, _080906BC @ =0x00000c64
- adds r0, r3, r1
- ldrb r0, [r0]
- bl sub_809035C
- ldr r2, [r5]
- ldr r0, _080906B8 @ =0x00000c5e
- adds r3, r2, r0
- ldr r1, _080906C0 @ =0x00000c65
- adds r0, r2, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- adds r2, r6
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _0809078C
- .align 2, 0
-_080906B8: .4byte 0x00000c5e
-_080906BC: .4byte 0x00000c64
-_080906C0: .4byte 0x00000c65
-_080906C4:
- ldr r2, _08090728 @ =0x00000c5e
- adds r1, r3, r2
- movs r6, 0xC6
- lsls r6, 4
- adds r2, r3, r6
- ldrh r0, [r2]
- ldrh r6, [r1]
- adds r0, r6
- strh r0, [r1]
- ldr r6, _0809072C @ =0x00000c64
- adds r0, r3, r6
- ldrb r0, [r0]
- adds r1, r3, r4
- ldrh r1, [r1]
- movs r3, 0
- ldrsh r2, [r2, r3]
- bl sub_80903A4
- ldr r2, [r5]
- ldr r3, _08090730 @ =0x00000c62
- adds r1, r2, r3
- lsls r0, 24
- lsrs r0, 24
- ldrh r3, [r1]
- adds r0, r3
- strh r0, [r1]
- ldr r1, _08090734 @ =0x00000c65
- adds r0, r2, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- cmp r1, 0
- ble _0809070C
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _08090718
-_0809070C:
- cmp r1, 0
- bge _08090740
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, 0
- bne _08090740
-_08090718:
- ldr r0, _08090738 @ =sPSSData
- ldr r1, [r0]
- ldr r2, _0809073C @ =0x00000c66
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0809078C
- .align 2, 0
-_08090728: .4byte 0x00000c5e
-_0809072C: .4byte 0x00000c64
-_08090730: .4byte 0x00000c62
-_08090734: .4byte 0x00000c65
-_08090738: .4byte sPSSData
-_0809073C: .4byte 0x00000c66
-_08090740:
- ldr r3, _08090760 @ =sPSSData
- ldr r0, [r3]
- ldr r6, _08090764 @ =0x00000c64
- adds r1, r0, r6
- ldr r2, _08090768 @ =0x00000c65
- adds r0, r2
- ldrb r0, [r0]
- ldrb r6, [r1]
- adds r0, r6
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r3]
- ldr r1, _0809076C @ =0x00000c66
- adds r0, r1
- strb r2, [r0]
- b _0809078C
- .align 2, 0
-_08090760: .4byte sPSSData
-_08090764: .4byte 0x00000c64
-_08090768: .4byte 0x00000c65
-_0809076C: .4byte 0x00000c66
-_08090770:
- ldr r2, _08090788 @ =0x00000c62
- adds r0, r3, r2
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809078C
- adds r1, r3, r4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08090782:
- movs r0, 0
- b _0809078E
- .align 2, 0
-_08090788: .4byte 0x00000c62
-_0809078C:
- movs r0, 0x1
-_0809078E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809062C
-
- thumb_func_start sub_8090794
-sub_8090794: @ 8090794
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- movs r0, 0
- ldr r1, _08090810 @ =sPSSData
- mov r9, r1
-_080907A8:
- adds r0, 0x1
- mov r8, r0
- movs r7, 0x5
-_080907AE:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x41
- bl GetBoxMonDataAt
- mov r2, r9
- ldr r1, [r2]
- lsls r2, r5, 1
- ldr r3, _08090814 @ =0x00000ba4
- adds r1, r3
- adds r1, r2
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _080907EA
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0
- bl GetBoxMonDataAt
- mov r2, r9
- ldr r1, [r2]
- lsls r2, r5, 2
- movs r3, 0xBE
- lsls r3, 4
- adds r1, r3
- adds r1, r2
- str r0, [r1]
-_080907EA:
- adds r5, 0x1
- subs r7, 0x1
- cmp r7, 0
- bge _080907AE
- mov r0, r8
- cmp r0, 0x4
- ble _080907A8
- ldr r0, _08090810 @ =sPSSData
- ldr r0, [r0]
- ldr r1, _08090818 @ =0x00000c58
- adds r0, r1
- strb r6, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08090810: .4byte sPSSData
-_08090814: .4byte 0x00000ba4
-_08090818: .4byte 0x00000c58
- thumb_func_end sub_8090794
-
- thumb_func_start sub_809081C
-sub_809081C: @ 809081C
- push {r4,r5,lr}
- lsls r0, 24
- ldr r5, _08090848 @ =sPSSData
- ldr r1, [r5]
- lsrs r4, r0, 22
- ldr r0, _0809084C @ =0x00000a84
- adds r1, r0
- adds r1, r4
- ldr r0, [r1]
- cmp r0, 0
- beq _08090842
- bl sub_80913C4
- ldr r0, [r5]
- ldr r1, _0809084C @ =0x00000a84
- adds r0, r1
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_08090842:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08090848: .4byte sPSSData
-_0809084C: .4byte 0x00000a84
- thumb_func_end sub_809081C
-
- thumb_func_start sub_8090850
-sub_8090850: @ 8090850
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- ldr r1, _08090884 @ =sPSSData
- ldr r1, [r1]
- lsrs r0, 22
- ldr r3, _08090888 @ =0x00000a84
- adds r1, r3
- adds r1, r0
- ldr r3, [r1]
- cmp r3, 0
- beq _0809087E
- movs r0, 0x3
- adds r1, r2, 0
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
-_0809087E:
- pop {r0}
- bx r0
- .align 2, 0
-_08090884: .4byte sPSSData
-_08090888: .4byte 0x00000a84
- thumb_func_end sub_8090850
-
- thumb_func_start CreatePartyMonsSprites
-CreatePartyMonsSprites: @ 809088C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r4, _0809092C @ =gPlayerParty
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0x68
- movs r3, 0x40
- bl sub_80912E0
- ldr r1, _08090930 @ =sPSSData
- ldr r1, [r1]
- ldr r2, _08090934 @ =0x00000a6c
- adds r1, r2
- str r0, [r1]
- movs r7, 0x1
- movs r6, 0x1
-_080908D2:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, _0809092C @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _08090938
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r1, r0, 0
- subs r0, r6, 0x1
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 19
- movs r0, 0x80
- lsls r0, 13
- adds r3, r0
- asrs r3, 16
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0x98
- bl sub_80912E0
- ldr r1, _08090930 @ =sPSSData
- ldr r1, [r1]
- lsls r2, r6, 2
- ldr r3, _08090934 @ =0x00000a6c
- adds r1, r3
- adds r1, r2
- str r0, [r1]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- b _08090946
- .align 2, 0
-_0809092C: .4byte gPlayerParty
-_08090930: .4byte sPSSData
-_08090934: .4byte 0x00000a6c
-_08090938:
- ldr r0, _080909E8 @ =sPSSData
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r2, _080909EC @ =0x00000a6c
- adds r0, r2
- adds r0, r1
- str r5, [r0]
-_08090946:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _080908D2
- ldr r3, _080909E8 @ =sPSSData
- mov r0, r8
- cmp r0, 0
- bne _0809098A
- movs r6, 0
- cmp r6, r7
- bcs _0809098A
- mov r12, r3
- ldr r5, _080909EC @ =0x00000a6c
- movs r4, 0x4
-_08090964:
- mov r2, r12
- ldr r1, [r2]
- lsls r0, r6, 2
- adds r1, r5
- adds r1, r0
- ldr r2, [r1]
- ldrh r0, [r2, 0x22]
- subs r0, 0xA0
- strh r0, [r2, 0x22]
- ldr r1, [r1]
- adds r1, 0x3E
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r7
- bcc _08090964
-_0809098A:
- ldr r0, [r3]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x3
- bne _080909DA
- movs r6, 0
- adds r7, r3, 0
- ldr r5, _080909EC @ =0x00000a6c
-_08090998:
- ldr r0, [r7]
- lsls r4, r6, 2
- adds r0, r5
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080909D0
- movs r0, 0x64
- muls r0, r6
- ldr r1, _080909F0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- cmp r0, 0
- bne _080909D0
- ldr r0, [r7]
- adds r0, r5
- adds r0, r4
- ldr r2, [r0]
- ldrb r1, [r2, 0x1]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r2, 0x1]
-_080909D0:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _08090998
-_080909DA:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080909E8: .4byte sPSSData
-_080909EC: .4byte 0x00000a6c
-_080909F0: .4byte gPlayerParty
- thumb_func_end CreatePartyMonsSprites
-
- thumb_func_start sub_80909F4
-sub_80909F4: @ 80909F4
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, _08090A54 @ =sPSSData
- ldr r1, [r0]
- ldr r2, _08090A58 @ =0x00000c5a
- adds r1, r2
- movs r2, 0
- strb r2, [r1]
- movs r5, 0
- movs r6, 0
- adds r3, r0, 0
- ldr r7, _08090A5C @ =0x00000a6c
-_08090A0C:
- ldr r0, [r3]
- lsls r4, r5, 2
- adds r0, r7
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _08090A42
- cmp r5, r6
- beq _08090A3C
- adds r1, r6, 0
- str r3, [sp]
- bl sub_8090A74
- ldr r3, [sp]
- ldr r2, [r3]
- adds r0, r2, r7
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- ldr r0, _08090A58 @ =0x00000c5a
- adds r2, r0
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
-_08090A3C:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08090A42:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08090A0C
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08090A54: .4byte sPSSData
-_08090A58: .4byte 0x00000c5a
-_08090A5C: .4byte 0x00000a6c
- thumb_func_end sub_80909F4
-
- thumb_func_start sub_8090A60
-sub_8090A60: @ 8090A60
- ldr r0, _08090A6C @ =sPSSData
- ldr r0, [r0]
- ldr r1, _08090A70 @ =0x00000c5a
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08090A6C: .4byte sPSSData
-_08090A70: .4byte 0x00000c5a
- thumb_func_end sub_8090A60
-
- thumb_func_start sub_8090A74
-sub_8090A74: @ 8090A74
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- strh r1, [r2, 0x30]
- cmp r1, 0
- bne _08090A88
- movs r3, 0x68
- movs r4, 0x40
- b _08090A9A
-_08090A88:
- movs r3, 0x98
- subs r1, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 19
- movs r1, 0x80
- lsls r1, 13
- adds r0, r1
- lsrs r4, r0, 16
-_08090A9A:
- ldrh r0, [r2, 0x20]
- lsls r0, 3
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x22]
- lsls r0, 3
- strh r0, [r2, 0x34]
- lsls r1, r3, 3
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- subs r0, r1, r0
- cmp r0, 0
- bge _08090AB4
- adds r0, 0x7
-_08090AB4:
- asrs r0, 3
- strh r0, [r2, 0x36]
- lsls r0, r4, 16
- asrs r0, 13
- movs r3, 0x34
- ldrsh r1, [r2, r3]
- subs r0, r1
- cmp r0, 0
- bge _08090AC8
- adds r0, 0x7
-_08090AC8:
- asrs r0, 3
- strh r0, [r2, 0x38]
- movs r0, 0x8
- strh r0, [r2, 0x3A]
- ldr r0, _08090ADC @ =sub_8090AE0
- str r0, [r2, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08090ADC: .4byte sub_8090AE0
- thumb_func_end sub_8090A74
-
- thumb_func_start sub_8090AE0
-sub_8090AE0: @ 8090AE0
- push {r4,lr}
- adds r3, r0, 0
- ldrh r2, [r3, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08090B10
- ldrh r0, [r3, 0x36]
- ldrh r4, [r3, 0x32]
- adds r0, r4
- strh r0, [r3, 0x32]
- ldrh r1, [r3, 0x38]
- ldrh r4, [r3, 0x34]
- adds r1, r4
- strh r1, [r3, 0x34]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r3, 0x20]
- lsls r1, 16
- asrs r1, 19
- strh r1, [r3, 0x22]
- subs r0, r2, 0x1
- strh r0, [r3, 0x3A]
- b _08090B54
-_08090B10:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _08090B20
- movs r0, 0x68
- strh r0, [r3, 0x20]
- movs r0, 0x40
- b _08090B32
-_08090B20:
- movs r0, 0x98
- strh r0, [r3, 0x20]
- movs r4, 0x30
- ldrsh r1, [r3, r4]
- subs r1, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x10
-_08090B32:
- strh r0, [r3, 0x22]
- ldr r0, _08090B5C @ =SpriteCallbackDummy
- str r0, [r3, 0x1C]
- ldr r0, _08090B60 @ =sPSSData
- ldr r2, [r0]
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r1, 2
- ldr r4, _08090B64 @ =0x00000a6c
- adds r0, r2, r4
- adds r0, r1
- str r3, [r0]
- ldr r0, _08090B68 @ =0x00000c5a
- adds r2, r0
- ldrb r0, [r2]
- subs r0, 0x1
- strb r0, [r2]
-_08090B54:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08090B5C: .4byte SpriteCallbackDummy
-_08090B60: .4byte sPSSData
-_08090B64: .4byte 0x00000a6c
-_08090B68: .4byte 0x00000c5a
- thumb_func_end sub_8090AE0
-
- thumb_func_start sub_8090B6C
-sub_8090B6C: @ 8090B6C
- push {r4,lr}
- ldr r4, _08090B90 @ =sPSSData
- ldr r0, [r4]
- ldr r1, _08090B94 @ =0x00000a68
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _08090B8A
- bl sub_80913C4
- ldr r0, [r4]
- ldr r1, _08090B94 @ =0x00000a68
- adds r0, r1
- movs r1, 0
- str r1, [r0]
-_08090B8A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08090B90: .4byte sPSSData
-_08090B94: .4byte 0x00000a68
- thumb_func_end sub_8090B6C
-
- thumb_func_start sub_8090B98
-sub_8090B98: @ 8090B98
- push {r4-r6,lr}
- movs r3, 0
- ldr r6, _08090BEC @ =sPSSData
- lsls r0, 16
- asrs r4, r0, 16
- movs r5, 0x5
- negs r5, r5
-_08090BA6:
- ldr r0, [r6]
- lsls r1, r3, 2
- ldr r2, _08090BF0 @ =0x00000a6c
- adds r0, r2
- adds r2, r0, r1
- ldr r1, [r2]
- cmp r1, 0
- beq _08090BFE
- ldrh r0, [r1, 0x22]
- adds r0, r4, r0
- strh r0, [r1, 0x22]
- ldr r2, [r2]
- ldrh r1, [r2, 0x26]
- ldrh r0, [r2, 0x22]
- adds r1, r0
- adds r0, r2, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 13
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0xC0
- bls _08090BF4
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _08090BFE
- .align 2, 0
-_08090BEC: .4byte sPSSData
-_08090BF0: .4byte 0x00000a6c
-_08090BF4:
- adds r2, 0x3E
- ldrb r1, [r2]
- adds r0, r5, 0
- ands r0, r1
- strb r0, [r2]
-_08090BFE:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _08090BA6
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8090B98
-
- thumb_func_start sub_8090C10
-sub_8090C10: @ 8090C10
- push {r4,r5,lr}
- lsls r0, 24
- ldr r5, _08090C3C @ =sPSSData
- ldr r1, [r5]
- lsrs r4, r0, 22
- ldr r0, _08090C40 @ =0x00000a6c
- adds r1, r0
- adds r1, r4
- ldr r0, [r1]
- cmp r0, 0
- beq _08090C36
- bl sub_80913C4
- ldr r0, [r5]
- ldr r1, _08090C40 @ =0x00000a6c
- adds r0, r1
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_08090C36:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08090C3C: .4byte sPSSData
-_08090C40: .4byte 0x00000a6c
- thumb_func_end sub_8090C10
-
- thumb_func_start DestroyAllPartyMonIcons
-DestroyAllPartyMonIcons: @ 8090C44
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _08090C7C @ =sPSSData
-_08090C4A:
- ldr r0, [r6]
- lsls r4, r5, 2
- ldr r1, _08090C80 @ =0x00000a6c
- adds r0, r1
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _08090C6A
- bl sub_80913C4
- ldr r0, [r6]
- ldr r1, _08090C80 @ =0x00000a6c
- adds r0, r1
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_08090C6A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08090C4A
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08090C7C: .4byte sPSSData
-_08090C80: .4byte 0x00000a6c
- thumb_func_end DestroyAllPartyMonIcons
-
- thumb_func_start sub_8090C84
-sub_8090C84: @ 8090C84
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- ldr r1, _08090CB8 @ =sPSSData
- ldr r1, [r1]
- lsrs r0, 22
- ldr r3, _08090CBC @ =0x00000a6c
- adds r1, r3
- adds r1, r0
- ldr r3, [r1]
- cmp r3, 0
- beq _08090CB2
- movs r0, 0x3
- adds r1, r2, 0
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
-_08090CB2:
- pop {r0}
- bx r0
- .align 2, 0
-_08090CB8: .4byte sPSSData
-_08090CBC: .4byte 0x00000a6c
- thumb_func_end sub_8090C84
-
- thumb_func_start sub_8090CC0
-sub_8090CC0: @ 8090CC0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r5, r1, 0
- cmp r4, 0
- bne _08090CF0
- ldr r3, _08090CE8 @ =sPSSData
- ldr r0, [r3]
- ldr r5, _08090CEC @ =0x00000a68
- adds r2, r0, r5
- lsls r1, 2
- adds r5, 0x4
- adds r0, r5
- adds r0, r1
- ldr r1, [r0]
- str r1, [r2]
- str r4, [r0]
- b _08090D0C
- .align 2, 0
-_08090CE8: .4byte sPSSData
-_08090CEC: .4byte 0x00000a68
-_08090CF0:
- cmp r4, 0x1
- bne _08090D42
- ldr r3, _08090D48 @ =sPSSData
- ldr r0, [r3]
- ldr r1, _08090D4C @ =0x00000a68
- adds r2, r0, r1
- lsls r1, r5, 2
- ldr r4, _08090D50 @ =0x00000a84
- adds r0, r4
- adds r0, r1
- ldr r1, [r0]
- str r1, [r2]
- movs r1, 0
- str r1, [r0]
-_08090D0C:
- adds r5, r3, 0
- ldr r0, [r5]
- ldr r4, _08090D4C @ =0x00000a68
- adds r0, r4
- ldr r1, [r0]
- ldr r0, _08090D54 @ =sub_80911B0
- str r0, [r1, 0x1C]
- bl sub_8090058
- ldr r1, [r5]
- adds r1, r4
- ldr r3, [r1]
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r5]
- adds r0, r4
- ldr r0, [r0]
- adds r0, 0x43
- movs r1, 0x7
- strb r1, [r0]
-_08090D42:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08090D48: .4byte sPSSData
-_08090D4C: .4byte 0x00000a68
-_08090D50: .4byte 0x00000a84
-_08090D54: .4byte sub_80911B0
- thumb_func_end sub_8090CC0
-
- thumb_func_start sub_8090D58
-sub_8090D58: @ 8090D58
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r0, 0xE
- bne _08090DA4
- ldr r3, _08090D98 @ =sPSSData
- ldr r1, [r3]
- lsls r5, r6, 2
- ldr r4, _08090D9C @ =0x00000a6c
- adds r0, r1, r4
- adds r0, r5
- ldr r2, _08090DA0 @ =0x00000a68
- adds r1, r2
- ldr r2, [r1]
- str r2, [r0]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r3]
- adds r0, r4
- adds r0, r5
- ldr r0, [r0]
- adds r0, 0x43
- movs r1, 0xC
- strb r1, [r0]
- b _08090DE0
- .align 2, 0
-_08090D98: .4byte sPSSData
-_08090D9C: .4byte 0x00000a6c
-_08090DA0: .4byte 0x00000a68
-_08090DA4:
- ldr r5, _08090DF8 @ =sPSSData
- ldr r1, [r5]
- lsls r4, r6, 2
- ldr r3, _08090DFC @ =0x00000a84
- adds r0, r1, r3
- adds r0, r4
- ldr r2, _08090E00 @ =0x00000a68
- adds r1, r2
- ldr r2, [r1]
- str r2, [r0]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r5]
- adds r0, r3
- adds r0, r4
- ldr r4, [r0]
- adds r0, r6, 0
- movs r1, 0x6
- bl __umodsi3
- movs r1, 0x13
- subs r1, r0
- adds r4, 0x43
- strb r1, [r4]
- adds r3, r5, 0
-_08090DE0:
- ldr r1, [r3]
- ldr r0, _08090E00 @ =0x00000a68
- adds r1, r0
- ldr r2, [r1]
- ldr r0, _08090E04 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- movs r0, 0
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08090DF8: .4byte sPSSData
-_08090DFC: .4byte 0x00000a84
-_08090E00: .4byte 0x00000a68
-_08090E04: .4byte SpriteCallbackDummy
- thumb_func_end sub_8090D58
-
- thumb_func_start sub_8090E08
-sub_8090E08: @ 8090E08
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r0, 0xE
- bne _08090E30
- ldr r3, _08090E24 @ =sPSSData
- ldr r1, [r3]
- ldr r0, _08090E28 @ =0x00000afc
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _08090E2C @ =0x00000a6c
- b _08090E3C
- .align 2, 0
-_08090E24: .4byte sPSSData
-_08090E28: .4byte 0x00000afc
-_08090E2C: .4byte 0x00000a6c
-_08090E30:
- ldr r3, _08090E5C @ =sPSSData
- ldr r1, [r3]
- ldr r0, _08090E60 @ =0x00000afc
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _08090E64 @ =0x00000a84
-_08090E3C:
- adds r0, r4
- adds r1, r0
- str r1, [r2]
- ldr r1, [r3]
- ldr r2, _08090E68 @ =0x00000a68
- adds r0, r1, r2
- ldr r2, [r0]
- ldr r0, _08090E6C @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- ldr r4, _08090E70 @ =0x00000c59
- adds r1, r4
- movs r0, 0
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08090E5C: .4byte sPSSData
-_08090E60: .4byte 0x00000afc
-_08090E64: .4byte 0x00000a84
-_08090E68: .4byte 0x00000a68
-_08090E6C: .4byte SpriteCallbackDummy
-_08090E70: .4byte 0x00000c59
- thumb_func_end sub_8090E08
-
- thumb_func_start sub_8090E74
-sub_8090E74: @ 8090E74
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r6, _08090E90 @ =sPSSData
- ldr r0, [r6]
- ldr r1, _08090E94 @ =0x00000c59
- mov r9, r1
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0x10
- bne _08090E98
- movs r0, 0
- b _08090FA0
- .align 2, 0
-_08090E90: .4byte sPSSData
-_08090E94: .4byte 0x00000c59
-_08090E98:
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, [r6]
- ldr r5, _08090FAC @ =0x00000c59
- adds r0, r2, r5
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08090EC6
- ldr r1, _08090FB0 @ =0x00000afc
- adds r0, r2, r1
- ldr r0, [r0]
- ldr r1, [r0]
- ldrh r0, [r1, 0x22]
- subs r0, 0x1
- strh r0, [r1, 0x22]
- ldr r5, _08090FB4 @ =0x00000a68
- adds r0, r2, r5
- ldr r1, [r0]
- ldrh r0, [r1, 0x22]
- adds r0, 0x1
- strh r0, [r1, 0x22]
-_08090EC6:
- ldr r3, [r6]
- ldr r7, _08090FB0 @ =0x00000afc
- adds r4, r3, r7
- ldr r0, [r4]
- ldr r0, [r0]
- mov r8, r0
- ldr r5, _08090FB8 @ =gSineTable
- mov r0, r9
- adds r1, r3, r0
- ldrb r0, [r1]
- lsls r0, 4
- adds r0, r5
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _08090EE8
- adds r0, 0xF
-_08090EE8:
- asrs r0, 4
- mov r2, r8
- strh r0, [r2, 0x24]
- ldr r0, _08090FB4 @ =0x00000a68
- mov r8, r0
- add r3, r8
- ldr r2, [r3]
- ldrb r0, [r1]
- lsls r0, 4
- adds r0, r5
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0
- bge _08090F06
- adds r0, 0xF
-_08090F06:
- asrs r0, 4
- negs r0, r0
- strh r0, [r2, 0x24]
- ldrb r0, [r1]
- cmp r0, 0x8
- bne _08090F6A
- ldr r3, [r3]
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- movs r5, 0x3
- movs r1, 0xC
- ands r1, r0
- ldrb r2, [r3, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r6]
- mov r2, r8
- adds r1, r0, r2
- ldr r1, [r1]
- adds r0, r7
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, 0x43
- ldrb r0, [r0]
- adds r1, 0x43
- strb r0, [r1]
- bl sub_8090058
- ldr r1, [r6]
- adds r1, r7
- ldr r1, [r1]
- ldr r1, [r1]
- ands r5, r0
- lsls r5, 2
- ldrb r0, [r1, 0x5]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0x5]
- ldr r0, [r6]
- adds r0, r7
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, 0x43
- movs r1, 0x7
- strb r1, [r0]
-_08090F6A:
- ldr r1, [r6]
- mov r5, r9
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x10
- bne _08090F9E
- mov r0, r8
- adds r2, r1, r0
- ldr r3, [r2]
- adds r1, r7
- ldr r0, [r1]
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r1]
- str r3, [r0]
- ldr r1, [r6]
- mov r2, r8
- adds r0, r1, r2
- ldr r2, [r0]
- ldr r0, _08090FBC @ =sub_80911B0
- str r0, [r2, 0x1C]
- adds r1, r7
- ldr r0, [r1]
- ldr r1, [r0]
- ldr r0, _08090FC0 @ =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_08090F9E:
- movs r0, 0x1
-_08090FA0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08090FAC: .4byte 0x00000c59
-_08090FB0: .4byte 0x00000afc
-_08090FB4: .4byte 0x00000a68
-_08090FB8: .4byte gSineTable
-_08090FBC: .4byte sub_80911B0
-_08090FC0: .4byte SpriteCallbackDummy
- thumb_func_end sub_8090E74
-
- thumb_func_start sub_8090FC4
-sub_8090FC4: @ 8090FC4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r0, 0x1
- beq _08090FFC
- cmp r0, 0x1
- bgt _08090FDE
- cmp r0, 0
- beq _08090FE4
- b _08091072
-_08090FDE:
- cmp r2, 0x2
- beq _0809101C
- b _08091072
-_08090FE4:
- ldr r3, _08090FF4 @ =sPSSData
- ldr r1, [r3]
- movs r0, 0xB0
- lsls r0, 4
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _08090FF8 @ =0x00000a6c
- b _0809100A
- .align 2, 0
-_08090FF4: .4byte sPSSData
-_08090FF8: .4byte 0x00000a6c
-_08090FFC:
- ldr r3, _08091014 @ =sPSSData
- ldr r1, [r3]
- movs r0, 0xB0
- lsls r0, 4
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _08091018 @ =0x00000a84
-_0809100A:
- adds r0, r4
- adds r1, r0
- str r1, [r2]
- adds r4, r3, 0
- b _0809102E
- .align 2, 0
-_08091014: .4byte sPSSData
-_08091018: .4byte 0x00000a84
-_0809101C:
- ldr r0, _08091078 @ =sPSSData
- ldr r1, [r0]
- movs r3, 0xB0
- lsls r3, 4
- adds r2, r1, r3
- ldr r4, _0809107C @ =0x00000a68
- adds r1, r4
- str r1, [r2]
- adds r4, r0, 0
-_0809102E:
- ldr r0, [r4]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _08091072
- bl InitSpriteAffineAnim
- ldr r0, [r4]
- movs r3, 0xB0
- lsls r3, 4
- adds r0, r3
- ldr r0, [r0]
- ldr r2, [r0]
- ldrb r1, [r2, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r1, [r4]
- adds r1, r3
- ldr r0, [r1]
- ldr r2, [r0]
- ldr r0, _08091080 @ =gUnknown_83CEC38
- str r0, [r2, 0x10]
- ldr r0, [r1]
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAffineAnim
-_08091072:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08091078: .4byte sPSSData
-_0809107C: .4byte 0x00000a68
-_08091080: .4byte gUnknown_83CEC38
- thumb_func_end sub_8090FC4
-
thumb_func_start sub_8091084
sub_8091084: @ 8091084
push {lr}
@@ -2322,7 +69,7 @@ sub_80910CC: @ 80910CC
adds r0, r1
ldr r0, [r0]
ldr r0, [r0]
- bl sub_80913C4
+ bl DestroyBoxMonIcon
ldr r0, [r4]
movs r1, 0xB0
lsls r1, 4
@@ -2590,8 +337,8 @@ _080912DA:
bx r0
thumb_func_end sub_8091290
- thumb_func_start sub_80912E0
-sub_80912E0: @ 80912E0
+ thumb_func_start CreateMonIconSprite
+CreateMonIconSprite: @ 80912E0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -2698,10 +445,10 @@ _080913B4:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80912E0
+ thumb_func_end CreateMonIconSprite
- thumb_func_start sub_80913C4
-sub_80913C4: @ 80913C4
+ thumb_func_start DestroyBoxMonIcon
+DestroyBoxMonIcon: @ 80913C4
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
@@ -2711,7 +458,7 @@ sub_80913C4: @ 80913C4
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_80913C4
+ thumb_func_end DestroyBoxMonIcon
thumb_func_start sub_80913DC
sub_80913DC: @ 80913DC
@@ -4708,7 +2455,7 @@ sub_8092340: @ 8092340
ldr r1, _08092394 @ =gUnknown_20397BC
movs r2, 0x64
bl memcpy
- bl sub_8090070
+ bl CreateMovingMonIcon
_0809237A:
pop {r0}
bx r0
@@ -6470,7 +4217,7 @@ _08093102:
lsrs r1, r4, 24
adds r0, r6, 0
bl diegohint2
- bl sub_8090B6C
+ bl DestroyMovingMonIcon
movs r0, 0
strb r0, [r5]
b _0809313E
@@ -6486,7 +4233,7 @@ _08093124:
adds r0, r6, 0
bl diegohint2
ldrb r0, [r5]
- bl sub_8090C10
+ bl DestroyPartyMonIcon
_0809313E:
bl StorageGetCurrentBox
lsls r0, 24
@@ -7592,8 +5339,8 @@ _080939EC: .4byte sBoxCursorArea
_080939F0: .4byte sBoxCursorPosition
thumb_func_end IsCursorOnCloseBox
- thumb_func_start sub_80939F4
-sub_80939F4: @ 80939F4
+ thumb_func_start IsCursorInBox
+IsCursorInBox: @ 80939F4
push {lr}
movs r1, 0
ldr r0, _08093A0C @ =sBoxCursorArea
@@ -7609,7 +5356,7 @@ _08093A06:
bx r1
.align 2, 0
_08093A0C: .4byte sBoxCursorArea
- thumb_func_end sub_80939F4
+ thumb_func_end IsCursorInBox
thumb_func_start sub_8093A10
sub_8093A10: @ 8093A10
@@ -11585,7 +9332,7 @@ _080958CC:
subs r4, r7, r4
_080958E8:
adds r0, r5, 0
- bl sub_809081C
+ bl DestroyBoxMonIconAtPosition
mov r0, r8
adds r1, r5, 0
bl ZeroBoxMonAt
@@ -12228,7 +9975,7 @@ Item_FromMonToMoving: @ 8095D84
bl SetCurrentBoxMonData
adds r0, r5, 0
movs r1, 0x1
- bl sub_8090850
+ bl SetBoxMonIconObjMode
b _08095E04
.align 2, 0
_08095DE8: .4byte sPSSData
@@ -12242,7 +9989,7 @@ _08095DEC:
bl SetMonData
adds r0, r7, 0
movs r1, 0x1
- bl sub_8090C84
+ bl SetPartyMonIconObjMode
_08095E04:
ldr r0, _08095E20 @ =sPSSData
ldr r0, [r0]
@@ -12455,7 +10202,7 @@ Item_GiveMovingToMon: @ 8095F74
bl SetCurrentBoxMonData
adds r0, r5, 0
movs r1, 0
- bl sub_8090850
+ bl SetBoxMonIconObjMode
b _08095FF4
.align 2, 0
_08095FCC: .4byte sPSSData
@@ -12474,7 +10221,7 @@ _08095FD4:
bl SetMonData
mov r0, r8
movs r1, 0
- bl sub_8090C84
+ bl SetPartyMonIconObjMode
_08095FF4:
pop {r3}
mov r8, r3
@@ -12525,7 +10272,7 @@ Item_TakeMons: @ 8096008
bl SetCurrentBoxMonData
adds r0, r5, 0
movs r1, 0x1
- bl sub_8090850
+ bl SetBoxMonIconObjMode
b _0809607C
.align 2, 0
_08096060: .4byte sPSSData
@@ -12539,7 +10286,7 @@ _08096064:
bl SetMonData
adds r0, r7, 0
movs r1, 0x1
- bl sub_8090C84
+ bl SetPartyMonIconObjMode
_0809607C:
add sp, 0x4
pop {r4-r7}
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index 70a682949..092eeed5a 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -6,25 +6,6 @@
.section .rodata
.align 2
-gUnknown_83CEBF0:: @ 83CEBF0 spr_template
- spr_template 18, 56000, gUnknown_83CEC08, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83CEC08::
- .4byte 0x80000000, 0x00000000
-
-gUnknown_83CEC10::
- obj_rot_scal_anim_frame -2, -2, 0, 120
- obj_rot_scal_anim_end
-
-gUnknown_83CEC20::
- obj_rot_scal_anim_frame 16, 16, 0, 0
- obj_rot_scal_anim_frame 16, 16, 0, 15
- obj_rot_scal_anim_end
-
-gUnknown_83CEC38:: @ 83CEC38 dataptr
- .4byte gUnknown_83CEC10
- .4byte gUnknown_83CEC20
-
gUnknown_83CEC40:: @ 83CEC40
.incbin "graphics/interface/pss_unk_83CEC40.gbapal"
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 85d704680..0bc96eb35 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1365,7 +1365,7 @@
#define FLAG_SYS_NATIONAL_DEX (SYS_FLAGS + 0x40)
#define FLAG_SYS_PC_STORAGE_DISABLED (SYS_FLAGS + 0x41)
#define FLAG_SYS_INFORMED_OF_LOCAL_WIRELESS_PLAYER (SYS_FLAGS + 0x42)
-#define FLAG_SYS_CHANGED_BOX_TO_STORE_MON (SYS_FLAGS + 0x43)
+#define FLAG_SHOWN_BOX_WAS_FULL_MESSAGE (SYS_FLAGS + 0x43)
#define FLAG_SYS_CAN_LINK_WITH_RS (SYS_FLAGS + 0x44)
#define FLAG_SYS_SEVII_MAP_123 (SYS_FLAGS + 0x45)
#define FLAG_SYS_SEVII_MAP_4567 (SYS_FLAGS + 0x46)
diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h
index 1e7430dd9..28b39cb7c 100644
--- a/include/pokemon_storage_system_internal.h
+++ b/include/pokemon_storage_system_internal.h
@@ -4,6 +4,16 @@
#include "pokemon_storage_system.h"
#include "mon_markings.h"
+#define IN_BOX_COLUMNS 5
+#define IN_BOX_ROWS 6
+
+enum
+{
+ MODE_PARTY,
+ MODE_BOX,
+ MODE_2,
+};
+
enum
{
BOX_OPTION_WITHDRAW,
diff --git a/src/field_specials.c b/src/field_specials.c
index aa95f87a0..474fcd081 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1980,11 +1980,11 @@ u16 GetPCBoxToSendMon(void)
bool8 ShouldShowBoxWasFullMessage(void)
{
- if (FlagGet(FLAG_SYS_CHANGED_BOX_TO_STORE_MON))
+ if (FlagGet(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE))
return FALSE;
if (StorageGetCurrentBox() == VarGet(VAR_PC_BOX_TO_SEND_MON))
return FALSE;
- FlagSet(FLAG_SYS_CHANGED_BOX_TO_STORE_MON);
+ FlagSet(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
return TRUE;
}
@@ -2001,7 +2001,7 @@ bool8 IsDestinationBoxFull(void)
if (GetBoxMonData(GetBoxedMonPtr(i, j), MON_DATA_SPECIES, NULL) == SPECIES_NONE)
{
if (GetPCBoxToSendMon() != i)
- FlagClear(FLAG_SYS_CHANGED_BOX_TO_STORE_MON);
+ FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
VarSet(VAR_PC_BOX_TO_SEND_MON, i);
return ShouldShowBoxWasFullMessage();
}
diff --git a/src/pokemon.c b/src/pokemon.c
index 641c7cb0f..b9e62502d 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -3661,7 +3661,7 @@ static u8 SendMonToPC(struct Pokemon* mon)
gSpecialVar_MonBoxId = boxNo;
gSpecialVar_MonBoxPos = boxPos;
if (GetPCBoxToSendMon() != boxNo)
- FlagClear(FLAG_SYS_CHANGED_BOX_TO_STORE_MON);
+ FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
VarSet(VAR_PC_BOX_TO_SEND_MON, boxNo);
return MON_GIVEN_TO_PC;
}
diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c
index 3378bcef5..da943f74b 100644
--- a/src/pokemon_storage_system_3.c
+++ b/src/pokemon_storage_system_3.c
@@ -4,6 +4,7 @@
#include "data.h"
#include "decompress.h"
#include "dynamic_placeholder_text_util.h"
+#include "event_data.h"
#include "graphics.h"
#include "help_system.h"
#include "item.h"
@@ -13,15 +14,19 @@
#include "naming_screen.h"
#include "new_menu_helpers.h"
#include "pc_screen_effect.h"
+#include "pokemon_icon.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 "trig.h"
#include "constants/items.h"
#include "constants/help_system.h"
#include "constants/songs.h"
+#include "constants/flags.h"
+#include "constants/vars.h"
EWRAM_DATA struct PokemonStorageSystemData *sPSSData = NULL;
EWRAM_DATA bool8 sInPartyMenu = 0;
@@ -99,16 +104,25 @@ void AddWallpaperSetsMenu(void);
void AddWallpapersMenu(u8 wallpaperSet);
void sub_808FDFC(void);
void sub_808FE54(u8 species);
-bool8 IsCursorOnBox(void);
void sub_808FF70(void);
+
void sub_808FFAC(void);
+struct Sprite * CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority);
+void sub_8090324(struct Sprite * sprite);
+void SetBoxSpeciesAndPersonalities(u8 boxId);
void CreatePartyMonsSprites(bool8 species);
void sub_80909F4(void);
bool8 sub_8090A60(void);
+void sub_8090A74(struct Sprite * sprite, u16 idx);
+void sub_8090AE0(struct Sprite * sprite);
void sub_8090B98(s16 yDelta);
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);
bool8 sub_809140C(void);
void sub_80920FC(bool8 species);
@@ -354,6 +368,49 @@ const struct SpriteTemplate sSpriteTemplate_Waveform = {
.callback = SpriteCallbackDummy,
};
+const struct OamData gUnknown_83CEC08;
+
+const struct SpriteTemplate gUnknown_83CEBF0 = {
+ .tileTag = TAG_TILE_12,
+ .paletteTag = TAG_PAL_DAC0,
+ .oam = &gUnknown_83CEC08,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+const struct OamData gUnknown_83CEC08 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0x000,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+const union AffineAnimCmd gUnknown_83CEC10[] = {
+ AFFINEANIMCMD_FRAME(-2, -2, 0, 120),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_83CEC20[] = {
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(16, 16, 0, 15),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gUnknown_83CEC38[] = {
+ gUnknown_83CEC10,
+ gUnknown_83CEC20
+};
+
void VblankCb_PSS(void)
{
LoadOam();
@@ -2694,7 +2751,7 @@ void sub_808FE54(u8 action)
struct PssQuestLogBuffer * qlogBuffer;
if (sInPartyMenu)
{
- toBox = 14;
+ toBox = TOTAL_BOXES_COUNT;
species2 = GetMonData(&gPlayerParty[GetBoxCursorPosition()], MON_DATA_SPECIES2);
}
else
@@ -2711,14 +2768,14 @@ void sub_808FE54(u8 action)
case 0:
if (sInPartyMenu)
{
- if (fromBox == 14)
+ if (fromBox == TOTAL_BOXES_COUNT)
return;
else
event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON;
}
else
{
- if (fromBox == 14)
+ if (fromBox == TOTAL_BOXES_COUNT)
// Should upmerge but doesn't
event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON;
else
@@ -2736,14 +2793,14 @@ void sub_808FE54(u8 action)
qlogBuffer->toBox = 0xFF;
if (sInPartyMenu)
{
- if (fromBox == 14)
+ if (fromBox == TOTAL_BOXES_COUNT)
return;
else
event = QL_EVENT_WITHDREW_MON_PC;
}
else
{
- if (fromBox == 14)
+ if (fromBox == TOTAL_BOXES_COUNT)
{
event = QL_EVENT_DEPOSITED_MON_PC;
qlogBuffer->fromBox = toBox;
@@ -2774,3 +2831,606 @@ void sub_808FE54(u8 action)
}
SetQuestLogEvent(event, (const void *)qlogBuffer);
}
+
+void sub_808FF70(void)
+{
+ if (sLastUsedBox != StorageGetCurrentBox())
+ {
+ FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
+ VarSet(VAR_PC_BOX_TO_SEND_MON, StorageGetCurrentBox());
+ }
+}
+
+void sub_808FFAC(void)
+{
+ u16 i;
+
+ LoadMonIconPalettes();
+ for (i = 0; i < 40; i++)
+ sPSSData->field_B08[i] = 0;
+ for (i = 0; i < 40; i++)
+ sPSSData->field_B58[i] = 0;
+ for (i = 0; i < PARTY_SIZE; i++)
+ sPSSData->partySprites[i] = NULL;
+ for (i = 0; i < IN_BOX_COUNT; i++)
+ sPSSData->boxMonsSprites[i] = NULL;
+
+ sPSSData->movingMonSprite = NULL;
+ sPSSData->field_78C = 0;
+}
+
+// ******************************************************************
+// Mon icons
+// ******************************************************************
+
+u8 sub_8090058(void)
+{
+ return (IsCursorInBox() ? 2 : 1);
+}
+
+void CreateMovingMonIcon(void)
+{
+ u32 personality = GetMonData(&sPSSData->movingMon, MON_DATA_PERSONALITY);
+ u16 species = GetMonData(&sPSSData->movingMon, MON_DATA_SPECIES2);
+ u8 priority = sub_8090058();
+
+ sPSSData->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7);
+ sPSSData->movingMonSprite->callback = sub_80911B0;
+}
+
+void sub_80900D4(u8 boxId)
+{
+ u8 boxPosition;
+ u16 i, j, count;
+ u16 species;
+ u32 personality;
+
+ count = 0;
+ boxPosition = 0;
+ for (i = 0; i < IN_BOX_COLUMNS; i++)
+ {
+ for (j = 0; j < IN_BOX_ROWS; j++)
+ {
+ species = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE)
+ {
+ personality = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY);
+ sPSSData->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j);
+ }
+ else
+ {
+ sPSSData->boxMonsSprites[count] = NULL;
+ }
+ boxPosition++;
+ count++;
+ }
+ }
+
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ {
+ for (boxPosition = 0; boxPosition < IN_BOX_COUNT; boxPosition++)
+ {
+ if (GetBoxMonDataAt(boxId, boxPosition, MON_DATA_HELD_ITEM) == 0)
+ sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
+ }
+ }
+}
+
+void sub_80901EC(u8 boxPosition)
+{
+ u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES2);
+
+ if (species != SPECIES_NONE)
+ {
+ s16 x = 8 * (3 * (boxPosition % IN_BOX_ROWS)) + 100;
+ s16 y = 8 * (3 * (boxPosition / IN_BOX_ROWS)) + 44;
+ u32 personality = GetCurrentBoxMonData(boxPosition, MON_DATA_PERSONALITY);
+
+ sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_ROWS));
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
+ }
+}
+
+void sub_809029C(s16 arg0)
+{
+ u16 i;
+
+ for (i = 0; i < IN_BOX_COUNT; i++)
+ {
+ if (sPSSData->boxMonsSprites[i] != NULL)
+ {
+ sPSSData->boxMonsSprites[i]->data[2] = arg0;
+ sPSSData->boxMonsSprites[i]->data[4] = 1;
+ sPSSData->boxMonsSprites[i]->callback = sub_8090324;
+ }
+ }
+}
+
+void sub_80902E0(struct Sprite *sprite)
+{
+ if (sprite->data[1] != 0)
+ {
+ sprite->data[1]--;
+ sprite->pos1.x += sprite->data[2];
+ }
+ else
+ {
+ sPSSData->field_C66--;
+ sprite->pos1.x = sprite->data[3];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void sub_8090324(struct Sprite *sprite)
+{
+ if (sprite->data[4] != 0)
+ {
+ sprite->data[4]--;
+ }
+ else
+ {
+ sprite->pos1.x += sprite->data[2];
+ sprite->data[5] = sprite->pos1.x + sprite->pos2.x;
+ if (sprite->data[5] <= 68 || sprite->data[5] >= 252)
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void DestroyAllIconsInRow(u8 row)
+{
+ u16 column;
+ u8 boxPosition = row;
+
+ for (column = 0; column < IN_BOX_COLUMNS; column++)
+ {
+ if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ {
+ DestroyBoxMonIcon(sPSSData->boxMonsSprites[boxPosition]);
+ sPSSData->boxMonsSprites[boxPosition] = NULL;
+ }
+ boxPosition += IN_BOX_ROWS;
+ }
+}
+
+u8 sub_80903A4(u8 row, u16 times, s16 xDelta)
+{
+ s32 i;
+ u16 y = 44;
+ s16 xDest = 8 * (3 * row) + 100;
+ u16 x = xDest - ((times + 1) * xDelta);
+ u8 subpriority = 19 - row;
+ u8 count = 0;
+ u8 boxPosition = row;
+
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ {
+ for (i = 0; i < IN_BOX_COLUMNS; i++)
+ {
+ if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE)
+ {
+ sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(sPSSData->boxSpecies[boxPosition],
+ sPSSData->boxPersonalities[boxPosition],
+ x, y, 2, subpriority);
+ if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ {
+ sPSSData->boxMonsSprites[boxPosition]->data[1] = times;
+ sPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta;
+ sPSSData->boxMonsSprites[boxPosition]->data[3] = xDest;
+ sPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0;
+ count++;
+ }
+ }
+ boxPosition += IN_BOX_ROWS;
+ y += 24;
+ }
+ }
+ else
+ {
+ for (i = 0; i < IN_BOX_COLUMNS; i++)
+ {
+ if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE)
+ {
+ sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(sPSSData->boxSpecies[boxPosition],
+ sPSSData->boxPersonalities[boxPosition],
+ x, y, 2, subpriority);
+ if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ {
+ sPSSData->boxMonsSprites[boxPosition]->data[1] = times;
+ sPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta;
+ sPSSData->boxMonsSprites[boxPosition]->data[3] = xDest;
+ sPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0;
+ if (GetBoxMonDataAt(sPSSData->field_C5C, boxPosition, MON_DATA_HELD_ITEM) == 0)
+ sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
+ count++;
+ }
+ }
+ boxPosition += IN_BOX_ROWS;
+ y += 24;
+ }
+ }
+
+ return count;
+}
+
+void sub_8090574(u8 boxId, s8 direction)
+{
+ sPSSData->field_C6A = 0;
+ sPSSData->field_C6B = boxId;
+ sPSSData->field_C69 = direction;
+ sPSSData->field_C60 = 32;
+ sPSSData->field_C64 = -(6 * direction);
+ sPSSData->field_C66 = 0;
+ SetBoxSpeciesAndPersonalities(boxId);
+ if (direction > 0)
+ sPSSData->field_C68 = 0;
+ else
+ sPSSData->field_C68 = IN_BOX_ROWS - 1;
+
+ sPSSData->field_C62 = (24 * sPSSData->field_C68) + 100;
+ sub_809029C(sPSSData->field_C64);
+}
+
+bool8 sub_809062C(void)
+{
+ if (sPSSData->field_C60 != 0)
+ sPSSData->field_C60--;
+
+ switch (sPSSData->field_C6A)
+ {
+ case 0:
+ sPSSData->field_C62 += sPSSData->field_C64;
+ if (sPSSData->field_C62 <= 64 || sPSSData->field_C62 >= 252)
+ {
+ DestroyAllIconsInRow(sPSSData->field_C68);
+ sPSSData->field_C62 += sPSSData->field_C69 * 24;
+ sPSSData->field_C6A++;
+ }
+ break;
+ case 1:
+ sPSSData->field_C62 += sPSSData->field_C64;
+ sPSSData->field_C66 += sub_80903A4(sPSSData->field_C68, sPSSData->field_C60, sPSSData->field_C64);
+ if ((sPSSData->field_C69 > 0 && sPSSData->field_C68 == IN_BOX_ROWS - 1)
+ || (sPSSData->field_C69 < 0 && sPSSData->field_C68 == 0))
+ {
+ sPSSData->field_C6A++;
+ }
+ else
+ {
+ sPSSData->field_C68 += sPSSData->field_C69;
+ sPSSData->field_C6A = 0;
+ }
+ break;
+ case 2:
+ if (sPSSData->field_C66 == 0)
+ {
+ sPSSData->field_C60++;
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void SetBoxSpeciesAndPersonalities(u8 boxId)
+{
+ s32 i, j, boxPosition;
+
+ boxPosition = 0;
+ for (i = 0; i < IN_BOX_COLUMNS; i++)
+ {
+ for (j = 0; j < IN_BOX_ROWS; j++)
+ {
+ sPSSData->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2);
+ if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE)
+ sPSSData->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY);
+ boxPosition++;
+ }
+ }
+
+ sPSSData->field_C5C = boxId;
+}
+
+void DestroyBoxMonIconAtPosition(u8 boxPosition)
+{
+ if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ {
+ DestroyBoxMonIcon(sPSSData->boxMonsSprites[boxPosition]);
+ sPSSData->boxMonsSprites[boxPosition] = NULL;
+ }
+}
+
+void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode)
+{
+ if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ {
+ sPSSData->boxMonsSprites[boxPosition]->oam.objMode = objMode;
+ }
+}
+
+void CreatePartyMonsSprites(bool8 arg0)
+{
+ u16 i, count;
+ u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2);
+ u32 personality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY);
+
+ sPSSData->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12);
+ count = 1;
+ for (i = 1; i < PARTY_SIZE; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE)
+ {
+ personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ sPSSData->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12);
+ count++;
+ }
+ else
+ {
+ sPSSData->partySprites[i] = NULL;
+ }
+ }
+
+ if (!arg0)
+ {
+ for (i = 0; i < count; i++)
+ {
+ sPSSData->partySprites[i]->pos1.y -= 160;
+ sPSSData->partySprites[i]->invisible = TRUE;
+ }
+ }
+
+ if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ {
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (sPSSData->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == 0)
+ sPSSData->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND;
+ }
+ }
+}
+
+void sub_80909F4(void)
+{
+ u16 i, count;
+
+ sPSSData->field_C5E = 0;
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ if (sPSSData->partySprites[i] != NULL)
+ {
+ if (i != count)
+ {
+ sub_8090A74(sPSSData->partySprites[i], count);
+ sPSSData->partySprites[i] = NULL;
+ sPSSData->field_C5E++;
+ }
+ count++;
+ }
+ }
+}
+
+u8 sub_8090A60(void)
+{
+ return sPSSData->field_C5E;
+}
+
+void sub_8090A74(struct Sprite *sprite, u16 partyId)
+{
+ s16 x, y;
+
+ sprite->data[1] = partyId;
+ if (partyId == 0)
+ x = 104, y = 64;
+ else
+ x = 152, y = 8 * (3 * (partyId - 1)) + 16;
+
+ sprite->data[2] = (u16)(sprite->pos1.x) * 8;
+ sprite->data[3] = (u16)(sprite->pos1.y) * 8;
+ sprite->data[4] = ((x * 8) - sprite->data[2]) / 8;
+ sprite->data[5] = ((y * 8) - sprite->data[3]) / 8;
+ sprite->data[6] = 8;
+ sprite->callback = sub_8090AE0;
+}
+
+void sub_8090AE0(struct Sprite *sprite)
+{
+ if (sprite->data[6] != 0)
+ {
+ s16 x = sprite->data[2] += sprite->data[4];
+ s16 y = sprite->data[3] += sprite->data[5];
+ sprite->pos1.x = x / 8u;
+ sprite->pos1.y = y / 8u;
+ sprite->data[6]--;
+ }
+ else
+ {
+ if (sprite->data[1] == 0)
+ {
+ sprite->pos1.x = 104;
+ sprite->pos1.y = 64;
+ }
+ else
+ {
+ sprite->pos1.x = 152;
+ sprite->pos1.y = 8 * (3 * (sprite->data[1] - 1)) + 16;
+ }
+ sprite->callback = SpriteCallbackDummy;
+ sPSSData->partySprites[sprite->data[1]] = sprite;
+ sPSSData->field_C5E--;
+ }
+}
+
+void DestroyMovingMonIcon(void)
+{
+ if (sPSSData->movingMonSprite != NULL)
+ {
+ DestroyBoxMonIcon(sPSSData->movingMonSprite);
+ sPSSData->movingMonSprite = NULL;
+ }
+}
+
+void sub_8090B98(s16 yDelta)
+{
+ u16 i, posY;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (sPSSData->partySprites[i] != NULL)
+ {
+ sPSSData->partySprites[i]->pos1.y += yDelta;
+ posY = sPSSData->partySprites[i]->pos1.y + sPSSData->partySprites[i]->pos2.y + sPSSData->partySprites[i]->centerToCornerVecY;
+ posY += 16;
+ if (posY > 192)
+ sPSSData->partySprites[i]->invisible = TRUE;
+ else
+ sPSSData->partySprites[i]->invisible = FALSE;
+ }
+ }
+}
+
+void DestroyPartyMonIcon(u8 partyId)
+{
+ if (sPSSData->partySprites[partyId] != NULL)
+ {
+ DestroyBoxMonIcon(sPSSData->partySprites[partyId]);
+ sPSSData->partySprites[partyId] = NULL;
+ }
+}
+
+void DestroyAllPartyMonIcons(void)
+{
+ u16 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (sPSSData->partySprites[i] != NULL)
+ {
+ DestroyBoxMonIcon(sPSSData->partySprites[i]);
+ sPSSData->partySprites[i] = NULL;
+ }
+ }
+}
+
+void SetPartyMonIconObjMode(u8 partyId, u8 objMode)
+{
+ if (sPSSData->partySprites[partyId] != NULL)
+ {
+ sPSSData->partySprites[partyId]->oam.objMode = objMode;
+ }
+}
+
+void sub_8090CC0(u8 mode, u8 id)
+{
+ if (mode == MODE_PARTY)
+ {
+ sPSSData->movingMonSprite = sPSSData->partySprites[id];
+ sPSSData->partySprites[id] = NULL;
+ }
+ else if (mode == MODE_BOX)
+ {
+ sPSSData->movingMonSprite = sPSSData->boxMonsSprites[id];
+ sPSSData->boxMonsSprites[id] = NULL;
+ }
+ else
+ {
+ return;
+ }
+
+ sPSSData->movingMonSprite->callback = sub_80911B0;
+ sPSSData->movingMonSprite->oam.priority = sub_8090058();
+ sPSSData->movingMonSprite->subpriority = 7;
+}
+
+void sub_8090D58(u8 boxId, u8 position)
+{
+ if (boxId == TOTAL_BOXES_COUNT) // party mon
+ {
+ sPSSData->partySprites[position] = sPSSData->movingMonSprite;
+ sPSSData->partySprites[position]->oam.priority = 1;
+ sPSSData->partySprites[position]->subpriority = 12;
+ }
+ else
+ {
+ sPSSData->boxMonsSprites[position] = sPSSData->movingMonSprite;
+ sPSSData->boxMonsSprites[position]->oam.priority = 2;
+ sPSSData->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_ROWS);
+ }
+ sPSSData->movingMonSprite->callback = SpriteCallbackDummy;
+ sPSSData->movingMonSprite = NULL;
+}
+
+void sub_8090E08(u8 boxId, u8 position)
+{
+ if (boxId == TOTAL_BOXES_COUNT) // party mon
+ sPSSData->field_B00 = &sPSSData->partySprites[position];
+ else
+ sPSSData->field_B00 = &sPSSData->boxMonsSprites[position];
+
+ sPSSData->movingMonSprite->callback = SpriteCallbackDummy;
+ sPSSData->field_C5D = 0;
+}
+
+bool8 sub_8090E74(void)
+{
+ if (sPSSData->field_C5D == 16)
+ return FALSE;
+
+ sPSSData->field_C5D++;
+ if (sPSSData->field_C5D & 1)
+ {
+ (*sPSSData->field_B00)->pos1.y--;
+ sPSSData->movingMonSprite->pos1.y++;
+ }
+
+ (*sPSSData->field_B00)->pos2.x = gSineTable[sPSSData->field_C5D * 8] / 16;
+ sPSSData->movingMonSprite->pos2.x = -(gSineTable[sPSSData->field_C5D * 8] / 16);
+ if (sPSSData->field_C5D == 8)
+ {
+ sPSSData->movingMonSprite->oam.priority = (*sPSSData->field_B00)->oam.priority;
+ sPSSData->movingMonSprite->subpriority = (*sPSSData->field_B00)->subpriority;
+ (*sPSSData->field_B00)->oam.priority = sub_8090058();
+ (*sPSSData->field_B00)->subpriority = 7;
+ }
+
+ if (sPSSData->field_C5D == 16)
+ {
+ struct Sprite *sprite = sPSSData->movingMonSprite;
+ sPSSData->movingMonSprite = (*sPSSData->field_B00);
+ *sPSSData->field_B00 = sprite;
+
+ sPSSData->movingMonSprite->callback = sub_80911B0;
+ (*sPSSData->field_B00)->callback = SpriteCallbackDummy;
+ }
+
+ return TRUE;
+}
+
+void sub_8090FC4(u8 mode, u8 position)
+{
+ switch (mode)
+ {
+ case MODE_PARTY:
+ sPSSData->field_B04 = &sPSSData->partySprites[position];
+ break;
+ case MODE_BOX:
+ sPSSData->field_B04 = &sPSSData->boxMonsSprites[position];
+ break;
+ case MODE_2:
+ sPSSData->field_B04 = &sPSSData->movingMonSprite;
+ break;
+ default:
+ return;
+ }
+
+ if (*sPSSData->field_B04 != NULL)
+ {
+ InitSpriteAffineAnim(*sPSSData->field_B04);
+ (*sPSSData->field_B04)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ (*sPSSData->field_B04)->affineAnims = gUnknown_83CEC38;
+ StartSpriteAffineAnim(*sPSSData->field_B04, 0);
+ }
+}