summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-11-14 22:00:53 -0800
committerMarcus Huderle <huderlem@gmail.com>2017-11-26 12:57:30 -0800
commit34a49a726c6c42803950fc993394be8b96492c71 (patch)
treeb9260b7eebd85103c01d943df40aaf28a6feee1c
parente5a0da4d11fcf6bb1a4ca0ed27da7aaa234c28ac (diff)
More pokemon_summary_screen decompilation
-rw-r--r--asm/pokemon_summary_screen.s2510
-rw-r--r--data/graphics.s3
-rw-r--r--graphics/unknown/unknown_E94550.binbin128 -> 64 bytes
-rw-r--r--graphics/unknown/unknown_E94590.binbin0 -> 64 bytes
-rw-r--r--include/pokemon.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokemon/mon_markings.c16
-rw-r--r--src/pokemon/pokemon_summary_screen.c1964
-rw-r--r--src/strings.c2
9 files changed, 1989 insertions, 2509 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 704703c78..01bae4b3a 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -515,7 +515,7 @@ _0809DC7C:
bl sub_80A12D0
_0809DC82:
ldr r0, _0809DC8C @ =gSharedMem + 0x18010
- bl sub_80A0EA4
+ bl DrawPokerusSurvivorDot
b _0809DDE8
.align 2, 0
_0809DC8C: .4byte gSharedMem + 0x18010
@@ -568,7 +568,7 @@ _0809DCF0: .4byte gMain
_0809DCF4: .4byte 0x0000043c
_0809DCF8:
bl sub_809E044
- bl sub_80A0EE8
+ bl DrawSummaryScreenNavigationDots
b _0809DDE8
_0809DD02:
ldr r1, _0809DD20 @ =gSharedMem + 0x18000
@@ -661,7 +661,7 @@ _0809DDBC:
movs r1, 0
bl sub_80A1654
_0809DDCC:
- bl sub_80A0DD0
+ bl PrintSummaryWindowHeaderText
ldr r1, _0809DDD8 @ =gMain
ldr r2, _0809DDDC @ =0x0000043c
adds r1, r2
@@ -2227,7 +2227,7 @@ SummaryScreenHandleAButton: @ 809EA50
adds r1, 0x7F
movs r0, 0x5
strb r0, [r1]
- bl sub_80A0DD0
+ bl PrintSummaryWindowHeaderText
_0809EA8C:
movs r0, 0
bl sub_80A16CC
@@ -2292,7 +2292,7 @@ _0809EAEE:
adds r1, 0x7F
movs r0, 0x6
strb r0, [r1]
- bl sub_80A0DD0
+ bl PrintSummaryWindowHeaderText
ldr r1, _0809EB38 @ =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -2382,7 +2382,7 @@ sub_809EBC4: @ 809EBC4
ldrb r0, [r4, 0xB]
cmp r0, 0
beq _0809EC22
- bl sub_80A0EE8
+ bl DrawSummaryScreenNavigationDots
ldr r0, _0809EC2C @ =gUnknown_030042C0
movs r2, 0x80
lsls r2, 1
@@ -2675,8 +2675,8 @@ _0809EE0E:
strb r0, [r1]
b _0809EE3A
_0809EE12:
- bl sub_80A0EE8
- bl sub_80A0DD0
+ bl DrawSummaryScreenNavigationDots
+ bl PrintSummaryWindowHeaderText
b _0809EE3A
_0809EE1C:
ldr r0, _0809EE44 @ =gUnknown_083C1598
@@ -2973,8 +2973,8 @@ _0809F06A:
strb r0, [r1]
b _0809F096
_0809F06E:
- bl sub_80A0EE8
- bl sub_80A0DD0
+ bl DrawSummaryScreenNavigationDots
+ bl PrintSummaryWindowHeaderText
b _0809F096
_0809F078:
ldr r0, _0809F0A0 @ =gUnknown_083C1598
@@ -3581,7 +3581,7 @@ _0809F4F4:
bl sub_80A12D0
_0809F50E:
adds r0, r4, 0
- bl sub_80A0EA4
+ bl DrawPokerusSurvivorDot
b _0809F5B2
.align 2, 0
_0809F518: .4byte gSharedMem + 0x18010
@@ -5739,2492 +5739,4 @@ _080A065C: .4byte 0x0000044c
_080A0660: .4byte 0x0000103d
thumb_func_end sub_80A057C
- .section .text_80A0958
-
- thumb_func_start sub_80A0DD0
-sub_80A0DD0: @ 80A0DD0
- push {r4,r5,lr}
- ldr r2, _080A0E3C @ =gStringVar1
- movs r5, 0xFC
- strb r5, [r2]
- movs r0, 0x12
- strb r0, [r2, 0x1]
- movs r0, 0x2
- strb r0, [r2, 0x2]
- adds r2, 0x3
- adds r0, r2, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r2, r0, 0
- ldr r1, _080A0E40 @ =gUnknown_083C1068
- ldr r4, _080A0E44 @ =gSharedMem + 0x18000
- adds r0, r4, 0
- adds r0, 0x7E
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- strb r5, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x58
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- strb r0, [r2, 0x3]
- ldr r0, _080A0E3C @ =gStringVar1
- movs r1, 0
- movs r2, 0
- bl MenuPrint
- adds r4, 0x7F
- ldrb r0, [r4]
- cmp r0, 0
- beq _080A0E48
- movs r0, 0x5
- movs r1, 0x17
- movs r2, 0
- bl GetStringCenterAlignXOffset
- movs r0, 0x6
- movs r1, 0x18
- movs r2, 0
- bl GetStringCenterAlignXOffset
- b _080A0E54
- .align 2, 0
-_080A0E3C: .4byte gStringVar1
-_080A0E40: .4byte gUnknown_083C1068
-_080A0E44: .4byte gSharedMem + 0x18000
-_080A0E48:
- movs r0, 0x17
- movs r1, 0
- movs r2, 0x18
- movs r3, 0x1
- bl MenuZeroFillWindowRect
-_080A0E54:
- ldr r2, _080A0E98 @ =gStringVar1
- adds r0, r2, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r2, r0, 0
- ldr r1, _080A0E9C @ =gUnknown_083C1068
- ldr r0, _080A0EA0 @ =gSharedMem + 0x18000
- adds r0, 0x7F
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x28
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- strb r0, [r2, 0x3]
- ldr r0, _080A0E98 @ =gStringVar1
- movs r1, 0x19
- movs r2, 0
- bl MenuPrint
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0E98: .4byte gStringVar1
-_080A0E9C: .4byte gUnknown_083C1068
-_080A0EA0: .4byte gSharedMem + 0x18000
- thumb_func_end sub_80A0DD0
-
- thumb_func_start sub_80A0EA4
-sub_80A0EA4: @ 80A0EA4
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _080A0ECC @ =0x0600e444
- ldr r6, _080A0ED0 @ =0x0600ec44
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _080A0ED4
- adds r0, r4, 0
- movs r1, 0
- bl CheckPartyHasHadPokerus
- lsls r0, 24
- cmp r0, 0
- beq _080A0ED4
- movs r0, 0x2C
- b _080A0ED8
- .align 2, 0
-_080A0ECC: .4byte 0x0600e444
-_080A0ED0: .4byte 0x0600ec44
-_080A0ED4:
- ldr r1, _080A0EE4 @ =0x0000081a
- adds r0, r1, 0
-_080A0ED8:
- strh r0, [r5]
- strh r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0EE4: .4byte 0x0000081a
- thumb_func_end sub_80A0EA4
-
- thumb_func_start sub_80A0EE8
-sub_80A0EE8: @ 80A0EE8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- movs r3, 0
- ldr r6, _080A0F24 @ =gSharedMem + 0x18000
- adds r5, r6, 0
- ldr r1, _080A0F28 @ =0x00004040
- mov r8, r1
- ldr r2, _080A0F2C @ =0x0000404a
- mov r10, r2
-_080A0F02:
- adds r0, r5, 0
- adds r0, 0x75
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080A0F30
- lsls r1, r3, 1
- lsls r0, r3, 2
- add r0, sp
- mov r4, r8
- strh r4, [r0]
- adds r1, 0x1
- lsls r1, 1
- mov r7, sp
- adds r0, r7, r1
- strh r4, [r0]
- b _080A0FE2
- .align 2, 0
-_080A0F24: .4byte gSharedMem + 0x18000
-_080A0F28: .4byte 0x00004040
-_080A0F2C: .4byte 0x0000404a
-_080A0F30:
- movs r0, 0x76
- adds r0, r6
- mov r12, r0
- ldrb r1, [r0]
- cmp r3, r1
- bls _080A0F52
- lsls r1, r3, 1
- lsls r0, r3, 2
- add r0, sp
- mov r2, r10
- strh r2, [r0]
- adds r1, 0x1
- lsls r1, 1
- mov r4, sp
- adds r0, r4, r1
- strh r2, [r0]
- b _080A0FE2
-_080A0F52:
- ldrb r4, [r5, 0xB]
- cmp r3, r4
- bcs _080A0F6E
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r7, sp
- adds r2, r7, r0
- ldr r0, _080A0F88 @ =0x00004046
- strh r0, [r2]
- adds r1, 0x1
- lsls r1, 1
- add r1, sp
- adds r0, 0x1
- strh r0, [r1]
-_080A0F6E:
- cmp r3, r4
- bne _080A0FA6
- mov r0, r12
- ldrb r0, [r0]
- cmp r3, r0
- beq _080A0F90
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r4, sp
- adds r2, r4, r0
- ldr r0, _080A0F8C @ =0x00004041
- b _080A0F9A
- .align 2, 0
-_080A0F88: .4byte 0x00004046
-_080A0F8C: .4byte 0x00004041
-_080A0F90:
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r7, sp
- adds r2, r7, r0
- ldr r0, _080A0FC4 @ =0x0000404b
-_080A0F9A:
- strh r0, [r2]
- adds r1, 0x1
- lsls r1, 1
- add r1, sp
- adds r0, 0x1
- strh r0, [r1]
-_080A0FA6:
- ldrb r0, [r5, 0xB]
- cmp r3, r0
- bls _080A0FE2
- adds r0, r6, 0
- adds r0, 0x76
- ldrb r0, [r0]
- cmp r3, r0
- beq _080A0FCC
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r4, sp
- adds r2, r4, r0
- ldr r0, _080A0FC8 @ =0x00004043
- b _080A0FD6
- .align 2, 0
-_080A0FC4: .4byte 0x0000404b
-_080A0FC8: .4byte 0x00004043
-_080A0FCC:
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r7, sp
- adds r2, r7, r0
- ldr r0, _080A1034 @ =0x00004048
-_080A0FD6:
- strh r0, [r2]
- adds r1, 0x1
- lsls r1, 1
- add r1, sp
- adds r0, 0x1
- strh r0, [r1]
-_080A0FE2:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080A0F02
- ldr r1, _080A1038 @ =0x0600e016
- ldr r0, _080A103C @ =0x040000d4
- mov r2, sp
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080A1040 @ =0x80000008
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r3, 0
-_080A0FFE:
- lsls r0, r3, 1
- mov r4, sp
- adds r1, r4, r0
- ldrh r0, [r1]
- adds r0, 0x10
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x7
- bls _080A0FFE
- ldr r1, _080A1044 @ =0x0600e056
- ldr r0, _080A103C @ =0x040000d4
- str r4, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080A1040 @ =0x80000008
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1034: .4byte 0x00004048
-_080A1038: .4byte 0x0600e016
-_080A103C: .4byte 0x040000d4
-_080A1040: .4byte 0x80000008
-_080A1044: .4byte 0x0600e056
- thumb_func_end sub_80A0EE8
-
- thumb_func_start sub_80A1048
-sub_80A1048: @ 80A1048
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _080A10A0 @ =gTasks + 0x8
- adds r6, r0, r1
- ldrh r0, [r6]
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r6, 0x2]
- lsls r0, 16
- cmp r0, 0
- bne _080A106E
- b _080A1224
-_080A106E:
- movs r5, 0x2
- ldrsh r2, [r6, r5]
- ldr r0, _080A10A4 @ =0x0000024a
- subs r0, r2
- lsls r0, 1
- ldr r1, _080A10A8 @ =gUnknown_08E73508
- adds r4, r0, r1
- ldr r5, _080A10AC @ =0x0600e480
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 5
- adds r7, r1, 0
- cmp r2, r0
- bhi _080A10B4
- ldr r0, _080A10B0 @ =0x040000d4
- str r4, [r0]
- str r5, [r0, 0x4]
- lsrs r1, r2, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A10E0
- .align 2, 0
-_080A10A0: .4byte gTasks + 0x8
-_080A10A4: .4byte 0x0000024a
-_080A10A8: .4byte gUnknown_08E73508
-_080A10AC: .4byte 0x0600e480
-_080A10B0: .4byte 0x040000d4
-_080A10B4:
- ldr r3, _080A110C @ =0x040000d4
- str r4, [r3]
- str r5, [r3, 0x4]
- ldr r0, _080A1110 @ =0x80000800
- str r0, [r3, 0x8]
- ldr r0, [r3, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r4, r0
- adds r5, r0
- ldr r1, _080A1114 @ =0xfffff000
- adds r2, r1
- cmp r2, r0
- bhi _080A10B4
- str r4, [r3]
- str r5, [r3, 0x4]
- lsrs r0, r2, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r3, 0x8]
- ldr r0, [r3, 0x8]
-_080A10E0:
- movs r5, 0x2
- ldrsh r0, [r6, r5]
- ldr r1, _080A1118 @ =0x0000026a
- subs r1, r0
- lsls r1, 1
- adds r3, r1, r7
- ldr r4, _080A111C @ =0x0600e4c0
- lsls r1, r0, 1
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bhi _080A1120
- ldr r0, _080A110C @ =0x040000d4
- str r3, [r0]
- str r4, [r0, 0x4]
- lsrs r1, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A114C
- .align 2, 0
-_080A110C: .4byte 0x040000d4
-_080A1110: .4byte 0x80000800
-_080A1114: .4byte 0xfffff000
-_080A1118: .4byte 0x0000026a
-_080A111C: .4byte 0x0600e4c0
-_080A1120:
- ldr r2, _080A1178 @ =0x040000d4
- str r3, [r2]
- str r4, [r2, 0x4]
- ldr r0, _080A117C @ =0x80000800
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r3, r0
- adds r4, r0
- ldr r5, _080A1180 @ =0xfffff000
- adds r1, r5
- cmp r1, r0
- bhi _080A1120
- str r3, [r2]
- str r4, [r2, 0x4]
- lsrs r0, r1, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
-_080A114C:
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- ldr r1, _080A1184 @ =0x0000024a
- subs r1, r0
- lsls r1, 1
- adds r3, r1, r7
- ldr r4, _080A1188 @ =0x0600ec80
- lsls r1, r0, 1
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bhi _080A118C
- ldr r0, _080A1178 @ =0x040000d4
- str r3, [r0]
- str r4, [r0, 0x4]
- lsrs r1, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A11B8
- .align 2, 0
-_080A1178: .4byte 0x040000d4
-_080A117C: .4byte 0x80000800
-_080A1180: .4byte 0xfffff000
-_080A1184: .4byte 0x0000024a
-_080A1188: .4byte 0x0600ec80
-_080A118C:
- ldr r2, _080A11E4 @ =0x040000d4
- str r3, [r2]
- str r4, [r2, 0x4]
- ldr r0, _080A11E8 @ =0x80000800
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r3, r0
- adds r4, r0
- ldr r5, _080A11EC @ =0xfffff000
- adds r1, r5
- cmp r1, r0
- bhi _080A118C
- str r3, [r2]
- str r4, [r2, 0x4]
- lsrs r0, r1, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
-_080A11B8:
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- ldr r1, _080A11F0 @ =0x0000026a
- subs r1, r0
- lsls r1, 1
- adds r3, r1, r7
- ldr r4, _080A11F4 @ =0x0600ecc0
- lsls r1, r0, 1
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bhi _080A11F8
- ldr r0, _080A11E4 @ =0x040000d4
- str r3, [r0]
- str r4, [r0, 0x4]
- lsrs r1, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A1224
- .align 2, 0
-_080A11E4: .4byte 0x040000d4
-_080A11E8: .4byte 0x80000800
-_080A11EC: .4byte 0xfffff000
-_080A11F0: .4byte 0x0000026a
-_080A11F4: .4byte 0x0600ecc0
-_080A11F8:
- ldr r2, _080A12B0 @ =0x040000d4
- str r3, [r2]
- str r4, [r2, 0x4]
- ldr r0, _080A12B4 @ =0x80000800
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r3, r0
- adds r4, r0
- ldr r5, _080A12B8 @ =0xfffff000
- adds r1, r5
- cmp r1, r0
- bhi _080A11F8
- str r3, [r2]
- str r4, [r2, 0x4]
- lsrs r0, r1, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
-_080A1224:
- ldrb r4, [r6, 0x2]
- ldrh r7, [r6, 0x2]
- ldrh r0, [r6]
- mov r12, r0
- cmp r4, 0x9
- bhi _080A1272
- adds r3, r6, 0x4
- ldr r2, _080A12B0 @ =0x040000d4
- ldr r5, _080A12BC @ =0x80000001
-_080A1236:
- lsls r1, r4, 1
- ldr r6, _080A12C0 @ =0x0600e480
- adds r0, r1, r6
- str r3, [r2]
- str r0, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- adds r6, 0x40
- adds r0, r1, r6
- str r3, [r2]
- str r0, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r6, _080A12C4 @ =0x0600ec80
- adds r0, r1, r6
- str r3, [r2]
- str r0, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, _080A12C8 @ =0x0600ecc0
- adds r1, r0
- str r3, [r2]
- str r1, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080A1236
-_080A1272:
- mov r1, r12
- lsls r0, r1, 16
- cmp r0, 0
- beq _080A1286
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, 0
- ble _080A1286
- cmp r0, 0x9
- ble _080A12A4
-_080A1286:
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _080A129A
- ldr r0, _080A12CC @ =gOtherText_Status
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80A1FF8
-_080A129A:
- bl sub_80A1D18
- mov r0, r8
- bl DestroyTask
-_080A12A4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A12B0: .4byte 0x040000d4
-_080A12B4: .4byte 0x80000800
-_080A12B8: .4byte 0xfffff000
-_080A12BC: .4byte 0x80000001
-_080A12C0: .4byte 0x0600e480
-_080A12C4: .4byte 0x0600ec80
-_080A12C8: .4byte 0x0600ecc0
-_080A12CC: .4byte gOtherText_Status
- thumb_func_end sub_80A1048
-
- thumb_func_start sub_80A12D0
-sub_80A12D0: @ 80A12D0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0x12
- movs r2, 0x5
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0x1D
- bl sub_80A18E4
- ldr r0, _080A1310 @ =sub_80A1048
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080A1314 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0x8]
- cmp r4, 0
- bge _080A1318
- movs r0, 0xA
- b _080A131A
- .align 2, 0
-_080A1310: .4byte sub_80A1048
-_080A1314: .4byte gTasks
-_080A1318:
- movs r0, 0
-_080A131A:
- strh r0, [r1, 0xA]
- ldr r0, _080A1330 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0xC]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1330: .4byte gTasks
- thumb_func_end sub_80A12D0
-
- thumb_func_start sub_80A1334
-sub_80A1334: @ 80A1334
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _080A13E4 @ =gTasks + 0x8
- adds r7, r0, r1
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- adds r0, r1
- strh r0, [r7, 0x2]
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0
- cmp r1, 0
- blt _080A136A
- movs r0, 0xA
- cmp r1, 0xA
- bgt _080A136A
- ldrh r0, [r7, 0x2]
-_080A136A:
- lsls r0, 16
- asrs r2, r0, 16
- mov r9, r0
- cmp r2, 0
- ble _080A13A6
- movs r0, 0xA
- subs r0, r2
- lsls r0, 1
- ldr r1, _080A13E8 @ =0x06005b40
- adds r4, r0, r1
- movs r5, 0
- adds r6, r2, 0
- ldr r0, _080A13EC @ =0x001fffff
- mov r8, r0
-_080A1386:
- adds r0, r5, 0
- adds r0, 0xD
- lsls r0, 6
- ldr r1, _080A13F0 @ =gUnknown_08E73E88
- adds r0, r1
- adds r1, r4, 0
- mov r2, r8
- ands r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A1386
-_080A13A6:
- mov r1, r9
- asrs r2, r1, 16
- cmp r2, 0x9
- bgt _080A13F4
- ldr r4, _080A13E8 @ =0x06005b40
- movs r5, 0
- mov r8, sp
- movs r0, 0xA
- subs r6, r0, r2
- ldr r0, _080A13EC @ =0x001fffff
- ands r6, r0
- movs r0, 0x80
- lsls r0, 17
- mov r9, r0
-_080A13C2:
- ldrh r0, [r7, 0x4]
- mov r1, r8
- strh r0, [r1]
- mov r0, sp
- adds r1, r4, 0
- mov r2, r9
- orrs r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A13C2
- b _080A1400
- .align 2, 0
-_080A13E4: .4byte gTasks + 0x8
-_080A13E8: .4byte 0x06005b40
-_080A13EC: .4byte 0x001fffff
-_080A13F0: .4byte gUnknown_08E73E88
-_080A13F4:
- movs r0, 0
- movs r1, 0x13
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A1400:
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _080A1410
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bge _080A144A
-_080A1410:
- ldr r4, _080A1480 @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x2
- bne _080A1444
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- adds r4, 0x10
- adds r0, r4, 0
- bl sub_80A0958
- adds r0, r4, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- cmp r0, 0
- beq _080A1444
- ldr r0, _080A1484 @ =gOtherText_Status
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80A1FF8
-_080A1444:
- mov r0, r10
- bl DestroyTask
-_080A144A:
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0x9
- ble _080A1470
- ldr r4, _080A1480 @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x2
- bne _080A1460
- ldrb r0, [r7, 0x6]
- bl sub_80A00F4
-_080A1460:
- adds r0, r4, 0
- adds r0, 0x10
- adds r1, r7, 0x6
- bl sub_80A0428
- mov r0, r10
- bl DestroyTask
-_080A1470:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1480: .4byte gSharedMem + 0x18000
-_080A1484: .4byte gOtherText_Status
- thumb_func_end sub_80A1334
-
- thumb_func_start sub_80A1488
-sub_80A1488: @ 80A1488
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _080A14DC @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A14A6
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A14A6:
- ldr r5, _080A14E0 @ =sub_80A1334
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- bne _080A14C2
- adds r0, r5, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
-_080A14C2:
- ldr r1, _080A14E4 @ =gTasks
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r1
- lsls r0, r6, 24
- asrs r0, 24
- strh r0, [r3, 0x8]
- cmp r0, 0
- bge _080A14E8
- movs r0, 0xA
- b _080A14EA
- .align 2, 0
-_080A14DC: .4byte gSharedMem + 0x18000
-_080A14E0: .4byte sub_80A1334
-_080A14E4: .4byte gTasks
-_080A14E8:
- movs r0, 0
-_080A14EA:
- strh r0, [r3, 0xA]
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- strh r7, [r0, 0xE]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1488
-
- thumb_func_start sub_80A1500
-sub_80A1500: @ 80A1500
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _080A15B0 @ =gTasks + 0x8
- adds r7, r0, r1
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- adds r0, r1
- strh r0, [r7, 0x2]
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0
- cmp r1, 0
- blt _080A1536
- movs r0, 0xA
- cmp r1, 0xA
- bgt _080A1536
- ldrh r0, [r7, 0x2]
-_080A1536:
- lsls r0, 16
- asrs r2, r0, 16
- mov r9, r0
- cmp r2, 0
- ble _080A1572
- movs r0, 0xA
- subs r0, r2
- lsls r0, 1
- ldr r1, _080A15B4 @ =0x06006b40
- adds r4, r0, r1
- movs r5, 0
- adds r6, r2, 0
- ldr r0, _080A15B8 @ =0x001fffff
- mov r8, r0
-_080A1552:
- adds r0, r5, 0
- adds r0, 0xD
- lsls r0, 6
- ldr r1, _080A15BC @ =gUnknown_08E74688
- adds r0, r1
- adds r1, r4, 0
- mov r2, r8
- ands r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A1552
-_080A1572:
- mov r1, r9
- asrs r2, r1, 16
- cmp r2, 0x9
- bgt _080A15C0
- ldr r4, _080A15B4 @ =0x06006b40
- movs r5, 0
- mov r8, sp
- movs r0, 0xA
- subs r6, r0, r2
- ldr r0, _080A15B8 @ =0x001fffff
- ands r6, r0
- movs r0, 0x80
- lsls r0, 17
- mov r9, r0
-_080A158E:
- ldrh r0, [r7, 0x4]
- mov r1, r8
- strh r0, [r1]
- mov r0, sp
- adds r1, r4, 0
- mov r2, r9
- orrs r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A158E
- b _080A15CC
- .align 2, 0
-_080A15B0: .4byte gTasks + 0x8
-_080A15B4: .4byte 0x06006b40
-_080A15B8: .4byte 0x001fffff
-_080A15BC: .4byte gUnknown_08E74688
-_080A15C0:
- movs r0, 0
- movs r1, 0x13
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A15CC:
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _080A15DC
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bge _080A1616
-_080A15DC:
- ldr r4, _080A164C @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x3
- bne _080A1610
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- adds r4, 0x10
- adds r0, r4, 0
- bl sub_80A0958
- adds r0, r4, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- cmp r0, 0
- beq _080A1610
- ldr r0, _080A1650 @ =gOtherText_Status
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80A1FF8
-_080A1610:
- mov r0, r10
- bl DestroyTask
-_080A1616:
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0x9
- ble _080A163C
- ldr r4, _080A164C @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x3
- bne _080A162C
- ldrb r0, [r7, 0x6]
- bl sub_80A00F4
-_080A162C:
- adds r0, r4, 0
- adds r0, 0x10
- adds r1, r7, 0x6
- bl sub_80A0428
- mov r0, r10
- bl DestroyTask
-_080A163C:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A164C: .4byte gSharedMem + 0x18000
-_080A1650: .4byte gOtherText_Status
- thumb_func_end sub_80A1500
-
- thumb_func_start sub_80A1654
-sub_80A1654: @ 80A1654
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _080A16A8 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x3
- bne _080A1672
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A1672:
- ldr r5, _080A16AC @ =sub_80A1500
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- bne _080A168E
- adds r0, r5, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
-_080A168E:
- ldr r1, _080A16B0 @ =gTasks
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r1
- lsls r0, r6, 24
- asrs r0, 24
- strh r0, [r3, 0x8]
- cmp r0, 0
- bge _080A16B4
- movs r0, 0xA
- b _080A16B6
- .align 2, 0
-_080A16A8: .4byte gSharedMem + 0x18000
-_080A16AC: .4byte sub_80A1500
-_080A16B0: .4byte gTasks
-_080A16B4:
- movs r0, 0
-_080A16B6:
- strh r0, [r3, 0xA]
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- strh r7, [r0, 0xE]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1654
-
- thumb_func_start sub_80A16CC
-sub_80A16CC: @ 80A16CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _080A1724 @ =0x06006ad4
- mov r12, r0
- mov r1, r9
- cmp r1, 0
- bne _080A172C
- movs r5, 0
- ldr r7, _080A1728 @ =gUnknown_08E94510
- movs r0, 0x80
- lsls r0, 5
- adds r6, r0, 0
- movs r1, 0x40
- adds r1, r7
- mov r8, r1
-_080A16F4:
- lsls r2, r5, 1
- mov r0, r12
- adds r3, r2, r0
- adds r4, r2, r7
- ldrh r1, [r4]
- adds r0, r6, r1
- strh r0, [r3]
- adds r1, r3, 0
- adds r1, 0x40
- ldrh r4, [r4]
- adds r0, r6, r4
- strh r0, [r1]
- adds r3, 0x80
- add r2, r8
- ldrh r2, [r2]
- adds r0, r6, r2
- strh r0, [r3]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A16F4
- b _080A1768
- .align 2, 0
-_080A1724: .4byte 0x06006ad4
-_080A1728: .4byte gUnknown_08E94510
-_080A172C:
- movs r5, 0
- ldr r6, _080A17B0 @ =gUnknown_08E94550
- movs r7, 0x80
- lsls r7, 5
- adds r4, r7, 0
- movs r0, 0x40
- adds r0, r6
- mov r8, r0
-_080A173C:
- lsls r1, r5, 1
- mov r7, r12
- adds r2, r1, r7
- adds r0, r1, r6
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r2]
- adds r3, r2, 0
- adds r3, 0x40
- add r1, r8
- ldrh r7, [r1]
- adds r0, r4, r7
- strh r0, [r3]
- adds r2, 0x80
- ldrh r1, [r1]
- adds r0, r4, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A173C
-_080A1768:
- ldr r0, _080A17B4 @ =0x06005ad4
- mov r12, r0
- mov r1, r9
- cmp r1, 0
- bne _080A17BC
- movs r5, 0
- ldr r7, _080A17B8 @ =gUnknown_08E94510
- movs r0, 0xC0
- lsls r0, 6
- adds r6, r0, 0
- movs r1, 0x40
- adds r1, r7
- mov r8, r1
-_080A1782:
- lsls r2, r5, 1
- mov r0, r12
- adds r3, r2, r0
- adds r4, r2, r7
- ldrh r1, [r4]
- adds r0, r6, r1
- strh r0, [r3]
- adds r1, r3, 0
- adds r1, 0x40
- ldrh r4, [r4]
- adds r0, r6, r4
- strh r0, [r1]
- adds r3, 0x80
- add r2, r8
- ldrh r2, [r2]
- adds r0, r6, r2
- strh r0, [r3]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A1782
- b _080A17F8
- .align 2, 0
-_080A17B0: .4byte gUnknown_08E94550
-_080A17B4: .4byte 0x06005ad4
-_080A17B8: .4byte gUnknown_08E94510
-_080A17BC:
- movs r5, 0
- ldr r6, _080A1804 @ =gUnknown_08E94550
- movs r7, 0xC0
- lsls r7, 6
- adds r4, r7, 0
- movs r0, 0x40
- adds r0, r6
- mov r8, r0
-_080A17CC:
- lsls r1, r5, 1
- mov r7, r12
- adds r2, r1, r7
- adds r0, r1, r6
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r2]
- adds r3, r2, 0
- adds r3, 0x40
- add r1, r8
- ldrh r7, [r1]
- adds r0, r4, r7
- strh r0, [r3]
- adds r2, 0x80
- ldrh r1, [r1]
- adds r0, r4, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A17CC
-_080A17F8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1804: .4byte gUnknown_08E94550
- thumb_func_end sub_80A16CC
-
- thumb_func_start sub_80A1808
-sub_80A1808: @ 80A1808
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r1, 0x41
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _080A1860 @ =gUnknown_02024E8C
- movs r1, 0x28
- movs r2, 0x40
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, r0, 4
- add r4, r8
- lsls r4, 2
- ldr r5, _080A1864 @ =gSprites
- adds r7, r4, r5
- adds r0, r7, 0
- bl FreeSpriteOamMatrix
- strh r6, [r7, 0x2E]
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _080A1868 @ =sub_80A1888
- str r0, [r4]
- adds r0, r6, 0
- bl IsPokeSpriteNotFlipped
- lsls r0, 24
- cmp r0, 0
- bne _080A186C
- adds r0, r7, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _080A187A
- .align 2, 0
-_080A1860: .4byte gUnknown_02024E8C
-_080A1864: .4byte gSprites
-_080A1868: .4byte sub_80A1888
-_080A186C:
- adds r2, r7, 0
- adds r2, 0x3F
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080A187A:
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80A1808
-
- thumb_func_start sub_80A1888
-sub_80A1888: @ 80A1888
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A18B8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A18B0
- ldr r0, _080A18BC @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- ldr r0, _080A18C0 @ =gSharedMem + 0x18010
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080A18B0
- ldrh r0, [r4, 0x2E]
- movs r1, 0
- bl PlayCry1
-_080A18B0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A18B8: .4byte gPaletteFade
-_080A18BC: .4byte SpriteCallbackDummy
-_080A18C0: .4byte gSharedMem + 0x18010
- thumb_func_end sub_80A1888
-
- thumb_func_start sub_80A18C4
-sub_80A18C4: @ 80A18C4
- push {lr}
- movs r1, 0
- ldr r3, _080A18E0 @ =gSharedMem + 0x1A000
- movs r2, 0xFF
-_080A18CC:
- adds r0, r1, r3
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1D
- bls _080A18CC
- pop {r0}
- bx r0
- .align 2, 0
-_080A18E0: .4byte gSharedMem + 0x1A000
- thumb_func_end sub_80A18C4
-
- thumb_func_start sub_80A18E4
-sub_80A18E4: @ 80A18E4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A1910 @ =gSharedMem + 0x1A000
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080A1908
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A1914 @ =gSprites
- adds r0, r1
- bl DestroySprite
- movs r0, 0xFF
- strb r0, [r4]
-_080A1908:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1910: .4byte gSharedMem + 0x1A000
-_080A1914: .4byte gSprites
- thumb_func_end sub_80A18E4
-
- thumb_func_start sub_80A1918
-sub_80A1918: @ 80A1918
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _080A1948 @ =gSprites
- ldr r2, _080A194C @ =gSharedMem + 0x1A000
- adds r0, r2
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- adds r2, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- bx lr
- .align 2, 0
-_080A1948: .4byte gSprites
-_080A194C: .4byte gSharedMem + 0x1A000
- thumb_func_end sub_80A1918
-
- thumb_func_start sub_80A1950
-sub_80A1950: @ 80A1950
- push {r4,r5,lr}
- movs r5, 0
-_080A1954:
- ldr r0, _080A1984 @ =gSharedMem + 0x1A000
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _080A196C
- ldr r0, _080A1988 @ =gSpriteTemplate_83C11C0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl CreateSprite
- strb r0, [r4]
-_080A196C:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080A1954
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1984: .4byte gSharedMem + 0x1A000
-_080A1988: .4byte gSpriteTemplate_83C11C0
- thumb_func_end sub_80A1950
-
- thumb_func_start sub_80A198C
-sub_80A198C: @ 80A198C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r10, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r1, _080A1A24 @ =gSharedMem + 0x1A000
- mov r8, r1
- add r8, r10
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A1A28 @ =gSprites
- mov r9, r1
- add r0, r9
- adds r1, r4, 0
- bl StartSpriteAnim
- mov r1, r8
- ldrb r0, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- ldr r0, _080A1A2C @ =gUnknown_083C11D8
- adds r4, r0
- ldrb r2, [r4]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r5, 0x10
- strh r5, [r0, 0x20]
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r6, 0x8
- strh r6, [r0, 0x22]
- mov r0, r10
- movs r1, 0
- bl sub_80A1918
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1A24: .4byte gSharedMem + 0x1A000
-_080A1A28: .4byte gSprites
-_080A1A2C: .4byte gUnknown_083C11D8
- thumb_func_end sub_80A198C
-
- thumb_func_start sub_80A1A30
-sub_80A1A30: @ 80A1A30
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- mov r9, r0
- ldr r1, _080A1A98 @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xB]
- cmp r0, 0x1
- bls _080A1B0A
- cmp r4, 0x9
- bne _080A1A52
- movs r3, 0x1
- mov r9, r3
-_080A1A52:
- movs r5, 0
- movs r0, 0x80
- lsls r0, 6
- adds r0, r1
- mov r8, r0
- ldr r6, _080A1A9C @ =gSprites
- mov r10, r5
-_080A1A60:
- lsls r1, r5, 20
- movs r3, 0xB0
- lsls r3, 15
- adds r1, r3
- asrs r1, 16
- ldr r0, _080A1AA0 @ =gSpriteTemplate_83C1280
- movs r2, 0x28
- mov r3, r9
- bl CreateSprite
- adds r1, r4, r5
- mov r3, r8
- adds r2, r1, r3
- strb r0, [r2]
- adds r7, r1, 0
- cmp r5, 0
- bne _080A1AA4
- adds r0, r4, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x4
- bl StartSpriteAnim
- b _080A1AD0
- .align 2, 0
-_080A1A98: .4byte gSharedMem + 0x18000
-_080A1A9C: .4byte gSprites
-_080A1AA0: .4byte gSpriteTemplate_83C1280
-_080A1AA4:
- cmp r5, 0x9
- bne _080A1AC0
- adds r0, r4, 0
- adds r0, 0x9
- add r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- bl StartSpriteAnim
- b _080A1AD0
-_080A1AC0:
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x6
- bl StartSpriteAnim
-_080A1AD0:
- mov r0, r8
- adds r2, r7, r0
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080A1B18 @ =sub_80A1BC0
- str r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r4, [r0, 0x2E]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r10
- strh r1, [r0, 0x30]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _080A1A60
-_080A1B0A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1B18: .4byte sub_80A1BC0
- thumb_func_end sub_80A1A30
-
- thumb_func_start sub_80A1B1C
-sub_80A1B1C: @ 80A1B1C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
-_080A1B24:
- adds r0, r5, r4
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A18E4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080A1B24
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1B1C
-
- thumb_func_start sub_80A1B40
-sub_80A1B40: @ 80A1B40
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, r7, 1
- adds r1, r7
- lsls r1, 24
- ldr r0, _080A1BB4 @ =gSharedMem + 0x1A009
- ldrb r2, [r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r2, _080A1BB8 @ =gSprites
- adds r0, r2
- lsrs r7, r1, 24
- movs r2, 0x80
- lsls r2, 19
- adds r1, r2
- lsrs r1, 24
- bl StartSpriteAnim
- movs r4, 0
- adds r0, r7, 0x6
- lsls r0, 24
- mov r8, r0
-_080A1B74:
- ldr r6, _080A1BBC @ =gSharedMem + 0x1A00A
- adds r0, r4, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _080A1BB8 @ =gSprites
- adds r0, r5
- mov r2, r8
- lsrs r1, r2, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _080A1B74
- ldrb r1, [r6, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r1, r7, 0x5
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1BB4: .4byte gSharedMem + 0x1A009
-_080A1BB8: .4byte gSprites
-_080A1BBC: .4byte gSharedMem + 0x1A00A
- thumb_func_end sub_80A1B40
-
- thumb_func_start sub_80A1BC0
-sub_80A1BC0: @ 80A1BC0
- push {lr}
- adds r2, r0, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _080A1BF8
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- movs r1, 0x1F
- ands r0, r1
- strh r0, [r2, 0x30]
- cmp r0, 0x18
- ble _080A1BEC
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- b _080A1C06
-_080A1BEC:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- b _080A1C04
-_080A1BF8:
- movs r0, 0
- strh r0, [r2, 0x30]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- subs r0, 0x5
-_080A1C04:
- ands r0, r1
-_080A1C06:
- strb r0, [r3]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x9
- bne _080A1C1C
- ldr r0, _080A1C18 @ =gSharedMem + 0x18000
- adds r0, 0x79
- b _080A1C20
- .align 2, 0
-_080A1C18: .4byte gSharedMem + 0x18000
-_080A1C1C:
- ldr r0, _080A1C2C @ =gSharedMem + 0x18000
- adds r0, 0x7A
-_080A1C20:
- ldrb r0, [r0]
- lsls r0, 4
- strh r0, [r2, 0x26]
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C2C: .4byte gSharedMem + 0x18000
- thumb_func_end sub_80A1BC0
-
- thumb_func_start sub_80A1C30
-sub_80A1C30: @ 80A1C30
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 25
- lsrs r3, r0, 24
- adds r4, r3, 0
- adds r0, r3, 0
- adds r0, 0xA
- cmp r3, r0
- bge _080A1C82
- ldr r5, _080A1C88 @ =gSprites
- movs r7, 0x5
- negs r7, r7
- ldr r6, _080A1C8C @ =gSharedMem + 0x1A009
-_080A1C50:
- adds r2, r3, r6
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- strh r1, [r0, 0x30]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r4, 0
- adds r0, 0xA
- cmp r3, r0
- blt _080A1C50
-_080A1C82:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C88: .4byte gSprites
-_080A1C8C: .4byte gSharedMem + 0x1A009
- thumb_func_end sub_80A1C30
-
- thumb_func_start pokemon_ailments_get_primary
-pokemon_ailments_get_primary: @ 80A1C90
- push {lr}
- adds r1, r0, 0
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- beq _080A1CA0
- movs r0, 0x1
- b _080A1CD2
-_080A1CA0:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080A1CAC
- movs r0, 0x2
- b _080A1CD2
-_080A1CAC:
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _080A1CB8
- movs r0, 0x3
- b _080A1CD2
-_080A1CB8:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080A1CC4
- movs r0, 0x4
- b _080A1CD2
-_080A1CC4:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080A1CD0
- movs r0, 0
- b _080A1CD2
-_080A1CD0:
- movs r0, 0x5
-_080A1CD2:
- pop {r1}
- bx r1
- thumb_func_end pokemon_ailments_get_primary
-
- thumb_func_start GetMonStatusAndPokerus
-GetMonStatusAndPokerus: @ 80A1CD8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A1CEA
- movs r0, 0x7
- b _080A1D12
-_080A1CEA:
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080A1D12
- adds r0, r4, 0
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _080A1D10
- movs r0, 0
- b _080A1D12
-_080A1D10:
- movs r0, 0x6
-_080A1D12:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMonStatusAndPokerus
-
- thumb_func_start sub_80A1D18
-sub_80A1D18: @ 80A1D18
- push {r4,r5,lr}
- sub sp, 0x64
- mov r0, sp
- bl sub_809F678
- mov r0, sp
- bl GetMonStatusAndPokerus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080A1D58
- subs r0, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080A1D50 @ =gSharedMem + 0x1A01D
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _080A1D60
- ldr r0, _080A1D54 @ =gSpriteTemplate_83C1304
- movs r1, 0x40
- movs r2, 0x98
- movs r3, 0
- bl CreateSprite
- strb r0, [r4]
- b _080A1D60
- .align 2, 0
-_080A1D50: .4byte gSharedMem + 0x1A01D
-_080A1D54: .4byte gSpriteTemplate_83C1304
-_080A1D58:
- movs r0, 0x1D
- bl sub_80A18E4
- b _080A1D74
-_080A1D60:
- ldr r0, _080A1D7C @ =gSharedMem + 0x1A01D
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A1D80 @ =gSprites
- adds r0, r1
- adds r1, r5, 0
- bl StartSpriteAnim
-_080A1D74:
- add sp, 0x64
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D7C: .4byte gSharedMem + 0x1A01D
-_080A1D80: .4byte gSprites
- thumb_func_end sub_80A1D18
-
- thumb_func_start sub_80A1D84
-sub_80A1D84: @ 80A1D84
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r1, _080A1DC0 @ =0x00007533
- ldr r2, _080A1DC4 @ =gSummaryScreenMonMarkingsPalette
- adds r0, r1, 0
- bl sub_80F7920
- adds r4, r0, 0
- ldr r6, _080A1DC8 @ =gUnknown_020384F4
- str r4, [r6]
- cmp r4, 0
- beq _080A1DBA
- adds r0, r5, 0
- movs r1, 0x8
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r1, [r6]
- movs r0, 0x3C
- strh r0, [r1, 0x20]
- movs r0, 0x1A
- strh r0, [r1, 0x22]
-_080A1DBA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1DC0: .4byte 0x00007533
-_080A1DC4: .4byte gSummaryScreenMonMarkingsPalette
-_080A1DC8: .4byte gUnknown_020384F4
- thumb_func_end sub_80A1D84
-
- thumb_func_start sub_80A1DCC
-sub_80A1DCC: @ 80A1DCC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A1DE4 @ =gUnknown_020384F4
- ldr r0, [r0]
- bl DestroySprite
- adds r0, r4, 0
- bl sub_80A1D84
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1DE4: .4byte gUnknown_020384F4
- thumb_func_end sub_80A1DCC
-
- thumb_func_start sub_80A1DE8
-sub_80A1DE8: @ 80A1DE8
- push {r4,lr}
- movs r1, 0x26
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ball_number_to_ball_processing_index
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80478DC
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r1, _080A1E48 @ =gBallSpriteTemplates
- adds r0, r1
- movs r1, 0x6
- movs r2, 0x88
- movs r3, 0
- bl CreateSprite
- ldr r2, _080A1E4C @ =gSharedMem + 0x18000
- strb r0, [r2, 0xD]
- ldr r3, _080A1E50 @ =gSprites
- ldrb r1, [r2, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080A1E54 @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r2, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1E48: .4byte gBallSpriteTemplates
-_080A1E4C: .4byte gSharedMem + 0x18000
-_080A1E50: .4byte gSprites
-_080A1E54: .4byte SpriteCallbackDummy
- thumb_func_end sub_80A1DE8
-
- thumb_func_start sub_80A1E58
-sub_80A1E58: @ 80A1E58
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0xFF
- beq _080A1E92
- ldr r3, _080A1E6C @ =gUnknown_083C15BC
- ldrb r0, [r3]
- adds r4, r2, 0x5
- b _080A1E74
- .align 2, 0
-_080A1E6C: .4byte gUnknown_083C15BC
-_080A1E70:
- adds r3, 0x4
- ldrb r0, [r3]
-_080A1E74:
- cmp r0, 0xFF
- beq _080A1E7C
- cmp r0, r1
- bne _080A1E70
-_080A1E7C:
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x4
- strb r0, [r2, 0x1]
- ldrb r0, [r3, 0x1]
- strb r0, [r2, 0x2]
- ldrb r0, [r3, 0x2]
- strb r0, [r2, 0x3]
- ldrb r0, [r3, 0x3]
- strb r0, [r2, 0x4]
- adds r2, r4, 0
-_080A1E92:
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80A1E58
-
- thumb_func_start sub_80A1E9C
-sub_80A1E9C: @ 80A1E9C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r4, r2, 24
- lsrs r4, 24
- mov r1, sp
- adds r1, 0x1
- mov r2, sp
- adds r2, 0x2
- mov r0, sp
- bl sub_8072CD4
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80A1E58
- adds r6, r0, 0
- adds r1, r5, 0
- bl StringCopy
- adds r6, r0, 0
- cmp r4, 0xFF
- beq _080A1EEC
- movs r0, 0xFC
- strb r0, [r6]
- movs r0, 0x4
- strb r0, [r6, 0x1]
- mov r0, sp
- ldrb r0, [r0]
- strb r0, [r6, 0x2]
- mov r0, sp
- ldrb r0, [r0, 0x1]
- strb r0, [r6, 0x3]
- mov r0, sp
- ldrb r0, [r0, 0x2]
- strb r0, [r6, 0x4]
- movs r0, 0xFF
- strb r0, [r6, 0x5]
- adds r6, 0x5
-_080A1EEC:
- adds r0, r6, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80A1E9C
-
- thumb_func_start sub_80A1EF8
-sub_80A1EF8: @ 80A1EF8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _080A1F44 @ =gStringVar4
- mov r8, r0
- mov r1, r9
- adds r2, r4, 0
- str r3, [sp]
- bl sub_80A1E9C
- ldr r3, [sp]
- lsls r3, 24
- lsrs r3, 24
- mov r0, r8
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint_PixelCoords
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F44: .4byte gStringVar4
- thumb_func_end sub_80A1EF8
-
- thumb_func_start sub_80A1F48
-sub_80A1F48: @ 80A1F48
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 16
- lsrs r3, 16
- ldr r0, _080A1F94 @ =gStringVar4
- mov r8, r0
- mov r1, r9
- adds r2, r4, 0
- str r3, [sp]
- bl sub_80A1E9C
- mov r0, r8
- adds r1, r5, 0
- adds r2, r6, 0
- ldr r3, [sp]
- bl sub_8072BD8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F94: .4byte gStringVar4
- thumb_func_end sub_80A1F48
-
- thumb_func_start sub_80A1F98
-sub_80A1F98: @ 80A1F98
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- mov r8, r1
- adds r4, r2, 0
- adds r2, r3, 0
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x28]
- ldr r7, [sp, 0x2C]
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _080A1FF4 @ =gStringVar1
- mov r9, r0
- mov r1, r10
- adds r3, r4, 0
- bl ConvertIntToDecimalStringN
- str r7, [sp]
- mov r0, r9
- mov r1, r8
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_80A1EF8
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FF4: .4byte gStringVar1
- thumb_func_end sub_80A1F98
-
- thumb_func_start sub_80A1FF8
-sub_80A1FF8: @ 80A1FF8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080A2038 @ =gStringVar4
- mov r8, r0
- mov r1, r9
- adds r2, r4, 0
- bl sub_80A1E9C
- mov r0, r8
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2038: .4byte gStringVar4
- thumb_func_end sub_80A1FF8
-
- thumb_func_start PokemonSummaryScreen_CopyPokemonLevel
-PokemonSummaryScreen_CopyPokemonLevel: @ 80A203C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x34
- strb r0, [r4]
- adds r4, 0x1
- cmp r1, 0
- bne _080A2052
- movs r1, 0x5
-_080A2052:
- mov r0, sp
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0xE
- bl sub_80A1E9C
- adds r4, r0, 0
- ldr r1, _080A2074 @ =gOtherText_Comma
- bl StringCopy
- adds r4, r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080A2074: .4byte gOtherText_Comma
- thumb_func_end PokemonSummaryScreen_CopyPokemonLevel
-
- thumb_func_start sub_80A2078
-sub_80A2078: @ 80A2078
- push {lr}
- ldr r3, _080A209C @ =gUnknown_03005CF0
- ldr r2, _080A20A0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, [r1]
- str r2, [r3]
- ldr r2, _080A20A4 @ =sub_80A20A8
- str r2, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080A209C: .4byte gUnknown_03005CF0
-_080A20A0: .4byte gTasks
-_080A20A4: .4byte sub_80A20A8
- thumb_func_end sub_80A2078
-
- thumb_func_start sub_80A20A8
-sub_80A20A8: @ 80A20A8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8055870
- cmp r0, 0x1
- beq _080A20C6
- ldr r1, _080A20CC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A20D0 @ =gUnknown_03005CF0
- ldr r1, [r1]
- str r1, [r0]
-_080A20C6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A20CC: .4byte gTasks
-_080A20D0: .4byte gUnknown_03005CF0
- thumb_func_end sub_80A20A8
-
.align 2, 0 @ Don't pad with nop.
diff --git a/data/graphics.s b/data/graphics.s
index f1c7c37a3..7792e8a9e 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -3960,6 +3960,9 @@ gUnknown_08E94510:: @ 8E94510
gUnknown_08E94550:: @ 8E94550
.incbin "graphics/unknown/unknown_E94550.bin"
+gUnknown_08E94590:: @ 8E94590
+ .incbin "graphics/unknown/unknown_E94590.bin"
+
gUnknown_08E945D0:: @ 8E945D0
.incbin "graphics/interface/wordgroup_layout.bin"
diff --git a/graphics/unknown/unknown_E94550.bin b/graphics/unknown/unknown_E94550.bin
index ba6830b73..ed5feb3d6 100644
--- a/graphics/unknown/unknown_E94550.bin
+++ b/graphics/unknown/unknown_E94550.bin
Binary files differ
diff --git a/graphics/unknown/unknown_E94590.bin b/graphics/unknown/unknown_E94590.bin
new file mode 100644
index 000000000..bed9142e8
--- /dev/null
+++ b/graphics/unknown/unknown_E94590.bin
Binary files differ
diff --git a/include/pokemon.h b/include/pokemon.h
index 7fc8e181f..20a2d6d43 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -612,5 +612,7 @@ bool8 IsPokeSpriteNotFlipped(u16);
u8 GetLevelUpMovesBySpecies(u16, u16 *);
u8 TryIncrementMonLevel(struct Pokemon *);
+struct Sprite *sub_80F7920(u16, u16, const u16 *);
+
#endif // GUARD_POKEMON_H
diff --git a/ld_script.txt b/ld_script.txt
index 0ae208033..082b4883a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -134,7 +134,6 @@ SECTIONS {
src/pokemon/pokemon_icon.o(.text);
asm/pokemon_summary_screen.o(.text);
src/pokemon/pokemon_summary_screen.o(.text);
- asm/pokemon_summary_screen.o(.text_80A0958);
src/field/script_movement.o(.text);
src/field/fldeff_cut.o(.text);
src/pokemon/mail_data.o(.text);
diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c
index 29e8c5127..e330fed65 100644
--- a/src/pokemon/mon_markings.c
+++ b/src/pokemon/mon_markings.c
@@ -45,11 +45,11 @@ extern const union AnimCmd *const gSpriteAnimTable_83E533C[];
static EWRAM_DATA struct PokemonMarkMenu *sMenu = NULL;
-void sub_80F761C(s16, s16, u16, u16);
-void nullsub_65(struct Sprite *);
-void sub_80F78CC(struct Sprite *);
-void sub_80F7908(struct Sprite *);
-struct Sprite *sub_80F7960(u16, u16, u16 *, u16);
+static void sub_80F761C(s16, s16, u16, u16);
+static void nullsub_65(struct Sprite *);
+static void sub_80F78CC(struct Sprite *);
+static void sub_80F7908(struct Sprite *);
+static struct Sprite *sub_80F7960(u16, u16, const u16 *, u16);
void sub_80F727C(struct PokemonMarkMenu *ptr)
{
@@ -335,21 +335,21 @@ void sub_80F7908(struct Sprite *sprite)
sprite->pos1.y = 16 * sMenu->cursorPos + sMenu->cursorBaseY;
}
-struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, u16 *palette)
+struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, const u16 *palette)
{
if (!palette)
palette = gUnknown_083E49F4;
return sub_80F7960(tileTag, paletteTag, palette, 16);
}
-struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, u16 *palette)
+struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, const u16 *palette)
{
if (!palette)
palette = gUnknown_083E49F4;
return sub_80F7960(tileTag, paletteTag, palette, 1);
}
-struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, u16 *palette, u16 size)
+struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size)
{
u8 spriteId;
struct SpriteTemplate sprTemplate;
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index 63f9a9b9e..8402bcf16 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -7,29 +7,73 @@
#include "link.h"
#include "menu.h"
#include "menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
#include "party_menu.h"
+#include "pokeball.h"
#include "pokemon.h"
#include "region_map.h"
+#include "sound.h"
#include "species.h"
+#include "sprite.h"
#include "string_util.h"
#include "strings.h"
#include "strings2.h"
+#include "task.h"
#include "tv.h"
struct SummaryScreenStruct
{
/*0x00*/ u8 filler0[9];
/*0x09*/ u8 unk9;
+ /*0x0A*/ u8 fillerA;
+ /*0x0B*/ u8 unkB;
+ /*0x0C*/ u8 fillerC;
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 fillerE[0x2];
+ /*0x10*/ struct Pokemon unk10;
+ /*0x74*/ u8 filler74;
+ /*0x75*/ u8 unk75;
+ /*0x76*/ u8 unk76;
+ /*0x77*/ u8 filler77[0x2];
+ /*0x79*/ u8 unk79;
+ /*0x7A*/ u8 unk7A;
+ /*0x7B*/ u8 filler7B[0x3];
+ /*0x7E*/ u8 unk7E;
+ /*0x7F*/ u8 unk7F;
};
#define ewramSS (*(struct SummaryScreenStruct *)(gSharedMem + 0x18000))
+extern void sub_80A20A8(u8);
+extern u8 ball_number_to_ball_processing_index(u16);
+extern void sub_809F678(struct Pokemon *);
+extern void sub_80A1BC0(struct Sprite *sprite);
+extern void sub_80A1888(struct Sprite *);
+extern void sub_80A00F4(s16);
+extern void sub_80A0428(struct Pokemon *, s16*);
+extern void sub_80A18E4(u8);
+extern void GetStringCenterAlignXOffset(u8, u8, u8);
extern u8 *sub_80A1E58(u8 *, u8);
static void sub_80A0A2C(struct Pokemon *, u8, u8);
extern void sub_80A1FF8(const u8 *, u8, u8, u8);
+extern TaskFunc gUnknown_03005CF0;
+extern const u8 gUnknown_083C15BC[];
+extern struct Sprite *gUnknown_020384F4;
+extern const u16 gSummaryScreenMonMarkingsPalette[];
+extern struct SpriteTemplate gSpriteTemplate_83C1304;
+extern struct SpriteTemplate gSpriteTemplate_83C1280;
+extern const u8 gUnknown_083C11D8[];
+extern struct SpriteTemplate gSpriteTemplate_83C11C0;
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern const u16 gUnknown_08E94510[];
+extern const u16 gUnknown_08E94550[];
+extern const u16 gUnknown_08E94590[];
+extern const u8 gUnknown_08E73E88[];
extern const u8 gUnknown_083C15AE[];
extern const u8 gUnknown_083C15B4[];
+extern const u8 *const gUnknown_083C1068[];
bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon)
{
@@ -411,3 +455,1923 @@ void DrawExperienceProgressBar(struct Pokemon *pokemon, u8 left, u8 top)
}
}
}
+
+// Prints the text displayed in the top-left or top-right of the screen.
+// Each of the 4 summary screens displays different text.
+void PrintSummaryWindowHeaderText(void)
+{
+ u8 *buffer = gStringVar1;
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x12;
+ buffer[2] = 0x2;
+
+ buffer += 3;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, gUnknown_083C1068[ewramSS.unk7E]);
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x58;
+ buffer[3] = EOS;
+
+ MenuPrint(gStringVar1, 0, 0);
+
+ if (ewramSS.unk7F != 0)
+ {
+ GetStringCenterAlignXOffset(5, 23, 0);
+ GetStringCenterAlignXOffset(6, 24, 0);
+ }
+ else
+ {
+ MenuZeroFillWindowRect(23, 0, 24, 1);
+ }
+
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, gUnknown_083C1068[ewramSS.unk7F]);
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x28;
+ buffer[3] = EOS;
+
+ MenuPrint(gStringVar1, 25, 0);
+}
+
+// If the given pokemon previously had the pokerus virus, a small
+// dot will be drawn in between the pokeball and the mon's level.
+void DrawPokerusSurvivorDot(struct Pokemon *pokemon)
+{
+ u16 *vram1 = (u16 *)(VRAM + 0xE444);
+ u16 *vram2 = (u16 *)(VRAM + 0xEC44);
+
+ if (!CheckPartyPokerus(pokemon, 0) && CheckPartyHasHadPokerus(pokemon, 0))
+ {
+ *vram1 = 0x2C;
+ *vram2 = 0x2C;
+ }
+ else
+ {
+ *vram1 = 0x081A;
+ *vram2 = 0x081A;
+ }
+}
+
+// Draws the 4 small navigation circles at the top of the pokemon summary screen.
+#ifdef NONMATCHING
+void DrawSummaryScreenNavigationDots(void)
+{
+ void *dest;
+ u16 arr[8];
+ u8 i = 0;
+ struct SummaryScreenStruct *SS = (struct SummaryScreenStruct *)(gSharedMem + 0x18000);
+ u16 var1 = 0x4040;
+ u16 var2 = 0x404A;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (i < SS->unk75)
+ {
+ arr[i * 2] = var1;
+ arr[(i * 2) + 1] = var1 + 1;
+ }
+ else if (i > SS->unk76)
+ {
+ arr[i * 2] = var2;
+ arr[(i * 2) + 1] = var2 + 1;
+ }
+ else
+ {
+ if (i < SS->unkB)
+ {
+ arr[i * 2] = 0x4046;
+ arr[(i * 2) + 1] = 0x4046 + 1;
+ }
+
+ if (i == SS->unkB)
+ {
+ if (i != SS->unk76)
+ {
+ arr[i * 2] = 0x4041;
+ arr[(i * 2) + 1] = 0x4041 + 1;
+ }
+ else
+ {
+ arr[i * 2] = 0x404B;
+ arr[(i * 2) + 1] = 0x404B + 1;
+ }
+ }
+
+ if (i > SS->unkB)
+ {
+ if (i != SS->unk76)
+ {
+ arr[i * 2] = 0x4043;
+ arr[(i * 2) + 1] = 0x4043 + 1;
+ }
+ else
+ {
+ arr[i * 2] = 0x4048;
+ arr[(i * 2) + 1] = 0x4048 + 1;
+ }
+ }
+ }
+ }
+
+ dest = (void *)(VRAM + 0xE016);
+ DmaCopy16(3, arr, dest, 16);
+
+ for (i = 0; i < 8; i++)
+ {
+ arr[i] += 0x10;
+ }
+
+ dest = (void *)(VRAM + 0xE056);
+ DmaCopy16(3, arr, dest, 16);
+}
+#else
+__attribute__((naked))
+void DrawSummaryScreenNavigationDots(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x10\n\
+ movs r3, 0\n\
+ ldr r6, _080A0F24 @ =gSharedMem + 0x18000\n\
+ adds r5, r6, 0\n\
+ ldr r1, _080A0F28 @ =0x00004040\n\
+ mov r8, r1\n\
+ ldr r2, _080A0F2C @ =0x0000404a\n\
+ mov r10, r2\n\
+_080A0F02:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x75\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bcs _080A0F30\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ add r0, sp\n\
+ mov r4, r8\n\
+ strh r4, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ mov r7, sp\n\
+ adds r0, r7, r1\n\
+ strh r4, [r0]\n\
+ b _080A0FE2\n\
+ .align 2, 0\n\
+_080A0F24: .4byte gSharedMem + 0x18000\n\
+_080A0F28: .4byte 0x00004040\n\
+_080A0F2C: .4byte 0x0000404a\n\
+_080A0F30:\n\
+ movs r0, 0x76\n\
+ adds r0, r6\n\
+ mov r12, r0\n\
+ ldrb r1, [r0]\n\
+ cmp r3, r1\n\
+ bls _080A0F52\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ add r0, sp\n\
+ mov r2, r10\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ mov r4, sp\n\
+ adds r0, r4, r1\n\
+ strh r2, [r0]\n\
+ b _080A0FE2\n\
+_080A0F52:\n\
+ ldrb r4, [r5, 0xB]\n\
+ cmp r3, r4\n\
+ bcs _080A0F6E\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r7, sp\n\
+ adds r2, r7, r0\n\
+ ldr r0, _080A0F88 @ =0x00004046\n\
+ strh r0, [r2]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ add r1, sp\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080A0F6E:\n\
+ cmp r3, r4\n\
+ bne _080A0FA6\n\
+ mov r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ beq _080A0F90\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r4, sp\n\
+ adds r2, r4, r0\n\
+ ldr r0, _080A0F8C @ =0x00004041\n\
+ b _080A0F9A\n\
+ .align 2, 0\n\
+_080A0F88: .4byte 0x00004046\n\
+_080A0F8C: .4byte 0x00004041\n\
+_080A0F90:\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r7, sp\n\
+ adds r2, r7, r0\n\
+ ldr r0, _080A0FC4 @ =0x0000404b\n\
+_080A0F9A:\n\
+ strh r0, [r2]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ add r1, sp\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080A0FA6:\n\
+ ldrb r0, [r5, 0xB]\n\
+ cmp r3, r0\n\
+ bls _080A0FE2\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x76\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ beq _080A0FCC\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r4, sp\n\
+ adds r2, r4, r0\n\
+ ldr r0, _080A0FC8 @ =0x00004043\n\
+ b _080A0FD6\n\
+ .align 2, 0\n\
+_080A0FC4: .4byte 0x0000404b\n\
+_080A0FC8: .4byte 0x00004043\n\
+_080A0FCC:\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r7, sp\n\
+ adds r2, r7, r0\n\
+ ldr r0, _080A1034 @ =0x00004048\n\
+_080A0FD6:\n\
+ strh r0, [r2]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ add r1, sp\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080A0FE2:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x3\n\
+ bls _080A0F02\n\
+ ldr r1, _080A1038 @ =0x0600e016\n\
+ ldr r0, _080A103C @ =0x040000d4\n\
+ mov r2, sp\n\
+ str r2, [r0]\n\
+ str r1, [r0, 0x4]\n\
+ ldr r1, _080A1040 @ =0x80000008\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ movs r3, 0\n\
+_080A0FFE:\n\
+ lsls r0, r3, 1\n\
+ mov r4, sp\n\
+ adds r1, r4, r0\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x10\n\
+ strh r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x7\n\
+ bls _080A0FFE\n\
+ ldr r1, _080A1044 @ =0x0600e056\n\
+ ldr r0, _080A103C @ =0x040000d4\n\
+ str r4, [r0]\n\
+ str r1, [r0, 0x4]\n\
+ ldr r1, _080A1040 @ =0x80000008\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ add sp, 0x10\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1034: .4byte 0x00004048\n\
+_080A1038: .4byte 0x0600e016\n\
+_080A103C: .4byte 0x040000d4\n\
+_080A1040: .4byte 0x80000008\n\
+_080A1044: .4byte 0x0600e056\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+__attribute__((naked))
+void sub_80A1048(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ ldr r1, _080A10A0 @ =gTasks + 0x8\n\
+ adds r6, r0, r1\n\
+ ldrh r0, [r6]\n\
+ ldrh r1, [r6, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r6, 0x2]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080A106E\n\
+ b _080A1224\n\
+_080A106E:\n\
+ movs r5, 0x2\n\
+ ldrsh r2, [r6, r5]\n\
+ ldr r0, _080A10A4 @ =0x0000024a\n\
+ subs r0, r2\n\
+ lsls r0, 1\n\
+ ldr r1, _080A10A8 @ =gUnknown_08E73508\n\
+ adds r4, r0, r1\n\
+ ldr r5, _080A10AC @ =0x0600e480\n\
+ lsls r2, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r7, r1, 0\n\
+ cmp r2, r0\n\
+ bhi _080A10B4\n\
+ ldr r0, _080A10B0 @ =0x040000d4\n\
+ str r4, [r0]\n\
+ str r5, [r0, 0x4]\n\
+ lsrs r1, r2, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A10E0\n\
+ .align 2, 0\n\
+_080A10A0: .4byte gTasks + 0x8\n\
+_080A10A4: .4byte 0x0000024a\n\
+_080A10A8: .4byte gUnknown_08E73508\n\
+_080A10AC: .4byte 0x0600e480\n\
+_080A10B0: .4byte 0x040000d4\n\
+_080A10B4:\n\
+ ldr r3, _080A110C @ =0x040000d4\n\
+ str r4, [r3]\n\
+ str r5, [r3, 0x4]\n\
+ ldr r0, _080A1110 @ =0x80000800\n\
+ str r0, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r4, r0\n\
+ adds r5, r0\n\
+ ldr r1, _080A1114 @ =0xfffff000\n\
+ adds r2, r1\n\
+ cmp r2, r0\n\
+ bhi _080A10B4\n\
+ str r4, [r3]\n\
+ str r5, [r3, 0x4]\n\
+ lsrs r0, r2, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+_080A10E0:\n\
+ movs r5, 0x2\n\
+ ldrsh r0, [r6, r5]\n\
+ ldr r1, _080A1118 @ =0x0000026a\n\
+ subs r1, r0\n\
+ lsls r1, 1\n\
+ adds r3, r1, r7\n\
+ ldr r4, _080A111C @ =0x0600e4c0\n\
+ lsls r1, r0, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ cmp r1, r0\n\
+ bhi _080A1120\n\
+ ldr r0, _080A110C @ =0x040000d4\n\
+ str r3, [r0]\n\
+ str r4, [r0, 0x4]\n\
+ lsrs r1, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A114C\n\
+ .align 2, 0\n\
+_080A110C: .4byte 0x040000d4\n\
+_080A1110: .4byte 0x80000800\n\
+_080A1114: .4byte 0xfffff000\n\
+_080A1118: .4byte 0x0000026a\n\
+_080A111C: .4byte 0x0600e4c0\n\
+_080A1120:\n\
+ ldr r2, _080A1178 @ =0x040000d4\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ ldr r0, _080A117C @ =0x80000800\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r3, r0\n\
+ adds r4, r0\n\
+ ldr r5, _080A1180 @ =0xfffff000\n\
+ adds r1, r5\n\
+ cmp r1, r0\n\
+ bhi _080A1120\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ lsrs r0, r1, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+_080A114C:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r6, r1]\n\
+ ldr r1, _080A1184 @ =0x0000024a\n\
+ subs r1, r0\n\
+ lsls r1, 1\n\
+ adds r3, r1, r7\n\
+ ldr r4, _080A1188 @ =0x0600ec80\n\
+ lsls r1, r0, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ cmp r1, r0\n\
+ bhi _080A118C\n\
+ ldr r0, _080A1178 @ =0x040000d4\n\
+ str r3, [r0]\n\
+ str r4, [r0, 0x4]\n\
+ lsrs r1, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A11B8\n\
+ .align 2, 0\n\
+_080A1178: .4byte 0x040000d4\n\
+_080A117C: .4byte 0x80000800\n\
+_080A1180: .4byte 0xfffff000\n\
+_080A1184: .4byte 0x0000024a\n\
+_080A1188: .4byte 0x0600ec80\n\
+_080A118C:\n\
+ ldr r2, _080A11E4 @ =0x040000d4\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ ldr r0, _080A11E8 @ =0x80000800\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r3, r0\n\
+ adds r4, r0\n\
+ ldr r5, _080A11EC @ =0xfffff000\n\
+ adds r1, r5\n\
+ cmp r1, r0\n\
+ bhi _080A118C\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ lsrs r0, r1, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+_080A11B8:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r6, r1]\n\
+ ldr r1, _080A11F0 @ =0x0000026a\n\
+ subs r1, r0\n\
+ lsls r1, 1\n\
+ adds r3, r1, r7\n\
+ ldr r4, _080A11F4 @ =0x0600ecc0\n\
+ lsls r1, r0, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ cmp r1, r0\n\
+ bhi _080A11F8\n\
+ ldr r0, _080A11E4 @ =0x040000d4\n\
+ str r3, [r0]\n\
+ str r4, [r0, 0x4]\n\
+ lsrs r1, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A1224\n\
+ .align 2, 0\n\
+_080A11E4: .4byte 0x040000d4\n\
+_080A11E8: .4byte 0x80000800\n\
+_080A11EC: .4byte 0xfffff000\n\
+_080A11F0: .4byte 0x0000026a\n\
+_080A11F4: .4byte 0x0600ecc0\n\
+_080A11F8:\n\
+ ldr r2, _080A12B0 @ =0x040000d4\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ ldr r0, _080A12B4 @ =0x80000800\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r3, r0\n\
+ adds r4, r0\n\
+ ldr r5, _080A12B8 @ =0xfffff000\n\
+ adds r1, r5\n\
+ cmp r1, r0\n\
+ bhi _080A11F8\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ lsrs r0, r1, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+_080A1224:\n\
+ ldrb r4, [r6, 0x2]\n\
+ ldrh r7, [r6, 0x2]\n\
+ ldrh r0, [r6]\n\
+ mov r12, r0\n\
+ cmp r4, 0x9\n\
+ bhi _080A1272\n\
+ adds r3, r6, 0x4\n\
+ ldr r2, _080A12B0 @ =0x040000d4\n\
+ ldr r5, _080A12BC @ =0x80000001\n\
+_080A1236:\n\
+ lsls r1, r4, 1\n\
+ ldr r6, _080A12C0 @ =0x0600e480\n\
+ adds r0, r1, r6\n\
+ str r3, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ adds r6, 0x40\n\
+ adds r0, r1, r6\n\
+ str r3, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ ldr r6, _080A12C4 @ =0x0600ec80\n\
+ adds r0, r1, r6\n\
+ str r3, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ ldr r0, _080A12C8 @ =0x0600ecc0\n\
+ adds r1, r0\n\
+ str r3, [r2]\n\
+ str r1, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x9\n\
+ bls _080A1236\n\
+_080A1272:\n\
+ mov r1, r12\n\
+ lsls r0, r1, 16\n\
+ cmp r0, 0\n\
+ beq _080A1286\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0\n\
+ ble _080A1286\n\
+ cmp r0, 0x9\n\
+ ble _080A12A4\n\
+_080A1286:\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9\n\
+ ble _080A129A\n\
+ ldr r0, _080A12CC @ =gOtherText_Status\n\
+ movs r1, 0xD\n\
+ movs r2, 0x1\n\
+ movs r3, 0x12\n\
+ bl sub_80A1FF8\n\
+_080A129A:\n\
+ bl sub_80A1D18\n\
+ mov r0, r8\n\
+ bl DestroyTask\n\
+_080A12A4:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A12B0: .4byte 0x040000d4\n\
+_080A12B4: .4byte 0x80000800\n\
+_080A12B8: .4byte 0xfffff000\n\
+_080A12BC: .4byte 0x80000001\n\
+_080A12C0: .4byte 0x0600e480\n\
+_080A12C4: .4byte 0x0600ec80\n\
+_080A12C8: .4byte 0x0600ecc0\n\
+_080A12CC: .4byte gOtherText_Status\n\
+ .syntax divided\n");
+}
+
+void sub_80A12D0(u8 taskId)
+{
+ u8 newTaskId;
+
+ MenuZeroFillWindowRect(1, 18, 5, 19);
+ sub_80A18E4(29);
+
+ newTaskId = CreateTask(sub_80A1048, 0);
+ gTasks[newTaskId].data[0] = (s8)taskId;
+
+ if ((s8)taskId < 0)
+ {
+ gTasks[newTaskId].data[1] = 10;
+ }
+ else
+ {
+ gTasks[newTaskId].data[1] = 0;
+ }
+
+ gTasks[newTaskId].data[2] = 1;
+}
+
+// void sub_80A1334(u8 taskId)
+// {
+// u8 i;
+// s16 var1;
+
+// gTasks[taskId].data[1] += gTasks[taskId].data[0];
+
+// var1 = 0;
+// if (gTasks[taskId].data[1] >= 0)
+// {
+// var1 = 10;
+// if (gTasks[taskId].data[1] < 10)
+// {
+// var1 = gTasks[taskId].data[1];
+// }
+// }
+
+// if (var1 > 0)
+// {
+// u8 *vramAddr = (u8 *)(VRAM + 0x5B40);
+// for (i = 0; i < 7; i++)
+// {
+// CpuSet(&gUnknown_08E73E88[(i + 13) * 64], vramAddr, var1 & 0x1FFFFF);
+// vramAddr += 64;
+// }
+// }
+
+// if (var1 <= 9)
+// {
+// u8 *vramAddr = (u8 *)(VRAM + 0x5B40);
+// for (i = 0; i < 64; i++)
+// {
+// u16 val = gTasks[taskId].data[2];
+// CpuSet(&val, vramAddr, ((10 - var1) & 0x1FFFFF) | 0x800000);
+// }
+// }
+// else
+// {
+// MenuZeroFillWindowRect(0, 19, 9, 19);
+// }
+
+// if (gTasks[taskId].data[0] == 0 || gTasks[taskId].data[1] < 0)
+// {
+// if (ewramSS.unkB == 2)
+// {
+// MenuZeroFillWindowRect(0, 14, 9, 18);
+// sub_80A0958(ewramSS.unk10);
+
+// if (GetMonStatusAndPokerus(ewramSS.unk10))
+// {
+// sub_80A1FF8(gOtherText_Status, 13, 1, 18);
+// }
+
+// DestroyTask(taskId);
+// }
+// }
+
+// if (gTasks[taskId].data[1] > 9)
+// {
+// if (ewramSS.unkB == 2)
+// {
+// sub_80A00F4(gTasks[taskId].data[3]);
+// }
+
+// sub_80A0428(ewramSS.unk10, &gTasks[taskId].data[3]);
+// DestroyTask(taskId);
+// }
+// }
+__attribute__((naked))
+void sub_80A1334(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ lsls r0, 3\n\
+ ldr r1, _080A13E4 @ =gTasks + 0x8\n\
+ adds r7, r0, r1\n\
+ ldrh r0, [r7]\n\
+ ldrh r1, [r7, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r7, 0x2]\n\
+ lsls r0, 16\n\
+ asrs r1, r0, 16\n\
+ movs r0, 0\n\
+ cmp r1, 0\n\
+ blt _080A136A\n\
+ movs r0, 0xA\n\
+ cmp r1, 0xA\n\
+ bgt _080A136A\n\
+ ldrh r0, [r7, 0x2]\n\
+_080A136A:\n\
+ lsls r0, 16\n\
+ asrs r2, r0, 16\n\
+ mov r9, r0\n\
+ cmp r2, 0\n\
+ ble _080A13A6\n\
+ movs r0, 0xA\n\
+ subs r0, r2\n\
+ lsls r0, 1\n\
+ ldr r1, _080A13E8 @ =0x06005b40\n\
+ adds r4, r0, r1\n\
+ movs r5, 0\n\
+ adds r6, r2, 0\n\
+ ldr r0, _080A13EC @ =0x001fffff\n\
+ mov r8, r0\n\
+_080A1386:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xD\n\
+ lsls r0, 6\n\
+ ldr r1, _080A13F0 @ =gUnknown_08E73E88\n\
+ adds r0, r1\n\
+ adds r1, r4, 0\n\
+ mov r2, r8\n\
+ ands r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A1386\n\
+_080A13A6:\n\
+ mov r1, r9\n\
+ asrs r2, r1, 16\n\
+ cmp r2, 0x9\n\
+ bgt _080A13F4\n\
+ ldr r4, _080A13E8 @ =0x06005b40\n\
+ movs r5, 0\n\
+ mov r8, sp\n\
+ movs r0, 0xA\n\
+ subs r6, r0, r2\n\
+ ldr r0, _080A13EC @ =0x001fffff\n\
+ ands r6, r0\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ mov r9, r0\n\
+_080A13C2:\n\
+ ldrh r0, [r7, 0x4]\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ mov r2, r9\n\
+ orrs r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A13C2\n\
+ b _080A1400\n\
+ .align 2, 0\n\
+_080A13E4: .4byte gTasks + 0x8\n\
+_080A13E8: .4byte 0x06005b40\n\
+_080A13EC: .4byte 0x001fffff\n\
+_080A13F0: .4byte gUnknown_08E73E88\n\
+_080A13F4:\n\
+ movs r0, 0\n\
+ movs r1, 0x13\n\
+ movs r2, 0x9\n\
+ movs r3, 0x13\n\
+ bl MenuZeroFillWindowRect\n\
+_080A1400:\n\
+ movs r1, 0\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ beq _080A1410\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ bge _080A144A\n\
+_080A1410:\n\
+ ldr r4, _080A1480 @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x2\n\
+ bne _080A1444\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+ adds r4, 0x10\n\
+ adds r0, r4, 0\n\
+ bl sub_80A0958\n\
+ adds r0, r4, 0\n\
+ bl GetMonStatusAndPokerus\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080A1444\n\
+ ldr r0, _080A1484 @ =gOtherText_Status\n\
+ movs r1, 0xD\n\
+ movs r2, 0x1\n\
+ movs r3, 0x12\n\
+ bl sub_80A1FF8\n\
+_080A1444:\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A144A:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0x9\n\
+ ble _080A1470\n\
+ ldr r4, _080A1480 @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x2\n\
+ bne _080A1460\n\
+ ldrb r0, [r7, 0x6]\n\
+ bl sub_80A00F4\n\
+_080A1460:\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x10\n\
+ adds r1, r7, 0x6\n\
+ bl sub_80A0428\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A1470:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1480: .4byte gSharedMem + 0x18000\n\
+_080A1484: .4byte gOtherText_Status\n\
+ .syntax divided\n");
+}
+
+// Related to re-drawing the summary area underneath the pokemon's picture
+// in all of the summary screen tabs.
+void sub_80A1488(u8 a, u8 b)
+{
+ u8 taskId;
+
+ if (ewramSS.unkB == 2)
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 19);
+ }
+
+ taskId = FindTaskIdByFunc(sub_80A1334);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_80A1334, 0);
+ }
+
+ gTasks[taskId].data[0] = (s8)a;
+
+ if ((s8)a < 0)
+ {
+ gTasks[taskId].data[1] = 10;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0;
+ }
+
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = b;
+}
+
+__attribute__((naked))
+void sub_80A1500(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ lsls r0, 3\n\
+ ldr r1, _080A15B0 @ =gTasks + 0x8\n\
+ adds r7, r0, r1\n\
+ ldrh r0, [r7]\n\
+ ldrh r1, [r7, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r7, 0x2]\n\
+ lsls r0, 16\n\
+ asrs r1, r0, 16\n\
+ movs r0, 0\n\
+ cmp r1, 0\n\
+ blt _080A1536\n\
+ movs r0, 0xA\n\
+ cmp r1, 0xA\n\
+ bgt _080A1536\n\
+ ldrh r0, [r7, 0x2]\n\
+_080A1536:\n\
+ lsls r0, 16\n\
+ asrs r2, r0, 16\n\
+ mov r9, r0\n\
+ cmp r2, 0\n\
+ ble _080A1572\n\
+ movs r0, 0xA\n\
+ subs r0, r2\n\
+ lsls r0, 1\n\
+ ldr r1, _080A15B4 @ =0x06006b40\n\
+ adds r4, r0, r1\n\
+ movs r5, 0\n\
+ adds r6, r2, 0\n\
+ ldr r0, _080A15B8 @ =0x001fffff\n\
+ mov r8, r0\n\
+_080A1552:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xD\n\
+ lsls r0, 6\n\
+ ldr r1, _080A15BC @ =gUnknown_08E74688\n\
+ adds r0, r1\n\
+ adds r1, r4, 0\n\
+ mov r2, r8\n\
+ ands r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A1552\n\
+_080A1572:\n\
+ mov r1, r9\n\
+ asrs r2, r1, 16\n\
+ cmp r2, 0x9\n\
+ bgt _080A15C0\n\
+ ldr r4, _080A15B4 @ =0x06006b40\n\
+ movs r5, 0\n\
+ mov r8, sp\n\
+ movs r0, 0xA\n\
+ subs r6, r0, r2\n\
+ ldr r0, _080A15B8 @ =0x001fffff\n\
+ ands r6, r0\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ mov r9, r0\n\
+_080A158E:\n\
+ ldrh r0, [r7, 0x4]\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ mov r2, r9\n\
+ orrs r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A158E\n\
+ b _080A15CC\n\
+ .align 2, 0\n\
+_080A15B0: .4byte gTasks + 0x8\n\
+_080A15B4: .4byte 0x06006b40\n\
+_080A15B8: .4byte 0x001fffff\n\
+_080A15BC: .4byte gUnknown_08E74688\n\
+_080A15C0:\n\
+ movs r0, 0\n\
+ movs r1, 0x13\n\
+ movs r2, 0x9\n\
+ movs r3, 0x13\n\
+ bl MenuZeroFillWindowRect\n\
+_080A15CC:\n\
+ movs r1, 0\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ beq _080A15DC\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ bge _080A1616\n\
+_080A15DC:\n\
+ ldr r4, _080A164C @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x3\n\
+ bne _080A1610\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+ adds r4, 0x10\n\
+ adds r0, r4, 0\n\
+ bl sub_80A0958\n\
+ adds r0, r4, 0\n\
+ bl GetMonStatusAndPokerus\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080A1610\n\
+ ldr r0, _080A1650 @ =gOtherText_Status\n\
+ movs r1, 0xD\n\
+ movs r2, 0x1\n\
+ movs r3, 0x12\n\
+ bl sub_80A1FF8\n\
+_080A1610:\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A1616:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0x9\n\
+ ble _080A163C\n\
+ ldr r4, _080A164C @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x3\n\
+ bne _080A162C\n\
+ ldrb r0, [r7, 0x6]\n\
+ bl sub_80A00F4\n\
+_080A162C:\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x10\n\
+ adds r1, r7, 0x6\n\
+ bl sub_80A0428\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A163C:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A164C: .4byte gSharedMem + 0x18000\n\
+_080A1650: .4byte gOtherText_Status\n\
+ .syntax divided\n");
+}
+
+void sub_80A1654(u8 a, u8 b)
+{
+ u8 taskId;
+
+ if (ewramSS.unkB == 3)
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 19);
+ }
+
+ taskId = FindTaskIdByFunc(sub_80A1500);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_80A1500, 0);
+ }
+
+ gTasks[taskId].data[0] = (s8)a;
+
+ if ((s8)a < 0)
+ {
+ gTasks[taskId].data[1] = 10;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0;
+ }
+
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = b;
+}
+
+#ifdef NONMATCHING
+void sub_80A16CC(u8 a)
+{
+ u8 i;
+ u16 *vramAddr = (u16 *)(VRAM + 0x6AD4);
+
+ if (a == 0)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94510[i] + 0x1000;
+ vramAddr[i + 0x20] = gUnknown_08E94510[i] + 0x1000;
+ vramAddr[i + 0x40] = gUnknown_08E94550[i] + 0x1000;
+ }
+ }
+ else
+ {
+ i = 0;
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94550[i] + 0x1000;
+ vramAddr[i + 0x20] = gUnknown_08E94590[i] + 0x1000;
+ vramAddr[i + 0x40] = gUnknown_08E94590[i] + 0x1000;
+ }
+ }
+
+ vramAddr = (u16 *)(VRAM + 0x5AD4);
+
+ if (a == 0)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94510[i] + 0x3000;
+ vramAddr[i + 0x20] = gUnknown_08E94510[i] + 0x3000;
+ vramAddr[i + 0x40] = gUnknown_08E94550[i] + 0x3000;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94550[i] + 0x3000;
+ vramAddr[i + 0x20] = gUnknown_08E94590[i] + 0x3000;
+ vramAddr[i + 0x40] = gUnknown_08E94590[i] + 0x3000;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80A16CC(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ ldr r0, _080A1724 @ =0x06006ad4\n\
+ mov r12, r0\n\
+ mov r1, r9\n\
+ cmp r1, 0\n\
+ bne _080A172C\n\
+ movs r5, 0\n\
+ ldr r7, _080A1728 @ =gUnknown_08E94510\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r6, r0, 0\n\
+ movs r1, 0x40\n\
+ adds r1, r7\n\
+ mov r8, r1\n\
+_080A16F4:\n\
+ lsls r2, r5, 1\n\
+ mov r0, r12\n\
+ adds r3, r2, r0\n\
+ adds r4, r2, r7\n\
+ ldrh r1, [r4]\n\
+ adds r0, r6, r1\n\
+ strh r0, [r3]\n\
+ adds r1, r3, 0\n\
+ adds r1, 0x40\n\
+ ldrh r4, [r4]\n\
+ adds r0, r6, r4\n\
+ strh r0, [r1]\n\
+ adds r3, 0x80\n\
+ add r2, r8\n\
+ ldrh r2, [r2]\n\
+ adds r0, r6, r2\n\
+ strh r0, [r3]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A16F4\n\
+ b _080A1768\n\
+ .align 2, 0\n\
+_080A1724: .4byte 0x06006ad4\n\
+_080A1728: .4byte gUnknown_08E94510\n\
+_080A172C:\n\
+ movs r5, 0\n\
+ ldr r6, _080A17B0 @ =gUnknown_08E94550\n\
+ movs r7, 0x80\n\
+ lsls r7, 5\n\
+ adds r4, r7, 0\n\
+ movs r0, 0x40\n\
+ adds r0, r6\n\
+ mov r8, r0\n\
+_080A173C:\n\
+ lsls r1, r5, 1\n\
+ mov r7, r12\n\
+ adds r2, r1, r7\n\
+ adds r0, r1, r6\n\
+ ldrh r0, [r0]\n\
+ adds r0, r4, r0\n\
+ strh r0, [r2]\n\
+ adds r3, r2, 0\n\
+ adds r3, 0x40\n\
+ add r1, r8\n\
+ ldrh r7, [r1]\n\
+ adds r0, r4, r7\n\
+ strh r0, [r3]\n\
+ adds r2, 0x80\n\
+ ldrh r1, [r1]\n\
+ adds r0, r4, r1\n\
+ strh r0, [r2]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A173C\n\
+_080A1768:\n\
+ ldr r0, _080A17B4 @ =0x06005ad4\n\
+ mov r12, r0\n\
+ mov r1, r9\n\
+ cmp r1, 0\n\
+ bne _080A17BC\n\
+ movs r5, 0\n\
+ ldr r7, _080A17B8 @ =gUnknown_08E94510\n\
+ movs r0, 0xC0\n\
+ lsls r0, 6\n\
+ adds r6, r0, 0\n\
+ movs r1, 0x40\n\
+ adds r1, r7\n\
+ mov r8, r1\n\
+_080A1782:\n\
+ lsls r2, r5, 1\n\
+ mov r0, r12\n\
+ adds r3, r2, r0\n\
+ adds r4, r2, r7\n\
+ ldrh r1, [r4]\n\
+ adds r0, r6, r1\n\
+ strh r0, [r3]\n\
+ adds r1, r3, 0\n\
+ adds r1, 0x40\n\
+ ldrh r4, [r4]\n\
+ adds r0, r6, r4\n\
+ strh r0, [r1]\n\
+ adds r3, 0x80\n\
+ add r2, r8\n\
+ ldrh r2, [r2]\n\
+ adds r0, r6, r2\n\
+ strh r0, [r3]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A1782\n\
+ b _080A17F8\n\
+ .align 2, 0\n\
+_080A17B0: .4byte gUnknown_08E94550\n\
+_080A17B4: .4byte 0x06005ad4\n\
+_080A17B8: .4byte gUnknown_08E94510\n\
+_080A17BC:\n\
+ movs r5, 0\n\
+ ldr r6, _080A1804 @ =gUnknown_08E94550\n\
+ movs r7, 0xC0\n\
+ lsls r7, 6\n\
+ adds r4, r7, 0\n\
+ movs r0, 0x40\n\
+ adds r0, r6\n\
+ mov r8, r0\n\
+_080A17CC:\n\
+ lsls r1, r5, 1\n\
+ mov r7, r12\n\
+ adds r2, r1, r7\n\
+ adds r0, r1, r6\n\
+ ldrh r0, [r0]\n\
+ adds r0, r4, r0\n\
+ strh r0, [r2]\n\
+ adds r3, r2, 0\n\
+ adds r3, 0x40\n\
+ add r1, r8\n\
+ ldrh r7, [r1]\n\
+ adds r0, r4, r7\n\
+ strh r0, [r3]\n\
+ adds r2, 0x80\n\
+ ldrh r1, [r1]\n\
+ adds r0, r4, r1\n\
+ strh r0, [r2]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A17CC\n\
+_080A17F8:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1804: .4byte gUnknown_08E94550\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+u8 sub_80A1808(struct Pokemon *pokemon)
+{
+ u16 species;
+ u8 spriteId;
+
+ species = GetMonData(pokemon, MON_DATA_SPECIES2);
+ spriteId = CreateSprite(&gUnknown_02024E8C, 40, 64, 5);
+
+ FreeSpriteOamMatrix(&gSprites[spriteId]);
+
+ gSprites[spriteId].data0 = species;
+ gSprites[spriteId].callback = sub_80A1888;
+
+ if (!IsPokeSpriteNotFlipped(species))
+ {
+ gSprites[spriteId].hFlip = 1;
+ }
+ else
+ {
+ gSprites[spriteId].hFlip = 0;
+ }
+
+ return spriteId;
+}
+
+void sub_80A1888(struct Sprite *sprite)
+{
+ if (!gPaletteFade.active)
+ {
+ sprite->callback = SpriteCallbackDummy;
+
+ if (!GetMonData(&ewramSS.unk10, MON_DATA_IS_EGG))
+ {
+ PlayCry1(sprite->data0, 0);
+ }
+ }
+}
+
+void sub_80A18C4(void)
+{
+ u8 i;
+
+ for (i = 0; i < 30; i++)
+ {
+ ewram1A000[i] = 0xFF;
+ }
+}
+
+void sub_80A18E4(u8 a)
+{
+ if (ewram1A000[a] != 0xFF)
+ {
+ DestroySprite(&gSprites[ewram1A000[a]]);
+ ewram1A000[a] = 0xFF;
+ }
+}
+
+void sub_80A1918(u8 a, u8 invisible)
+{
+ gSprites[ewram1A000[a]].invisible = invisible;
+}
+
+void sub_80A1950(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (ewram1A000[i] == 0xFF)
+ {
+ ewram1A000[i] = CreateSprite(&gSpriteTemplate_83C11C0, 0, 0, 2);
+ }
+
+ sub_80A1918(i, 1);
+ }
+}
+
+void sub_80A198C(u8 animNum, u8 x, u8 y, u8 d)
+{
+ StartSpriteAnim(&gSprites[ewram1A000[d]], animNum);
+
+ gSprites[ewram1A000[d]].oam.paletteNum = gUnknown_083C11D8[animNum];
+ gSprites[ewram1A000[d]].pos1.x = x + 16;
+ gSprites[ewram1A000[d]].pos1.y = y + 8;
+
+ sub_80A1918(d, 0);
+}
+
+void sub_80A1A30(u8 a)
+{
+ u8 i;
+ s16 x;
+ u8 subPriority = 0;
+
+ if (ewramSS.unkB > 1)
+ {
+ if (a == 9)
+ {
+ subPriority = 1;
+ }
+
+ for (i = 0; i < 10; i++)
+ {
+ x = (i * 16) + 0x58;
+ ewram1A000[a + i] = CreateSprite(&gSpriteTemplate_83C1280, x, 40, subPriority);
+
+ if (i == 0)
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[a]], 4);
+ }
+ else if (i == 9)
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[a + i]], 5);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[a + i]], 6);
+ }
+
+ gSprites[ewram1A000[a + i]].callback = sub_80A1BC0;
+ gSprites[ewram1A000[a + i]].data0 = a;
+ gSprites[ewram1A000[a + i]].data1 = 0;
+ }
+ }
+}
+
+void sub_80A1B1C(u8 a)
+{
+ u8 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ sub_80A18E4(a + i);
+ }
+}
+
+#ifdef NONMATCHING
+void sub_80A1B40(u8 a)
+{
+ u8 i;
+ u8 var1 = a * 3;
+
+ StartSpriteAnim(&gSprites[ewram1A000[9]], var1 + 4);
+
+ for (i = 0; i < 8; i++)
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[10 + i]], var1 + 6);
+ }
+
+ StartSpriteAnim(&gSprites[ewram1A000[18]], var1 + 5);
+}
+#else
+__attribute__((naked))
+void sub_80A1B40(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ lsls r1, r7, 1\n\
+ adds r1, r7\n\
+ lsls r1, 24\n\
+ ldr r0, _080A1BB4 @ =gSharedMem + 0x1A009\n\
+ ldrb r2, [r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ ldr r2, _080A1BB8 @ =gSprites\n\
+ adds r0, r2\n\
+ lsrs r7, r1, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 19\n\
+ adds r1, r2\n\
+ lsrs r1, 24\n\
+ bl StartSpriteAnim\n\
+ movs r4, 0\n\
+ adds r0, r7, 0x6\n\
+ lsls r0, 24\n\
+ mov r8, r0\n\
+_080A1B74:\n\
+ ldr r6, _080A1BBC @ =gSharedMem + 0x1A00A\n\
+ adds r0, r4, r6\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r5, _080A1BB8 @ =gSprites\n\
+ adds r0, r5\n\
+ mov r2, r8\n\
+ lsrs r1, r2, 24\n\
+ bl StartSpriteAnim\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x7\n\
+ bls _080A1B74\n\
+ ldrb r1, [r6, 0x8]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ adds r1, r7, 0x5\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ bl StartSpriteAnim\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1BB4: .4byte gSharedMem + 0x1A009\n\
+_080A1BB8: .4byte gSprites\n\
+_080A1BBC: .4byte gSharedMem + 0x1A00A\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80A1BC0(struct Sprite *sprite)
+{
+ u8 animNum = sprite->animNum - 4;
+ if (animNum < 3)
+ {
+ sprite->data1 = (sprite->data1 + 1) & 0x1F;
+
+ if (sprite->data1 > 24)
+ {
+ sprite->invisible = 1;
+ }
+ else
+ {
+ sprite->invisible = 0;
+ }
+ }
+ else
+ {
+ sprite->data1 = 0;
+ sprite->invisible = 0;
+ }
+
+ if (sprite->data0 == 9)
+ {
+ sprite->pos2.y = ewramSS.unk79 * 16;
+ }
+ else
+ {
+ sprite->pos2.y = ewramSS.unk7A * 16;
+ }
+}
+
+__attribute__((naked))
+void sub_80A1C30(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 25\n\
+ lsrs r3, r0, 24\n\
+ adds r4, r3, 0\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xA\n\
+ cmp r3, r0\n\
+ bge _080A1C82\n\
+ ldr r5, _080A1C88 @ =gSprites\n\
+ movs r7, 0x5\n\
+ negs r7, r7\n\
+ ldr r6, _080A1C8C @ =gSharedMem + 0x1A009\n\
+_080A1C50:\n\
+ adds r2, r3, r6\n\
+ ldrb r1, [r2]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x30]\n\
+ ldrb r0, [r2]\n\
+ lsls r1, r0, 4\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ adds r1, 0x3E\n\
+ ldrb r2, [r1]\n\
+ adds r0, r7, 0\n\
+ ands r0, r2\n\
+ strb r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xA\n\
+ cmp r3, r0\n\
+ blt _080A1C50\n\
+_080A1C82:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1C88: .4byte gSprites\n\
+_080A1C8C: .4byte gSharedMem + 0x1A009\n\
+ .syntax divided\n");
+}
+
+u8 pokemon_ailments_get_primary(u32 status)
+{
+ if (status & 0x88)
+ return 1;
+ if (status & 0x40)
+ return 2;
+ if (status & 0x7)
+ return 3;
+ if (status & 0x20)
+ return 4;
+ if (status & 0x10)
+ return 5;
+
+ return 0;
+}
+
+u8 GetMonStatusAndPokerus(struct Pokemon *mon)
+{
+ u8 statusAilment;
+
+ if (GetMonData(mon, MON_DATA_HP) == 0)
+ {
+ return 7;
+ }
+
+ statusAilment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS));
+ if (statusAilment == 0)
+ {
+ if (!CheckPartyPokerus(mon, 0))
+ {
+ return 0;
+ }
+ else
+ {
+ return 6;
+ }
+ }
+
+ return statusAilment;
+}
+
+#ifdef NONMATCHING
+void sub_80A1D18(void)
+{
+ struct Pokemon mon;
+ u8 statusAndPkrs;
+ u8 statusAndPkrs2;
+
+ sub_809F678(&mon);
+ statusAndPkrs = GetMonStatusAndPokerus(&mon);
+
+ if (statusAndPkrs)
+ {
+ statusAndPkrs2 = statusAndPkrs - 1;
+
+ if (ewram1A000[29] == 0xFF)
+ {
+ ewram1A000[29] = CreateSprite(&gSpriteTemplate_83C1304, 64, 152, 0);
+ }
+ }
+ else
+ {
+ sub_80A18E4(29);
+ return;
+ }
+
+ StartSpriteAnim(&gSprites[ewram1A000[29]], statusAndPkrs2);
+}
+#else
+__attribute__((naked))
+void sub_80A1D18(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x64\n\
+ mov r0, sp\n\
+ bl sub_809F678\n\
+ mov r0, sp\n\
+ bl GetMonStatusAndPokerus\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ beq _080A1D58\n\
+ subs r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r4, _080A1D50 @ =gSharedMem + 0x1A01D\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0xFF\n\
+ bne _080A1D60\n\
+ ldr r0, _080A1D54 @ =gSpriteTemplate_83C1304\n\
+ movs r1, 0x40\n\
+ movs r2, 0x98\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ strb r0, [r4]\n\
+ b _080A1D60\n\
+ .align 2, 0\n\
+_080A1D50: .4byte gSharedMem + 0x1A01D\n\
+_080A1D54: .4byte gSpriteTemplate_83C1304\n\
+_080A1D58:\n\
+ movs r0, 0x1D\n\
+ bl sub_80A18E4\n\
+ b _080A1D74\n\
+_080A1D60:\n\
+ ldr r0, _080A1D7C @ =gSharedMem + 0x1A01D\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _080A1D80 @ =gSprites\n\
+ adds r0, r1\n\
+ adds r1, r5, 0\n\
+ bl StartSpriteAnim\n\
+_080A1D74:\n\
+ add sp, 0x64\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1D7C: .4byte gSharedMem + 0x1A01D\n\
+_080A1D80: .4byte gSprites\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80A1D84(struct Pokemon *mon)
+{
+ struct Sprite *sprite;
+
+ sprite = sub_80F7920(0x7533, 0x7533, gSummaryScreenMonMarkingsPalette);
+ gUnknown_020384F4 = sprite;
+
+ if (sprite != NULL)
+ {
+ u8 markings = GetMonData(mon, MON_DATA_MARKINGS);
+ StartSpriteAnim(sprite, markings);
+
+ gUnknown_020384F4->pos1.x = 60;
+ gUnknown_020384F4->pos1.y = 26;
+ }
+}
+
+void sub_80A1DCC(struct Pokemon *mon)
+{
+ DestroySprite(gUnknown_020384F4);
+ sub_80A1D84(mon);
+}
+
+void sub_80A1DE8(struct Pokemon *mon)
+{
+ u8 ball = ball_number_to_ball_processing_index(GetMonData(mon, MON_DATA_POKEBALL));
+ sub_80478DC(ball);
+
+ ewramSS.unkD = CreateSprite(&gBallSpriteTemplates[ball], 6, 136, 0);
+ gSprites[ewramSS.unkD].callback = SpriteCallbackDummy;
+ gSprites[ewramSS.unkD].oam.priority = 3;
+}
+
+u8 *sub_80A1E58(u8 *text, u8 id)
+{
+ if (id != 0xFF)
+ {
+ const u8 *ptr = gUnknown_083C15BC;
+ while (*ptr != 0xFF && *ptr != id)
+ {
+ ptr += 4;
+ }
+
+ text[0] = EXT_CTRL_CODE_BEGIN;
+ text[1] = 4;
+ text[2] = ptr[1];
+ text[3] = ptr[2];
+ text[4] = ptr[3];
+
+ text += 5;
+ }
+
+ return text;
+}
+
+u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8 id)
+{
+ u8 arr[3];
+
+ sub_8072CD4(&arr[0], &arr[1], &arr[2]);
+
+ dest = sub_80A1E58(dest, id);
+ dest = StringCopy(dest, src);
+
+ if (id != 0xFF)
+ {
+ dest[0] = EXT_CTRL_CODE_BEGIN;
+ dest[1] = 4;
+ dest[2] = arr[0];
+ dest[3] = arr[1];
+ dest[4] = arr[2];
+ dest[5] = 0xFF;
+
+ dest += 5;
+ }
+
+ return dest;
+}
+
+void sub_80A1EF8(const u8 *text, u8 id, u8 left, u16 top, s32 e)
+{
+ sub_80A1E9C(gStringVar4, text, id);
+ MenuPrint_PixelCoords(gStringVar4, left, top, (bool8)e);
+}
+
+void sub_80A1F48(const u8 *text, u8 id, u8 c, u8 d, u16 e)
+{
+ sub_80A1E9C(gStringVar4, text, id);
+ sub_8072BD8(gStringVar4, c, d, e);
+}
+
+void sub_80A1F98(s32 value, u8 id, u8 n, u8 mode, u8 left, u16 top, s32 e)
+{
+ ConvertIntToDecimalStringN(gStringVar1, value, mode, n);
+ sub_80A1EF8(gStringVar1, id, left, top, e);
+}
+
+void sub_80A1FF8(const u8 *text, u8 id, u8 left, u8 top)
+{
+ sub_80A1E9C(gStringVar4, text, id);
+ MenuPrint(gStringVar4, left, top);
+}
+
+u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level)
+{
+ u8 buffer[12];
+
+ dest[0] = 0x34;
+ dest++;
+
+ if (level == 0)
+ {
+ level = 5;
+ }
+
+ ConvertIntToDecimalString(buffer, level);
+ dest = sub_80A1E9C(dest, buffer, 14);
+ dest = StringCopy(dest, gOtherText_Comma);
+
+ return dest;
+}
+
+void sub_80A2078(u32 taskId)
+{
+ gUnknown_03005CF0 = gTasks[taskId].func;
+ gTasks[taskId].func = sub_80A20A8;
+ gTasks[taskId].func((u8)taskId);
+}
+
+void sub_80A20A8(u8 taskId)
+{
+ if (sub_8055870() != TRUE)
+ {
+ gTasks[taskId].func = gUnknown_03005CF0;
+ }
+}
diff --git a/src/strings.c b/src/strings.c
index 6c8dce9d6..06bbadb8f 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -409,7 +409,7 @@ const u8 OtherText_Switch[] = _("SWITCH");
const u8 OtherText_PokeInfo[] = _("POKéMON INFO");
const u8 OtherText_PokeSkills[] = _("POKéMON SKILLS");
const u8 OtherText_BattleMoves[] = _("BATTLE MOVES");
-const u8 OtherText_ContestMoves[] = _("C0NTEST MOVES"); // why the l33t 0, that's stupid
+const u8 OtherText_ContestMoves[] = _("C0NTEST MOVES"); // The "O" in "CONTEST" is actually a 0.
const u8 OtherText_Info[] = _("INFO");
const u8 gOtherText_EggLongTime[] = _("It looks like this EGG will\ntake a long time to hatch.");