summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-02-14 11:18:46 -0500
committerGitHub <noreply@github.com>2021-02-14 11:18:46 -0500
commitb422fd4a499e44889243dc5087b34fdd9f85c6aa (patch)
tree665651ae927895004e8cf368734679357a9a6fdd
parent43033ec97cfe3ea3128a93c079cf4a525ce3fbbf (diff)
parentccd75ad32e08465fb38773b2961433916c2ae96c (diff)
Merge pull request #389 from Kurausukun/dexmatching
[LEAK-INFORMED] match the rest of pokedex_screen
-rw-r--r--asm/pokedex_screen.s3120
-rw-r--r--include/pokedex.h2
-rw-r--r--include/pokedex_area_markers.h3
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokedex_screen.c837
5 files changed, 832 insertions, 3131 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
deleted file mode 100644
index dcfc5f110..000000000
--- a/asm/pokedex_screen.s
+++ /dev/null
@@ -1,3120 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8105594
-sub_8105594: @ 8105594
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, _081055C0 @ =gUnknown_203ACF0
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- cmp r0, 0
- bne _081055C8
- ldr r0, _081055C4 @ =gUnknown_8452334
- ldr r0, [r0]
- ldrb r3, [r0, 0x2]
- ldrb r1, [r0, 0x3]
- b _081055E2
- .align 2, 0
-_081055C0: .4byte gUnknown_203ACF0
-_081055C4: .4byte gUnknown_8452334
-_081055C8:
- ldr r1, _08105634 @ =gUnknown_8452334
- ldrb r0, [r2]
- subs r0, 0x1
- lsls r0, 2
- adds r0, r1
- adds r1, r3, 0
- adds r1, 0x2D
- ldrb r1, [r1]
- ldr r0, [r0]
- lsls r1, 2
- adds r1, r0
- ldrb r3, [r1, 0x2]
- ldrb r1, [r1, 0x3]
-_081055E2:
- lsls r0, r4, 26
- movs r2, 0xC0
- lsls r2, 19
- adds r0, r2
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r2, r4, 1
- adds r0, r2, 0x3
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- ldr r0, [sp, 0x8]
- cmp r0, 0x1B
- bls _08105602
- movs r0, 0x1C
- str r0, [sp, 0x8]
-_08105602:
- ldr r0, [sp, 0xC]
- cmp r0, 0xD
- bls _0810560C
- movs r0, 0xE
- str r0, [sp, 0xC]
-_0810560C:
- subs r0, r3, r2
- lsls r0, 16
- subs r1, r4
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x10]
- lsrs r6, r0, 16
- asrs r1, r0, 16
- ldr r2, [sp, 0x8]
- adds r0, r1, r2
- adds r0, 0x2
- cmp r0, 0x1D
- ble _08105638
- adds r0, r1, 0
- adds r0, 0x1C
- adds r1, r6, r2
- subs r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- b _0810563E
- .align 2, 0
-_08105634: .4byte gUnknown_8452334
-_08105638:
- cmp r1, 0
- bge _0810563E
- movs r6, 0
-_0810563E:
- ldr r3, [sp, 0x10]
- lsls r0, r3, 16
- asrs r1, r0, 16
- ldr r2, [sp, 0xC]
- adds r0, r1, r2
- adds r0, 0x2
- cmp r0, 0x11
- ble _0810565E
- adds r0, r1, 0
- adds r0, 0x10
- adds r1, r3, r2
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x10]
- b _08105666
-_0810565E:
- cmp r1, 0x1
- bgt _08105666
- movs r3, 0x2
- str r3, [sp, 0x10]
-_08105666:
- ldr r1, [sp, 0xC]
- lsrs r0, r1, 1
- adds r0, 0x2
- ldr r2, [sp, 0x10]
- lsls r2, 16
- asrs r2, 16
- mov r10, r2
- add r10, r0
- mov r3, r10
- lsls r3, 16
- lsrs r3, 16
- mov r10, r3
- lsls r2, r6, 24
- lsrs r2, 24
- str r2, [sp, 0x14]
- ldr r0, [sp, 0x10]
- lsls r4, r0, 24
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x4
- adds r3, r4, 0
- bl FillBgTilemapBufferRect_Palette0
- adds r6, 0x1
- lsls r2, r6, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- ldr r1, [sp, 0x8]
- str r1, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x5
- adds r3, r4, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _081057EC @ =0x00000404
- ldr r2, [sp, 0x8]
- lsls r2, 24
- asrs r2, 24
- mov r8, r2
- add r8, r6
- mov r3, r8
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- str r5, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r4, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r6, [sp, 0x10]
- adds r6, 0x1
- ldr r0, [sp, 0xC]
- lsls r4, r0, 24
- asrs r4, 24
- adds r4, r6
- lsls r4, 24
- lsrs r4, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0xA
- ldr r2, [sp, 0x14]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, [sp, 0x8]
- str r1, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0xB
- ldr r2, [sp, 0x18]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _081057F0 @ =0x0000040a
- str r5, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r4, 0
- bl FillBgTilemapBufferRect_Palette0
- lsls r3, r6, 24
- lsrs r3, 24
- str r3, [sp, 0x1C]
- str r5, [sp]
- mov r2, r10
- ldr r3, [sp, 0x10]
- subs r6, r2, r3
- subs r6, 0x1
- lsls r6, 24
- lsrs r6, 24
- str r6, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x6
- ldr r2, [sp, 0x14]
- ldr r3, [sp, 0x1C]
- bl FillBgTilemapBufferRect_Palette0
- mov r0, r10
- lsls r3, r0, 24
- lsrs r3, 24
- str r3, [sp, 0x20]
- str r5, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x7
- ldr r2, [sp, 0x14]
- bl FillBgTilemapBufferRect_Palette0
- movs r1, 0x1
- add r1, r10
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- str r5, [sp]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- adds r4, r2, r3
- mov r0, r10
- subs r4, r0
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x9
- ldr r2, [sp, 0x14]
- mov r3, r9
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _081057F4 @ =0x00000406
- str r5, [sp]
- str r6, [sp, 0x4]
- adds r0, r7, 0
- mov r2, r8
- ldr r3, [sp, 0x1C]
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _081057F8 @ =0x00000407
- str r5, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- mov r2, r8
- ldr r3, [sp, 0x20]
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _081057FC @ =0x00000409
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r7, 0
- mov r2, r8
- mov r3, r9
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, [sp, 0x8]
- str r1, [sp]
- str r6, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x1
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl FillBgTilemapBufferRect_Palette0
- ldr r2, [sp, 0x8]
- str r2, [sp]
- str r5, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x8
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x20]
- bl FillBgTilemapBufferRect_Palette0
- ldr r3, [sp, 0x8]
- str r3, [sp]
- str r4, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x2
- ldr r2, [sp, 0x18]
- mov r3, r9
- bl FillBgTilemapBufferRect_Palette0
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081057EC: .4byte 0x00000404
-_081057F0: .4byte 0x0000040a
-_081057F4: .4byte 0x00000406
-_081057F8: .4byte 0x00000407
-_081057FC: .4byte 0x00000409
- thumb_func_end sub_8105594
-
- thumb_func_start sub_8105800
-sub_8105800: @ 8105800
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r7, r3, 24
- adds r0, r1, 0
- bl SpeciesToNationalPokedexNum
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r2, _08105860 @ =gPokedexEntries
- adds r5, r1, r2
- movs r4, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- beq _08105864
- ldrb r0, [r5]
- .if REVISION == 0
- cmp r0, 0
- .else
- cmp r0, 0xFF
- .endif
- beq _08105878
-_08105840:
- mov r1, sp
- adds r1, r4
- adds r1, 0x8
- adds r0, r5, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r5, r4
- ldrb r0, [r0]
- .if REVISION == 0
- cmp r0, 0
- .else
- cmp r0, 0xFF
- .endif
- beq _08105878
- cmp r4, 0xA
- bls _08105840
- b _08105878
- .align 2, 0
-_08105860: .4byte gPokedexEntries
-_08105864:
- movs r1, 0xAC
-_08105866:
- mov r0, sp
- adds r0, r4
- adds r0, 0x8
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xA
- bls _08105866
-_08105878:
- mov r1, sp
- adds r1, r4
- adds r1, 0x8
- movs r0, 0xFF
- strb r0, [r1]
- str r7, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- mov r0, r8
- movs r1, 0
- add r2, sp, 0x8
- adds r3, r6, 0
- bl sub_81047C8
- movs r0, 0
- add r1, sp, 0x8
- movs r2, 0
- bl GetStringWidth
- adds r0, r6, r0
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _081058C0 @ =gText_PokedexPokemon
- str r7, [sp]
- str r4, [sp, 0x4]
- mov r0, r8
- movs r1, 0
- adds r3, r6, 0
- bl sub_81047C8
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081058C0: .4byte gText_PokedexPokemon
- thumb_func_end sub_8105800
-
- thumb_func_start sub_81058C4
-sub_81058C4: @ 81058C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- adds r0, r1, 0
- bl SpeciesToNationalPokedexNum
- ldr r2, _08105974 @ =gPokedexEntries
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r4, [r1, 0xC]
- ldr r1, _08105978 @ =gText_HT
- mov r10, r1
- movs r3, 0
- add r2, sp, 0x8
- movs r1, 0xFC
- strb r1, [r2]
- adds r2, 0x1
- movs r1, 0x14
- strb r1, [r2]
- adds r2, 0x1
- movs r1, 0x5
- strb r1, [r2]
- mov r1, sp
- adds r1, 0xB
- strb r3, [r1]
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- beq _081059CE
- ldr r0, _0810597C @ =0x00002710
- muls r0, r4
- movs r1, 0xFE
- bl __divsi3
- adds r5, r0, 0
- movs r1, 0xA
- bl __umodsi3
- cmp r0, 0x4
- bls _0810593A
- adds r5, 0xA
-_0810593A:
- adds r0, r5, 0
- movs r1, 0x78
- bl __udivsi3
- adds r6, r0, 0
- lsls r0, r6, 4
- subs r0, r6
- lsls r0, 3
- subs r0, r5, r0
- movs r1, 0xA
- bl __udivsi3
- adds r5, r0, 0
- adds r0, r6, 0
- movs r1, 0xA
- bl __udivsi3
- adds r2, r0, 0
- cmp r2, 0
- bne _08105980
- add r0, sp, 0xC
- strb r2, [r0]
- mov r1, sp
- adds r1, 0xD
- adds r0, r6, 0
- adds r0, 0xA1
- strb r0, [r1]
- b _08105998
- .align 2, 0
-_08105974: .4byte gPokedexEntries
-_08105978: .4byte gText_HT
-_0810597C: .4byte 0x00002710
-_08105980:
- add r1, sp, 0xC
- adds r0, r2, 0
- adds r0, 0xA1
- strb r0, [r1]
- mov r4, sp
- adds r4, 0xD
- adds r0, r6, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r4]
-_08105998:
- mov r1, sp
- adds r1, 0xE
- movs r0, 0xB4
- strb r0, [r1]
- mov r4, sp
- adds r4, 0xF
- adds r0, r5, 0
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- add r4, sp, 0x10
- adds r0, r5, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r4]
- mov r1, sp
- adds r1, 0x11
- movs r0, 0xB2
- strb r0, [r1]
- movs r2, 0xB
- adds r1, 0x1
- movs r0, 0xFF
- b _081059F2
-_081059CE:
- add r0, sp, 0xC
- movs r1, 0xAC
- strb r1, [r0]
- adds r0, 0x1
- strb r1, [r0]
- mov r2, sp
- adds r2, 0xE
- movs r0, 0xB4
- strb r0, [r2]
- mov r0, sp
- adds r0, 0xF
- strb r1, [r0]
- add r0, sp, 0x10
- strb r1, [r0]
- movs r2, 0xA
- mov r1, sp
- adds r1, 0x11
- movs r0, 0xB2
-_081059F2:
- strb r0, [r1]
- mov r1, sp
- adds r1, r2
- adds r1, 0x8
- movs r0, 0xFF
- strb r0, [r1]
- mov r0, r8
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- mov r0, r9
- movs r1, 0
- mov r2, r10
- adds r3, r7, 0
- bl sub_81047C8
- adds r0, r7, 0
- adds r0, 0x1E
- lsls r0, 24
- lsrs r7, r0, 24
- mov r1, r8
- str r1, [sp]
- str r4, [sp, 0x4]
- mov r0, r9
- movs r1, 0
- add r2, sp, 0x8
- adds r3, r7, 0
- bl sub_81047C8
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81058C4
-
- thumb_func_start sub_8105A3C
-sub_8105A3C: @ 8105A3C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- adds r0, r1, 0
- bl SpeciesToNationalPokedexNum
- ldr r2, _08105ACC @ =gPokedexEntries
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r4, [r1, 0xE]
- add r2, sp, 0x8
- movs r1, 0xFC
- strb r1, [r2]
- adds r2, 0x1
- movs r1, 0x14
- strb r1, [r2]
- adds r2, 0x1
- movs r1, 0x5
- strb r1, [r2]
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- bne _08105A92
- b _08105BC4
-_08105A92:
- ldr r7, _08105AD0 @ =0x000186a0
- adds r0, r4, 0
- muls r0, r7
- ldr r1, _08105AD4 @ =0x000011b8
- bl __divsi3
- adds r6, r0, 0
- movs r1, 0xA
- bl __umodsi3
- cmp r0, 0x4
- bls _08105AAC
- adds r6, 0xA
-_08105AAC:
- movs r5, 0
- mov r4, sp
- adds r4, 0xB
- adds r0, r6, 0
- adds r1, r7, 0
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA1
- bne _08105AD8
- movs r7, 0x4
- strb r5, [r4]
- b _08105ADC
- .align 2, 0
-_08105ACC: .4byte gPokedexEntries
-_08105AD0: .4byte 0x000186a0
-_08105AD4: .4byte 0x000011b8
-_08105AD8:
- movs r5, 0x1
- movs r7, 0x4
-_08105ADC:
- ldr r1, _08105B14 @ =0x000186a0
- adds r0, r6, 0
- bl __umodsi3
- adds r6, r0, 0
- mov r4, sp
- adds r4, r7
- adds r4, 0x8
- ldr r1, _08105B18 @ =0x00002710
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA1
- bne _08105B1C
- cmp r5, 0
- bne _08105B1C
- adds r0, r7, 0
- adds r1, r0, 0x1
- lsls r1, 24
- lsrs r7, r1, 24
- add r0, sp
- adds r0, 0x8
- strb r5, [r0]
- b _08105B24
- .align 2, 0
-_08105B14: .4byte 0x000186a0
-_08105B18: .4byte 0x00002710
-_08105B1C:
- movs r5, 0x1
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_08105B24:
- ldr r1, _08105B5C @ =0x00002710
- adds r0, r6, 0
- bl __umodsi3
- adds r6, r0, 0
- mov r4, sp
- adds r4, r7
- adds r4, 0x8
- movs r1, 0xFA
- lsls r1, 2
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA1
- bne _08105B60
- cmp r5, 0
- bne _08105B60
- adds r0, r7, 0
- adds r1, r0, 0x1
- lsls r1, 24
- lsrs r7, r1, 24
- add r0, sp
- adds r0, 0x8
- strb r5, [r0]
- b _08105B66
- .align 2, 0
-_08105B5C: .4byte 0x00002710
-_08105B60:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_08105B66:
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r6, 0
- bl __umodsi3
- adds r6, r0, 0
- adds r1, r7, 0
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r5, r7, 0
- mov r4, sp
- adds r4, r1
- adds r4, 0x8
- adds r0, r6, 0
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- adds r0, r6, 0
- movs r1, 0x64
- bl __umodsi3
- adds r6, r0, 0
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r2, r7, 0
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- movs r0, 0xAD
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- mov r4, sp
- adds r4, r2
- adds r4, 0x8
- adds r0, r6, 0
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- b _08105BE6
-_08105BC4:
- mov r0, sp
- adds r0, 0xB
- movs r2, 0xAC
- strb r2, [r0]
- add r0, sp, 0xC
- strb r2, [r0]
- adds r0, 0x1
- strb r2, [r0]
- adds r0, 0x1
- strb r2, [r0]
- mov r1, sp
- adds r1, 0xF
- movs r0, 0xAD
- strb r0, [r1]
- movs r7, 0x9
- add r0, sp, 0x10
- strb r2, [r0]
-_08105BE6:
- adds r1, r7, 0
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r2, r7, 0
- mov r0, sp
- adds r0, r1
- adds r0, 0x8
- movs r4, 0
- strb r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r3, r7, 0
- mov r1, sp
- adds r1, r2
- adds r1, 0x8
- movs r0, 0xFC
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r2, r7, 0
- mov r1, sp
- adds r1, r3
- adds r1, 0x8
- movs r0, 0x14
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, sp
- adds r0, r2
- adds r0, 0x8
- strb r4, [r0]
- movs r2, 0
- movs r0, 0x21
- subs r1, r0, r7
- mov r5, r8
- adds r5, 0x1E
- cmp r2, r1
- bcs _08105C60
- ldr r3, _08105CA8 @ =gText_Lbs
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _08105C60
- adds r3, r1, 0
- ldr r4, _08105CA8 @ =gText_Lbs
- adds r1, r7, 0
- add r1, sp
- adds r1, 0x8
-_08105C4C:
- ldrb r0, [r4]
- strb r0, [r1]
- adds r4, 0x1
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, r3
- bcs _08105C60
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _08105C4C
-_08105C60:
- adds r0, r7, r2
- mov r1, sp
- adds r1, r0
- adds r1, 0x8
- movs r0, 0xFF
- strb r0, [r1]
- mov r0, r9
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- mov r0, r10
- movs r1, 0
- ldr r2, _08105CAC @ =gText_WT
- mov r3, r8
- bl sub_81047C8
- lsls r0, r5, 24
- lsrs r0, 24
- mov r8, r0
- mov r1, r9
- str r1, [sp]
- str r4, [sp, 0x4]
- mov r0, r10
- movs r1, 0
- add r2, sp, 0x8
- mov r3, r8
- bl sub_81047C8
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08105CA8: .4byte gText_Lbs
-_08105CAC: .4byte gText_WT
- thumb_func_end sub_8105A3C
-
- thumb_func_start sub_8105CB0
-sub_8105CB0: @ 8105CB0
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r7, r3, 24
- adds r0, r1, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- beq _08105D5C
- ldr r1, _08105D44 @ =gPokedexEntries
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, 0x10
- adds r0, r1
- ldr r1, [r0]
- str r1, [sp]
- mov r0, sp
- movs r3, 0
- strb r6, [r0, 0x4]
- mov r2, sp
- movs r0, 0x2
- strb r0, [r2, 0x5]
- movs r0, 0x1
- strb r0, [r2, 0xA]
- mov r0, sp
- strb r3, [r0, 0xB]
- mov r4, sp
- ldrb r3, [r4, 0xC]
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r4, 0xC]
- mov r3, sp
- movs r0, 0x10
- strb r0, [r3, 0xC]
- ldrb r0, [r3, 0xD]
- ands r2, r0
- strb r2, [r3, 0xD]
- mov r2, sp
- movs r0, 0x20
- strb r0, [r2, 0xD]
- movs r0, 0x2
- movs r2, 0
- bl GetStringWidth
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- subs r1, r0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- adds r0, r5, r1
- cmp r0, 0
- ble _08105D48
- lsls r0, 24
- lsrs r5, r0, 24
- b _08105D4A
- .align 2, 0
-_08105D44: .4byte gPokedexEntries
-_08105D48:
- movs r5, 0
-_08105D4A:
- mov r0, sp
- strb r5, [r0, 0x6]
- strb r7, [r0, 0x7]
- strb r5, [r0, 0x8]
- strb r7, [r0, 0x9]
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
-_08105D5C:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8105CB0
-
- thumb_func_start sub_8105D64
-sub_8105D64: @ 8105D64
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- beq _08105E02
- ldr r1, _08105E14 @ =gMonFootprintTable
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- mov r12, r0
- ldr r7, _08105E18 @ =gDecompressionBuffer
- movs r5, 0
- movs r1, 0
-_08105DA6:
- mov r2, r12
- adds r0, r2, r1
- ldrb r3, [r0]
- movs r4, 0
- adds r6, r1, 0x1
-_08105DB0:
- lsls r1, r4, 1
- adds r2, r3, 0
- asrs r2, r1
- movs r0, 0x1
- ands r2, r0
- movs r0, 0x2
- lsls r0, r1
- ands r0, r3
- cmp r0, 0
- beq _08105DC8
- movs r0, 0x10
- orrs r2, r0
-_08105DC8:
- adds r0, r7, r5
- strb r2, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08105DB0
- lsls r0, r6, 16
- lsrs r1, r0, 16
- cmp r1, 0x1F
- bls _08105DA6
- movs r0, 0x10
- str r0, [sp]
- str r0, [sp, 0x4]
- mov r1, r9
- str r1, [sp, 0x8]
- mov r2, r8
- str r2, [sp, 0xC]
- str r0, [sp, 0x10]
- str r0, [sp, 0x14]
- mov r0, r10
- adds r1, r7, 0
- movs r2, 0
- movs r3, 0
- bl BlitBitmapRectToWindow
-_08105E02:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08105E14: .4byte gMonFootprintTable
-_08105E18: .4byte gDecompressionBuffer
- thumb_func_end sub_8105D64
-
- thumb_func_start sub_8105E1C
-sub_8105E1C: @ 8105E1C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x3
- movs r1, 0x6
- bl sub_8105594
- movs r4, 0x1E
- str r4, [sp]
- movs r5, 0x14
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- ldr r0, _08105FD0 @ =gUnknown_84521D4
- bl AddWindow
- ldr r4, _08105FD4 @ =gUnknown_203ACF0
- ldr r1, [r4]
- adds r1, 0x4A
- movs r2, 0
- mov r8, r2
- strb r0, [r1]
- ldr r0, _08105FD8 @ =gUnknown_84521DC
- bl AddWindow
- ldr r1, [r4]
- adds r1, 0x4B
- strb r0, [r1]
- ldr r0, _08105FDC @ =gUnknown_84521E4
- bl AddWindow
- ldr r1, [r4]
- adds r1, 0x4C
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x4A
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4A
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- movs r2, 0x90
- bl sub_81049FC
- ldr r0, [r4]
- adds r0, 0x4A
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- adds r0, 0x4A
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- adds r0, 0x4B
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r2, [r1]
- movs r5, 0x8
- str r5, [sp]
- movs r1, 0
- movs r3, 0
- bl sub_8104A34
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r2, [r1]
- movs r1, 0xB
- muls r2, r1
- ldr r1, _08105FE0 @ =gSpeciesNames
- adds r2, r1
- str r5, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- movs r1, 0x2
- movs r3, 0x1C
- bl sub_81047C8
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- movs r2, 0
- movs r3, 0x18
- bl sub_8105800
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- movs r2, 0
- movs r3, 0x24
- bl sub_81058C4
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- movs r2, 0
- movs r3, 0x30
- bl sub_8105A3C
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- movs r2, 0x58
- movs r3, 0x28
- bl sub_8105D64
- ldr r0, [r4]
- adds r0, 0x4B
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- adds r0, 0x4B
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- adds r0, 0x4C
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4C
- ldrb r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- movs r2, 0
- movs r3, 0x8
- bl sub_8105CB0
- ldr r0, [r4]
- adds r0, 0x4C
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- adds r0, 0x4C
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- cmp r6, 0
- bne _08105FEC
- ldr r2, _08105FE4 @ =gText_Cry
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0x8
- bl sub_81047C8
- ldr r0, _08105FE8 @ =gText_NextDataCancel
- bl sub_8104C2C
- b _08105FF2
- .align 2, 0
-_08105FD0: .4byte gUnknown_84521D4
-_08105FD4: .4byte gUnknown_203ACF0
-_08105FD8: .4byte gUnknown_84521DC
-_08105FDC: .4byte gUnknown_84521E4
-_08105FE0: .4byte gSpeciesNames
-_08105FE4: .4byte gText_Cry
-_08105FE8: .4byte gText_NextDataCancel
-_08105FEC:
- ldr r0, _08106010 @ =gText_Next
- bl sub_8104C2C
-_08105FF2:
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08106010: .4byte gText_Next
- thumb_func_end sub_8105E1C
-
- thumb_func_start sub_8106014
-sub_8106014: @ 8106014
- push {r4,lr}
- ldr r4, _08106038 @ =gUnknown_203ACF0
- ldr r0, [r4]
- adds r0, 0x4A
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x4B
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x4C
- bl sub_81047B0
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08106038: .4byte gUnknown_203ACF0
- thumb_func_end sub_8106014
-
- thumb_func_start sub_810603C
-sub_810603C: @ 810603C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r6, _08106424 @ =gUnknown_203ACF0
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- str r0, [sp, 0x1C]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x18]
- ldr r0, [sp, 0x1C]
- movs r1, 0x1
- movs r2, 0x1
- bl sub_8104AB0
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r7, 0x1C
- movs r0, 0xE
- mov r8, r0
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08106428 @ =0x00000404
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0x1D
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _0810642C @ =0x00000804
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0x11
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08106430 @ =0x00000c04
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0x1D
- movs r3, 0x11
- bl FillBgTilemapBufferRect_Palette0
- str r7, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x5
- movs r2, 0x1
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08106434 @ =0x00000805
- str r7, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0x1
- movs r3, 0x11
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x6
- movs r2, 0
- movs r3, 0x3
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08106438 @ =0x00000406
- str r4, [sp]
- mov r2, r8
- str r2, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0x1D
- movs r3, 0x3
- bl FillBgTilemapBufferRect_Palette0
- str r7, [sp]
- mov r3, r8
- str r3, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x3
- bl FillBgTilemapBufferRect_Palette0
- movs r5, 0x1E
- str r5, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- movs r7, 0xA
- movs r0, 0x6
- mov r8, r0
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1D
- movs r2, 0x1
- movs r3, 0x9
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _0810643C @ =0x0000041d
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r2, 0xC
- movs r3, 0x9
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08106440 @ =0x0000081d
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r2, 0x1
- movs r3, 0x10
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08106444 @ =0x00000c1d
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r2, 0xC
- movs r3, 0x10
- bl FillBgTilemapBufferRect_Palette0
- str r7, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1E
- movs r2, 0x2
- movs r3, 0x9
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08106448 @ =0x0000081e
- str r7, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r2, 0x2
- movs r3, 0x10
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1F
- movs r2, 0x1
- movs r3, 0xA
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _0810644C @ =0x0000041f
- str r4, [sp]
- mov r2, r8
- str r2, [sp, 0x4]
- movs r0, 0
- movs r2, 0xC
- movs r3, 0xA
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- bl GetUnlockedSeviiAreas
- ldr r1, [r6]
- adds r1, 0x64
- strb r0, [r1]
- movs r3, 0x4
- mov r9, r3
- movs r4, 0x3
- ldr r0, [r6]
- adds r0, 0x64
- ldrb r1, [r0]
- movs r2, 0x1
-_081061E2:
- adds r0, r1, 0
- asrs r0, r4
- ands r0, r2
- cmp r0, 0
- beq _081061F0
- movs r0, 0
- mov r9, r0
-_081061F0:
- adds r4, 0x1
- cmp r4, 0x6
- ble _081061E2
- ldr r0, _08106450 @ =gUnknown_8452214
- bl AddWindow
- ldr r5, _08106424 @ =gUnknown_203ACF0
- ldr r1, [r5]
- adds r1, 0x4A
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x4A
- ldrb r0, [r0]
- ldr r1, _08106454 @ =gUnknown_8443620
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x4A
- ldrb r4, [r0]
- adds r0, r4, 0
- movs r1, 0x2
- bl GetWindowAttribute
- adds r2, r0, 0
- add r2, r9
- adds r0, r4, 0
- movs r1, 0x2
- bl SetWindowAttribute
- ldr r0, [r5]
- adds r0, 0x4A
- ldrb r0, [r0]
- bl PutWindowTilemap
- movs r4, 0
- mov r1, r9
- lsls r1, 27
- str r1, [sp, 0x20]
- ldr r7, _08106458 @ =gUnknown_8452254
- adds r2, r7, 0x4
- mov r8, r2
-_08106246:
- ldr r0, [r5]
- adds r0, 0x64
- ldrb r1, [r0]
- asrs r1, r4
- movs r0, 0x1
- ands r1, r0
- adds r6, r4, 0x1
- cmp r1, 0
- beq _081062B4
- lsls r4, 3
- adds r0, r4, r7
- ldr r0, [r0]
- bl AddWindow
- ldr r1, [r5]
- adds r1, 0x4A
- adds r1, r6
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x4A
- adds r0, r6
- ldrb r0, [r0]
- add r4, r8
- ldr r1, [r4]
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x4A
- adds r0, r6
- ldrb r4, [r0]
- adds r0, r4, 0
- movs r1, 0x2
- bl GetWindowAttribute
- adds r2, r0, 0
- add r2, r9
- adds r0, r4, 0
- movs r1, 0x2
- bl SetWindowAttribute
- ldr r0, [r5]
- adds r0, 0x4A
- adds r0, r6
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r5]
- adds r0, 0x4A
- adds r0, r6
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
-_081062B4:
- adds r4, r6, 0
- cmp r4, 0x6
- ble _08106246
- ldr r0, _0810645C @ =gUnknown_84521F4
- bl AddWindow
- ldr r7, _08106424 @ =gUnknown_203ACF0
- ldr r1, [r7]
- adds r1, 0x52
- movs r6, 0
- strb r0, [r1]
- ldr r5, _08106460 @ =gUnknown_84521FC
- adds r0, r5, 0
- bl AddWindow
- ldr r1, [r7]
- adds r1, 0x53
- strb r0, [r1]
- ldr r3, _08106464 @ =gUnknown_8452204
- mov r8, r3
- mov r0, r8
- bl AddWindow
- ldr r1, [r7]
- adds r1, 0x54
- strb r0, [r1]
- ldr r0, _08106468 @ =gUnknown_84521EC
- bl AddWindow
- ldr r1, [r7]
- adds r1, 0x55
- strb r0, [r1]
- ldr r0, _0810646C @ =gUnknown_845220C
- bl AddWindow
- ldr r1, [r7]
- adds r1, 0x56
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x55
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0xA0
- ldr r1, [sp, 0x1C]
- bl sub_8107CD8
- ldr r0, [sp, 0x1C]
- bl sub_81049CC
- adds r2, r0, 0
- ldr r0, [r7]
- adds r0, 0x55
- ldrb r0, [r0]
- str r6, [sp]
- ldr r1, [sp, 0x1C]
- movs r3, 0
- bl sub_8107CF8
- ldr r0, [r7]
- adds r0, 0x55
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r7]
- adds r0, 0x55
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r7]
- adds r0, 0x53
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r4, _08106470 @ =gText_Size
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- ldr r1, [r7]
- adds r1, 0x53
- ldrb r1, [r1]
- ldrb r3, [r5, 0x3]
- lsls r3, 3
- subs r3, r0
- lsrs r0, r3, 31
- adds r3, r0
- asrs r3, 1
- lsls r3, 24
- lsrs r3, 24
- movs r5, 0x4
- str r5, [sp]
- str r6, [sp, 0x4]
- adds r0, r1, 0
- movs r1, 0
- adds r2, r4, 0
- bl sub_81047C8
- ldr r0, [r7]
- adds r0, 0x53
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r7]
- adds r0, 0x53
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r7]
- adds r0, 0x54
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r4, _08106474 @ =gText_Area
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- ldr r1, [r7]
- adds r1, 0x54
- ldrb r1, [r1]
- mov r2, r8
- ldrb r3, [r2, 0x3]
- lsls r3, 3
- subs r3, r0
- lsrs r0, r3, 31
- adds r3, r0
- asrs r3, 1
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r6, [sp, 0x4]
- adds r0, r1, 0
- movs r1, 0
- adds r2, r4, 0
- bl sub_81047C8
- ldr r0, [r7]
- adds r0, 0x54
- ldrb r4, [r0]
- adds r0, r4, 0
- movs r1, 0x2
- bl GetWindowAttribute
- adds r2, r0, 0
- add r2, r9
- adds r0, r4, 0
- movs r1, 0x2
- bl SetWindowAttribute
- ldr r0, [r7]
- adds r0, 0x54
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r7]
- adds r0, 0x54
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r7]
- adds r0, 0x52
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r7]
- adds r0, 0x52
- ldrb r0, [r0]
- str r6, [sp]
- movs r1, 0
- ldr r2, [sp, 0x1C]
- movs r3, 0
- bl sub_8104A34
- b _08106478
- .align 2, 0
-_08106424: .4byte gUnknown_203ACF0
-_08106428: .4byte 0x00000404
-_0810642C: .4byte 0x00000804
-_08106430: .4byte 0x00000c04
-_08106434: .4byte 0x00000805
-_08106438: .4byte 0x00000406
-_0810643C: .4byte 0x0000041d
-_08106440: .4byte 0x0000081d
-_08106444: .4byte 0x00000c1d
-_08106448: .4byte 0x0000081e
-_0810644C: .4byte 0x0000041f
-_08106450: .4byte gUnknown_8452214
-_08106454: .4byte gUnknown_8443620
-_08106458: .4byte gUnknown_8452254
-_0810645C: .4byte gUnknown_84521F4
-_08106460: .4byte gUnknown_84521FC
-_08106464: .4byte gUnknown_8452204
-_08106468: .4byte gUnknown_84521EC
-_0810646C: .4byte gUnknown_845220C
-_08106470: .4byte gText_Size
-_08106474: .4byte gText_Area
-_08106478:
- ldr r0, [r7]
- adds r0, 0x52
- ldrb r0, [r0]
- movs r1, 0xB
- ldr r3, [sp, 0x1C]
- adds r2, r3, 0
- muls r2, r1
- ldr r1, _081066B0 @ =gSpeciesNames
- adds r2, r1
- movs r1, 0xC
- str r1, [sp]
- str r6, [sp, 0x4]
- movs r1, 0x2
- movs r3, 0x3
- bl sub_81047C8
- ldr r0, [r7]
- adds r0, 0x52
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r7]
- adds r0, 0x52
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r7]
- adds r0, 0x56
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0xB0
- movs r1, 0x1
- bl ListMenuLoadStdPalAt
- mov r0, r10
- cmp r0, 0
- beq _08106504
- ldr r0, [r7]
- adds r0, 0x56
- ldrb r0, [r0]
- ldr r1, _081066B4 @ =gBaseStats
- ldr r2, [sp, 0x1C]
- lsls r4, r2, 3
- subs r4, r2
- lsls r4, 2
- adds r4, r1
- ldrb r5, [r4, 0x6]
- adds r1, r5, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- movs r3, 0x1
- bl BlitMoveInfoIcon
- ldrb r1, [r4, 0x7]
- cmp r5, r1
- beq _08106504
- ldr r0, [r7]
- adds r0, 0x56
- ldrb r0, [r0]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x20
- movs r3, 0x1
- bl BlitMoveInfoIcon
-_08106504:
- ldr r7, _081066B8 @ =gUnknown_203ACF0
- ldr r0, [r7]
- adds r0, 0x56
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r7]
- adds r0, 0x56
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- bl ResetAllPicSprites
- ldr r0, _081066BC @ =gUnknown_8452368
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- mov r3, r10
- cmp r3, 0
- bne _08106534
- b _081066D0
-_08106534:
- ldr r0, [sp, 0x1C]
- bl sub_81049CC
- adds r2, r0, 0
- movs r0, 0x28
- str r0, [sp]
- movs r0, 0x68
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r1, _081066C0 @ =0x0000ffff
- str r1, [sp, 0xC]
- ldr r0, [sp, 0x1C]
- movs r1, 0x8
- movs r3, 0x1
- bl CreateMonPicSprite_HandleDeoxys
- ldr r1, [r7]
- adds r1, 0x58
- strb r0, [r1]
- ldr r2, _081066C4 @ =gSprites
- mov r10, r2
- ldr r0, [r7]
- adds r0, 0x58
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r10
- ldrb r2, [r1, 0x5]
- movs r3, 0xF
- mov r9, r3
- mov r0, r9
- ands r0, r2
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [r7]
- adds r0, 0x58
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r10
- ldrb r2, [r1, 0x1]
- subs r3, 0x13
- mov r8, r3
- mov r0, r8
- ands r0, r2
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldr r0, [r7]
- adds r0, 0x58
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r10
- ldrb r2, [r1, 0x3]
- movs r6, 0x3F
- negs r6, r6
- adds r0, r6, 0
- ands r0, r2
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1, 0x3]
- ldr r0, [r7]
- adds r0, 0x58
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r10
- ldrb r2, [r1, 0x5]
- movs r5, 0xD
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldr r0, [r7]
- adds r0, 0x58
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldr r1, _081066C8 @ =gPokedexEntries
- ldr r2, [sp, 0x18]
- lsls r4, r2, 3
- adds r4, r2
- lsls r4, 2
- adds r4, r1
- ldrh r1, [r4, 0x1C]
- strh r1, [r0, 0x26]
- ldrh r1, [r4, 0x1A]
- str r1, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- ldr r0, _081066CC @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- bl PlayerGenderToFrontTrainerPicId_Debug
- lsls r0, 16
- lsrs r0, 16
- movs r3, 0
- str r3, [sp]
- ldr r1, _081066C0 @ =0x0000ffff
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x50
- movs r3, 0x68
- bl CreateTrainerPicSprite
- ldr r1, [r7]
- adds r1, 0x59
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x59
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r1, [r0, 0x5]
- mov r2, r9
- ands r2, r1
- movs r3, 0x20
- orrs r2, r3
- strb r2, [r0, 0x5]
- ldr r0, [r7]
- adds r0, 0x59
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r1, [r0, 0x1]
- mov r2, r8
- ands r2, r1
- movs r3, 0x1
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldr r0, [r7]
- adds r0, 0x59
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r1, [r0, 0x3]
- ands r6, r1
- movs r1, 0x2
- orrs r6, r1
- strb r6, [r0, 0x3]
- ldr r0, [r7]
- adds r0, 0x59
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r1, [r0, 0x5]
- ands r5, r1
- movs r1, 0x4
- orrs r5, r1
- strb r5, [r0, 0x5]
- ldr r0, [r7]
- adds r0, 0x59
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r4, 0x20]
- strh r1, [r0, 0x26]
- ldrh r1, [r4, 0x1E]
- str r1, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- b _081066E2
- .align 2, 0
-_081066B0: .4byte gSpeciesNames
-_081066B4: .4byte gBaseStats
-_081066B8: .4byte gUnknown_203ACF0
-_081066BC: .4byte gUnknown_8452368
-_081066C0: .4byte 0x0000ffff
-_081066C4: .4byte gSprites
-_081066C8: .4byte gPokedexEntries
-_081066CC: .4byte gSaveBlock2Ptr
-_081066D0:
- ldr r0, [r7]
- adds r0, 0x58
- movs r1, 0xFF
- strb r1, [r0]
- ldr r0, [r7]
- adds r0, 0x59
- movs r1, 0x1
- negs r1, r1
- strb r1, [r0]
-_081066E2:
- ldr r1, _081067A8 @ =0x000007d1
- ldr r2, [sp, 0x20]
- lsrs r3, r2, 24
- ldr r0, [sp, 0x1C]
- movs r2, 0x3
- bl sub_8134230
- ldr r5, _081067AC @ =gUnknown_203ACF0
- ldr r1, [r5]
- strb r0, [r1, 0x4]
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- bl sub_81344E0
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0810675A
- ldr r0, [r5]
- adds r0, 0x4A
- ldrb r0, [r0]
- ldr r1, _081067B0 @ =gUnknown_8443D00
- movs r4, 0x58
- str r4, [sp]
- movs r3, 0x10
- str r3, [sp, 0x4]
- movs r2, 0x4
- str r2, [sp, 0x8]
- movs r2, 0x1C
- str r2, [sp, 0xC]
- str r4, [sp, 0x10]
- str r3, [sp, 0x14]
- movs r2, 0
- movs r3, 0
- bl BlitBitmapRectToWindow
- ldr r4, _081067B4 @ =gText_AreaUnknown
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- ldr r1, [r5]
- adds r1, 0x4A
- ldrb r1, [r1]
- movs r3, 0x60
- subs r3, r0
- lsrs r0, r3, 31
- adds r3, r0
- asrs r3, 1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1D
- str r0, [sp]
- str r6, [sp, 0x4]
- adds r0, r1, 0
- movs r1, 0
- adds r2, r4, 0
- bl sub_81047C8
-_0810675A:
- ldr r0, [r5]
- adds r0, 0x4A
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r2, _081067B8 @ =gText_Cry
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0x8
- bl sub_81047C8
- ldr r0, _081067BC @ =gText_CancelPreviousData
- bl sub_8104C2C
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081067A8: .4byte 0x000007d1
-_081067AC: .4byte gUnknown_203ACF0
-_081067B0: .4byte gUnknown_8443D00
-_081067B4: .4byte gText_AreaUnknown
-_081067B8: .4byte gText_Cry
-_081067BC: .4byte gText_CancelPreviousData
- thumb_func_end sub_810603C
-
- thumb_func_start sub_81067C0
-sub_81067C0: @ 81067C0
- push {r4,r5,lr}
- ldr r4, _0810680C @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldrb r0, [r0, 0x4]
- bl sub_81343F4
- movs r5, 0
-_081067CE:
- adds r1, r5, 0
- adds r1, 0x4A
- ldr r0, [r4]
- adds r0, r1
- bl sub_81047B0
- adds r5, 0x1
- cmp r5, 0xC
- ble _081067CE
- ldr r4, _0810680C @ =gUnknown_203ACF0
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x59
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _081067F2
- bl FreeAndDestroyTrainerPicSprite
-_081067F2:
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x58
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08106802
- bl FreeAndDestroyMonPicSprite
-_08106802:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0810680C: .4byte gUnknown_203ACF0
- thumb_func_end sub_81067C0
-
- thumb_func_start sub_8106810
-sub_8106810: @ 8106810
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl IsNationalPokedexEnabled
- cmp r0, 0x1
- beq _08106830
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x97
- bls _08106830
- movs r0, 0
- b _08106832
-_08106830:
- movs r0, 0x1
-_08106832:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8106810
-
- thumb_func_start sub_8106838
-sub_8106838: @ 8106838
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, _08106888 @ =gDexCategories
- lsrs r0, 21
- adds r0, r1
- ldr r2, [r0]
- lsls r1, r6, 3
- adds r1, r2
- ldrb r1, [r1, 0x4]
- mov r8, r1
- movs r5, 0
- adds r7, r0, 0
-_08106858:
- cmp r5, r8
- bge _0810688C
- ldr r1, [r7]
- lsls r0, r6, 3
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r5, 1
- adds r0, r1
- ldrh r4, [r0]
- adds r0, r4, 0
- bl sub_8106810
- cmp r0, 0x1
- bne _0810688C
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x1
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- beq _0810688C
- movs r0, 0x1
- b _08106894
- .align 2, 0
-_08106888: .4byte gDexCategories
-_0810688C:
- adds r5, 0x1
- cmp r5, 0x3
- ble _08106858
- movs r0, 0
-_08106894:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8106838
-
- thumb_func_start sub_81068A0
-sub_81068A0: @ 81068A0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _081068C8 @ =gDexCategories
- lsls r0, r6, 3
- adds r0, r1
- ldrb r5, [r0, 0x4]
- movs r4, 0
- cmp r4, r5
- bge _081068D2
-_081068B4:
- lsls r1, r4, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8106838
- lsls r0, 24
- cmp r0, 0
- beq _081068CC
- movs r0, 0x1
- b _081068D4
- .align 2, 0
-_081068C8: .4byte gDexCategories
-_081068CC:
- adds r4, 0x1
- cmp r4, r5
- blt _081068B4
-_081068D2:
- movs r0, 0
-_081068D4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81068A0
-
- thumb_func_start sub_81068DC
-sub_81068DC: @ 81068DC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, _08106990 @ =gDexCategories
- lsls r0, r4, 3
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r6, 3
- adds r0, r1
- ldrb r0, [r0, 0x4]
- mov r9, r0
- ldr r2, _08106994 @ =gUnknown_203ACF0
- ldr r0, [r2]
- adds r0, 0x2C
- movs r1, 0
- strb r1, [r0]
- movs r5, 0
- ldr r0, _08106998 @ =0x0000ffff
- adds r3, r0, 0
-_0810690C:
- ldr r0, [r2]
- lsls r1, r5, 1
- adds r0, 0x18
- adds r0, r1
- ldrh r1, [r0]
- orrs r1, r3
- strh r1, [r0]
- adds r5, 0x1
- cmp r5, 0x3
- ble _0810690C
- movs r5, 0
- cmp r5, r9
- bge _08106982
- ldr r1, _08106990 @ =gDexCategories
- lsls r0, r4, 3
- adds r0, r1
- mov r8, r0
- lsls r7, r6, 3
-_08106930:
- mov r1, r8
- ldr r0, [r1]
- adds r0, r7, r0
- ldr r0, [r0]
- lsls r6, r5, 1
- adds r0, r6, r0
- ldrh r4, [r0]
- adds r0, r4, 0
- bl sub_8106810
- cmp r0, 0x1
- bne _0810697C
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x1
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- beq _0810697C
- ldr r0, _08106994 @ =gUnknown_203ACF0
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- lsls r0, 1
- adds r1, 0x18
- adds r1, r0
- mov r3, r8
- ldr r0, [r3]
- adds r0, r7, r0
- ldr r0, [r0]
- adds r0, r6, r0
- ldrh r0, [r0]
- strh r0, [r1]
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
-_0810697C:
- adds r5, 0x1
- cmp r5, r9
- blt _08106930
-_08106982:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08106990: .4byte gDexCategories
-_08106994: .4byte gUnknown_203ACF0
-_08106998: .4byte 0x0000ffff
- thumb_func_end sub_81068DC
-
- thumb_func_start sub_810699C
-sub_810699C: @ 810699C
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _081069F8 @ =gDexCategories
- lsls r0, r7, 3
- adds r0, r1
- ldrb r6, [r0, 0x4]
- movs r2, 0xFF
- movs r3, 0xFF
- movs r5, 0
- cmp r5, r6
- bge _081069DE
-_081069B6:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r7, 0
- adds r1, r4, 0
- str r2, [sp]
- str r3, [sp, 0x4]
- bl sub_8106838
- lsls r0, 24
- ldr r2, [sp]
- ldr r3, [sp, 0x4]
- cmp r0, 0
- beq _081069D8
- cmp r2, 0xFF
- bne _081069D6
- adds r2, r4, 0
-_081069D6:
- adds r3, r4, 0
-_081069D8:
- adds r5, 0x1
- cmp r5, r6
- blt _081069B6
-_081069DE:
- cmp r3, 0xFF
- bne _08106A00
- ldr r2, _081069FC @ =gUnknown_203ACF0
- ldr r0, [r2]
- adds r0, 0x29
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x2A
- strb r1, [r0]
- movs r0, 0x1
- b _08106A12
- .align 2, 0
-_081069F8: .4byte gDexCategories
-_081069FC: .4byte gUnknown_203ACF0
-_08106A00:
- ldr r1, _08106A1C @ =gUnknown_203ACF0
- ldr r0, [r1]
- adds r0, 0x29
- strb r2, [r0]
- ldr r0, [r1]
- adds r1, r3, 0x1
- adds r0, 0x2A
- strb r1, [r0]
- movs r0, 0
-_08106A12:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08106A1C: .4byte gUnknown_203ACF0
- thumb_func_end sub_810699C
-
- thumb_func_start sub_8106A20
-sub_8106A20: @ 8106A20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r1, _08106A98 @ =gDexCategories
- str r1, [sp, 0x10]
-_08106A3A:
- ldr r2, [sp, 0x10]
- ldrb r2, [r2, 0x4]
- str r2, [sp, 0x8]
- movs r7, 0
- cmp r7, r2
- bge _08106AD6
- ldr r0, [sp, 0x10]
- str r0, [sp, 0xC]
- movs r1, 0
- mov r9, r1
-_08106A4E:
- ldr r2, [sp, 0xC]
- ldr r0, [r2]
- add r0, r9
- ldrb r6, [r0, 0x4]
- movs r5, 0
- mov r8, r5
- cmp r5, r6
- bge _08106ACA
- ldr r0, [sp, 0x10]
- mov r10, r0
- ldr r3, _08106A9C @ =gUnknown_203ACF0
-_08106A64:
- mov r1, r10
- ldr r0, [r1]
- add r0, r9
- ldr r1, [r0]
- lsls r0, r5, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r4, r0, 0
- ldr r2, [sp]
- cmp r2, r4
- bne _08106AA0
- ldr r0, [r3]
- adds r0, 0x28
- mov r1, sp
- ldrb r1, [r1, 0x4]
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x2B
- strb r7, [r0]
- ldr r0, [r3]
- adds r0, 0x2D
- mov r2, r8
- strb r2, [r0]
- movs r0, 0
- b _08106AE8
- .align 2, 0
-_08106A98: .4byte gDexCategories
-_08106A9C: .4byte gUnknown_203ACF0
-_08106AA0:
- adds r0, r4, 0
- str r3, [sp, 0x14]
- bl sub_8106810
- ldr r3, [sp, 0x14]
- cmp r0, 0x1
- bne _08106AC4
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x1
- bl sub_8104AB0
- lsls r0, 24
- ldr r3, [sp, 0x14]
- cmp r0, 0
- beq _08106AC4
- movs r0, 0x1
- add r8, r0
-_08106AC4:
- adds r5, 0x1
- cmp r5, r6
- blt _08106A64
-_08106ACA:
- movs r1, 0x8
- add r9, r1
- adds r7, 0x1
- ldr r2, [sp, 0x8]
- cmp r7, r2
- blt _08106A4E
-_08106AD6:
- ldr r0, [sp, 0x10]
- adds r0, 0x8
- str r0, [sp, 0x10]
- ldr r1, [sp, 0x4]
- adds r1, 0x1
- str r1, [sp, 0x4]
- cmp r1, 0x8
- bls _08106A3A
- movs r0, 0x1
-_08106AE8:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8106A20
-
- thumb_func_start sub_8106AF8
-sub_8106AF8: @ 8106AF8
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- movs r4, 0
- movs r6, 0
- cmp r6, r5
- bge _08106B24
-_08106B06:
- ldr r0, _08106B30 @ =gUnknown_203ACF0
- ldr r0, [r0]
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_8106838
- lsls r0, 24
- cmp r0, 0
- beq _08106B1E
- adds r6, 0x1
-_08106B1E:
- adds r4, 0x1
- cmp r4, r5
- blt _08106B06
-_08106B24:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08106B30: .4byte gUnknown_203ACF0
- thumb_func_end sub_8106AF8
-
- thumb_func_start sub_8106B34
-sub_8106B34: @ 8106B34
- push {lr}
- ldr r0, _08106B58 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08106B54
- ldr r0, _08106B5C @ =gUnknown_203ACF0
- ldr r0, [r0]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl PlayCry2
-_08106B54:
- pop {r0}
- bx r0
- .align 2, 0
-_08106B58: .4byte gMain
-_08106B5C: .4byte gUnknown_203ACF0
- thumb_func_end sub_8106B34
-
- thumb_func_start sub_8106B60
-sub_8106B60: @ 8106B60
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r5, 0
- movs r1, 0x2
- movs r2, 0x1
- bl sub_8104AB0
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0x1
- bl sub_8104AB0
- bl IsNationalPokedexEnabled
- cmp r0, 0
- bne _08106BA4
- adds r0, r5, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x97
- bls _08106BA4
- ldr r0, _08106BA0 @ =sub_8106BD8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- b _08106BC6
- .align 2, 0
-_08106BA0: .4byte sub_8106BD8
-_08106BA4:
- bl sub_810250C
- ldr r2, _08106BCC @ =gTasks
- ldr r4, _08106BD0 @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, _08106BD4 @ =sub_8106BE8
- str r1, [r0]
- adds r0, r5, 0
- bl sub_8106A20
- ldr r0, [r4]
- ldrb r0, [r0]
-_08106BC6:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08106BCC: .4byte gTasks
-_08106BD0: .4byte gUnknown_203ACF0
-_08106BD4: .4byte sub_8106BE8
- thumb_func_end sub_8106B60
-
- thumb_func_start sub_8106BD8
-sub_8106BD8: @ 8106BD8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- thumb_func_end sub_8106BD8
-
- thumb_func_start sub_8106BE8
-sub_8106BE8: @ 8106BE8
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08106C08 @ =gUnknown_203ACF0
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0xB
- bls _08106BFE
- b _08106E6A
-_08106BFE:
- lsls r0, 2
- ldr r1, _08106C0C @ =_08106C10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08106C08: .4byte gUnknown_203ACF0
-_08106C0C: .4byte _08106C10
- .align 2, 0
-_08106C10:
- .4byte _08106C40
- .4byte _08106C62
- .4byte _08106C84
- .4byte _08106C98
- .4byte _08106CD4
- .4byte _08106D1C
- .4byte _08106D4C
- .4byte _08106D9E
- .4byte _08106DBA
- .4byte _08106DCC
- .4byte _08106DDE
- .4byte _08106E58
-_08106C40:
- ldr r0, [r4]
- adds r0, 0x28
- ldrb r0, [r0]
- bl sub_810699C
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0x2B
- adds r0, 0x29
- ldrb r1, [r0]
- ldrb r0, [r2]
- cmp r0, r1
- bcs _08106C5C
- strb r1, [r2]
-_08106C5C:
- ldr r1, [r4]
- movs r0, 0x3
- b _08106E68
-_08106C62:
- bl sub_8106014
- bl sub_8104E90
- ldr r0, _08106C7C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, _08106C80 @ =gUnknown_203ACF0
- ldr r1, [r0]
- b _08106E66
- .align 2, 0
-_08106C7C: .4byte gMain
-_08106C80: .4byte gUnknown_203ACF0
-_08106C84:
- bl sub_8102798
- lsls r0, 24
- cmp r0, 0
- bne _08106C90
- b _08106E6A
-_08106C90:
- adds r0, r5, 0
- bl DestroyTask
- b _08106E6A
-_08106C98:
- movs r0, 0x1
- bl sub_8104F0C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0xFF
- bl sub_8105058
- ldr r0, _08106CD0 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x4
- b _08106E68
- .align 2, 0
-_08106CD0: .4byte gUnknown_203ACF0
-_08106CD4:
- ldr r2, _08106D10 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0x1
- negs r0, r0
- ldr r1, _08106D14 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0
- bl ShowBg
- ldr r0, _08106D18 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x5
- b _08106E68
- .align 2, 0
-_08106D10: .4byte gPaletteFade
-_08106D14: .4byte 0x0000ffff
-_08106D18: .4byte gUnknown_203ACF0
-_08106D1C:
- ldr r1, _08106D40 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1E
- strh r1, [r0, 0x8]
- ldr r0, _08106D44 @ =gUnknown_84524C4
- movs r1, 0
- bl ListMenuAddCursorObjectInternal
- ldr r2, _08106D48 @ =gUnknown_203ACF0
- ldr r1, [r2]
- adds r1, 0x61
- strb r0, [r1]
- ldr r1, [r2]
- movs r0, 0x6
- b _08106E68
- .align 2, 0
-_08106D40: .4byte gTasks
-_08106D44: .4byte gUnknown_84524C4
-_08106D48: .4byte gUnknown_203ACF0
-_08106D4C:
- ldr r0, [r4]
- adds r0, 0x2D
- ldrb r0, [r0]
- bl sub_8105058
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x61
- ldrb r0, [r0]
- adds r1, r2, 0
- adds r1, 0x2D
- ldrb r1, [r1]
- adds r2, 0x2C
- ldrb r2, [r2]
- bl sub_8105178
- ldr r1, _08106D88 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08106D8C
- subs r0, r2, 0x1
- strh r0, [r1, 0x8]
- b _08106E6A
- .align 2, 0
-_08106D88: .4byte gTasks
-_08106D8C:
- ldr r0, [r4]
- adds r0, 0x61
- ldrb r0, [r0]
- movs r1, 0
- bl ListMenuRemoveCursorObject
- ldr r1, [r4]
- movs r0, 0x7
- b _08106E68
-_08106D9E:
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x2D
- ldrb r1, [r0]
- lsls r1, 1
- subs r0, 0x15
- adds r0, r1
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x5A
- strh r0, [r1]
- movs r0, 0x8
- strb r0, [r2, 0x1]
- b _08106E6A
-_08106DBA:
- movs r0, 0x1
- bl sub_8105E1C
- ldr r0, _08106DC8 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x9
- b _08106E68
- .align 2, 0
-_08106DC8: .4byte gUnknown_203ACF0
-_08106DCC:
- ldr r0, [r4]
- movs r1, 0
- strb r1, [r0, 0x2]
- ldr r0, [r4]
- strb r1, [r0, 0x3]
- ldr r1, [r4]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_08106DDE:
- ldr r1, [r4]
- ldrb r0, [r1, 0x3]
- cmp r0, 0x5
- bhi _08106E10
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _08106E0A
- ldrb r1, [r1, 0x3]
- movs r0, 0
- bl sub_8105594
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- movs r0, 0x4
- strb r0, [r1, 0x2]
- ldr r1, [r4]
- ldrb r0, [r1, 0x3]
- adds r0, 0x1
- strb r0, [r1, 0x3]
- b _08106E6A
-_08106E0A:
- subs r0, 0x1
- strb r0, [r1, 0x2]
- b _08106E6A
-_08106E10:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl PlayCry2
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x2]
- ldr r1, [r4]
- movs r0, 0xB
- b _08106E68
-_08106E58:
- ldr r0, _08106E74 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08106E6A
- ldr r1, [r4]
-_08106E66:
- movs r0, 0x2
-_08106E68:
- strb r0, [r1, 0x1]
-_08106E6A:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08106E74: .4byte gMain
- thumb_func_end sub_8106BE8
-
- thumb_func_start sub_8106E78
-sub_8106E78: @ 8106E78
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- cmp r1, 0x1
- beq _08106E8E
- cmp r1, 0x1
- bgt _08106EA0
- cmp r1, 0
- bne _08106EA0
- movs r1, 0x8
- b _08106EAE
-_08106E8E:
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- movs r1, 0xF0
- subs r1, r0
- lsrs r1, 1
- b _08106EAE
-_08106EA0:
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- movs r1, 0xE8
- subs r1, r0
-_08106EAE:
- lsls r3, r1, 24
- lsrs r3, 24
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl sub_81047C8
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8106E78
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/pokedex.h b/include/pokedex.h
index c132ae794..aad4849de 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -48,6 +48,6 @@ bool16 HasAllHoennMons(void);
bool16 HasAllKantoMons(void);
bool16 HasAllMons(void);
-u32 sub_8106B60(u16 species);
+u8 sub_8106B60(u16 species);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokedex_area_markers.h b/include/pokedex_area_markers.h
index da73fd529..47bbdf486 100644
--- a/include/pokedex_area_markers.h
+++ b/include/pokedex_area_markers.h
@@ -12,5 +12,8 @@ struct PAM_TaskData
};
void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites);
+void sub_81343F4(u8 taskId);
+u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y);
+u8 sub_81344E0(u8 taskId);
#endif //GUARD_POKEDEX_AREA_MARKERS_H
diff --git a/ld_script.txt b/ld_script.txt
index 2c599535d..c79508a78 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -237,7 +237,6 @@ SECTIONS {
src/easy_chat_2.o(.text);
src/easy_chat_3.o(.text);
src/pokedex_screen.o(.text);
- asm/pokedex_screen.o(.text);
src/list_menu.o(.text);
src/item_menu.o(.text);
src/save_location.o(.text);
diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c
index e44cc6d50..b3f3d18ad 100644
--- a/src/pokedex_screen.c
+++ b/src/pokedex_screen.c
@@ -15,7 +15,10 @@
#include "data.h"
#include "pokedex.h"
#include "trainer_pokemon_sprites.h"
+#include "decompress.h"
#include "constants/songs.h"
+#include "pokedex_area_markers.h"
+#include "field_specials.h"
struct PokedexScreenData
{
@@ -107,14 +110,14 @@ void sub_8105058(u8 a0);
void sub_8105178(u8 a0, u8 a1, u8 a2);
static bool8 sub_81052D0(u8 a0);
void sub_8105594(u8 a0, u8 a1);
-void sub_8105E1C(u8 a0);
-void sub_8106014(void);
-void sub_810603C(void);
+u8 sub_8105E1C(u8 a0);
+u8 sub_8106014(void);
+u8 sub_810603C(void);
bool8 sub_8106838(u8 category, u8 a1);
u8 sub_81068A0(u8 a0);
-void sub_810699C(u8 category);
+u8 sub_810699C(u8 category);
bool8 sub_8106A20(u16 a0);
-void sub_81067C0(void);
+u8 sub_81067C0(void);
void sub_81068DC(u8 category, u8 a1);
u8 sub_8106AF8(u16 a0);
void sub_8106B34(void);
@@ -122,6 +125,8 @@ void sub_8106E78(const u8 *a0, s32 a1);
static void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list);
static void sub_8102F48(u8 windowId, s32 itemId, u8 y);
static void sub_8103A40(u8 windowId, s32 itemId, u8 y);
+static void sub_8106BD8(u8 taskId);
+static void sub_8106BE8(u8 taskId);
#include "data/pokemon_graphics/footprint_table.h"
@@ -2069,10 +2074,10 @@ static bool32 sub_8104664(u8 a0)
}
else
{
- *r12 = 0;
- *r6 = r3;
- }
- return TRUE;
+ *r12 = 0;
+ *r6 = r3;
+ }
+ return TRUE;
}
void sub_81047B0(u8 *windowId_p)
@@ -2541,3 +2546,817 @@ static bool8 sub_81052D0(u8 a0)
}
return FALSE;
}
+
+void sub_8105594(u8 a0, u8 a1)
+{
+ u8 v0, v1, v2, v3;
+ s16 v4, v5, v6;
+
+ if (!gUnknown_203ACF0->field_2C)
+ {
+ v0 = gUnknown_8452334[0][0][2];
+ v1 = gUnknown_8452334[0][0][3];
+ }
+ else
+ {
+ v0 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][2];
+ v1 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][3];
+ }
+
+ v2 = 6 + (a1 * 4);
+ v3 = 3 + (a1 * 2);
+ if (v2 >= 28)
+ v2 = 28;
+ if (v3 >= 14)
+ v3 = 14;
+ v4 = v0 - ((a1 * 4) / 2);
+ v5 = v1 - ((a1 * 2) / 2);
+ if ((v4 + v2 + 2) >= 30)
+ v4 -= ((v4 + v2 + 2) - 30);
+ else if (v4 < 0)
+ v4 = 0;
+ if ((v5 + v3 + 2) >= 18)
+ v5 -= ((v5 + v3 + 2) - 18);
+ else if (v5 < 2)
+ v5 = 2;
+ v6 = (v5 + 1) + ((v3 / 2) + 1);
+
+ FillBgTilemapBufferRect_Palette0(a0, 4, v4, v5, 1, 1);
+ FillBgTilemapBufferRect_Palette0(a0, 5, v4 + 1, v5, v2, 1);
+ FillBgTilemapBufferRect_Palette0(a0, 1028, v4 + 1 + v2, v5, 1, 1);
+
+ FillBgTilemapBufferRect_Palette0(a0, 10, v4, v5 + 1 + v3, 1, 1);
+ FillBgTilemapBufferRect_Palette0(a0, 11, v4 + 1, v5 + 1 + v3, v2, 1);
+ FillBgTilemapBufferRect_Palette0(a0, 1034, v4 + 1 + v2, v5 + 1 + v3, 1, 1);
+
+ FillBgTilemapBufferRect_Palette0(a0, 6, v4, v5 + 1, 1, v6 - v5 - 1);
+ FillBgTilemapBufferRect_Palette0(a0, 7, v4, v6, 1, 1);
+ FillBgTilemapBufferRect_Palette0(a0, 9, v4, v6 + 1, 1, v5 + v3 - v6);
+
+ FillBgTilemapBufferRect_Palette0(a0, 1030, v4 + 1 + v2, v5 + 1, 1, v6 - v5 - 1);
+ FillBgTilemapBufferRect_Palette0(a0, 1031, v4 + 1 + v2, v6, 1, 1);
+ FillBgTilemapBufferRect_Palette0(a0, 1033, v4 + 1 + v2, v6 + 1, 1, v5 + v3 - v6);
+
+ FillBgTilemapBufferRect_Palette0(a0, 1, v4 + 1, v5 + 1, v2, v6 - v5 - 1);
+ FillBgTilemapBufferRect_Palette0(a0, 8, v4 + 1, v6, v2, 1);
+ FillBgTilemapBufferRect_Palette0(a0, 2, v4 + 1, v6 + 1, v2, v5 + v3 - v6);
+}
+
+void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3)
+{
+ u8 * categoryName;
+ u8 index, categoryStr[12];
+
+ species = SpeciesToNationalPokedexNum(species);
+
+ categoryName = (u8 *)gPokedexEntries[species].categoryName;
+ index = 0;
+ if (sub_8104AB0(species, 1, 0))
+ {
+#if REVISION == 0
+ while ((categoryName[index] != CHAR_SPACE) && (index < 11))
+#else
+ while ((categoryName[index] != EOS) && (index < 11))
+#endif
+ {
+ categoryStr[index] = categoryName[index];
+ index++;
+ }
+ }
+ else
+ {
+ while (index < 11)
+ {
+ categoryStr[index] = CHAR_QUESTION_MARK;
+ index++;
+ }
+ }
+
+ categoryStr[index] = EOS;
+
+ sub_81047C8(a0, 0, categoryStr, a2, a3, 0);
+ a2 += GetStringWidth(0, categoryStr, 0);
+ sub_81047C8(a0, 0, gText_PokedexPokemon, a2, a3, 0);
+}
+
+void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y)
+{
+ u16 height;
+ u32 inches, feet;
+ const u8 *labelText;
+ u8 buffer[32];
+ u8 i;
+
+ species = SpeciesToNationalPokedexNum(species);
+ height = gPokedexEntries[species].height;
+ labelText = gText_HT;
+
+ i = 0;
+ buffer[i++] = EXT_CTRL_CODE_BEGIN;
+ buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ buffer[i++] = 5;
+ buffer[i++] = CHAR_SPACE;
+
+ if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0))
+ {
+ inches = 10000 * height / 254; // actually tenths of inches here
+ if (inches % 10 >= 5)
+ inches += 10;
+ feet = inches / 120;
+ inches = (inches - (feet * 120)) / 10;
+ if (feet / 10 == 0)
+ {
+ buffer[i++] = 0;
+ buffer[i++] = feet + CHAR_0;
+ }
+ else
+ {
+ buffer[i++] = feet / 10 + CHAR_0;
+ buffer[i++] = feet % 10 + CHAR_0;
+ }
+ buffer[i++] = CHAR_SGL_QUOT_RIGHT;
+ buffer[i++] = inches / 10 + CHAR_0;
+ buffer[i++] = inches % 10 + CHAR_0;
+ buffer[i++] = CHAR_DBL_QUOT_RIGHT;
+ buffer[i++] = EOS;
+ }
+ else
+ {
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_SGL_QUOT_RIGHT;
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_DBL_QUOT_RIGHT;
+ }
+
+ buffer[i++] = EOS;
+ sub_81047C8(windowId, 0, labelText, x, y, 0);
+ x += 30;
+ sub_81047C8(windowId, 0, buffer, x, y, 0);
+}
+
+void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y)
+{
+ u16 weight;
+ u32 lbs;
+ bool8 output;
+ const u8 * labelText;
+ const u8 * lbsText;
+ u8 buffer[32];
+ u8 i;
+ u32 j;
+
+ species = SpeciesToNationalPokedexNum(species);
+ weight = gPokedexEntries[species].weight;
+ labelText = gText_WT;
+ lbsText = gText_Lbs;
+
+ i = 0;
+ buffer[i++] = EXT_CTRL_CODE_BEGIN;
+ buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ buffer[i++] = 5;
+
+ if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0))
+ {
+ lbs = (weight * 100000) / 4536;
+
+ if (lbs % 10 >= 5)
+ lbs += 10;
+
+ output = FALSE;
+
+ if ((buffer[i] = (lbs / 100000) + CHAR_0) == CHAR_0 && !output)
+ {
+ buffer[i++] = CHAR_SPACE;
+ }
+ else
+ {
+ output = TRUE;
+ i++;
+ }
+
+ lbs %= 100000;
+ if ((buffer[i] = (lbs / 10000) + CHAR_0) == CHAR_0 && !output)
+ {
+ buffer[i++] = CHAR_SPACE;
+ }
+ else
+ {
+ output = TRUE;
+ i++;
+ }
+
+ lbs %= 10000;
+ if ((buffer[i] = (lbs / 1000) + CHAR_0) == CHAR_0 && !output)
+ {
+ buffer[i++] = CHAR_SPACE;
+ }
+ else
+ {
+ output = TRUE;
+ i++;
+ }
+
+ lbs %= 1000;
+ buffer[i++] = (lbs / 100) + CHAR_0;
+ lbs %= 100;
+ buffer[i++] = CHAR_PERIOD;
+ buffer[i++] = (lbs / 10) + CHAR_0;
+ }
+ else
+ {
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_QUESTION_MARK;
+ buffer[i++] = CHAR_PERIOD;
+ buffer[i++] = CHAR_QUESTION_MARK;
+ }
+ buffer[i++] = CHAR_SPACE;
+ buffer[i++] = EXT_CTRL_CODE_BEGIN;
+ buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ buffer[i++] = 0;
+
+ for (j = 0; j < 33 - i && lbsText[j] != EOS; j++)
+ buffer[i + j] = lbsText[j];
+
+ buffer[i + j] = EOS;
+ sub_81047C8(windowId, 0, labelText, x, y, 0);
+ x += 30;
+ sub_81047C8(windowId, 0, buffer, x, y, 0);
+}
+
+void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y)
+{
+ struct TextPrinterTemplate printerTemplate;
+ u16 length;
+ s32 v1;
+
+ species = SpeciesToNationalPokedexNum(species);
+
+ if (sub_8104AB0(species, 1, 0))
+ {
+ printerTemplate.currentChar = gPokedexEntries[species].description;
+ printerTemplate.windowId = a0;
+ printerTemplate.fontId = 2;
+ printerTemplate.letterSpacing = 1;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.unk = 0;
+ printerTemplate.fgColor = 1;
+ printerTemplate.bgColor = 0;
+ printerTemplate.shadowColor = 2;
+
+ length = GetStringWidth(2, gPokedexEntries[species].description, 0);
+ v1 = x + (240 - length) / 2;
+
+ if (v1 > 0)
+ x = v1;
+ else
+ x = 0;
+
+ printerTemplate.x = x;
+ printerTemplate.y = y;
+ printerTemplate.currentX = x;
+ printerTemplate.currentY = y;
+
+ AddTextPrinter(&printerTemplate, TEXT_SPEED_FF, NULL);
+ }
+}
+
+void sub_8105D64(u8 a0, u16 species, u8 a2, u8 a3)
+{
+ u16 i, j, unused, v3;
+ u8 v4, v5;
+ u8 * buffer;
+ u8 * footprint;
+
+ if (!(sub_8104AB0(species, 1, 1)))
+ return;
+ footprint = (u8 *)(gMonFootprintTable[species]);
+ buffer = gDecompressionBuffer;
+ unused = 0;
+ v3 = 0;
+
+ for (i = 0; i < 32; i++)
+ {
+ v4 = footprint[i];
+ for (j = 0; j < 4; j++)
+ {
+ v5 = 0;
+ if (v4 & (1 << (j * 2)))
+ v5 |= 1;
+ if (v4 & (2 << (j * 2)))
+ v5 |= 16;
+ buffer[v3] = v5;
+ v3++;
+ }
+ }
+ BlitBitmapRectToWindow(a0, buffer, 0, 0, 16, 16, a2, a3, 16, 16);
+}
+
+u8 sub_8105E1C(bool8 a0)
+{
+ sub_8105594(3, 6);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16);
+
+ gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_84521D4);
+ gUnknown_203ACF0->field_4A[1] = AddWindow(&gUnknown_84521DC);
+ gUnknown_203ACF0->field_4A[2] = AddWindow(&gUnknown_84521E4);
+
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], 0);
+ sub_81049FC(gUnknown_203ACF0->field_4A[0], gUnknown_203ACF0->field_5A, 144);
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[0]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[1], 0);
+ sub_8104A34(gUnknown_203ACF0->field_4A[1], 0, gUnknown_203ACF0->field_5A, 0, 8);
+ sub_81047C8(gUnknown_203ACF0->field_4A[1], 2, gSpeciesNames[gUnknown_203ACF0->field_5A], 28, 8, 0);
+ sub_8105800(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 24);
+ sub_81058C4(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 36);
+ sub_8105A3C(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 48);
+ sub_8105D64(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 88, 40);
+
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[1]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[1], 2);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[2], 0);
+ sub_8105CB0(gUnknown_203ACF0->field_4A[2], gUnknown_203ACF0->field_5A, 0, 8);
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[2]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[2], 2);
+ FillWindowPixelBuffer(1, 255);
+ if (a0 == FALSE)
+ {
+ sub_81047C8(1, 0, gText_Cry, 8, 2, 4);
+ sub_8104C2C(gText_NextDataCancel);
+ }
+ else
+ sub_8104C2C(gText_Next);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 2);
+
+ return 1;
+}
+
+u8 sub_8106014(void)
+{
+ sub_81047B0(&gUnknown_203ACF0->field_4A[0]);
+ sub_81047B0(&gUnknown_203ACF0->field_4A[1]);
+ sub_81047B0(&gUnknown_203ACF0->field_4A[2]);
+
+ return 0;
+}
+
+u8 sub_810603C(void)
+{
+ int i;
+ u8 v1, v2;
+ bool8 v3;
+ s16 v4, v5;
+ u16 speciesId, species;
+ u16 v8;
+
+ species = gUnknown_203ACF0->field_5A;
+ speciesId = SpeciesToNationalPokedexNum(species);
+ v3 = sub_8104AB0(species, 1, 1);
+ v1 = 28;
+ v2 = 14;
+ v4 = 0;
+ v5 = 2;
+
+ FillBgTilemapBufferRect_Palette0(3, 4, v4, v5, 1, 1);
+ FillBgTilemapBufferRect_Palette0(3, 1028, v4 + 1 + v1, v5, 1, 1);
+ FillBgTilemapBufferRect_Palette0(3, 2052, v4, v5 + 1 + v2, 1, 1);
+ FillBgTilemapBufferRect_Palette0(3, 3076, v4 + 1 + v1, v5 + 1 + v2, 1, 1);
+ FillBgTilemapBufferRect_Palette0(3, 5, v4 + 1, v5, v1, 1);
+ FillBgTilemapBufferRect_Palette0(3, 2053, v4 + 1, v5 + 1 + v2, v1, 1);
+ FillBgTilemapBufferRect_Palette0(3, 6, v4, v5 + 1, 1, v2);
+ FillBgTilemapBufferRect_Palette0(3, 1030, v4 + 1 + v1, v5 + 1, 1, v2);
+ FillBgTilemapBufferRect_Palette0(3, 1, v4 + 1, v5 + 1, v1, v2);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16);
+
+ v1 = 10;
+ v2 = 6;
+ v4 = 1;
+ v5 = 9;
+
+ FillBgTilemapBufferRect_Palette0(0, 29, v4, v5, 1, 1);
+ FillBgTilemapBufferRect_Palette0(0, 1053, v4 + 1 + v1, v5, 1, 1);
+ FillBgTilemapBufferRect_Palette0(0, 2077, v4, v5 + 1 + v2, 1, 1);
+ FillBgTilemapBufferRect_Palette0(0, 3101, v4 + 1 + v1, v5 + 1 + v2, 1, 1);
+ FillBgTilemapBufferRect_Palette0(0, 30, v4 + 1, v5, v1, 1);
+ FillBgTilemapBufferRect_Palette0(0, 2078, v4 + 1, v5 + 1 + v2, v1, 1);
+ FillBgTilemapBufferRect_Palette0(0, 31, v4, v5 + 1, 1, v2);
+ FillBgTilemapBufferRect_Palette0(0, 1055, v4 + 1 + v1, v5 + 1, 1, v2);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20);
+
+ gUnknown_203ACF0->field_64 = GetUnlockedSeviiAreas();
+ v8 = 4;
+ for (i = 3; i < 7; i++)
+ if ((gUnknown_203ACF0->field_64 >> i) & 1)
+ v8 = 0;
+
+ gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_8452214);
+ CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443620, 0, 0);
+ SetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2,
+ GetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2) + v8);
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[0]);
+ for (i = 0; i < 7; i++)
+ if ((gUnknown_203ACF0->field_64 >> i) & 1)
+ {
+ gUnknown_203ACF0->field_4A[i + 1] = AddWindow(gUnknown_8452254[i].window);
+ CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[i + 1], gUnknown_8452254[i].tilemap, 0, 0);
+ SetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2) + v8);
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[i + 1]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[i + 1], 2);
+ }
+ gUnknown_203ACF0->field_4A[8] = AddWindow(&gUnknown_84521F4);
+ gUnknown_203ACF0->field_4A[9] = AddWindow(&gUnknown_84521FC);
+ gUnknown_203ACF0->field_4A[10] = AddWindow(&gUnknown_8452204);
+ gUnknown_203ACF0->field_4A[11] = AddWindow(&gUnknown_84521EC);
+ gUnknown_203ACF0->field_4A[12] = AddWindow(&gUnknown_845220C);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[11], 0);
+ sub_8107CD8(160, species);
+ sub_8107CF8(gUnknown_203ACF0->field_4A[11], species, sub_81049CC(species), 0, 0);
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[11]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[11], 2);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[9], 0);
+ {
+ s32 width = GetStringWidth(0, gText_Size, 0);
+ sub_81047C8(gUnknown_203ACF0->field_4A[9], 0, gText_Size, (gUnknown_84521FC.width * 8 - width) / 2, 4, 0);
+ }
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[9]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[9], 2);
+
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[10], 0);
+ {
+ s32 width = GetStringWidth(0, gText_Area, 0);
+ sub_81047C8(gUnknown_203ACF0->field_4A[10], 0, gText_Area, (gUnknown_8452204.width * 8 - width) / 2, 4, 0);
+ }
+ SetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2) + v8);
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[10]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[10], 2);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[8], 0);
+ sub_8104A34(gUnknown_203ACF0->field_4A[8], 0, species, 0, 0);
+ sub_81047C8(gUnknown_203ACF0->field_4A[8], 2, gSpeciesNames[species], 3, 12, 0);
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[8]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[8], 2);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[12], 0);
+ ListMenuLoadStdPalAt(176, 1);
+
+ if (v3)
+ {
+ BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type1, 0, 1);
+ if (gBaseStats[species].type1 != gBaseStats[species].type2)
+ BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type2, 32, 1);
+ }
+ PutWindowTilemap(gUnknown_203ACF0->field_4A[12]);
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[12], 2);
+ ResetAllPicSprites();
+ LoadPalette(gUnknown_8452368, 288, 32);
+
+ if (v3)
+ {
+ gUnknown_203ACF0->field_4A[14] = CreateMonPicSprite_HandleDeoxys(species, 8, sub_81049CC(species), 1, 40, 104, 0, 65535);
+ gSprites[gUnknown_203ACF0->field_4A[14]].oam.paletteNum = 2;
+ gSprites[gUnknown_203ACF0->field_4A[14]].oam.affineMode = 1;
+ gSprites[gUnknown_203ACF0->field_4A[14]].oam.matrixNum = 2;
+ gSprites[gUnknown_203ACF0->field_4A[14]].oam.priority = 1;
+ gSprites[gUnknown_203ACF0->field_4A[14]].pos2.y = gPokedexEntries[speciesId].pokemonOffset;
+ SetOamMatrix(2, gPokedexEntries[speciesId].pokemonScale, 0, 0, gPokedexEntries[speciesId].pokemonScale);
+ gUnknown_203ACF0->field_4A[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, 1), 1, 80, 104, 0, 65535);
+ gSprites[gUnknown_203ACF0->field_4A[15]].oam.paletteNum = 2;
+ gSprites[gUnknown_203ACF0->field_4A[15]].oam.affineMode = 1;
+ gSprites[gUnknown_203ACF0->field_4A[15]].oam.matrixNum = 1;
+ gSprites[gUnknown_203ACF0->field_4A[15]].oam.priority = 1;
+ gSprites[gUnknown_203ACF0->field_4A[15]].pos2.y = gPokedexEntries[speciesId].trainerOffset;
+ SetOamMatrix(1, gPokedexEntries[speciesId].trainerScale, 0, 0, gPokedexEntries[speciesId].trainerScale);
+ }
+ else
+ {
+ gUnknown_203ACF0->field_4A[14] = 0xff;
+ gUnknown_203ACF0->field_4A[15] = 0xff;
+ }
+
+ gUnknown_203ACF0->field_02[2] = sub_8134230(species, 2001, 3, v8 * 8);
+ if (!(sub_81344E0(gUnknown_203ACF0->field_02[2])))
+ {
+ BlitBitmapRectToWindow(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443D00, 0, 0, 88, 16, 4, 28, 88, 16);
+ {
+ s32 width = GetStringWidth(0, gText_AreaUnknown, 0);
+ sub_81047C8(gUnknown_203ACF0->field_4A[0], 0, gText_AreaUnknown, (96 - width) / 2, 29, 0);
+ }
+ }
+ CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2);
+ FillWindowPixelBuffer(1, 255);
+ sub_81047C8(1, 0, gText_Cry, 8, 2, 4);
+ sub_8104C2C(gText_CancelPreviousData);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 2);
+
+ return 1;
+}
+
+
+u8 sub_81067C0(void)
+{
+ int i;
+
+ sub_81343F4(gUnknown_203ACF0->field_02[2]);
+
+ for (i = 0; i < 13; i++)
+ sub_81047B0(&gUnknown_203ACF0->field_4A[i]);
+ if (gUnknown_203ACF0->field_4A[15] != 0xff)
+ FreeAndDestroyTrainerPicSprite(gUnknown_203ACF0->field_4A[15]);
+ if (gUnknown_203ACF0->field_4A[14] != 0xff)
+ FreeAndDestroyMonPicSprite(gUnknown_203ACF0->field_4A[14]);
+ return 0;
+}
+
+int sub_8106810(u16 species)
+{
+ if (IsNationalPokedexEnabled() == TRUE)
+ return TRUE;
+ if (SpeciesToNationalPokedexNum(species) <= KANTO_DEX_COUNT)
+ return TRUE;
+ return FALSE;
+}
+
+u8 sub_8106838(u8 categoryNum, u8 pageNum)
+{
+ int i, count;
+ u16 species;
+
+ count = gDexCategories[categoryNum].page[pageNum].count;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (i < count)
+ {
+ species = gDexCategories[categoryNum].page[pageNum].species[i];
+ if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1))
+ return 1;
+ }
+ }
+ return 0;
+}
+
+u8 sub_81068A0(u8 categoryNum)
+{
+ int i;
+ u8 count;
+
+ count = gDexCategories[categoryNum].count;
+
+ for (i = 0; i < count; i++)
+ if (sub_8106838(categoryNum, i))
+ return 1;
+
+ return 0;
+}
+
+void sub_81068DC(u8 categoryNum, u8 pageNum)
+{
+ int i, count;
+ u16 species;
+
+ count = gDexCategories[categoryNum].page[pageNum].count;
+ gUnknown_203ACF0->field_2C = 0;
+
+ for (i = 0; i < 4; i++)
+ gUnknown_203ACF0->field_18[i] = 0xffff;
+ for (i = 0; i < count; i++)
+ {
+ species = gDexCategories[categoryNum].page[pageNum].species[i];
+ if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1))
+ {
+ gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2C] = gDexCategories[categoryNum].page[pageNum].species[i];
+ gUnknown_203ACF0->field_2C++;
+ }
+ }
+}
+
+u8 sub_810699C(u8 category)
+{
+ int i;
+ u8 count, v2, v3;
+
+ count = gDexCategories[category].count;
+ v2 = 0xff;
+ v3 = 0xff;
+
+ for (i = 0; i < count; i++)
+ if (sub_8106838(category, i))
+ {
+ if (v2 == 0xff)
+ v2 = i;
+ v3 = i;
+ }
+ if (v3 != 0xff)
+ {
+ gUnknown_203ACF0->field_29 = v2;
+ gUnknown_203ACF0->field_2A = v3 + 1;
+ return 0;
+ }
+ else
+ {
+ gUnknown_203ACF0->field_29 = 0;
+ gUnknown_203ACF0->field_2A = 0;
+ return 1;
+ }
+}
+
+u8 sub_8106A20(u16 a0)
+{
+ int i, j, k, categoryCount, categoryPageCount, v5;
+ u16 species;
+
+ for (i = 0; i < NELEMS(gDexCategories); i++)
+ {
+ categoryCount = gDexCategories[i].count;
+ for (j = 0; j < categoryCount; j++)
+ {
+ categoryPageCount = gDexCategories[i].page[j].count;
+ for (k = 0, v5 = 0; k < categoryPageCount; k++)
+ {
+ species = gDexCategories[i].page[j].species[k];
+ if (a0 == species)
+ {
+ gUnknown_203ACF0->field_28 = i;
+ gUnknown_203ACF0->field_2B = j;
+ gUnknown_203ACF0->field_2D = v5;
+ return 0;
+ }
+ if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1))
+ v5++;
+ }
+ }
+ }
+ return 1;
+}
+
+u8 sub_8106AF8(u16 a0)
+{
+ int i, v1;
+
+ for (i = 0, v1 = 0; i < a0; i++)
+ if (sub_8106838(gUnknown_203ACF0->field_28, i))
+ v1++;
+
+ return v1 + 1;
+}
+
+void sub_8106B34(void)
+{
+ if (JOY_NEW(START_BUTTON))
+ PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10);
+}
+
+u8 sub_8106B60(u16 species)
+{
+ sub_8104AB0(species, 2, 1);
+ sub_8104AB0(species, 3, 1);
+
+ if (!IsNationalPokedexEnabled() && SpeciesToNationalPokedexNum(species) > KANTO_DEX_COUNT)
+ return CreateTask(sub_8106BD8, 0);
+
+ sub_810250C();
+ gTasks[gUnknown_203ACF0->field_00].func = sub_8106BE8;
+ sub_8106A20(species);
+
+ return gUnknown_203ACF0->field_00;
+}
+
+static void sub_8106BD8(u8 taskId)
+{
+ DestroyTask(taskId);
+}
+
+static void sub_8106BE8(u8 taskId)
+{
+ switch (gUnknown_203ACF0->field_01)
+ {
+ case 0:
+ sub_810699C(gUnknown_203ACF0->field_28);
+ if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29)
+ gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29;
+ gUnknown_203ACF0->field_01 = 3;
+ break;
+ case 1:
+ sub_8106014();
+ sub_8104E90();
+
+ gMain.state = 0;
+ gUnknown_203ACF0->field_01 = 2;
+ break;
+ case 2:
+ if (sub_8102798())
+ DestroyTask(taskId);
+ break;
+ case 3:
+ sub_8104F0C(1);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+
+ sub_8105058(0xff);
+
+ gUnknown_203ACF0->field_01 = 4;
+ break;
+ case 4:
+ gPaletteFade.bufferTransferDisabled = 0;
+ BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0xffff);
+ ShowBg(3);
+ ShowBg(2);
+ ShowBg(1);
+ ShowBg(0);
+
+ gUnknown_203ACF0->field_01 = 5;
+ break;
+ case 5:
+ gTasks[taskId].data[0] = 30;
+ gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0);
+ gUnknown_203ACF0->field_01 = 6;
+ break;
+ case 6:
+ sub_8105058(gUnknown_203ACF0->field_2D);
+ sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C);
+
+ if (gTasks[taskId].data[0])
+ gTasks[taskId].data[0]--;
+ else
+ {
+ ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0);
+ gUnknown_203ACF0->field_01 = 7;
+ }
+ break;
+ case 7:
+ gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D];
+ gUnknown_203ACF0->field_01 = 8;
+ break;
+ case 8:
+ sub_8105E1C(1);
+ gUnknown_203ACF0->field_01 = 9;
+ break;
+ case 9:
+ gUnknown_203ACF0->field_02[0] = 0;
+ gUnknown_203ACF0->field_02[1] = 0;
+ gUnknown_203ACF0->field_01++;
+ case 10:
+ if (gUnknown_203ACF0->field_02[1] < 6)
+ {
+ if (gUnknown_203ACF0->field_02[0])
+ {
+ sub_8105594(0, gUnknown_203ACF0->field_02[1]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_02[0] = 4;
+ gUnknown_203ACF0->field_02[1]++;
+ }
+ else
+ gUnknown_203ACF0->field_02[0]--;
+ }
+ else
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+
+ PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10);
+ gUnknown_203ACF0->field_02[0] = 0;
+ gUnknown_203ACF0->field_01 = 11;
+ }
+ break;
+ case 11:
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ gUnknown_203ACF0->field_01 = 2;
+ break;
+ }
+}
+
+void sub_8106E78(const u8 * str, s32 mode)
+{
+ u32 x;
+
+ switch (mode)
+ {
+ case 0:
+ x = 8;
+ break;
+ case 1:
+ x = (u32)(240 - GetStringWidth(2, str, 0)) / 2;
+ break;
+ case 2:
+ default:
+ x = 232 - GetStringWidth(2, str, 0);
+ break;
+ }
+
+ sub_81047C8(0, 2, str, x, 2, 4);
+}