summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokemon_summary_screen.s2606
-rw-r--r--include/pokemon_icon.h2
-rw-r--r--src/pokemon_storage_system.c6
-rw-r--r--src/pokemon_summary_screen.c971
4 files changed, 951 insertions, 2634 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 8f4722c2b..6b007b581 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,2612 +5,6 @@
.text
- thumb_func_start sub_8139D54
-sub_8139D54: @ 8139D54
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _08139D84 @ =gSprites
- ldr r1, _08139D88 @ =gMonSummaryScreen
- ldr r1, [r1]
- ldr r2, _08139D8C @ =0x0000300c
- adds r1, r2
- ldrb r1, [r1]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- adds r2, 0x3E
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- ldrb r3, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r0
- strb r1, [r2]
- bx lr
- .align 2, 0
-_08139D84: .4byte gSprites
-_08139D88: .4byte gMonSummaryScreen
-_08139D8C: .4byte 0x0000300c
- thumb_func_end sub_8139D54
-
- thumb_func_start sub_8139D90
-sub_8139D90: @ 8139D90
- push {lr}
- ldr r0, _08139DB0 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08139DB4 @ =0x0000300c
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08139DB8 @ =gSprites
- adds r0, r1
- bl DestroySpriteAndFreeResources2
- pop {r0}
- bx r0
- .align 2, 0
-_08139DB0: .4byte gMonSummaryScreen
-_08139DB4: .4byte 0x0000300c
-_08139DB8: .4byte gSprites
- thumb_func_end sub_8139D90
-
- thumb_func_start sub_8139DBC
-sub_8139DBC: @ 8139DBC
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r6, _08139E08 @ =gMonSummaryScreen
- ldr r0, [r6]
- ldr r4, _08139E0C @ =0x00003290
- adds r0, r4
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0
- bl GetMonData
- adds r4, r0, 0
- adds r0, r5, 0
- bl SafeLoadMonIconPalette
- ldr r2, [r6]
- ldr r1, _08139E10 @ =0x000032f8
- adds r0, r2, r1
- ldr r1, [r0]
- ldr r0, _08139E14 @ =CB2_ReturnToTradeMenuFromSummary
- cmp r1, r0
- bne _08139E2C
- ldr r1, _08139E18 @ =0x00003024
- adds r0, r2, r1
- ldr r0, [r0]
- cmp r0, 0x1
- bne _08139E20
- ldr r1, _08139E1C @ =SpriteCallbackDummy
- movs r0, 0
- str r0, [sp]
- str r4, [sp, 0x4]
- b _08139E58
- .align 2, 0
-_08139E08: .4byte gMonSummaryScreen
-_08139E0C: .4byte 0x00003290
-_08139E10: .4byte 0x000032f8
-_08139E14: .4byte CB2_ReturnToTradeMenuFromSummary
-_08139E18: .4byte 0x00003024
-_08139E1C: .4byte SpriteCallbackDummy
-_08139E20:
- ldr r1, _08139E28 @ =SpriteCallbackDummy
- movs r0, 0
- b _08139E52
- .align 2, 0
-_08139E28: .4byte SpriteCallbackDummy
-_08139E2C:
- ldr r0, _08139E48 @ =gLastViewedMonIndex
- ldrb r1, [r0]
- movs r0, 0x3
- bl sub_804455C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08139E50
- ldr r1, _08139E4C @ =SpriteCallbackDummy
- movs r0, 0
- str r0, [sp]
- str r4, [sp, 0x4]
- b _08139E58
- .align 2, 0
-_08139E48: .4byte gLastViewedMonIndex
-_08139E4C: .4byte SpriteCallbackDummy
-_08139E50:
- ldr r1, _08139E98 @ =SpriteCallbackDummy
-_08139E52:
- str r0, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
-_08139E58:
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r2, 0x18
- movs r3, 0x20
- bl CreateMonIcon
- ldr r1, [r6]
- ldr r2, _08139E9C @ =0x00003014
- adds r1, r2
- strb r0, [r1]
- adds r0, r5, 0
- bl IsPokeSpriteNotFlipped
- lsls r0, 24
- cmp r0, 0
- bne _08139EA8
- ldr r2, _08139EA0 @ =gSprites
- ldr r0, _08139EA4 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08139E9C @ =0x00003014
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- b _08139EC6
- .align 2, 0
-_08139E98: .4byte SpriteCallbackDummy
-_08139E9C: .4byte 0x00003014
-_08139EA0: .4byte gSprites
-_08139EA4: .4byte gMonSummaryScreen
-_08139EA8:
- ldr r2, _08139ED8 @ =gSprites
- ldr r0, _08139EDC @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08139EE0 @ =0x00003014
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3F
- ldrb r2, [r0]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
-_08139EC6:
- strb r1, [r0]
- movs r0, 0x1
- bl sub_8139EE4
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08139ED8: .4byte gSprites
-_08139EDC: .4byte gMonSummaryScreen
-_08139EE0: .4byte 0x00003014
- thumb_func_end sub_8139DBC
-
- thumb_func_start sub_8139EE4
-sub_8139EE4: @ 8139EE4
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _08139F14 @ =gSprites
- ldr r1, _08139F18 @ =gMonSummaryScreen
- ldr r1, [r1]
- ldr r2, _08139F1C @ =0x00003014
- adds r1, r2
- ldrb r1, [r1]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- adds r2, 0x3E
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- ldrb r3, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r0
- strb r1, [r2]
- bx lr
- .align 2, 0
-_08139F14: .4byte gSprites
-_08139F18: .4byte gMonSummaryScreen
-_08139F1C: .4byte 0x00003014
- thumb_func_end sub_8139EE4
-
- thumb_func_start sub_8139F20
-sub_8139F20: @ 8139F20
- push {r4,lr}
- ldr r4, _08139F54 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _08139F58 @ =0x00003290
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl SafeFreeMonIconPalette
- ldr r0, [r4]
- ldr r1, _08139F5C @ =0x00003014
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08139F60 @ =gSprites
- adds r0, r1
- bl DestroyMonIcon
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08139F54: .4byte gMonSummaryScreen
-_08139F58: .4byte 0x00003290
-_08139F5C: .4byte 0x00003014
-_08139F60: .4byte gSprites
- thumb_func_end sub_8139F20
-
- thumb_func_start sub_8139F64
-sub_8139F64: @ 8139F64
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x30]
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- movs r6, 0x80
- lsls r6, 4
- adds r0, r6, 0
- bl AllocZeroed
- str r0, [sp, 0x18]
- adds r0, r6, 0
- bl AllocZeroed
- add r5, sp, 0x18
- str r0, [r5, 0x4]
- movs r0, 0xC
- bl AllocZeroed
- ldr r4, _0813A0BC @ =gUnknown_203B148
- str r0, [r4]
- movs r0, 0xC
- bl AllocZeroed
- str r0, [r4, 0x4]
- movs r0, 0xC
- bl AllocZeroed
- str r0, [r4, 0x8]
- movs r0, 0xC
- bl AllocZeroed
- str r0, [r4, 0xC]
- ldr r0, _0813A0C0 @ =gUnknown_8463740
- ldr r1, [sp, 0x18]
- bl LZ77UnCompWram
- ldr r0, _0813A0C4 @ =gUnknown_846386C
- ldr r1, [r5, 0x4]
- bl LZ77UnCompWram
- movs r7, 0
- add r0, sp, 0x20
- mov r8, r0
- add r6, sp, 0x28
-_08139FCC:
- movs r4, 0x1
- ands r4, r7
- lsls r0, r4, 2
- add r0, sp
- adds r0, 0x18
- ldr r0, [r0]
- str r0, [sp, 0x20]
- ldr r1, [sp, 0x30]
- adds r5, r1, r7
- lsls r0, r5, 16
- movs r1, 0x80
- lsls r1, 4
- orrs r0, r1
- mov r1, r8
- str r0, [r1, 0x4]
- ldr r0, _0813A0C8 @ =gUnknown_8463720
- str r0, [sp, 0x28]
- ldr r1, _0813A0CC @ =0xffff0000
- ldr r0, [r6, 0x4]
- ands r0, r1
- mov r1, r9
- orrs r0, r1
- str r0, [r6, 0x4]
- mov r0, sp
- movs r1, 0
- mov r10, r1
- strh r5, [r0]
- mov r1, r9
- strh r1, [r0, 0x2]
- ldr r0, _0813A0D0 @ =gUnknown_846398C
- str r0, [sp, 0x4]
- ldr r0, _0813A0D4 @ =gUnknown_84639A4
- str r0, [sp, 0x8]
- mov r0, r10
- str r0, [sp, 0xC]
- ldr r0, _0813A0D8 @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, _0813A0DC @ =sub_813A124
- str r0, [sp, 0x14]
- mov r0, r8
- bl LoadSpriteSheet
- adds r0, r6, 0
- bl LoadSpritePalette
- lsls r1, r4, 6
- adds r1, 0x98
- ldr r0, _0813A0E0 @ =gUnknown_203B16D
- ldrb r0, [r0]
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 18
- movs r0, 0x88
- lsls r0, 14
- adds r2, r0
- asrs r2, 16
- mov r0, sp
- adds r3, r4, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0813A0BC @ =gUnknown_203B148
- lsls r1, r7, 2
- adds r3, r1, r2
- ldr r2, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0813A0E4 @ =gSprites
- adds r1, r0
- str r1, [r2]
- strh r7, [r2, 0x4]
- ldr r0, [r3]
- strh r5, [r0, 0x6]
- ldr r0, [r3]
- mov r1, r9
- strh r1, [r0, 0x8]
- ldr r0, [r3]
- ldr r0, [r0]
- adds r0, 0x43
- strb r7, [r0]
- cmp r7, 0x1
- bls _0813A07E
- ldr r0, [r3]
- ldr r0, [r0]
- movs r1, 0x1
- bl StartSpriteAnim
-_0813A07E:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bls _08139FCC
- movs r0, 0x1
- bl sub_813A0E8
- ldr r0, [sp, 0x18]
- cmp r0, 0
- beq _0813A09C
- bl Free
- mov r0, r10
- str r0, [sp, 0x18]
-_0813A09C:
- ldr r0, [sp, 0x1C]
- cmp r0, 0
- beq _0813A0AA
- bl Free
- mov r1, r10
- str r1, [sp, 0x1C]
-_0813A0AA:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A0BC: .4byte gUnknown_203B148
-_0813A0C0: .4byte gUnknown_8463740
-_0813A0C4: .4byte gUnknown_846386C
-_0813A0C8: .4byte gUnknown_8463720
-_0813A0CC: .4byte 0xffff0000
-_0813A0D0: .4byte gUnknown_846398C
-_0813A0D4: .4byte gUnknown_84639A4
-_0813A0D8: .4byte gDummySpriteAffineAnimTable
-_0813A0DC: .4byte sub_813A124
-_0813A0E0: .4byte gUnknown_203B16D
-_0813A0E4: .4byte gSprites
- thumb_func_end sub_8139F64
-
- thumb_func_start sub_813A0E8
-sub_813A0E8: @ 813A0E8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- ldr r6, _0813A120 @ =gUnknown_203B148
- movs r1, 0x1
- ands r0, r1
- lsls r4, r0, 2
- movs r5, 0x5
- negs r5, r5
-_0813A0FC:
- lsls r0, r3, 2
- adds r0, r6
- ldr r0, [r0]
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _0813A0FC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A120: .4byte gUnknown_203B148
- thumb_func_end sub_813A0E8
-
- thumb_func_start sub_813A124
-sub_813A124: @ 813A124
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- ldr r3, _0813A19C @ =gMonSummaryScreen
- ldr r4, _0813A1A0 @ =gUnknown_203B148
-_0813A132:
- ldr r0, [r3]
- ldr r1, _0813A1A4 @ =0x00003268
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0813A142
- cmp r6, 0x1
- bhi _0813A158
-_0813A142:
- lsls r0, r6, 2
- adds r0, r4
- ldr r0, [r0]
- ldr r2, [r0]
- ldr r0, _0813A1A8 @ =gUnknown_203B16D
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, 0x22
- strh r0, [r2, 0x22]
-_0813A158:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _0813A132
- ldr r1, [r3]
- ldr r2, _0813A1A4 @ =0x00003268
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0813A1AC
- subs r2, 0x54
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0813A20E
- ldr r4, _0813A1A0 @ =gUnknown_203B148
- ldr r0, [r4]
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r4, 0x4]
- ldr r0, [r0]
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- b _0813A20E
- .align 2, 0
-_0813A19C: .4byte gMonSummaryScreen
-_0813A1A0: .4byte gUnknown_203B148
-_0813A1A4: .4byte 0x00003268
-_0813A1A8: .4byte gUnknown_203B16D
-_0813A1AC:
- movs r6, 0
- ldr r0, _0813A1F0 @ =gUnknown_203B148
- mov r9, r0
- mov r8, r6
- movs r7, 0x4
- movs r1, 0x5
- negs r1, r1
- mov r12, r1
-_0813A1BC:
- lsls r0, r6, 2
- add r0, r9
- ldr r0, [r0]
- ldr r3, [r0]
- ldrh r0, [r3, 0x2E]
- adds r1, r0, 0x1
- strh r1, [r3, 0x2E]
- adds r4, r3, 0
- adds r4, 0x3E
- ldrb r2, [r4]
- movs r0, 0x4
- ands r0, r2
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _0813A1F4
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _0813A204
- mov r0, r12
- ands r0, r2
- strb r0, [r4]
- mov r2, r8
- strh r2, [r3, 0x2E]
- b _0813A204
- .align 2, 0
-_0813A1F0: .4byte gUnknown_203B148
-_0813A1F4:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _0813A204
- adds r0, r2, 0
- orrs r0, r7
- strb r0, [r4]
- strh r5, [r3, 0x2E]
-_0813A204:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _0813A1BC
-_0813A20E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_813A124
-
- thumb_func_start sub_813A21C
-sub_813A21C: @ 813A21C
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _0813A250 @ =gUnknown_203B148
-_0813A222:
- lsls r0, r5, 2
- adds r4, r0, r6
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _0813A232
- bl DestroySpriteAndFreeResources
-_0813A232:
- ldr r0, [r4]
- cmp r0, 0
- beq _0813A240
- bl Free
- movs r0, 0
- str r0, [r4]
-_0813A240:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _0813A222
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A250: .4byte gUnknown_203B148
- thumb_func_end sub_813A21C
-
- thumb_func_start sub_813A254
-sub_813A254: @ 813A254
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _0813A310 @ =gUnknown_203B158
- mov r8, r0
- movs r0, 0x8
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- movs r4, 0x80
- lsls r4, 3
- adds r0, r4, 0
- bl AllocZeroed
- adds r5, r0, 0
- ldr r0, _0813A314 @ =gUnknown_8E9BF48
- adds r1, r5, 0
- bl LZ77UnCompWram
- mov r1, r8
- ldr r0, [r1]
- cmp r0, 0
- beq _0813A2F0
- str r5, [sp, 0x18]
- add r0, sp, 0x18
- lsls r1, r7, 16
- orrs r1, r4
- str r1, [r0, 0x4]
- ldr r1, _0813A318 @ =gUnknown_8E9BF28
- str r1, [sp, 0x20]
- ldr r2, _0813A31C @ =0xffff0000
- add r4, sp, 0x20
- ldr r1, [r4, 0x4]
- ands r1, r2
- orrs r1, r6
- str r1, [r4, 0x4]
- mov r1, sp
- movs r2, 0
- strh r7, [r1]
- strh r6, [r1, 0x2]
- ldr r1, _0813A320 @ =gUnknown_84639AC
- str r1, [sp, 0x4]
- ldr r1, _0813A324 @ =gUnknown_84639F4
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r1, _0813A328 @ =gDummySpriteAffineAnimTable
- str r1, [sp, 0x10]
- ldr r1, _0813A32C @ =SpriteCallbackDummy
- str r1, [sp, 0x14]
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0813A330 @ =gSprites
- adds r1, r0
- str r1, [r2]
- strh r7, [r2, 0x4]
- strh r6, [r2, 0x6]
-_0813A2F0:
- movs r0, 0x1
- bl sub_813A3B8
- bl sub_813A35C
- cmp r5, 0
- beq _0813A304
- adds r0, r5, 0
- bl Free
-_0813A304:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A310: .4byte gUnknown_203B158
-_0813A314: .4byte gUnknown_8E9BF48
-_0813A318: .4byte gUnknown_8E9BF28
-_0813A31C: .4byte 0xffff0000
-_0813A320: .4byte gUnknown_84639AC
-_0813A324: .4byte gUnknown_84639F4
-_0813A328: .4byte gDummySpriteAffineAnimTable
-_0813A32C: .4byte SpriteCallbackDummy
-_0813A330: .4byte gSprites
- thumb_func_end sub_813A254
-
- thumb_func_start sub_813A334
-sub_813A334: @ 813A334
- push {r4,lr}
- ldr r4, _0813A358 @ =gUnknown_203B158
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _0813A344
- bl DestroySpriteAndFreeResources
-_0813A344:
- ldr r0, [r4]
- cmp r0, 0
- beq _0813A352
- bl Free
- movs r0, 0
- str r0, [r4]
-_0813A352:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A358: .4byte gUnknown_203B158
- thumb_func_end sub_813A334
-
- thumb_func_start sub_813A35C
-sub_813A35C: @ 813A35C
- push {r4,lr}
- ldr r4, _0813A38C @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813A390 @ =0x00003290
- adds r0, r1
- movs r1, 0x37
- bl GetMonData
- bl sub_8138C5C
- ldr r1, [r4]
- ldr r2, _0813A394 @ =0x0000326c
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- cmp r1, 0
- bne _0813A398
- movs r0, 0x1
- bl sub_813A3B8
- b _0813A3AE
- .align 2, 0
-_0813A38C: .4byte gMonSummaryScreen
-_0813A390: .4byte 0x00003290
-_0813A394: .4byte 0x0000326c
-_0813A398:
- ldr r0, _0813A3B4 @ =gUnknown_203B158
- ldr r0, [r0]
- ldr r0, [r0]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- movs r0, 0
- bl sub_813A3B8
-_0813A3AE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A3B4: .4byte gUnknown_203B158
- thumb_func_end sub_813A35C
-
- thumb_func_start sub_813A3B8
-sub_813A3B8: @ 813A3B8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0813A3EC @ =gMonSummaryScreen
- ldr r2, [r1]
- ldr r4, _0813A3F0 @ =0x0000326c
- adds r0, r2, r4
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0
- beq _0813A3DA
- movs r1, 0xC8
- lsls r1, 6
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0813A3F8
-_0813A3DA:
- ldr r3, _0813A3F4 @ =gUnknown_203B158
- ldr r0, [r3]
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- b _0813A416
- .align 2, 0
-_0813A3EC: .4byte gMonSummaryScreen
-_0813A3F0: .4byte 0x0000326c
-_0813A3F4: .4byte gUnknown_203B158
-_0813A3F8:
- ldr r4, _0813A438 @ =gUnknown_203B158
- ldr r0, [r4]
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r3, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- adds r3, r4, 0
-_0813A416:
- ldr r0, [r5]
- ldr r4, _0813A43C @ =0x00003214
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0813A440
- ldr r1, [r3]
- ldr r2, [r1]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- cmp r0, 0x2D
- beq _0813A456
- movs r0, 0x10
- strh r0, [r2, 0x20]
- ldr r1, [r1]
- movs r0, 0x2D
- b _0813A454
- .align 2, 0
-_0813A438: .4byte gUnknown_203B158
-_0813A43C: .4byte 0x00003214
-_0813A440:
- ldr r1, [r3]
- ldr r2, [r1]
- movs r4, 0x22
- ldrsh r0, [r2, r4]
- cmp r0, 0x26
- beq _0813A456
- movs r0, 0x10
- strh r0, [r2, 0x20]
- ldr r1, [r1]
- movs r0, 0x26
-_0813A454:
- strh r0, [r1, 0x22]
-_0813A456:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813A3B8
-
- thumb_func_start sub_813A45C
-sub_813A45C: @ 813A45C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x40
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r1, 16
- lsrs r7, r1, 16
- movs r0, 0
- str r0, [sp, 0x38]
- ldr r4, _0813A4BC @ =gUnknown_203B15C
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0xC0
- lsls r0, 1
- bl AllocZeroed
- mov r9, r0
- ldr r0, _0813A4C0 @ =gUnknown_8E9B4B8
- mov r1, r9
- bl LZ77UnCompWram
- ldr r5, _0813A4C4 @ =gMonSummaryScreen
- ldr r0, [r5]
- ldr r4, _0813A4C8 @ =0x00003290
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- adds r6, r0, 0
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsrs r0, r1, 2
- cmp r0, r6
- bls _0813A4CC
- movs r1, 0x2
- str r1, [sp, 0x38]
- b _0813A4D6
- .align 2, 0
-_0813A4BC: .4byte gUnknown_203B15C
-_0813A4C0: .4byte gUnknown_8E9B4B8
-_0813A4C4: .4byte gMonSummaryScreen
-_0813A4C8: .4byte 0x00003290
-_0813A4CC:
- lsrs r0, r1, 1
- cmp r0, r6
- bls _0813A4D6
- movs r2, 0x1
- str r2, [sp, 0x38]
-_0813A4D6:
- mov r3, r9
- cmp r3, 0
- beq _0813A540
- str r3, [sp, 0x18]
- movs r2, 0xC0
- lsls r2, 1
- add r0, sp, 0x18
- mov r6, r10
- lsls r1, r6, 16
- orrs r1, r2
- str r1, [r0, 0x4]
- ldr r3, _0813A600 @ =gUnknown_8463FFC
- ldr r1, [r3]
- str r1, [sp, 0x20]
- ldr r6, _0813A604 @ =0xffff0000
- add r1, sp, 0x20
- mov r8, r1
- ldr r1, [r1, 0x4]
- ands r1, r6
- orrs r1, r7
- mov r2, r8
- str r1, [r2, 0x4]
- ldr r1, [r3, 0x4]
- str r1, [sp, 0x28]
- adds r2, r7, 0x1
- lsls r2, 16
- lsrs r2, 16
- add r5, sp, 0x28
- ldr r1, [r5, 0x4]
- ands r1, r6
- orrs r1, r2
- str r1, [r5, 0x4]
- ldr r1, [r3, 0x8]
- str r1, [sp, 0x30]
- adds r2, r7, 0x2
- lsls r2, 16
- lsrs r2, 16
- add r4, sp, 0x30
- ldr r1, [r4, 0x4]
- ands r1, r6
- orrs r1, r2
- str r1, [r4, 0x4]
- bl LoadSpriteSheet
- mov r0, r8
- bl LoadSpritePalette
- adds r0, r5, 0
- bl LoadSpritePalette
- adds r0, r4, 0
- bl LoadSpritePalette
-_0813A540:
- movs r4, 0
- ldr r3, [sp, 0x38]
- adds r3, r7, r3
- str r3, [sp, 0x3C]
- mov r8, r4
- ldr r5, _0813A608 @ =gUnknown_203B15C
-_0813A54C:
- mov r0, sp
- mov r6, r10
- strh r6, [r0]
- ldrh r1, [r0, 0x3C]
- strh r1, [r0, 0x2]
- ldr r0, _0813A60C @ =gUnknown_8463A14
- str r0, [sp, 0x4]
- ldr r0, _0813A610 @ =gUnknown_8463A7C
- str r0, [sp, 0x8]
- mov r2, r8
- str r2, [sp, 0xC]
- ldr r0, _0813A614 @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, _0813A618 @ =SpriteCallbackDummy
- str r0, [sp, 0x14]
- ldr r1, [r5]
- lsls r0, r4, 1
- adds r1, 0x28
- adds r1, r0
- lsls r0, r4, 3
- adds r0, 0xAC
- strh r0, [r1]
- movs r3, 0
- ldrsh r1, [r1, r3]
- mov r0, sp
- movs r2, 0x24
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r5]
- lsls r3, r4, 2
- adds r2, r3
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0813A61C @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r6, 0x5
- negs r6, r6
- adds r2, r6, 0
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, r3
- ldr r2, [r0]
- ldrb r1, [r2, 0x5]
- subs r6, 0x8
- adds r0, r6, 0
- ands r1, r0
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r2, 0x5]
- ldr r0, [r5]
- mov r1, r10
- strh r1, [r0, 0x3C]
- strh r7, [r0, 0x3E]
- adds r0, r3
- ldr r0, [r0]
- movs r1, 0x8
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _0813A54C
- bl sub_813A620
- movs r0, 0x1
- bl sub_813A838
- mov r2, r9
- cmp r2, 0
- beq _0813A5F0
- mov r0, r9
- bl Free
-_0813A5F0:
- add sp, 0x40
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A600: .4byte gUnknown_8463FFC
-_0813A604: .4byte 0xffff0000
-_0813A608: .4byte gUnknown_203B15C
-_0813A60C: .4byte gUnknown_8463A14
-_0813A610: .4byte gUnknown_8463A7C
-_0813A614: .4byte gDummySpriteAffineAnimTable
-_0813A618: .4byte SpriteCallbackDummy
-_0813A61C: .4byte gSprites
- thumb_func_end sub_813A45C
-
- thumb_func_start sub_813A620
-sub_813A620: @ 813A620
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- mov r10, r0
- ldr r5, _0813A688 @ =gMonSummaryScreen
- ldr r1, [r5]
- movs r2, 0xC8
- lsls r2, 6
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0813A642
- b _0813A7EA
-_0813A642:
- ldr r4, _0813A68C @ =0x00003290
- adds r0, r1, r4
- movs r1, 0x39
- bl GetMonData
- mov r9, r0
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- movs r1, 0x5
- bl __udivsi3
- cmp r0, r9
- bcs _0813A666
- lsrs r0, r4, 1
-_0813A666:
- mov r3, r9
- lsls r0, r3, 16
- asrs r0, 16
- lsls r1, r4, 16
- asrs r1, 16
- bl GetHPBarLevel
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _0813A690
- cmp r0, 0x2
- bgt _0813A684
- cmp r0, 0x1
- beq _0813A694
-_0813A684:
- movs r6, 0
- b _0813A696
- .align 2, 0
-_0813A688: .4byte gMonSummaryScreen
-_0813A68C: .4byte 0x00003290
-_0813A690:
- movs r6, 0x1
- b _0813A696
-_0813A694:
- movs r6, 0x2
-_0813A696:
- movs r0, 0
- mov r8, r0
-_0813A69A:
- movs r0, 0x78
- bl IndexOfSpritePaletteTag
- ldr r5, _0813A6FC @ =gUnknown_203B15C
- ldr r1, [r5]
- mov r3, r8
- lsls r2, r3, 2
- adds r1, r2
- ldr r3, [r1]
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- lsls r0, 4
- ldrb r2, [r3, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x5]
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x8
- bls _0813A69A
- cmp r9, r4
- bne _0813A700
- movs r0, 0x2
- mov r8, r0
- cmp r0, 0x7
- bls _0813A6DA
- b _0813A7CA
-_0813A6DA:
- adds r4, r5, 0
-_0813A6DC:
- ldr r0, [r4]
- mov r2, r8
- lsls r1, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x8
- bl StartSpriteAnim
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x7
- bls _0813A6DC
- b _0813A7CA
- .align 2, 0
-_0813A6FC: .4byte gUnknown_203B15C
-_0813A700:
- lsls r0, r4, 2
- movs r1, 0x6
- bl __udivsi3
- adds r6, r0, 0
- movs r7, 0
- mov r3, r9
- lsls r0, r3, 2
- adds r4, r0, 0
- movs r5, 0
- b _0813A724
-_0813A716:
- subs r4, r6
- sbcs r5, r7
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_0813A724:
- cmp r5, r7
- bgt _0813A716
- cmp r5, r7
- bne _0813A730
- cmp r4, r6
- bhi _0813A716
-_0813A730:
- mov r0, r10
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r0, 0x2
- mov r8, r0
- lsrs r1, r4, 31
- str r1, [sp, 0x4]
- lsls r2, r5, 1
- str r2, [sp]
- cmp r8, r10
- bcs _0813A76E
- ldr r3, _0813A7A8 @ =gUnknown_203B15C
- mov r9, r3
-_0813A74E:
- mov r1, r9
- ldr r0, [r1]
- mov r2, r8
- lsls r1, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x8
- bl StartSpriteAnim
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r8, r10
- bcc _0813A74E
-_0813A76E:
- ldr r3, [sp, 0x4]
- ldr r0, [sp]
- orrs r3, r0
- lsls r2, r4, 1
- adds r2, r4
- adcs r3, r5
- lsrs r5, r2, 31
- lsls r4, r3, 1
- adds r1, r5, 0
- orrs r1, r4
- lsls r0, r2, 1
- adds r3, r7, 0
- adds r2, r6, 0
- bl __divdi3
- adds r2, r1, 0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r4, _0813A7A8 @ =gUnknown_203B15C
- ldr r0, [r4]
- mov r2, r10
- lsls r3, r2, 2
- adds r0, r3
- ldr r0, [r0]
- bl StartSpriteAnim
- mov r0, r10
- b _0813A7BE
- .align 2, 0
-_0813A7A8: .4byte gUnknown_203B15C
-_0813A7AC:
- ldr r0, [r4]
- mov r3, r8
- lsls r1, r3, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAnim
- mov r0, r8
-_0813A7BE:
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x7
- bls _0813A7AC
-_0813A7CA:
- ldr r4, _0813A7FC @ =gUnknown_203B15C
- ldr r0, [r4]
- ldr r0, [r0]
- movs r1, 0x9
- bl StartSpriteAnim
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- movs r1, 0xA
- bl StartSpriteAnim
- ldr r0, [r4]
- ldr r0, [r0, 0x20]
- movs r1, 0xB
- bl StartSpriteAnim
-_0813A7EA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A7FC: .4byte gUnknown_203B15C
- thumb_func_end sub_813A620
-
- thumb_func_start sub_813A800
-sub_813A800: @ 813A800
- push {r4,r5,lr}
- movs r4, 0
-_0813A804:
- ldr r5, _0813A834 @ =gUnknown_203B15C
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _0813A816
- bl DestroySpriteAndFreeResources
-_0813A816:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _0813A804
- ldr r0, [r5]
- cmp r0, 0
- beq _0813A82E
- bl Free
- movs r0, 0
- str r0, [r5]
-_0813A82E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A834: .4byte gUnknown_203B15C
- thumb_func_end sub_813A800
-
- thumb_func_start sub_813A838
-sub_813A838: @ 813A838
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- ldr r6, _0813A870 @ =gUnknown_203B15C
- movs r1, 0x1
- ands r0, r1
- lsls r4, r0, 2
- movs r5, 0x5
- negs r5, r5
-_0813A84C:
- ldr r0, [r6]
- lsls r1, r3, 2
- adds r0, r1
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x8
- bls _0813A84C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A870: .4byte gUnknown_203B15C
- thumb_func_end sub_813A838
-
- thumb_func_start sub_813A874
-sub_813A874: @ 813A874
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _0813A970 @ =gUnknown_203B160
- mov r8, r0
- movs r0, 0x48
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- movs r4, 0xC0
- lsls r4, 1
- adds r0, r4, 0
- bl AllocZeroed
- adds r5, r0, 0
- ldr r0, _0813A974 @ =gUnknown_8E9B3F0
- adds r1, r5, 0
- bl LZ77UnCompWram
- cmp r5, 0
- beq _0813A8D0
- str r5, [sp, 0x18]
- add r0, sp, 0x18
- lsls r1, r7, 16
- orrs r1, r4
- str r1, [r0, 0x4]
- ldr r1, _0813A978 @ =gUnknown_8E9B578
- str r1, [sp, 0x20]
- ldr r2, _0813A97C @ =0xffff0000
- add r4, sp, 0x20
- ldr r1, [r4, 0x4]
- ands r1, r2
- orrs r1, r6
- str r1, [r4, 0x4]
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
-_0813A8D0:
- movs r4, 0
- mov r9, r4
-_0813A8D4:
- mov r0, sp
- strh r7, [r0]
- strh r6, [r0, 0x2]
- ldr r0, _0813A980 @ =gUnknown_8463A14
- str r0, [sp, 0x4]
- ldr r0, _0813A984 @ =gUnknown_8463A7C
- str r0, [sp, 0x8]
- mov r3, r9
- str r3, [sp, 0xC]
- ldr r0, _0813A988 @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, _0813A98C @ =SpriteCallbackDummy
- str r0, [sp, 0x14]
- mov r0, r8
- ldr r1, [r0]
- lsls r0, r4, 1
- adds r1, 0x2C
- adds r1, r0
- lsls r0, r4, 3
- adds r0, 0x9C
- strh r0, [r1]
- movs r3, 0
- ldrsh r1, [r1, r3]
- mov r0, sp
- movs r2, 0x84
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r4, 2
- adds r2, r1
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0813A990 @ =gSprites
- adds r1, r0
- str r1, [r2]
- ldrb r2, [r1, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r2, r0
- movs r0, 0x8
- orrs r2, r0
- strb r2, [r1, 0x5]
- mov r1, r8
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x42
- strh r7, [r1]
- adds r0, 0x44
- strh r6, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xA
- bls _0813A8D4
- bl sub_813A994
- movs r0, 0x1
- bl sub_813AB70
- cmp r5, 0
- beq _0813A960
- adds r0, r5, 0
- bl Free
-_0813A960:
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813A970: .4byte gUnknown_203B160
-_0813A974: .4byte gUnknown_8E9B3F0
-_0813A978: .4byte gUnknown_8E9B578
-_0813A97C: .4byte 0xffff0000
-_0813A980: .4byte gUnknown_8463A14
-_0813A984: .4byte gUnknown_8463A7C
-_0813A988: .4byte gDummySpriteAffineAnimTable
-_0813A98C: .4byte SpriteCallbackDummy
-_0813A990: .4byte gSprites
- thumb_func_end sub_813A874
-
- thumb_func_start sub_813A994
-sub_813A994: @ 813A994
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r7, 0
- ldr r6, _0813AAD4 @ =gMonSummaryScreen
- ldr r1, [r6]
- movs r2, 0xC8
- lsls r2, 6
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0813A9B4
- b _0813AB24
-_0813A9B4:
- ldr r4, _0813AAD8 @ =0x00003290
- adds r0, r1, r4
- movs r1, 0x19
- bl GetMonData
- mov r8, r0
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0x38
- bl GetMonData
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x63
- bls _0813A9E2
- b _0813AAE8
-_0813A9E2:
- ldr r3, _0813AADC @ =gExperienceTables
- adds r1, r5, 0x1
- lsls r1, 2
- ldr r2, _0813AAE0 @ =gBaseStats
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r2, r0
- adds r1, r2
- adds r1, r3
- lsls r0, r5, 2
- adds r0, r2
- adds r0, r3
- ldr r1, [r1]
- ldr r0, [r0]
- subs r1, r0
- mov r10, r1
- mov r1, r8
- subs r1, r0
- mov r9, r1
- mov r2, r10
- lsls r0, r2, 2
- lsrs r0, 3
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r1, 2
- adds r4, r0, 0
- movs r5, 0
- ldr r1, [sp, 0x4]
- cmp r5, r1
- ble _0813AA3E
-_0813AA2A:
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- subs r4, r0
- sbcs r5, r1
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r5, r1
- bgt _0813AA2A
- ldr r1, [sp, 0x4]
-_0813AA3E:
- cmp r5, r1
- bne _0813AA48
- ldr r2, [sp]
- cmp r4, r2
- bhi _0813AA2A
-_0813AA48:
- adds r0, r7, 0x2
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0x2
- cmp r6, r7
- bcs _0813AA72
- ldr r0, _0813AAE4 @ =gUnknown_203B160
- mov r8, r0
-_0813AA58:
- mov r1, r8
- ldr r0, [r1]
- lsls r1, r6, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x8
- bl StartSpriteAnim
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r7
- bcc _0813AA58
-_0813AA72:
- cmp r7, 0x9
- bls _0813AA86
- cmp r10, r9
- beq _0813AB24
- ldr r0, _0813AAE4 @ =gUnknown_203B160
- ldr r0, [r0]
- ldr r0, [r0, 0x24]
- movs r1, 0x7
- bl StartSpriteAnim
-_0813AA86:
- lsrs r3, r4, 29
- lsls r2, r5, 3
- adds r1, r3, 0
- orrs r1, r2
- lsls r0, r4, 3
- ldr r2, [sp]
- ldr r3, [sp, 0x4]
- bl __divdi3
- adds r2, r1, 0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r4, _0813AAE4 @ =gUnknown_203B160
- ldr r0, [r4]
- lsls r3, r7, 2
- adds r0, r3
- ldr r0, [r0]
- bl StartSpriteAnim
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x9
- bhi _0813AB04
-_0813AAB8:
- ldr r0, [r4]
- lsls r1, r6, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x9
- bls _0813AAB8
- b _0813AB04
- .align 2, 0
-_0813AAD4: .4byte gMonSummaryScreen
-_0813AAD8: .4byte 0x00003290
-_0813AADC: .4byte gExperienceTables
-_0813AAE0: .4byte gBaseStats
-_0813AAE4: .4byte gUnknown_203B160
-_0813AAE8:
- movs r6, 0x2
- ldr r4, _0813AB34 @ =gUnknown_203B160
-_0813AAEC:
- ldr r0, [r4]
- lsls r1, r6, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x9
- bls _0813AAEC
-_0813AB04:
- ldr r4, _0813AB34 @ =gUnknown_203B160
- ldr r0, [r4]
- ldr r0, [r0]
- movs r1, 0x9
- bl StartSpriteAnim
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- movs r1, 0xA
- bl StartSpriteAnim
- ldr r0, [r4]
- ldr r0, [r0, 0x28]
- movs r1, 0xB
- bl StartSpriteAnim
-_0813AB24:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813AB34: .4byte gUnknown_203B160
- thumb_func_end sub_813A994
-
- thumb_func_start sub_813AB38
-sub_813AB38: @ 813AB38
- push {r4,r5,lr}
- movs r4, 0
-_0813AB3C:
- ldr r5, _0813AB6C @ =gUnknown_203B160
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _0813AB4E
- bl DestroySpriteAndFreeResources
-_0813AB4E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xA
- bls _0813AB3C
- ldr r0, [r5]
- cmp r0, 0
- beq _0813AB66
- bl Free
- movs r0, 0
- str r0, [r5]
-_0813AB66:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813AB6C: .4byte gUnknown_203B160
- thumb_func_end sub_813AB38
-
- thumb_func_start sub_813AB70
-sub_813AB70: @ 813AB70
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- ldr r6, _0813ABA8 @ =gUnknown_203B160
- movs r1, 0x1
- ands r0, r1
- lsls r4, r0, 2
- movs r5, 0x5
- negs r5, r5
-_0813AB84:
- ldr r0, [r6]
- lsls r1, r3, 2
- adds r0, r1
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xA
- bls _0813AB84
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813ABA8: .4byte gUnknown_203B160
- thumb_func_end sub_813AB70
-
- thumb_func_start sub_813ABAC
-sub_813ABAC: @ 813ABAC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _0813AC68 @ =gUnknown_203B164
- mov r8, r0
- movs r0, 0x8
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- movs r0, 0x20
- bl AllocZeroed
- adds r5, r0, 0
- ldr r0, _0813AC6C @ =gUnknown_8463B20
- adds r1, r5, 0
- bl LZ77UnCompWram
- mov r1, r8
- ldr r0, [r1]
- cmp r0, 0
- beq _0813AC46
- str r5, [sp, 0x18]
- movs r2, 0x20
- add r0, sp, 0x18
- lsls r1, r7, 16
- orrs r1, r2
- str r1, [r0, 0x4]
- ldr r1, _0813AC70 @ =gUnknown_8463B00
- str r1, [sp, 0x20]
- ldr r2, _0813AC74 @ =0xffff0000
- add r4, sp, 0x20
- ldr r1, [r4, 0x4]
- ands r1, r2
- orrs r1, r6
- str r1, [r4, 0x4]
- mov r1, sp
- movs r2, 0
- strh r7, [r1]
- strh r6, [r1, 0x2]
- ldr r1, _0813AC78 @ =gUnknown_8463AEC
- str r1, [sp, 0x4]
- ldr r1, _0813AC7C @ =gUnknown_8463AFC
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r1, _0813AC80 @ =gDummySpriteAffineAnimTable
- str r1, [sp, 0x10]
- ldr r1, _0813AC84 @ =SpriteCallbackDummy
- str r1, [sp, 0x14]
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0x72
- movs r2, 0x5C
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0813AC88 @ =gSprites
- adds r1, r0
- str r1, [r2]
- strh r7, [r2, 0x4]
- strh r6, [r2, 0x6]
-_0813AC46:
- movs r0, 0x1
- bl sub_813ACF8
- bl sub_813ACB4
- cmp r5, 0
- beq _0813AC5A
- adds r0, r5, 0
- bl Free
-_0813AC5A:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813AC68: .4byte gUnknown_203B164
-_0813AC6C: .4byte gUnknown_8463B20
-_0813AC70: .4byte gUnknown_8463B00
-_0813AC74: .4byte 0xffff0000
-_0813AC78: .4byte gUnknown_8463AEC
-_0813AC7C: .4byte gUnknown_8463AFC
-_0813AC80: .4byte gDummySpriteAffineAnimTable
-_0813AC84: .4byte SpriteCallbackDummy
-_0813AC88: .4byte gSprites
- thumb_func_end sub_813ABAC
-
- thumb_func_start sub_813AC8C
-sub_813AC8C: @ 813AC8C
- push {r4,lr}
- ldr r4, _0813ACB0 @ =gUnknown_203B164
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _0813AC9C
- bl DestroySpriteAndFreeResources
-_0813AC9C:
- ldr r0, [r4]
- cmp r0, 0
- beq _0813ACAA
- bl Free
- movs r0, 0
- str r0, [r4]
-_0813ACAA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813ACB0: .4byte gUnknown_203B164
- thumb_func_end sub_813AC8C
-
- thumb_func_start sub_813ACB4
-sub_813ACB4: @ 813ACB4
- push {r4,lr}
- ldr r4, _0813ACE4 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813ACE8 @ =0x00003290
- adds r0, r1
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _0813ACEC
- ldr r0, [r4]
- ldr r1, _0813ACE8 @ =0x00003290
- adds r0, r1
- movs r1, 0
- bl CheckPartyHasHadPokerus
- lsls r0, 24
- cmp r0, 0
- beq _0813ACEC
- movs r0, 0
- bl sub_813ACF8
- b _0813ACF2
- .align 2, 0
-_0813ACE4: .4byte gMonSummaryScreen
-_0813ACE8: .4byte 0x00003290
-_0813ACEC:
- movs r0, 0x1
- bl sub_813ACF8
-_0813ACF2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_813ACB4
-
- thumb_func_start sub_813ACF8
-sub_813ACF8: @ 813ACF8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0813AD44 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813AD48 @ =0x00003290
- adds r0, r1
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _0813AD50
- ldr r0, [r4]
- ldr r1, _0813AD48 @ =0x00003290
- adds r0, r1
- movs r1, 0
- bl CheckPartyHasHadPokerus
- lsls r0, 24
- cmp r0, 0
- beq _0813AD50
- ldr r0, _0813AD4C @ =gUnknown_203B164
- ldr r0, [r0]
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- b _0813ADA2
- .align 2, 0
-_0813AD44: .4byte gMonSummaryScreen
-_0813AD48: .4byte 0x00003290
-_0813AD4C: .4byte gUnknown_203B164
-_0813AD50:
- ldr r2, _0813AD88 @ =gUnknown_203B164
- ldr r0, [r2]
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- ldr r0, _0813AD8C @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _0813AD90 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0813AD94
- ldr r0, [r2]
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- orrs r0, r3
- strb r0, [r1]
- ldr r2, [r2]
- ldr r1, [r2]
- movs r0, 0x10
- strh r0, [r1, 0x20]
- ldr r1, [r2]
- movs r0, 0x2C
- b _0813ADA0
- .align 2, 0
-_0813AD88: .4byte gUnknown_203B164
-_0813AD8C: .4byte gMonSummaryScreen
-_0813AD90: .4byte 0x00003214
-_0813AD94:
- ldr r2, [r2]
- ldr r1, [r2]
- movs r0, 0x72
- strh r0, [r1, 0x20]
- ldr r1, [r2]
- movs r0, 0x5C
-_0813ADA0:
- strh r0, [r1, 0x22]
-_0813ADA2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813ACF8
-
- thumb_func_start sub_813ADA8
-sub_813ADA8: @ 813ADA8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _0813AE64 @ =gUnknown_203B168
- mov r8, r0
- movs r0, 0x8
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- movs r0, 0x40
- bl AllocZeroed
- adds r5, r0, 0
- ldr r0, _0813AE68 @ =gUnknown_8463B64
- adds r1, r5, 0
- bl LZ77UnCompWram
- mov r1, r8
- ldr r0, [r1]
- cmp r0, 0
- beq _0813AE42
- str r5, [sp, 0x18]
- movs r2, 0x40
- add r0, sp, 0x18
- lsls r1, r7, 16
- orrs r1, r2
- str r1, [r0, 0x4]
- ldr r1, _0813AE6C @ =gUnknown_8463B44
- str r1, [sp, 0x20]
- ldr r2, _0813AE70 @ =0xffff0000
- add r4, sp, 0x20
- ldr r1, [r4, 0x4]
- ands r1, r2
- orrs r1, r6
- str r1, [r4, 0x4]
- mov r1, sp
- movs r2, 0
- strh r7, [r1]
- strh r6, [r1, 0x2]
- ldr r1, _0813AE74 @ =gUnknown_8463B30
- str r1, [sp, 0x4]
- ldr r1, _0813AE78 @ =gUnknown_8463B40
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r1, _0813AE7C @ =gDummySpriteAffineAnimTable
- str r1, [sp, 0x10]
- ldr r1, _0813AE80 @ =SpriteCallbackDummy
- str r1, [sp, 0x14]
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0x6A
- movs r2, 0x28
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0813AE84 @ =gSprites
- adds r1, r0
- str r1, [r2]
- strh r7, [r2, 0x4]
- strh r6, [r2, 0x6]
-_0813AE42:
- movs r0, 0x1
- bl sub_813AEB0
- bl sub_813AF50
- cmp r5, 0
- beq _0813AE56
- adds r0, r5, 0
- bl Free
-_0813AE56:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813AE64: .4byte gUnknown_203B168
-_0813AE68: .4byte gUnknown_8463B64
-_0813AE6C: .4byte gUnknown_8463B44
-_0813AE70: .4byte 0xffff0000
-_0813AE74: .4byte gUnknown_8463B30
-_0813AE78: .4byte gUnknown_8463B40
-_0813AE7C: .4byte gDummySpriteAffineAnimTable
-_0813AE80: .4byte SpriteCallbackDummy
-_0813AE84: .4byte gSprites
- thumb_func_end sub_813ADA8
-
- thumb_func_start sub_813AE88
-sub_813AE88: @ 813AE88
- push {r4,lr}
- ldr r4, _0813AEAC @ =gUnknown_203B168
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _0813AE98
- bl DestroySpriteAndFreeResources
-_0813AE98:
- ldr r0, [r4]
- cmp r0, 0
- beq _0813AEA6
- bl Free
- movs r0, 0
- str r0, [r4]
-_0813AEA6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813AEAC: .4byte gUnknown_203B168
- thumb_func_end sub_813AE88
-
- thumb_func_start sub_813AEB0
-sub_813AEB0: @ 813AEB0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0813AEF8 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813AEFC @ =0x00003290
- adds r0, r1
- bl IsMonShiny
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813AF04
- ldr r0, [r4]
- movs r1, 0xC8
- lsls r1, 6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813AF04
- ldr r4, _0813AF00 @ =gUnknown_203B168
- ldr r0, [r4]
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- adds r3, r4, 0
- b _0813AF14
- .align 2, 0
-_0813AEF8: .4byte gMonSummaryScreen
-_0813AEFC: .4byte 0x00003290
-_0813AF00: .4byte gUnknown_203B168
-_0813AF04:
- ldr r3, _0813AF30 @ =gUnknown_203B168
- ldr r0, [r3]
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
-_0813AF14:
- ldr r0, _0813AF34 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _0813AF38 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0813AF3C
- ldr r2, [r3]
- ldr r1, [r2]
- movs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r1, [r2]
- movs r0, 0x18
- b _0813AF48
- .align 2, 0
-_0813AF30: .4byte gUnknown_203B168
-_0813AF34: .4byte gMonSummaryScreen
-_0813AF38: .4byte 0x00003214
-_0813AF3C:
- ldr r2, [r3]
- ldr r1, [r2]
- movs r0, 0x6A
- strh r0, [r1, 0x20]
- ldr r1, [r2]
- movs r0, 0x28
-_0813AF48:
- strh r0, [r1, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813AEB0
-
- thumb_func_start sub_813AF50
-sub_813AF50: @ 813AF50
- push {r4,lr}
- ldr r4, _0813AF7C @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813AF80 @ =0x00003290
- adds r0, r1
- bl IsMonShiny
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813AF84
- ldr r0, [r4]
- movs r1, 0xC8
- lsls r1, 6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813AF84
- movs r0, 0
- bl sub_813AEB0
- b _0813AF8A
- .align 2, 0
-_0813AF7C: .4byte gMonSummaryScreen
-_0813AF80: .4byte 0x00003290
-_0813AF84:
- movs r0, 0x1
- bl sub_813AEB0
-_0813AF8A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_813AF50
-
- thumb_func_start sub_813AF90
-sub_813AF90: @ 813AF90
- push {lr}
- bl sub_813A21C
- bl sub_813A800
- bl sub_813AB38
- bl sub_8139C80
- bl sub_8139F20
- bl sub_8139D90
- bl sub_813B068
- bl sub_813A334
- bl sub_813AC8C
- bl sub_813AE88
- bl ResetSpriteData
- pop {r0}
- bx r0
- thumb_func_end sub_813AF90
-
- thumb_func_start sub_813AFC4
-sub_813AFC4: @ 813AFC4
- push {lr}
- bl sub_8139CB0
- movs r0, 0
- bl sub_8139D54
- bl sub_8139DBC
- bl sub_813995C
- movs r0, 0
- bl sub_8139C44
- bl sub_813A620
- bl sub_813A994
- bl sub_813B0E4
- bl sub_813A35C
- bl sub_813ACB4
- bl sub_813AF50
- pop {r0}
- bx r0
- thumb_func_end sub_813AFC4
-
- thumb_func_start sub_813AFFC
-sub_813AFFC: @ 813AFFC
- push {r4-r6,lr}
- ldr r5, _0813B058 @ =gMonSummaryScreen
- ldr r0, [r5]
- ldr r1, _0813B05C @ =0x00003290
- adds r0, r1
- movs r1, 0x8
- bl GetMonData
- adds r6, r0, 0
- ldr r0, [r5]
- ldr r4, _0813B060 @ =0x000032fc
- adds r0, r4
- ldr r0, [r0]
- bl DestroySpriteAndFreeResources
- ldr r2, _0813B064 @ =gUnknown_84636E0
- movs r0, 0x8C
- movs r1, 0x8C
- bl CreateMonMarkingSprite_SelectCombo
- adds r2, r0, 0
- ldr r0, [r5]
- adds r0, r4
- str r2, [r0]
- cmp r2, 0
- beq _0813B04A
- lsls r1, r6, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
- ldr r0, [r5]
- adds r0, r4
- ldr r2, [r0]
- movs r1, 0x14
- strh r1, [r2, 0x20]
- ldr r1, [r0]
- movs r0, 0x5B
- strh r0, [r1, 0x22]
-_0813B04A:
- movs r0, 0x1
- bl sub_813B084
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813B058: .4byte gMonSummaryScreen
-_0813B05C: .4byte 0x00003290
-_0813B060: .4byte 0x000032fc
-_0813B064: .4byte gUnknown_84636E0
- thumb_func_end sub_813AFFC
-
- thumb_func_start sub_813B068
-sub_813B068: @ 813B068
- push {lr}
- ldr r0, _0813B07C @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _0813B080 @ =0x000032fc
- adds r0, r1
- ldr r0, [r0]
- bl DestroySpriteAndFreeResources
- pop {r0}
- bx r0
- .align 2, 0
-_0813B07C: .4byte gMonSummaryScreen
-_0813B080: .4byte 0x000032fc
- thumb_func_end sub_813B068
-
- thumb_func_start sub_813B084
-sub_813B084: @ 813B084
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0813B0B0 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813B0B4 @ =0x00003290
- adds r0, r1
- movs r1, 0x8
- bl GetMonData
- cmp r0, 0
- bne _0813B0BC
- ldr r0, [r4]
- ldr r1, _0813B0B8 @ =0x000032fc
- adds r0, r1
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- b _0813B0DA
- .align 2, 0
-_0813B0B0: .4byte gMonSummaryScreen
-_0813B0B4: .4byte 0x00003290
-_0813B0B8: .4byte 0x000032fc
-_0813B0BC:
- ldr r0, [r4]
- ldr r1, _0813B0E0 @ =0x000032fc
- adds r0, r1
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_0813B0DA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813B0E0: .4byte 0x000032fc
- thumb_func_end sub_813B084
-
- thumb_func_start sub_813B0E4
-sub_813B0E4: @ 813B0E4
- push {r4,lr}
- ldr r4, _0813B114 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813B118 @ =0x00003290
- adds r0, r1
- movs r1, 0x8
- bl GetMonData
- adds r1, r0, 0
- ldr r0, [r4]
- ldr r2, _0813B11C @ =0x000032fc
- adds r0, r2
- ldr r0, [r0]
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- movs r0, 0
- bl sub_813B084
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813B114: .4byte gMonSummaryScreen
-_0813B118: .4byte 0x00003290
-_0813B11C: .4byte 0x000032fc
- thumb_func_end sub_813B0E4
-
- thumb_func_start sub_813B120
-sub_813B120: @ 813B120
- push {r4-r6,lr}
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r1, _0813B154 @ =gMonSummaryScreen
- ldr r2, [r1]
- ldr r3, _0813B158 @ =0x0000321c
- adds r0, r2, r3
- ldrb r3, [r0]
- adds r6, r1, 0
- cmp r3, 0x1
- bne _0813B198
- ldr r1, _0813B15C @ =0x00003214
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0813B160
- lsls r1, r5, 24
- asrs r1, 24
- movs r5, 0x2
- eors r1, r3
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- ands r5, r0
- b _0813B16C
- .align 2, 0
-_0813B154: .4byte gMonSummaryScreen
-_0813B158: .4byte 0x0000321c
-_0813B15C: .4byte 0x00003214
-_0813B160:
- lsls r0, r5, 24
- asrs r0, 24
- movs r5, 0x3
- cmp r0, 0x1
- bne _0813B16C
- movs r5, 0x1
-_0813B16C:
- ldr r0, [r6]
- ldr r2, _0813B190 @ =0x000032f4
- adds r0, r2
- ldr r4, [r0]
- bl GetLastViewedMonIndex
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, [r6]
- ldr r3, _0813B194 @ =0x00003210
- adds r0, r3
- ldrb r2, [r0]
- adds r3, r5, 0
- adds r0, r4, 0
- bl SeekToNextMonInBox
- b _0813B1CC
- .align 2, 0
-_0813B190: .4byte 0x000032f4
-_0813B194: .4byte 0x00003210
-_0813B198:
- bl IsUpdateLinkStateCBActive
- cmp r0, 0
- bne _0813B1C4
- ldr r0, _0813B1C0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0813B1C4
- bl IsMultiBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813B1C4
- lsls r0, r5, 24
- asrs r0, 24
- bl sub_813B38C
- b _0813B1CC
- .align 2, 0
-_0813B1C0: .4byte gReceivedRemoteLinkPlayers
-_0813B1C4:
- lsls r0, r5, 24
- asrs r0, 24
- bl sub_813B20C
-_0813B1CC:
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0813B1F4
- ldr r0, _0813B1FC @ =gLastViewedMonIndex
- strb r2, [r0]
- ldr r0, _0813B200 @ =sub_813B3F0
- movs r1, 0
- bl CreateTask
- ldr r0, _0813B204 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _0813B208 @ =0x0000328c
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_0813B1F4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813B1FC: .4byte gLastViewedMonIndex
-_0813B200: .4byte sub_813B3F0
-_0813B204: .4byte gMonSummaryScreen
-_0813B208: .4byte 0x0000328c
- thumb_func_end sub_813B120
-
thumb_func_start sub_813B20C
sub_813B20C: @ 813B20C
push {r4-r7,lr}
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index e2eebc62b..b24f4e785 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -30,5 +30,7 @@ u8 GetMonIconPaletteIndexFromSpecies(u16 species);
u16 GetIconSpecies(u16 species, u32 personality);
void LoadMonIconPalettesAt(u16 offset);
u8 GetValidMonIconPalIndex(u16 species);
+void SafeLoadMonIconPalette(u16 species);
+void SafeFreeMonIconPalette(u16 species);
#endif // GUARD_POKEMON_ICON_H
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index b69fe7de4..0ce31b712 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -138,7 +138,7 @@ void SetBoxWallpaper(u8 boxId, u8 wallpaperId)
gPokemonStoragePtr->boxWallpapers[boxId] = wallpaperId;
}
-s16 SeekToNextMonInBox(struct BoxPokemon * boxMons, s8 currIndex, u8 maxIndex, u8 flags)
+s16 SeekToNextMonInBox(struct BoxPokemon * boxMons, s8 curIndex, u8 maxIndex, u8 flags)
{
// flags:
// bit 0: Allow eggs
@@ -152,7 +152,7 @@ s16 SeekToNextMonInBox(struct BoxPokemon * boxMons, s8 currIndex, u8 maxIndex, u
if (flags == 1 || flags == 3)
{
- for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
+ for (i = curIndex + adder; i >= 0 && i <= maxIndex; i += adder)
{
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE)
return i;
@@ -160,7 +160,7 @@ s16 SeekToNextMonInBox(struct BoxPokemon * boxMons, s8 currIndex, u8 maxIndex, u
}
else
{
- for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
+ for (i = curIndex + adder; i >= 0 && i <= maxIndex; i += adder)
{
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetBoxMonData(&boxMons[i], MON_DATA_IS_EGG))
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index a3015ca85..83fe5ffb0 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -30,6 +30,13 @@
#include "trainer_pokemon_sprites.h"
#include "battle_anim.h"
#include "pokeball.h"
+#include "pokemon_icon.h"
+#include "battle_interface.h"
+#include "mon_markings.h"
+#include "pokemon_storage_system.h"
+
+// needs conflicting header to match (curIndex is s8 in the function, but has to be defined as u8 here)
+extern s16 SeekToNextMonInBox(struct BoxPokemon * boxMons, u8 curIndex, u8 maxIndex, u8 flags);
extern void sub_8138B8C(struct Pokemon * mon);
void sub_8135C34(void);
@@ -123,8 +130,19 @@ extern void sub_81390B0(void);
extern void sub_81391EC(void);
extern void sub_8139328(struct Pokemon * mon);
extern void sub_8139AAC(u16 spriteId);
-
-struct PokemonSummaryScreenData {
+extern void sub_813A124(struct Sprite * sprite);
+extern void sub_813A35C(void);
+extern void sub_813A620(void);
+extern void sub_813A994(void);
+extern void sub_813ACB4(void);
+extern void sub_813AF50(void);
+extern void sub_813B068(void);
+extern void sub_813B0E4(void);
+extern s8 sub_813B20C(s8);
+extern s8 sub_813B38C(s8);
+
+struct PokemonSummaryScreenData
+{
u16 unk0[0x800];
u16 unk1000[0x800];
u16 unk2000[0x800];
@@ -142,7 +160,8 @@ struct PokemonSummaryScreenData {
bool32 isEnemyParty; /* 0x3024 */
- struct PokeSummary {
+ struct PokeSummary
+ {
u8 ALIGNED(4) unk3028[POKEMON_NAME_LENGTH];
u8 ALIGNED(4) unk3034[POKEMON_NAME_LENGTH + 1];
u8 ALIGNED(4) unk3040[12];
@@ -214,7 +233,8 @@ struct PokemonSummaryScreenData {
struct Pokemon currentMon;
- union {
+ union
+ {
struct Pokemon * mons;
struct BoxPokemon * boxMons;
} monList;
@@ -226,7 +246,8 @@ struct PokemonSummaryScreenData {
u8 ALIGNED(4) unk3304[3]; /* 0x3304 */
};
-struct Struct203B144 {
+struct Struct203B144
+{
u16 unk00;
u16 unk02;
u16 unk04;
@@ -243,30 +264,66 @@ struct Struct203B144 {
u16 unk26;
};
-struct Struct203B160 {
- struct Sprite * sprite00[11]; /* 0x00 */
+struct Struct203B160
+{
+ struct Sprite * sprites[11]; /* 0x00 */
u16 unk2C[11]; /* 0x2c */
u16 unk42; /* 0x42 */
u16 unk44; /* 0x44 */
};
-struct Struct203B15C {
- struct Sprite * sprite00[10]; /* 0x00 */
+struct Struct203B15C
+{
+ struct Sprite * sprites[10]; /* 0x00 */
u16 unk28[10]; /* 0x28 */
u16 unk3C; /* 0x3c */
u16 unk3E; /* 0x3e */
};
-struct Struct203B170 {
+struct Struct203B170
+{
u8 ALIGNED(4) unk00; /* 0x00 */
u8 ALIGNED(4) unk04; /* 0x04 */
u8 ALIGNED(4) unk08; /* 0x08 */
};
+struct Struct203B148
+{
+ struct Sprite * sprite; /* 0x00 */
+ u16 unk04; /* 0x04 */
+ u16 unk06; /* 0x06 */
+ u16 unk08; /* 0x08 */
+};
+
+struct Struct203B158
+{
+ struct Sprite * sprite; /* 0x00 */
+ u16 unk04; /* 0x04 */
+ u16 unk06; /* 0x06 */
+};
+
+struct Struct203B164
+{
+ struct Sprite * sprite; /* 0x00 */
+ u16 unk04; /* 0x04 */
+ u16 unk06; /* 0x06 */
+};
+
+struct Struct203B168
+{
+ struct Sprite * sprite; /* 0x00 */
+ u16 unk04; /* 0x04 */
+ u16 unk06; /* 0x06 */
+};
+
extern struct PokemonSummaryScreenData * gMonSummaryScreen;
extern struct Struct203B144 * gUnknown_203B144;
+extern struct Struct203B148 * gUnknown_203B148[4];
+extern struct Struct203B158 * gUnknown_203B158;
extern struct Struct203B15C * gUnknown_203B15C;
extern struct Struct203B160 * gUnknown_203B160;
+extern struct Struct203B164 * gUnknown_203B164;
+extern struct Struct203B168 * gUnknown_203B168;
extern u8 gUnknown_203B16D;
extern u8 gUnknown_203B16E;
extern struct Struct203B170 * gUnknown_203B170;
@@ -308,6 +365,40 @@ extern const s8 gUnknown_8463FD4[11];
extern const s8 gUnknown_8463FDF[11];
extern const s8 gUnknown_8463FEA[15];
+extern const u32 gUnknown_8463740[];
+extern const u32 gUnknown_846386C[];
+
+extern const u16 gUnknown_8463720[];
+extern const struct OamData gUnknown_846398C;
+extern const union AnimCmd * const gUnknown_84639A4[];
+
+extern const u32 gUnknown_8E9BF48[];
+extern const u16 gUnknown_8E9BF28[];
+
+extern const struct OamData gUnknown_84639AC;
+extern const union AnimCmd * const gUnknown_84639F4[];
+
+extern const u32 gUnknown_8E9B4B8[];
+extern const u16 * const gUnknown_8463FFC[];
+extern const struct OamData gUnknown_8463A14;
+extern const union AnimCmd * const gUnknown_8463A7C[];
+
+extern const u32 gUnknown_8E9B3F0[];
+extern const u16 gUnknown_8E9B578[];
+
+extern const u32 gUnknown_8463B20[];
+extern const u16 gUnknown_8463B00[];
+
+extern const struct OamData gUnknown_8463AEC;
+extern const union AnimCmd * const gUnknown_8463AFC[];
+
+extern const u32 gUnknown_8463B64[];
+extern const u16 gUnknown_8463B44[];
+extern const struct OamData gUnknown_8463B30;
+extern const union AnimCmd * const gUnknown_8463B40[];
+
+extern const u16 gUnknown_84636E0[];
+
#define FREE_AND_SET_NULL_IF_SET(ptr) \
{ \
if (ptr != NULL) \
@@ -876,12 +967,12 @@ void sub_813546C(void)
for (i = 0; i < 11; i++)
{
gUnknown_203B160->unk2C[i] = (8 * i) + 396;
- gUnknown_203B160->sprite00[i]->pos1.x = gUnknown_203B160->unk2C[i];
+ gUnknown_203B160->sprites[i]->pos1.x = gUnknown_203B160->unk2C[i];
if (i >= 9)
continue;
gUnknown_203B15C->unk28[i] = (8 * i) + 412;
- gUnknown_203B15C->sprite00[i]->pos1.x = gUnknown_203B15C->unk28[i];
+ gUnknown_203B15C->sprites[i]->pos1.x = gUnknown_203B15C->unk28[i];
}
}
@@ -891,11 +982,11 @@ void sub_81354C4(void)
for (i = 0; i < 11; i++)
{
gUnknown_203B160->unk2C[i] = (8 * i) + 156;
- gUnknown_203B160->sprite00[i]->pos1.x = gUnknown_203B160->unk2C[i];
+ gUnknown_203B160->sprites[i]->pos1.x = gUnknown_203B160->unk2C[i];
if (i >= 9)
continue;
gUnknown_203B15C->unk28[i] = (8 * i) + 172;
- gUnknown_203B15C->sprite00[i]->pos1.x = gUnknown_203B15C->unk28[i];
+ gUnknown_203B15C->sprites[i]->pos1.x = gUnknown_203B15C->unk28[i];
}
}
@@ -1151,17 +1242,17 @@ void sub_81358DC(u8 a0, u8 a1)
for (i = 0; i < 11; i++)
{
if (gMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && gMonSummaryScreen->unk3224 == 1)
- gUnknown_203B160->sprite00[i]->oam.priority = bg0Priority;
+ gUnknown_203B160->sprites[i]->oam.priority = bg0Priority;
else
- gUnknown_203B160->sprite00[i]->oam.priority = bg1Priority;
+ gUnknown_203B160->sprites[i]->oam.priority = bg1Priority;
if (i >= 9)
continue;
if (gMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && gMonSummaryScreen->unk3224 == 1)
- gUnknown_203B15C->sprite00[i]->oam.priority = bg0Priority;
+ gUnknown_203B15C->sprites[i]->oam.priority = bg0Priority;
else
- gUnknown_203B15C->sprite00[i]->oam.priority = bg1Priority;
+ gUnknown_203B15C->sprites[i]->oam.priority = bg1Priority;
}
SetGpuReg(REG_OFFSET_BG0CNT, (GetGpuReg(REG_OFFSET_BG0CNT) & 0xfffc) | bg0Priority);
@@ -2408,7 +2499,7 @@ void sub_8137F00(void)
if (gUnknown_203B160->unk2C[i] < 240)
{
gUnknown_203B160->unk2C[i] += 60;
- gUnknown_203B160->sprite00[i]->pos1.x = gUnknown_203B160->unk2C[i] + 60;
+ gUnknown_203B160->sprites[i]->pos1.x = gUnknown_203B160->unk2C[i] + 60;
}
if (i >= 9)
@@ -2417,7 +2508,7 @@ void sub_8137F00(void)
if (gUnknown_203B15C->unk28[i] < 240)
{
gUnknown_203B15C->unk28[i] += 60;
- gUnknown_203B15C->sprite00[i]->pos1.x = gUnknown_203B15C->unk28[i] + 60;
+ gUnknown_203B15C->sprites[i]->pos1.x = gUnknown_203B15C->unk28[i] + 60;
}
}
}
@@ -2435,7 +2526,7 @@ void sub_8137F68(void)
if (gUnknown_203B160->unk2C[i] < 156 + (8 * i))
gUnknown_203B160->unk2C[i] = 156 + (8 * i);
- gUnknown_203B160->sprite00[i]->pos1.x = gUnknown_203B160->unk2C[i];
+ gUnknown_203B160->sprites[i]->pos1.x = gUnknown_203B160->unk2C[i];
}
if (i >= 9)
@@ -2448,7 +2539,7 @@ void sub_8137F68(void)
if (gUnknown_203B15C->unk28[i] < 172 + (8 * i))
gUnknown_203B15C->unk28[i] = 172 + (8 * i);
- gUnknown_203B15C->sprite00[i]->pos1.x = gUnknown_203B15C->unk28[i];
+ gUnknown_203B15C->sprites[i]->pos1.x = gUnknown_203B15C->unk28[i];
}
}
}
@@ -3221,7 +3312,7 @@ void sub_81393D4(u8 taskId)
gMonSummaryScreen->unk3288 = 3;
- if (gMonSummaryScreen->unk3268 == 1)
+ if (gMonSummaryScreen->unk3268 == TRUE)
v0--;
for (i = gUnknown_203B16D; i < v0; i++)
@@ -3232,7 +3323,7 @@ void sub_81393D4(u8 taskId)
return;
}
- if (gMonSummaryScreen->unk3268 == 0)
+ if (!gMonSummaryScreen->unk3268)
{
PlaySE(SE_SELECT);
gUnknown_203B16D = i;
@@ -3508,7 +3599,7 @@ void sub_8139CB0(void)
u16 ballItemId;
u8 ballId;
- if (gMonSummaryScreen->isEgg == 0)
+ if (!gMonSummaryScreen->isEgg)
ballItemId = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_POKEBALL);
else
ballItemId = 0;
@@ -3522,3 +3613,833 @@ void sub_8139CB0(void)
sub_8139D54(1);
}
+
+void sub_8139D54(u8 invisible)
+{
+ gSprites[gMonSummaryScreen->unk300C].invisible = invisible;
+}
+
+void sub_8139D90(void)
+{
+ DestroySpriteAndFreeResources2(&gSprites[gMonSummaryScreen->unk300C]);
+}
+
+void sub_8139DBC(void)
+{
+ u16 species;
+ u32 personality;
+
+ species = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES2);
+ personality = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_PERSONALITY);
+
+ SafeLoadMonIconPalette(species);
+
+ if (gMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary)
+ {
+ if (gMonSummaryScreen->isEnemyParty == TRUE)
+ gMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0);
+ else
+ gMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1);
+ }
+ else
+ {
+ if (sub_804455C(3, gLastViewedMonIndex))
+ gMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0);
+ else
+ gMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1);
+ }
+
+ if (!IsPokeSpriteNotFlipped(species))
+ gSprites[gMonSummaryScreen->unk3014].hFlip = TRUE;
+ else
+ gSprites[gMonSummaryScreen->unk3014].hFlip = FALSE;
+
+ sub_8139EE4(1);
+}
+
+void sub_8139EE4(u8 invisible)
+{
+ gSprites[gMonSummaryScreen->unk3014].invisible = invisible;
+}
+
+void sub_8139F20(void)
+{
+ u16 species;
+ species = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES2);
+ SafeFreeMonIconPalette(species);
+ DestroyMonIcon(&gSprites[gMonSummaryScreen->unk3014]);
+}
+
+void sub_8139F64(u16 tileTag, u16 palTag)
+{
+ u8 i;
+ u8 spriteId;
+ void * gfxBufferPtrs[2];
+ gfxBufferPtrs[0] = AllocZeroed(0x20 * 64);
+ gfxBufferPtrs[1] = AllocZeroed(0x20 * 64);
+
+ gUnknown_203B148[0] = AllocZeroed(sizeof(struct Struct203B148));
+ gUnknown_203B148[1] = AllocZeroed(sizeof(struct Struct203B148));
+ gUnknown_203B148[2] = AllocZeroed(sizeof(struct Struct203B148));
+ gUnknown_203B148[3] = AllocZeroed(sizeof(struct Struct203B148));
+
+ LZ77UnCompWram(gUnknown_8463740, gfxBufferPtrs[0]);
+ LZ77UnCompWram(gUnknown_846386C, gfxBufferPtrs[1]);
+
+ for (i = 0; i < 4; i++)
+ {
+ struct SpriteSheet sheet = {
+ .data = gfxBufferPtrs[i % 2],
+ .size = 0x20 * 64,
+ .tag = tileTag + i
+ };
+
+ struct SpritePalette palette = {.data = gUnknown_8463720, .tag = palTag};
+ struct SpriteTemplate template = {
+ .tileTag = tileTag + i,
+ .paletteTag = palTag,
+ .oam = &gUnknown_846398C,
+ .anims = gUnknown_84639A4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813A124,
+ };
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+
+ spriteId = CreateSprite(&template, 64 * (i % 2) + 152, gUnknown_203B16D * 28 + 34, i % 2);
+ gUnknown_203B148[i]->sprite = &gSprites[spriteId];
+ gUnknown_203B148[i]->unk04 = i;
+ gUnknown_203B148[i]->unk06 = tileTag + i;
+ gUnknown_203B148[i]->unk08 = palTag;
+ gUnknown_203B148[i]->sprite->subpriority = i;
+
+ if (i > 1)
+ StartSpriteAnim(gUnknown_203B148[i]->sprite, 1);
+ }
+
+ sub_813A0E8(1);
+
+ FREE_AND_SET_NULL_IF_SET(gfxBufferPtrs[0]);
+ FREE_AND_SET_NULL_IF_SET(gfxBufferPtrs[1]);
+}
+
+void sub_813A0E8(u8 invisible)
+{
+ u8 i;
+ for (i = 0; i < 4; i++)
+ gUnknown_203B148[i]->sprite->invisible = invisible;
+}
+
+void sub_813A124(struct Sprite * sprite)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gMonSummaryScreen->unk3268 == TRUE && i > 1)
+ continue;
+
+ gUnknown_203B148[i]->sprite->pos1.y = gUnknown_203B16D * 28 + 34;
+ }
+
+ if (gMonSummaryScreen->unk3268 != TRUE)
+ {
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO)
+ {
+ gUnknown_203B148[0]->sprite->invisible = FALSE;
+ gUnknown_203B148[1]->sprite->invisible = FALSE;
+ }
+ return;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ sprite = gUnknown_203B148[i]->sprite;
+ sprite->data[0]++;
+
+ if (sprite->invisible)
+ {
+ if (sprite->data[0] > 60)
+ {
+ sprite->invisible = FALSE;
+ sprite->data[0] = 0;
+ }
+ }
+ else if (sprite->data[0] > 60)
+ {
+ sprite->invisible = TRUE;
+ sprite->data[0] = 0;
+ }
+ }
+}
+
+void sub_813A21C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_203B148[i]->sprite != NULL)
+ DestroySpriteAndFreeResources(gUnknown_203B148[i]->sprite);
+
+ FREE_AND_SET_NULL_IF_SET(gUnknown_203B148[i]);
+ }
+}
+
+void sub_813A254(u16 tileTag, u16 palTag)
+{
+ u16 spriteId;
+ void * gfxBufferPtr;
+
+ gUnknown_203B158 = AllocZeroed(sizeof(struct Struct203B158));
+ gfxBufferPtr = AllocZeroed(0x20 * 32);
+
+ LZ77UnCompWram(gUnknown_8E9BF48, gfxBufferPtr);
+
+ if (gUnknown_203B158 != NULL)
+ {
+ struct SpriteSheet sheet = {
+ .data = gfxBufferPtr,
+ .size = 0x20 * 32,
+ .tag = tileTag
+ };
+
+ struct SpritePalette palette = {.data = gUnknown_8E9BF28, .tag = palTag};
+ struct SpriteTemplate template = {
+ .tileTag = tileTag,
+ .paletteTag = palTag,
+ .oam = &gUnknown_84639AC,
+ .anims = gUnknown_84639F4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+
+ spriteId = CreateSprite(&template, 0, 0, 0);
+ gUnknown_203B158->sprite = &gSprites[spriteId];
+ gUnknown_203B158->unk04 = tileTag;
+ gUnknown_203B158->unk06 = palTag;
+ }
+
+ sub_813A3B8(1);
+ sub_813A35C();
+ FREE_AND_SET_NULL_IF_SET(gfxBufferPtr);
+}
+
+void sub_813A334(void)
+{
+ if (gUnknown_203B158->sprite != NULL)
+ DestroySpriteAndFreeResources(gUnknown_203B158->sprite);
+
+ FREE_AND_SET_NULL_IF_SET(gUnknown_203B158);
+}
+
+void sub_813A35C(void)
+{
+ gMonSummaryScreen->unk326C = sub_8138C5C(GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_STATUS));
+
+ if (gMonSummaryScreen->unk326C == AILMENT_NONE)
+ {
+ sub_813A3B8(1);
+ return;
+ }
+
+ StartSpriteAnim(gUnknown_203B158->sprite, gMonSummaryScreen->unk326C - 1);
+ sub_813A3B8(0);
+}
+
+void sub_813A3B8(u8 invisible)
+{
+ if (gMonSummaryScreen->unk326C == AILMENT_NONE || gMonSummaryScreen->isEgg)
+ gUnknown_203B158->sprite->invisible = TRUE;
+ else
+ gUnknown_203B158->sprite->invisible = invisible;
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO)
+ {
+ if (gUnknown_203B158->sprite->pos1.y != 45)
+ {
+ gUnknown_203B158->sprite->pos1.x = 16;
+ gUnknown_203B158->sprite->pos1.y = 45;
+ return;
+ }
+ }
+ else if (gUnknown_203B158->sprite->pos1.y != 38)
+ {
+ gUnknown_203B158->sprite->pos1.x = 16;
+ gUnknown_203B158->sprite->pos1.y = 38;
+ return;
+ }
+}
+
+void sub_813A45C(u16 tileTag, u16 palTag)
+{
+ u8 i;
+ u8 spriteId;
+ void * gfxBufferPtr;
+ u32 curHp;
+ u32 maxHp;
+ u8 hpBarPalTagOffset = 0;
+
+ gUnknown_203B15C = AllocZeroed(sizeof(struct Struct203B15C));
+ gfxBufferPtr = AllocZeroed(0x20 * 12);
+ LZ77UnCompWram(gUnknown_8E9B4B8, gfxBufferPtr);
+
+ curHp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_HP);
+ maxHp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MAX_HP);
+
+ if (maxHp / 4 > curHp)
+ hpBarPalTagOffset = 2;
+ else if (maxHp / 2 > curHp)
+ hpBarPalTagOffset = 1;
+
+ if (gfxBufferPtr != NULL)
+ {
+ struct SpriteSheet sheet = {
+ .data = gfxBufferPtr,
+ .size = 0x20 * 12,
+ .tag = tileTag
+ };
+
+ struct SpritePalette palette1 = {.data = gUnknown_8463FFC[0], .tag = palTag};
+ struct SpritePalette palette2 = {.data = gUnknown_8463FFC[1], .tag = palTag + 1};
+ struct SpritePalette palette3 = {.data = gUnknown_8463FFC[2], .tag = palTag + 2};
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette1);
+ LoadSpritePalette(&palette2);
+ LoadSpritePalette(&palette3);
+ }
+
+ for (i = 0; i < 9; i++)
+ {
+ struct SpriteTemplate template = {
+ .tileTag = tileTag,
+ .paletteTag = palTag + hpBarPalTagOffset,
+ .oam = &gUnknown_8463A14,
+ .anims = gUnknown_8463A7C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ gUnknown_203B15C->unk28[i] = i * 8 + 172;
+ spriteId = CreateSprite(&template, gUnknown_203B15C->unk28[i], 36, 0);
+ gUnknown_203B15C->sprites[i] = &gSprites[spriteId];
+ gUnknown_203B15C->sprites[i]->invisible = FALSE;
+ gUnknown_203B15C->sprites[i]->oam.priority = 2;
+ gUnknown_203B15C->unk3C = tileTag;
+ gUnknown_203B15C->unk3E = palTag;
+ StartSpriteAnim(gUnknown_203B15C->sprites[i], 8);
+ }
+
+ sub_813A620();
+ sub_813A838(1);
+
+ FREE_AND_SET_NULL_IF_SET(gfxBufferPtr);
+}
+
+void sub_813A620(void)
+{
+ u8 numWholeHpBarTiles = 0;
+ u8 i;
+ u8 animNum;
+ u8 two = 2;
+ u8 hpBarPalOffset = 0;
+ u32 curHp;
+ u32 maxHp;
+ s64 v0;
+ s64 v1;
+
+ if (gMonSummaryScreen->isEgg)
+ return;
+
+ curHp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_HP);
+ maxHp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MAX_HP);
+
+ if (maxHp / 5 >= curHp)
+ hpBarPalOffset = 2;
+ else if (maxHp / 2 >= curHp)
+ hpBarPalOffset = 1;
+
+ switch (GetHPBarLevel(curHp, maxHp))
+ {
+ case 3:
+ default:
+ hpBarPalOffset = 0;
+ break;
+ case 2:
+ hpBarPalOffset = 1;
+ break;
+ case 1:
+ hpBarPalOffset = 2;
+ break;
+ }
+
+ for (i = 0; i < 9; i++)
+ gUnknown_203B15C->sprites[i]->oam.paletteNum = IndexOfSpritePaletteTag(TAG_PSS_UNK_78) + hpBarPalOffset;
+
+ if (curHp == maxHp)
+ for (i = two; i < 8; i++)
+ StartSpriteAnim(gUnknown_203B15C->sprites[i], 8);
+
+ else
+ {
+ v0 = (maxHp << 2) / 6;
+ v1 = (curHp << 2);
+
+ while (TRUE)
+ {
+ if (v1 <= v0)
+ break;
+ v1 -= v0;
+ numWholeHpBarTiles++;
+ }
+
+ numWholeHpBarTiles += two;
+
+ for (i = two; i < numWholeHpBarTiles; i++)
+ StartSpriteAnim(gUnknown_203B15C->sprites[i], 8);
+
+ animNum = (v1 * 6) / v0;
+ StartSpriteAnim(gUnknown_203B15C->sprites[numWholeHpBarTiles], animNum);
+
+ for (i = numWholeHpBarTiles + 1; i < 8; i++)
+ StartSpriteAnim(gUnknown_203B15C->sprites[i], 0);
+ }
+
+ StartSpriteAnim(gUnknown_203B15C->sprites[0], 9);
+ StartSpriteAnim(gUnknown_203B15C->sprites[1], 10);
+ StartSpriteAnim(gUnknown_203B15C->sprites[8], 11);
+}
+
+void sub_813A800(void)
+{
+ u8 i;
+
+ for (i = 0; i < 9; i++)
+ if (gUnknown_203B15C->sprites[i] != NULL)
+ DestroySpriteAndFreeResources(gUnknown_203B15C->sprites[i]);
+
+ FREE_AND_SET_NULL_IF_SET(gUnknown_203B15C);
+}
+
+void sub_813A838(u8 invisible)
+{
+ u8 i;
+
+ for (i = 0; i < 9; i++)
+ gUnknown_203B15C->sprites[i]->invisible = invisible;
+}
+
+void sub_813A874(u16 tileTag, u16 palTag)
+{
+ u8 i;
+ u8 spriteId;
+ void * gfxBufferPtr;
+
+ gUnknown_203B160 = AllocZeroed(sizeof(struct Struct203B160));
+ gfxBufferPtr = AllocZeroed(0x20 * 12);
+
+ LZ77UnCompWram(gUnknown_8E9B3F0, gfxBufferPtr);
+ if (gfxBufferPtr != NULL)
+ {
+ struct SpriteSheet sheet = {
+ .data = gfxBufferPtr,
+ .size = 0x20 * 12,
+ .tag = tileTag
+ };
+
+ struct SpritePalette palette = {.data = gUnknown_8E9B578, .tag = palTag};
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+ }
+
+ for (i = 0; i < 11; i++)
+ {
+ struct SpriteTemplate template = {
+ .tileTag = tileTag,
+ .paletteTag = palTag,
+ .oam = &gUnknown_8463A14,
+ .anims = gUnknown_8463A7C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ gUnknown_203B160->unk2C[i] = i * 8 + 156;
+ spriteId = CreateSprite(&template, gUnknown_203B160->unk2C[i], 132, 0);
+ gUnknown_203B160->sprites[i] = &gSprites[spriteId];
+ gUnknown_203B160->sprites[i]->oam.priority = 2;
+ gUnknown_203B160->unk42 = tileTag;
+ gUnknown_203B160->unk44 = palTag;
+ }
+
+ sub_813A994();
+ sub_813AB70(1);
+
+ FREE_AND_SET_NULL_IF_SET(gfxBufferPtr);
+}
+
+void sub_813A994(void)
+{
+ u8 numWholeExpBarTiles = 0;
+ u8 i;
+ u8 level;
+ u32 exp;
+ u32 totalExpToNextLevel;
+ u32 curExpToNextLevel;
+ u16 species;
+ s64 v0;
+ s64 v1;
+ u8 animNum;
+ u8 two = 2;
+
+ if (gMonSummaryScreen->isEgg)
+ return;
+
+ exp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_EXP);
+ level = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_LEVEL);
+ species = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES);
+
+ if (level < 100)
+ {
+ totalExpToNextLevel = gExperienceTables[gBaseStats[species].growthRate][level + 1] - gExperienceTables[gBaseStats[species].growthRate][level];
+ curExpToNextLevel = exp - gExperienceTables[gBaseStats[species].growthRate][level];
+ v0 = ((totalExpToNextLevel << 2) / 8);
+ v1 = (curExpToNextLevel << 2);
+
+ while (TRUE)
+ {
+ if (v1 <= v0)
+ break;
+ v1 -= v0;
+ numWholeExpBarTiles++;
+ }
+
+ numWholeExpBarTiles += two;
+
+ for (i = two; i < numWholeExpBarTiles; i++)
+ StartSpriteAnim(gUnknown_203B160->sprites[i], 8);
+
+ if (numWholeExpBarTiles >= 10)
+ {
+ if (totalExpToNextLevel == curExpToNextLevel)
+ return;
+ else
+ StartSpriteAnim(gUnknown_203B160->sprites[9], 7);
+ }
+
+ animNum = (v1 * 8) / v0;
+ StartSpriteAnim(gUnknown_203B160->sprites[numWholeExpBarTiles], animNum);
+
+ for (i = numWholeExpBarTiles + 1; i < 10; i++)
+ StartSpriteAnim(gUnknown_203B160->sprites[i], 0);
+ }
+ else
+ for (i = two; i < 10; i++)
+ StartSpriteAnim(gUnknown_203B160->sprites[i], 0);
+
+ StartSpriteAnim(gUnknown_203B160->sprites[0], 9);
+ StartSpriteAnim(gUnknown_203B160->sprites[1], 10);
+ StartSpriteAnim(gUnknown_203B160->sprites[10], 11);
+}
+
+void sub_813AB38(void)
+{
+ u8 i;
+
+ for (i = 0; i < 11; i++)
+ if (gUnknown_203B160->sprites[i] != NULL)
+ DestroySpriteAndFreeResources(gUnknown_203B160->sprites[i]);
+
+ FREE_AND_SET_NULL_IF_SET(gUnknown_203B160);
+}
+
+void sub_813AB70(u8 invisible)
+{
+ u8 i;
+
+ for (i = 0; i < 11; i++)
+ gUnknown_203B160->sprites[i]->invisible = invisible;
+}
+
+void sub_813ABAC(u16 tileTag, u16 palTag)
+{
+ u16 spriteId;
+ void * gfxBufferPtr;
+
+ gUnknown_203B164 = AllocZeroed(sizeof(struct Struct203B164));
+ gfxBufferPtr = AllocZeroed(0x20 * 1);
+
+ LZ77UnCompWram(gUnknown_8463B20, gfxBufferPtr);
+
+ if (gUnknown_203B164 != NULL)
+ {
+ struct SpriteSheet sheet = {
+ .data = gfxBufferPtr,
+ .size = 0x20 * 1,
+ .tag = tileTag
+ };
+
+ struct SpritePalette palette = {.data = gUnknown_8463B00, .tag = palTag};
+ struct SpriteTemplate template = {
+ .tileTag = tileTag,
+ .paletteTag = palTag,
+ .oam = &gUnknown_8463AEC,
+ .anims = gUnknown_8463AFC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+
+ spriteId = CreateSprite(&template, 114, 92, 0);
+ gUnknown_203B164->sprite = &gSprites[spriteId];
+ gUnknown_203B164->unk04 = tileTag;
+ gUnknown_203B164->unk06 = palTag;
+ }
+
+ sub_813ACF8(1);
+ sub_813ACB4();
+
+ FREE_AND_SET_NULL_IF_SET(gfxBufferPtr);
+}
+
+void sub_813AC8C(void)
+{
+ if (gUnknown_203B164->sprite != NULL)
+ DestroySpriteAndFreeResources(gUnknown_203B164->sprite);
+
+ FREE_AND_SET_NULL_IF_SET(gUnknown_203B164);
+}
+
+void sub_813ACB4(void)
+{
+ if (!CheckPartyPokerus(&gMonSummaryScreen->currentMon, 0)
+ && CheckPartyHasHadPokerus(&gMonSummaryScreen->currentMon, 0))
+ sub_813ACF8(0);
+ else
+ sub_813ACF8(1);
+}
+
+void sub_813ACF8(u8 invisible)
+{
+ if (!CheckPartyPokerus(&gMonSummaryScreen->currentMon, 0)
+ && CheckPartyHasHadPokerus(&gMonSummaryScreen->currentMon, 0))
+ {
+ gUnknown_203B164->sprite->invisible = invisible;
+ return;
+ }
+ else
+ gUnknown_203B164->sprite->invisible = TRUE;
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO)
+ {
+ gUnknown_203B164->sprite->invisible = TRUE;
+ gUnknown_203B164->sprite->pos1.x = 16;
+ gUnknown_203B164->sprite->pos1.y = 44;
+ }
+ else
+ {
+ gUnknown_203B164->sprite->pos1.x = 114;
+ gUnknown_203B164->sprite->pos1.y = 92;
+ }
+}
+
+void sub_813ADA8(u16 tileTag, u16 palTag)
+{
+ u16 spriteId;
+ void * gfxBufferPtr;
+
+ gUnknown_203B168 = AllocZeroed(sizeof(struct Struct203B168));
+ gfxBufferPtr = AllocZeroed(0x20 * 2);
+
+ LZ77UnCompWram(gUnknown_8463B64, gfxBufferPtr);
+
+ if (gUnknown_203B168 != NULL)
+ {
+ struct SpriteSheet sheet = {
+ .data = gfxBufferPtr,
+ .size = 0x20 * 2,
+ .tag = tileTag
+ };
+
+ struct SpritePalette palette = {.data = gUnknown_8463B44, .tag = palTag};
+ struct SpriteTemplate template = {
+ .tileTag = tileTag,
+ .paletteTag = palTag,
+ .oam = &gUnknown_8463B30,
+ .anims = gUnknown_8463B40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+ spriteId = CreateSprite(&template, 106, 40, 0);
+ gUnknown_203B168->sprite = &gSprites[spriteId];
+ gUnknown_203B168->unk04 = tileTag;
+ gUnknown_203B168->unk06 = palTag;
+ }
+
+ sub_813AEB0(1);
+ sub_813AF50();
+
+ FREE_AND_SET_NULL_IF_SET(gfxBufferPtr);
+}
+
+void sub_813AE88(void)
+{
+ if (gUnknown_203B168->sprite != NULL)
+ DestroySpriteAndFreeResources(gUnknown_203B168->sprite);
+
+ FREE_AND_SET_NULL_IF_SET(gUnknown_203B168);
+}
+
+void sub_813AEB0(u8 invisible)
+{
+ if (IsMonShiny(&gMonSummaryScreen->currentMon) == TRUE
+ && !gMonSummaryScreen->isEgg)
+ gUnknown_203B168->sprite->invisible = invisible;
+ else
+ gUnknown_203B168->sprite->invisible = TRUE;
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO)
+ {
+ gUnknown_203B168->sprite->pos1.x = 8;
+ gUnknown_203B168->sprite->pos1.y = 24;
+ }
+ else
+ {
+ gUnknown_203B168->sprite->pos1.x = 106;
+ gUnknown_203B168->sprite->pos1.y = 40;
+ }
+}
+
+void sub_813AF50(void)
+{
+ if (IsMonShiny(&gMonSummaryScreen->currentMon) == TRUE && !gMonSummaryScreen->isEgg)
+ sub_813AEB0(0);
+ else
+ sub_813AEB0(1);
+}
+
+void sub_813AF90(void)
+{
+ sub_813A21C();
+ sub_813A800();
+ sub_813AB38();
+ sub_8139C80();
+ sub_8139F20();
+ sub_8139D90();
+ sub_813B068();
+ sub_813A334();
+ sub_813AC8C();
+ sub_813AE88();
+ ResetSpriteData();
+}
+
+void sub_813AFC4(void)
+{
+ sub_8139CB0();
+ sub_8139D54(0);
+ sub_8139DBC();
+ sub_813995C();
+ sub_8139C44(0);
+ sub_813A620();
+ sub_813A994();
+ sub_813B0E4();
+ sub_813A35C();
+ sub_813ACB4();
+ sub_813AF50();
+}
+
+void sub_813AFFC(void)
+{
+ u32 markings = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MARKINGS);
+
+ DestroySpriteAndFreeResources(gMonSummaryScreen->markingSprite);
+ gMonSummaryScreen->markingSprite = CreateMonMarkingSprite_SelectCombo(TAG_PSS_UNK_8C, TAG_PSS_UNK_8C, gUnknown_84636E0);
+
+ if (gMonSummaryScreen->markingSprite != NULL)
+ {
+ StartSpriteAnim(gMonSummaryScreen->markingSprite, markings);
+ gMonSummaryScreen->markingSprite->pos1.x = 20;
+ gMonSummaryScreen->markingSprite->pos1.y = 91;
+ }
+
+ sub_813B084(1);
+}
+
+void sub_813B068(void)
+{
+ DestroySpriteAndFreeResources(gMonSummaryScreen->markingSprite);
+}
+
+void sub_813B084(u8 invisible)
+{
+ u32 markings = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MARKINGS);
+
+ if (markings == 0)
+ gMonSummaryScreen->markingSprite->invisible = TRUE;
+ else
+ gMonSummaryScreen->markingSprite->invisible = invisible;
+}
+
+void sub_813B0E4(void)
+{
+ u32 markings = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MARKINGS);
+
+ StartSpriteAnim(gMonSummaryScreen->markingSprite, markings);
+ sub_813B084(0);
+}
+
+void sub_813B120(u8 taskId, s8 a1)
+{
+ s8 v0 = -1;
+
+ if (gMonSummaryScreen->isBoxMon == TRUE)
+ {
+ if (gMonSummaryScreen->curPageIndex != 0)
+ {
+ if (a1 == 1)
+ a1 = 0;
+ else
+ a1 = 2;
+ }
+ else
+ {
+ if (a1 == 1)
+ a1 = 1;
+ else
+ a1 = 3;
+ }
+
+ v0 = SeekToNextMonInBox(gMonSummaryScreen->monList.boxMons, GetLastViewedMonIndex(), gMonSummaryScreen->lastIndex, (u8)a1);
+ }
+ else
+ {
+ if (IsUpdateLinkStateCBActive() == FALSE
+ && gReceivedRemoteLinkPlayers == 1
+ && IsMultiBattle() == TRUE)
+ v0 = sub_813B38C(a1);
+ else
+ v0 = sub_813B20C(a1);
+ }
+
+ if (v0 == -1)
+ return;
+
+ gLastViewedMonIndex = v0;
+ CreateTask(sub_813B3F0, 0);
+ gMonSummaryScreen->unk328C = 0;
+}