diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-14 20:37:48 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-14 20:37:48 -0400 |
commit | 5471590f77ab4d8b9684c6ea4b3d9e870a83633b (patch) | |
tree | 8fb895d92d5a3a0f553e6f6c93b5e2fbd85b247d | |
parent | 8faf63a97c7550778bc06414a12f6435fb885a35 (diff) |
through RunCanReleaseMon
-rw-r--r-- | asm/pokemon_storage_system.s | 2500 | ||||
-rw-r--r-- | data/pokemon_storage_system.s | 14 | ||||
-rw-r--r-- | include/pokemon_storage_system.h | 6 | ||||
-rw-r--r-- | include/pokemon_storage_system_internal.h | 33 | ||||
-rw-r--r-- | src/pokemon_storage_system.c | 2 | ||||
-rw-r--r-- | src/pokemon_storage_system_5.c | 820 | ||||
-rw-r--r-- | sym_ewram.txt | 26 |
7 files changed, 857 insertions, 2544 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 4985ec0b0..bf7e54b2b 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -5,2492 +5,6 @@ .text - @ file boundary? - - thumb_func_start sub_80922C0 -sub_80922C0: @ 80922C0 - push {lr} - ldr r0, _080922D4 @ =sPSSData - ldr r0, [r0] - ldrb r1, [r0, 0x1] - cmp r1, 0x1 - beq _080922DC - ldr r1, _080922D8 @ =sBoxCursorArea - movs r0, 0 - strb r0, [r1] - b _080922E0 - .align 2, 0 -_080922D4: .4byte sPSSData -_080922D8: .4byte sBoxCursorArea -_080922DC: - ldr r0, _0809231C @ =sBoxCursorArea - strb r1, [r0] -_080922E0: - ldr r0, _08092320 @ =sBoxCursorPosition - movs r1, 0 - strb r1, [r0] - ldr r0, _08092324 @ =sIsMonBeingMoved - strb r1, [r0] - ldr r0, _08092328 @ =sMovingMonOrigBoxId - strb r1, [r0] - ldr r0, _0809232C @ =sMovingMonOrigBoxPos - strb r1, [r0] - ldr r0, _08092330 @ =sCanOnlyMove - strb r1, [r0] - bl sub_8092B50 - bl sub_8094AD8 - ldr r2, _08092334 @ =sPSSData - ldr r0, [r2] - ldr r1, _08092338 @ =0x00000cd2 - adds r0, r1 - movs r3, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r2] - ldr r1, _0809233C @ =0x000021ef - adds r0, r1 - strb r3, [r0] - bl sub_8093A10 - pop {r0} - bx r0 - .align 2, 0 -_0809231C: .4byte sBoxCursorArea -_08092320: .4byte sBoxCursorPosition -_08092324: .4byte sIsMonBeingMoved -_08092328: .4byte sMovingMonOrigBoxId -_0809232C: .4byte sMovingMonOrigBoxPos -_08092330: .4byte sCanOnlyMove -_08092334: .4byte sPSSData -_08092338: .4byte 0x00000cd2 -_0809233C: .4byte 0x000021ef - thumb_func_end sub_80922C0 - - thumb_func_start sub_8092340 -sub_8092340: @ 8092340 - push {lr} - bl sub_8094AD8 - bl sub_8093AAC - ldr r3, _08092380 @ =sPSSData - ldr r0, [r3] - ldr r1, _08092384 @ =0x00000cd2 - adds r0, r1 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r3] - ldr r1, _08092388 @ =0x000021ef - adds r0, r1 - strb r2, [r0] - ldr r0, _0809238C @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _0809237A - ldr r0, [r3] - ldr r1, _08092390 @ =0x000020a0 - adds r0, r1 - ldr r1, _08092394 @ =gUnknown_20397BC - movs r2, 0x64 - bl memcpy - bl CreateMovingMonIcon -_0809237A: - pop {r0} - bx r0 - .align 2, 0 -_08092380: .4byte sPSSData -_08092384: .4byte 0x00000cd2 -_08092388: .4byte 0x000021ef -_0809238C: .4byte sIsMonBeingMoved -_08092390: .4byte 0x000020a0 -_08092394: .4byte gUnknown_20397BC - thumb_func_end sub_8092340 - - thumb_func_start sub_8092398 -sub_8092398: @ 8092398 - push {r4-r6,lr} - adds r4, r2, 0 - adds r6, r3, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r0, 0x4 - bhi _08092450 - lsls r0, 2 - ldr r1, _080923B4 @ =_080923B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080923B4: .4byte _080923B8 - .align 2, 0 -_080923B8: - .4byte _080923CC - .4byte _080923FA - .4byte _08092422 - .4byte _0809242A - .4byte _08092448 -_080923CC: - adds r0, r5, 0 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, 0x64 - strh r1, [r4] - adds r0, r5, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, 0x20 - strh r1, [r6] - b _08092450 -_080923FA: - cmp r5, 0 - bne _08092406 - movs r0, 0x68 - strh r0, [r4] - movs r0, 0x34 - b _0809244E -_08092406: - cmp r5, 0x6 - bne _08092412 - movs r0, 0x98 - strh r0, [r4] - movs r0, 0x84 - b _0809244E -_08092412: - movs r0, 0x98 - strh r0, [r4] - subs r1, r5, 0x1 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x4 - b _0809244E -_08092422: - movs r0, 0xA2 - strh r0, [r4] - movs r0, 0xC - b _0809244E -_0809242A: - ldr r0, _08092444 @ =sIsMonBeingMoved - ldrb r0, [r0] - movs r1, 0xE - cmp r0, 0 - beq _08092436 - movs r1, 0x8 -_08092436: - strh r1, [r6] - movs r0, 0x58 - muls r0, r5 - adds r0, 0x78 - strh r0, [r4] - b _08092450 - .align 2, 0 -_08092444: .4byte sIsMonBeingMoved -_08092448: - movs r0, 0xA0 - strh r0, [r4] - movs r0, 0x60 -_0809244E: - strh r0, [r6] -_08092450: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8092398 - - thumb_func_start sub_8092458 -sub_8092458: @ 8092458 - push {lr} - ldr r0, _08092480 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _0809248C - cmp r0, 0x1 - bne _080924A0 - ldr r0, _08092484 @ =sBoxCursorPosition - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08092488 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - b _08092496 - .align 2, 0 -_08092480: .4byte sBoxCursorArea -_08092484: .4byte sBoxCursorPosition -_08092488: .4byte gPlayerParty -_0809248C: - ldr r0, _0809249C @ =sBoxCursorPosition - ldrb r0, [r0] - movs r1, 0xB - bl GetCurrentBoxMonData -_08092496: - lsls r0, 16 - lsrs r0, 16 - b _080924A2 - .align 2, 0 -_0809249C: .4byte sBoxCursorPosition -_080924A0: - movs r0, 0 -_080924A2: - pop {r1} - bx r1 - thumb_func_end sub_8092458 - - thumb_func_start sub_80924A8 -sub_80924A8: @ 80924A8 - push {r4-r7,lr} - ldr r7, _080924C4 @ =sPSSData - ldr r5, [r7] - ldr r0, _080924C8 @ =0x00000ccc - adds r1, r5, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080924D6 - ldrb r0, [r5, 0x1] - cmp r0, 0x3 - beq _080924CC - movs r0, 0 - b _080925F4 - .align 2, 0 -_080924C4: .4byte sPSSData -_080924C8: .4byte 0x00000ccc -_080924CC: - bl sub_809610C - lsls r0, 24 - lsrs r0, 24 - b _080925F4 -_080924D6: - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _080925D4 - ldr r1, _080925C4 @ =0x00000cb8 - adds r4, r5, r1 - movs r2, 0xCC - lsls r2, 4 - adds r1, r5, r2 - ldr r0, [r4] - ldr r1, [r1] - adds r0, r1 - str r0, [r4] - ldr r0, _080925C8 @ =0x00000cbc - adds r3, r5, r0 - adds r2, 0x4 - adds r1, r5, r2 - ldr r0, [r3] - ldr r1, [r1] - adds r0, r1 - str r0, [r3] - movs r6, 0xCB - lsls r6, 4 - adds r1, r5, r6 - ldr r2, [r1] - ldr r0, [r4] - asrs r0, 8 - strh r0, [r2, 0x20] - ldr r2, [r1] - ldr r0, [r3] - asrs r0, 8 - strh r0, [r2, 0x22] - ldr r1, [r1] - ldrh r2, [r1, 0x20] - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x80 - lsls r3, 1 - cmp r0, r3 - ble _08092534 - ldr r4, _080925CC @ =0xffffff00 - adds r0, r2, r4 - lsls r0, 16 - asrs r0, 16 - adds r0, 0x40 - strh r0, [r1, 0x20] -_08092534: - ldr r0, [r7] - adds r0, r6 - ldr r1, [r0] - ldrh r2, [r1, 0x20] - movs r4, 0x20 - ldrsh r0, [r1, r4] - cmp r0, 0x3F - bgt _08092550 - movs r0, 0x40 - subs r0, r2 - lsls r0, 16 - asrs r0, 16 - subs r0, r3, r0 - strh r0, [r1, 0x20] -_08092550: - ldr r0, [r7] - adds r0, r6 - ldr r1, [r0] - ldrh r2, [r1, 0x22] - movs r3, 0x22 - ldrsh r0, [r1, r3] - cmp r0, 0xB0 - ble _0809256C - adds r0, r2, 0 - subs r0, 0xB0 - lsls r0, 16 - asrs r0, 16 - subs r0, 0x10 - strh r0, [r1, 0x22] -_0809256C: - ldr r0, [r7] - adds r0, r6 - ldr r2, [r0] - ldrh r3, [r2, 0x22] - movs r4, 0x22 - ldrsh r0, [r2, r4] - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _0809258C - subs r0, r1, r3 - movs r1, 0xB0 - lsls r0, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r2, 0x22] -_0809258C: - ldr r0, [r7] - ldr r2, _080925D0 @ =0x00000cd3 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _080925F2 - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080925F2 - ldr r0, [r7] - adds r0, r6 - ldr r2, [r0] - adds r2, 0x3F - ldrb r3, [r2] - lsrs r1, r3, 1 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 1 - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - b _080925F2 - .align 2, 0 -_080925C4: .4byte 0x00000cb8 -_080925C8: .4byte 0x00000cbc -_080925CC: .4byte 0xffffff00 -_080925D0: .4byte 0x00000cd3 -_080925D4: - movs r3, 0xCB - lsls r3, 4 - adds r2, r5, r3 - ldr r1, [r2] - ldr r4, _080925FC @ =0x00000cc8 - adds r0, r5, r4 - ldrh r0, [r0] - strh r0, [r1, 0x20] - ldr r1, [r2] - ldr r2, _08092600 @ =0x00000cca - adds r0, r5, r2 - ldrh r0, [r0] - strh r0, [r1, 0x22] - bl sub_80929B0 -_080925F2: - movs r0, 0x1 -_080925F4: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080925FC: .4byte 0x00000cc8 -_08092600: .4byte 0x00000cca - thumb_func_end sub_80924A8 - - thumb_func_start sub_8092604 -sub_8092604: @ 8092604 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r6, sp - adds r6, 0x2 - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - adds r3, r6, 0 - bl sub_8092398 - ldr r1, _08092654 @ =sPSSData - ldr r0, [r1] - movs r2, 0xCD - lsls r2, 4 - adds r0, r2 - strb r4, [r0] - ldr r0, [r1] - ldr r3, _08092658 @ =0x00000cd1 - adds r0, r3 - strb r5, [r0] - ldr r1, [r1] - mov r0, sp - ldrh r2, [r0] - subs r3, 0x9 - adds r0, r1, r3 - strh r2, [r0] - ldrh r0, [r6] - ldr r2, _0809265C @ =0x00000cca - adds r1, r2 - strh r0, [r1] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08092654: .4byte sPSSData -_08092658: .4byte 0x00000cd1 -_0809265C: .4byte 0x00000cca - thumb_func_end sub_8092604 - - thumb_func_start sub_8092660 -sub_8092660: @ 8092660 - push {r4-r7,lr} - ldr r0, _0809267C @ =sPSSData - ldr r2, [r0] - ldr r3, _08092680 @ =0x00000cce - adds r1, r2, r3 - ldrh r1, [r1] - adds r4, r0, 0 - cmp r1, 0 - beq _08092688 - ldr r0, _08092684 @ =0x00000ccc - adds r1, r2, r0 - movs r0, 0xC - b _0809268E - .align 2, 0 -_0809267C: .4byte sPSSData -_08092680: .4byte 0x00000cce -_08092684: .4byte 0x00000ccc -_08092688: - ldr r3, _080926D4 @ =0x00000ccc - adds r1, r2, r3 - movs r0, 0x6 -_0809268E: - strh r0, [r1] - ldr r1, [r4] - ldr r0, _080926D8 @ =0x00000cd3 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0 - beq _080926A6 - ldr r3, _080926D4 @ =0x00000ccc - adds r0, r1, r3 - ldrh r0, [r0] - lsrs r0, 1 - strb r0, [r2] -_080926A6: - ldr r2, [r4] - ldr r1, _080926DC @ =0x00000cce - adds r0, r2, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080926E4 - cmp r1, 0x1 - beq _08092700 - ldr r3, _080926E0 @ =0x00000cca - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x22 - ldrsh r0, [r0, r2] - b _08092716 - .align 2, 0 -_080926D4: .4byte 0x00000ccc -_080926D8: .4byte 0x00000cd3 -_080926DC: .4byte 0x00000cce -_080926E0: .4byte 0x00000cca -_080926E4: - ldr r3, _080926FC @ =0x00000cca - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x22 - ldrsh r0, [r0, r2] - adds r0, 0xC0 - b _08092716 - .align 2, 0 -_080926FC: .4byte 0x00000cca -_08092700: - ldr r3, _08092744 @ =0x00000cca - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x22 - ldrsh r0, [r0, r2] - subs r0, 0xC0 -_08092716: - subs r7, r1, r0 - ldr r2, [r4] - ldr r3, _08092748 @ =0x00000ccf - adds r0, r2, r3 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08092750 - cmp r1, 0x1 - beq _0809276C - ldr r1, _0809274C @ =0x00000cc8 - adds r0, r2, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x20 - ldrsh r0, [r0, r2] - b _08092782 - .align 2, 0 -_08092744: .4byte 0x00000cca -_08092748: .4byte 0x00000ccf -_0809274C: .4byte 0x00000cc8 -_08092750: - ldr r3, _08092768 @ =0x00000cc8 - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r0, 0xC0 - b _08092782 - .align 2, 0 -_08092768: .4byte 0x00000cc8 -_0809276C: - ldr r3, _080927D4 @ =0x00000cc8 - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x20 - ldrsh r0, [r0, r2] - subs r0, 0xC0 -_08092782: - subs r0, r1, r0 - lsls r7, 8 - lsls r0, 8 - ldr r4, [r4] - movs r3, 0xCC - lsls r3, 4 - adds r6, r4, r3 - ldr r1, _080927D8 @ =0x00000ccc - adds r5, r4, r1 - ldrh r1, [r5] - bl __divsi3 - str r0, [r6] - ldr r2, _080927DC @ =0x00000cc4 - adds r6, r4, r2 - ldrh r1, [r5] - adds r0, r7, 0 - bl __divsi3 - str r0, [r6] - ldr r3, _080927E0 @ =0x00000cb8 - adds r2, r4, r3 - movs r0, 0xCB - lsls r0, 4 - adds r1, r4, r0 - ldr r0, [r1] - movs r3, 0x20 - ldrsh r0, [r0, r3] - lsls r0, 8 - str r0, [r2] - ldr r0, _080927E4 @ =0x00000cbc - adds r4, r0 - ldr r0, [r1] - movs r1, 0x22 - ldrsh r0, [r0, r1] - lsls r0, 8 - str r0, [r4] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080927D4: .4byte 0x00000cc8 -_080927D8: .4byte 0x00000ccc -_080927DC: .4byte 0x00000cc4 -_080927E0: .4byte 0x00000cb8 -_080927E4: .4byte 0x00000cbc - thumb_func_end sub_8092660 - - thumb_func_start sub_80927E8 -sub_80927E8: @ 80927E8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8092604 - bl sub_8092660 - ldr r5, _0809282C @ =sPSSData - ldr r1, [r5] - ldrb r0, [r1, 0x1] - cmp r0, 0x3 - beq _08092838 - ldr r2, _08092830 @ =0x000021ef - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08092852 - ldr r0, _08092834 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08092852 - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - b _08092852 - .align 2, 0 -_0809282C: .4byte sPSSData -_08092830: .4byte 0x000021ef -_08092834: .4byte sIsMonBeingMoved -_08092838: - bl IsActiveItemMoving - lsls r0, 24 - cmp r0, 0 - bne _08092852 - ldr r0, [r5] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim -_08092852: - ldr r0, _08092874 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _080928AC - ldr r0, _08092878 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08092880 - ldr r0, _0809287C @ =sBoxCursorPosition - ldrb r1, [r0] - movs r0, 0 - bl sub_8095D44 - b _0809288E - .align 2, 0 -_08092874: .4byte sPSSData -_08092878: .4byte sBoxCursorArea -_0809287C: .4byte sBoxCursorPosition -_08092880: - cmp r0, 0x1 - bne _0809288E - ldr r0, _0809289C @ =sBoxCursorPosition - ldrb r1, [r0] - movs r0, 0x1 - bl sub_8095D44 -_0809288E: - cmp r4, 0 - bne _080928A0 - movs r0, 0 - adds r1, r6, 0 - bl sub_8095C84 - b _080928AC - .align 2, 0 -_0809289C: .4byte sBoxCursorPosition -_080928A0: - cmp r4, 0x1 - bne _080928D8 - movs r0, 0x1 - adds r1, r6, 0 - bl sub_8095C84 -_080928AC: - cmp r4, 0x1 - bne _080928D8 - ldr r0, _08092920 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - beq _080928D8 - ldr r1, _08092924 @ =sPSSData - ldr r0, [r1] - ldr r2, _08092928 @ =0x00000cd2 - adds r0, r2 - strb r4, [r0] - ldr r0, [r1] - ldr r1, _0809292C @ =0x00000cb4 - adds r0, r1 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] -_080928D8: - cmp r4, 0 - beq _08092930 - cmp r4, 0 - blt _080929A0 - cmp r4, 0x3 - bgt _080929A0 - ldr r5, _08092924 @ =sPSSData - ldr r0, [r5] - movs r2, 0xCB - lsls r2, 4 - adds r0, r2 - ldr r4, [r0] - ldrb r1, [r4, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r4, 0x5] - ldr r0, [r5] - ldr r4, _0809292C @ =0x00000cb4 - adds r0, r4 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r3 - strb r0, [r1] - ldr r0, [r5] - adds r0, r4 - ldr r1, [r0] - ldrb r0, [r1, 0x5] - ands r2, r0 - orrs r2, r3 - strb r2, [r1, 0x5] - b _080929A0 - .align 2, 0 -_08092920: .4byte sBoxCursorArea -_08092924: .4byte sPSSData -_08092928: .4byte 0x00000cd2 -_0809292C: .4byte 0x00000cb4 -_08092930: - ldr r3, _08092964 @ =sPSSData - ldr r1, [r3] - ldr r2, _08092968 @ =0x000021ef - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08092970 - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r3] - ldr r1, _0809296C @ =0x00000cb4 - adds r0, r1 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - b _080929A0 - .align 2, 0 -_08092964: .4byte sPSSData -_08092968: .4byte 0x000021ef -_0809296C: .4byte 0x00000cb4 -_08092970: - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr 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, _080929A8 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080929A0 - ldr r0, _080929AC @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080929A0 - movs r0, 0x2 - bl SetMovingMonPriority -_080929A0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080929A8: .4byte sBoxCursorArea -_080929AC: .4byte sIsMonBeingMoved - thumb_func_end sub_80927E8 - - thumb_func_start sub_80929B0 -sub_80929B0: @ 80929B0 - push {r4,lr} - ldr r1, _080929F4 @ =sBoxCursorArea - ldr r4, _080929F8 @ =sPSSData - ldr r2, [r4] - movs r3, 0xCD - lsls r3, 4 - adds r0, r2, r3 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _080929FC @ =sBoxCursorPosition - adds r3, 0x1 - adds r0, r2, r3 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2, 0x1] - cmp r0, 0x3 - beq _08092A08 - ldr r1, _08092A00 @ =0x000021ef - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08092A22 - ldr r0, _08092A04 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08092A22 - subs r3, 0x21 - adds r0, r2, r3 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - b _08092A22 - .align 2, 0 -_080929F4: .4byte sBoxCursorArea -_080929F8: .4byte sPSSData -_080929FC: .4byte sBoxCursorPosition -_08092A00: .4byte 0x000021ef -_08092A04: .4byte sIsMonBeingMoved -_08092A08: - bl IsActiveItemMoving - lsls r0, 24 - cmp r0, 0 - bne _08092A22 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim -_08092A22: - bl sub_8093A10 - ldr r0, _08092A3C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - beq _08092A52 - cmp r0, 0x1 - bgt _08092A40 - cmp r0, 0 - beq _08092A74 - b _08092AD0 - .align 2, 0 -_08092A3C: .4byte sBoxCursorArea -_08092A40: - cmp r0, 0x2 - beq _08092A4A - cmp r0, 0x3 - bne _08092AD0 - b _08092A62 -_08092A4A: - movs r0, 0x1 - bl sub_80920FC - b _08092AD0 -_08092A52: - ldr r0, _08092A6C @ =sPSSData - ldr r0, [r0] - ldr r2, _08092A70 @ =0x00000cb4 - adds r0, r2 - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0xD - strb r1, [r0] -_08092A62: - movs r0, 0x1 - bl SetMovingMonPriority - b _08092AD0 - .align 2, 0 -_08092A6C: .4byte sPSSData -_08092A70: .4byte 0x00000cb4 -_08092A74: - ldr r4, _08092AD8 @ =sPSSData - ldr r1, [r4] - ldr r3, _08092ADC @ =0x000021ef - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08092AD0 - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r3, [r0] - ldrb r1, [r3, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r0, [r4] - ldr r3, _08092AE0 @ =0x00000cb4 - adds r0, r3 - ldr r1, [r0] - ldrb r0, [r1, 0x5] - ands r2, r0 - movs r0, 0x8 - orrs r2, r0 - strb r2, [r1, 0x5] - ldr r0, [r4] - adds r0, r3 - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0x15 - strb r1, [r0] - ldr r0, [r4] - adds r0, r3 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0x2 - bl SetMovingMonPriority -_08092AD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08092AD8: .4byte sPSSData -_08092ADC: .4byte 0x000021ef -_08092AE0: .4byte 0x00000cb4 - thumb_func_end sub_80929B0 - - thumb_func_start sub_8092AE4 -sub_8092AE4: @ 8092AE4 - push {lr} - ldr r0, _08092AF4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08092AF8 - movs r3, 0 - b _08092B06 - .align 2, 0 -_08092AF4: .4byte sIsMonBeingMoved -_08092AF8: - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _08092B06 - movs r3, 0x5 -_08092B06: - ldr r0, _08092B34 @ =sPSSData - ldr r2, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r2, r1 - ldr r0, [r0] - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08092B26 - ldr r0, _08092B38 @ =0x00000cd3 - adds r1, r2, r0 - movs r0, 0x1 - strb r0, [r1] -_08092B26: - movs r0, 0x1 - adds r1, r3, 0 - bl sub_80927E8 - pop {r0} - bx r0 - .align 2, 0 -_08092B34: .4byte sPSSData -_08092B38: .4byte 0x00000cd3 - thumb_func_end sub_8092AE4 - - thumb_func_start sub_8092B3C -sub_8092B3C: @ 8092B3C - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_80927E8 - pop {r0} - bx r0 - thumb_func_end sub_8092B3C - - thumb_func_start sub_8092B50 -sub_8092B50: @ 8092B50 - ldr r1, _08092B58 @ =gUnknown_2039826 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08092B58: .4byte gUnknown_2039826 - thumb_func_end sub_8092B50 - - thumb_func_start sub_8092B5C -sub_8092B5C: @ 8092B5C - ldr r0, _08092B68 @ =gUnknown_2039826 - ldr r1, _08092B6C @ =sBoxCursorPosition - ldrb r1, [r1] - strb r1, [r0] - bx lr - .align 2, 0 -_08092B68: .4byte gUnknown_2039826 -_08092B6C: .4byte sBoxCursorPosition - thumb_func_end sub_8092B5C - - thumb_func_start sub_8092B70 -sub_8092B70: @ 8092B70 - ldr r0, _08092B78 @ =gUnknown_2039826 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08092B78: .4byte gUnknown_2039826 - thumb_func_end sub_8092B70 - - thumb_func_start InitMonPlaceChange -InitMonPlaceChange: @ 8092B7C - lsls r0, 24 - ldr r1, _08092B9C @ =sPSSData - ldr r1, [r1] - ldr r2, _08092BA0 @ =0x00000d88 - adds r3, r1, r2 - ldr r2, _08092BA4 @ =gUnknown_83D346C - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - ldr r0, _08092BA8 @ =0x00000d8c - adds r1, r0 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08092B9C: .4byte sPSSData -_08092BA0: .4byte 0x00000d88 -_08092BA4: .4byte gUnknown_83D346C -_08092BA8: .4byte 0x00000d8c - thumb_func_end InitMonPlaceChange - - thumb_func_start sub_8092BAC -sub_8092BAC: @ 8092BAC - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _08092BCC - ldr r0, _08092BC0 @ =sPSSData - ldr r1, [r0] - ldr r2, _08092BC4 @ =0x00000d88 - adds r1, r2 - ldr r2, _08092BC8 @ =sub_8092E00 - b _08092BD6 - .align 2, 0 -_08092BC0: .4byte sPSSData -_08092BC4: .4byte 0x00000d88 -_08092BC8: .4byte sub_8092E00 -_08092BCC: - ldr r0, _08092BE8 @ =sPSSData - ldr r1, [r0] - ldr r2, _08092BEC @ =0x00000d88 - adds r1, r2 - ldr r2, _08092BF0 @ =sub_8092E10 -_08092BD6: - str r2, [r1] - ldr r0, [r0] - ldr r1, _08092BF4 @ =0x00000d8c - adds r0, r1 - movs r1, 0 - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08092BE8: .4byte sPSSData -_08092BEC: .4byte 0x00000d88 -_08092BF0: .4byte sub_8092E10 -_08092BF4: .4byte 0x00000d8c - thumb_func_end sub_8092BAC - - thumb_func_start DoMonPlaceChange -DoMonPlaceChange: @ 8092BF8 - push {lr} - ldr r0, _08092C10 @ =sPSSData - ldr r0, [r0] - ldr r1, _08092C14 @ =0x00000d88 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08092C10: .4byte sPSSData -_08092C14: .4byte 0x00000d88 - thumb_func_end DoMonPlaceChange - - thumb_func_start sub_8092C18 -sub_8092C18: @ 8092C18 - push {r4,r5,lr} - ldr r4, _08092C34 @ =sPSSData - ldr r1, [r4] - ldr r5, _08092C38 @ =0x00000d8c - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08092C68 - cmp r0, 0x1 - bgt _08092C3C - cmp r0, 0 - beq _08092C46 - b _08092C9C - .align 2, 0 -_08092C34: .4byte sPSSData -_08092C38: .4byte 0x00000d8c -_08092C3C: - cmp r0, 0x2 - beq _08092C88 - cmp r0, 0x3 - beq _08092C4E - b _08092C9C -_08092C46: - ldr r0, _08092C54 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08092C58 -_08092C4E: - movs r0, 0 - b _08092C9E - .align 2, 0 -_08092C54: .4byte sIsMonBeingMoved -_08092C58: - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r0, [r0] - movs r1, 0x2 - bl StartSpriteAnim - b _08092C92 -_08092C68: - bl sub_8092E20 - lsls r0, 24 - cmp r0, 0 - bne _08092C9C - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x3 - bl StartSpriteAnim - bl sub_8092E80 - b _08092C92 -_08092C88: - bl sub_8092E54 - lsls r0, 24 - cmp r0, 0 - bne _08092C9C -_08092C92: - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08092C9C: - movs r0, 0x1 -_08092C9E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8092C18 - - thumb_func_start sub_8092CA4 -sub_8092CA4: @ 8092CA4 - push {r4,r5,lr} - ldr r4, _08092CC0 @ =sPSSData - ldr r0, [r4] - ldr r5, _08092CC4 @ =0x00000d8c - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08092CEE - cmp r0, 0x1 - bgt _08092CC8 - cmp r0, 0 - beq _08092CCE - b _08092D18 - .align 2, 0 -_08092CC0: .4byte sPSSData -_08092CC4: .4byte 0x00000d8c -_08092CC8: - cmp r0, 0x2 - beq _08092D14 - b _08092D18 -_08092CCE: - bl sub_8092E20 - lsls r0, 24 - cmp r0, 0 - bne _08092D18 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x2 - bl StartSpriteAnim - bl sub_8092EF4 - b _08092D08 -_08092CEE: - bl sub_8092E54 - lsls r0, 24 - cmp r0, 0 - bne _08092D18 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAnim -_08092D08: - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08092D18 -_08092D14: - movs r0, 0 - b _08092D1A -_08092D18: - movs r0, 0x1 -_08092D1A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8092CA4 - - thumb_func_start sub_8092D20 -sub_8092D20: @ 8092D20 - push {r4,r5,lr} - ldr r4, _08092D3C @ =sPSSData - ldr r1, [r4] - ldr r5, _08092D40 @ =0x00000d8c - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08092DB4 - cmp r0, 0x1 - bgt _08092D44 - cmp r0, 0 - beq _08092D4A - b _08092DF8 - .align 2, 0 -_08092D3C: .4byte sPSSData -_08092D40: .4byte 0x00000d8c -_08092D44: - cmp r0, 0x2 - beq _08092DF4 - b _08092DF8 -_08092D4A: - ldr r0, _08092D64 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08092D6C - cmp r0, 0x1 - bne _08092DF4 - ldr r0, _08092D68 @ =0x00000d8d - adds r1, r0 - movs r0, 0xE - b _08092D76 - .align 2, 0 -_08092D64: .4byte sBoxCursorArea -_08092D68: .4byte 0x00000d8d -_08092D6C: - bl StorageGetCurrentBox - ldr r1, [r4] - ldr r2, _08092DA4 @ =0x00000d8d - adds r1, r2 -_08092D76: - strb r0, [r1] - ldr r4, _08092DA8 @ =sPSSData - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x2 - bl StartSpriteAnim - ldr r0, [r4] - ldr r2, _08092DA4 @ =0x00000d8d - adds r0, r2 - ldrb r0, [r0] - ldr r1, _08092DAC @ =sBoxCursorPosition - ldrb r1, [r1] - bl sub_8090E08 - ldr r1, [r4] - ldr r0, _08092DB0 @ =0x00000d8c - adds r1, r0 - b _08092DE2 - .align 2, 0 -_08092DA4: .4byte 0x00000d8d -_08092DA8: .4byte sPSSData -_08092DAC: .4byte sBoxCursorPosition -_08092DB0: .4byte 0x00000d8c -_08092DB4: - bl sub_8090E74 - lsls r0, 24 - cmp r0, 0 - bne _08092DF8 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x3 - bl StartSpriteAnim - ldr r0, [r4] - ldr r2, _08092DEC @ =0x00000d8d - adds r0, r2 - ldrb r0, [r0] - ldr r1, _08092DF0 @ =sBoxCursorPosition - ldrb r1, [r1] - bl diegohint1 - ldr r1, [r4] - adds r1, r5 -_08092DE2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08092DF8 - .align 2, 0 -_08092DEC: .4byte 0x00000d8d -_08092DF0: .4byte sBoxCursorPosition -_08092DF4: - movs r0, 0 - b _08092DFA -_08092DF8: - movs r0, 0x1 -_08092DFA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8092D20 - - thumb_func_start sub_8092E00 -sub_8092E00: @ 8092E00 - push {lr} - bl sub_8092E20 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8092E00 - - thumb_func_start sub_8092E10 -sub_8092E10: @ 8092E10 - push {lr} - bl sub_8092E54 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8092E10 - - thumb_func_start sub_8092E20 -sub_8092E20: @ 8092E20 - push {lr} - ldr r0, _08092E44 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08092E3A - cmp r0, 0x8 - beq _08092E48 -_08092E3A: - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08092E4C - .align 2, 0 -_08092E44: .4byte sPSSData -_08092E48: - movs r0, 0 - b _08092E4E -_08092E4C: - movs r0, 0x1 -_08092E4E: - pop {r1} - bx r1 - thumb_func_end sub_8092E20 - - thumb_func_start sub_8092E54 -sub_8092E54: @ 8092E54 - push {lr} - ldr r0, _08092E74 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08092E78 - ldrh r0, [r1, 0x26] - subs r0, 0x1 - strh r0, [r1, 0x26] - movs r0, 0x1 - b _08092E7A - .align 2, 0 -_08092E74: .4byte sPSSData -_08092E78: - movs r0, 0 -_08092E7A: - pop {r1} - bx r1 - thumb_func_end sub_8092E54 - - thumb_func_start sub_8092E80 -sub_8092E80: @ 8092E80 - push {r4,lr} - ldr r0, _08092EA8 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08092EB0 - cmp r0, 0x1 - bne _08092EDC - ldr r4, _08092EAC @ =sBoxCursorPosition - ldrb r1, [r4] - movs r0, 0xE - bl sub_8092F60 - ldrb r1, [r4] - movs r0, 0 - bl sub_8090CC0 - b _08092ED6 - .align 2, 0 -_08092EA8: .4byte sBoxCursorArea -_08092EAC: .4byte sBoxCursorPosition -_08092EB0: - ldr r0, _08092EE4 @ =sPSSData - ldr r0, [r0] - ldr r1, _08092EE8 @ =0x000021ef - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08092ED6 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08092EEC @ =sBoxCursorPosition - ldrb r1, [r4] - bl sub_8092F60 - ldrb r1, [r4] - movs r0, 0x1 - bl sub_8090CC0 -_08092ED6: - ldr r1, _08092EF0 @ =sIsMonBeingMoved - movs r0, 0x1 - strb r0, [r1] -_08092EDC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08092EE4: .4byte sPSSData -_08092EE8: .4byte 0x000021ef -_08092EEC: .4byte sBoxCursorPosition -_08092EF0: .4byte sIsMonBeingMoved - thumb_func_end sub_8092E80 - - thumb_func_start sub_8092EF4 -sub_8092EF4: @ 8092EF4 - push {r4,r5,lr} - ldr r0, _08092F1C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08092F24 - cmp r0, 0x1 - bne _08092F46 - ldr r4, _08092F20 @ =sBoxCursorPosition - ldrb r1, [r4] - movs r0, 0xE - bl diegohint2 - ldrb r1, [r4] - movs r0, 0xE - bl sub_8090D58 - b _08092F40 - .align 2, 0 -_08092F1C: .4byte sBoxCursorArea -_08092F20: .4byte sBoxCursorPosition -_08092F24: - bl StorageGetCurrentBox - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _08092F4C @ =sBoxCursorPosition - ldrb r1, [r5] - adds r0, r4, 0 - bl diegohint2 - ldrb r1, [r5] - adds r0, r4, 0 - bl sub_8090D58 -_08092F40: - ldr r1, _08092F50 @ =sIsMonBeingMoved - movs r0, 0 - strb r0, [r1] -_08092F46: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08092F4C: .4byte sBoxCursorPosition -_08092F50: .4byte sIsMonBeingMoved - thumb_func_end sub_8092EF4 - - thumb_func_start sub_8092F54 -sub_8092F54: @ 8092F54 - push {lr} - bl sub_8093A10 - pop {r0} - bx r0 - thumb_func_end sub_8092F54 - - thumb_func_start sub_8092F60 -sub_8092F60: @ 8092F60 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r4, 0xE - bne _08092F9C - ldr r0, _08092F8C @ =sPSSData - ldr r0, [r0] - ldr r1, _08092F90 @ =0x000020a0 - adds r0, r1 - ldr r3, _08092F94 @ =gPlayerParty - ldr r1, _08092F98 @ =sBoxCursorPosition - movs r2, 0 - ldrsb r2, [r1, r2] - movs r1, 0x64 - muls r1, r2 - adds r1, r3 - movs r2, 0x64 - bl memcpy - b _08092FAC - .align 2, 0 -_08092F8C: .4byte sPSSData -_08092F90: .4byte 0x000020a0 -_08092F94: .4byte gPlayerParty -_08092F98: .4byte sBoxCursorPosition -_08092F9C: - ldr r0, _08092FC4 @ =sPSSData - ldr r2, [r0] - ldr r0, _08092FC8 @ =0x000020a0 - adds r2, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl BoxMonAtToMon -_08092FAC: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8093030 - ldr r0, _08092FCC @ =sMovingMonOrigBoxId - strb r4, [r0] - ldr r0, _08092FD0 @ =sMovingMonOrigBoxPos - strb r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08092FC4: .4byte sPSSData -_08092FC8: .4byte 0x000020a0 -_08092FCC: .4byte sMovingMonOrigBoxId -_08092FD0: .4byte sMovingMonOrigBoxPos - thumb_func_end sub_8092F60 - - thumb_func_start diegohint2 -diegohint2: @ 8092FD4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - cmp r6, 0xE - bne _08093008 - ldr r1, _08092FFC @ =gPlayerParty - movs r0, 0x64 - muls r0, r7 - adds r0, r1 - ldr r1, _08093000 @ =sPSSData - ldr r1, [r1] - ldr r2, _08093004 @ =0x000020a0 - adds r1, r2 - movs r2, 0x64 - bl memcpy - b _08093020 - .align 2, 0 -_08092FFC: .4byte gPlayerParty -_08093000: .4byte sPSSData -_08093004: .4byte 0x000020a0 -_08093008: - ldr r5, _08093028 @ =sPSSData - ldr r0, [r5] - ldr r4, _0809302C @ =0x000020a0 - adds r0, r4 - bl BoxMonRestorePP - ldr r2, [r5] - adds r2, r4 - adds r0, r6, 0 - adds r1, r7, 0 - bl SetBoxMonAt -_08093020: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08093028: .4byte sPSSData -_0809302C: .4byte 0x000020a0 - thumb_func_end diegohint2 - - thumb_func_start sub_8093030 -sub_8093030: @ 8093030 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r0, 0xE - bne _08093050 - movs r0, 0x64 - muls r0, r1 - ldr r1, _0809304C @ =gPlayerParty - adds r0, r1 - bl ZeroMonData - b _08093054 - .align 2, 0 -_0809304C: .4byte gPlayerParty -_08093050: - bl ZeroBoxMonAt -_08093054: - pop {r0} - bx r0 - thumb_func_end sub_8093030 - - thumb_func_start diegohint1 -diegohint1: @ 8093058 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - cmp r6, 0xE - bne _0809308C - ldr r0, _08093080 @ =sPSSData - ldr r0, [r0] - ldr r1, _08093084 @ =0x00002104 - adds r0, r1 - ldr r2, _08093088 @ =gPlayerParty - movs r1, 0x64 - muls r1, r7 - adds r1, r2 - movs r2, 0x64 - bl memcpy - b _0809309C - .align 2, 0 -_08093080: .4byte sPSSData -_08093084: .4byte 0x00002104 -_08093088: .4byte gPlayerParty -_0809308C: - ldr r0, _080930D0 @ =sPSSData - ldr r2, [r0] - ldr r0, _080930D4 @ =0x00002104 - adds r2, r0 - adds r0, r6, 0 - adds r1, r7, 0 - bl BoxMonAtToMon -_0809309C: - adds r0, r6, 0 - adds r1, r7, 0 - bl diegohint2 - ldr r5, _080930D0 @ =sPSSData - ldr r1, [r5] - ldr r4, _080930D8 @ =0x000020a0 - adds r0, r1, r4 - ldr r2, _080930D4 @ =0x00002104 - adds r1, r2 - movs r2, 0x64 - bl memcpy - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - bl sub_8093AD0 - ldr r0, _080930DC @ =sMovingMonOrigBoxId - strb r6, [r0] - ldr r0, _080930E0 @ =sMovingMonOrigBoxPos - strb r7, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080930D0: .4byte sPSSData -_080930D4: .4byte 0x00002104 -_080930D8: .4byte 0x000020a0 -_080930DC: .4byte sMovingMonOrigBoxId -_080930E0: .4byte sMovingMonOrigBoxPos - thumb_func_end diegohint1 - - thumb_func_start TryStorePartyMonInBox -TryStorePartyMonInBox: @ 80930E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl GetFirstFreeBoxSpot - lsls r0, 16 - lsrs r4, r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08093102 - movs r0, 0 - b _08093164 -_08093102: - ldr r5, _08093120 @ =sIsMonBeingMoved - ldrb r0, [r5] - cmp r0, 0 - beq _08093124 - lsls r4, 24 - lsrs r1, r4, 24 - adds r0, r6, 0 - bl diegohint2 - bl DestroyMovingMonIcon - movs r0, 0 - strb r0, [r5] - b _0809313E - .align 2, 0 -_08093120: .4byte sIsMonBeingMoved -_08093124: - ldr r5, _0809316C @ =sBoxCursorPosition - ldrb r1, [r5] - movs r0, 0xE - bl sub_8092F60 - lsls r4, 24 - lsrs r1, r4, 24 - adds r0, r6, 0 - bl diegohint2 - ldrb r0, [r5] - bl DestroyPartyMonIcon -_0809313E: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bne _08093150 - lsrs r0, r4, 24 - bl sub_80901EC -_08093150: - ldr r0, _08093170 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x1 -_08093164: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809316C: .4byte sBoxCursorPosition -_08093170: .4byte sPSSData - thumb_func_end TryStorePartyMonInBox - - thumb_func_start sub_8093174 -sub_8093174: @ 8093174 - push {lr} - ldr r0, _08093190 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAnim - bl sub_8093A10 - pop {r0} - bx r0 - .align 2, 0 -_08093190: .4byte sPSSData - thumb_func_end sub_8093174 - - thumb_func_start sub_8093194 -sub_8093194: @ 8093194 - push {lr} - ldr r0, _080931A4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080931A8 - movs r2, 0x2 - b _080931B8 - .align 2, 0 -_080931A4: .4byte sIsMonBeingMoved -_080931A8: - ldr r0, _080931D8 @ =sBoxCursorArea - movs r1, 0 - ldrsb r1, [r0, r1] - movs r2, 0x1 - eors r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r2, r0, 31 -_080931B8: - ldr r0, _080931DC @ =sBoxCursorPosition - ldrb r1, [r0] - adds r0, r2, 0 - bl sub_8090FC4 - ldr r0, _080931E0 @ =sPSSData - ldr r1, [r0] - ldr r2, _080931E4 @ =0x000021d0 - adds r0, r1, r2 - ldr r2, _080931E8 @ =0x00000cea - adds r1, r2 - bl StringCopy - pop {r0} - bx r0 - .align 2, 0 -_080931D8: .4byte sBoxCursorArea -_080931DC: .4byte sBoxCursorPosition -_080931E0: .4byte sPSSData -_080931E4: .4byte 0x000021d0 -_080931E8: .4byte 0x00000cea - thumb_func_end sub_8093194 - - thumb_func_start sub_80931EC -sub_80931EC: @ 80931EC - push {lr} - bl sub_8091084 - lsls r0, 24 - cmp r0, 0 - beq _080931FC - movs r0, 0x1 - b _08093210 -_080931FC: - ldr r0, _08093214 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAnim - movs r0, 0 -_08093210: - pop {r1} - bx r1 - .align 2, 0 -_08093214: .4byte sPSSData - thumb_func_end sub_80931EC - - thumb_func_start ReleaseMon -ReleaseMon: @ 8093218 - push {lr} - bl sub_80910CC - ldr r1, _0809322C @ =sIsMonBeingMoved - ldrb r0, [r1] - cmp r0, 0 - beq _08093230 - movs r0, 0 - strb r0, [r1] - b _08093256 - .align 2, 0 -_0809322C: .4byte sIsMonBeingMoved -_08093230: - ldr r0, _08093240 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093244 - movs r2, 0xE - b _0809324C - .align 2, 0 -_08093240: .4byte sBoxCursorArea -_08093244: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r2, r0, 24 -_0809324C: - ldr r0, _08093260 @ =sBoxCursorPosition - ldrb r1, [r0] - adds r0, r2, 0 - bl sub_8093030 -_08093256: - bl sub_8093A10 - pop {r0} - bx r0 - .align 2, 0 -_08093260: .4byte sBoxCursorPosition - thumb_func_end ReleaseMon - - thumb_func_start sub_8093264 -sub_8093264: @ 8093264 - push {lr} - ldr r0, _08093284 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08093280 - ldr r0, _08093288 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x3 - bl StartSpriteAnim -_08093280: - pop {r0} - bx r0 - .align 2, 0 -_08093284: .4byte sIsMonBeingMoved -_08093288: .4byte sPSSData - thumb_func_end sub_8093264 - - thumb_func_start InitCanReleaseMonVars -InitCanReleaseMonVars: @ 809328C - push {r4-r6,lr} - ldr r0, _080932C0 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080932D8 - ldr r4, _080932C4 @ =sPSSData - ldr r1, [r4] - ldr r2, _080932C8 @ =0x00002104 - adds r0, r1, r2 - ldr r3, _080932CC @ =0x000020a0 - adds r1, r3 - movs r2, 0x64 - bl memcpy - ldr r0, [r4] - ldr r1, _080932D0 @ =0x0000216e - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, [r4] - ldr r2, _080932D4 @ =0x0000216f - adds r0, r2 - movs r1, 0x1 - negs r1, r1 - b _08093354 - .align 2, 0 -_080932C0: .4byte sIsMonBeingMoved -_080932C4: .4byte sPSSData -_080932C8: .4byte 0x00002104 -_080932CC: .4byte 0x000020a0 -_080932D0: .4byte 0x0000216e -_080932D4: .4byte 0x0000216f -_080932D8: - ldr r0, _0809330C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093324 - ldr r4, _08093310 @ =sPSSData - ldr r0, [r4] - ldr r3, _08093314 @ =0x00002104 - adds r0, r3 - ldr r3, _08093318 @ =gPlayerParty - ldr r1, _0809331C @ =sBoxCursorPosition - movs r2, 0 - ldrsb r2, [r1, r2] - movs r1, 0x64 - muls r1, r2 - adds r1, r3 - movs r2, 0x64 - bl memcpy - ldr r0, [r4] - ldr r1, _08093320 @ =0x0000216e - adds r0, r1 - movs r1, 0xE - strb r1, [r0] - b _08093348 - .align 2, 0 -_0809330C: .4byte sBoxCursorArea -_08093310: .4byte sPSSData -_08093314: .4byte 0x00002104 -_08093318: .4byte gPlayerParty -_0809331C: .4byte sBoxCursorPosition -_08093320: .4byte 0x0000216e -_08093324: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080933BC @ =sBoxCursorPosition - ldrb r1, [r1] - ldr r4, _080933C0 @ =sPSSData - ldr r2, [r4] - ldr r3, _080933C4 @ =0x00002104 - adds r2, r3 - bl BoxMonAtToMon - bl StorageGetCurrentBox - ldr r1, [r4] - ldr r2, _080933C8 @ =0x0000216e - adds r1, r2 - strb r0, [r1] -_08093348: - ldr r0, _080933C0 @ =sPSSData - ldr r0, [r0] - ldr r1, _080933BC @ =sBoxCursorPosition - ldrb r1, [r1] - ldr r3, _080933CC @ =0x0000216f - adds r0, r3 -_08093354: - strb r1, [r0] - ldr r6, _080933C0 @ =sPSSData - ldr r0, [r6] - ldr r4, _080933D0 @ =0x0000216a - adds r0, r4 - movs r1, 0 - strb r1, [r0] - ldr r0, [r6] - ldr r5, _080933D4 @ =0x0000216b - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - ldr r1, _080933D8 @ =0x00002172 - adds r2, r0, r1 - movs r1, 0x39 - strh r1, [r2] - ldr r1, _080933DC @ =0x00002174 - adds r3, r0, r1 - ldr r1, _080933E0 @ =0x00000123 - strh r1, [r3] - ldr r1, _080933E4 @ =0x00002176 - adds r3, r0, r1 - ldr r1, _080933E8 @ =0x00000163 - strh r1, [r3] - ldr r3, _080933C4 @ =0x00002104 - adds r0, r3 - movs r1, 0x51 - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - ldr r1, [r6] - movs r2, 0x1 - ands r3, r2 - adds r1, r4 - strb r3, [r1] - ldr r1, [r6] - lsrs r0, 17 - movs r2, 0x1 - ands r0, r2 - adds r1, r5 - strb r0, [r1] - ldr r1, [r6] - adds r4, r1, r4 - ldrh r0, [r4] - cmp r0, 0 - beq _080933F0 - ldr r0, _080933EC @ =0x00002169 - adds r1, r0 - movs r0, 0 - strb r0, [r1] - b _080933FE - .align 2, 0 -_080933BC: .4byte sBoxCursorPosition -_080933C0: .4byte sPSSData -_080933C4: .4byte 0x00002104 -_080933C8: .4byte 0x0000216e -_080933CC: .4byte 0x0000216f -_080933D0: .4byte 0x0000216a -_080933D4: .4byte 0x0000216b -_080933D8: .4byte 0x00002172 -_080933DC: .4byte 0x00002174 -_080933E0: .4byte 0x00000123 -_080933E4: .4byte 0x00002176 -_080933E8: .4byte 0x00000163 -_080933EC: .4byte 0x00002169 -_080933F0: - ldr r3, _08093410 @ =0x00002169 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, [r6] - ldr r1, _08093414 @ =0x00002168 - adds r0, r1 - strb r2, [r0] -_080933FE: - ldr r0, _08093418 @ =sPSSData - ldr r0, [r0] - ldr r2, _0809341C @ =0x00002170 - adds r0, r2 - movs r1, 0 - strh r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08093410: .4byte 0x00002169 -_08093414: .4byte 0x00002168 -_08093418: .4byte sPSSData -_0809341C: .4byte 0x00002170 - thumb_func_end InitCanReleaseMonVars - - thumb_func_start RunCanReleaseMon -RunCanReleaseMon: @ 8093420 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08093444 @ =sPSSData - ldr r3, [r0] - ldr r2, _08093448 @ =0x00002169 - adds r1, r3, r2 - ldrb r1, [r1] - mov r12, r0 - cmp r1, 0 - beq _08093450 - ldr r1, _0809344C @ =0x00002168 - adds r0, r3, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - b _08093604 - .align 2, 0 -_08093444: .4byte sPSSData -_08093448: .4byte 0x00002169 -_0809344C: .4byte 0x00002168 -_08093450: - ldr r2, _08093460 @ =0x00002170 - adds r0, r3, r2 - ldrh r0, [r0] - cmp r0, 0 - beq _08093464 - cmp r0, 0x1 - beq _0809353C - b _08093600 - .align 2, 0 -_08093460: .4byte 0x00002170 -_08093464: - movs r6, 0 - mov r5, r12 - movs r7, 0 -_0809346A: - ldr r2, [r5] - ldr r1, _08093500 @ =0x0000216e - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xE - bne _08093488 - adds r1, 0x1 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, r6 - beq _080934C2 -_08093488: - movs r0, 0x64 - muls r0, r6 - ldr r1, _08093504 @ =gPlayerParty - adds r0, r1 - ldr r1, _08093508 @ =0x00002172 - adds r2, r1 - movs r1, 0x51 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080934AE - ldr r0, [r5] - ldr r2, _0809350C @ =0x0000216a - adds r0, r2 - strb r7, [r0] -_080934AE: - movs r0, 0x2 - ands r4, r0 - ldr r0, _08093510 @ =sPSSData - mov r12, r0 - cmp r4, 0 - beq _080934C2 - ldr r0, [r5] - ldr r1, _08093514 @ =0x0000216b - adds r0, r1 - strb r7, [r0] -_080934C2: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _0809346A - mov r2, r12 - ldr r1, [r2] - ldr r2, _0809350C @ =0x0000216a - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _080934DC - b _080935EE -_080934DC: - ldr r2, _08093518 @ =0x0000216c - adds r0, r1, r2 - movs r1, 0 - strb r1, [r0] - mov r2, r12 - ldr r0, [r2] - ldr r2, _0809351C @ =0x0000216d - adds r0, r2 - strb r1, [r0] - mov r0, r12 - ldr r1, [r0] - adds r2, 0x3 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _08093600 - .align 2, 0 -_08093500: .4byte 0x0000216e -_08093504: .4byte gPlayerParty -_08093508: .4byte 0x00002172 -_0809350C: .4byte 0x0000216a -_08093510: .4byte sPSSData -_08093514: .4byte 0x0000216b -_08093518: .4byte 0x0000216c -_0809351C: .4byte 0x0000216d -_08093520: - mov r1, r12 - ldr r0, [r1] - ldr r2, _08093538 @ =0x00002169 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - mov r1, r12 - ldr r0, [r1] - subs r2, 0x1 - adds r0, r2 - strb r3, [r0] - b _080935E0 - .align 2, 0 -_08093538: .4byte 0x00002169 -_0809353C: - movs r6, 0 - mov r7, r12 - ldr r0, _08093610 @ =0x0000ffff - mov r8, r0 -_08093544: - ldr r3, [r7] - ldr r1, _08093614 @ =0x0000216c - adds r0, r3, r1 - ldrb r0, [r0] - ldr r2, _08093618 @ =0x0000216d - adds r1, r3, r2 - ldrb r1, [r1] - adds r2, 0x5 - adds r3, r2 - movs r2, 0x51 - bl GetAndCopyBoxMonDataAt - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _080935A0 - ldr r5, [r7] - ldr r1, _0809361C @ =0x0000216e - adds r0, r5, r1 - ldrh r2, [r0] - subs r1, 0x2 - adds r0, r5, r1 - ldrh r3, [r0] - mov r1, r8 - ands r1, r2 - mov r0, r8 - ands r0, r3 - cmp r1, r0 - beq _080935A0 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0809358E - ldr r2, _08093620 @ =0x0000216a - adds r1, r5, r2 - movs r0, 0 - strb r0, [r1] -_0809358E: - movs r0, 0x2 - ands r4, r0 - cmp r4, 0 - beq _080935A0 - ldr r0, [r7] - ldr r1, _08093624 @ =0x0000216b - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_080935A0: - ldr r2, _08093628 @ =sPSSData - ldr r1, [r2] - ldr r0, _08093618 @ =0x0000216d - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r3, 0 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - mov r12, r2 - cmp r0, 0x1D - ble _080935D6 - ldr r0, [r2] - ldr r1, _08093618 @ =0x0000216d - adds r0, r1 - strb r3, [r0] - ldr r1, [r2] - ldr r2, _08093614 @ =0x0000216c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xD - bgt _08093520 -_080935D6: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x4 - bls _08093544 -_080935E0: - mov r0, r12 - ldr r1, [r0] - ldr r2, _08093620 @ =0x0000216a - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _08093600 -_080935EE: - subs r2, 0x1 - adds r0, r1, r2 - movs r1, 0x1 - strb r1, [r0] - mov r2, r12 - ldr r0, [r2] - ldr r2, _0809362C @ =0x00002168 - adds r0, r2 - strb r1, [r0] -_08093600: - movs r0, 0x1 - negs r0, r0 -_08093604: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08093610: .4byte 0x0000ffff -_08093614: .4byte 0x0000216c -_08093618: .4byte 0x0000216d -_0809361C: .4byte 0x0000216e -_08093620: .4byte 0x0000216a -_08093624: .4byte 0x0000216b -_08093628: .4byte sPSSData -_0809362C: .4byte 0x00002168 - thumb_func_end RunCanReleaseMon - thumb_func_start sub_8093630 sub_8093630: @ 8093630 push {lr} @@ -3044,7 +558,7 @@ _08093A5A: ldr r1, _08093A7C @ =gPlayerParty adds r0, r1 movs r1, 0 - bl sub_8093AD0 + bl SetCursorMonData b _08093AA0 .align 2, 0 _08093A78: .4byte sBoxCursorPosition @@ -3052,7 +566,7 @@ _08093A7C: .4byte gPlayerParty _08093A80: movs r0, 0 movs r1, 0x2 - bl sub_8093AD0 + bl SetCursorMonData b _08093AA0 _08093A8A: bl StorageGetCurrentBox @@ -3062,7 +576,7 @@ _08093A8A: ldrb r1, [r1] bl GetBoxedMonPtr movs r1, 0x1 - bl sub_8093AD0 + bl SetCursorMonData _08093AA0: pop {r4} pop {r0} @@ -3080,7 +594,7 @@ sub_8093AAC: @ 8093AAC beq _08093AC8 ldr r0, _08093AC4 @ =gUnknown_20397BC movs r1, 0 - bl sub_8093AD0 + bl SetCursorMonData b _08093ACC .align 2, 0 _08093AC0: .4byte sIsMonBeingMoved @@ -3092,8 +606,8 @@ _08093ACC: bx r0 thumb_func_end sub_8093AAC - thumb_func_start sub_8093AD0 -sub_8093AD0: @ 8093AD0 + thumb_func_start SetCursorMonData +SetCursorMonData: @ 8093AD0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -3640,7 +1154,7 @@ _08093F84: bx r0 .align 2, 0 _08093F94: .4byte 0x00000d61 - thumb_func_end sub_8093AD0 + thumb_func_end SetCursorMonData thumb_func_start sub_8093F98 sub_8093F98: @ 8093F98 diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s index 7ff882ede..1d85f55c4 100644 --- a/data/pokemon_storage_system.s +++ b/data/pokemon_storage_system.s @@ -6,20 +6,6 @@ .section .rodata .align 2 -gUnknown_83D2BCC:: - .incbin "graphics/interface/pss_unk_83D2BCC.gbapal" - -gUnknown_83D2BEC:: - .incbin "graphics/interface/pss_unk_83D2BEC.4bpp" - -gUnknown_83D33EC:: - .incbin "graphics/interface/pss_unk_83D33EC.4bpp" - -gUnknown_83D346C:: @ 83D346C - .4byte sub_8092C18 - .4byte sub_8092CA4 - .4byte sub_8092D20 - gUnknown_83D3478:: @ 83D3478 .4byte sub_8093F98 .byte 0 diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 7a98e1a77..6d0489ed6 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -37,11 +37,5 @@ void Cb2_ReturnToPSS(void); void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer); -void SetCurrentBox(u8 boxId); -void SetBoxWallpaper(u8 boxId, u8 wallpaperId); -struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); - -void Cb2_EnterPSS(u8 a0); -u8 GetCurrentBoxOption(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h index 722500e0f..4d5af348c 100644 --- a/include/pokemon_storage_system_internal.h +++ b/include/pokemon_storage_system_internal.h @@ -298,15 +298,15 @@ struct PokemonStorageSystemData /* 1e58 */ struct UnkPSSStruct_2002370 field_1E5C; /* 20a0 */ struct Pokemon movingMon; /* 2104 */ struct Pokemon field_2108; - /* 2168 */ s8 field_216C; + /* 2168 */ u8 field_216C; /* 2169 */ u8 field_216D; + /* 216c */ bool8 isSurfMon; + /* 216d */ bool8 isDiveMon; /* 216a */ s8 field_216E; /* 216b */ s8 field_216F; - /* 216c */ s8 field_2170; - /* 216d */ s8 field_2171; - /* 216e */ u8 field_2172; - /* 216f */ u8 field_2173; - /* 2170 */ u16 field_2174; + /* 216e */ s8 field_2170; + /* 216f */ s8 field_2171; + /* 2170 */ u16 field_2172; /* 2172 */ u16 field_2176[3]; /* 2178 */ u8 field_2186; /* 2179 */ u8 field_2187; @@ -340,6 +340,14 @@ struct PokemonStorageSystemData extern struct PokemonStorageSystemData *sPSSData; +void Cb2_EnterPSS(u8 a0); +u8 GetCurrentBoxOption(void); +struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); +void SetBoxWallpaper(u8 boxId, u8 wallpaperId); +void SetCurrentBox(u8 boxId); +void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon * dst); +void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src); + void Cb2_ExitPSS(void); void sub_808C8FC(void); void sub_808C940(u8 curBox); @@ -348,6 +356,7 @@ u8 HandleBoxChooseSelectionInput(void); void sub_808C854(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal); void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value); u32 GetCurrentBoxMonData(u8 boxPosition, s32 request); +u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst); void sub_80922C0(void); void sub_8092340(void); @@ -433,5 +442,17 @@ bool8 sub_8091150(void); void sub_80913DC(u8 box); bool8 sub_809140C(void); void sub_80920FC(bool8 species); +void CreateMovingMonIcon(void); +void sub_8090E08(u8 boxId, u8 cursorPos); +bool8 sub_8090E74(void); +void sub_8090CC0(u8 cursorArea, u8 cursorPos); +void sub_8090D58(u8 cursorArea, u8 cursorPos); +void DestroyPartyMonIcon(u8 partyId); +void DestroyMovingMonIcon(void); +s16 GetFirstFreeBoxSpot(u8 boxId); +void sub_80901EC(u8 boxPosition); +void sub_8090FC4(u8 mode, u8 position); +bool8 sub_8091084(void); +void sub_80910CC(void); #endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 80003930b..dd00024fe 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1,6 +1,6 @@ #include "global.h" #include "gflib.h" -#include "pokemon_storage_system.h" +#include "pokemon_storage_system_internal.h" #include "constants/species.h" void BackupPokemonStorage(struct PokemonStorage * dest) diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index 663303c08..8fe09cc15 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -1,3 +1,823 @@ #include "global.h" #include "gflib.h" #include "pokemon_storage_system_internal.h" +#include "constants/species.h" +#include "constants/moves.h" + +EWRAM_DATA struct Pokemon gUnknown_20397BC = {}; +EWRAM_DATA s8 sBoxCursorArea = 0; +EWRAM_DATA s8 sBoxCursorPosition = 0; +EWRAM_DATA bool8 sIsMonBeingMoved = FALSE; +EWRAM_DATA u8 sMovingMonOrigBoxId = 0; +EWRAM_DATA u8 sMovingMonOrigBoxPos = 0; +EWRAM_DATA bool8 sCanOnlyMove = FALSE; +EWRAM_DATA u8 gUnknown_2039826 = 0; + +void sub_80929B0(void); +bool8 MonPlaceChange_Move(void); +bool8 MonPlaceChange_Place(void); +bool8 MonPlaceChange_Shift(void); +bool8 sub_8092E00(void); +bool8 sub_8092E10(void); +bool8 sub_8092E20(void); +bool8 sub_8092E54(void); +void MoveMon(void); +void PlaceMon(void); +void SetMovedMonData(u8 boxId, u8 cursorPos); +void SetPlacedMonData(u8 boxId, u8 cursorPos); +void PurgeMonOrBoxMon(u8 boxId, u8 cursorPos); +void SetShiftedMonData(u8 boxId, u8 cursorPos); +void sub_8093A10(void); +void SetCursorMonData(struct Pokemon * cursorMon, u8 mode); +void sub_8094AD8(void); +void sub_8093AAC(void); +void sub_8095D44(u8 cursorArea, u8 cursorPos); + +const u16 gUnknown_83D2BCC[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); +const u16 gUnknown_83D2BEC[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp"); +const u16 gUnknown_83D33EC[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp"); + +void sub_80922C0(void) +{ + if (sPSSData->boxOption != BOX_OPTION_DEPOSIT) + sBoxCursorArea = CURSOR_AREA_IN_BOX; + else + sBoxCursorArea = CURSOR_AREA_IN_PARTY; + + sBoxCursorPosition = 0; + sIsMonBeingMoved = FALSE; + sMovingMonOrigBoxId = 0; + sMovingMonOrigBoxPos = 0; + sCanOnlyMove = FALSE; + sub_8092B50(); + sub_8094AD8(); + sPSSData->field_CD6 = 1; + sPSSData->inBoxMovingMode = 0; + sub_8093A10(); +} + +void sub_8092340(void) +{ + sub_8094AD8(); + sub_8093AAC(); + sPSSData->field_CD6 = 1; + sPSSData->inBoxMovingMode = 0; + if (sIsMonBeingMoved) + { + sPSSData->movingMon = gUnknown_20397BC; + CreateMovingMonIcon(); + } +} + +void sub_8092398(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) +{ + switch (cursorArea) + { + case CURSOR_AREA_IN_BOX: + *x = (cursorPosition % IN_BOX_ROWS) * 24 + 100; + *y = (cursorPosition / IN_BOX_ROWS) * 24 + 32; + break; + case CURSOR_AREA_IN_PARTY: + if (cursorPosition == 0) + { + *x = 0x68; + *y = 0x34; + } + else if (cursorPosition == PARTY_SIZE) + { + *x = 0x98; + *y = 0x84; + } + else + { + *x = 0x98; + *y = (cursorPosition - 1) * 24 + 4; + } + break; + case CURSOR_AREA_BOX: + *x = 0xa2; + *y = 0x0c; + break; + case CURSOR_AREA_BUTTONS: + *y = sIsMonBeingMoved ? 8 : 14; + *x = cursorPosition * 0x58 + 0x78; + break; + case 4: + *x = 0xa0; + *y = 0x60; + break; + } +} + +u16 sub_8092458(void) +{ + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + return GetMonData(&gPlayerParty[sBoxCursorPosition], MON_DATA_SPECIES); + case CURSOR_AREA_IN_BOX: + return GetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_SPECIES); + default: + return SPECIES_NONE; + } +} + +bool8 sub_80924A8(void) +{ + s16 tmp; + + if (sPSSData->field_CD0 == 0) + { + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return FALSE; + else + return sub_809610C(); + } + else if (--sPSSData->field_CD0 != 0) + { + sPSSData->field_CBC += sPSSData->field_CC4; + sPSSData->field_CC0 += sPSSData->field_CC8; + sPSSData->field_CB4->pos1.x = sPSSData->field_CBC >> 8; + sPSSData->field_CB4->pos1.y = sPSSData->field_CC0 >> 8; + if (sPSSData->field_CB4->pos1.x > 0x100) + { + tmp = sPSSData->field_CB4->pos1.x - 0x100; + sPSSData->field_CB4->pos1.x = tmp + 0x40; + } + if (sPSSData->field_CB4->pos1.x < 0x40) + { + tmp = 0x40 - sPSSData->field_CB4->pos1.x; + sPSSData->field_CB4->pos1.x = 0x100 - tmp; + } + if (sPSSData->field_CB4->pos1.y > 0xb0) + { + tmp = sPSSData->field_CB4->pos1.y - 0xb0; + sPSSData->field_CB4->pos1.y = tmp - 0x10; + } + if (sPSSData->field_CB4->pos1.y < -0x10) + { + tmp = -0x10 - sPSSData->field_CB4->pos1.y; + sPSSData->field_CB4->pos1.y = 0xb0 - tmp; + } + if (sPSSData->field_CD7 && --sPSSData->field_CD7 == 0) + sPSSData->field_CB4->vFlip = (sPSSData->field_CB4->vFlip == FALSE); + } + else + { + sPSSData->field_CB4->pos1.x = sPSSData->field_CCC; + sPSSData->field_CB4->pos1.y = sPSSData->field_CCE; + sub_80929B0(); + } + + return TRUE; +} + +void sub_8092604(u8 newCurosrArea, u8 newCursorPosition) +{ + u16 x, y; + + sub_8092398(newCurosrArea, newCursorPosition, &x, &y); + sPSSData->field_CD4 = newCurosrArea; + sPSSData->field_CD5 = newCursorPosition; + sPSSData->field_CCC = x; + sPSSData->field_CCE = y; +} + +void sub_8092660(void) +{ + int r7, r0; + + if (sPSSData->field_CD2 != 0 || sPSSData->field_CD3 != 0) + sPSSData->field_CD0 = 12; + else + sPSSData->field_CD0 = 6; + + if (sPSSData->field_CD7) + sPSSData->field_CD7 = sPSSData->field_CD0 >> 1; + + switch (sPSSData->field_CD2) + { + default: + r7 = sPSSData->field_CCE - sPSSData->field_CB4->pos1.y; + break; + case -1: + r7 = sPSSData->field_CCE - 0xc0 - sPSSData->field_CB4->pos1.y; + break; + case 1: + r7 = sPSSData->field_CCE + 0xc0 - sPSSData->field_CB4->pos1.y; + break; + } + + switch (sPSSData->field_CD3) + { + default: + r0 = sPSSData->field_CCC - sPSSData->field_CB4->pos1.x; + break; + case -1: + r0 = sPSSData->field_CCC - 0xc0 - sPSSData->field_CB4->pos1.x; + break; + case 1: + r0 = sPSSData->field_CCC + 0xc0 - sPSSData->field_CB4->pos1.x; + break; + } + + r7 <<= 8; + r0 <<= 8; + sPSSData->field_CC4 = r0 / sPSSData->field_CD0; + sPSSData->field_CC8 = r7 / sPSSData->field_CD0; + sPSSData->field_CBC = sPSSData->field_CB4->pos1.x << 8; + sPSSData->field_CC0 = sPSSData->field_CB4->pos1.y << 8; +} + +void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition) +{ + sub_8092604(newCurosrArea, newCursorPosition); + sub_8092660(); + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + else + { + if (!IsActiveItemMoving()) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition); + else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + sub_8095D44(CURSOR_AREA_IN_PARTY, sBoxCursorPosition); + + if (newCurosrArea == CURSOR_AREA_IN_BOX) + sub_8095C84(newCurosrArea, newCursorPosition); + else if (newCurosrArea == CURSOR_AREA_IN_PARTY) + sub_8095C84(newCurosrArea, newCursorPosition); + } + + if (newCurosrArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY) + { + sPSSData->field_CD6 = newCurosrArea; + sPSSData->field_CB8->invisible = TRUE; + } + + switch (newCurosrArea) + { + case CURSOR_AREA_IN_PARTY: + case CURSOR_AREA_BOX: + case CURSOR_AREA_BUTTONS: + sPSSData->field_CB4->oam.priority = 1; + sPSSData->field_CB8->invisible = TRUE; + sPSSData->field_CB8->oam.priority = 1; + break; + case CURSOR_AREA_IN_BOX: + if (sPSSData->inBoxMovingMode != 0) + { + sPSSData->field_CB4->oam.priority = 0; + sPSSData->field_CB8->invisible = TRUE; + } + else + { + sPSSData->field_CB4->oam.priority = 2; + if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved) + SetMovingMonPriority(2); + } + break; + } +} + +void sub_80929B0(void) +{ + sBoxCursorArea = sPSSData->field_CD4; + sBoxCursorPosition = sPSSData->field_CD5; + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + else + { + if (!IsActiveItemMoving()) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + + sub_8093A10(); + switch (sBoxCursorArea) + { + case CURSOR_AREA_BUTTONS: + SetMovingMonPriority(1); + break; + case CURSOR_AREA_BOX: + sub_80920FC(TRUE); + break; + case CURSOR_AREA_IN_PARTY: + sPSSData->field_CB8->subpriority = 13; + SetMovingMonPriority(1); + break; + case CURSOR_AREA_IN_BOX: + if (sPSSData->inBoxMovingMode == 0) + { + sPSSData->field_CB4->oam.priority = 1; + sPSSData->field_CB8->oam.priority = 2; + sPSSData->field_CB8->subpriority = 21; + sPSSData->field_CB8->invisible = FALSE; + SetMovingMonPriority(2); + } + break; + } +} + +void sub_8092AE4(void) +{ + u8 partyCount; + + if (!sIsMonBeingMoved) + { + partyCount = 0; + } + else + { + partyCount = CalculatePlayerPartyCount(); + if (partyCount >= PARTY_SIZE) + partyCount = PARTY_SIZE - 1; + } + if (sPSSData->field_CB4->vFlip) + sPSSData->field_CD7 = 1; + sub_80927E8(CURSOR_AREA_IN_PARTY, partyCount); +} + +void sub_8092B3C(u8 cursorBoxPosition) +{ + sub_80927E8(CURSOR_AREA_IN_BOX, cursorBoxPosition); +} + +void sub_8092B50(void) +{ + gUnknown_2039826 = 0; +} + +void sub_8092B5C(void) +{ + gUnknown_2039826 = sBoxCursorPosition; +} + +u8 sub_8092B70(void) +{ + return gUnknown_2039826; +} + +void InitMonPlaceChange(u8 a0) +{ + static bool8 (*const placeChangeFuncs[])(void) = { + MonPlaceChange_Move, + MonPlaceChange_Place, + MonPlaceChange_Shift, + }; + + sPSSData->monPlaceChangeFunc = placeChangeFuncs[a0]; + sPSSData->monPlaceChangeState = 0; +} + +void sub_8092BAC(bool8 arg0) +{ + if (!arg0) + sPSSData->monPlaceChangeFunc = sub_8092E00; + else + sPSSData->monPlaceChangeFunc = sub_8092E10; + + sPSSData->monPlaceChangeState = 0; +} + +bool8 DoMonPlaceChange(void) +{ + return sPSSData->monPlaceChangeFunc(); +} + +bool8 MonPlaceChange_Move(void) +{ + switch (sPSSData->monPlaceChangeState) + { + case 0: + if (sIsMonBeingMoved) + return FALSE; + StartSpriteAnim(sPSSData->field_CB4, 2); + sPSSData->monPlaceChangeState++; + break; + case 1: + if (!sub_8092E20()) + { + StartSpriteAnim(sPSSData->field_CB4, 3); + MoveMon(); + sPSSData->monPlaceChangeState++; + } + break; + case 2: + if (!sub_8092E54()) + sPSSData->monPlaceChangeState++; + break; + case 3: + return FALSE; + } + + return TRUE; +} + +bool8 MonPlaceChange_Place(void) +{ + switch (sPSSData->monPlaceChangeState) + { + case 0: + if (!sub_8092E20()) + { + StartSpriteAnim(sPSSData->field_CB4, 2); + PlaceMon(); + sPSSData->monPlaceChangeState++; + } + break; + case 1: + if (!sub_8092E54()) + { + StartSpriteAnim(sPSSData->field_CB4, 0); + sPSSData->monPlaceChangeState++; + } + break; + case 2: + return FALSE; + } + + return TRUE; +} + +bool8 MonPlaceChange_Shift(void) +{ + switch (sPSSData->monPlaceChangeState) + { + case 0: + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + sPSSData->field_D91 = TOTAL_BOXES_COUNT; + break; + case CURSOR_AREA_IN_BOX: + sPSSData->field_D91 = StorageGetCurrentBox(); + break; + default: + return FALSE; + } + StartSpriteAnim(sPSSData->field_CB4, 2); + sub_8090E08(sPSSData->field_D91, sBoxCursorPosition); + sPSSData->monPlaceChangeState++; + break; + case 1: + if (!sub_8090E74()) + { + StartSpriteAnim(sPSSData->field_CB4, 3); + SetShiftedMonData(sPSSData->field_D91, sBoxCursorPosition); + sPSSData->monPlaceChangeState++; + } + break; + case 2: + return FALSE; + } + + return TRUE; +} + +bool8 sub_8092E00(void) +{ + return sub_8092E20(); +} + +bool8 sub_8092E10(void) +{ + return sub_8092E54(); +} + +bool8 sub_8092E20(void) +{ + switch (sPSSData->field_CB4->pos2.y) + { + default: + sPSSData->field_CB4->pos2.y++; + break; + case 0: + sPSSData->field_CB4->pos2.y++; + break; + case 8: + return FALSE; + } + + return TRUE; +} + +bool8 sub_8092E54(void) +{ + switch (sPSSData->field_CB4->pos2.y) + { + case 0: + return FALSE; + default: + sPSSData->field_CB4->pos2.y--; + break; + } + + return TRUE; +} + +void MoveMon(void) +{ + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + sub_8090CC0(MODE_PARTY, sBoxCursorPosition); + break; + case CURSOR_AREA_IN_BOX: + if (sPSSData->inBoxMovingMode == 0) + { + SetMovedMonData(StorageGetCurrentBox(), sBoxCursorPosition); + sub_8090CC0(MODE_BOX, sBoxCursorPosition); + } + break; + default: + return; + } + + sIsMonBeingMoved = TRUE; +} + +void PlaceMon(void) +{ + u8 boxId; + + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + SetPlacedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + sub_8090D58(TOTAL_BOXES_COUNT, sBoxCursorPosition); + break; + case CURSOR_AREA_IN_BOX: + boxId = StorageGetCurrentBox(); + SetPlacedMonData(boxId, sBoxCursorPosition); + sub_8090D58(boxId, sBoxCursorPosition); + break; + default: + return; + } + + sIsMonBeingMoved = FALSE; +} + +void sub_8092F54(void) +{ + sub_8093A10(); +} + +void SetMovedMonData(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + sPSSData->movingMon = gPlayerParty[sBoxCursorPosition]; + else + BoxMonAtToMon(boxId, position, &sPSSData->movingMon); + + PurgeMonOrBoxMon(boxId, position); + sMovingMonOrigBoxId = boxId; + sMovingMonOrigBoxPos = position; +} + +void SetPlacedMonData(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + { + gPlayerParty[position] = sPSSData->movingMon; + } + else + { + BoxMonRestorePP(&sPSSData->movingMon.box); + SetBoxMonAt(boxId, position, &sPSSData->movingMon.box); + } +} + +void PurgeMonOrBoxMon(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + ZeroMonData(&gPlayerParty[position]); + else + ZeroBoxMonAt(boxId, position); +} + +void SetShiftedMonData(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + sPSSData->field_2108 = gPlayerParty[position]; + else + BoxMonAtToMon(boxId, position, &sPSSData->field_2108); + + SetPlacedMonData(boxId, position); + sPSSData->movingMon = sPSSData->field_2108; + SetCursorMonData(&sPSSData->movingMon, MODE_PARTY); + sMovingMonOrigBoxId = boxId; + sMovingMonOrigBoxPos = position; +} + +bool8 TryStorePartyMonInBox(u8 boxId) +{ + s16 boxPosition = GetFirstFreeBoxSpot(boxId); + if (boxPosition == -1) + return FALSE; + + if (sIsMonBeingMoved) + { + SetPlacedMonData(boxId, boxPosition); + DestroyMovingMonIcon(); + sIsMonBeingMoved = FALSE; + } + else + { + SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + SetPlacedMonData(boxId, boxPosition); + DestroyPartyMonIcon(sBoxCursorPosition); + } + + if (boxId == StorageGetCurrentBox()) + sub_80901EC(boxPosition); + + StartSpriteAnim(sPSSData->field_CB4, 1); + return TRUE; +} + +void sub_8093174(void) +{ + StartSpriteAnim(sPSSData->field_CB4, 0); + sub_8093A10(); +} + +void sub_8093194(void) +{ + u8 mode; + + if (sIsMonBeingMoved) + mode = MODE_2; + else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + mode = MODE_PARTY; + else + mode = MODE_BOX; + + sub_8090FC4(mode, sBoxCursorPosition); + StringCopy(sPSSData->field_21E0, sPSSData->cursorMonNick); +} + +bool8 sub_80931EC(void) +{ + if (!sub_8091084()) + { + StartSpriteAnim(sPSSData->field_CB4, 0); + return FALSE; + } + else + { + return TRUE; + } +} + +void ReleaseMon(void) +{ + u8 boxId; + + sub_80910CC(); + if (sIsMonBeingMoved) + { + sIsMonBeingMoved = FALSE; + } + else + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + boxId = TOTAL_BOXES_COUNT; + else + boxId = StorageGetCurrentBox(); + + PurgeMonOrBoxMon(boxId, sBoxCursorPosition); + } + sub_8093A10(); +} + +void sub_8093264(void) +{ + if (sIsMonBeingMoved) + StartSpriteAnim(sPSSData->field_CB4, 3); +} + +void InitCanReleaseMonVars(void) +{ + u16 knownIdx; + if (sIsMonBeingMoved) + { + sPSSData->field_2108 = sPSSData->movingMon; + sPSSData->field_2170 = -1; + sPSSData->field_2171 = -1; + } + else + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + { + sPSSData->field_2108 = gPlayerParty[sBoxCursorPosition]; + sPSSData->field_2170 = TOTAL_BOXES_COUNT; + } + else + { + BoxMonAtToMon(StorageGetCurrentBox(), sBoxCursorPosition, &sPSSData->field_2108); + sPSSData->field_2170 = StorageGetCurrentBox(); + } + sPSSData->field_2171 = sBoxCursorPosition; + } + + sPSSData->isSurfMon = FALSE; + sPSSData->isDiveMon = FALSE; + sPSSData->field_2176[0] = MOVE_SURF; + sPSSData->field_2176[1] = MOVE_DIVE; + sPSSData->field_2176[2] = MOVES_COUNT; + knownIdx = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); + sPSSData->isSurfMon = knownIdx & 1; + sPSSData->isDiveMon = (knownIdx >> 1) & 1; + if (sPSSData->isSurfMon || sPSSData->isDiveMon) + { + sPSSData->field_216D = 0; + } + else + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 1; + } + + sPSSData->field_2172 = 0; +} + +s8 RunCanReleaseMon(void) +{ + u16 i; + u16 knownMoves; + + if (sPSSData->field_216D) + return sPSSData->field_216C; + + switch (sPSSData->field_2172) + { + case 0: + for (i = 0; i < PARTY_SIZE; i++) + { + if (sPSSData->field_2170 != TOTAL_BOXES_COUNT || sPSSData->field_2171 != i) + { + knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); + if (knownMoves & 1) + sPSSData->isSurfMon = FALSE; + if (knownMoves & 2) + sPSSData->isDiveMon = FALSE; + } + } + if (!(sPSSData->isSurfMon || sPSSData->isDiveMon)) + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 1; + } + else + { + sPSSData->field_216E = 0; + sPSSData->field_216F = 0; + sPSSData->field_2172++; + } + break; + case 1: + for (i = 0; i < 5; i++) + { + knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); + if (knownMoves != 0 + && !(sPSSData->field_2170 == sPSSData->field_216E && sPSSData->field_2171 == sPSSData->field_216F)) + { + if (knownMoves & 1) + sPSSData->isSurfMon = FALSE; + if (knownMoves & 2) + sPSSData->isDiveMon = FALSE; + } + if (++sPSSData->field_216F >= IN_BOX_COUNT) + { + sPSSData->field_216F = 0; + if (++sPSSData->field_216E >= TOTAL_BOXES_COUNT) + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 0; + break; + } + } + } + if (!(sPSSData->isSurfMon || sPSSData->isDiveMon)) + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 1; + } + break; + } + + return -1; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index f8dcf1174..2ab91f8d4 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -160,32 +160,10 @@ gUnknown_20386A8: @ 20386A8 .include "src/pokemon_storage_system_2.o" .align 2 .include "src/pokemon_storage_system_3.o" - .align 2 -gUnknown_20397BC: @ 20397BC - .space 0x64 - -sBoxCursorArea: @ 2039820 - .space 0x1 - -sBoxCursorPosition: @ 2039821 - .space 0x1 - -sIsMonBeingMoved: @ 2039822 - .space 0x1 - -sMovingMonOrigBoxId: @ 2039823 - .space 0x1 - -sMovingMonOrigBoxPos: @ 2039824 - .space 0x1 - -sCanOnlyMove: @ 2039825 - .space 0x1 - -gUnknown_2039826: @ 2039826 - .space 0x2 + .include "src/pokemon_storage_system_5.o" + .align 2 gUnknown_2039828: @ 2039828 .space 0x4 |