diff options
-rw-r--r-- | asm/pokemon_storage_system.s | 2293 | ||||
-rw-r--r-- | data/pokemon_storage_system.s | 19 | ||||
-rw-r--r-- | include/constants/flags.h | 2 | ||||
-rw-r--r-- | include/pokemon_storage_system_internal.h | 10 | ||||
-rw-r--r-- | src/field_specials.c | 6 | ||||
-rw-r--r-- | src/pokemon.c | 2 | ||||
-rw-r--r-- | src/pokemon_storage_system_3.c | 672 |
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); + } +} |