diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-14 21:19:56 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-14 21:19:56 -0400 |
commit | 09b90247ee4f18c5746bbc54e6a5a75dfd9a1ed3 (patch) | |
tree | 96b13e1ba294936e38f36676e20d84f93c2f23b5 | |
parent | 5471590f77ab4d8b9684c6ea4b3d9e870a83633b (diff) |
through nonmatching InBoxInput_Normal
-rw-r--r-- | asm/pokemon_storage_system.s | 1508 | ||||
-rw-r--r-- | data/pokemon_storage_system.s | 2 | ||||
-rw-r--r-- | include/pokemon_storage_system.h | 2 | ||||
-rw-r--r-- | include/pokemon_storage_system_internal.h | 2 | ||||
-rw-r--r-- | include/text.h | 1 | ||||
-rw-r--r-- | src/pokemon_storage_system_5.c | 788 |
6 files changed, 797 insertions, 1506 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index bf7e54b2b..b7d7c2896 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -5,1504 +5,8 @@ .text - thumb_func_start sub_8093630 -sub_8093630: @ 8093630 - push {lr} - ldr r0, _08093650 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _0809364A - ldr r0, _08093654 @ =gUnknown_20397BC - ldr r1, _08093658 @ =sPSSData - ldr r1, [r1] - ldr r2, _0809365C @ =0x000020a0 - adds r1, r2 - movs r2, 0x64 - bl memcpy -_0809364A: - pop {r0} - bx r0 - .align 2, 0 -_08093650: .4byte sIsMonBeingMoved -_08093654: .4byte gUnknown_20397BC -_08093658: .4byte sPSSData -_0809365C: .4byte 0x000020a0 - thumb_func_end sub_8093630 - - thumb_func_start sub_8093660 -sub_8093660: @ 8093660 - push {lr} - ldr r0, _08093684 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080936A8 - ldr r0, _08093688 @ =sMovingMonOrigBoxId - ldrb r0, [r0] - cmp r0, 0xE - bne _08093698 - ldr r0, _0809368C @ =sPSSData - ldr r0, [r0] - ldr r1, _08093690 @ =0x000020a0 - adds r0, r1 - ldr r1, _08093694 @ =gUnknown_20397BC - movs r2, 0x64 - bl memcpy - b _080936A8 - .align 2, 0 -_08093684: .4byte sIsMonBeingMoved -_08093688: .4byte sMovingMonOrigBoxId -_0809368C: .4byte sPSSData -_08093690: .4byte 0x000020a0 -_08093694: .4byte gUnknown_20397BC -_08093698: - ldr r0, _080936AC @ =sPSSData - ldr r0, [r0] - ldr r1, _080936B0 @ =0x000020a0 - adds r0, r1 - ldr r1, _080936B4 @ =gUnknown_20397BC - movs r2, 0x50 - bl memcpy -_080936A8: - pop {r0} - bx r0 - .align 2, 0 -_080936AC: .4byte sPSSData -_080936B0: .4byte 0x000020a0 -_080936B4: .4byte gUnknown_20397BC - thumb_func_end sub_8093660 - - thumb_func_start sub_80936B8 -sub_80936B8: @ 80936B8 - push {r4,r5,lr} - ldr r0, _080936EC @ =sIsMonBeingMoved - ldrb r5, [r0] - cmp r5, 0 - beq _08093708 - bl sub_8093630 - ldr r3, _080936F0 @ =sPSSData - ldr r1, [r3] - ldr r0, _080936F4 @ =0x0000217c - adds r2, r1, r0 - ldr r0, _080936F8 @ =gUnknown_20397BC - str r0, [r2] - ldr r2, _080936FC @ =0x00002179 - adds r1, r2 - movs r2, 0 - strb r2, [r1] - ldr r0, [r3] - ldr r4, _08093700 @ =0x00002178 - adds r0, r4 - strb r2, [r0] - ldr r0, [r3] - ldr r1, _08093704 @ =0x0000217a - adds r0, r1 - strb r2, [r0] - b _0809379A - .align 2, 0 -_080936EC: .4byte sIsMonBeingMoved -_080936F0: .4byte sPSSData -_080936F4: .4byte 0x0000217c -_080936F8: .4byte gUnknown_20397BC -_080936FC: .4byte 0x00002179 -_08093700: .4byte 0x00002178 -_08093704: .4byte 0x0000217a -_08093708: - ldr r0, _08093744 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093764 - ldr r4, _08093748 @ =sPSSData - ldr r1, [r4] - ldr r0, _0809374C @ =0x0000217c - adds r2, r1, r0 - ldr r0, _08093750 @ =gPlayerParty - str r0, [r2] - ldr r0, _08093754 @ =sBoxCursorPosition - ldrb r0, [r0] - ldr r2, _08093758 @ =0x00002179 - adds r1, r2 - strb r0, [r1] - bl CountPartyMons - ldr r1, [r4] - subs r0, 0x1 - ldr r2, _0809375C @ =0x00002178 - adds r1, r2 - strb r0, [r1] - ldr r0, [r4] - ldr r4, _08093760 @ =0x0000217a - adds r0, r4 - strb r5, [r0] - b _0809379A - .align 2, 0 -_08093744: .4byte sBoxCursorArea -_08093748: .4byte sPSSData -_0809374C: .4byte 0x0000217c -_08093750: .4byte gPlayerParty -_08093754: .4byte sBoxCursorPosition -_08093758: .4byte 0x00002179 -_0809375C: .4byte 0x00002178 -_08093760: .4byte 0x0000217a -_08093764: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetBoxedMonPtr - ldr r3, _080937A0 @ =sPSSData - ldr r2, [r3] - ldr r4, _080937A4 @ =0x0000217c - adds r1, r2, r4 - str r0, [r1] - ldr r0, _080937A8 @ =sBoxCursorPosition - ldrb r0, [r0] - ldr r1, _080937AC @ =0x00002179 - adds r2, r1 - strb r0, [r2] - ldr r0, [r3] - ldr r2, _080937B0 @ =0x00002178 - adds r0, r2 - movs r1, 0x1D - strb r1, [r0] - ldr r0, [r3] - subs r4, 0x2 - adds r0, r4 - movs r1, 0x5 - strb r1, [r0] -_0809379A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080937A0: .4byte sPSSData -_080937A4: .4byte 0x0000217c -_080937A8: .4byte sBoxCursorPosition -_080937AC: .4byte 0x00002179 -_080937B0: .4byte 0x00002178 - thumb_func_end sub_80936B8 - - thumb_func_start sub_80937B4 -sub_80937B4: @ 80937B4 - push {r4,lr} - ldr r0, _080937C4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080937C8 - bl sub_8093660 - b _080937D0 - .align 2, 0 -_080937C4: .4byte sIsMonBeingMoved -_080937C8: - ldr r4, _080937D8 @ =sBoxCursorPosition - bl GetLastViewedMonIndex - strb r0, [r4] -_080937D0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080937D8: .4byte sBoxCursorPosition - thumb_func_end sub_80937B4 - - thumb_func_start CompactPartySlots -CompactPartySlots: @ 80937DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r7, _08093828 @ =0x0000ffff - movs r6, 0 - movs r5, 0 - movs r0, 0x64 - mov r9, r0 - ldr r1, _0809382C @ =gPlayerParty - mov r8, r1 - subs r0, 0x65 - mov r10, r0 -_080937F8: - mov r0, r9 - muls r0, r6 - mov r1, r8 - adds r4, r0, r1 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - cmp r0, 0 - beq _08093830 - cmp r6, r5 - beq _08093820 - mov r0, r9 - muls r0, r5 - add r0, r8 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy -_08093820: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - b _0809383A - .align 2, 0 -_08093828: .4byte 0x0000ffff -_0809382C: .4byte gPlayerParty -_08093830: - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, r10 - bne _0809383A - adds r7, r6, 0 -_0809383A: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080937F8 - lsls r7, 16 - cmp r5, 0x5 - bhi _08093862 - movs r6, 0x64 - ldr r4, _08093874 @ =gPlayerParty -_0809384E: - adds r0, r5, 0 - muls r0, r6 - adds r0, r4 - bl ZeroMonData - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _0809384E -_08093862: - asrs r0, r7, 16 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08093874: .4byte gPlayerParty - thumb_func_end CompactPartySlots - - thumb_func_start SetMonMarkings -SetMonMarkings: @ 8093878 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - ldr r2, _080938A8 @ =sPSSData - ldr r1, [r2] - ldr r3, _080938AC @ =0x00000ce7 - adds r1, r3 - strb r0, [r1] - ldr r0, _080938B0 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080938B8 - ldr r0, [r2] - ldr r1, _080938B4 @ =0x000020a0 - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetMonData - b _080938EC - .align 2, 0 -_080938A8: .4byte sPSSData -_080938AC: .4byte 0x00000ce7 -_080938B0: .4byte sIsMonBeingMoved -_080938B4: .4byte 0x000020a0 -_080938B8: - ldr r4, _080938F4 @ =sBoxCursorArea - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x1 - bne _080938D8 - ldr r0, _080938F8 @ =sBoxCursorPosition - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080938FC @ =gPlayerParty - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetMonData -_080938D8: - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - bne _080938EC - ldr r0, _080938F8 @ =sBoxCursorPosition - ldrb r0, [r0] - movs r1, 0x8 - mov r2, sp - bl SetCurrentBoxMonData -_080938EC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080938F4: .4byte sBoxCursorArea -_080938F8: .4byte sBoxCursorPosition -_080938FC: .4byte gPlayerParty - thumb_func_end SetMonMarkings - - thumb_func_start CanMovePartyMon -CanMovePartyMon: @ 8093900 - push {lr} - ldr r0, _08093928 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093934 - ldr r0, _0809392C @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08093934 - ldr r0, _08093930 @ =sBoxCursorPosition - ldrb r0, [r0] - bl CountPartyAliveNonEggMonsExcept - lsls r0, 24 - cmp r0, 0 - bne _08093934 - movs r0, 0x1 - b _08093936 - .align 2, 0 -_08093928: .4byte sBoxCursorArea -_0809392C: .4byte sIsMonBeingMoved -_08093930: .4byte sBoxCursorPosition -_08093934: - movs r0, 0 -_08093936: - pop {r1} - bx r1 - thumb_func_end CanMovePartyMon - - thumb_func_start CanShiftMon -CanShiftMon: @ 809393C - push {lr} - ldr r0, _08093980 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08093998 - ldr r0, _08093984 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _0809397C - ldr r0, _08093988 @ =sBoxCursorPosition - ldrb r0, [r0] - bl CountPartyAliveNonEggMonsExcept - lsls r0, 24 - cmp r0, 0 - bne _0809397C - ldr r0, _0809398C @ =sPSSData - ldr r1, [r0] - ldr r2, _08093990 @ =0x00000ce9 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08093998 - ldr r2, _08093994 @ =0x000020a0 - adds r0, r1, r2 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08093998 -_0809397C: - movs r0, 0x1 - b _0809399A - .align 2, 0 -_08093980: .4byte sIsMonBeingMoved -_08093984: .4byte sBoxCursorArea -_08093988: .4byte sBoxCursorPosition -_0809398C: .4byte sPSSData -_08093990: .4byte 0x00000ce9 -_08093994: .4byte 0x000020a0 -_08093998: - movs r0, 0 -_0809399A: - pop {r1} - bx r1 - thumb_func_end CanShiftMon - - thumb_func_start IsMonBeingMoved -IsMonBeingMoved: @ 80939A0 - ldr r0, _080939A8 @ =sIsMonBeingMoved - ldrb r0, [r0] - bx lr - .align 2, 0 -_080939A8: .4byte sIsMonBeingMoved - thumb_func_end IsMonBeingMoved - - thumb_func_start IsCursorOnBox -IsCursorOnBox: @ 80939AC - push {lr} - movs r1, 0 - ldr r0, _080939C4 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2 - bne _080939BE - movs r1, 0x1 -_080939BE: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080939C4: .4byte sBoxCursorArea - thumb_func_end IsCursorOnBox - - thumb_func_start IsCursorOnCloseBox -IsCursorOnCloseBox: @ 80939C8 - push {lr} - movs r1, 0 - ldr r0, _080939EC @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - bne _080939E6 - ldr r0, _080939F0 @ =sBoxCursorPosition - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _080939E6 - movs r1, 0x1 -_080939E6: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080939EC: .4byte sBoxCursorArea -_080939F0: .4byte sBoxCursorPosition - thumb_func_end IsCursorOnCloseBox - - thumb_func_start IsCursorInBox -IsCursorInBox: @ 80939F4 - push {lr} - movs r1, 0 - ldr r0, _08093A0C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08093A06 - movs r1, 0x1 -_08093A06: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_08093A0C: .4byte sBoxCursorArea - thumb_func_end IsCursorInBox - - thumb_func_start sub_8093A10 -sub_8093A10: @ 8093A10 - push {r4,lr} - ldr r0, _08093A44 @ =sPSSData - ldr r1, [r0] - movs r2, 0 - ldr r3, _08093A48 @ =sIsMonBeingMoved - ldrb r0, [r3] - cmp r0, 0 - bne _08093A22 - movs r2, 0x1 -_08093A22: - ldr r4, _08093A4C @ =0x00000ce6 - adds r0, r1, r4 - strb r2, [r0] - ldrb r0, [r3] - cmp r0, 0 - bne _08093AA0 - ldr r0, _08093A50 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - beq _08093A5A - cmp r0, 0x1 - bgt _08093A54 - cmp r0, 0 - beq _08093A8A - b _08093AA0 - .align 2, 0 -_08093A44: .4byte sPSSData -_08093A48: .4byte sIsMonBeingMoved -_08093A4C: .4byte 0x00000ce6 -_08093A50: .4byte sBoxCursorArea -_08093A54: - cmp r0, 0x3 - bgt _08093AA0 - b _08093A80 -_08093A5A: - ldr r1, _08093A78 @ =sBoxCursorPosition - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _08093A80 - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, _08093A7C @ =gPlayerParty - adds r0, r1 - movs r1, 0 - bl SetCursorMonData - b _08093AA0 - .align 2, 0 -_08093A78: .4byte sBoxCursorPosition -_08093A7C: .4byte gPlayerParty -_08093A80: - movs r0, 0 - movs r1, 0x2 - bl SetCursorMonData - b _08093AA0 -_08093A8A: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08093AA8 @ =sBoxCursorPosition - ldrb r1, [r1] - bl GetBoxedMonPtr - movs r1, 0x1 - bl SetCursorMonData -_08093AA0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08093AA8: .4byte sBoxCursorPosition - thumb_func_end sub_8093A10 - - thumb_func_start sub_8093AAC -sub_8093AAC: @ 8093AAC - push {lr} - ldr r0, _08093AC0 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08093AC8 - ldr r0, _08093AC4 @ =gUnknown_20397BC - movs r1, 0 - bl SetCursorMonData - b _08093ACC - .align 2, 0 -_08093AC0: .4byte sIsMonBeingMoved -_08093AC4: .4byte gUnknown_20397BC -_08093AC8: - bl sub_8093A10 -_08093ACC: - pop {r0} - bx r0 - thumb_func_end sub_8093AAC - - thumb_func_start SetCursorMonData -SetCursorMonData: @ 8093AD0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r5, r1, 0 - ldr r0, _08093B38 @ =sPSSData - mov r8, r0 - ldr r1, [r0] - ldr r3, _08093B3C @ =0x00000ce2 - adds r2, r1, r3 - movs r0, 0 - strh r0, [r2] - mov r9, r0 - mov r10, r0 - cmp r5, 0 - bne _08093BEC - adds r6, r4, 0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - mov r2, r8 - ldr r1, [r2] - movs r3, 0xCE - lsls r3, 4 - adds r1, r3 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _08093B16 - b _08093D0C -_08093B16: - adds r0, r4, 0 - movs r1, 0x4 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0 - beq _08093B44 - mov r1, r8 - ldr r0, [r1] - ldr r2, _08093B40 @ =0x00000ce9 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - b _08093B56 - .align 2, 0 -_08093B38: .4byte sPSSData -_08093B3C: .4byte 0x00000ce2 -_08093B40: .4byte 0x00000ce9 -_08093B44: - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, r8 - ldr r1, [r3] - ldr r2, _08093BCC @ =0x00000ce9 - adds r1, r2 - strb r0, [r1] -_08093B56: - ldr r4, _08093BD0 @ =sPSSData - ldr r2, [r4] - ldr r5, _08093BD4 @ =0x00000cea - adds r2, r5 - adds r0, r6, 0 - movs r1, 0x2 - bl GetMonData - ldr r0, [r4] - adds r0, r5 - bl StringGetEnd10 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [r4] - ldr r3, _08093BD8 @ =0x00000ce8 - adds r1, r3 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x8 - bl GetMonData - ldr r1, [r4] - ldr r2, _08093BDC @ =0x00000ce7 - adds r1, r2 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - ldr r1, [r4] - ldr r3, _08093BE0 @ =0x00000cdc - adds r1, r3 - str r0, [r1] - adds r0, r6, 0 - bl GetMonFrontSpritePal - ldr r1, [r4] - ldr r2, _08093BE4 @ =0x00000cd8 - adds r1, r2 - str r0, [r1] - adds r0, r6, 0 - bl GetMonGender - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - adds r0, r6, 0 - movs r1, 0xC - bl GetMonData - ldr r1, [r4] - ldr r3, _08093BE8 @ =0x00000ce2 - adds r1, r3 - strh r0, [r1] - b _08093CFC - .align 2, 0 -_08093BCC: .4byte 0x00000ce9 -_08093BD0: .4byte sPSSData -_08093BD4: .4byte 0x00000cea -_08093BD8: .4byte 0x00000ce8 -_08093BDC: .4byte 0x00000ce7 -_08093BE0: .4byte 0x00000cdc -_08093BE4: .4byte 0x00000cd8 -_08093BE8: .4byte 0x00000ce2 -_08093BEC: - cmp r5, 0x1 - beq _08093BF2 - b _08093CF0 -_08093BF2: - adds r7, r4, 0 - adds r0, r7, 0 - movs r1, 0x41 - bl GetBoxMonData - mov r2, r8 - ldr r1, [r2] - movs r3, 0xCE - lsls r3, 4 - adds r1, r3 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _08093C10 - b _08093D0C -_08093C10: - adds r0, r7, 0 - movs r1, 0x1 - bl GetBoxMonData - mov r9, r0 - adds r0, r7, 0 - movs r1, 0x4 - bl GetBoxMonData - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0 - beq _08093C3C - mov r1, r8 - ldr r0, [r1] - ldr r2, _08093C38 @ =0x00000ce9 - adds r0, r2 - strb r5, [r0] - b _08093C4E - .align 2, 0 -_08093C38: .4byte 0x00000ce9 -_08093C3C: - adds r0, r7, 0 - movs r1, 0x2D - bl GetBoxMonData - mov r3, r8 - ldr r1, [r3] - ldr r2, _08093CD0 @ =0x00000ce9 - adds r1, r2 - strb r0, [r1] -_08093C4E: - ldr r5, _08093CD4 @ =sPSSData - ldr r2, [r5] - ldr r4, _08093CD8 @ =0x00000cea - adds r2, r4 - adds r0, r7, 0 - movs r1, 0x2 - bl GetBoxMonData - ldr r0, [r5] - adds r0, r4 - bl StringGetEnd10 - adds r0, r7, 0 - bl GetLevelFromBoxMonExp - ldr r1, [r5] - ldr r3, _08093CDC @ =0x00000ce8 - adds r1, r3 - strb r0, [r1] - adds r0, r7, 0 - movs r1, 0x8 - bl GetBoxMonData - ldr r1, [r5] - ldr r2, _08093CE0 @ =0x00000ce7 - adds r1, r2 - strb r0, [r1] - adds r0, r7, 0 - movs r1, 0 - bl GetBoxMonData - adds r2, r0, 0 - ldr r1, [r5] - ldr r6, _08093CE4 @ =0x00000cdc - adds r0, r1, r6 - str r2, [r0] - subs r4, 0xA - adds r1, r4 - ldrh r0, [r1] - mov r1, r9 - bl GetMonSpritePalFromSpeciesAndPersonality - ldr r1, [r5] - ldr r3, _08093CE8 @ =0x00000cd8 - adds r2, r1, r3 - str r0, [r2] - adds r4, r1, r4 - ldrh r0, [r4] - adds r1, r6 - ldr r1, [r1] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - adds r0, r7, 0 - movs r1, 0xC - bl GetBoxMonData - ldr r1, [r5] - ldr r2, _08093CEC @ =0x00000ce2 - adds r1, r2 - strh r0, [r1] - b _08093CFC - .align 2, 0 -_08093CD0: .4byte 0x00000ce9 -_08093CD4: .4byte sPSSData -_08093CD8: .4byte 0x00000cea -_08093CDC: .4byte 0x00000ce8 -_08093CE0: .4byte 0x00000ce7 -_08093CE4: .4byte 0x00000cdc -_08093CE8: .4byte 0x00000cd8 -_08093CEC: .4byte 0x00000ce2 -_08093CF0: - movs r3, 0xCE - lsls r3, 4 - adds r0, r1, r3 - mov r1, r9 - strh r1, [r0] - strh r1, [r2] -_08093CFC: - ldr r0, _08093D50 @ =sPSSData - ldr r1, [r0] - movs r2, 0xCE - lsls r2, 4 - adds r0, r1, r2 - ldrh r2, [r0] - cmp r2, 0 - bne _08093D68 -_08093D0C: - ldr r4, _08093D50 @ =sPSSData - ldr r0, [r4] - ldr r3, _08093D54 @ =0x00000cea - adds r0, r3 - movs r1, 0 - movs r2, 0x5 - bl StringFill - ldr r0, [r4] - ldr r1, _08093D58 @ =0x00000cf5 - adds r0, r1 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r2, _08093D5C @ =0x00000d19 - adds r0, r2 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r3, _08093D60 @ =0x00000d3d - adds r0, r3 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r1, _08093D64 @ =0x00000d61 - adds r0, r1 - b _08093DC6 - .align 2, 0 -_08093D50: .4byte sPSSData -_08093D54: .4byte 0x00000cea -_08093D58: .4byte 0x00000cf5 -_08093D5C: .4byte 0x00000d19 -_08093D60: .4byte 0x00000d3d -_08093D64: .4byte 0x00000d61 -_08093D68: - ldr r3, _08093D8C @ =0x00000ce9 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _08093DE8 - mov r0, r10 - cmp r0, 0 - beq _08093D94 - ldr r2, _08093D90 @ =0x00000cf5 - adds r0, r1, r2 - adds r3, 0x1 - adds r1, r3 - movs r2, 0 - movs r3, 0x5 - bl StringCopyPadded - b _08093DA2 - .align 2, 0 -_08093D8C: .4byte 0x00000ce9 -_08093D90: .4byte 0x00000cf5 -_08093D94: - ldr r2, _08093DD0 @ =0x00000cf5 - adds r0, r1, r2 - ldr r1, _08093DD4 @ =gText_EggNickname - movs r2, 0 - movs r3, 0x8 - bl StringCopyPadded -_08093DA2: - ldr r4, _08093DD8 @ =sPSSData - ldr r0, [r4] - ldr r3, _08093DDC @ =0x00000d19 - adds r0, r3 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r1, _08093DE0 @ =0x00000d3d - adds r0, r1 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r2, _08093DE4 @ =0x00000d61 - adds r0, r2 -_08093DC6: - movs r1, 0 - movs r2, 0x8 - bl StringFill - b _08093F84 - .align 2, 0 -_08093DD0: .4byte 0x00000cf5 -_08093DD4: .4byte gText_EggNickname -_08093DD8: .4byte sPSSData -_08093DDC: .4byte 0x00000d19 -_08093DE0: .4byte 0x00000d3d -_08093DE4: .4byte 0x00000d61 -_08093DE8: - cmp r2, 0x1D - beq _08093DF0 - cmp r2, 0x20 - bne _08093DF4 -_08093DF0: - movs r3, 0xFF - mov r9, r3 -_08093DF4: - ldr r4, _08093E78 @ =sPSSData - ldr r1, [r4] - ldr r2, _08093E7C @ =0x00000cf5 - adds r0, r1, r2 - ldr r3, _08093E80 @ =0x00000cea - adds r1, r3 - movs r2, 0 - movs r3, 0x5 - bl StringCopyPadded - ldr r1, [r4] - ldr r0, _08093E84 @ =0x00000d19 - adds r2, r1, r0 - movs r0, 0xBA - strb r0, [r2] - ldr r3, _08093E88 @ =0x00000d1a - adds r2, r1, r3 - ldr r0, [r4] - movs r1, 0xCE - lsls r1, 4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0xB - muls r1, r0 - ldr r0, _08093E8C @ =gSpeciesNames - adds r1, r0 - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x5 - bl StringCopyPadded - ldr r4, [r4] - ldr r3, _08093E90 @ =0x00000d3d - adds r2, r4, r3 - movs r0, 0xFC - strb r0, [r2] - ldr r0, _08093E94 @ =0x00000d3e - adds r2, r4, r0 - movs r0, 0x4 - strb r0, [r2] - ldr r1, _08093E98 @ =0x00000d3f - adds r2, r4, r1 - mov r3, r9 - cmp r3, 0 - beq _08093EA4 - cmp r3, 0xFE - beq _08093ED0 - movs r0, 0x2 - strb r0, [r2] - movs r0, 0xD4 - lsls r0, 4 - adds r2, r4, r0 - movs r0, 0x1 - strb r0, [r2] - adds r1, 0x2 - adds r2, r4, r1 - movs r0, 0x3 - strb r0, [r2] - ldr r3, _08093E9C @ =0x00000d42 - adds r2, r4, r3 - movs r0, 0 - strb r0, [r2] - ldr r0, _08093EA0 @ =0x00000d43 - adds r2, r4, r0 - b _08093EF2 - .align 2, 0 -_08093E78: .4byte sPSSData -_08093E7C: .4byte 0x00000cf5 -_08093E80: .4byte 0x00000cea -_08093E84: .4byte 0x00000d19 -_08093E88: .4byte 0x00000d1a -_08093E8C: .4byte gSpeciesNames -_08093E90: .4byte 0x00000d3d -_08093E94: .4byte 0x00000d3e -_08093E98: .4byte 0x00000d3f -_08093E9C: .4byte 0x00000d42 -_08093EA0: .4byte 0x00000d43 -_08093EA4: - strb r0, [r2] - movs r1, 0xD4 - lsls r1, 4 - adds r2, r4, r1 - movs r0, 0x1 - strb r0, [r2] - ldr r3, _08093EC8 @ =0x00000d41 - adds r2, r4, r3 - movs r0, 0x5 - strb r0, [r2] - ldr r0, _08093ECC @ =0x00000d42 - adds r2, r4, r0 - movs r0, 0xB5 - strb r0, [r2] - adds r1, 0x3 - adds r2, r4, r1 - b _08093EF2 - .align 2, 0 -_08093EC8: .4byte 0x00000d41 -_08093ECC: .4byte 0x00000d42 -_08093ED0: - movs r0, 0x6 - strb r0, [r2] - movs r3, 0xD4 - lsls r3, 4 - adds r2, r4, r3 - movs r0, 0x1 - strb r0, [r2] - ldr r0, _08093F60 @ =0x00000d41 - adds r2, r4, r0 - movs r0, 0x7 - strb r0, [r2] - ldr r1, _08093F64 @ =0x00000d42 - adds r2, r4, r1 - movs r0, 0xB6 - strb r0, [r2] - adds r3, 0x3 - adds r2, r4, r3 -_08093EF2: - movs r0, 0xFC - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x4 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x2 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x1 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x3 - strb r0, [r2] - adds r2, 0x1 - movs r5, 0 - strb r5, [r2] - adds r2, 0x1 - movs r0, 0xF9 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x5 - strb r0, [r2] - adds r2, 0x1 - ldr r4, _08093F68 @ =sPSSData - ldr r0, [r4] - ldr r1, _08093F6C @ =0x00000ce8 - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r2, r0, 0 - strb r5, [r2] - movs r0, 0xFF - strb r0, [r2, 0x1] - ldr r4, [r4] - ldr r2, _08093F70 @ =0x00000ce2 - adds r1, r4, r2 - ldrh r0, [r1] - cmp r0, 0 - beq _08093F78 - ldr r3, _08093F74 @ =0x00000d61 - adds r4, r3 - bl ItemId_GetName - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x8 - bl StringCopyPadded - b _08093F84 - .align 2, 0 -_08093F60: .4byte 0x00000d41 -_08093F64: .4byte 0x00000d42 -_08093F68: .4byte sPSSData -_08093F6C: .4byte 0x00000ce8 -_08093F70: .4byte 0x00000ce2 -_08093F74: .4byte 0x00000d61 -_08093F78: - ldr r1, _08093F94 @ =0x00000d61 - adds r0, r4, r1 - movs r1, 0 - movs r2, 0x8 - bl StringFill -_08093F84: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08093F94: .4byte 0x00000d61 - thumb_func_end SetCursorMonData - - thumb_func_start sub_8093F98 -sub_8093F98: @ 8093F98 - push {lr} - ldr r0, _08093FB8 @ =sPSSData - ldr r0, [r0] - ldr r1, _08093FBC @ =0x000021ef - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08093FC0 - cmp r0, 0x1 - ble _08093FB0 - cmp r0, 0x2 - beq _08093FC6 -_08093FB0: - bl sub_8093FD4 - b _08093FCA - .align 2, 0 -_08093FB8: .4byte sPSSData -_08093FBC: .4byte 0x000021ef -_08093FC0: - bl sub_8094240 - b _08093FCA -_08093FC6: - bl sub_8094378 -_08093FCA: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8093F98 - - thumb_func_start sub_8093FD4 -sub_8093FD4: @ 8093FD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08094058 @ =sBoxCursorArea - ldrb r0, [r0] - mov r8, r0 - ldr r2, _0809405C @ =sBoxCursorPosition - ldrb r4, [r2] - ldr r5, _08094060 @ =sPSSData - ldr r0, [r5] - ldr r1, _08094064 @ =0x00000cce - mov r10, r1 - add r0, r10 - movs r1, 0 - strb r1, [r0] - ldr r0, [r5] - ldr r7, _08094068 @ =0x00000ccf - adds r0, r7 - strb r1, [r0] - ldr r0, [r5] - ldr r3, _0809406C @ =0x00000cd3 - mov r9, r3 - add r0, r9 - strb r1, [r0] - ldr r6, _08094070 @ =gMain - ldrh r1, [r6, 0x30] - movs r0, 0x40 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0 - beq _08094018 - b _08094208 -_08094018: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08094074 - movs r6, 0x1 - lsls r0, r4, 24 - movs r1, 0xC0 - lsls r1, 19 - adds r0, r1 - lsrs r4, r0, 24 - asrs r0, 24 - cmp r0, 0x1D - bgt _08094034 - b _08094224 -_08094034: - movs r2, 0x3 - mov r8, r2 - subs r0, 0x1E - lsls r0, 24 - asrs r0, 24 - movs r1, 0x3 - bl __divsi3 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r5] - add r0, r10 - strb r6, [r0] - ldr r0, [r5] - add r0, r9 - strb r6, [r0] - b _08094224 - .align 2, 0 -_08094058: .4byte sBoxCursorArea -_0809405C: .4byte sBoxCursorPosition -_08094060: .4byte sPSSData -_08094064: .4byte 0x00000cce -_08094068: .4byte 0x00000ccf -_0809406C: .4byte 0x00000cd3 -_08094070: .4byte gMain -_08094074: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080940AA - movs r6, 0x1 - movs r0, 0 - ldrsb r0, [r3, r0] - movs r1, 0x6 - bl __modsi3 - lsls r0, 24 - cmp r0, 0 - beq _08094096 - lsls r0, r4, 24 - movs r3, 0xFF - lsls r3, 24 - b _08094218 -_08094096: - ldr r0, [r5] - adds r0, r7 - movs r1, 0xFF - strb r1, [r0] - lsls r0, r4, 24 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r4, r0, 24 - b _08094224 -_080940AA: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080940DE - movs r6, 0x1 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, 0x1 - movs r1, 0x6 - bl __modsi3 - cmp r0, 0 - beq _080940D0 - lsls r0, r4, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r4, r0, 24 - b _08094224 -_080940D0: - ldr r0, [r5] - adds r0, r7 - strb r6, [r0] - lsls r0, r4, 24 - movs r3, 0xFB - lsls r3, 24 - b _08094218 -_080940DE: - ldrh r1, [r6, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080940EC - movs r6, 0x1 - b _0809421E -_080940EC: - movs r4, 0x1 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080941B0 - bl sub_8094924 - lsls r0, 24 - cmp r0, 0 - beq _080941B0 - ldr r0, _0809410C @ =sCanOnlyMove - ldrb r0, [r0] - cmp r0, 0 - bne _08094110 - movs r0, 0x8 - b _08094232 - .align 2, 0 -_0809410C: .4byte sCanOnlyMove -_08094110: - ldr r1, [r5] - ldrb r0, [r1, 0x1] - cmp r0, 0x2 - bne _08094120 - ldr r0, _0809413C @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0x1 - bne _080941A0 -_08094120: - movs r0, 0 - bl sub_8094E50 - subs r0, 0x1 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xE - bhi _080941B0 - lsls r0, 2 - ldr r1, _08094140 @ =_08094144 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809413C: .4byte sIsMonBeingMoved -_08094140: .4byte _08094144 - .align 2, 0 -_08094144: - .4byte _08094180 - .4byte _08094184 - .4byte _08094188 - .4byte _0809418C - .4byte _08094190 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _08094194 - .4byte _08094198 - .4byte _080941B0 - .4byte _0809419C -_08094180: - movs r0, 0xB - b _08094232 -_08094184: - movs r0, 0xC - b _08094232 -_08094188: - movs r0, 0xD - b _08094232 -_0809418C: - movs r0, 0xE - b _08094232 -_08094190: - movs r0, 0xF - b _08094232 -_08094194: - movs r0, 0x10 - b _08094232 -_08094198: - movs r0, 0x11 - b _08094232 -_0809419C: - movs r0, 0x12 - b _08094232 -_080941A0: - ldr r2, _080941AC @ =0x000021ef - adds r0, r1, r2 - strb r4, [r0] - movs r0, 0x14 - b _08094232 - .align 2, 0 -_080941AC: .4byte 0x000021ef -_080941B0: - ldr r2, _080941C0 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080941C4 - movs r0, 0x13 - b _08094232 - .align 2, 0 -_080941C0: .4byte gMain -_080941C4: - ldr r0, _080941E0 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080941F2 - ldrh r1, [r2, 0x2C] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080941E4 - movs r0, 0xA - b _08094232 - .align 2, 0 -_080941E0: .4byte gSaveBlock2Ptr -_080941E4: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080941F2 - movs r0, 0x9 - b _08094232 -_080941F2: - ldrh r1, [r2, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08094204 - bl sub_8094C84 - movs r0, 0 - b _08094232 -_08094204: - movs r6, 0 - b _08094230 -_08094208: - movs r6, 0x1 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x5 - ble _0809421E - lsls r0, r4, 24 - movs r3, 0xFA - lsls r3, 24 -_08094218: - adds r0, r3 - lsrs r4, r0, 24 - b _08094224 -_0809421E: - movs r0, 0x2 - mov r8, r0 - movs r4, 0 -_08094224: - cmp r6, 0 - beq _08094230 - mov r0, r8 - adds r1, r4, 0 - bl sub_80927E8 -_08094230: - adds r0, r6, 0 -_08094232: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8093FD4 - - thumb_func_start sub_8094240 -sub_8094240: @ 8094240 + thumb_func_start InBoxInput_GrabbingMultiple +InBoxInput_GrabbingMultiple: @ 8094240 push {r4,lr} ldr r1, _08094270 @ =gMain ldrh r0, [r1, 0x2C] @@ -1653,10 +157,10 @@ _08094364: _0809436C: .4byte sPSSData _08094370: .4byte 0x000021ef _08094374: .4byte 0x00000cb4 - thumb_func_end sub_8094240 + thumb_func_end InBoxInput_GrabbingMultiple - thumb_func_start sub_8094378 -sub_8094378: @ 8094378 + thumb_func_start InBoxInput_MovingMultiple +InBoxInput_MovingMultiple: @ 8094378 push {r4,lr} ldr r2, _0809439C @ =gMain ldrh r1, [r2, 0x30] @@ -1795,7 +299,7 @@ _08094484: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8094378 + thumb_func_end InBoxInput_MovingMultiple thumb_func_start sub_809448C sub_809448C: @ 809448C diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s index 1d85f55c4..99352ffa3 100644 --- a/data/pokemon_storage_system.s +++ b/data/pokemon_storage_system.s @@ -7,7 +7,7 @@ .align 2 gUnknown_83D3478:: @ 83D3478 - .4byte sub_8093F98 + .4byte HandleInput_InBox .byte 0 .align 2 .4byte sub_809448C diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 6d0489ed6..7422b4522 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -30,7 +30,7 @@ enum u8 *GetBoxNamePtr(u8 boxNumber); struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition); void SetBoxMonNickAt(u8 boxId, u8 monPosition, const u8 *newNick); -void CompactPartySlots(void); +s16 CompactPartySlots(void); u32 GetBoxMonDataAt(u8 boxId, u8 monPosition, s32 request); void ZeroBoxMonAt(u8 boxId, u8 monPosition); void Cb2_ReturnToPSS(void); diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h index 4d5af348c..caec69019 100644 --- a/include/pokemon_storage_system_internal.h +++ b/include/pokemon_storage_system_internal.h @@ -454,5 +454,7 @@ void sub_80901EC(u8 boxPosition); void sub_8090FC4(u8 mode, u8 position); bool8 sub_8091084(void); void sub_80910CC(void); +u8 CountPartyMons(void); +u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); #endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H diff --git a/include/text.h b/include/text.h index ff8b033e9..f1bf8b942 100644 --- a/include/text.h +++ b/include/text.h @@ -128,6 +128,7 @@ #define EXT_CTRL_CODE_COLOR 0x1 #define EXT_CTRL_CODE_HIGHLIGHT 0x2 #define EXT_CTRL_CODE_SHADOW 0x3 +#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x4 // #define EXT_CTRL_CODE_UNKNOWN_7 0x7 // diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index 8fe09cc15..c3009d3c2 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -1,6 +1,10 @@ #include "global.h" #include "gflib.h" +#include "data.h" +#include "item.h" #include "pokemon_storage_system_internal.h" +#include "pokemon_summary_screen.h" +#include "strings.h" #include "constants/species.h" #include "constants/moves.h" @@ -28,10 +32,16 @@ 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 SetCursorMonData(void * cursorMon, u8 mode); void sub_8093AAC(void); +u8 InBoxInput_Normal(void); +u8 InBoxInput_GrabbingMultiple(void); +u8 InBoxInput_MovingMultiple(void); +void sub_8094AD8(void); void sub_8095D44(u8 cursorArea, u8 cursorPos); +bool8 sub_8094924(void); +s8 sub_8094E50(u8 a0); +void sub_8094C84(void); const u16 gUnknown_83D2BCC[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); const u16 gUnknown_83D2BEC[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp"); @@ -821,3 +831,777 @@ s8 RunCanReleaseMon(void) return -1; } + +void sub_8093630(void) +{ + if (sIsMonBeingMoved) + gUnknown_20397BC = sPSSData->movingMon; +} + +void sub_8093660(void) +{ + if (sIsMonBeingMoved) + { + if (sMovingMonOrigBoxId == TOTAL_BOXES_COUNT) + sPSSData->movingMon = gUnknown_20397BC; + else + sPSSData->movingMon.box = gUnknown_20397BC.box; + } +} + +void sub_80936B8(void) +{ + if (sIsMonBeingMoved) + { + sub_8093630(); + sPSSData->field_218C.mon = &gUnknown_20397BC; + sPSSData->field_2187 = 0; + sPSSData->field_2186 = 0; + sPSSData->field_2188 = 0; + } + else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + { + sPSSData->field_218C.mon = gPlayerParty; + sPSSData->field_2187 = sBoxCursorPosition; + sPSSData->field_2186 = CountPartyMons() - 1; + sPSSData->field_2188 = 0; + } + else + { + sPSSData->field_218C.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0); + sPSSData->field_2187 = sBoxCursorPosition; + sPSSData->field_2186 = IN_BOX_COUNT - 1; + sPSSData->field_2188 = 5; + } +} + +void sub_80937B4(void) +{ + if (sIsMonBeingMoved) + sub_8093660(); + else + sBoxCursorPosition = GetLastViewedMonIndex(); +} + +// file boundary maybe? + +s16 CompactPartySlots(void) +{ + s16 retVal = -1; + u16 i, last; + + for (i = 0, last = 0; i < PARTY_SIZE; i++) + { + u16 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + if (species != SPECIES_NONE) + { + if (i != last) + gPlayerParty[last] = gPlayerParty[i]; + last++; + } + else if (retVal == -1) + { + retVal = i; + } + } + for (; last < PARTY_SIZE; last++) + ZeroMonData(gPlayerParty + last); + + return retVal; +} + +void SetMonMarkings(u8 markings) +{ + sPSSData->cursorMonMarkings = markings; + if (sIsMonBeingMoved) + { + SetMonData(&sPSSData->movingMon, MON_DATA_MARKINGS, &markings); + } + else + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + SetMonData(gPlayerParty + sBoxCursorPosition, MON_DATA_MARKINGS, &markings); + if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + SetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_MARKINGS, &markings); + } +} + +bool8 CanMovePartyMon(void) +{ + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + return TRUE; + else + return FALSE; +} + +bool8 CanShiftMon(void) +{ + if (sIsMonBeingMoved) + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + { + if (sPSSData->cursorMonIsEgg || GetMonData(&sPSSData->movingMon, MON_DATA_HP) == 0) + return FALSE; + } + return TRUE; + } + return FALSE; +} + +bool8 IsMonBeingMoved(void) +{ + return sIsMonBeingMoved; +} + +bool8 IsCursorOnBox(void) +{ + return (sBoxCursorArea == CURSOR_AREA_BOX); +} + +bool8 IsCursorOnCloseBox(void) +{ + return (sBoxCursorArea == CURSOR_AREA_BUTTONS && sBoxCursorPosition == 1); +} + +bool8 IsCursorInBox(void) +{ + return (sBoxCursorArea == CURSOR_AREA_IN_BOX); +} + +void sub_8093A10(void) +{ + sPSSData->setMosaic = (sIsMonBeingMoved == FALSE); + if (!sIsMonBeingMoved) + { + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + if (sBoxCursorPosition < PARTY_SIZE) + { + SetCursorMonData(&gPlayerParty[sBoxCursorPosition], MODE_PARTY); + break; + } + // fallthrough + case CURSOR_AREA_BUTTONS: + case CURSOR_AREA_BOX: + SetCursorMonData(NULL, MODE_2); + break; + case CURSOR_AREA_IN_BOX: + SetCursorMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX); + break; + } + } +} + +void sub_8093AAC(void) +{ + if (sIsMonBeingMoved) + SetCursorMonData(&gUnknown_20397BC, MODE_PARTY); + else + sub_8093A10(); +} + +void SetCursorMonData(void *pokemon, u8 mode) +{ + u8 *txtPtr; + u16 gender; + bool8 sanityIsBagEgg; + + sPSSData->cursorMonItem = 0; + gender = MON_MALE; + sanityIsBagEgg = FALSE; + if (mode == MODE_PARTY) + { + struct Pokemon *mon = (struct Pokemon *)pokemon; + + sPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); + if (sPSSData->cursorMonSpecies != SPECIES_NONE) + { + sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); + if (sanityIsBagEgg) + sPSSData->cursorMonIsEgg = TRUE; + else + sPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); + + GetMonData(mon, MON_DATA_NICKNAME, sPSSData->cursorMonNick); + StringGetEnd10(sPSSData->cursorMonNick); + sPSSData->cursorMonLevel = GetMonData(mon, MON_DATA_LEVEL); + sPSSData->cursorMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); + sPSSData->cursorMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + sPSSData->cursorMonPalette = GetMonFrontSpritePal(mon); + gender = GetMonGender(mon); + sPSSData->cursorMonItem = GetMonData(mon, MON_DATA_HELD_ITEM); + } + } + else if (mode == MODE_BOX) + { + struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon; + + sPSSData->cursorMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2); + if (sPSSData->cursorMonSpecies != SPECIES_NONE) + { + u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); + sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG); + if (sanityIsBagEgg) + sPSSData->cursorMonIsEgg = TRUE; + else + sPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG); + + + GetBoxMonData(boxMon, MON_DATA_NICKNAME, sPSSData->cursorMonNick); + StringGetEnd10(sPSSData->cursorMonNick); + sPSSData->cursorMonLevel = GetLevelFromBoxMonExp(boxMon); + sPSSData->cursorMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); + sPSSData->cursorMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); + sPSSData->cursorMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, otId, sPSSData->cursorMonPersonality); + gender = GetGenderFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality); + sPSSData->cursorMonItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM); + } + } + else + { + sPSSData->cursorMonSpecies = SPECIES_NONE; + sPSSData->cursorMonItem = 0; + } + + if (sPSSData->cursorMonSpecies == SPECIES_NONE) + { + StringFill(sPSSData->cursorMonNick, CHAR_SPACE, 5); + StringFill(sPSSData->cursorMonTexts[0], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[1], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[2], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[3], CHAR_SPACE, 8); + } + else if (sPSSData->cursorMonIsEgg) + { + if (sanityIsBagEgg) + StringCopyPadded(sPSSData->cursorMonTexts[0], sPSSData->cursorMonNick, CHAR_SPACE, 5); + else + StringCopyPadded(sPSSData->cursorMonTexts[0], gText_EggNickname, CHAR_SPACE, 8); + + StringFill(sPSSData->cursorMonTexts[1], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[2], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[3], CHAR_SPACE, 8); + } + else + { + if (sPSSData->cursorMonSpecies == SPECIES_NIDORAN_F || sPSSData->cursorMonSpecies == SPECIES_NIDORAN_M) + gender = MON_GENDERLESS; + + StringCopyPadded(sPSSData->cursorMonTexts[0], sPSSData->cursorMonNick, CHAR_SPACE, 5); + + txtPtr = sPSSData->cursorMonTexts[1]; + *(txtPtr)++ = CHAR_SLASH; + StringCopyPadded(txtPtr, gSpeciesNames[sPSSData->cursorMonSpecies], CHAR_SPACE, 5); + + txtPtr = sPSSData->cursorMonTexts[2]; + *(txtPtr)++ = EXT_CTRL_CODE_BEGIN; + *(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; + switch (gender) + { + case MON_MALE: + *(txtPtr)++ = TEXT_COLOR_RED; + *(txtPtr)++ = TEXT_COLOR_WHITE; + *(txtPtr)++ = TEXT_COLOR_LIGHT_RED; + *(txtPtr)++ = CHAR_MALE; + break; + case MON_FEMALE: + *(txtPtr)++ = TEXT_COLOR_GREEN; + *(txtPtr)++ = TEXT_COLOR_WHITE; + *(txtPtr)++ = TEXT_COLOR_LIGHT_GREEN; + *(txtPtr)++ = CHAR_FEMALE; + break; + default: + *(txtPtr)++ = TEXT_COLOR_DARK_GREY; + *(txtPtr)++ = TEXT_COLOR_WHITE; + *(txtPtr)++ = TEXT_COLOR_LIGHT_GREY; + *(txtPtr)++ = CHAR_SPACE; + break; + } + + *(txtPtr++) = EXT_CTRL_CODE_BEGIN; + *(txtPtr++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; + *(txtPtr++) = TEXT_COLOR_DARK_GREY; + *(txtPtr++) = TEXT_COLOR_WHITE; + *(txtPtr++) = TEXT_COLOR_LIGHT_GREY; + *(txtPtr++) = CHAR_SPACE; + *(txtPtr++) = CHAR_EXTRA_EMOJI; + *(txtPtr++) = 5; // LV_2 + + txtPtr = ConvertIntToDecimalStringN(txtPtr, sPSSData->cursorMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = EOS; + + if (sPSSData->cursorMonItem != 0) + StringCopyPadded(sPSSData->cursorMonTexts[3], ItemId_GetName(sPSSData->cursorMonItem), CHAR_SPACE, 8); + else + StringFill(sPSSData->cursorMonTexts[3], CHAR_SPACE, 8); + } +} + +u8 HandleInput_InBox(void) +{ + switch (sPSSData->inBoxMovingMode) + { + case 0: + default: + return InBoxInput_Normal(); + case 1: + return InBoxInput_GrabbingMultiple(); + case 2: + return InBoxInput_MovingMultiple(); + } +} + +#ifdef NONMATCHING +u8 InBoxInput_Normal(void) +{ + u8 retVal; + s8 cursorArea = sBoxCursorArea; + s8 cursorPosition = sBoxCursorPosition; + + sPSSData->field_CD2 = 0; + sPSSData->field_CD3 = 0; + sPSSData->field_CD7 = 0; + + do + { + if (JOY_REPT(DPAD_UP)) + { + retVal = TRUE; + if (sBoxCursorPosition >= IN_BOX_ROWS) + { + cursorPosition -= IN_BOX_ROWS; + } + else + { + cursorArea = CURSOR_AREA_BOX; + cursorPosition = 0; + } + break; + } + else if (JOY_REPT(DPAD_DOWN)) + { + retVal = TRUE; + cursorPosition += IN_BOX_ROWS; + if (cursorPosition >= IN_BOX_COUNT) + { + cursorArea = CURSOR_AREA_BUTTONS; + cursorPosition -= IN_BOX_COUNT; + cursorPosition /= 3; + sPSSData->field_CD2 = 1; + sPSSData->field_CD7 = 1; + } + break; + } + else if (JOY_REPT(DPAD_LEFT)) + { + retVal = TRUE; + if (sBoxCursorPosition % IN_BOX_ROWS != 0) + { + cursorPosition--; + } + else + { + sPSSData->field_CD3 = -1; + cursorPosition += (IN_BOX_ROWS - 1); + } + break; + } + else if (JOY_REPT(DPAD_RIGHT)) + { + retVal = TRUE; + if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0) + { + cursorPosition++; + } + else + { + sPSSData->field_CD3 = 1; + cursorPosition -= (IN_BOX_ROWS - 1); + } + break; + } + else if (JOY_NEW(START_BUTTON)) + { + retVal = TRUE; + cursorArea = CURSOR_AREA_BOX; + cursorPosition = 0; + break; + } + + if ((JOY_NEW(A_BUTTON)) && sub_8094924()) + { + if (!sCanOnlyMove) + return 8; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE) + { + switch (sub_8094E50(0)) + { + case 1: + return 11; + case 2: + return 12; + case 3: + return 13; + case 4: + return 14; + case 5: + return 15; + case 12: + return 16; + case 13: + return 17; + case 15: + return 18; + } + } + else + { + sPSSData->inBoxMovingMode = 1; + return 20; + } + } + + if (JOY_NEW(B_BUTTON)) + return 19; + + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + { + if (JOY_HELD(L_BUTTON)) + return 10; + if (JOY_HELD(R_BUTTON)) + return 9; + } + + if (JOY_NEW(SELECT_BUTTON)) + { + sub_8094C84(); + return 0; + } + + retVal = 0; + + } while (0); + + if (retVal) + sub_80927E8(cursorArea, cursorPosition); + + return retVal; +} +#else +NAKED +u8 InBoxInput_Normal(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tldr r0, _08094058 @ =sBoxCursorArea\n" + "\tldrb r0, [r0]\n" + "\tmov r8, r0\n" + "\tldr r2, _0809405C @ =sBoxCursorPosition\n" + "\tldrb r4, [r2]\n" + "\tldr r5, _08094060 @ =sPSSData\n" + "\tldr r0, [r5]\n" + "\tldr r1, _08094064 @ =0x00000cce\n" + "\tmov r10, r1\n" + "\tadd r0, r10\n" + "\tmovs r1, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r5]\n" + "\tldr r7, _08094068 @ =0x00000ccf\n" + "\tadds r0, r7\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r5]\n" + "\tldr r3, _0809406C @ =0x00000cd3\n" + "\tmov r9, r3\n" + "\tadd r0, r9\n" + "\tstrb r1, [r0]\n" + "\tldr r6, _08094070 @ =gMain\n" + "\tldrh r1, [r6, 0x30]\n" + "\tmovs r0, 0x40\n" + "\tands r0, r1\n" + "\tadds r3, r2, 0\n" + "\tcmp r0, 0\n" + "\tbeq _08094018\n" + "\tb _08094208\n" + "_08094018:\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08094074\n" + "\tmovs r6, 0x1\n" + "\tlsls r0, r4, 24\n" + "\tmovs r1, 0xC0\n" + "\tlsls r1, 19\n" + "\tadds r0, r1\n" + "\tlsrs r4, r0, 24\n" + "\tasrs r0, 24\n" + "\tcmp r0, 0x1D\n" + "\tbgt _08094034\n" + "\tb _08094224\n" + "_08094034:\n" + "\tmovs r2, 0x3\n" + "\tmov r8, r2\n" + "\tsubs r0, 0x1E\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tmovs r1, 0x3\n" + "\tbl __divsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r0, [r5]\n" + "\tadd r0, r10\n" + "\tstrb r6, [r0]\n" + "\tldr r0, [r5]\n" + "\tadd r0, r9\n" + "\tstrb r6, [r0]\n" + "\tb _08094224\n" + "\t.align 2, 0\n" + "_08094058: .4byte sBoxCursorArea\n" + "_0809405C: .4byte sBoxCursorPosition\n" + "_08094060: .4byte sPSSData\n" + "_08094064: .4byte 0x00000cce\n" + "_08094068: .4byte 0x00000ccf\n" + "_0809406C: .4byte 0x00000cd3\n" + "_08094070: .4byte gMain\n" + "_08094074:\n" + "\tmovs r0, 0x20\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080940AA\n" + "\tmovs r6, 0x1\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r3, r0]\n" + "\tmovs r1, 0x6\n" + "\tbl __modsi3\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08094096\n" + "\tlsls r0, r4, 24\n" + "\tmovs r3, 0xFF\n" + "\tlsls r3, 24\n" + "\tb _08094218\n" + "_08094096:\n" + "\tldr r0, [r5]\n" + "\tadds r0, r7\n" + "\tmovs r1, 0xFF\n" + "\tstrb r1, [r0]\n" + "\tlsls r0, r4, 24\n" + "\tmovs r1, 0xA0\n" + "\tlsls r1, 19\n" + "\tadds r0, r1\n" + "\tlsrs r4, r0, 24\n" + "\tb _08094224\n" + "_080940AA:\n" + "\tmovs r0, 0x10\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080940DE\n" + "\tmovs r6, 0x1\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r3, r0]\n" + "\tadds r0, 0x1\n" + "\tmovs r1, 0x6\n" + "\tbl __modsi3\n" + "\tcmp r0, 0\n" + "\tbeq _080940D0\n" + "\tlsls r0, r4, 24\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 17\n" + "\tadds r0, r2\n" + "\tlsrs r4, r0, 24\n" + "\tb _08094224\n" + "_080940D0:\n" + "\tldr r0, [r5]\n" + "\tadds r0, r7\n" + "\tstrb r6, [r0]\n" + "\tlsls r0, r4, 24\n" + "\tmovs r3, 0xFB\n" + "\tlsls r3, 24\n" + "\tb _08094218\n" + "_080940DE:\n" + "\tldrh r1, [r6, 0x2E]\n" + "\tmovs r0, 0x8\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080940EC\n" + "\tmovs r6, 0x1\n" + "\tb _0809421E\n" + "_080940EC:\n" + "\tmovs r4, 0x1\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080941B0\n" + "\tbl sub_8094924\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _080941B0\n" + "\tldr r0, _0809410C @ =sCanOnlyMove\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08094110\n" + "\tmovs r0, 0x8\n" + "\tb _08094232\n" + "\t.align 2, 0\n" + "_0809410C: .4byte sCanOnlyMove\n" + "_08094110:\n" + "\tldr r1, [r5]\n" + "\tldrb r0, [r1, 0x1]\n" + "\tcmp r0, 0x2\n" + "\tbne _08094120\n" + "\tldr r0, _0809413C @ =sIsMonBeingMoved\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x1\n" + "\tbne _080941A0\n" + "_08094120:\n" + "\tmovs r0, 0\n" + "\tbl sub_8094E50\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tcmp r0, 0xE\n" + "\tbhi _080941B0\n" + "\tlsls r0, 2\n" + "\tldr r1, _08094140 @ =_08094144\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_0809413C: .4byte sIsMonBeingMoved\n" + "_08094140: .4byte _08094144\n" + "\t.align 2, 0\n" + "_08094144:\n" + "\t.4byte _08094180\n" + "\t.4byte _08094184\n" + "\t.4byte _08094188\n" + "\t.4byte _0809418C\n" + "\t.4byte _08094190\n" + "\t.4byte _080941B0\n" + "\t.4byte _080941B0\n" + "\t.4byte _080941B0\n" + "\t.4byte _080941B0\n" + "\t.4byte _080941B0\n" + "\t.4byte _080941B0\n" + "\t.4byte _08094194\n" + "\t.4byte _08094198\n" + "\t.4byte _080941B0\n" + "\t.4byte _0809419C\n" + "_08094180:\n" + "\tmovs r0, 0xB\n" + "\tb _08094232\n" + "_08094184:\n" + "\tmovs r0, 0xC\n" + "\tb _08094232\n" + "_08094188:\n" + "\tmovs r0, 0xD\n" + "\tb _08094232\n" + "_0809418C:\n" + "\tmovs r0, 0xE\n" + "\tb _08094232\n" + "_08094190:\n" + "\tmovs r0, 0xF\n" + "\tb _08094232\n" + "_08094194:\n" + "\tmovs r0, 0x10\n" + "\tb _08094232\n" + "_08094198:\n" + "\tmovs r0, 0x11\n" + "\tb _08094232\n" + "_0809419C:\n" + "\tmovs r0, 0x12\n" + "\tb _08094232\n" + "_080941A0:\n" + "\tldr r2, _080941AC @ =0x000021ef\n" + "\tadds r0, r1, r2\n" + "\tstrb r4, [r0]\n" + "\tmovs r0, 0x14\n" + "\tb _08094232\n" + "\t.align 2, 0\n" + "_080941AC: .4byte 0x000021ef\n" + "_080941B0:\n" + "\tldr r2, _080941C0 @ =gMain\n" + "\tldrh r1, [r2, 0x2E]\n" + "\tmovs r0, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080941C4\n" + "\tmovs r0, 0x13\n" + "\tb _08094232\n" + "\t.align 2, 0\n" + "_080941C0: .4byte gMain\n" + "_080941C4:\n" + "\tldr r0, _080941E0 @ =gSaveBlock2Ptr\n" + "\tldr r0, [r0]\n" + "\tldrb r0, [r0, 0x13]\n" + "\tcmp r0, 0x1\n" + "\tbne _080941F2\n" + "\tldrh r1, [r2, 0x2C]\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080941E4\n" + "\tmovs r0, 0xA\n" + "\tb _08094232\n" + "\t.align 2, 0\n" + "_080941E0: .4byte gSaveBlock2Ptr\n" + "_080941E4:\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080941F2\n" + "\tmovs r0, 0x9\n" + "\tb _08094232\n" + "_080941F2:\n" + "\tldrh r1, [r2, 0x2E]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _08094204\n" + "\tbl sub_8094C84\n" + "\tmovs r0, 0\n" + "\tb _08094232\n" + "_08094204:\n" + "\tmovs r6, 0\n" + "\tb _08094230\n" + "_08094208:\n" + "\tmovs r6, 0x1\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r2, r0]\n" + "\tcmp r0, 0x5\n" + "\tble _0809421E\n" + "\tlsls r0, r4, 24\n" + "\tmovs r3, 0xFA\n" + "\tlsls r3, 24\n" + "_08094218:\n" + "\tadds r0, r3\n" + "\tlsrs r4, r0, 24\n" + "\tb _08094224\n" + "_0809421E:\n" + "\tmovs r0, 0x2\n" + "\tmov r8, r0\n" + "\tmovs r4, 0\n" + "_08094224:\n" + "\tcmp r6, 0\n" + "\tbeq _08094230\n" + "\tmov r0, r8\n" + "\tadds r1, r4, 0\n" + "\tbl sub_80927E8\n" + "_08094230:\n" + "\tadds r0, r6, 0\n" + "_08094232:\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif |