summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokemon_summary_screen.s817
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokemon_summary_screen.c272
3 files changed, 269 insertions, 821 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
deleted file mode 100644
index 6b007b581..000000000
--- a/asm/pokemon_summary_screen.s
+++ /dev/null
@@ -1,817 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_813B20C
-sub_813B20C: @ 813B20C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _0813B258 @ =gMonSummaryScreen
- ldr r0, [r2]
- ldr r3, _0813B25C @ =0x000032f4
- adds r1, r0, r3
- ldr r7, [r1]
- movs r6, 0
- ldr r1, _0813B260 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B26C
- lsls r0, r4, 24
- asrs r3, r0, 24
- movs r1, 0x1
- negs r1, r1
- adds r5, r0, 0
- ldr r6, _0813B264 @ =gLastViewedMonIndex
- cmp r3, r1
- bne _0813B23E
- ldrb r0, [r6]
- cmp r0, 0
- beq _0813B294
-_0813B23E:
- asrs r0, r5, 24
- cmp r0, 0x1
- bne _0813B252
- ldr r0, [r2]
- ldr r2, _0813B268 @ =0x00003210
- adds r0, r2
- ldrb r1, [r6]
- ldrb r0, [r0]
- cmp r1, r0
- bcs _0813B294
-_0813B252:
- ldrb r0, [r6]
- adds r0, r4
- b _0813B2BC
- .align 2, 0
-_0813B258: .4byte gMonSummaryScreen
-_0813B25C: .4byte 0x000032f4
-_0813B260: .4byte 0x00003214
-_0813B264: .4byte gLastViewedMonIndex
-_0813B268: .4byte 0x00003210
-_0813B26C:
- lsls r5, r4, 24
-_0813B26E:
- lsls r0, r6, 24
- asrs r0, 24
- asrs r1, r5, 24
- adds r0, r1
- lsls r0, 24
- ldr r4, _0813B29C @ =gLastViewedMonIndex
- lsrs r6, r0, 24
- asrs r0, 24
- ldrb r3, [r4]
- adds r1, r0, r3
- cmp r1, 0
- blt _0813B294
- ldr r0, _0813B2A0 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r2, _0813B2A4 @ =0x00003210
- adds r0, r2
- ldrb r0, [r0]
- cmp r1, r0
- ble _0813B2A8
-_0813B294:
- movs r0, 0x1
- negs r0, r0
- b _0813B2C0
- .align 2, 0
-_0813B29C: .4byte gLastViewedMonIndex
-_0813B2A0: .4byte gMonSummaryScreen
-_0813B2A4: .4byte 0x00003210
-_0813B2A8:
- movs r0, 0x64
- muls r0, r1
- adds r0, r7, r0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0813B26E
- ldrb r0, [r4]
- adds r0, r6
-_0813B2BC:
- lsls r0, 24
- asrs r0, 24
-_0813B2C0:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_813B20C
-
- thumb_func_start sub_813B2C8
-sub_813B2C8: @ 813B2C8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0813B2FC
- ldr r0, _0813B2F4 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _0813B2F8 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B2F0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0813B2FC
-_0813B2F0:
- movs r0, 0x1
- b _0813B2FE
- .align 2, 0
-_0813B2F4: .4byte gMonSummaryScreen
-_0813B2F8: .4byte 0x00003214
-_0813B2FC:
- movs r0, 0
-_0813B2FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_813B2C8
-
- thumb_func_start sub_813B304
-sub_813B304: @ 813B304
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
-_0813B30A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- beq _0813B33C
- ldr r0, _0813B334 @ =gUnknown_8463FB8
- adds r5, r4, r0
- ldrb r1, [r5]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0813B338 @ =gPlayerParty
- adds r0, r1
- bl sub_813B2C8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813B30A
- movs r0, 0
- ldrsb r0, [r5, r0]
- b _0813B340
- .align 2, 0
-_0813B334: .4byte gUnknown_8463FB8
-_0813B338: .4byte gPlayerParty
-_0813B33C:
- movs r0, 0x1
- negs r0, r0
-_0813B340:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_813B304
-
- thumb_func_start sub_813B348
-sub_813B348: @ 813B348
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
-_0813B34E:
- cmp r4, 0
- beq _0813B380
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813B378 @ =gUnknown_8463FB8
- adds r5, r4, r0
- ldrb r1, [r5]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0813B37C @ =gPlayerParty
- adds r0, r1
- bl sub_813B2C8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813B34E
- movs r0, 0
- ldrsb r0, [r5, r0]
- b _0813B384
- .align 2, 0
-_0813B378: .4byte gUnknown_8463FB8
-_0813B37C: .4byte gPlayerParty
-_0813B380:
- movs r0, 0x1
- negs r0, r0
-_0813B384:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_813B348
-
- thumb_func_start sub_813B38C
-sub_813B38C: @ 813B38C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- movs r5, 0
- b _0813B39E
-_0813B398:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0813B39E:
- cmp r5, 0x5
- bhi _0813B3B6
- ldr r4, _0813B3D4 @ =gUnknown_8463FB8
- adds r4, r5, r4
- bl GetLastViewedMonIndex
- ldrb r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _0813B398
- adds r6, r5, 0
-_0813B3B6:
- lsls r0, r7, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _0813B3C6
- cmp r6, 0
- beq _0813B3CE
-_0813B3C6:
- cmp r1, 0x1
- bne _0813B3D8
- cmp r6, 0x5
- bne _0813B3E0
-_0813B3CE:
- movs r0, 0x1
- negs r0, r0
- b _0813B3EA
- .align 2, 0
-_0813B3D4: .4byte gUnknown_8463FB8
-_0813B3D8:
- adds r0, r6, 0
- bl sub_813B348
- b _0813B3E6
-_0813B3E0:
- adds r0, r6, 0
- bl sub_813B304
-_0813B3E6:
- lsls r0, 24
- asrs r0, 24
-_0813B3EA:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_813B38C
-
- thumb_func_start sub_813B3F0
-sub_813B3F0: @ 813B3F0
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0813B414 @ =gMonSummaryScreen
- ldr r0, [r1]
- ldr r4, _0813B418 @ =0x0000328c
- adds r2, r0, r4
- ldrb r0, [r2]
- adds r5, r1, 0
- cmp r0, 0xB
- bls _0813B40A
- b _0813B73C
-_0813B40A:
- lsls r0, 2
- ldr r1, _0813B41C @ =_0813B420
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813B414: .4byte gMonSummaryScreen
-_0813B418: .4byte 0x0000328c
-_0813B41C: .4byte _0813B420
- .align 2, 0
-_0813B420:
- .4byte _0813B450
- .4byte _0813B478
- .4byte _0813B486
- .4byte _0813B4DC
- .4byte _0813B568
- .4byte _0813B5FC
- .4byte _0813B602
- .4byte _0813B620
- .4byte _0813B636
- .4byte _0813B654
- .4byte _0813B678
- .4byte _0813B70C
-_0813B450:
- bl StopCryAndClearCrySongs
- ldr r0, _0813B468 @ =gUnknown_203B16D
- movs r1, 0
- strb r1, [r0]
- ldr r0, _0813B46C @ =gUnknown_203B16E
- strb r1, [r0]
- ldr r0, _0813B470 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r0, _0813B474 @ =0x0000328c
- adds r1, r0
- b _0813B72C
- .align 2, 0
-_0813B468: .4byte gUnknown_203B16D
-_0813B46C: .4byte gUnknown_203B16E
-_0813B470: .4byte gMonSummaryScreen
-_0813B474: .4byte 0x0000328c
-_0813B478:
- bl sub_8139C80
- bl sub_8139F20
- bl sub_8139D90
- b _0813B724
-_0813B486:
- ldr r0, [r5]
- ldr r4, _0813B4D0 @ =0x00003290
- adds r0, r4
- bl sub_8138B8C
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0x2D
- bl GetMonData
- ldr r1, [r5]
- movs r2, 0xC8
- lsls r2, 6
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0x4
- bl GetMonData
- ldr r1, [r5]
- ldr r2, _0813B4D4 @ =0x00003204
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r2, r0, r2
- ldrb r1, [r2]
- cmp r1, 0x1
- bne _0813B4C6
- subs r4, 0x90
- adds r0, r4
- strb r1, [r0]
-_0813B4C6:
- ldr r1, [r5]
- ldr r0, _0813B4D8 @ =0x0000328c
- adds r1, r0
- b _0813B72C
- .align 2, 0
-_0813B4D0: .4byte 0x00003290
-_0813B4D4: .4byte 0x00003204
-_0813B4D8: .4byte 0x0000328c
-_0813B4DC:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r4, _0813B52C @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813B530 @ =0x00003290
- adds r0, r1
- bl IsMonShiny
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813B538
- ldr r0, [r4]
- movs r2, 0xC8
- lsls r2, 6
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B538
- ldr r4, _0813B534 @ =gUnknown_8E9B3D0
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- subs r4, 0x20
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- b _0813B550
- .align 2, 0
-_0813B52C: .4byte gMonSummaryScreen
-_0813B530: .4byte 0x00003290
-_0813B534: .4byte gUnknown_8E9B3D0
-_0813B538:
- ldr r4, _0813B55C @ =gUnknown_8E9B310
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- adds r4, 0x20
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
-_0813B550:
- ldr r0, _0813B560 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r4, _0813B564 @ =0x0000328c
- adds r1, r4
- b _0813B72C
- .align 2, 0
-_0813B55C: .4byte gUnknown_8E9B310
-_0813B560: .4byte gMonSummaryScreen
-_0813B564: .4byte 0x0000328c
-_0813B568:
- ldr r4, _0813B5A8 @ =gMonSummaryScreen
- ldr r1, [r4]
- ldr r2, _0813B5AC @ =0x00003214
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B5DC
- subs r2, 0x14
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0813B5B8
- adds r2, 0x3C
- adds r0, r1, r2
- ldrb r0, [r0]
- ldr r1, _0813B5B0 @ =gUnknown_8E9BBCC
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r0, [r4]
- movs r4, 0xC9
- lsls r4, 6
- adds r0, r4
- ldrb r0, [r0]
- ldr r1, _0813B5B4 @ =gUnknown_8E9B750
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- b _0813B5DC
- .align 2, 0
-_0813B5A8: .4byte gMonSummaryScreen
-_0813B5AC: .4byte 0x00003214
-_0813B5B0: .4byte gUnknown_8E9BBCC
-_0813B5B4: .4byte gUnknown_8E9B750
-_0813B5B8:
- ldr r2, _0813B5E8 @ =0x0000323c
- adds r0, r1, r2
- ldrb r0, [r0]
- ldr r1, _0813B5EC @ =gUnknown_8E9B598
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r0, [r4]
- movs r4, 0xC9
- lsls r4, 6
- adds r0, r4
- ldrb r0, [r0]
- ldr r1, _0813B5F0 @ =gUnknown_8E9B750
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
-_0813B5DC:
- ldr r0, _0813B5F4 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r0, _0813B5F8 @ =0x0000328c
- adds r1, r0
- b _0813B72C
- .align 2, 0
-_0813B5E8: .4byte 0x0000323c
-_0813B5EC: .4byte gUnknown_8E9B598
-_0813B5F0: .4byte gUnknown_8E9B750
-_0813B5F4: .4byte gMonSummaryScreen
-_0813B5F8: .4byte 0x0000328c
-_0813B5FC:
- bl sub_81360D4
- b _0813B724
-_0813B602:
- ldr r0, [r5]
- movs r4, 0xC8
- lsls r4, 6
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B614
- bl sub_8136350
-_0813B614:
- ldr r1, [r5]
- ldr r0, _0813B61C @ =0x0000328c
- adds r1, r0
- b _0813B72C
- .align 2, 0
-_0813B61C: .4byte 0x0000328c
-_0813B620:
- ldr r0, [r5]
- movs r1, 0xC8
- lsls r1, 6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B632
- bl sub_81367B0
-_0813B632:
- ldr r1, [r5]
- b _0813B728
-_0813B636:
- bl sub_8136F4C
- bl sub_81374E8
- bl sub_8137BD0
- ldr r0, _0813B64C @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r4, _0813B650 @ =0x0000328c
- adds r1, r4
- b _0813B72C
- .align 2, 0
-_0813B64C: .4byte gMonSummaryScreen
-_0813B650: .4byte 0x0000328c
-_0813B654:
- bl sub_8138A38
- bl sub_8138538
- ldr r4, _0813B670 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _0813B674 @ =0x00003214
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8137D28
- ldr r1, [r4]
- b _0813B728
- .align 2, 0
-_0813B670: .4byte gMonSummaryScreen
-_0813B674: .4byte 0x00003214
-_0813B678:
- ldr r0, [r5]
- movs r4, 0xC0
- lsls r4, 6
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r5]
- ldr r1, _0813B6F8 @ =0x00003001
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r5]
- ldr r2, _0813B6FC @ =0x00003002
- adds r0, r2
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r5]
- adds r4, 0x6
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r5]
- ldr r1, _0813B700 @ =0x00003003
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r5]
- ldr r2, _0813B704 @ =0x00003004
- adds r0, r2
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r5]
- subs r4, 0x1
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- ldr r1, [r5]
- ldr r0, _0813B708 @ =0x0000328c
- adds r1, r0
- b _0813B72C
- .align 2, 0
-_0813B6F8: .4byte 0x00003001
-_0813B6FC: .4byte 0x00003002
-_0813B700: .4byte 0x00003003
-_0813B704: .4byte 0x00003004
-_0813B708: .4byte 0x0000328c
-_0813B70C:
- bl Overworld_LinkRecvQueueLengthMoreThan2
- cmp r0, 0
- bne _0813B746
- bl sub_800B270
- cmp r0, 0
- bne _0813B746
- bl sub_813AFC4
- bl sub_813B784
-_0813B724:
- ldr r0, _0813B734 @ =gMonSummaryScreen
- ldr r1, [r0]
-_0813B728:
- ldr r2, _0813B738 @ =0x0000328c
- adds r1, r2
-_0813B72C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0813B746
- .align 2, 0
-_0813B734: .4byte gMonSummaryScreen
-_0813B738: .4byte 0x0000328c
-_0813B73C:
- movs r0, 0
- strb r0, [r2]
- adds r0, r3, 0
- bl DestroyTask
-_0813B746:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813B3F0
-
- thumb_func_start sub_813B750
-sub_813B750: @ 813B750
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0x80
- lsls r5, 7
- movs r0, 0
- adds r1, r5, 0
- bl ClearGpuRegBits
- cmp r4, 0x2
- bgt _0813B77E
- cmp r4, 0
- blt _0813B77E
- movs r0, 0
- bl GetGpuReg
- adds r1, r5, 0
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
-_0813B77E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813B750
-
- thumb_func_start sub_813B784
-sub_813B784: @ 813B784
- push {r4,r5,lr}
- ldr r4, _0813B7BC @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r5, _0813B7C0 @ =0x00003290
- adds r0, r5
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0813B7DA
- ldr r0, [r4]
- adds r0, r5
- bl ShouldPlayNormalPokeCry
- cmp r0, 0x1
- bne _0813B7C4
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- movs r2, 0
- bl PlayCry3
- b _0813B7DA
- .align 2, 0
-_0813B7BC: .4byte gMonSummaryScreen
-_0813B7C0: .4byte 0x00003290
-_0813B7C4:
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- movs r2, 0xB
- bl PlayCry3
-_0813B7DA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813B784
-
- thumb_func_start sub_813B7E0
-sub_813B7E0: @ 813B7E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _0813B7EE
- cmp r0, 0x15
- bne _0813B7F2
-_0813B7EE:
- movs r0, 0x1
- b _0813B7F4
-_0813B7F2:
- movs r0, 0
-_0813B7F4:
- pop {r1}
- bx r1
- thumb_func_end sub_813B7E0
-
- thumb_func_start sub_813B7F8
-sub_813B7F8: @ 813B7F8
- push {lr}
- ldr r0, _0813B828 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _0813B82C @ =0x00003290
- adds r0, r1
- movs r1, 0x25
- bl GetMonData
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFC
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bls _0813B824
- cmp r1, 0x2
- beq _0813B824
- cmp r1, 0x1
- beq _0813B824
- cmp r1, 0x3
- bne _0813B830
-_0813B824:
- movs r0, 0x1
- b _0813B832
- .align 2, 0
-_0813B828: .4byte gMonSummaryScreen
-_0813B82C: .4byte 0x00003290
-_0813B830:
- movs r0, 0
-_0813B832:
- pop {r1}
- bx r1
- thumb_func_end sub_813B7F8
-
- thumb_func_start sub_813B838
-sub_813B838: @ 813B838
- push {lr}
- lsls r0, 24
- movs r1, 0xA8
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x6C
- bls _0813B84C
- movs r0, 0
- b _0813B84E
-_0813B84C:
- movs r0, 0x1
-_0813B84E:
- pop {r1}
- bx r1
- thumb_func_end sub_813B838
-
- thumb_func_start sub_813B854
-sub_813B854: @ 813B854
- push {lr}
- sub sp, 0x4
- ldr r3, _0813B86C @ =CB2_ReturnToField
- movs r0, 0
- str r0, [sp]
- movs r1, 0
- movs r2, 0
- bl ShowPokemonSummaryScreen
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0813B86C: .4byte CB2_ReturnToField
- thumb_func_end sub_813B854
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 6f7fa8624..30b9c1b30 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -269,7 +269,6 @@ SECTIONS {
src/menu_indicators.o(.text);
src/pokedex_area_markers.o(.text);
src/pokemon_summary_screen.o(.text);
- asm/pokemon_summary_screen.o(.text);
src/help_system.o(.text);
src/wild_pokemon_area.o(.text);
src/dynamic_placeholder_text_util.o(.text);
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 83fe5ffb0..e06dcb6dd 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -231,7 +231,7 @@ struct PokemonSummaryScreenData
u8 ALIGNED(4) unk3288; /* 0x3288 */
u8 ALIGNED(4) unk328C; /* 0x328C */
- struct Pokemon currentMon;
+ struct Pokemon currentMon; /* 0x3290 */
union
{
@@ -398,6 +398,7 @@ extern const struct OamData gUnknown_8463B30;
extern const union AnimCmd * const gUnknown_8463B40[];
extern const u16 gUnknown_84636E0[];
+extern const u8 gUnknown_8463FB8[];
#define FREE_AND_SET_NULL_IF_SET(ptr) \
{ \
@@ -2415,9 +2416,9 @@ void sub_8137C90(void)
BlitMoveInfoIcon(gMonSummaryScreen->unk3000[5], gMonSummaryScreen->unk3250[4] + 1, 3, MACRO_8137270(4));
}
-void sub_8137D28(u8 page)
+void sub_8137D28(u8 curPageIndex)
{
- switch (page)
+ switch (curPageIndex)
{
case PSS_PAGE_INFO:
sub_8136DA4(gUnknown_8419C1D);
@@ -4443,3 +4444,268 @@ void sub_813B120(u8 taskId, s8 a1)
CreateTask(sub_813B3F0, 0);
gMonSummaryScreen->unk328C = 0;
}
+
+s8 sub_813B20C(s8 a0)
+{
+ struct Pokemon * partyMons = gMonSummaryScreen->monList.mons;
+ s8 v1 = 0;
+
+ if (gMonSummaryScreen->curPageIndex == 0)
+ {
+ if (a0 == -1 && gLastViewedMonIndex == 0)
+ return -1;
+ else if (a0 == 1 && gLastViewedMonIndex >= gMonSummaryScreen->lastIndex)
+ return -1;
+ else
+ return gLastViewedMonIndex + a0;
+ }
+
+ while (TRUE)
+ {
+ v1 += a0;
+ if (0 > gLastViewedMonIndex + v1 || gLastViewedMonIndex + v1 > gMonSummaryScreen->lastIndex)
+ return -1;
+
+ if (GetMonData(&partyMons[gLastViewedMonIndex + v1], MON_DATA_IS_EGG) == 0)
+ return gLastViewedMonIndex + v1;
+ }
+
+ return -1;
+}
+
+u8 sub_813B2C8(struct Pokemon * partyMons)
+{
+ if (GetMonData(partyMons, MON_DATA_SPECIES) != 0 && (gMonSummaryScreen->curPageIndex != 0 || GetMonData(partyMons, MON_DATA_IS_EGG) == 0))
+ return TRUE;
+
+ return FALSE;
+}
+
+s8 sub_813B304(u8 a0)
+{
+ while (TRUE)
+ {
+ a0++;
+
+ if (a0 == 6)
+ return -1;
+ if (sub_813B2C8(&gPlayerParty[gUnknown_8463FB8[a0]]) == TRUE)
+ break;
+ }
+
+ return (s8)gUnknown_8463FB8[a0];
+}
+
+s8 sub_813B348(u8 a0)
+{
+ while (1)
+ {
+ if (a0 == 0)
+ return -1;
+
+ a0--;
+
+ if (sub_813B2C8(&gPlayerParty[gUnknown_8463FB8[a0]]) == TRUE)
+ break;
+ }
+
+ return (s8)(gUnknown_8463FB8[a0]);
+}
+
+s8 sub_813B38C(s8 a0)
+{
+ u8 v0 = 0;
+ u8 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ if (gUnknown_8463FB8[i] == GetLastViewedMonIndex())
+ {
+ v0 = i;
+ break;
+ }
+
+ if ((a0 == -1 && v0 == 0)
+ || (a0 == 1 && v0 == 5))
+ return -1;
+
+ if (a0 == 1)
+ return sub_813B304(v0);
+ else
+ return sub_813B348(v0);
+}
+
+void sub_813B3F0(u8 id)
+{
+ switch (gMonSummaryScreen->unk328C)
+ {
+ case 0:
+ StopCryAndClearCrySongs();
+ gUnknown_203B16D = 0;
+ gUnknown_203B16E = 0;
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 1:
+ sub_8139C80();
+ sub_8139F20();
+ sub_8139D90();
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 2:
+ sub_8138B8C(&gMonSummaryScreen->currentMon);
+
+ gMonSummaryScreen->isEgg = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_IS_EGG);
+ gMonSummaryScreen->isBadEgg = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SANITY_IS_BAD_EGG);
+
+ if (gMonSummaryScreen->isBadEgg == TRUE)
+ gMonSummaryScreen->isEgg = TRUE;
+
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 3:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+
+ if (IsMonShiny(&gMonSummaryScreen->currentMon) == TRUE && !gMonSummaryScreen->isEgg)
+ {
+ LoadPalette(&gUnknown_8E9B310[16 * 6], 0, 0x20);
+ LoadPalette(&gUnknown_8E9B310[16 * 5], 0x10, 0x20);
+ }
+ else
+ {
+ LoadPalette(&gUnknown_8E9B310[16 * 0], 0, 0x20);
+ LoadPalette(&gUnknown_8E9B310[16 * 1], 0x10, 0x20);
+ }
+
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 4:
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_INFO)
+ {
+ if (gMonSummaryScreen->isEgg)
+ {
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9BBCC, 0, 0);
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0);
+ }
+ else
+ {
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9B598, 0, 0);
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0);
+ }
+ }
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 5:
+ sub_81360D4();
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 6:
+ if (!gMonSummaryScreen->isEgg)
+ sub_8136350();
+
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 7:
+ if (!gMonSummaryScreen->isEgg)
+ sub_81367B0();
+
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 8:
+ sub_8136F4C();
+ sub_81374E8();
+ sub_8137BD0();
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 9:
+ sub_8138A38();
+ sub_8138538();
+ sub_8137D28(gMonSummaryScreen->curPageIndex);
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 10:
+ CopyWindowToVram(gMonSummaryScreen->unk3000[0], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[1], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[2], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[6], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[3], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[5], 2);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ gMonSummaryScreen->unk328C++;
+ break;
+ case 11:
+ if (!Overworld_LinkRecvQueueLengthMoreThan2() && !sub_800B270())
+ {
+ sub_813AFC4();
+ sub_813B784();
+ gMonSummaryScreen->unk328C++;
+ }
+ break;
+ default:
+ gMonSummaryScreen->unk328C = 0;
+ DestroyTask(id);
+ break;
+ }
+}
+
+void sub_813B750(u8 curPageIndex)
+{
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
+
+ switch (curPageIndex)
+ {
+ case PSS_PAGE_INFO:
+ case PSS_PAGE_SKILLS:
+ case PSS_PAGE_MOVES:
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | DISPCNT_WIN1_ON);
+ break;
+ default:
+ break;
+ }
+}
+
+void sub_813B784(void)
+{
+ if (!GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_IS_EGG))
+ {
+ if (ShouldPlayNormalPokeCry(&gMonSummaryScreen->currentMon) == TRUE)
+ PlayCry3(GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES2), 0, 0);
+ else
+ PlayCry3(GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES2), 0, 11);
+ }
+}
+
+bool32 sub_813B7E0(u8 nature)
+{
+ if (nature == NATURE_BOLD || nature == NATURE_GENTLE)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool32 sub_813B7F8(void)
+{
+ u8 version = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MET_GAME);
+
+ if (version == VERSION_LEAF_GREEN
+ || version == VERSION_FIRE_RED
+ || version == VERSION_RUBY
+ || version == VERSION_SAPPHIRE
+ || version == VERSION_EMERALD)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool32 sub_813B838(u8 place)
+{
+ if (place >= MAPSECS_KANTO && place < MAPSEC_NONE)
+ return TRUE;
+ return FALSE;
+}
+
+void sub_813B854(void)
+{
+ ShowPokemonSummaryScreen(0, 0, 0, CB2_ReturnToField, PSS_MODE_NORMAL);
+}