pokemon_summary_screen.c, part 13.

This commit is contained in:
luckytyphlosion
2020-07-04 17:15:04 -04:00
parent db2fb7785d
commit aecf2dbf6e
3 changed files with 269 additions and 821 deletions
-817
View File
@@ -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.
-1
View File
@@ -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);
+269 -3
View File
@@ -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);
}