diff options
author | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-07-03 17:42:40 -0400 |
---|---|---|
committer | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-07-03 17:42:40 -0400 |
commit | f8247cdd793147a6f8d55971027558ad32fd4014 (patch) | |
tree | d260f933eb554097fa460bf89a0cc34b78c7742d | |
parent | 9453c154d70e22f806a057aef4584bed8ca7986a (diff) |
pokemon_summary_screen.c, part 9.
-rw-r--r-- | asm/pokemon_summary_screen.s | 2971 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 4 | ||||
-rw-r--r-- | include/strings.h | 6 | ||||
-rw-r--r-- | src/pokemon_summary_screen.c | 994 |
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); + } +} |