pokemon_summary_screen.c, part 13.
This commit is contained in:
@@ -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.
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user