summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-14 21:19:56 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-14 21:19:56 -0400
commit09b90247ee4f18c5746bbc54e6a5a75dfd9a1ed3 (patch)
tree96b13e1ba294936e38f36676e20d84f93c2f23b5
parent5471590f77ab4d8b9684c6ea4b3d9e870a83633b (diff)
through nonmatching InBoxInput_Normal
-rw-r--r--asm/pokemon_storage_system.s1508
-rw-r--r--data/pokemon_storage_system.s2
-rw-r--r--include/pokemon_storage_system.h2
-rw-r--r--include/pokemon_storage_system_internal.h2
-rw-r--r--include/text.h1
-rw-r--r--src/pokemon_storage_system_5.c788
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