summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-07-03 17:42:40 -0400
committerluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-07-03 17:42:40 -0400
commitf8247cdd793147a6f8d55971027558ad32fd4014 (patch)
treed260f933eb554097fa460bf89a0cc34b78c7742d
parent9453c154d70e22f806a057aef4584bed8ca7986a (diff)
pokemon_summary_screen.c, part 9.
-rw-r--r--asm/pokemon_summary_screen.s2971
-rw-r--r--include/pokemon_summary_screen.h4
-rw-r--r--include/strings.h6
-rw-r--r--src/pokemon_summary_screen.c994
4 files changed, 994 insertions, 2981 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 3288d63cf..310df5032 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,2977 +5,6 @@
.text
- thumb_func_start sub_8137BD0
-sub_8137BD0: @ 8137BD0
- push {lr}
- ldr r0, _08137BE8 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08137BEC @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08137BF0
- bl sub_8137C18
- b _08137BFC
- .align 2, 0
-_08137BE8: .4byte gMonSummaryScreen
-_08137BEC: .4byte 0x00003214
-_08137BF0:
- cmp r0, 0x1
- ble _08137BFC
- cmp r0, 0x3
- bgt _08137BFC
- bl sub_8137C90
-_08137BFC:
- ldr r0, _08137C10 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08137C14 @ =0x00003005
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- pop {r0}
- bx r0
- .align 2, 0
-_08137C10: .4byte gMonSummaryScreen
-_08137C14: .4byte 0x00003005
- thumb_func_end sub_8137BD0
-
- thumb_func_start sub_8137C18
-sub_8137C18: @ 8137C18
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- ldr r5, _08137C7C @ =gMonSummaryScreen
- ldr r0, [r5]
- ldr r4, _08137C80 @ =0x00003005
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, [r5]
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _08137C84 @ =gUnknown_8463FA4
- mov r8, r2
- str r2, [sp]
- movs r6, 0x1
- negs r6, r6
- str r6, [sp, 0x4]
- ldr r2, _08137C88 @ =0x000031bc
- adds r1, r2
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x42
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- ldr r1, [r5]
- adds r4, r1, r4
- ldrb r0, [r4]
- mov r2, r8
- str r2, [sp]
- str r6, [sp, 0x4]
- ldr r2, _08137C8C @ =0x000031cc
- adds r1, r2
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0xF
- bl AddTextPrinterParameterized3
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08137C7C: .4byte gMonSummaryScreen
-_08137C80: .4byte 0x00003005
-_08137C84: .4byte gUnknown_8463FA4
-_08137C88: .4byte 0x000031bc
-_08137C8C: .4byte 0x000031cc
- thumb_func_end sub_8137C18
-
- thumb_func_start sub_8137C90
-sub_8137C90: @ 8137C90
- push {r4,r5,lr}
- ldr r0, _08137D14 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08137D18 @ =0x00003005
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r4, 0
-_08137CA4:
- ldr r5, _08137D14 @ =gMonSummaryScreen
- ldr r1, [r5]
- lsls r2, r4, 1
- ldr r3, _08137D1C @ =0x00003258
- adds r0, r1, r3
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0
- beq _08137CDE
- ldr r3, _08137D18 @ =0x00003005
- adds r0, r1, r3
- ldrb r0, [r0]
- ldr r3, _08137D20 @ =0x0000324e
- adds r1, r3
- adds r1, r2
- ldrb r1, [r1]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- lsls r3, r4, 3
- subs r3, r4
- lsls r3, 18
- movs r2, 0xA0
- lsls r2, 11
- adds r3, r2
- lsrs r3, 16
- movs r2, 0x3
- bl BlitMoveInfoIcon
-_08137CDE:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08137CA4
- ldr r1, [r5]
- ldr r3, _08137D24 @ =0x00003208
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _08137D0E
- ldr r2, _08137D18 @ =0x00003005
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r3, 0x4E
- adds r1, r3
- ldrb r1, [r1]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x3
- movs r3, 0x75
- bl BlitMoveInfoIcon
-_08137D0E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08137D14: .4byte gMonSummaryScreen
-_08137D18: .4byte 0x00003005
-_08137D1C: .4byte 0x00003258
-_08137D20: .4byte 0x0000324e
-_08137D24: .4byte 0x00003208
- thumb_func_end sub_8137C90
-
- thumb_func_start sub_8137D28
-sub_8137D28: @ 8137D28
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _08137E16
- lsls r0, 2
- ldr r1, _08137D3C @ =_08137D40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08137D3C: .4byte _08137D40
- .align 2, 0
-_08137D40:
- .4byte _08137D58
- .4byte _08137D8C
- .4byte _08137DA4
- .4byte _08137DBC
- .4byte _08137E16
- .4byte _08137E04
-_08137D58:
- ldr r0, _08137D78 @ =gUnknown_8419C1D
- bl sub_8136DA4
- ldr r0, _08137D7C @ =gMonSummaryScreen
- ldr r0, [r0]
- movs r1, 0xC8
- lsls r1, 6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08137D84
- ldr r0, _08137D80 @ =gUnknown_8419C62
- bl sub_8136DF0
- b _08137DF2
- .align 2, 0
-_08137D78: .4byte gUnknown_8419C1D
-_08137D7C: .4byte gMonSummaryScreen
-_08137D80: .4byte gUnknown_8419C62
-_08137D84:
- ldr r0, _08137D88 @ =gUnknown_8419C72
- b _08137DEE
- .align 2, 0
-_08137D88: .4byte gUnknown_8419C72
-_08137D8C:
- ldr r0, _08137D9C @ =gUnknown_8419C2A
- bl sub_8136DA4
- ldr r0, _08137DA0 @ =gUnknown_8419C7B
- bl sub_8136DF0
- b _08137DF2
- .align 2, 0
-_08137D9C: .4byte gUnknown_8419C2A
-_08137DA0: .4byte gUnknown_8419C7B
-_08137DA4:
- ldr r0, _08137DB4 @ =gUnknown_8419C39
- bl sub_8136DA4
- ldr r0, _08137DB8 @ =gUnknown_8419C82
- bl sub_8136DF0
- b _08137DF2
- .align 2, 0
-_08137DB4: .4byte gUnknown_8419C39
-_08137DB8: .4byte gUnknown_8419C82
-_08137DBC:
- ldr r0, _08137DDC @ =gUnknown_8419C39
- bl sub_8136DA4
- ldr r0, _08137DE0 @ =gMain
- ldr r1, _08137DE4 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08137DEC
- ldr r0, _08137DE8 @ =gUnknown_8419C92
- bl sub_8136DF0
- b _08137DF2
- .align 2, 0
-_08137DDC: .4byte gUnknown_8419C39
-_08137DE0: .4byte gMain
-_08137DE4: .4byte 0x00000439
-_08137DE8: .4byte gUnknown_8419C92
-_08137DEC:
- ldr r0, _08137DFC @ =gUnknown_8419CA2
-_08137DEE:
- bl sub_8136DF0
-_08137DF2:
- ldr r0, _08137E00 @ =gUnknown_8419C45
- bl sub_8136E50
- b _08137E16
- .align 2, 0
-_08137DFC: .4byte gUnknown_8419CA2
-_08137E00: .4byte gUnknown_8419C45
-_08137E04:
- ldr r0, _08137E1C @ =gUnknown_8419C39
- bl sub_8136DA4
- ldr r0, _08137E20 @ =gUnknown_8419CA9
- bl sub_8136DF0
- ldr r0, _08137E24 @ =gUnknown_8419C45
- bl sub_8136E50
-_08137E16:
- pop {r0}
- bx r0
- .align 2, 0
-_08137E1C: .4byte gUnknown_8419C39
-_08137E20: .4byte gUnknown_8419CA9
-_08137E24: .4byte gUnknown_8419C45
- thumb_func_end sub_8137D28
-
- thumb_func_start sub_8137E28
-sub_8137E28: @ 8137E28
- push {r4,lr}
- ldr r4, _08137E58 @ =gMonSummaryScreen
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldr r1, _08137E5C @ =0x00003001
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldr r1, _08137E60 @ =0x00003002
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08137E58: .4byte gMonSummaryScreen
-_08137E5C: .4byte 0x00003001
-_08137E60: .4byte 0x00003002
- thumb_func_end sub_8137E28
-
- thumb_func_start sub_8137E64
-sub_8137E64: @ 8137E64
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_813AF90
- bl FreeAllSpritePalettes
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08137E82
- bl StopCryAndClearCrySongs
-_08137E82:
- ldr r4, _08137ED4 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _08137ED8 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8138414
- bl FreeAllWindowBuffers
- adds r0, r5, 0
- bl DestroyTask
- ldr r0, [r4]
- ldr r1, _08137EDC @ =0x000032f8
- adds r0, r1
- ldr r0, [r0]
- bl SetMainCallback2
- bl GetLastViewedMonIndex
- ldr r1, _08137EE0 @ =gLastViewedMonIndex
- strb r0, [r1]
- ldr r0, [r4]
- cmp r0, 0
- beq _08137EBC
- bl Free
- movs r0, 0
- str r0, [r4]
-_08137EBC:
- ldr r4, _08137EE4 @ =gUnknown_203B144
- ldr r0, [r4]
- cmp r0, 0
- beq _08137ECC
- bl Free
- movs r0, 0
- str r0, [r4]
-_08137ECC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08137ED4: .4byte gMonSummaryScreen
-_08137ED8: .4byte 0x00003214
-_08137EDC: .4byte 0x000032f8
-_08137EE0: .4byte gLastViewedMonIndex
-_08137EE4: .4byte gUnknown_203B144
- thumb_func_end sub_8137E64
-
- thumb_func_start sub_8137EE8
-sub_8137EE8: @ 8137EE8
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8137EE8
-
- thumb_func_start sub_8137F00
-sub_8137F00: @ 8137F00
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _08137F60 @ =gUnknown_203B160
-_08137F06:
- ldr r3, [r6]
- lsls r4, r5, 1
- adds r0, r3, 0
- adds r0, 0x2C
- adds r1, r0, r4
- ldrh r2, [r1]
- cmp r2, 0xEF
- bhi _08137F28
- adds r0, r2, 0
- adds r0, 0x3C
- strh r0, [r1]
- lsls r0, r5, 2
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r2, 0
- adds r0, 0x78
- strh r0, [r1, 0x20]
-_08137F28:
- cmp r5, 0x8
- bhi _08137F4E
- ldr r0, _08137F64 @ =gUnknown_203B15C
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x28
- adds r1, r0, r4
- ldrh r2, [r1]
- cmp r2, 0xEF
- bhi _08137F4E
- adds r0, r2, 0
- adds r0, 0x3C
- strh r0, [r1]
- lsls r0, r5, 2
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r2, 0
- adds r0, 0x78
- strh r0, [r1, 0x20]
-_08137F4E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xA
- bls _08137F06
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08137F60: .4byte gUnknown_203B160
-_08137F64: .4byte gUnknown_203B15C
- thumb_func_end sub_8137F00
-
- thumb_func_start sub_8137F68
-sub_8137F68: @ 8137F68
- push {r4-r7,lr}
- movs r5, 0
- ldr r0, _08137FEC @ =gUnknown_203B160
- mov r12, r0
-_08137F70:
- mov r1, r12
- ldr r0, [r1]
- lsls r1, r5, 1
- adds r0, 0x2C
- adds r3, r0, r1
- ldrh r4, [r3]
- lsls r0, r5, 3
- adds r2, r0, 0
- adds r2, 0x9C
- adds r6, r1, 0
- adds r7, r0, 0
- cmp r4, r2
- ble _08137FAA
- adds r0, r4, 0
- subs r0, 0x3C
- strh r0, [r3]
- ldrh r0, [r3]
- cmp r0, r2
- bge _08137F98
- strh r2, [r3]
-_08137F98:
- mov r0, r12
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r0, r1, r0
- ldr r2, [r0]
- adds r1, 0x2C
- adds r1, r6
- ldrh r0, [r1]
- strh r0, [r2, 0x20]
-_08137FAA:
- cmp r5, 0x8
- bhi _08137FDC
- ldr r1, _08137FF0 @ =gUnknown_203B15C
- ldr r0, [r1]
- adds r0, 0x28
- adds r2, r0, r6
- ldrh r0, [r2]
- adds r3, r7, 0
- adds r3, 0xAC
- cmp r0, r3
- ble _08137FDC
- subs r0, 0x3C
- strh r0, [r2]
- ldrh r0, [r2]
- cmp r0, r3
- bge _08137FCC
- strh r3, [r2]
-_08137FCC:
- ldr r1, [r1]
- lsls r0, r5, 2
- adds r0, r1, r0
- ldr r2, [r0]
- adds r1, 0x28
- adds r1, r6
- ldrh r0, [r1]
- strh r0, [r2, 0x20]
-_08137FDC:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xA
- bls _08137F70
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08137FEC: .4byte gUnknown_203B160
-_08137FF0: .4byte gUnknown_203B15C
- thumb_func_end sub_8137F68
-
- thumb_func_start sub_8137FF4
-sub_8137FF4: @ 8137FF4
- push {r4,r5,lr}
- ldr r4, _08138038 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r3, _0813803C @ =0x0000324c
- adds r1, r0, r3
- ldrh r2, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0xEF
- bgt _08138054
- adds r0, r2, 0
- adds r0, 0x3C
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _0813801A
- movs r0, 0xF0
- strh r0, [r1]
-_0813801A:
- ldr r1, [r4]
- ldr r2, _08138040 @ =0x00003238
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08138044
- adds r0, r1, r3
- ldrh r1, [r0]
- negs r1, r1
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x18
- bl SetGpuReg
- b _08138054
- .align 2, 0
-_08138038: .4byte gMonSummaryScreen
-_0813803C: .4byte 0x0000324c
-_08138040: .4byte 0x00003238
-_08138044:
- adds r0, r1, r3
- ldrh r1, [r0]
- negs r1, r1
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x14
- bl SetGpuReg
-_08138054:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8137FF4
-
- thumb_func_start sub_813805C
-sub_813805C: @ 813805C
- push {r4,r5,lr}
- ldr r4, _081380A0 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r3, _081380A4 @ =0x0000324c
- adds r1, r0, r3
- ldrh r2, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0x3B
- ble _081380DC
- adds r0, r2, 0
- subs r0, 0x3C
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bge _08138080
- movs r0, 0
- strh r0, [r1]
-_08138080:
- ldr r1, [r4]
- ldr r2, _081380A8 @ =0x00003238
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _081380AC
- adds r0, r1, r3
- ldrh r1, [r0]
- negs r1, r1
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x14
- bl SetGpuReg
- b _081380BC
- .align 2, 0
-_081380A0: .4byte gMonSummaryScreen
-_081380A4: .4byte 0x0000324c
-_081380A8: .4byte 0x00003238
-_081380AC:
- adds r0, r1, r3
- ldrh r1, [r0]
- negs r1, r1
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x18
- bl SetGpuReg
-_081380BC:
- ldr r0, _081380E4 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r5, _081380E8 @ =0x00003214
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _081380DC
- ldr r2, _081380EC @ =0x0000324c
- adds r0, r1, r2
- ldrh r1, [r0]
- negs r1, r1
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x10
- bl SetGpuReg
-_081380DC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081380E4: .4byte gMonSummaryScreen
-_081380E8: .4byte 0x00003214
-_081380EC: .4byte 0x0000324c
- thumb_func_end sub_813805C
-
- thumb_func_start sub_81380F0
-sub_81380F0: @ 81380F0
- push {lr}
- ldr r0, _08138110 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r2, _08138114 @ =0x00003224
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08138118
- subs r2, 0x10
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _08138122
- bl sub_8137FF4
- b _08138130
- .align 2, 0
-_08138110: .4byte gMonSummaryScreen
-_08138114: .4byte 0x00003224
-_08138118:
- ldr r2, _08138128 @ =0x00003214
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0813812C
-_08138122:
- bl sub_813805C
- b _08138130
- .align 2, 0
-_08138128: .4byte 0x00003214
-_0813812C:
- bl sub_8137FF4
-_08138130:
- pop {r0}
- bx r0
- thumb_func_end sub_81380F0
-
- thumb_func_start sub_8138134
-sub_8138134: @ 8138134
- push {lr}
- ldr r0, _08138174 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r2, _08138178 @ =0x00003214
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08138152
- adds r2, 0x10
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08138152
- bl sub_8137F68
-_08138152:
- ldr r0, _08138174 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r2, _08138178 @ =0x00003214
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0813816E
- adds r2, 0x10
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0813816E
- bl sub_8137F00
-_0813816E:
- pop {r0}
- bx r0
- .align 2, 0
-_08138174: .4byte gMonSummaryScreen
-_08138178: .4byte 0x00003214
- thumb_func_end sub_8138134
-
- thumb_func_start sub_813817C
-sub_813817C: @ 813817C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r0, _081381A4 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _081381A8 @ =0x00003244
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081381A0
- bl sub_81380F0
- bl sub_8138134
-_081381A0:
- pop {r0}
- bx r0
- .align 2, 0
-_081381A4: .4byte gMonSummaryScreen
-_081381A8: .4byte 0x00003244
- thumb_func_end sub_813817C
-
- thumb_func_start sub_81381AC
-sub_81381AC: @ 81381AC
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- pop {r0}
- bx r0
- thumb_func_end sub_81381AC
-
- thumb_func_start sub_81381C0
-sub_81381C0: @ 81381C0
- push {lr}
- ldr r0, _081381CC @ =sub_813817C
- bl SetVBlankCallback
- pop {r0}
- bx r0
- .align 2, 0
-_081381CC: .4byte sub_813817C
- thumb_func_end sub_81381C0
-
- thumb_func_start sub_81381D0
-sub_81381D0: @ 81381D0
- push {r4,r5,lr}
- ldr r0, _08138218 @ =gUnknown_8463F9C
- bl InitWindows
- movs r4, 0
-_081381DA:
- lsls r0, r4, 3
- ldr r1, _0813821C @ =gUnknown_8463F0C
- adds r0, r1
- bl AddWindow
- ldr r2, _08138220 @ =gMonSummaryScreen
- ldr r1, [r2]
- movs r3, 0xC0
- lsls r3, 6
- adds r1, r3
- adds r1, r4
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _081381DA
- movs r4, 0
- adds r5, r2, 0
-_08138200:
- ldr r0, [r5]
- ldr r1, _08138224 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08138254
- cmp r0, 0x1
- bgt _08138228
- cmp r0, 0
- beq _08138238
- b _08138268
- .align 2, 0
-_08138218: .4byte gUnknown_8463F9C
-_0813821C: .4byte gUnknown_8463F0C
-_08138220: .4byte gMonSummaryScreen
-_08138224: .4byte 0x00003214
-_08138228:
- cmp r0, 0x3
- bgt _08138268
- lsls r0, r4, 3
- ldr r1, _08138234 @ =gUnknown_8463F7C
- b _08138258
- .align 2, 0
-_08138234: .4byte gUnknown_8463F7C
-_08138238:
- lsls r0, r4, 3
- ldr r1, _0813824C @ =gUnknown_8463F3C
- adds r0, r1
- bl AddWindow
- ldr r1, [r5]
- adds r1, r4
- ldr r3, _08138250 @ =0x00003003
- adds r1, r3
- b _08138266
- .align 2, 0
-_0813824C: .4byte gUnknown_8463F3C
-_08138250: .4byte 0x00003003
-_08138254:
- lsls r0, r4, 3
- ldr r1, _08138278 @ =gUnknown_8463F5C
-_08138258:
- adds r0, r1
- bl AddWindow
- ldr r1, [r5]
- adds r1, r4
- ldr r2, _0813827C @ =0x00003003
- adds r1, r2
-_08138266:
- strb r0, [r1]
-_08138268:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08138200
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08138278: .4byte gUnknown_8463F5C
-_0813827C: .4byte 0x00003003
- thumb_func_end sub_81381D0
-
- thumb_func_start sub_8138280
-sub_8138280: @ 8138280
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0xA
- bl GetGpuReg
- movs r4, 0x3
- adds r5, r4, 0
- ands r5, r0
- movs r0, 0xC
- bl GetGpuReg
- adds r3, r4, 0
- ands r3, r0
- movs r4, 0
- ldr r2, _08138314 @ =gMonSummaryScreen
- movs r0, 0xC0
- lsls r0, 6
- mov r12, r0
- movs r7, 0xFF
- mov r8, r2
-_081382AE:
- ldr r0, [r2]
- add r0, r12
- adds r0, r4
- ldrb r1, [r0]
- orrs r1, r7
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _081382AE
- mov r2, r8
- ldr r1, [r2]
- ldr r4, _08138318 @ =0x00003224
- adds r0, r1, r4
- ldrb r2, [r0]
- cmp r2, 0x1
- bne _081382DC
- subs r4, 0x10
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081382EA
-_081382DC:
- cmp r2, 0
- bne _08138354
- ldr r2, _0813831C @ =0x00003214
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _08138354
-_081382EA:
- cmp r3, r5
- bls _08138324
- movs r4, 0
-_081382F0:
- lsls r0, r4, 3
- ldr r1, _08138320 @ =gUnknown_8463F24
- adds r0, r1
- bl AddWindow
- ldr r1, _08138314 @ =gMonSummaryScreen
- ldr r1, [r1]
- movs r2, 0xC0
- lsls r2, 6
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _081382F0
- b _081383AC
- .align 2, 0
-_08138314: .4byte gMonSummaryScreen
-_08138318: .4byte 0x00003224
-_0813831C: .4byte 0x00003214
-_08138320: .4byte gUnknown_8463F24
-_08138324:
- movs r4, 0
-_08138326:
- lsls r0, r4, 3
- ldr r1, _0813834C @ =gUnknown_8463F0C
- adds r0, r1
- bl AddWindow
- ldr r1, _08138350 @ =gMonSummaryScreen
- ldr r1, [r1]
- movs r2, 0xC0
- lsls r2, 6
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08138326
- b _081383AC
- .align 2, 0
-_0813834C: .4byte gUnknown_8463F0C
-_08138350: .4byte gMonSummaryScreen
-_08138354:
- cmp r3, r5
- bls _08138388
- movs r4, 0
-_0813835A:
- lsls r0, r4, 3
- ldr r1, _08138380 @ =gUnknown_8463F0C
- adds r0, r1
- bl AddWindow
- ldr r1, _08138384 @ =gMonSummaryScreen
- ldr r1, [r1]
- movs r2, 0xC0
- lsls r2, 6
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0813835A
- b _081383AC
- .align 2, 0
-_08138380: .4byte gUnknown_8463F0C
-_08138384: .4byte gMonSummaryScreen
-_08138388:
- movs r4, 0
-_0813838A:
- lsls r0, r4, 3
- ldr r1, _081383C0 @ =gUnknown_8463F24
- adds r0, r1
- bl AddWindow
- ldr r1, _081383C4 @ =gMonSummaryScreen
- ldr r1, [r1]
- movs r2, 0xC0
- lsls r2, 6
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0813838A
-_081383AC:
- movs r4, 0
- ldr r5, _081383C4 @ =gMonSummaryScreen
-_081383B0:
- cmp r6, 0x1
- beq _081383E4
- cmp r6, 0x1
- bgt _081383C8
- cmp r6, 0
- beq _081383D8
- b _081383E4
- .align 2, 0
-_081383C0: .4byte gUnknown_8463F24
-_081383C4: .4byte gMonSummaryScreen
-_081383C8:
- cmp r6, 0x3
- bgt _081383E4
- lsls r0, r4, 3
- ldr r1, _081383D4 @ =gUnknown_8463F7C
- b _081383E8
- .align 2, 0
-_081383D4: .4byte gUnknown_8463F7C
-_081383D8:
- lsls r0, r4, 3
- ldr r1, _081383E0 @ =gUnknown_8463F3C
- b _081383E8
- .align 2, 0
-_081383E0: .4byte gUnknown_8463F3C
-_081383E4:
- lsls r0, r4, 3
- ldr r1, _0813840C @ =gUnknown_8463F5C
-_081383E8:
- adds r0, r1
- bl AddWindow
- ldr r1, [r5]
- adds r1, r4
- ldr r2, _08138410 @ =0x00003003
- adds r1, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081383B0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813840C: .4byte gUnknown_8463F5C
-_08138410: .4byte 0x00003003
- thumb_func_end sub_8138280
-
- thumb_func_start sub_8138414
-sub_8138414: @ 8138414
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0813843C @ =gMonSummaryScreen
-_0813841A:
- ldr r0, [r5]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _0813841A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813843C: .4byte gMonSummaryScreen
- thumb_func_end sub_8138414
-
- thumb_func_start sub_8138440
-sub_8138440: @ 8138440
- push {lr}
- ldr r0, _0813845C @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08138460 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08138470
- cmp r0, 0x1
- bgt _08138464
- cmp r0, 0
- beq _0813846C
- b _08138476
- .align 2, 0
-_0813845C: .4byte gMonSummaryScreen
-_08138460: .4byte 0x00003214
-_08138464:
- cmp r0, 0x3
- bgt _08138476
- movs r0, 0x8 @ HELPCONTEXT_POKEMON_MOVES
- b _08138472
-_0813846C:
- movs r0, 0x6 @ HELPCONTEXT_POKEMON_INFO
- b _08138472
-_08138470:
- movs r0, 0x7 @ HELPCONTEXT_POKEMON_SKILLS
-_08138472:
- bl SetHelpContext
-_08138476:
- pop {r0}
- bx r0
- thumb_func_end sub_8138440
-
- thumb_func_start sub_813847C
-sub_813847C: @ 813847C
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r5, _081384BC @ =gMonSummaryScreen
- ldr r0, [r5]
- ldr r1, _081384C0 @ =0x000032f4
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _081384C4 @ =gEnemyParty
- cmp r1, r0
- bne _081384D0
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081384C8 @ =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldrh r4, [r0]
- ldr r0, [r5]
- ldr r3, _081384CC @ =0x0000304c
- adds r0, r3
- adds r2, 0x8
- adds r1, r2
- bl StringCopy
- b _081384E8
- .align 2, 0
-_081384BC: .4byte gMonSummaryScreen
-_081384C0: .4byte 0x000032f4
-_081384C4: .4byte gEnemyParty
-_081384C8: .4byte gLinkPlayers
-_081384CC: .4byte 0x0000304c
-_081384D0:
- bl GetPlayerTrainerId
- adds r4, r0, 0
- ldr r0, _0813851C @ =0x0000ffff
- ands r4, r0
- ldr r0, [r5]
- ldr r1, _08138520 @ =0x0000304c
- adds r0, r1
- ldr r1, _08138524 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
-_081384E8:
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonData
- ldr r1, _0813851C @ =0x0000ffff
- ands r1, r0
- cmp r4, r1
- bne _08138518
- ldr r4, _08138528 @ =gMonSummaryScreen
- ldr r2, [r4]
- ldr r5, _0813852C @ =0x00003058
- adds r2, r5
- adds r0, r6, 0
- movs r1, 0x7
- bl GetMonData
- ldr r1, [r4]
- ldr r2, _08138520 @ =0x0000304c
- adds r0, r1, r2
- adds r1, r5
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- beq _08138530
-_08138518:
- movs r0, 0
- b _08138532
- .align 2, 0
-_0813851C: .4byte 0x0000ffff
-_08138520: .4byte 0x0000304c
-_08138524: .4byte gSaveBlock2Ptr
-_08138528: .4byte gMonSummaryScreen
-_0813852C: .4byte 0x00003058
-_08138530:
- movs r0, 0x1
-_08138532:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_813847C
-
- thumb_func_start sub_8138538
-sub_8138538: @ 8138538
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r0, _08138560 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r2, _08138564 @ =0x00003214
- adds r0, r1, r2
- ldrb r7, [r0]
- cmp r7, 0x1
- bne _08138554
- b _081386EC
-_08138554:
- cmp r7, 0x1
- bgt _08138568
- cmp r7, 0
- beq _08138576
- b _08138A16
- .align 2, 0
-_08138560: .4byte gMonSummaryScreen
-_08138564: .4byte 0x00003214
-_08138568:
- cmp r7, 0x2
- bne _0813856E
- b _081387E0
-_0813856E:
- cmp r7, 0x3
- bne _08138574
- b _081388E0
-_08138574:
- b _08138A16
-_08138576:
- movs r2, 0xC8
- lsls r2, 6
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08138678
- movs r1, 0xB5
- lsls r1, 1
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xBD
- lsls r1, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _08138660 @ =0x00000169
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xE
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _08138664 @ =0x00000179
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xE
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r6, _08138668 @ =0x0000016b
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- adds r1, r6, 0
- movs r2, 0xF
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r5, _0813866C @ =0x0000017b
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- adds r1, r5, 0
- movs r2, 0xF
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _08138670 @ =0x0000016d
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x10
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _08138674 @ =0x0000017d
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x10
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- adds r1, r6, 0
- movs r2, 0x11
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- adds r1, r5, 0
- movs r2, 0x11
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r1, 0xB7
- lsls r1, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x12
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xBF
- lsls r1, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- b _081388CC
- .align 2, 0
-_08138660: .4byte 0x00000169
-_08138664: .4byte 0x00000179
-_08138668: .4byte 0x0000016b
-_0813866C: .4byte 0x0000017b
-_08138670: .4byte 0x0000016d
-_08138674: .4byte 0x0000017d
-_08138678:
- movs r1, 0xB5
- lsls r1, 1
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xBD
- lsls r1, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _081386E0 @ =0x00000189
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xE
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _081386E4 @ =0x00000199
- str r4, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xE
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _081386E8 @ =0x0000015b
- movs r0, 0x4
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xF
- movs r3, 0
- bl FillBgTilemapBufferRect
- b _08138A16
- .align 2, 0
-_081386E0: .4byte 0x00000189
-_081386E4: .4byte 0x00000199
-_081386E8: .4byte 0x0000015b
-_081386EC:
- movs r1, 0xC5
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xCD
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r1, 0xAD
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xE
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xB6
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xE
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r1, 0xB5
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xF
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xBD
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xF
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _081387D0 @ =0x00000169
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x10
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _081387D4 @ =0x00000179
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x10
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _081387D8 @ =0x0000016b
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x11
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _081387DC @ =0x0000017b
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x11
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r1, 0xB7
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x12
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xBF
- lsls r1, 1
- str r7, [sp]
- str r7, [sp, 0x4]
- str r4, [sp, 0x8]
- b _081388CC
- .align 2, 0
-_081387D0: .4byte 0x00000169
-_081387D4: .4byte 0x00000179
-_081387D8: .4byte 0x0000016b
-_081387DC: .4byte 0x0000017b
-_081387E0:
- movs r0, 0xC5
- lsls r0, 1
- mov r10, r0
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r10
- movs r2, 0xD
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r2, 0xCD
- lsls r2, 1
- mov r9, r2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r9
- movs r2, 0xD
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r0, 0xAD
- lsls r0, 1
- mov r8, r0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r8
- movs r2, 0xE
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r6, 0xB6
- lsls r6, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- adds r1, r6, 0
- movs r2, 0xE
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r10
- movs r2, 0xF
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r9
- movs r2, 0xF
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r8
- movs r2, 0x10
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- adds r1, r6, 0
- movs r2, 0x10
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r1, 0xB5
- lsls r1, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x11
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xBD
- lsls r1, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x11
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _081388D8 @ =0x00000189
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x12
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _081388DC @ =0x00000199
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
-_081388CC:
- movs r0, 0x3
- movs r2, 0x12
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- b _08138A16
- .align 2, 0
-_081388D8: .4byte 0x00000189
-_081388DC: .4byte 0x00000199
-_081388E0:
- ldr r2, _0813891C @ =0x00003208
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _08138920
- movs r1, 0xAD
- lsls r1, 1
- movs r6, 0x4
- str r6, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xB6
- lsls r1, 1
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0xD
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- b _081389CA
- .align 2, 0
-_0813891C: .4byte 0x00003208
-_08138920:
- movs r0, 0xC5
- lsls r0, 1
- mov r10, r0
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r10
- movs r2, 0xD
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r2, 0xCD
- lsls r2, 1
- mov r9, r2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r9
- movs r2, 0xD
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r0, 0xAD
- lsls r0, 1
- mov r8, r0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r8
- movs r2, 0xE
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r6, 0xB6
- lsls r6, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- adds r1, r6, 0
- movs r2, 0xE
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r10
- movs r2, 0xF
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r9
- movs r2, 0xF
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- mov r1, r8
- movs r2, 0x10
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- adds r1, r6, 0
- movs r2, 0x10
- movs r3, 0x1
- bl FillBgTilemapBufferRect
-_081389CA:
- ldr r1, _08138A28 @ =0x0000018b
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x11
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _08138A2C @ =0x0000019b
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x11
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- ldr r1, _08138A30 @ =0x00000189
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x12
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r1, _08138A34 @ =0x00000199
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r2, 0x12
- movs r3, 0x1
- bl FillBgTilemapBufferRect
-_08138A16:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08138A28: .4byte 0x0000018b
-_08138A2C: .4byte 0x0000019b
-_08138A30: .4byte 0x00000189
-_08138A34: .4byte 0x00000199
- thumb_func_end sub_8138538
-
- thumb_func_start sub_8138A38
-sub_8138A38: @ 8138A38
- push {r4-r6,lr}
- ldr r6, _08138A54 @ =gMonSummaryScreen
- ldr r1, [r6]
- ldr r2, _08138A58 @ =0x00003214
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bgt _08138A5C
- cmp r0, 0x1
- bge _08138B0E
- cmp r0, 0
- beq _08138A62
- b _08138B0E
- .align 2, 0
-_08138A54: .4byte gMonSummaryScreen
-_08138A58: .4byte 0x00003214
-_08138A5C:
- cmp r0, 0x3
- beq _08138ABC
- b _08138B0E
-_08138A62:
- movs r3, 0xC8
- lsls r3, 6
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _08138B0E
- ldr r2, _08138AB0 @ =0x00003003
- adds r0, r1, r2
- ldrb r0, [r0]
- ldr r4, _08138AB4 @ =0x00003220
- adds r1, r4
- ldrb r1, [r1]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x2F
- movs r3, 0x23
- bl BlitMoveInfoIcon
- ldr r1, [r6]
- adds r4, r1, r4
- ldr r3, _08138AB8 @ =0x00003221
- adds r0, r1, r3
- ldrb r2, [r0]
- ldrb r0, [r4]
- cmp r0, r2
- beq _08138B0E
- ldr r3, _08138AB0 @ =0x00003003
- adds r0, r1, r3
- ldrb r0, [r0]
- adds r1, r2, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x53
- movs r3, 0x23
- bl BlitMoveInfoIcon
- b _08138B0E
- .align 2, 0
-_08138AB0: .4byte 0x00003003
-_08138AB4: .4byte 0x00003220
-_08138AB8: .4byte 0x00003221
-_08138ABC:
- ldr r5, _08138B14 @ =0x00003006
- adds r0, r1, r5
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, [r6]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r4, _08138B18 @ =0x00003220
- adds r1, r4
- ldrb r1, [r1]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- movs r3, 0x3
- bl BlitMoveInfoIcon
- ldr r2, [r6]
- adds r4, r2, r4
- ldr r1, _08138B1C @ =0x00003221
- adds r0, r2, r1
- ldrb r1, [r0]
- ldrb r0, [r4]
- cmp r0, r1
- beq _08138B04
- adds r0, r2, r5
- ldrb r0, [r0]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x24
- movs r3, 0x3
- bl BlitMoveInfoIcon
-_08138B04:
- ldr r0, [r6]
- adds r0, r5
- ldrb r0, [r0]
- bl PutWindowTilemap
-_08138B0E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08138B14: .4byte 0x00003006
-_08138B18: .4byte 0x00003220
-_08138B1C: .4byte 0x00003221
- thumb_func_end sub_8138A38
-
- thumb_func_start GetLastViewedMonIndex
-GetLastViewedMonIndex: @ 8138B20
- ldr r0, _08138B28 @ =gLastViewedMonIndex
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08138B28: .4byte gLastViewedMonIndex
- thumb_func_end GetLastViewedMonIndex
-
- thumb_func_start GetMoveSlotToReplace
-GetMoveSlotToReplace: @ 8138B2C
- ldr r0, _08138B34 @ =gUnknown_203B16E
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08138B34: .4byte gUnknown_203B16E
- thumb_func_end GetMoveSlotToReplace
-
- thumb_func_start sub_8138B38
-sub_8138B38: @ 8138B38
- ldr r1, _08138B44 @ =gMonSummaryScreen
- ldr r1, [r1]
- ldr r2, _08138B48 @ =0x00003208
- adds r1, r2
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08138B44: .4byte gMonSummaryScreen
-_08138B48: .4byte 0x00003208
- thumb_func_end sub_8138B38
-
- thumb_func_start sub_8138B4C
-sub_8138B4C: @ 8138B4C
- push {lr}
- bl IsUpdateLinkStateCBActive
- cmp r0, 0
- bne _08138B84
- bl IsMultiBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08138B84
- ldr r0, _08138B7C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08138B84
- ldr r0, _08138B80 @ =gLastViewedMonIndex
- ldrb r0, [r0]
- cmp r0, 0x3
- bhi _08138B76
- cmp r0, 0x1
- bne _08138B84
-_08138B76:
- movs r0, 0x1
- b _08138B86
- .align 2, 0
-_08138B7C: .4byte gReceivedRemoteLinkPlayers
-_08138B80: .4byte gLastViewedMonIndex
-_08138B84:
- movs r0, 0
-_08138B86:
- pop {r1}
- bx r1
- thumb_func_end sub_8138B4C
-
- thumb_func_start sub_8138B8C
-sub_8138B8C: @ 8138B8C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _08138BBC @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r2, _08138BC0 @ =0x0000321c
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08138BC4
- adds r2, 0xD8
- adds r0, r1, r2
- ldr r4, [r0]
- bl GetLastViewedMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- adds r1, r4
- adds r0, r5, 0
- movs r2, 0x64
- bl memcpy
- b _08138BE2
- .align 2, 0
-_08138BBC: .4byte gMonSummaryScreen
-_08138BC0: .4byte 0x0000321c
-_08138BC4:
- ldr r2, _08138BE8 @ =0x000032f4
- adds r0, r1, r2
- ldr r4, [r0]
- bl GetLastViewedMonIndex
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 4
- adds r4, r1
- adds r0, r4, 0
- adds r1, r5, 0
- bl BoxMonToMon
-_08138BE2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08138BE8: .4byte 0x000032f4
- thumb_func_end sub_8138B8C
-
- thumb_func_start sub_8138BEC
-sub_8138BEC: @ 8138BEC
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _08138C0C
- cmp r1, 0x1
- bgt _08138C02
- cmp r1, 0
- beq _08138C08
- b _08138C14
-_08138C02:
- cmp r2, 0x2
- beq _08138C10
- b _08138C14
-_08138C08:
- movs r1, 0xD
- b _08138C16
-_08138C0C:
- movs r1, 0xE
- b _08138C16
-_08138C10:
- movs r1, 0xF
- b _08138C16
-_08138C14:
- movs r1, 0x10
-_08138C16:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8138BEC
-
- thumb_func_start sub_8138C24
-sub_8138C24: @ 8138C24
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _08138C44
- cmp r1, 0x1
- bgt _08138C3A
- cmp r1, 0
- beq _08138C40
- b _08138C4C
-_08138C3A:
- cmp r2, 0x2
- beq _08138C48
- b _08138C4C
-_08138C40:
- movs r1, 0x11
- b _08138C4E
-_08138C44:
- movs r1, 0x12
- b _08138C4E
-_08138C48:
- movs r1, 0x13
- b _08138C4E
-_08138C4C:
- movs r1, 0x14
-_08138C4E:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8138C24
-
- thumb_func_start sub_8138C5C
-sub_8138C5C: @ 8138C5C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _08138C78 @ =gMonSummaryScreen
- ldr r0, [r6]
- ldr r5, _08138C7C @ =0x00003290
- adds r0, r5
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _08138C80
- movs r0, 0x7
- b _08138CD2
- .align 2, 0
-_08138C78: .4byte gMonSummaryScreen
-_08138C7C: .4byte 0x00003290
-_08138C80:
- movs r0, 0x88
- ands r0, r4
- cmp r0, 0
- beq _08138C8C
- movs r0, 0x1
- b _08138CD2
-_08138C8C:
- movs r0, 0x40
- ands r0, r4
- cmp r0, 0
- beq _08138C98
- movs r0, 0x2
- b _08138CD2
-_08138C98:
- movs r0, 0x7
- ands r0, r4
- cmp r0, 0
- beq _08138CA4
- movs r0, 0x3
- b _08138CD2
-_08138CA4:
- movs r0, 0x20
- ands r0, r4
- cmp r0, 0
- beq _08138CB0
- movs r0, 0x4
- b _08138CD2
-_08138CB0:
- movs r0, 0x10
- ands r0, r4
- cmp r0, 0
- beq _08138CBC
- movs r0, 0x5
- b _08138CD2
-_08138CBC:
- ldr r0, [r6]
- adds r0, r5
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _08138CD0
- movs r0, 0
- b _08138CD2
-_08138CD0:
- movs r0, 0x6
-_08138CD2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8138C5C
-
- thumb_func_start sub_8138CD8
-sub_8138CD8: @ 8138CD8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r6, _08138CFC @ =gMonSummaryScreen
- ldr r0, [r6]
- ldr r7, _08138D00 @ =0x00003288
- adds r3, r0, r7
- ldrb r1, [r3]
- cmp r1, 0x1
- bne _08138CF0
- b _08138FE8
-_08138CF0:
- cmp r1, 0x1
- bgt _08138D04
- cmp r1, 0
- beq _08138D12
- b _08139094
- .align 2, 0
-_08138CFC: .4byte gMonSummaryScreen
-_08138D00: .4byte 0x00003288
-_08138D04:
- cmp r1, 0x2
- bne _08138D0A
- b _08139010
-_08138D0A:
- cmp r1, 0x3
- bne _08138D10
- b _08139034
-_08138D10:
- b _08139094
-_08138D12:
- bl MenuHelpers_CallLinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08138D20
- b _08139094
-_08138D20:
- bl sub_800B270
- cmp r0, 0x1
- bne _08138D2A
- b _08139094
-_08138D2A:
- ldr r0, _08138D78 @ =gMain
- mov r9, r0
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _08138DD0
- ldr r4, _08138D7C @ =gUnknown_203B16D
- ldrb r0, [r4]
- cmp r0, 0
- beq _08138D84
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x2
- strb r1, [r0]
- movs r0, 0x5
- bl PlaySE
- ldrb r4, [r4]
- cmp r4, 0
- bne _08138D5A
- b _08139094
-_08138D5A:
- ldr r0, [r6]
- ldr r2, _08138D80 @ =0x00003258
- adds r1, r0, r2
-_08138D60:
- subs r4, 0x1
- lsls r0, r4, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- cmp r0, 0
- beq _08138D6E
- b _08139024
-_08138D6E:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08138D60
- b _08139094
- .align 2, 0
-_08138D78: .4byte gMain
-_08138D7C: .4byte gUnknown_203B16D
-_08138D80: .4byte 0x00003258
-_08138D84:
- movs r0, 0x4
- strb r0, [r4]
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x2
- strb r1, [r0]
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r6]
- ldr r3, _08138DC8 @ =0x00003268
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08138DA4
- b _08139094
-_08138DA4:
- ldrb r4, [r4]
- cmp r4, 0
- bne _08138DAC
- b _08139094
-_08138DAC:
- ldr r6, _08138DCC @ =0x00003258
- adds r1, r6
-_08138DB0:
- subs r4, 0x1
- lsls r0, r4, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- cmp r0, 0
- beq _08138DBE
- b _08139024
-_08138DBE:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08138DB0
- b _08139094
- .align 2, 0
-_08138DC8: .4byte 0x00003268
-_08138DCC: .4byte 0x00003258
-_08138DD0:
- movs r0, 0x80
- ands r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08138E80
- ldr r3, _08138E0C @ =gUnknown_203B16D
- ldrb r0, [r3]
- mov r12, r3
- cmp r0, 0x3
- bhi _08138E68
- movs r5, 0x4
- ldr r0, [r6]
- adds r0, r7
- movs r4, 0x2
- strb r4, [r0]
- ldr r1, [r6]
- ldr r6, _08138E10 @ =0x00003268
- adds r0, r1, r6
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08138E16
- ldrb r0, [r3]
- cmp r0, 0x3
- bne _08138E14
- strb r2, [r3]
- adds r0, r1, r7
- strb r4, [r0]
- b _08138E78
- .align 2, 0
-_08138E0C: .4byte gUnknown_203B16D
-_08138E10: .4byte 0x00003268
-_08138E14:
- movs r5, 0x3
-_08138E16:
- mov r0, r12
- ldrb r4, [r0]
- ldr r2, _08138E58 @ =gMonSummaryScreen
- cmp r4, r5
- bcs _08138E3C
- ldr r0, [r2]
- ldr r3, _08138E5C @ =0x00003258
- adds r1, r0, r3
-_08138E26:
- adds r4, 0x1
- lsls r0, r4, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- cmp r0, 0
- beq _08138E34
- b _08139024
-_08138E34:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08138E26
-_08138E3C:
- ldr r0, [r2]
- ldr r6, _08138E60 @ =0x00003268
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0
- bne _08138E4A
- b _08139024
-_08138E4A:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08138E64 @ =gUnknown_203B16D
- movs r0, 0
- strb r0, [r1]
- b _08139094
- .align 2, 0
-_08138E58: .4byte gMonSummaryScreen
-_08138E5C: .4byte 0x00003258
-_08138E60: .4byte 0x00003268
-_08138E64: .4byte gUnknown_203B16D
-_08138E68:
- cmp r0, 0x4
- beq _08138E6E
- b _08139094
-_08138E6E:
- strb r2, [r3]
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x2
- strb r1, [r0]
-_08138E78:
- movs r0, 0x5
- bl PlaySE
- b _08139094
-_08138E80:
- movs r0, 0x1
- mov r8, r0
- movs r5, 0x1
- ands r5, r1
- cmp r5, 0
- beq _08138F6C
- movs r0, 0x5
- bl PlaySE
- ldr r3, _08138EB8 @ =gUnknown_203B16D
- ldrb r5, [r3]
- cmp r5, 0x4
- bne _08138EC8
- strb r4, [r3]
- ldr r0, _08138EBC @ =gUnknown_203B16E
- strb r4, [r0]
- ldr r0, [r6]
- ldr r1, _08138EC0 @ =0x00003268
- adds r0, r1
- strb r4, [r0]
- movs r0, 0x1
- bl sub_813A0E8
- ldr r0, [r6]
- ldr r2, _08138EC4 @ =0x00003224
- adds r0, r2
- strb r4, [r0]
- b _08138FB8
- .align 2, 0
-_08138EB8: .4byte gUnknown_203B16D
-_08138EBC: .4byte gUnknown_203B16E
-_08138EC0: .4byte 0x00003268
-_08138EC4: .4byte 0x00003224
-_08138EC8:
- ldr r1, [r6]
- ldr r0, _08138F04 @ =0x00003268
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0x1
- beq _08138F18
- ldr r3, _08138F08 @ =0x00003024
- adds r0, r1, r3
- ldr r0, [r0]
- cmp r0, 0
- beq _08138EE0
- b _08139094
-_08138EE0:
- ldr r0, _08138F0C @ =0x00000439
- add r0, r9
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08138EF0
- b _08139094
-_08138EF0:
- ldr r0, _08138F10 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08138EFA
- b _08139094
-_08138EFA:
- ldr r0, _08138F14 @ =gUnknown_203B16E
- strb r5, [r0]
- mov r6, r8
- strb r6, [r2]
- b _08139094
- .align 2, 0
-_08138F04: .4byte 0x00003268
-_08138F08: .4byte 0x00003024
-_08138F0C: .4byte 0x00000439
-_08138F10: .4byte gReceivedRemoteLinkPlayers
-_08138F14: .4byte gUnknown_203B16E
-_08138F18:
- strb r4, [r2]
- ldr r1, _08138F38 @ =gUnknown_203B16E
- ldrb r0, [r3]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08138F26
- b _08139094
-_08138F26:
- ldr r0, [r6]
- ldr r1, _08138F3C @ =0x0000321c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08138F40
- bl sub_81390B0
- b _08138F44
- .align 2, 0
-_08138F38: .4byte gUnknown_203B16E
-_08138F3C: .4byte 0x0000321c
-_08138F40:
- bl sub_81391EC
-_08138F44:
- ldr r4, _08138F60 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r2, _08138F64 @ =0x00003290
- adds r0, r2
- bl sub_8139328
- bl sub_81367B0
- ldr r0, [r4]
- ldr r3, _08138F68 @ =0x00003288
- adds r0, r3
- movs r1, 0x2
- b _08139092
- .align 2, 0
-_08138F60: .4byte gMonSummaryScreen
-_08138F64: .4byte 0x00003290
-_08138F68: .4byte 0x00003288
-_08138F6C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08138F76
- b _08139094
-_08138F76:
- ldr r0, [r6]
- ldr r1, _08138F90 @ =0x00003268
- adds r2, r0, r1
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _08138F9C
- ldr r0, _08138F94 @ =gUnknown_203B16E
- ldr r1, _08138F98 @ =gUnknown_203B16D
- ldrb r1, [r1]
- strb r1, [r0]
- strb r5, [r2]
- b _08139094
- .align 2, 0
-_08138F90: .4byte 0x00003268
-_08138F94: .4byte gUnknown_203B16E
-_08138F98: .4byte gUnknown_203B16D
-_08138F9C:
- ldr r1, _08138FD8 @ =gUnknown_203B16D
- ldrb r0, [r1]
- cmp r0, 0x4
- bne _08138FAA
- strb r5, [r1]
- ldr r0, _08138FDC @ =gUnknown_203B16E
- strb r5, [r0]
-_08138FAA:
- movs r0, 0x1
- bl sub_813A0E8
- ldr r0, [r6]
- ldr r2, _08138FE0 @ =0x00003224
- adds r0, r2
- strb r5, [r0]
-_08138FB8:
- ldr r0, [r6]
- ldr r4, _08138FE4 @ =0x00003214
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8138414
- ldr r1, [r6]
- adds r1, r4
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, r7
- mov r3, r8
- strb r3, [r0]
- b _08139094
- .align 2, 0
-_08138FD8: .4byte gUnknown_203B16D
-_08138FDC: .4byte gUnknown_203B16E
-_08138FE0: .4byte 0x00003224
-_08138FE4: .4byte 0x00003214
-_08138FE8:
- ldr r2, _08139004 @ =gTasks
- ldr r6, _08139008 @ =0x00003018
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, _0813900C @ =sub_81351A0
- str r1, [r0]
- movs r0, 0
- strb r0, [r3]
- b _08139094
- .align 2, 0
-_08139004: .4byte gTasks
-_08139008: .4byte 0x00003018
-_0813900C: .4byte sub_81351A0
-_08139010:
- bl sub_8136F4C
- bl sub_81374E8
- bl sub_8137BD0
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x3
- b _08139092
-_08139024:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08139030 @ =gUnknown_203B16D
- strb r4, [r0]
- b _08139094
- .align 2, 0
-_08139030: .4byte gUnknown_203B16D
-_08139034:
- bl MenuHelpers_CallLinkSomething
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08139094
- bl sub_800B270
- cmp r0, 0x1
- beq _08139094
- ldr r0, [r6]
- ldr r1, _081390A0 @ =0x00003003
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r6]
- ldr r2, _081390A4 @ =0x00003004
- adds r0, r2
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r6]
- ldr r3, _081390A8 @ =0x00003005
- adds r0, r3
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r6]
- ldr r1, _081390AC @ =0x00003006
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0
-_08139092:
- strb r1, [r0]
-_08139094:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081390A0: .4byte 0x00003003
-_081390A4: .4byte 0x00003004
-_081390A8: .4byte 0x00003005
-_081390AC: .4byte 0x00003006
- thumb_func_end sub_8138CD8
-
- thumb_func_start sub_81390B0
-sub_81390B0: @ 81390B0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r0, _081391D8 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _081391DC @ =0x000032f4
- adds r0, r1
- ldr r6, [r0]
- bl GetLastViewedMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- adds r6, r0
- ldr r3, _081391E0 @ =gUnknown_203B16D
- ldrb r1, [r3]
- adds r1, 0xD
- adds r0, r6, 0
- bl GetMonData
- mov r1, sp
- adds r1, 0x2
- str r1, [sp, 0x8]
- strh r0, [r1]
- ldr r3, _081391E4 @ =gUnknown_203B16E
- mov r8, r3
- ldrb r1, [r3]
- adds r1, 0xD
- adds r0, r6, 0
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- ldr r0, _081391E0 @ =gUnknown_203B16D
- ldrb r1, [r0]
- adds r1, 0x11
- adds r0, r6, 0
- bl GetMonData
- movs r1, 0x5
- add r1, sp
- mov r10, r1
- strb r0, [r1]
- mov r3, r8
- ldrb r1, [r3]
- adds r1, 0x11
- adds r0, r6, 0
- bl GetMonData
- add r7, sp, 0x4
- strb r0, [r7]
- adds r0, r6, 0
- movs r1, 0x15
- bl GetMonData
- mov r4, sp
- adds r4, 0x6
- strb r0, [r4]
- ldr r5, _081391E8 @ =gPPUpGetMask
- ldr r0, _081391E0 @ =gUnknown_203B16D
- ldrb r1, [r0]
- adds r0, r1, r5
- ldrb r0, [r0]
- mov r9, r0
- ldrb r3, [r4]
- adds r2, r3, 0
- mov r0, r9
- ands r2, r0
- lsls r1, 1
- asrs r2, r1
- lsls r2, 24
- lsrs r2, 24
- mov r1, r8
- ldrb r0, [r1]
- adds r1, r0, r5
- ldrb r1, [r1]
- ands r1, r3
- lsls r0, 1
- asrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r9
- bics r3, r0
- strb r3, [r4]
- mov r3, r8
- ldrb r0, [r3]
- adds r0, r5
- ldrb r3, [r0]
- ldrb r0, [r4]
- bics r0, r3
- strb r0, [r4]
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 1
- lsls r2, r0
- ldr r3, _081391E0 @ =gUnknown_203B16D
- ldrb r0, [r3]
- lsls r0, 1
- lsls r1, r0
- adds r2, r1
- ldrb r0, [r4]
- orrs r0, r2
- strb r0, [r4]
- ldrb r1, [r3]
- adds r1, 0xD
- adds r0, r6, 0
- mov r2, sp
- bl SetMonData
- mov r0, r8
- ldrb r1, [r0]
- adds r1, 0xD
- adds r0, r6, 0
- ldr r2, [sp, 0x8]
- bl SetMonData
- ldr r3, _081391E0 @ =gUnknown_203B16D
- ldrb r1, [r3]
- adds r1, 0x11
- adds r0, r6, 0
- adds r2, r7, 0
- bl SetMonData
- mov r0, r8
- ldrb r1, [r0]
- adds r1, 0x11
- adds r0, r6, 0
- mov r2, r10
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x15
- adds r2, r4, 0
- bl SetMonData
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081391D8: .4byte gMonSummaryScreen
-_081391DC: .4byte 0x000032f4
-_081391E0: .4byte gUnknown_203B16D
-_081391E4: .4byte gUnknown_203B16E
-_081391E8: .4byte gPPUpGetMask
- thumb_func_end sub_81390B0
-
- thumb_func_start sub_81391EC
-sub_81391EC: @ 81391EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r0, _08139314 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08139318 @ =0x000032f4
- adds r0, r1
- ldr r6, [r0]
- bl GetLastViewedMonIndex
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 4
- adds r6, r1
- ldr r3, _0813931C @ =gUnknown_203B16D
- ldrb r1, [r3]
- adds r1, 0xD
- adds r0, r6, 0
- bl GetBoxMonData
- mov r1, sp
- adds r1, 0x2
- str r1, [sp, 0x8]
- strh r0, [r1]
- ldr r3, _08139320 @ =gUnknown_203B16E
- mov r8, r3
- ldrb r1, [r3]
- adds r1, 0xD
- adds r0, r6, 0
- bl GetBoxMonData
- mov r1, sp
- strh r0, [r1]
- ldr r0, _0813931C @ =gUnknown_203B16D
- ldrb r1, [r0]
- adds r1, 0x11
- adds r0, r6, 0
- bl GetBoxMonData
- movs r1, 0x5
- add r1, sp
- mov r10, r1
- strb r0, [r1]
- mov r3, r8
- ldrb r1, [r3]
- adds r1, 0x11
- adds r0, r6, 0
- bl GetBoxMonData
- add r7, sp, 0x4
- strb r0, [r7]
- adds r0, r6, 0
- movs r1, 0x15
- bl GetBoxMonData
- mov r4, sp
- adds r4, 0x6
- strb r0, [r4]
- ldr r5, _08139324 @ =gPPUpGetMask
- ldr r0, _0813931C @ =gUnknown_203B16D
- ldrb r1, [r0]
- adds r0, r1, r5
- ldrb r0, [r0]
- mov r9, r0
- ldrb r3, [r4]
- adds r2, r3, 0
- mov r0, r9
- ands r2, r0
- lsls r1, 1
- asrs r2, r1
- lsls r2, 24
- lsrs r2, 24
- mov r1, r8
- ldrb r0, [r1]
- adds r1, r0, r5
- ldrb r1, [r1]
- ands r1, r3
- lsls r0, 1
- asrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r9
- bics r3, r0
- strb r3, [r4]
- mov r3, r8
- ldrb r0, [r3]
- adds r0, r5
- ldrb r3, [r0]
- ldrb r0, [r4]
- bics r0, r3
- strb r0, [r4]
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 1
- lsls r2, r0
- ldr r3, _0813931C @ =gUnknown_203B16D
- ldrb r0, [r3]
- lsls r0, 1
- lsls r1, r0
- adds r2, r1
- ldrb r0, [r4]
- orrs r0, r2
- strb r0, [r4]
- ldrb r1, [r3]
- adds r1, 0xD
- adds r0, r6, 0
- mov r2, sp
- bl SetBoxMonData
- mov r0, r8
- ldrb r1, [r0]
- adds r1, 0xD
- adds r0, r6, 0
- ldr r2, [sp, 0x8]
- bl SetBoxMonData
- ldr r3, _0813931C @ =gUnknown_203B16D
- ldrb r1, [r3]
- adds r1, 0x11
- adds r0, r6, 0
- adds r2, r7, 0
- bl SetBoxMonData
- mov r0, r8
- ldrb r1, [r0]
- adds r1, 0x11
- adds r0, r6, 0
- mov r2, r10
- bl SetBoxMonData
- adds r0, r6, 0
- movs r1, 0x15
- adds r2, r4, 0
- bl SetBoxMonData
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08139314: .4byte gMonSummaryScreen
-_08139318: .4byte 0x000032f4
-_0813931C: .4byte gUnknown_203B16D
-_08139320: .4byte gUnknown_203B16E
-_08139324: .4byte gPPUpGetMask
- thumb_func_end sub_81391EC
-
- thumb_func_start sub_8139328
-sub_8139328: @ 8139328
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _08139358 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r2, _0813935C @ =0x0000321c
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08139360
- adds r2, 0xD8
- adds r0, r1, r2
- ldr r4, [r0]
- bl GetLastViewedMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- adds r1, r4
- adds r0, r5, 0
- movs r2, 0x64
- bl memcpy
- b _0813937E
- .align 2, 0
-_08139358: .4byte gMonSummaryScreen
-_0813935C: .4byte 0x0000321c
-_08139360:
- ldr r2, _08139384 @ =0x000032f4
- adds r0, r1, r2
- ldr r4, [r0]
- bl GetLastViewedMonIndex
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 4
- adds r4, r1
- adds r0, r4, 0
- adds r1, r5, 0
- bl BoxMonToMon
-_0813937E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08139384: .4byte 0x000032f4
- thumb_func_end sub_8139328
-
thumb_func_start sub_8139388
sub_8139388: @ 8139388
push {r4,lr}
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index c28dccfee..5e3603bfe 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -32,6 +32,8 @@ enum PokemonSummaryScreenPage
PSS_PAGE_SKILLS,
PSS_PAGE_MOVES,
PSS_PAGE_MOVES_INFO,
+ PSS_PAGE_UNK4,
+ PSS_PAGE_MOVE_DELETER,
};
enum PokemonSummaryScreenState3270
@@ -54,7 +56,7 @@ enum PokemonSummaryScreenStat
PSS_STAT_SPE
};
-s32 GetLastViewedMonIndex(void);
+u8 GetLastViewedMonIndex(void);
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
void sub_8138B38(u8);
diff --git a/include/strings.h b/include/strings.h
index 51cf79f8b..7b5c85305 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1497,5 +1497,11 @@ extern const u8 gUnknown_8419860[];
extern const u8 gUnknown_841988A[];
extern const u8 gUnknown_8419C4D[];
extern const u8 gUnknown_8419C59[];
+extern const u8 gUnknown_8419C1D[];
+extern const u8 gUnknown_8419C62[];
+extern const u8 gUnknown_8419C72[];
+extern const u8 gUnknown_8419C2A[];
+extern const u8 gUnknown_8419C7B[];
+extern const u8 gUnknown_8419CA9[];
#endif //GUARD_STRINGS_H
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index ad93ccab7..bef024a09 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -23,6 +23,9 @@
#include "dynamic_placeholder_text_util.h"
#include "constants/region_map_sections.h"
#include "region_map.h"
+#include "field_specials.h"
+#include "party_menu.h"
+#include "constants/battle.h"
extern void sub_8138B8C(struct Pokemon * mon);
void sub_8135C34(void);
@@ -79,8 +82,8 @@ extern void sub_8136350(void);
extern void sub_81367B0(void);
extern u8 sub_8138C5C(u32 status);
void sub_81367E8(u8);
-extern u16 sub_8138BEC(struct Pokemon * mon, u8 i);
-extern u16 sub_8138C24(struct Pokemon * mon, u8 i);
+u16 sub_8138BEC(struct Pokemon * mon, u8 moveSlot);
+u16 sub_8138C24(struct Pokemon * mon, u8 moveSlot);
extern void sub_813ADA8(u16, u16);
extern void sub_813ABAC(u16, u16);
extern void sub_813AFFC(void);
@@ -108,6 +111,13 @@ extern bool32 sub_813B7E0(u8 nature);
void sub_8137724(void);
extern bool32 sub_813B7F8(void);
extern u8 sub_813847C(struct Pokemon * mon);
+extern void sub_8137C18(void);
+extern void sub_8137C90(void);
+extern void sub_813AF90(void);
+void sub_81380F0(void);
+extern void sub_81390B0(void);
+extern void sub_81391EC(void);
+extern void sub_8139328(struct Pokemon * mon);
struct PokemonSummaryScreenData {
u16 unk0[0x800];
@@ -136,8 +146,8 @@ struct PokemonSummaryScreenData {
u8 ALIGNED(4) unk3028[POKEMON_NAME_LENGTH];
u8 ALIGNED(4) unk3034[POKEMON_NAME_LENGTH + 1];
- u8 ALIGNED(4) unk3040[OT_NAME_LENGTH + 1];
- u8 ALIGNED(4) pad3048[0x1c];
+ u8 ALIGNED(4) unk3040[12];
+ u8 ALIGNED(4) unk304C[2][12];
u8 ALIGNED(4) unk3064[5];
//u8 ALIGNED(4) unk3060[7];
@@ -294,6 +304,22 @@ extern const u8 gUnknown_8463EF0[][3];
extern const u8 * const gUnknown_8463EC4[];
extern const u8 * const gUnknown_8463ED4[];
+extern const struct WindowTemplate gUnknown_8463F9C[];
+extern const struct WindowTemplate gUnknown_8463F0C[];
+extern const struct WindowTemplate gUnknown_8463F3C[];
+extern const struct WindowTemplate gUnknown_8463F5C[];
+extern const struct WindowTemplate gUnknown_8463F7C[];
+extern const struct WindowTemplate gUnknown_8463F24[];
+
+#define FREE_AND_SET_NULL_IF_SET(ptr) \
+{ \
+ if (ptr != NULL) \
+ { \
+ free(ptr); \
+ (ptr) = NULL; \
+ } \
+}
+
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u8 mode)
{
gMonSummaryScreen = AllocZeroed(sizeof(struct PokemonSummaryScreenData));
@@ -352,7 +378,7 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx,
gMonSummaryScreen->unk3238 = 0;
gMonSummaryScreen->unk323C = 2;
gMonSummaryScreen->unk3240 = 1;
- gMonSummaryScreen->unk3244 = 0;
+ gMonSummaryScreen->unk3244 = FALSE;
gMonSummaryScreen->unk3228 = 0;
gMonSummaryScreen->unk322C = 1;
@@ -2157,11 +2183,13 @@ void sub_8137970(void)
void sub_8137A90(void)
{
AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
- 26, 7, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ 26, 7,
+ gUnknown_8463FA4[0], TEXT_SPEED_FF,
gUnknown_8419C4D);
AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
- 26, 20, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ 26, 20,
+ gUnknown_8463FA4[0], TEXT_SPEED_FF,
gUnknown_8419C59);
}
@@ -2173,11 +2201,13 @@ void sub_8137AF8(void)
return;
AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
- 57, 1, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ 57, 1,
+ gUnknown_8463FA4[0], TEXT_SPEED_FF,
gMonSummaryScreen->summary.unk316C[gUnknown_203B16D]);
AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
- 57, 15, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ 57, 15,
+ gUnknown_8463FA4[0], TEXT_SPEED_FF,
gMonSummaryScreen->summary.unk3188[gUnknown_203B16D]);
AddTextPrinterParameterized4(gMonSummaryScreen->unk3000[4], 2,
@@ -2187,3 +2217,949 @@ void sub_8137AF8(void)
gMoveDescriptionPointers[gMonSummaryScreen->unk325A[gUnknown_203B16D] - 1]);
}
}
+
+void sub_8137BD0(void)
+{
+ switch (gMonSummaryScreen->curPageIndex)
+ {
+ case PSS_PAGE_INFO:
+ break;
+ case PSS_PAGE_SKILLS:
+ sub_8137C18();
+ break;
+ case PSS_PAGE_MOVES:
+ case PSS_PAGE_MOVES_INFO:
+ sub_8137C90();
+ break;
+ }
+
+ PutWindowTilemap(gMonSummaryScreen->unk3000[5]);
+}
+
+#ifdef NONMATCHING
+// bad register allocation
+void sub_8137C18(void)
+{
+ FillWindowPixelBuffer(gMonSummaryScreen->unk3000[5], 0);
+
+ AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[5], 2,
+ 66, 1, gUnknown_8463FA4[0], TEXT_SPEED_FF, gMonSummaryScreen->summary.unk31CC);
+
+ AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[5], 2,
+ 2, 15, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ gMonSummaryScreen->summary.unk31CC);
+
+}
+#else
+NAKED
+void sub_8137C18(void)
+{
+ asm_unified("\tpush {r4-r6,lr}\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6}\n"
+ "\tsub sp, 0xC\n"
+ "\tldr r5, _08137C7C @ =gMonSummaryScreen\n"
+ "\tldr r0, [r5]\n"
+ "\tldr r4, _08137C80 @ =0x00003005\n"
+ "\tadds r0, r4\n"
+ "\tldrb r0, [r0]\n"
+ "\tmovs r1, 0\n"
+ "\tbl FillWindowPixelBuffer\n"
+ "\tldr r1, [r5]\n"
+ "\tadds r0, r1, r4\n"
+ "\tldrb r0, [r0]\n"
+ "\tldr r2, _08137C84 @ =gUnknown_8463FA4\n"
+ "\tmov r8, r2\n"
+ "\tstr r2, [sp]\n"
+ "\tmovs r6, 0x1\n"
+ "\tnegs r6, r6\n"
+ "\tstr r6, [sp, 0x4]\n"
+ "\tldr r2, _08137C88 @ =0x000031bc\n"
+ "\tadds r1, r2\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tmovs r1, 0x2\n"
+ "\tmovs r2, 0x42\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl AddTextPrinterParameterized3\n"
+ "\tldr r1, [r5]\n"
+ "\tadds r4, r1, r4\n"
+ "\tldrb r0, [r4]\n"
+ "\tmov r2, r8\n"
+ "\tstr r2, [sp]\n"
+ "\tstr r6, [sp, 0x4]\n"
+ "\tldr r2, _08137C8C @ =0x000031cc\n"
+ "\tadds r1, r2\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tmovs r1, 0x2\n"
+ "\tmovs r2, 0x2\n"
+ "\tmovs r3, 0xF\n"
+ "\tbl AddTextPrinterParameterized3\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r6}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08137C7C: .4byte gMonSummaryScreen\n"
+ "_08137C80: .4byte 0x00003005\n"
+ "_08137C84: .4byte gUnknown_8463FA4\n"
+ "_08137C88: .4byte 0x000031bc\n"
+ "_08137C8C: .4byte 0x000031cc");
+}
+#endif // NONMATCHING
+
+void sub_8137C90(void)
+{
+ u8 i;
+
+ FillWindowPixelBuffer(gMonSummaryScreen->unk3000[5], 0);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gMonSummaryScreen->unk325A[i] == MOVE_NONE)
+ continue;
+
+ BlitMoveInfoIcon(gMonSummaryScreen->unk3000[5], gMonSummaryScreen->unk3250[i] + 1, 3, MACRO_8137270(i));
+ }
+
+ if (gMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ BlitMoveInfoIcon(gMonSummaryScreen->unk3000[5], gMonSummaryScreen->unk3250[4] + 1, 3, MACRO_8137270(4));
+}
+
+void sub_8137D28(u8 page)
+{
+ switch (page)
+ {
+ case PSS_PAGE_INFO:
+ sub_8136DA4(gUnknown_8419C1D);
+ if (!gMonSummaryScreen->isEgg)
+ sub_8136DF0(gUnknown_8419C62);
+ else
+ sub_8136DF0(gUnknown_8419C72);
+
+ sub_8136E50(gUnknown_8419C45);
+ break;
+ case PSS_PAGE_SKILLS:
+ sub_8136DA4(gUnknown_8419C2A);
+ sub_8136DF0(gUnknown_8419C7B);
+ sub_8136E50(gUnknown_8419C45);
+ break;
+ case PSS_PAGE_MOVES:
+ sub_8136DA4(gUnknown_8419C39);
+ sub_8136DF0(gUnknown_8419C82);
+ sub_8136E50(gUnknown_8419C45);
+ break;
+ case PSS_PAGE_MOVES_INFO:
+ sub_8136DA4(gUnknown_8419C39);
+ if (!gMain.inBattle)
+ sub_8136DF0(gUnknown_8419C92);
+ else
+ sub_8136DF0(gUnknown_8419CA2);
+ sub_8136E50(gUnknown_8419C45);
+ break;
+ case PSS_PAGE_MOVE_DELETER:
+ sub_8136DA4(gUnknown_8419C39);
+ sub_8136DF0(gUnknown_8419CA9);
+ sub_8136E50(gUnknown_8419C45);
+ break;
+ default:
+ break;
+ }
+}
+
+void sub_8137E28(void)
+{
+ PutWindowTilemap(gMonSummaryScreen->unk3000[0]);
+ PutWindowTilemap(gMonSummaryScreen->unk3000[1]);
+ PutWindowTilemap(gMonSummaryScreen->unk3000[2]);
+}
+
+void sub_8137E64(u8 taskId)
+{
+ sub_813AF90();
+ FreeAllSpritePalettes();
+
+ if (IsCryPlayingOrClearCrySongs() == TRUE)
+ StopCryAndClearCrySongs();
+
+ sub_8138414(gMonSummaryScreen->curPageIndex);
+ FreeAllWindowBuffers();
+ DestroyTask(taskId);
+ SetMainCallback2(gMonSummaryScreen->savedCallback);
+
+ gLastViewedMonIndex = GetLastViewedMonIndex();
+
+ FREE_AND_SET_NULL_IF_SET(gMonSummaryScreen);
+ FREE_AND_SET_NULL_IF_SET(gUnknown_203B144);
+}
+
+void sub_8137EE8(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_8137F00(void)
+{
+ u8 i;
+
+ for (i = 0; i < 11; i++)
+ {
+ if (gUnknown_203B160->unk2C[i] < 240)
+ {
+ gUnknown_203B160->unk2C[i] += 60;
+ gUnknown_203B160->sprite00[i]->pos1.x = gUnknown_203B160->unk2C[i] + 60;
+ }
+
+ if (i >= 9)
+ continue;
+
+ if (gUnknown_203B15C->unk28[i] < 240)
+ {
+ gUnknown_203B15C->unk28[i] += 60;
+ gUnknown_203B15C->sprite00[i]->pos1.x = gUnknown_203B15C->unk28[i] + 60;
+ }
+ }
+}
+
+void sub_8137F68(void)
+{
+ u8 i;
+
+ for (i = 0; i < 11; i++)
+ {
+ if (gUnknown_203B160->unk2C[i] > 156 + (8 * i))
+ {
+ gUnknown_203B160->unk2C[i] -= 60;
+
+ 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];
+ }
+
+ if (i >= 9)
+ continue;
+
+ if (gUnknown_203B15C->unk28[i] > 172 + (8 * i))
+ {
+ gUnknown_203B15C->unk28[i] -= 60;
+
+ 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];
+ }
+ }
+}
+
+void sub_8137FF4(void)
+{
+ if (gMonSummaryScreen->unk324C < 240)
+ {
+ gMonSummaryScreen->unk324C += 60;
+ if (gMonSummaryScreen->unk324C > 240)
+ gMonSummaryScreen->unk324C = 240;
+
+ if (gMonSummaryScreen->unk3238 == 0)
+ SetGpuReg(REG_OFFSET_BG2HOFS, -gMonSummaryScreen->unk324C);
+ else
+ SetGpuReg(REG_OFFSET_BG1HOFS, -gMonSummaryScreen->unk324C);
+ }
+}
+
+void sub_813805C(void)
+{
+ if (gMonSummaryScreen->unk324C >= 60)
+ {
+ gMonSummaryScreen->unk324C -= 60;
+ if (gMonSummaryScreen->unk324C < 0)
+ gMonSummaryScreen->unk324C = 0;
+
+ if (gMonSummaryScreen->unk3238 == 0)
+ SetGpuReg(REG_OFFSET_BG1HOFS, -gMonSummaryScreen->unk324C);
+ else
+ SetGpuReg(REG_OFFSET_BG2HOFS, -gMonSummaryScreen->unk324C);
+
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ SetGpuReg(REG_OFFSET_BG0HOFS, -gMonSummaryScreen->unk324C);
+ }
+}
+
+void sub_81380F0(void)
+{
+ if (gMonSummaryScreen->unk3224 == 1)
+ {
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ sub_8137FF4();
+ else
+ sub_813805C();
+ }
+ else
+ {
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES)
+ sub_813805C();
+ else
+ sub_8137FF4();
+ }
+}
+
+void sub_8138134(void)
+{
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS
+ && gMonSummaryScreen->unk3224 == 0)
+ sub_8137F68();
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES
+ && gMonSummaryScreen->unk3224 == 1)
+ sub_8137F00();
+}
+
+void sub_813817C(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+
+ if (gMonSummaryScreen->unk3244 == FALSE)
+ return;
+
+ sub_81380F0();
+ sub_8138134();
+}
+
+void sub_81381AC(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+}
+
+void sub_81381C0(void)
+{
+ SetVBlankCallback(sub_813817C);
+}
+
+void sub_81381D0(void)
+{
+ u8 i;
+
+ InitWindows(gUnknown_8463F9C);
+
+ for (i = 0; i < 3; i++)
+ gMonSummaryScreen->unk3000[i] = AddWindow(&gUnknown_8463F0C[i]);
+
+ for (i = 0; i < 4; i++)
+ switch (gMonSummaryScreen->curPageIndex)
+ {
+ case PSS_PAGE_INFO:
+ gMonSummaryScreen->unk3000[i + 3] = AddWindow(&gUnknown_8463F3C[i]);
+ break;
+ case PSS_PAGE_SKILLS:
+ gMonSummaryScreen->unk3000[i + 3] = AddWindow(&gUnknown_8463F5C[i]);
+ break;
+ case PSS_PAGE_MOVES:
+ case PSS_PAGE_MOVES_INFO:
+ gMonSummaryScreen->unk3000[i + 3] = AddWindow(&gUnknown_8463F7C[i]);
+ break;
+ default:
+ break;
+ }
+}
+
+void sub_8138280(u8 curPageIndex)
+{
+ u8 i;
+ u32 bgPriority1 = GetGpuReg(REG_OFFSET_BG1CNT) & 3;
+ u32 bgPriority2 = GetGpuReg(REG_OFFSET_BG2CNT) & 3;
+
+ for (i = 0; i < 7; i++)
+ gMonSummaryScreen->unk3000[i] = 0xff;
+
+ if ((gMonSummaryScreen->unk3224 == 1 && gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ || (gMonSummaryScreen->unk3224 == 0 && gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES))
+ {
+ if (bgPriority2 > bgPriority1)
+ for (i = 0; i < 3; i++)
+ gMonSummaryScreen->unk3000[i] = AddWindow(&gUnknown_8463F24[i]);
+ else
+ for (i = 0; i < 3; i++)
+ gMonSummaryScreen->unk3000[i] = AddWindow(&gUnknown_8463F0C[i]);
+ }
+ else
+ {
+ if (bgPriority2 > bgPriority1)
+ for (i = 0; i < 3; i++)
+ gMonSummaryScreen->unk3000[i] = AddWindow(&gUnknown_8463F0C[i]);
+ else
+ for (i = 0; i < 3; i++)
+ gMonSummaryScreen->unk3000[i] = AddWindow(&gUnknown_8463F24[i]);
+ }
+
+ for (i = 0; i < 4; i++)
+ switch (curPageIndex)
+ {
+ case PSS_PAGE_INFO:
+ gMonSummaryScreen->unk3000[i + 3] = AddWindow(&gUnknown_8463F3C[i]);
+ break;
+ case PSS_PAGE_SKILLS:
+ default:
+ gMonSummaryScreen->unk3000[i + 3] = AddWindow(&gUnknown_8463F5C[i]);
+ break;
+ case PSS_PAGE_MOVES:
+ case PSS_PAGE_MOVES_INFO:
+ gMonSummaryScreen->unk3000[i + 3] = AddWindow(&gUnknown_8463F7C[i]);
+ break;
+ }
+}
+
+void sub_8138414(u8 curPageIndex)
+{
+ u8 i;
+
+ for (i = 0; i < 7; i++)
+ RemoveWindow(gMonSummaryScreen->unk3000[i]);
+
+}
+
+void sub_8138440(void)
+{
+ switch (gMonSummaryScreen->curPageIndex)
+ {
+ case PSS_PAGE_INFO:
+ SetHelpContext(HELPCONTEXT_POKEMON_INFO);
+ break;
+ case PSS_PAGE_SKILLS:
+ SetHelpContext(HELPCONTEXT_POKEMON_SKILLS);
+ break;
+ case PSS_PAGE_MOVES:
+ case PSS_PAGE_MOVES_INFO:
+ SetHelpContext(HELPCONTEXT_POKEMON_MOVES);
+ break;
+ }
+}
+
+u8 sub_813847C(struct Pokemon * mon)
+{
+ u8 i;
+ u8 multiplayerId;
+ u32 trainerId = 0;
+
+ if (gMonSummaryScreen->monList.mons == gEnemyParty)
+ {
+ multiplayerId = GetMultiplayerId() ^ 1;
+ trainerId = gLinkPlayers[multiplayerId].trainerId & 0xffff;
+ StringCopy(gMonSummaryScreen->summary.unk304C[0], gLinkPlayers[multiplayerId].name);
+ }
+ else
+ {
+ trainerId = GetPlayerTrainerId() & 0xffff;
+ StringCopy(gMonSummaryScreen->summary.unk304C[0], gSaveBlock2Ptr->playerName);
+ }
+
+ if (trainerId != (GetMonData(mon, MON_DATA_OT_ID) & 0xffff))
+ return FALSE;
+
+ GetMonData(mon, MON_DATA_OT_NAME, gMonSummaryScreen->summary.unk304C[1]);
+
+ if (!StringCompareWithoutExtCtrlCodes(gMonSummaryScreen->summary.unk304C[0], gMonSummaryScreen->summary.unk304C[1]))
+ return TRUE;
+ else
+ return FALSE;
+
+ return TRUE;
+}
+
+#define SUB_8138538_BASE_TILE_NUM (345)
+
+void sub_8138538(void)
+{
+ switch (gMonSummaryScreen->curPageIndex)
+ {
+ case PSS_PAGE_INFO:
+ if (!gMonSummaryScreen->isEgg)
+ {
+ FillBgTilemapBufferRect(3, 17 + SUB_8138538_BASE_TILE_NUM, 13, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 33 + SUB_8138538_BASE_TILE_NUM, 13, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 16 + SUB_8138538_BASE_TILE_NUM, 14, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 32 + SUB_8138538_BASE_TILE_NUM, 14, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 18 + SUB_8138538_BASE_TILE_NUM, 15, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 34 + SUB_8138538_BASE_TILE_NUM, 15, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 20 + SUB_8138538_BASE_TILE_NUM, 16, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 36 + SUB_8138538_BASE_TILE_NUM, 16, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 18 + SUB_8138538_BASE_TILE_NUM, 17, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 34 + SUB_8138538_BASE_TILE_NUM, 17, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 21 + SUB_8138538_BASE_TILE_NUM, 18, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 37 + SUB_8138538_BASE_TILE_NUM, 18, 1, 1, 1, 0);
+ }
+ else
+ {
+ FillBgTilemapBufferRect(3, 17 + SUB_8138538_BASE_TILE_NUM, 13, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 33 + SUB_8138538_BASE_TILE_NUM, 13, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 48 + SUB_8138538_BASE_TILE_NUM, 14, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 64 + SUB_8138538_BASE_TILE_NUM, 14, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 2 + SUB_8138538_BASE_TILE_NUM, 15, 0, 4, 2, 0);
+ }
+ break;
+ case PSS_PAGE_SKILLS:
+ FillBgTilemapBufferRect(3, 49 + SUB_8138538_BASE_TILE_NUM, 13, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 65 + SUB_8138538_BASE_TILE_NUM, 13, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 1 + SUB_8138538_BASE_TILE_NUM, 14, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 19 + SUB_8138538_BASE_TILE_NUM, 14, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 17 + SUB_8138538_BASE_TILE_NUM, 15, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 33 + SUB_8138538_BASE_TILE_NUM, 15, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 16 + SUB_8138538_BASE_TILE_NUM, 16, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 32 + SUB_8138538_BASE_TILE_NUM, 16, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 18 + SUB_8138538_BASE_TILE_NUM, 17, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 34 + SUB_8138538_BASE_TILE_NUM, 17, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 21 + SUB_8138538_BASE_TILE_NUM, 18, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 37 + SUB_8138538_BASE_TILE_NUM, 18, 1, 1, 1, 0);
+ break;
+ case PSS_PAGE_MOVES:
+ FillBgTilemapBufferRect(3, 49 + SUB_8138538_BASE_TILE_NUM, 13, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 65 + SUB_8138538_BASE_TILE_NUM, 13, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 1 + SUB_8138538_BASE_TILE_NUM, 14, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 19 + SUB_8138538_BASE_TILE_NUM, 14, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 49 + SUB_8138538_BASE_TILE_NUM, 15, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 65 + SUB_8138538_BASE_TILE_NUM, 15, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 1 + SUB_8138538_BASE_TILE_NUM, 16, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 19 + SUB_8138538_BASE_TILE_NUM, 16, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 17 + SUB_8138538_BASE_TILE_NUM, 17, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 33 + SUB_8138538_BASE_TILE_NUM, 17, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 48 + SUB_8138538_BASE_TILE_NUM, 18, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 64 + SUB_8138538_BASE_TILE_NUM, 18, 1, 1, 1, 0);
+ break;
+ case PSS_PAGE_MOVES_INFO:
+ if (gMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ {
+ FillBgTilemapBufferRect(3, 1 + SUB_8138538_BASE_TILE_NUM, 13, 0, 4, 1, 0);
+ FillBgTilemapBufferRect(3, 19 + SUB_8138538_BASE_TILE_NUM, 13, 1, 4, 1, 0);
+ }
+ else
+ {
+ FillBgTilemapBufferRect(3, 49 + SUB_8138538_BASE_TILE_NUM, 13, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 65 + SUB_8138538_BASE_TILE_NUM, 13, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 1 + SUB_8138538_BASE_TILE_NUM, 14, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 19 + SUB_8138538_BASE_TILE_NUM, 14, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 49 + SUB_8138538_BASE_TILE_NUM, 15, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 65 + SUB_8138538_BASE_TILE_NUM, 15, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 1 + SUB_8138538_BASE_TILE_NUM, 16, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 19 + SUB_8138538_BASE_TILE_NUM, 16, 1, 1, 1, 0);
+ }
+ FillBgTilemapBufferRect(3, 50 + SUB_8138538_BASE_TILE_NUM, 17, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 66 + SUB_8138538_BASE_TILE_NUM, 17, 1, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 48 + SUB_8138538_BASE_TILE_NUM, 18, 0, 1, 1, 0);
+ FillBgTilemapBufferRect(3, 64 + SUB_8138538_BASE_TILE_NUM, 18, 1, 1, 1, 0);
+ break;
+ }
+}
+
+void sub_8138A38(void)
+{
+ switch (gMonSummaryScreen->curPageIndex)
+ {
+ case PSS_PAGE_INFO:
+ if (!gMonSummaryScreen->isEgg)
+ {
+ BlitMoveInfoIcon(gMonSummaryScreen->unk3000[3], gMonSummaryScreen->unk3220[0] + 1, 47, 35);
+
+ if (gMonSummaryScreen->unk3220[0] != gMonSummaryScreen->unk3220[1])
+ BlitMoveInfoIcon(gMonSummaryScreen->unk3000[3], gMonSummaryScreen->unk3220[1] + 1, 83, 35);
+ }
+ break;
+ case PSS_PAGE_SKILLS:
+ break;
+ case PSS_PAGE_MOVES:
+ break;
+ case PSS_PAGE_MOVES_INFO:
+ FillWindowPixelBuffer(gMonSummaryScreen->unk3000[6], 0);
+ BlitMoveInfoIcon(gMonSummaryScreen->unk3000[6], gMonSummaryScreen->unk3220[0] + 1, 0, 3);
+
+ if (gMonSummaryScreen->unk3220[0] != gMonSummaryScreen->unk3220[1])
+ BlitMoveInfoIcon(gMonSummaryScreen->unk3000[6], gMonSummaryScreen->unk3220[1] + 1, 36, 3);
+
+ PutWindowTilemap(gMonSummaryScreen->unk3000[6]);
+ break;
+ }
+}
+
+u8 GetLastViewedMonIndex(void)
+{
+ return gLastViewedMonIndex;
+}
+
+u8 GetMoveSlotToReplace(void)
+{
+ return gUnknown_203B16E;
+}
+
+void sub_8138B38(u8 mode)
+{
+ gMonSummaryScreen->mode = mode;
+}
+
+bool32 sub_8138B4C(void)
+{
+ if (!IsUpdateLinkStateCBActive()
+ && IsMultiBattle() == TRUE
+ && gReceivedRemoteLinkPlayers == 1
+ && (gLastViewedMonIndex >= 4 || gLastViewedMonIndex == 1))
+ return TRUE;
+
+ return FALSE;
+}
+
+void sub_8138B8C(struct Pokemon * mon)
+{
+ if (!gMonSummaryScreen->isBoxMon)
+ {
+ struct Pokemon * partyMons = gMonSummaryScreen->monList.mons;
+ *mon = partyMons[GetLastViewedMonIndex()];
+ }
+ else
+ {
+ struct BoxPokemon * boxMons = gMonSummaryScreen->monList.boxMons;
+ BoxMonToMon(&boxMons[GetLastViewedMonIndex()], mon);
+ }
+}
+
+u16 sub_8138BEC(struct Pokemon * mon, u8 moveSlot)
+{
+ u16 move;
+
+ switch (moveSlot)
+ {
+ case 0:
+ move = GetMonData(mon, MON_DATA_MOVE1);
+ break;
+ case 1:
+ move = GetMonData(mon, MON_DATA_MOVE2);
+ break;
+ case 2:
+ move = GetMonData(mon, MON_DATA_MOVE3);
+ break;
+ default:
+ move = GetMonData(mon, MON_DATA_MOVE4);
+ }
+
+ return move;
+}
+
+u16 sub_8138C24(struct Pokemon * mon, u8 moveSlot)
+{
+ u16 pp;
+
+ switch (moveSlot)
+ {
+ case 0:
+ pp = GetMonData(mon, MON_DATA_PP1);
+ break;
+ case 1:
+ pp = GetMonData(mon, MON_DATA_PP2);
+ break;
+ case 2:
+ pp = GetMonData(mon, MON_DATA_PP3);
+ break;
+ default:
+ pp = GetMonData(mon, MON_DATA_PP4);
+ }
+ return pp;
+}
+
+u8 sub_8138C5C(u32 status)
+{
+ if (GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_HP) == 0)
+ return AILMENT_FNT;
+
+ if ((status & STATUS1_PSN_ANY) != 0)
+ return AILMENT_PSN;
+
+ if ((status & STATUS1_PARALYSIS) != 0)
+ return AILMENT_PRZ;
+
+ if ((status & STATUS1_SLEEP) != 0)
+ return AILMENT_SLP;
+
+ if ((status & STATUS1_FREEZE) != 0)
+ return AILMENT_FRZ;
+
+ if ((status & STATUS1_BURN) != 0)
+ return AILMENT_BRN;
+
+ if (CheckPartyPokerus(&gMonSummaryScreen->currentMon, 0))
+ return AILMENT_PKRS;
+
+ return AILMENT_NONE;
+}
+
+void sub_8138CD8(u8 id)
+{
+ u8 i;
+
+ switch (gMonSummaryScreen->unk3288)
+ {
+ case 0:
+ if (MenuHelpers_CallLinkSomething() == TRUE || sub_800B270() == TRUE)
+ return;
+
+ if (JOY_NEW(DPAD_UP))
+ {
+ if (gUnknown_203B16D > 0)
+ {
+ gMonSummaryScreen->unk3288 = 2;
+ PlaySE(SE_SELECT);
+
+ for (i = gUnknown_203B16D; i > 0; i--)
+ if (gMonSummaryScreen->unk325A[i - 1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_203B16D = i - 1;
+ return;
+ }
+ }
+ else
+ {
+ gUnknown_203B16D = 4;
+ gMonSummaryScreen->unk3288 = 2;
+ PlaySE(SE_SELECT);
+
+ if (gMonSummaryScreen->unk3268 == TRUE)
+ for (i = gUnknown_203B16D; i > 0; i--)
+ if (gMonSummaryScreen->unk325A[i - 1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_203B16D = i - 1;
+ return;
+ }
+ }
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ if (gUnknown_203B16D < 4)
+ {
+ u8 limit = 4;
+
+ gMonSummaryScreen->unk3288 = 2;
+
+ if (gMonSummaryScreen->unk3268 == TRUE)
+ {
+ if (gUnknown_203B16D == 5 - 2)
+ {
+ gUnknown_203B16D = 0;
+ gMonSummaryScreen->unk3288 = 2;
+ PlaySE(SE_SELECT);
+ return;
+ }
+ limit--;
+ }
+
+ for (i = gUnknown_203B16D; i < limit; i++)
+ if (gMonSummaryScreen->unk325A[i + 1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_203B16D = i + 1;
+ return;
+ }
+
+ if (!gMonSummaryScreen->unk3268)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_203B16D = i;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_203B16D = 0;
+ }
+
+ return;
+ }
+ else if (gUnknown_203B16D == 4)
+ {
+ gUnknown_203B16D = 0;
+ gMonSummaryScreen->unk3288 = 2;
+ PlaySE(SE_SELECT);
+ return;
+ }
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_203B16D == 4)
+ {
+ gUnknown_203B16D = 0;
+ gUnknown_203B16E = 0;
+ gMonSummaryScreen->unk3268 = FALSE;
+ sub_813A0E8(1);
+ gMonSummaryScreen->unk3224 = 0;
+ sub_8138414(gMonSummaryScreen->curPageIndex);
+ gMonSummaryScreen->curPageIndex--;
+ gMonSummaryScreen->unk3288 = 1;
+ return;
+ }
+
+ if (gMonSummaryScreen->unk3268 != TRUE)
+ {
+ if (gMonSummaryScreen->isEnemyParty == FALSE
+ && gMain.inBattle == 0
+ && gReceivedRemoteLinkPlayers == 0)
+ {
+ gUnknown_203B16E = gUnknown_203B16D;
+ gMonSummaryScreen->unk3268 = TRUE;
+ }
+ return;
+ }
+ else
+ {
+ gMonSummaryScreen->unk3268 = FALSE;
+
+ if (gUnknown_203B16D == gUnknown_203B16E)
+ return;
+
+ if (gMonSummaryScreen->isBoxMon == 0)
+ sub_81390B0();
+ else
+ sub_81391EC();
+
+ sub_8139328(&gMonSummaryScreen->currentMon);
+ sub_81367B0();
+ gMonSummaryScreen->unk3288 = 2;
+ return;
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ if (gMonSummaryScreen->unk3268 == TRUE)
+ {
+ gUnknown_203B16E = gUnknown_203B16D;
+ gMonSummaryScreen->unk3268 = FALSE;
+ return;
+ }
+
+ if (gUnknown_203B16D == 4)
+ {
+ gUnknown_203B16D = 0;
+ gUnknown_203B16E = 0;
+ }
+
+ sub_813A0E8(1);
+ gMonSummaryScreen->unk3224 = 0;
+ sub_8138414(gMonSummaryScreen->curPageIndex);
+ gMonSummaryScreen->curPageIndex--;
+ gMonSummaryScreen->unk3288 = 1;
+ }
+ break;
+ case 1:
+ gTasks[gMonSummaryScreen->unk3018].func = sub_81351A0;
+ gMonSummaryScreen->unk3288 = 0;
+ break;
+ case 2:
+ sub_8136F4C();
+ sub_81374E8();
+ sub_8137BD0();
+ gMonSummaryScreen->unk3288 = 3;
+ break;
+ case 3:
+ if (MenuHelpers_CallLinkSomething() == TRUE || sub_800B270() == TRUE)
+ return;
+
+ CopyWindowToVram(gMonSummaryScreen->unk3000[3], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[5], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[6], 2);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(3);
+ gMonSummaryScreen->unk3288 = 0;
+ break;
+ default:
+ break;
+ }
+}
+
+void sub_81390B0(void)
+{
+ struct Pokemon * partyMons;
+ struct Pokemon * mon;
+
+ u16 move1, move2;
+ u8 pp1, pp2;
+ u8 allMovesPPBonuses;
+ u8 move1ppBonus, move2ppBonus;
+
+ partyMons = gMonSummaryScreen->monList.mons;
+ mon = &partyMons[GetLastViewedMonIndex()];
+
+ move1 = GetMonData(mon, MON_DATA_MOVE1 + gUnknown_203B16D);
+ move2 = GetMonData(mon, MON_DATA_MOVE1 + gUnknown_203B16E);
+
+ pp1 = GetMonData(mon, MON_DATA_PP1 + gUnknown_203B16D);
+ pp2 = GetMonData(mon, MON_DATA_PP1 + gUnknown_203B16E);
+
+ allMovesPPBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+
+ move1ppBonus = (allMovesPPBonuses & gPPUpGetMask[gUnknown_203B16D]) >> (gUnknown_203B16D * 2);
+ move2ppBonus = (allMovesPPBonuses & gPPUpGetMask[gUnknown_203B16E]) >> (gUnknown_203B16E * 2);
+
+ allMovesPPBonuses &= ~gPPUpGetMask[gUnknown_203B16D];
+ allMovesPPBonuses &= ~gPPUpGetMask[gUnknown_203B16E];
+ allMovesPPBonuses |= (move1ppBonus << (gUnknown_203B16E * 2)) + (move2ppBonus << (gUnknown_203B16D * 2));
+
+ SetMonData(mon, MON_DATA_MOVE1 + gUnknown_203B16D, (u8 *)&move2);
+ SetMonData(mon, MON_DATA_MOVE1 + gUnknown_203B16E, (u8 *)&move1);
+ SetMonData(mon, MON_DATA_PP1 + gUnknown_203B16D, &pp2);
+ SetMonData(mon, MON_DATA_PP1 + gUnknown_203B16E, &pp1);
+ SetMonData(mon, MON_DATA_PP_BONUSES, &allMovesPPBonuses);
+}
+
+void sub_81391EC(void)
+{
+ struct BoxPokemon * boxMons;
+ struct BoxPokemon * boxMon;
+
+ u16 move1, move2;
+ u8 pp1, pp2;
+ u8 allMovesPPBonuses;
+ u8 move1ppBonus, move2ppBonus;
+
+ boxMons = gMonSummaryScreen->monList.boxMons;
+ boxMon = &boxMons[GetLastViewedMonIndex()];
+
+ move1 = GetBoxMonData(boxMon, MON_DATA_MOVE1 + gUnknown_203B16D);
+ move2 = GetBoxMonData(boxMon, MON_DATA_MOVE1 + gUnknown_203B16E);
+
+ pp1 = GetBoxMonData(boxMon, MON_DATA_PP1 + gUnknown_203B16D);
+ pp2 = GetBoxMonData(boxMon, MON_DATA_PP1 + gUnknown_203B16E);
+
+ allMovesPPBonuses = GetBoxMonData(boxMon, MON_DATA_PP_BONUSES);
+
+ move1ppBonus = (allMovesPPBonuses & gPPUpGetMask[gUnknown_203B16D]) >> (gUnknown_203B16D * 2);
+ move2ppBonus = (allMovesPPBonuses & gPPUpGetMask[gUnknown_203B16E]) >> (gUnknown_203B16E * 2);
+
+ allMovesPPBonuses &= ~gPPUpGetMask[gUnknown_203B16D];
+ allMovesPPBonuses &= ~gPPUpGetMask[gUnknown_203B16E];
+ allMovesPPBonuses |= (move1ppBonus << (gUnknown_203B16E * 2)) + (move2ppBonus << (gUnknown_203B16D * 2));
+
+ SetBoxMonData(boxMon, MON_DATA_MOVE1 + gUnknown_203B16D, (u8 *)&move2);
+ SetBoxMonData(boxMon, MON_DATA_MOVE1 + gUnknown_203B16E, (u8 *)&move1);
+ SetBoxMonData(boxMon, MON_DATA_PP1 + gUnknown_203B16D, &pp2);
+ SetBoxMonData(boxMon, MON_DATA_PP1 + gUnknown_203B16E, &pp1);
+ SetBoxMonData(boxMon, MON_DATA_PP_BONUSES, &allMovesPPBonuses);
+}
+
+void sub_8139328(struct Pokemon * mon)
+{
+ if (!gMonSummaryScreen->isBoxMon)
+ {
+ struct Pokemon * partyMons;
+ partyMons = gMonSummaryScreen->monList.mons;
+ *mon = partyMons[GetLastViewedMonIndex()];
+ }
+ else
+ {
+ struct BoxPokemon * boxMons;
+ boxMons = gMonSummaryScreen->monList.boxMons;
+ BoxMonToMon(&boxMons[GetLastViewedMonIndex()], mon);
+ }
+}