summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex.s3970
-rw-r--r--data/pokedex.s9
-rw-r--r--include/graphics.h11
-rw-r--r--src/pokedex.c1133
4 files changed, 1141 insertions, 3982 deletions
diff --git a/asm/pokedex.s b/asm/pokedex.s
index 2745593e5..67c7ca4a0 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -5,3976 +5,6 @@
.text
- thumb_func_start sub_80BB534
-sub_80BB534: @ 80BB534
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _080BB5FC
- cmp r0, 0x1
- ble _080BB558
- cmp r0, 0x2
- beq _080BB628
- cmp r0, 0x3
- bne _080BB558
- b _080BB71C
-_080BB558:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl sub_80C09B0
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r2, sp, 0x4
- mov r8, r2
- mov r2, sp
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080BB582:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _080BB582
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r3, r12
- orrs r0, r3
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- mov r0, sp
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- b _080BB74C
- .pool
-_080BB5FC:
- bl ScanlineEffect_Stop
- bl ResetTasks
- bl ResetSpriteData
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- bl dp13_810BB8C
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _080BB74C
- .pool
-_080BB628:
- ldr r4, =gUnknown_02039B4C
- ldr r0, =0x00000664
- bl AllocZeroed
- str r0, [r4]
- bl sub_80BB384
- ldr r0, =sub_80BB78C
- movs r1, 0
- bl CreateTask
- ldr r1, [r4]
- ldr r5, =gSaveBlock2Ptr
- ldr r0, [r5]
- ldrb r0, [r0, 0x19]
- ldr r3, =0x00000612
- adds r1, r3
- strh r0, [r1]
- bl IsNationalPokedexEnabled
- adds r1, r0, 0
- cmp r1, 0
- bne _080BB65E
- ldr r0, [r4]
- ldr r2, =0x00000612
- adds r0, r2
- strh r1, [r0]
-_080BB65E:
- ldr r1, [r4]
- ldr r0, [r5]
- ldrb r2, [r0, 0x18]
- ldr r3, =0x00000616
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, =gUnknown_02039B50
- ldrh r2, [r0]
- subs r3, 0x8
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, =gUnknown_02039B52
- ldrb r0, [r0]
- ldr r2, =0x0000062c
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r4]
- adds r3, 0x3F
- adds r0, r3
- movs r1, 0
- strb r1, [r0]
- bl IsNationalPokedexEnabled
- cmp r0, 0
- bne _080BB6D0
- movs r0, 0
- bl GetHoennPokedexCount
- ldr r1, [r4]
- ldr r2, =0x0000061a
- adds r1, r2
- strh r0, [r1]
- movs r0, 0x1
- bl GetHoennPokedexCount
- b _080BB6E4
- .pool
-_080BB6D0:
- movs r0, 0
- bl GetNationalPokedexCount
- ldr r1, [r4]
- ldr r2, =0x0000061a
- adds r1, r2
- strh r0, [r1]
- movs r0, 0x1
- bl GetNationalPokedexCount
-_080BB6E4:
- ldr r1, [r4]
- ldr r3, =0x0000061c
- adds r1, r3
- strh r0, [r1]
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r1, =0x0000062d
- adds r0, r1
- movs r1, 0x8
- strb r1, [r0]
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080BB74C
- .pool
-_080BB71C:
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, =sub_80BB370
- bl SetVBlankCallback
- ldr r0, =sub_80BB774
- bl SetMainCallback2
- ldr r0, =gUnknown_02039B4C
- ldr r1, [r0]
- ldr r3, =0x00000612
- adds r0, r1, r3
- ldrb r0, [r0]
- ldr r2, =0x00000616
- adds r1, r2
- ldrb r1, [r1]
- bl sub_80BC8D4
- ldr r0, =gMPlayInfo_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- bl m4aMPlayVolumeControl
-_080BB74C:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BB534
-
- thumb_func_start sub_80BB774
-sub_80BB774: @ 80BB774
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80BB774
-
- thumb_func_start sub_80BB78C
-sub_80BB78C: @ 80BB78C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_02039B4C
- ldr r1, [r0]
- ldr r0, =0x0000064c
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- movs r0, 0
- bl sub_80BC514
- lsls r0, 24
- cmp r0, 0
- beq _080BB7BE
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80BB7D4
- str r0, [r1]
-_080BB7BE:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BB78C
-
- thumb_func_start sub_80BB7D4
-sub_80BB7D4: @ 80BB7D4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, =gUnknown_02039B4C
- ldr r0, [r7]
- ldr r4, =0x00000652
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0x12
- bl SetGpuReg
- ldr r3, [r7]
- adds r1, r3, r4
- ldrh r0, [r1]
- movs r4, 0
- ldrsh r2, [r1, r4]
- mov r8, r2
- cmp r2, 0
- beq _080BB810
- subs r0, 0x8
- strh r0, [r1]
- b _080BBA06
- .pool
-_080BB810:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- mov r9, r0
- ands r0, r1
- cmp r0, 0
- beq _080BB8A4
- ldr r1, =0x0000060e
- adds r0, r3, r1
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3, r0
- ldrb r0, [r0, 0x2]
- lsls r0, 31
- cmp r0, 0
- beq _080BB8A4
- bl sub_80BD8D0
- ldr r4, =gSprites
- ldr r0, [r7]
- ldr r5, =0x00000626
- adds r0, r5
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- mov r0, r9
- lsls r0, r1
- mvns r0, r0
- mov r2, r8
- str r2, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r7]
- adds r0, r5
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, =sub_80BE470
- str r1, [r0]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BBBF4
- str r1, [r0]
- movs r0, 0x15
- b _080BB976
- .pool
-_080BB8A4:
- ldrh r2, [r2, 0x2E]
- movs r0, 0x8
- ands r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _080BB8FC
- ldr r3, =gUnknown_02039B4C
- ldr r1, [r3]
- ldr r4, =0x00000652
- adds r0, r1, r4
- movs r2, 0
- strh r2, [r0]
- ldr r0, =0x0000064f
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- movs r1, 0xCA
- lsls r1, 3
- adds r0, r1
- strh r2, [r0]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BBA78
- str r1, [r0]
- movs r0, 0x5
- bl PlaySE
- b _080BBA06
- .pool
-_080BB8FC:
- movs r0, 0x4
- ands r0, r2
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080BB9A0
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl sub_80C1258
- ldr r1, =gTasks
- lsls r3, r6, 2
- adds r3, r6
- lsls r3, 3
- adds r3, r1
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r3, 0x8]
- ldr r1, =gUnknown_02039B4C
- ldr r0, [r1]
- ldr r4, =0x0000064e
- adds r0, r4
- strb r2, [r0]
- ldr r0, [r1]
- ldr r2, =0x0000062c
- adds r1, r0, r2
- ldrb r2, [r1]
- subs r4, 0x24
- adds r1, r0, r4
- strh r2, [r1]
- ldr r2, =0x0000060e
- adds r1, r0, r2
- ldrh r2, [r1]
- subs r4, 0x1A
- adds r1, r0, r4
- strh r2, [r1]
- ldr r2, =0x00000612
- adds r1, r0, r2
- ldrh r2, [r1]
- adds r4, 0x4
- adds r1, r0, r4
- strh r2, [r1]
- ldr r2, =0x00000616
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r4, 0x4
- adds r0, r4
- strh r1, [r0]
- ldr r0, =sub_80BBD1C
- str r0, [r3]
- movs r0, 0x2
-_080BB976:
- bl PlaySE
- bl sub_80BC890
- b _080BBA06
- .pool
-_080BB9A0:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080BB9D8
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BBDE8
- str r1, [r0]
- movs r0, 0x3
- bl PlaySE
- b _080BBA06
- .pool
-_080BB9D8:
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r4, =0x0000060e
- adds r0, r4
- ldrh r0, [r0]
- movs r1, 0xE
- bl sub_80BD69C
- ldr r1, [r5]
- adds r4, r1, r4
- strh r0, [r4]
- ldr r0, =0x0000062e
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080BBA06
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80BBA28
- str r0, [r1]
-_080BBA06:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BB7D4
-
- thumb_func_start sub_80BBA28
-sub_80BBA28: @ 80BBA28
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_02039B4C
- ldr r2, [r0]
- ldr r1, =0x0000062f
- adds r0, r2, r1
- ldrb r0, [r0]
- ldr r3, =0x00000634
- adds r1, r2, r3
- ldrb r1, [r1]
- adds r3, 0x2
- adds r2, r3
- ldrb r2, [r2]
- bl sub_80BD404
- lsls r0, 24
- cmp r0, 0
- beq _080BBA5C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80BB7D4
- str r0, [r1]
-_080BBA5C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBA28
-
- thumb_func_start sub_80BBA78
-sub_80BBA78: @ 80BBA78
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r6, =gUnknown_02039B4C
- ldr r0, [r6]
- ldr r4, =0x00000652
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0x12
- bl SetGpuReg
- ldr r3, [r6]
- adds r1, r3, r4
- ldrh r2, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0x50
- beq _080BBAB0
- adds r0, r2, 0
- adds r0, 0x8
- strh r0, [r1]
- b _080BBBE8
- .pool
-_080BBAB0:
- ldr r5, =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080BBB58
- movs r2, 0xCA
- lsls r2, 3
- adds r0, r3, r2
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080BBADC
- cmp r0, 0x1
- ble _080BBB20
- cmp r0, 0x2
- beq _080BBAF4
- cmp r0, 0x3
- beq _080BBB34
- b _080BBB20
- .pool
-_080BBADC:
- ldr r4, =0x0000060e
- adds r1, r3, r4
- movs r0, 0
- strh r0, [r1]
- ldr r0, =0x0000062c
- adds r1, r3, r0
- movs r0, 0x40
- b _080BBB0C
- .pool
-_080BBAF4:
- ldr r1, =0x0000060c
- adds r2, r3, r1
- ldrh r0, [r2]
- subs r0, 0x1
- ldr r4, =0x0000060e
- adds r1, r3, r4
- strh r0, [r1]
- ldrh r0, [r2]
- lsls r0, 4
- adds r0, 0x30
- ldr r2, =0x0000062c
- adds r1, r3, r2
-_080BBB0C:
- strb r0, [r1]
- bl sub_80BDA40
- ldr r0, [r6]
- adds r0, r4
- ldrh r0, [r0]
- movs r1, 0xE
- bl sub_80BD2B4
- ldrh r1, [r5, 0x2E]
-_080BBB20:
- movs r0, 0x8
- orrs r0, r1
- strh r0, [r5, 0x2E]
- b _080BBB58
- .pool
-_080BBB34:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BBDE8
- str r1, [r0]
- movs r0, 0x3
- bl PlaySE
-_080BBB58:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0xA
- ands r0, r1
- cmp r0, 0
- beq _080BBB98
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r3, =0x0000064f
- adds r0, r3
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BB7D4
- str r1, [r0]
- b _080BBBB6
- .pool
-_080BBB98:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080BBBC4
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- movs r4, 0xCA
- lsls r4, 3
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, 0
- beq _080BBBC4
- subs r0, 0x1
- strh r0, [r1]
-_080BBBB6:
- movs r0, 0x5
- bl PlaySE
- b _080BBBE8
- .pool
-_080BBBC4:
- ldrh r1, [r2, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080BBBE8
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- movs r2, 0xCA
- lsls r2, 3
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0x2
- bhi _080BBBE8
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x5
- bl PlaySE
-_080BBBE8:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBA78
-
- thumb_func_start sub_80BBBF4
-sub_80BBBF4: @ 80BBBF4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, =gSprites
- ldr r5, =gUnknown_02039B4C
- ldr r3, [r5]
- ldr r6, =0x00000626
- adds r0, r3, r6
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- movs r2, 0x20
- ldrsh r0, [r1, r2]
- cmp r0, 0x30
- bne _080BBC52
- movs r2, 0x22
- ldrsh r0, [r1, r2]
- cmp r0, 0x38
- bne _080BBC52
- ldr r1, =0x0000064a
- adds r0, r3, r1
- ldrb r1, [r0]
- ldr r2, =0x0000064b
- adds r0, r3, r2
- strb r1, [r0]
- ldr r1, [r5]
- subs r2, 0x3D
- adds r0, r1, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r1, r0
- adds r1, r6
- ldrb r1, [r1]
- bl sub_80BE91C
- ldr r2, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x8]
- ldr r0, =sub_80BBC74
- str r0, [r1]
-_080BBC52:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBBF4
-
- thumb_func_start sub_80BBC74
-sub_80BBC74: @ 80BBC74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _080BBCE0
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r1, =0x0000064a
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080BBCFC
- ldrb r0, [r4, 0x8]
- bl sub_80BE9C4
- lsls r0, 24
- cmp r0, 0
- bne _080BBCFC
- bl sub_80BD930
- lsls r0, 24
- cmp r0, 0
- beq _080BBCFC
- ldr r0, [r5]
- ldr r2, =0x0000060e
- adds r1, r0, r2
- ldrh r1, [r1]
- lsls r1, 2
- adds r0, r1
- ldrb r1, [r4, 0x8]
- bl sub_80BE9F8
- b _080BBCFC
- .pool
-_080BBCE0:
- ldr r2, =gUnknown_02039B50
- ldr r0, =gUnknown_02039B4C
- ldr r1, [r0]
- ldr r3, =0x0000060e
- adds r0, r1, r3
- ldrh r0, [r0]
- strh r0, [r2]
- ldr r2, =gUnknown_02039B52
- ldr r0, =0x0000062c
- adds r1, r0
- ldrb r0, [r1]
- strb r0, [r2]
- ldr r0, =sub_80BB78C
- str r0, [r4]
-_080BBCFC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBC74
-
- thumb_func_start sub_80BBD1C
-sub_80BBD1C: @ 80BBD1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r6, r1, r2
- movs r0, 0x8
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r4, [r0, 0x4]
- cmp r4, 0
- bne _080BBDCA
- bl sub_80BDA40
- ldr r5, =gUnknown_02039B4C
- ldr r2, [r5]
- ldr r1, =0x0000064e
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BBD7C
- ldr r3, =0x0000060e
- adds r0, r2, r3
- strh r4, [r0]
- ldr r0, =0x0000062c
- adds r1, r2, r0
- movs r0, 0x40
- strb r0, [r1]
- ldr r0, =sub_80BBE70
- b _080BBDC8
- .pool
-_080BBD7C:
- ldr r1, =0x0000062a
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r3, =0x0000062c
- adds r0, r2, r3
- strb r1, [r0]
- ldr r1, [r5]
- movs r2, 0xC2
- lsls r2, 3
- adds r0, r1, r2
- ldrh r2, [r0]
- subs r3, 0x1E
- adds r0, r1, r3
- strh r2, [r0]
- ldr r2, =0x00000614
- adds r0, r1, r2
- ldrh r0, [r0]
- adds r3, 0x4
- adds r1, r3
- strh r0, [r1]
- bl IsNationalPokedexEnabled
- adds r1, r0, 0
- cmp r1, 0
- bne _080BBDB6
- ldr r0, [r5]
- ldr r2, =0x00000612
- adds r0, r2
- strh r1, [r0]
-_080BBDB6:
- ldr r0, [r5]
- movs r3, 0xC3
- lsls r3, 3
- adds r1, r0, r3
- ldrh r1, [r1]
- ldr r2, =0x00000616
- adds r0, r2
- strh r1, [r0]
- ldr r0, =sub_80BB78C
-_080BBDC8:
- str r0, [r6]
-_080BBDCA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBD1C
-
- thumb_func_start sub_80BBDE8
-sub_80BBDE8: @ 80BBDE8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BBE4A
- ldr r4, =gSaveBlock2Ptr
- ldr r0, [r4]
- ldr r5, =gUnknown_02039B4C
- ldr r1, [r5]
- ldr r2, =0x00000612
- adds r1, r2
- ldrh r1, [r1]
- strb r1, [r0, 0x19]
- bl IsNationalPokedexEnabled
- adds r1, r0, 0
- cmp r1, 0
- bne _080BBE18
- ldr r0, [r4]
- strb r1, [r0, 0x19]
-_080BBE18:
- ldr r1, [r4]
- ldr r0, [r5]
- ldr r2, =0x00000616
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x18]
- bl sub_80BDA40
- bl sub_80BC890
- adds r0, r6, 0
- bl DestroyTask
- ldr r0, =CB2_ReturnToFieldWithOpenMenu
- bl SetMainCallback2
- ldr r0, =gMPlayInfo_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- ldr r0, [r5]
- bl Free
-_080BBE4A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBDE8
-
- thumb_func_start sub_80BBE70
-sub_80BBE70: @ 80BBE70
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_02039B4C
- ldr r1, [r0]
- ldr r0, =0x0000064c
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
- movs r0, 0x3
- bl sub_80BC514
- lsls r0, 24
- cmp r0, 0
- beq _080BBEA0
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80BBEB8
- str r0, [r1]
-_080BBEA0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBE70
-
- thumb_func_start sub_80BBEB8
-sub_80BBEB8: @ 80BBEB8
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r4, =0x00000652
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0x12
- bl SetGpuReg
- ldr r3, [r5]
- adds r1, r3, r4
- ldrh r0, [r1]
- movs r2, 0
- ldrsh r4, [r1, r2]
- cmp r4, 0
- beq _080BBEEC
- subs r0, 0x8
- strh r0, [r1]
- b _080BC08A
- .pool
-_080BBEEC:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r7, 0x1
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080BBF70
- ldr r1, =0x0000060e
- adds r0, r3, r1
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3, r0
- ldrb r0, [r0, 0x2]
- lsls r0, 31
- cmp r0, 0
- beq _080BBF70
- bl sub_80BD8D0
- ldr r3, =gSprites
- ldr r0, [r5]
- ldr r2, =0x00000626
- adds r0, r2
- ldrh r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r0, r2, r3
- ldrb r1, [r0, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- adds r0, r7, 0
- lsls r0, r1
- adds r3, 0x1C
- adds r2, r3
- ldr r1, =sub_80BE470
- str r1, [r2]
- mvns r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BC2D4
- str r1, [r0]
- movs r0, 0x15
- b _080BC00A
- .pool
-_080BBF70:
- ldrh r2, [r2, 0x2E]
- movs r0, 0x8
- ands r0, r2
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080BBFC8
- ldr r3, =gUnknown_02039B4C
- ldr r1, [r3]
- ldr r2, =0x00000652
- adds r0, r1, r2
- movs r2, 0
- strh r2, [r0]
- ldr r0, =0x0000064f
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- movs r1, 0xCA
- lsls r1, 3
- adds r0, r1
- strh r2, [r0]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BC0F8
- str r1, [r0]
- movs r0, 0x5
- bl PlaySE
- b _080BC08A
- .pool
-_080BBFC8:
- movs r0, 0x4
- ands r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _080BC024
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl sub_80C1258
- ldr r2, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x8]
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r3, =0x0000064e
- adds r0, r3
- strb r2, [r0]
- ldr r0, =sub_80BBD1C
- str r0, [r1]
- movs r0, 0x2
-_080BC00A:
- bl PlaySE
- bl sub_80BC890
- b _080BC08A
- .pool
-_080BC024:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080BC05C
- movs r0, 0x1
- negs r0, r0
- str r3, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BC3DC
- str r1, [r0]
- movs r0, 0x3
- bl PlaySE
- b _080BC08A
- .pool
-_080BC05C:
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r4, =0x0000060e
- adds r0, r4
- ldrh r0, [r0]
- movs r1, 0xE
- bl sub_80BD69C
- ldr r1, [r5]
- adds r4, r1, r4
- strh r0, [r4]
- ldr r0, =0x0000062e
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080BC08A
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80BC0A8
- str r0, [r1]
-_080BC08A:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BBEB8
-
- thumb_func_start sub_80BC0A8
-sub_80BC0A8: @ 80BC0A8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_02039B4C
- ldr r2, [r0]
- ldr r1, =0x0000062f
- adds r0, r2, r1
- ldrb r0, [r0]
- ldr r3, =0x00000634
- adds r1, r2, r3
- ldrb r1, [r1]
- adds r3, 0x2
- adds r2, r3
- ldrb r2, [r2]
- bl sub_80BD404
- lsls r0, 24
- cmp r0, 0
- beq _080BC0DC
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80BBEB8
- str r0, [r1]
-_080BC0DC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC0A8
-
- thumb_func_start sub_80BC0F8
-sub_80BC0F8: @ 80BC0F8
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r4, =0x00000652
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0x12
- bl SetGpuReg
- ldr r5, [r5]
- adds r1, r5, r4
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0x60
- beq _080BC130
- adds r0, r2, 0
- adds r0, 0x8
- strh r0, [r1]
- b _080BC2C8
- .pool
-_080BC130:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BC13E
- b _080BC238
-_080BC13E:
- movs r1, 0xCA
- lsls r1, 3
- adds r0, r5, r1
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _080BC1C2
- lsls r0, 2
- ldr r1, =_080BC15C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080BC15C:
- .4byte _080BC1C2
- .4byte _080BC170
- .4byte _080BC194
- .4byte _080BC1E4
- .4byte _080BC214
-_080BC170:
- ldr r5, =gUnknown_02039B4C
- ldr r1, [r5]
- ldr r4, =0x0000060e
- adds r2, r1, r4
- movs r0, 0
- strh r0, [r2]
- ldr r2, =0x0000062c
- adds r1, r2
- movs r0, 0x40
- strb r0, [r1]
- b _080BC1B2
- .pool
-_080BC194:
- ldr r5, =gUnknown_02039B4C
- ldr r2, [r5]
- ldr r0, =0x0000060c
- adds r3, r2, r0
- ldrh r0, [r3]
- subs r0, 0x1
- ldr r4, =0x0000060e
- adds r1, r2, r4
- strh r0, [r1]
- ldrh r0, [r3]
- lsls r0, 4
- adds r0, 0x30
- ldr r1, =0x0000062c
- adds r2, r1
- strb r0, [r2]
-_080BC1B2:
- bl sub_80BDA40
- ldr r0, [r5]
- adds r0, r4
- ldrh r0, [r0]
- movs r1, 0xE
- bl sub_80BD2B4
-_080BC1C2:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x8
- orrs r0, r1
- strh r0, [r2, 0x2E]
- b _080BC238
- .pool
-_080BC1E4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BC3DC
- str r1, [r0]
- movs r0, 0x34
- bl PlaySE
- b _080BC238
- .pool
-_080BC214:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BC47C
- str r1, [r0]
- movs r0, 0x3
- bl PlaySE
-_080BC238:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0xA
- ands r0, r1
- cmp r0, 0
- beq _080BC278
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r2, =0x0000064f
- adds r0, r2
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BBEB8
- str r1, [r0]
- b _080BC296
- .pool
-_080BC278:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080BC2A4
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- movs r3, 0xCA
- lsls r3, 3
- adds r1, r0, r3
- ldrh r0, [r1]
- cmp r0, 0
- beq _080BC2A4
- subs r0, 0x1
- strh r0, [r1]
-_080BC296:
- movs r0, 0x5
- bl PlaySE
- b _080BC2C8
- .pool
-_080BC2A4:
- ldrh r1, [r2, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080BC2C8
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- movs r2, 0xCA
- lsls r2, 3
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0x3
- bhi _080BC2C8
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x5
- bl PlaySE
-_080BC2C8:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC0F8
-
- thumb_func_start sub_80BC2D4
-sub_80BC2D4: @ 80BC2D4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, =gSprites
- ldr r5, =gUnknown_02039B4C
- ldr r3, [r5]
- ldr r4, =0x00000626
- adds r0, r3, r4
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- movs r2, 0x20
- ldrsh r0, [r1, r2]
- cmp r0, 0x30
- bne _080BC33A
- movs r2, 0x22
- ldrsh r0, [r1, r2]
- cmp r0, 0x38
- bne _080BC33A
- ldr r1, =0x0000064a
- adds r0, r3, r1
- ldrb r1, [r0]
- ldr r2, =0x0000064b
- adds r0, r3, r2
- strb r1, [r0]
- ldr r1, [r5]
- subs r2, 0x3D
- adds r0, r1, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r1, r0
- adds r1, r4
- ldrb r1, [r1]
- bl sub_80BE91C
- ldr r2, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x8]
- ldr r0, [r5]
- adds r0, r4
- ldr r2, =0x0000ffff
- strh r2, [r0]
- ldr r0, =sub_80BC360
- str r0, [r1]
-_080BC33A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC2D4
-
- thumb_func_start sub_80BC360
-sub_80BC360: @ 80BC360
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _080BC3CC
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r1, =0x0000064a
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080BC3D0
- ldrb r0, [r4, 0x8]
- bl sub_80BE9C4
- lsls r0, 24
- cmp r0, 0
- bne _080BC3D0
- bl sub_80BD930
- lsls r0, 24
- cmp r0, 0
- beq _080BC3D0
- ldr r0, [r5]
- ldr r2, =0x0000060e
- adds r1, r0, r2
- ldrh r1, [r1]
- lsls r1, 2
- adds r0, r1
- ldrb r1, [r4, 0x8]
- bl sub_80BE9F8
- b _080BC3D0
- .pool
-_080BC3CC:
- ldr r0, =sub_80BBE70
- str r0, [r4]
-_080BC3D0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC360
-
- thumb_func_start sub_80BC3DC
-sub_80BC3DC: @ 80BC3DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BC450
- ldr r4, =gUnknown_02039B4C
- ldr r0, [r4]
- ldr r2, =0x0000062a
- adds r1, r0, r2
- ldrh r1, [r1]
- ldr r3, =0x0000062c
- adds r0, r3
- strb r1, [r0]
- ldr r1, [r4]
- subs r2, 0x1A
- adds r0, r1, r2
- ldrh r2, [r0]
- subs r3, 0x1E
- adds r0, r1, r3
- strh r2, [r0]
- ldr r2, =0x00000614
- adds r0, r1, r2
- ldrh r0, [r0]
- adds r3, 0x4
- adds r1, r3
- strh r0, [r1]
- bl IsNationalPokedexEnabled
- adds r1, r0, 0
- cmp r1, 0
- bne _080BC42A
- ldr r0, [r4]
- ldr r2, =0x00000612
- adds r0, r2
- strh r1, [r0]
-_080BC42A:
- ldr r0, [r4]
- movs r3, 0xC3
- lsls r3, 3
- adds r1, r0, r3
- ldrh r1, [r1]
- ldr r2, =0x00000616
- adds r0, r2
- strh r1, [r0]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BB78C
- str r1, [r0]
- bl sub_80BDA40
- bl sub_80BC890
-_080BC450:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC3DC
-
- thumb_func_start sub_80BC47C
-sub_80BC47C: @ 80BC47C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BC4E8
- ldr r4, =gUnknown_02039B4C
- ldr r0, [r4]
- ldr r2, =0x0000062a
- adds r1, r0, r2
- ldrh r1, [r1]
- ldr r3, =0x0000062c
- adds r0, r3
- strb r1, [r0]
- ldr r1, [r4]
- subs r2, 0x1A
- adds r0, r1, r2
- ldrh r2, [r0]
- subs r3, 0x1E
- adds r0, r1, r3
- strh r2, [r0]
- ldr r2, =0x00000614
- adds r0, r1, r2
- ldrh r0, [r0]
- adds r3, 0x4
- adds r1, r3
- strh r0, [r1]
- bl IsNationalPokedexEnabled
- adds r1, r0, 0
- cmp r1, 0
- bne _080BC4CA
- ldr r0, [r4]
- ldr r2, =0x00000612
- adds r0, r2
- strh r1, [r0]
-_080BC4CA:
- ldr r0, [r4]
- movs r3, 0xC3
- lsls r3, 3
- adds r1, r0, r3
- ldrh r1, [r1]
- ldr r2, =0x00000616
- adds r0, r2
- strh r1, [r0]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80BBDE8
- str r1, [r0]
-_080BC4E8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC47C
-
- thumb_func_start sub_80BC514
-sub_80BC514: @ 80BC514
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x6
- bhi _080BC55C
- lsls r0, 2
- ldr r1, =_080BC540
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080BC540:
- .4byte _080BC55C
- .4byte _080BC6CC
- .4byte _080BC6FC
- .4byte _080BC704
- .4byte _080BC768
- .4byte _080BC790
- .4byte _080BC818
-_080BC55C:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _080BC56E
- b _080BC838
-_080BC56E:
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, =gUnknown_02039B4C
- ldr r0, [r4]
- ldr r1, =0x0000064a
- adds r0, r1
- strb r5, [r0]
- movs r0, 0
- bl sub_80C09B0
- ldr r0, [r4]
- ldr r2, =0x0000062d
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1A
- bl SetGpuReg
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gBgTemplates_0855D298
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl AllocZeroed
- adds r1, r0, 0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl AllocZeroed
- adds r1, r0, 0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl AllocZeroed
- adds r1, r0, 0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl AllocZeroed
- adds r1, r0, 0
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, =gPokedexMenu_Gfx
- movs r2, 0x80
- lsls r2, 6
- str r6, [sp]
- movs r0, 0x3
- movs r3, 0
- bl copy_decompressed_tile_data_to_vram_autofree
- ldr r1, =gUnknown_08DC2C5C
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r1, =gUnknown_08DC2DAC
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- cmp r5, 0
- bne _080BC640
- ldr r1, =gUnknown_08DC2A08
- movs r3, 0xA0
- lsls r3, 2
- movs r0, 0
- movs r2, 0
- bl CopyToBgTilemapBuffer
- b _080BC64E
- .pool
-_080BC640:
- ldr r1, =gUnknown_08DC2B1C
- movs r3, 0xA0
- lsls r3, 2
- movs r0, 0
- movs r2, 0
- bl CopyToBgTilemapBuffer
-_080BC64E:
- bl ResetPaletteFade
- cmp r5, 0
- bne _080BC674
- ldr r3, =gUnknown_02039B4C
- ldr r1, [r3]
- ldr r0, =0x0000064c
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- b _080BC682
- .pool
-_080BC674:
- ldr r3, =gUnknown_02039B4C
- ldr r1, [r3]
- ldr r2, =0x0000064c
- adds r1, r2
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
-_080BC682:
- strb r0, [r1]
- ldr r0, [r3]
- ldr r1, =0x0000064c
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- bl sub_80BC844
- ldr r0, =sWindowTemplates_0855D2A8
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- b _080BC838
- .pool
-_080BC6CC:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, =gSpriteSheets_0855D26C
- bl LoadCompressedObjectPic
- ldr r0, =gSpritePalettes_0855D26C
- bl LoadSpritePalettes
- adds r0, r5, 0
- bl sub_80BDB7C
- b _080BC7F8
- .pool
-_080BC6FC:
- movs r2, 0x87
- lsls r2, 3
- adds r1, r3, r2
- b _080BC800
-_080BC704:
- cmp r5, 0
- bne _080BC71C
- ldr r0, =gUnknown_02039B4C
- ldr r1, [r0]
- ldr r2, =0x00000612
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x4
- adds r1, r2
- ldrb r1, [r1]
- bl sub_80BC8D4
-_080BC71C:
- ldr r4, =gUnknown_02039B4C
- ldr r0, [r4]
- ldr r1, =0x0000060e
- adds r0, r1
- ldrh r0, [r0]
- movs r1, 0xE
- bl sub_80BD2B4
- ldr r0, [r4]
- ldr r2, =0x0000064f
- adds r0, r2
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x3
- adds r0, r2
- strh r1, [r0]
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _080BC7F8
- .pool
-_080BC768:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =sub_80BB370
- bl SetVBlankCallback
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _080BC800
- .pool
-_080BC790:
- ldr r1, =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00001d3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x46
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, =0x00009040
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
-_080BC7F8:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
-_080BC800:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080BC838
- .pool
-_080BC818:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080BC838
- movs r1, 0x87
- lsls r1, 3
- adds r0, r3, r1
- strb r2, [r0]
- movs r0, 0x1
- b _080BC83A
- .pool
-_080BC838:
- movs r0, 0
-_080BC83A:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80BC514
-
- thumb_func_start sub_80BC844
-sub_80BC844: @ 80BC844
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BC858
- ldr r0, =gPokedexHoennBg_Pal + 0x2
- b _080BC862
- .pool
-_080BC858:
- bl IsNationalPokedexEnabled
- cmp r0, 0
- bne _080BC870
- ldr r0, =gPokedexText_Pal + 2
-_080BC862:
- movs r1, 0x1
- movs r2, 0xBE
- bl LoadPalette
- b _080BC87A
- .pool
-_080BC870:
- ldr r0, =gPokedexNationalBg_Pal + 0x2
- movs r1, 0x1
- movs r2, 0xBE
- bl LoadPalette
-_080BC87A:
- bl GetOverworldTextboxPalettePtr
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC844
-
- thumb_func_start sub_80BC890
-sub_80BC890: @ 80BC890
- push {lr}
- bl FreeAllWindowBuffers
- movs r0, 0
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _080BC8A4
- bl Free
-_080BC8A4:
- movs r0, 0x1
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _080BC8B2
- bl Free
-_080BC8B2:
- movs r0, 0x2
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _080BC8C0
- bl Free
-_080BC8C0:
- movs r0, 0x3
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _080BC8CE
- bl Free
-_080BC8CE:
- pop {r0}
- bx r0
- thumb_func_end sub_80BC890
-
- thumb_func_start sub_80BC8D4
-sub_80BC8D4: @ 80BC8D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r1, =0x0000060c
- adds r0, r1
- movs r5, 0
- strh r5, [r0]
- cmp r4, 0
- beq _080BC8FC
- cmp r4, 0x1
- beq _080BC910
-_080BC8FC:
- mov r1, sp
- movs r0, 0xCA
- strh r0, [r1]
- movs r0, 0x1
- strh r0, [r1, 0x2]
- b _080BC92C
- .pool
-_080BC910:
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _080BC924
- mov r0, sp
- movs r1, 0xC1
- lsls r1, 1
- strh r1, [r0]
- strh r5, [r0, 0x2]
- b _080BC92C
-_080BC924:
- mov r0, sp
- movs r1, 0xCA
- strh r1, [r0]
- strh r4, [r0, 0x2]
-_080BC92C:
- cmp r6, 0x5
- bls _080BC932
- b _080BCDB4
-_080BC932:
- lsls r0, r6, 2
- ldr r1, =_080BC940
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080BC940:
- .4byte _080BC958
- .4byte _080BCACC
- .4byte _080BCB78
- .4byte _080BCC08
- .4byte _080BCCA0
- .4byte _080BCD30
-_080BC958:
- mov r0, sp
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- beq _080BCA00
- movs r4, 0
- mov r0, sp
- ldrh r0, [r0]
- cmp r4, r0
- blt _080BC96C
- b _080BCDB4
-_080BC96C:
- mov r5, sp
- ldr r2, =gUnknown_02039B4C
- mov r8, r2
- movs r3, 0x1
- mov r9, r3
-_080BC976:
- lsls r4, 16
- asrs r4, 16
- adds r7, r4, 0x1
- mov r10, r7
- lsls r0, r7, 16
- lsrs r6, r0, 16
- adds r0, r6, 0
- bl HoennToNationalOrder
- strh r0, [r5, 0x4]
- mov r2, r8
- ldr r1, [r2]
- lsls r4, 2
- adds r1, r4
- strh r0, [r1]
- ldrh r0, [r5, 0x4]
- movs r1, 0
- bl GetSetPokedexFlag
- mov r3, r8
- ldr r2, [r3]
- adds r2, r4
- mov r3, r9
- ands r3, r0
- ldrb r0, [r2, 0x2]
- movs r7, 0x2
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x2]
- ldrh r0, [r5, 0x4]
- movs r1, 0x1
- bl GetSetPokedexFlag
- mov r1, r8
- ldr r3, [r1]
- adds r3, r4
- mov r2, r9
- ands r2, r0
- lsls r2, 1
- ldrb r0, [r3, 0x2]
- subs r7, 0x1
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x2]
- mov r0, r8
- ldr r1, [r0]
- adds r4, r1, r4
- ldrb r0, [r4, 0x2]
- lsls r0, 31
- cmp r0, 0
- beq _080BC9EA
- ldr r2, =0x0000060c
- adds r0, r1, r2
- mov r3, r10
- strh r3, [r0]
-_080BC9EA:
- adds r4, r6, 0
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r7, [r5]
- cmp r0, r7
- blt _080BC976
- b _080BCDB4
- .pool
-_080BCA00:
- movs r4, 0
- movs r5, 0
- mov r10, r5
- mov r0, sp
- ldrh r0, [r0]
- cmp r4, r0
- blt _080BCA10
- b _080BCDB4
-_080BCA10:
- mov r6, sp
- ldr r0, =gUnknown_02039B4C
- mov r8, r0
- movs r1, 0x1
- mov r9, r1
-_080BCA1A:
- lsls r4, 16
- asrs r0, r4, 16
- adds r0, 0x1
- strh r0, [r6, 0x4]
- ldrh r0, [r6, 0x4]
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- adds r7, r4, 0
- cmp r0, 0
- beq _080BCA36
- movs r2, 0x1
- mov r10, r2
-_080BCA36:
- mov r3, r10
- cmp r3, 0
- beq _080BCAB2
- mov r4, r8
- ldr r1, [r4]
- lsls r0, r5, 16
- asrs r5, r0, 16
- lsls r4, r5, 2
- adds r1, r4
- ldrh r0, [r6, 0x4]
- strh r0, [r1]
- ldrh r0, [r6, 0x4]
- movs r1, 0
- bl GetSetPokedexFlag
- mov r1, r8
- ldr r2, [r1]
- adds r2, r4
- mov r3, r9
- ands r3, r0
- mov r12, r3
- ldrb r0, [r2, 0x2]
- movs r3, 0x2
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- mov r1, r12
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldrh r0, [r6, 0x4]
- movs r1, 0x1
- bl GetSetPokedexFlag
- mov r2, r8
- ldr r3, [r2]
- adds r3, r4
- mov r2, r9
- ands r2, r0
- lsls r2, 1
- mov r12, r2
- ldrb r0, [r3, 0x2]
- movs r2, 0x3
- negs r2, r2
- adds r1, r2, 0
- ands r0, r1
- mov r1, r12
- orrs r0, r1
- strb r0, [r3, 0x2]
- mov r3, r8
- ldr r2, [r3]
- adds r4, r2, r4
- ldrb r0, [r4, 0x2]
- lsls r0, 31
- cmp r0, 0
- beq _080BCAAC
- adds r1, r5, 0x1
- ldr r4, =0x0000060c
- adds r0, r2, r4
- strh r1, [r0]
-_080BCAAC:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080BCAB2:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r7, r1
- lsrs r4, r0, 16
- asrs r0, 16
- ldrh r2, [r6]
- cmp r0, r2
- blt _080BCA1A
- b _080BCDB4
- .pool
-_080BCACC:
- movs r4, 0
- mov r5, sp
- ldr r3, =gUnknown_02039B4C
- mov r8, r3
- ldr r6, =0x0000060c
- movs r7, 0x1
- mov r9, r7
-_080BCADA:
- ldr r1, =gPokedexOrder_Alphabetical
- lsls r4, 16
- asrs r0, r4, 15
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- ldrh r0, [r5, 0x4]
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r0, 16
- adds r7, r4, 0
- ldrh r1, [r5]
- cmp r0, r1
- bhi _080BCB58
- ldrh r0, [r5, 0x4]
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080BCB58
- mov r3, r8
- ldr r2, [r3]
- adds r3, r2, r6
- ldrh r0, [r3]
- lsls r0, 2
- adds r0, r2, r0
- ldrh r1, [r5, 0x4]
- strh r1, [r0]
- ldrh r0, [r3]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- mov r4, r9
- orrs r0, r4
- strb r0, [r2, 0x2]
- ldrh r0, [r5, 0x4]
- movs r1, 0x1
- bl GetSetPokedexFlag
- mov r1, r8
- ldr r3, [r1]
- adds r1, r3, r6
- ldrh r1, [r1]
- lsls r1, 2
- adds r3, r1
- mov r2, r9
- ands r2, r0
- lsls r2, 1
- ldrb r0, [r3, 0x2]
- movs r4, 0x3
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x2]
- mov r0, r8
- ldr r1, [r0]
- adds r1, r6
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080BCB58:
- movs r2, 0x80
- lsls r2, 9
- adds r1, r7, r2
- lsrs r4, r1, 16
- movs r0, 0xCD
- lsls r0, 17
- cmp r1, r0
- ble _080BCADA
- b _080BCDB4
- .pool
-_080BCB78:
- ldr r4, =0x00000181
- lsls r0, r4, 16
- mov r5, sp
- ldr r7, =gUnknown_02039B4C
- ldr r6, =0x0000060c
-_080BCB82:
- ldr r1, =gPokedexOrder_Weight
- asrs r0, 15
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- ldrh r0, [r5, 0x4]
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r0, 16
- ldrh r3, [r5]
- cmp r0, r3
- bhi _080BCBE2
- ldrh r0, [r5, 0x4]
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080BCBE2
- ldr r2, [r7]
- adds r3, r2, r6
- ldrh r0, [r3]
- lsls r0, 2
- adds r0, r2, r0
- ldrh r1, [r5, 0x4]
- strh r1, [r0]
- ldrh r0, [r3]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r2, [r7]
- adds r0, r2, r6
- ldrh r0, [r0]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r1, [r7]
- adds r1, r6
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080BCBE2:
- lsls r0, r4, 16
- ldr r4, =0xffff0000
- adds r0, r4
- lsrs r4, r0, 16
- lsls r0, r4, 16
- cmp r0, 0
- bge _080BCB82
- b _080BCDB4
- .pool
-_080BCC08:
- movs r4, 0
- mov r5, sp
- ldr r7, =gUnknown_02039B4C
- mov r8, r7
- ldr r6, =0x0000060c
- ldr r0, =0x00000181
- mov r9, r0
-_080BCC16:
- ldr r1, =gPokedexOrder_Weight
- lsls r4, 16
- asrs r0, r4, 15
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- ldrh r0, [r5, 0x4]
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r0, 16
- adds r7, r4, 0
- ldrh r1, [r5]
- cmp r0, r1
- bhi _080BCC7E
- ldrh r0, [r5, 0x4]
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080BCC7E
- mov r3, r8
- ldr r2, [r3]
- adds r3, r2, r6
- ldrh r0, [r3]
- lsls r0, 2
- adds r0, r2, r0
- ldrh r1, [r5, 0x4]
- strh r1, [r0]
- ldrh r0, [r3]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x2]
- mov r4, r8
- ldr r2, [r4]
- adds r0, r2, r6
- ldrh r0, [r0]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r1, [r4]
- adds r1, r6
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080BCC7E:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r7, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, r9
- ble _080BCC16
- b _080BCDB4
- .pool
-_080BCCA0:
- ldr r4, =0x00000181
- lsls r0, r4, 16
- mov r5, sp
- ldr r7, =gUnknown_02039B4C
- ldr r6, =0x0000060c
-_080BCCAA:
- ldr r1, =gPokedexOrder_Height
- asrs r0, 15
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- ldrh r0, [r5, 0x4]
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r0, 16
- ldrh r2, [r5]
- cmp r0, r2
- bhi _080BCD0A
- ldrh r0, [r5, 0x4]
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080BCD0A
- ldr r2, [r7]
- adds r3, r2, r6
- ldrh r0, [r3]
- lsls r0, 2
- adds r0, r2, r0
- ldrh r1, [r5, 0x4]
- strh r1, [r0]
- ldrh r0, [r3]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r2, [r7]
- adds r0, r2, r6
- ldrh r0, [r0]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r1, [r7]
- adds r1, r6
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080BCD0A:
- lsls r0, r4, 16
- ldr r3, =0xffff0000
- adds r0, r3
- lsrs r4, r0, 16
- lsls r0, r4, 16
- cmp r0, 0
- bge _080BCCAA
- b _080BCDB4
- .pool
-_080BCD30:
- movs r4, 0
- mov r5, sp
- ldr r7, =gUnknown_02039B4C
- mov r8, r7
- ldr r6, =0x0000060c
- ldr r0, =0x00000181
- mov r9, r0
-_080BCD3E:
- ldr r1, =gPokedexOrder_Height
- lsls r4, 16
- asrs r0, r4, 15
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- ldrh r0, [r5, 0x4]
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r0, 16
- adds r7, r4, 0
- ldrh r1, [r5]
- cmp r0, r1
- bhi _080BCDA6
- ldrh r0, [r5, 0x4]
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080BCDA6
- mov r3, r8
- ldr r2, [r3]
- adds r3, r2, r6
- ldrh r0, [r3]
- lsls r0, 2
- adds r0, r2, r0
- ldrh r1, [r5, 0x4]
- strh r1, [r0]
- ldrh r0, [r3]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x2]
- mov r4, r8
- ldr r2, [r4]
- adds r0, r2, r6
- ldrh r0, [r0]
- lsls r0, 2
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r1, [r4]
- adds r1, r6
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080BCDA6:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r7, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, r9
- ble _080BCD3E
-_080BCDB4:
- ldr r1, =gUnknown_02039B4C
- ldr r0, [r1]
- ldr r2, =0x0000060c
- adds r0, r2
- ldrh r4, [r0]
- lsls r3, r4, 16
- asrs r0, r3, 16
- ldr r2, =0x00000181
- cmp r0, r2
- bgt _080BCE08
- adds r5, r1, 0
- movs r4, 0x2
- negs r4, r4
- mov r9, r4
- movs r7, 0x3
- negs r7, r7
- mov r8, r7
- adds r7, r2, 0
- ldr r0, =0x0000ffff
- adds r6, r0, 0
-_080BCDDC:
- ldr r1, [r5]
- asrs r3, 16
- lsls r4, r3, 2
- adds r1, r4
- ldrh r0, [r1]
- orrs r0, r6
- strh r0, [r1]
- ldrb r2, [r1, 0x2]
- mov r0, r9
- ands r0, r2
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- adds r1, r4
- ldrb r2, [r1, 0x2]
- mov r0, r8
- ands r0, r2
- strb r0, [r1, 0x2]
- adds r3, 0x1
- lsls r3, 16
- asrs r0, r3, 16
- cmp r0, r7
- ble _080BCDDC
-_080BCE08:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BC8D4
-
- thumb_func_start sub_80BCE2C
-sub_80BCE2C: @ 80BCE2C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x18
- mov r8, r3
- ldr r3, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r3, 24
- add r4, sp, 0x14
- movs r6, 0
- strb r6, [r4]
- adds r5, r4, 0
- movs r4, 0xF
- strb r4, [r5, 0x1]
- movs r4, 0x3
- strb r4, [r5, 0x2]
- mov r4, r8
- lsls r4, 27
- lsrs r4, 24
- mov r8, r4
- lsrs r3, 21
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r6, [sp]
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp, 0xC]
- str r2, [sp, 0x10]
- mov r2, r8
- bl AddTextPrinterParameterized2
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BCE2C
-
- thumb_func_start sub_80BCE84
-sub_80BCE84: @ 80BCE84
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r7, r2, 16
- cmp r0, 0x1
- beq _080BCF7C
- cmp r0, 0x1
- ble _080BCEA8
- cmp r0, 0x2
- bne _080BCEA8
- b _080BD074
-_080BCEA8:
- subs r0, r1, 0x5
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0
- mov r9, r0
-_080BCEB2:
- lsls r0, r1, 16
- lsrs r5, r0, 16
- mov r10, r0
- ldr r1, =0x00000181
- cmp r5, r1
- bhi _080BCED2
- ldr r2, =gUnknown_02039B4C
- mov r8, r2
- ldr r0, [r2]
- mov r3, r10
- asrs r6, r3, 14
- adds r0, r6
- ldrh r0, [r0]
- ldr r1, =0x0000ffff
- cmp r0, r1
- bne _080BCEF0
-_080BCED2:
- mov r2, r9
- lsls r1, r2, 25
- lsrs r1, 24
- movs r0, 0x11
- adds r2, r7, 0
- bl sub_80BD28C
- b _080BCF64
- .pool
-_080BCEF0:
- mov r3, r9
- lsls r0, r3, 25
- lsrs r4, r0, 24
- movs r0, 0x11
- adds r1, r4, 0
- adds r2, r7, 0
- bl sub_80BD28C
- mov r1, r8
- ldr r0, [r1]
- adds r0, r6
- ldrb r0, [r0, 0x2]
- lsls r0, 31
- cmp r0, 0
- beq _080BCF42
- adds r0, r5, 0
- movs r1, 0x12
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD154
- mov r2, r8
- ldr r0, [r2]
- adds r0, r6
- ldrb r0, [r0, 0x2]
- lsls r0, 30
- lsrs r0, 31
- movs r1, 0x11
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD1F4
- mov r3, r8
- ldr r0, [r3]
- adds r0, r6
- ldrh r0, [r0]
- movs r1, 0x16
- adds r2, r4, 0
- bl sub_80BD23C
- b _080BCF64
-_080BCF42:
- adds r0, r5, 0
- movs r1, 0x12
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD154
- movs r0, 0
- movs r1, 0x11
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD1F4
- movs r0, 0
- movs r1, 0x16
- adds r2, r4, 0
- bl sub_80BD23C
-_080BCF64:
- movs r0, 0x80
- lsls r0, 9
- add r0, r10
- lsrs r1, r0, 16
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0xA
- bls _080BCEB2
- b _080BD13E
-_080BCF7C:
- subs r0, r1, 0x5
- lsls r1, r0, 16
- lsrs r5, r1, 16
- ldr r0, =0x00000181
- ldr r2, =gUnknown_02039B4C
- cmp r5, r0
- bhi _080BCF9A
- adds r6, r2, 0
- ldr r3, [r6]
- asrs r4, r1, 14
- adds r0, r3, r4
- ldrh r1, [r0]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _080BCFB8
-_080BCF9A:
- ldr r0, [r2]
- movs r1, 0xC6
- lsls r1, 3
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r1, 25
- b _080BD0B2
- .pool
-_080BCFB8:
- movs r1, 0xC6
- lsls r1, 3
- adds r0, r3, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r1, 25
- lsrs r1, 24
- movs r0, 0x11
- adds r2, r7, 0
- bl sub_80BD28C
- ldr r1, [r6]
- adds r0, r1, r4
- ldrb r0, [r0, 0x2]
- lsls r0, 31
- cmp r0, 0
- beq _080BD028
- movs r3, 0xC6
- lsls r3, 3
- adds r0, r1, r3
- movs r1, 0
- ldrsh r2, [r0, r1]
- lsls r2, 25
- lsrs r2, 24
- adds r0, r5, 0
- movs r1, 0x12
- adds r3, r7, 0
- bl sub_80BD154
- ldr r1, [r6]
- adds r0, r1, r4
- ldrb r0, [r0, 0x2]
- lsls r0, 30
- lsrs r0, 31
- movs r2, 0xC6
- lsls r2, 3
- adds r1, r2
- movs r3, 0
- ldrsh r2, [r1, r3]
- lsls r2, 25
- lsrs r2, 24
- movs r1, 0x11
- adds r3, r7, 0
- bl sub_80BD1F4
- ldr r1, [r6]
- adds r0, r1, r4
- ldrh r0, [r0]
- movs r2, 0xC6
- lsls r2, 3
- adds r1, r2
- movs r3, 0
- ldrsh r2, [r1, r3]
- lsls r2, 25
- lsrs r2, 24
- b _080BD06C
-_080BD028:
- movs r2, 0xC6
- lsls r2, 3
- adds r0, r1, r2
- movs r3, 0
- ldrsh r2, [r0, r3]
- lsls r2, 25
- lsrs r2, 24
- adds r0, r5, 0
- movs r1, 0x12
- adds r3, r7, 0
- bl sub_80BD154
- ldr r0, [r6]
- movs r1, 0xC6
- lsls r1, 3
- adds r0, r1
- movs r3, 0
- ldrsh r2, [r0, r3]
- lsls r2, 25
- lsrs r2, 24
- movs r0, 0
- movs r1, 0x11
- adds r3, r7, 0
- bl sub_80BD1F4
- ldr r0, [r6]
- movs r1, 0xC6
- lsls r1, 3
- adds r0, r1
- movs r3, 0
- ldrsh r2, [r0, r3]
- lsls r2, 25
- lsrs r2, 24
- movs r0, 0
-_080BD06C:
- movs r1, 0x16
- bl sub_80BD23C
- b _080BD13E
-_080BD074:
- adds r0, r1, 0x5
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =gUnknown_02039B4C
- mov r8, r0
- ldr r3, [r0]
- movs r2, 0xC6
- lsls r2, 3
- adds r0, r3, r2
- ldrh r0, [r0]
- adds r0, 0xA
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _080BD09A
- adds r0, r2, 0
- subs r0, 0x10
- lsls r0, 16
- lsrs r2, r0, 16
-_080BD09A:
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, =0x00000181
- cmp r5, r0
- bhi _080BD0B0
- asrs r6, r1, 14
- adds r0, r3, r6
- ldrh r1, [r0]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _080BD0CC
-_080BD0B0:
- lsls r1, r2, 25
-_080BD0B2:
- lsrs r1, 24
- movs r0, 0x11
- adds r2, r7, 0
- bl sub_80BD28C
- b _080BD13E
- .pool
-_080BD0CC:
- lsls r0, r2, 25
- lsrs r4, r0, 24
- movs r0, 0x11
- adds r1, r4, 0
- adds r2, r7, 0
- bl sub_80BD28C
- mov r3, r8
- ldr r0, [r3]
- adds r0, r6
- ldrb r0, [r0, 0x2]
- lsls r0, 31
- cmp r0, 0
- beq _080BD11C
- adds r0, r5, 0
- movs r1, 0x12
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD154
- mov r1, r8
- ldr r0, [r1]
- adds r0, r6
- ldrb r0, [r0, 0x2]
- lsls r0, 30
- lsrs r0, 31
- movs r1, 0x11
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD1F4
- mov r2, r8
- ldr r0, [r2]
- adds r0, r6
- ldrh r0, [r0]
- movs r1, 0x16
- adds r2, r4, 0
- bl sub_80BD23C
- b _080BD13E
-_080BD11C:
- adds r0, r5, 0
- movs r1, 0x12
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD154
- movs r0, 0
- movs r1, 0x11
- adds r2, r4, 0
- adds r3, r7, 0
- bl sub_80BD1F4
- movs r0, 0
- movs r1, 0x16
- adds r2, r4, 0
- bl sub_80BD23C
-_080BD13E:
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BCE84
-
- thumb_func_start sub_80BD154
-sub_80BD154: @ 80BD154
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r1, =gUnknown_0855D2B8
- add r0, sp, 0x4
- movs r2, 0x6
- bl memcpy
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- lsls r4, 2
- adds r4, r0, r4
- ldrh r6, [r4]
- ldr r1, =0x00000612
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BD194
- adds r0, r6, 0
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r6, r0, 16
-_080BD194:
- add r4, sp, 0x4
- adds r0, r6, 0
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4, 0x2]
- add r5, sp, 0x4
- adds r0, r6, 0
- movs r1, 0x64
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5, 0x3]
- add r5, sp, 0x4
- adds r0, r4, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x4]
- str r7, [sp]
- movs r0, 0
- movs r1, 0x7
- add r2, sp, 0x4
- mov r3, r8
- bl sub_80BCE2C
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BD154
-
- thumb_func_start sub_80BD1F4
-sub_80BD1F4: @ 80BD1F4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 16
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r0, 0
- beq _080BD220
- ldr r1, =gUnknown_0855D2BE
- lsls r2, r3, 3
- lsls r3, r4, 3
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- bl BlitBitmapToWindow
- b _080BD234
- .pool
-_080BD220:
- lsls r2, r3, 3
- lsls r3, r4, 3
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelRect
-_080BD234:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80BD1F4
-
- thumb_func_start sub_80BD23C
-sub_80BD23C: @ 80BD23C
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- bl NationalPokedexNumToSpecies
- adds r1, r0, 0
- cmp r1, 0
- beq _080BD264
- movs r0, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r4, r1, r0
- b _080BD266
- .pool
-_080BD264:
- ldr r4, =sText_TenDashes
-_080BD266:
- str r5, [sp]
- movs r0, 0
- movs r1, 0x7
- adds r2, r4, 0
- adds r3, r6, 0
- bl sub_80BCE2C
- adds r0, r4, 0
- bl StringLength
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BD23C
-
- thumb_func_start sub_80BD28C
-sub_80BD28C: @ 80BD28C
- push {lr}
- sub sp, 0x8
- adds r2, r0, 0
- adds r3, r1, 0
- lsls r2, 24
- lsls r3, 24
- lsrs r2, 21
- lsrs r3, 21
- movs r0, 0x60
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelRect
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_80BD28C
-
- thumb_func_start sub_80BD2B4
-sub_80BD2B4: @ 80BD2B4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- movs r2, 0
- ldr r7, =gUnknown_02039B4C
- adds r5, r7, 0
- ldr r4, =0x0000061e
- ldr r0, =0x0000ffff
- adds r3, r0, 0
-_080BD2DA:
- ldr r1, [r5]
- lsls r0, r2, 1
- adds r1, r4
- adds r1, r0
- ldrh r0, [r1]
- orrs r0, r3
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080BD2DA
- ldr r0, [r7]
- ldr r1, =0x00000626
- adds r0, r1
- ldr r1, =0x0000ffff
- strh r1, [r0]
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl sub_80BDA8C
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =0x0000ffff
- cmp r0, r4
- beq _080BD334
- movs r1, 0x60
- movs r2, 0x50
- bl sub_80BDACC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, =sub_80BE4E0
- str r2, [r1]
- adds r0, r3
- ldr r1, =0x0000ffe0
- strh r1, [r0, 0x38]
-_080BD334:
- adds r0, r6, 0
- bl sub_80BDA8C
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- beq _080BD366
- movs r1, 0x60
- movs r2, 0x50
- bl sub_80BDACC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, =sub_80BE4E0
- str r2, [r1]
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x38]
-_080BD366:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl sub_80BDA8C
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- beq _080BD39C
- movs r1, 0x60
- movs r2, 0x50
- bl sub_80BDACC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, =sub_80BE4E0
- str r2, [r1]
- adds r0, r3
- movs r1, 0x20
- strh r1, [r0, 0x38]
-_080BD39C:
- movs r0, 0
- adds r1, r6, 0
- mov r2, r8
- bl sub_80BCE84
- ldr r0, [r7]
- ldr r2, =0x0000062d
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1A
- bl SetGpuReg
- ldr r0, [r7]
- movs r2, 0xC6
- lsls r2, 3
- adds r1, r0, r2
- movs r2, 0
- strh r2, [r1]
- ldr r1, =0x00000632
- adds r0, r1
- strh r2, [r0]
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BD2B4
-
- thumb_func_start sub_80BD404
-sub_80BD404: @ 80BD404
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, =gUnknown_02039B4C
- ldr r1, [r0]
- ldr r3, =0x0000062e
- adds r2, r1, r3
- ldrb r3, [r2]
- adds r7, r0, 0
- cmp r3, 0
- bne _080BD428
- b _080BD578
-_080BD428:
- subs r0, r3, 0x1
- strb r0, [r2]
- cmp r4, 0x1
- beq _080BD440
- cmp r4, 0x2
- beq _080BD4DC
- b _080BD558
- .pool
-_080BD440:
- movs r3, 0
- ldr r4, =0x0000ffff
- mov r12, r4
- ldr r0, =gSprites
- mov r8, r0
- adds r2, r7, 0
-_080BD44C:
- ldr r0, [r2]
- lsls r1, r3, 1
- ldr r4, =0x0000061e
- adds r0, r4
- adds r1, r0, r1
- ldrh r0, [r1]
- cmp r0, r12
- beq _080BD46A
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrh r0, [r1, 0x38]
- adds r0, r5
- strh r0, [r1, 0x38]
-_080BD46A:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080BD44C
- ldr r4, [r7]
- ldr r1, =0x0000062e
- adds r0, r4, r1
- ldrb r0, [r0]
- subs r0, r6, r0
- lsls r0, 4
- adds r1, r6, 0
- bl __divsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, =0x0000062d
- adds r0, r4, r3
- ldr r1, =0x00000632
- adds r4, r1
- movs r3, 0
- ldrsh r1, [r4, r3]
- lsls r1, 4
- ldrb r0, [r0]
- adds r1, r0
- subs r1, r2
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x1A
- bl SetGpuReg
- ldr r0, [r7]
- ldr r4, =0x0000062c
- adds r2, r0, r4
- movs r1, 0xC5
- lsls r1, 3
- adds r0, r1
- ldrb r1, [r0]
- ldrb r0, [r2]
- subs r0, r1
- strb r0, [r2]
- b _080BD558
- .pool
-_080BD4DC:
- movs r3, 0
- ldr r2, =0x0000ffff
- mov r12, r2
- ldr r4, =gSprites
- mov r8, r4
- adds r2, r7, 0
-_080BD4E8:
- ldr r0, [r2]
- lsls r1, r3, 1
- ldr r4, =0x0000061e
- adds r0, r4
- adds r1, r0, r1
- ldrh r0, [r1]
- cmp r0, r12
- beq _080BD506
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrh r0, [r1, 0x38]
- subs r0, r5
- strh r0, [r1, 0x38]
-_080BD506:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080BD4E8
- ldr r4, [r7]
- ldr r1, =0x0000062e
- adds r0, r4, r1
- ldrb r0, [r0]
- subs r0, r6, r0
- lsls r0, 4
- adds r1, r6, 0
- bl __divsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, =0x0000062d
- adds r0, r4, r3
- ldr r1, =0x00000632
- adds r4, r1
- movs r3, 0
- ldrsh r1, [r4, r3]
- lsls r1, 4
- ldrb r0, [r0]
- adds r1, r0
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x1A
- bl SetGpuReg
- ldr r0, [r7]
- ldr r4, =0x0000062c
- adds r1, r0, r4
- movs r2, 0xC5
- lsls r2, 3
- adds r0, r2
- ldrb r0, [r0]
- ldrb r3, [r1]
- adds r0, r3
- strb r0, [r1]
-_080BD558:
- movs r0, 0
- b _080BD598
- .pool
-_080BD578:
- ldr r4, =0x0000062d
- adds r2, r1, r4
- movs r3, 0xC6
- lsls r3, 3
- adds r0, r1, r3
- movs r4, 0
- ldrsh r1, [r0, r4]
- lsls r1, 4
- ldrb r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x1A
- bl SetGpuReg
- movs r0, 0x1
-_080BD598:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BD404
-
- thumb_func_start sub_80BD5A8
-sub_80BD5A8: @ 80BD5A8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 16
- lsrs r3, r1, 16
- ldr r4, =gUnknown_02039B4C
- ldr r0, [r4]
- movs r5, 0xC6
- lsls r5, 3
- adds r1, r0, r5
- ldrh r1, [r1]
- ldr r6, =0x00000632
- adds r0, r6
- strh r1, [r0]
- cmp r2, 0x1
- beq _080BD5D8
- cmp r2, 0x2
- beq _080BD638
- b _080BD694
- .pool
-_080BD5D8:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl sub_80BDA8C
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _080BD612
- adds r0, r1, 0
- movs r1, 0x60
- movs r2, 0x50
- bl sub_80BDACC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, =sub_80BE4E0
- str r2, [r1]
- adds r0, r3
- ldr r1, =0x0000ffc0
- strh r1, [r0, 0x38]
-_080BD612:
- ldr r0, [r4]
- adds r1, r0, r5
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _080BD634
- subs r0, r2, 0x1
- b _080BD692
- .pool
-_080BD634:
- movs r0, 0xF
- b _080BD692
-_080BD638:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl sub_80BDA8C
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _080BD672
- adds r0, r1, 0
- movs r1, 0x60
- movs r2, 0x50
- bl sub_80BDACC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, =sub_80BE4E0
- str r2, [r1]
- adds r0, r3
- movs r1, 0x40
- strh r1, [r0, 0x38]
-_080BD672:
- ldr r0, [r4]
- adds r1, r0, r5
- ldrh r2, [r1]
- movs r6, 0
- ldrsh r0, [r1, r6]
- cmp r0, 0xE
- bgt _080BD690
- adds r0, r2, 0x1
- b _080BD692
- .pool
-_080BD690:
- movs r0, 0
-_080BD692:
- strh r0, [r1]
-_080BD694:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BD5A8
-
- thumb_func_start sub_80BD69C
-sub_80BD69C: @ 80BD69C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- movs r0, 0
- mov r10, r0
- ldr r2, =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080BD6FC
- cmp r7, 0
- beq _080BD6FC
- movs r1, 0x1
- mov r10, r1
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r2, =0x0000060c
- adds r0, r2
- ldrh r3, [r0]
- subs r3, 0x1
- lsls r3, 16
- lsrs r3, 16
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0
- bl sub_80C0E0C
- adds r7, r0, 0
- movs r0, 0x1
- adds r1, r7, 0
- bl sub_80BD5A8
- movs r0, 0x1
- b _080BD734
- .pool
-_080BD6FC:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080BD74C
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r3, =0x0000060c
- adds r0, r3
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r7, r0
- bge _080BD74C
- movs r1, 0x2
- mov r10, r1
- lsls r3, r0, 16
- lsrs r3, 16
- movs r0, 0
- adds r1, r7, 0
- movs r2, 0
- bl sub_80C0E0C
- adds r7, r0, 0
- movs r0, 0x2
- adds r1, r7, 0
- bl sub_80BD5A8
- movs r0, 0x2
-_080BD734:
- adds r1, r7, 0
- adds r2, r4, 0
- bl sub_80BCE84
- movs r0, 0x6C
- bl PlaySE
- b _080BD81A
- .pool
-_080BD74C:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080BD7B4
- cmp r7, 0
- beq _080BD7B4
- adds r6, r7, 0
- movs r4, 0
-_080BD75E:
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r2, =0x0000060c
- adds r0, r2
- ldrh r3, [r0]
- subs r3, 0x1
- lsls r3, 16
- lsrs r3, 16
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0
- bl sub_80C0E0C
- adds r7, r0, 0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _080BD75E
- ldr r1, [r5]
- ldr r3, =0x0000062c
- adds r1, r3
- subs r0, r7, r6
- lsls r0, 4
- ldrb r2, [r1]
- adds r0, r2
- strb r0, [r1]
- bl sub_80BDA40
- adds r0, r7, 0
- movs r1, 0xE
- bl sub_80BD2B4
- movs r0, 0x6D
- bl PlaySE
- b _080BD81A
- .pool
-_080BD7B4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080BD81A
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- ldr r3, =0x0000060c
- adds r0, r3
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r7, r0
- bge _080BD81A
- adds r6, r7, 0
- movs r4, 0
-_080BD7D2:
- ldr r5, =gUnknown_02039B4C
- ldr r0, [r5]
- ldr r1, =0x0000060c
- adds r0, r1
- ldrh r3, [r0]
- subs r3, 0x1
- lsls r3, 16
- lsrs r3, 16
- movs r0, 0
- adds r1, r7, 0
- movs r2, 0
- bl sub_80C0E0C
- adds r7, r0, 0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _080BD7D2
- ldr r1, [r5]
- ldr r2, =0x0000062c
- adds r1, r2
- subs r0, r7, r6
- lsls r0, 4
- ldrb r3, [r1]
- adds r0, r3
- strb r0, [r1]
- bl sub_80BDA40
- adds r0, r7, 0
- movs r1, 0xE
- bl sub_80BD2B4
- movs r0, 0x6D
- bl PlaySE
-_080BD81A:
- mov r0, r10
- cmp r0, 0
- bne _080BD83C
- ldr r0, =gUnknown_02039B4C
- ldr r0, [r0]
- movs r1, 0xC7
- lsls r1, 3
- adds r0, r1
- mov r2, r10
- strh r2, [r0]
- b _080BD8A2
- .pool
-_080BD83C:
- ldr r1, =gUnknown_0855D28C
- ldr r6, =gUnknown_02039B4C
- ldr r2, [r6]
- movs r3, 0xC7
- lsls r3, 3
- mov r9, r3
- adds r0, r2, r3
- ldrh r0, [r0]
- lsrs r0, 2
- adds r1, r0, r1
- ldrb r5, [r1]
- ldr r1, =gUnknown_0855D291
- adds r0, r1
- ldrb r3, [r0]
- ldr r0, =0x0000062e
- adds r2, r0
- strb r3, [r2]
- ldr r1, [r6]
- ldr r2, =0x00000636
- mov r8, r2
- adds r0, r1, r2
- strh r3, [r0]
- ldr r4, =0x00000634
- adds r0, r1, r4
- strh r5, [r0]
- ldr r3, =0x0000062f
- adds r1, r3
- mov r0, r10
- strb r0, [r1]
- ldr r2, [r6]
- lsrs r5, 1
- movs r1, 0xC5
- lsls r1, 3
- adds r0, r2, r1
- strh r5, [r0]
- adds r3, r2, r3
- ldrb r0, [r3]
- adds r4, r2, r4
- ldrb r1, [r4]
- add r2, r8
- ldrb r2, [r2]
- bl sub_80BD404
- ldr r0, [r6]
- mov r2, r9
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0xB
- bhi _080BD8A2
- adds r0, 0x1
- strh r0, [r1]
-_080BD8A2:
- adds r0, r7, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BD69C
-
thumb_func_start sub_80BD8D0
sub_80BD8D0: @ 80BD8D0
push {r4-r7,lr}
diff --git a/data/pokedex.s b/data/pokedex.s
index 7fdecaf5f..fde603020 100644
--- a/data/pokedex.s
+++ b/data/pokedex.s
@@ -22,15 +22,6 @@
.byte 0 @padding
.endm
-gUnknown_0855D2B8:: @ 855D2B8
- .string "{UNK_CTRL_F9 8}000$"
-
-gUnknown_0855D2BE:: @ 855D2BE
- .incbin "graphics/pokedex/caught_ball.4bpp"
-
-sText_TenDashes:: @ 855D2FE
- .string "----------$"
-
.align 2
gUnknown_0855D30C:: @ 855D30C
.string "$"
diff --git a/include/graphics.h b/include/graphics.h
index 6e5de9ef4..4cb7ec814 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2651,8 +2651,17 @@ extern const u8 gBattleTerrainPalette_StadiumGlacia[];
extern const u8 gBattleTerrainPalette_StadiumDrake[];
extern const u8 gBattleTerrainPalette_StadiumWallace[];
+// pokedex
extern const u8 gPokedexMenu2_Gfx[];
-extern const u8 gPokedexText_Pal[];
+extern const u16 gPokedexText_Pal[];
+extern const u8 gPokedexMenu_Gfx[];
+extern const u8 gUnknown_08DC2C5C[];
+extern const u8 gUnknown_08DC2DAC[];
+extern const u8 gUnknown_08DC2A08[];
+extern const u8 gUnknown_08DC2B1C[];
+extern const u16 gPokedexHoennBg_Pal[];
+extern const u16 gPokedexText_Pal[];
+extern const u16 gPokedexNationalBg_Pal[];
// berry tag screen
extern const u8 gUnknown_08D9BB44[];
diff --git a/src/pokedex.c b/src/pokedex.c
index 8acc36efb..3b4f193bb 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -8,14 +8,32 @@
#include "window.h"
#include "event_data.h"
#include "palette.h"
-
+#include "main.h"
+#include "sound.h"
+#include "task.h"
+#include "battle_dome_cards.h"
+#include "scanline_effect.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "constants/songs.h"
+#include "constants/rgb.h"
+#include "overworld.h"
+#include "menu.h"
+#include "text_window.h"
+#include "data2.h"
+#include "string_util.h"
+
+extern struct PokedexView *gUnknown_02039B4C;
extern u16 gUnknown_02039B50;
extern u8 gUnknown_02039B52;
extern u8 gUnknown_030060B0;
+#define HOENN_DEX_COUNT 202
#define NATIONAL_DEX_COUNT 386
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+
struct PokedexListItem
{
u16 dexNum;
@@ -66,13 +84,61 @@ struct PokedexView
u8 unk65C[8];
};
+enum
+{
+ DEX_MODE_HOENN,
+ DEX_MODE_NATIONAL
+};
+
// this file's functions
+void sub_80BB774(void);
+void sub_80BB78C(u8);
+void sub_80BB7D4(u8);
+void sub_80BBA28(u8);
+void sub_80BBA78(u8);
+void sub_80BBBF4(u8);
+void sub_80BBC74(u8);
+void sub_80BBD1C(u8);
+void sub_80BBDE8(u8);
+void sub_80BBE70(u8);
+void sub_80BBEB8(u8);
+void sub_80BC0A8(u8);
+void sub_80BC0F8(u8);
+void sub_80BC2D4(u8);
+void sub_80BC360(u8);
+void sub_80BC3DC(u8);
+void sub_80BC47C(u8);
+bool8 sub_80BC514(u8);
+void sub_80BC844(u8);
+void sub_80BC890(void);
+void sub_80BC8D4(u8, u8);
+void sub_80BD154(u16, u8, u8, u16);
+void sub_80BD1F4(u16, u8, u8, u16);
+u8 sub_80BD23C(u16, u8, u8);
+void sub_80BD28C(u8, u8, u16);
+void sub_80BD2B4(u16, u16);
+bool8 sub_80BD404(u8, u8, u8);
+u16 sub_80BD69C(u16, u16);
+void sub_80BD8D0(void);
+bool8 sub_80BD930(void);
+void sub_80BDA40(void);
+u16 sub_80BDA8C(u16);
+u16 sub_80BDACC(u16, u16, u16);
+void sub_80BDB7C(u8);
+void sub_80BE470(struct Sprite *sprite);
void sub_80BE604(struct Sprite *sprite);
void sub_80BE658(struct Sprite *sprite);
void sub_80BE758(struct Sprite *sprite);
void sub_80BE780(struct Sprite *sprite);
void sub_80BE44C(struct Sprite *sprite);
void sub_80BE834(struct Sprite *sprite);
+void sub_80BE4E0(struct Sprite *sprite);
+u8 sub_80BE91C(struct PokedexListItem*, u8);
+bool8 sub_80BE9C4(u8);
+void sub_80BE9F8(struct PokedexListItem*, u8);
+void sub_80C09B0(u8);
+u16 sub_80C0E0C(u8, u16, u16, u16);
+u8 sub_80C1258();
// const rom data
#include "data/pokedex_orders.h"
@@ -544,7 +610,7 @@ const struct CompressedSpriteSheet gSpriteSheets_0855D26C[] =
{0}
};
-const struct CompressedSpritePalette gSpritePalettes_0855D26C[] =
+const struct SpritePalette gSpritePalettes_0855D26C[] =
{
{gPokedexText_Pal, 4096},
{0}
@@ -599,6 +665,10 @@ const struct WindowTemplate sWindowTemplates_0855D2A8[] =
DUMMY_WIN_TEMPLATE
};
+const u8 gUnknown_0855D2B8[] = _("{UNK_CTRL_F9 8}000");
+const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp");
+const u8 sText_TenDashes[] = _("----------");
+
// .text
#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0))
@@ -690,3 +760,1062 @@ void sub_80BB384(struct PokedexView *pokedexView)
for (i = 0; i <= 7; i++)
pokedexView->unk65C[i] = 0;
}
+
+void sub_80BB534(void)
+{
+ u8 *addr;
+ u32 size;
+
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ sub_80C09B0(0);
+ addr = (u8 *)VRAM;
+ size = VRAM_SIZE;
+ while (1)
+ {
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, addr, size);
+ break;
+ }
+ }
+ DmaClear32(3, OAM, OAM_SIZE);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ gMain.state = 1;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ dp13_810BB8C();
+ gMain.state++;
+ break;
+ case 2:
+ gUnknown_02039B4C = AllocZeroed(sizeof(struct PokedexView));
+ sub_80BB384(gUnknown_02039B4C);
+ CreateTask(sub_80BB78C, 0);
+ gUnknown_02039B4C->dexMode = gSaveBlock2Ptr->pokedex.unknown1;
+ if (!IsNationalPokedexEnabled())
+ gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
+ gUnknown_02039B4C->dexOrder = gSaveBlock2Ptr->pokedex.order;
+ gUnknown_02039B4C->selectedPokemon = gUnknown_02039B50;
+ gUnknown_02039B4C->unk62C = gUnknown_02039B52;
+ gUnknown_02039B4C->selectedScreen = 0;
+ if (!IsNationalPokedexEnabled())
+ {
+ gUnknown_02039B4C->unk61A = GetHoennPokedexCount(0);
+ gUnknown_02039B4C->unk61C = GetHoennPokedexCount(1);
+ }
+ else
+ {
+ gUnknown_02039B4C->unk61A = GetNationalPokedexCount(0);
+ gUnknown_02039B4C->unk61C = GetNationalPokedexCount(1);
+ }
+ gUnknown_02039B4C->unk62D = 8;
+ gMain.state++;
+ break;
+ case 3:
+ EnableInterrupts(1);
+ SetVBlankCallback(sub_80BB370);
+ SetMainCallback2(sub_80BB774);
+ sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder);
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80);
+ break;
+ }
+}
+
+void sub_80BB774(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_80BB78C(u8 taskId)
+{
+ gUnknown_02039B4C->unk64C_1 = FALSE;
+ if (sub_80BC514(0))
+ gTasks[taskId].func = sub_80BB7D4;
+}
+
+void sub_80BB7D4(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+
+ if (gUnknown_02039B4C->menuY)
+ {
+ gUnknown_02039B4C->menuY -= 8;
+ }
+ else
+ {
+ if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen)
+ {
+ sub_80BD8D0();
+ BeginNormalPaletteFade(~(1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK);
+ gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470;
+ gTasks[taskId].func = sub_80BBBF4;
+ PlaySE(SE_PIN);
+ sub_80BC890();
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ //Open menu
+ gUnknown_02039B4C->menuY = 0;
+ gUnknown_02039B4C->menuIsOpen = 1;
+ gUnknown_02039B4C->menuCursorPos = 0;
+ gTasks[taskId].func = sub_80BBA78;
+ PlaySE(SE_SELECT);
+ }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].data[0] = sub_80C1258();
+ gUnknown_02039B4C->unk64E = 0;
+ gUnknown_02039B4C->unk62A = gUnknown_02039B4C->unk62C;
+ gUnknown_02039B4C->unk610 = gUnknown_02039B4C->selectedPokemon;
+ gUnknown_02039B4C->unk614 = gUnknown_02039B4C->dexMode;
+ gUnknown_02039B4C->unk618 = gUnknown_02039B4C->dexOrder;
+ gTasks[taskId].func = sub_80BBD1C;
+ PlaySE(SE_PC_LOGIN);
+ sub_80BC890();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].func = sub_80BBDE8;
+ PlaySE(SE_PC_OFF);
+ }
+ else
+ {
+ //Handle D-pad
+ gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE);
+ if (gUnknown_02039B4C->unk62E)
+ gTasks[taskId].func = sub_80BBA28;
+ }
+ }
+}
+
+void sub_80BBA28(u8 taskId)
+{
+ if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636))
+ gTasks[taskId].func = sub_80BB7D4;
+}
+
+void sub_80BBA78(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+
+ //If menu is not open, slide it up, on screen
+ if (gUnknown_02039B4C->menuY != 80)
+ gUnknown_02039B4C->menuY += 8;
+ else
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (gUnknown_02039B4C->menuCursorPos)
+ {
+ case 0: //BACK TO LIST
+ default:
+ gMain.newKeys |= START_BUTTON; //Exit menu
+ break;
+ case 1: //LIST TOP
+ gUnknown_02039B4C->selectedPokemon = 0;
+ gUnknown_02039B4C->unk62C = 0x40;
+ sub_80BDA40();
+ sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON; //Exit menu
+ break;
+ case 2: //LIST BOTTOM
+ gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1;
+ gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30;
+ sub_80BDA40();
+ sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON; //Exit menu
+ break;
+ case 3: //CLOSE POKEDEX
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].func = sub_80BBDE8;
+ PlaySE(SE_PC_OFF);
+ break;
+ }
+ }
+
+ //Exit menu when Start or B is pressed
+ if (gMain.newKeys & (START_BUTTON | B_BUTTON))
+ {
+ gUnknown_02039B4C->menuIsOpen = 0;
+ gTasks[taskId].func = sub_80BB7D4;
+ PlaySE(SE_SELECT);
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos != 0)
+ {
+ gUnknown_02039B4C->menuCursorPos--;
+ PlaySE(SE_SELECT);
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 2)
+ {
+ gUnknown_02039B4C->menuCursorPos++;
+ PlaySE(SE_SELECT);
+ }
+ }
+}
+
+void sub_80BBBF4(u8 taskId)
+{
+ if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56)
+ {
+ gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A;
+ gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId);
+ gTasks[taskId].func = sub_80BBC74;
+ }
+}
+
+void sub_80BBC74(u8 taskId)
+{
+ if (gTasks[gTasks[taskId].data[0]].isActive)
+ {
+ if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
+ sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]);
+ }
+ else
+ {
+ gUnknown_02039B50 = gUnknown_02039B4C->selectedPokemon;
+ gUnknown_02039B52 = gUnknown_02039B4C->unk62C;
+ gTasks[taskId].func = sub_80BB78C;
+ }
+}
+
+void sub_80BBD1C(u8 taskId)
+{
+ if (!gTasks[gTasks[taskId].data[0]].isActive)
+ {
+ sub_80BDA40();
+ if (gUnknown_02039B4C->unk64E != 0)
+ {
+ gUnknown_02039B4C->selectedPokemon = 0;
+ gUnknown_02039B4C->unk62C = 0x40;
+ gTasks[taskId].func = sub_80BBE70;
+ }
+ else
+ {
+ gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
+ gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
+ gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ if (!IsNationalPokedexEnabled())
+ gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
+ gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ gTasks[taskId].func = sub_80BB78C;
+ }
+ }
+}
+
+void sub_80BBDE8(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gSaveBlock2Ptr->pokedex.unknown1 = gUnknown_02039B4C->dexMode;
+ if (!IsNationalPokedexEnabled())
+ gSaveBlock2Ptr->pokedex.unknown1 = DEX_MODE_HOENN;
+ gSaveBlock2Ptr->pokedex.order = gUnknown_02039B4C->dexOrder;
+ sub_80BDA40();
+ sub_80BC890();
+ DestroyTask(taskId);
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
+ Free(gUnknown_02039B4C);
+ }
+}
+
+void sub_80BBE70(u8 taskId)
+{
+ gUnknown_02039B4C->unk64C_1 = TRUE;
+ if (sub_80BC514(3))
+ gTasks[taskId].func = sub_80BBEB8;
+}
+
+void sub_80BBEB8(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+
+ if (gUnknown_02039B4C->menuY)
+ {
+ gUnknown_02039B4C->menuY -= 8;
+ }
+ else
+ {
+ if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen)
+ {
+ u32 a;
+
+ sub_80BD8D0();
+ a = (1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16));
+ gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470;
+ BeginNormalPaletteFade(~a, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].func = sub_80BC2D4;
+ PlaySE(SE_PIN);
+ sub_80BC890();
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ gUnknown_02039B4C->menuY = 0;
+ gUnknown_02039B4C->menuIsOpen = 1;
+ gUnknown_02039B4C->menuCursorPos = 0;
+ gTasks[taskId].func = sub_80BC0F8;
+ PlaySE(SE_SELECT);
+ }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].data[0] = sub_80C1258();
+ gUnknown_02039B4C->unk64E = 0;
+ gTasks[taskId].func = sub_80BBD1C;
+ PlaySE(SE_PC_LOGIN);
+ sub_80BC890();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].func = sub_80BC3DC;
+ PlaySE(SE_PC_OFF);
+ }
+ else
+ {
+ //Handle D-pad
+ gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE);
+ if (gUnknown_02039B4C->unk62E)
+ gTasks[taskId].func = sub_80BC0A8;
+ }
+ }
+}
+
+void sub_80BC0A8(u8 taskId)
+{
+ if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636))
+ gTasks[taskId].func = sub_80BBEB8;
+}
+
+void sub_80BC0F8(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+
+ if (gUnknown_02039B4C->menuY != 96)
+ {
+ gUnknown_02039B4C->menuY += 8;
+ }
+ else
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (gUnknown_02039B4C->menuCursorPos)
+ {
+ case 0: //BACK TO LIST
+ default:
+ gMain.newKeys |= START_BUTTON;
+ break;
+ case 1: //LIST TOP
+ gUnknown_02039B4C->selectedPokemon = 0;
+ gUnknown_02039B4C->unk62C = 0x40;
+ sub_80BDA40();
+ sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON;
+ break;
+ case 2: //LIST BOTTOM
+ gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1;
+ gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30;
+ sub_80BDA40();
+ sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON;
+ break;
+ case 3: //BACK TO POKEDEX
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].func = sub_80BC3DC;
+ PlaySE(SE_TRACK_DOOR);
+ break;
+ case 4: //CLOSE POKEDEX
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ gTasks[taskId].func = sub_80BC47C;
+ PlaySE(SE_PC_OFF);
+ break;
+ }
+ }
+
+ //Exit menu when Start or B is pressed
+ if (gMain.newKeys & (START_BUTTON | B_BUTTON))
+ {
+ gUnknown_02039B4C->menuIsOpen = 0;
+ gTasks[taskId].func = sub_80BBEB8;
+ PlaySE(SE_SELECT);
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos)
+ {
+ gUnknown_02039B4C->menuCursorPos--;
+ PlaySE(SE_SELECT);
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 3)
+ {
+ gUnknown_02039B4C->menuCursorPos++;
+ PlaySE(SE_SELECT);
+ }
+ }
+}
+
+void sub_80BC2D4(u8 taskId)
+{
+ if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56)
+ {
+ gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A;
+ gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId);
+ gUnknown_02039B4C->selectedMonSpriteId = -1;
+ gTasks[taskId].func = sub_80BC360;
+ }
+}
+
+void sub_80BC360(u8 taskId)
+{
+ if (gTasks[gTasks[taskId].data[0]].isActive)
+ {
+ if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
+ sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]);
+ }
+ else
+ {
+ gTasks[taskId].func = sub_80BBE70;
+ }
+}
+
+void sub_80BC3DC(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
+ gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
+ gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ if (!IsNationalPokedexEnabled())
+ gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
+ gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ gTasks[taskId].func = sub_80BB78C;
+ sub_80BDA40();
+ sub_80BC890();
+ }
+}
+
+void sub_80BC47C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
+ gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
+ gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ if (!IsNationalPokedexEnabled())
+ gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
+ gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ gTasks[taskId].func = sub_80BBDE8;
+ }
+}
+
+bool8 sub_80BC514(u8 a)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ if (gPaletteFade.active)
+ return 0;
+ SetVBlankCallback(NULL);
+ gUnknown_02039B4C->unk64A = a;
+ sub_80C09B0(0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gBgTemplates_0855D298, 4);
+ SetBgTilemapBuffer(3, AllocZeroed(0x800));
+ SetBgTilemapBuffer(2, AllocZeroed(0x800));
+ SetBgTilemapBuffer(1, AllocZeroed(0x800));
+ SetBgTilemapBuffer(0, AllocZeroed(0x800));
+ copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
+ CopyToBgTilemapBuffer(1, gUnknown_08DC2C5C, 0, 0);
+ CopyToBgTilemapBuffer(3, gUnknown_08DC2DAC, 0, 0);
+ if (a == 0)
+ CopyToBgTilemapBuffer(0, gUnknown_08DC2A08, 0, 0x280);
+ else
+ CopyToBgTilemapBuffer(0, gUnknown_08DC2B1C, 0, 0x280);
+ ResetPaletteFade();
+ if (a == 0)
+ gUnknown_02039B4C->unk64C_1 = FALSE;
+ else
+ gUnknown_02039B4C->unk64C_1 = TRUE;
+ sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ InitWindows(sWindowTemplates_0855D2A8);
+ DeactivateAllTextPrinters();
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+ gMain.state = 1;
+ break;
+ case 1:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LoadCompressedObjectPic(&gSpriteSheets_0855D26C[0]);
+ LoadSpritePalettes(gSpritePalettes_0855D26C);
+ sub_80BDB7C(a);
+ gMain.state++;
+ break;
+ case 2:
+ gMain.state++;
+ break;
+ case 3:
+ if (a == 0)
+ sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder);
+ sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ gUnknown_02039B4C->menuIsOpen = 0;
+ gUnknown_02039B4C->menuY = 0;
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ gMain.state++;
+ break;
+ case 4:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, RGB_BLACK);
+ SetVBlankCallback(sub_80BB370);
+ gMain.state++;
+ break;
+ case 5:
+ SetGpuReg(REG_OFFSET_WININ, 0x3F3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x1D3F);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ gMain.state++;
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ gMain.state = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+void sub_80BC844(u8 a)
+{
+ if (a == 1)
+ LoadPalette(gPokedexHoennBg_Pal + 1, 1, 0xBE);
+ else if (!IsNationalPokedexEnabled())
+ LoadPalette(gPokedexText_Pal + 1, 1, 0xBE);
+ else
+ LoadPalette(gPokedexNationalBg_Pal + 1, 1, 0xBE);
+ LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32);
+}
+
+void sub_80BC890(void)
+{
+ void* tilemapBuffer;
+
+ FreeAllWindowBuffers();
+ tilemapBuffer = GetBgTilemapBuffer(0);
+ if (tilemapBuffer)
+ Free(tilemapBuffer);
+ tilemapBuffer = GetBgTilemapBuffer(1);
+ if (tilemapBuffer)
+ Free(tilemapBuffer);
+ tilemapBuffer = GetBgTilemapBuffer(2);
+ if (tilemapBuffer)
+ Free(tilemapBuffer);
+ tilemapBuffer = GetBgTilemapBuffer(3);
+ if (tilemapBuffer)
+ Free(tilemapBuffer);
+}
+
+void sub_80BC8D4(u8 dexMode, u8 sortMode)
+{
+ u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
+ s16 i;
+
+ gUnknown_02039B4C->pokemonListCount = 0;
+
+ switch (dexMode)
+ {
+ default:
+ case DEX_MODE_HOENN:
+ vars[0] = HOENN_DEX_COUNT;
+ vars[1] = 1;
+ break;
+ case DEX_MODE_NATIONAL:
+ if (IsNationalPokedexEnabled())
+ {
+ vars[0] = NATIONAL_DEX_COUNT;
+ vars[1] = 0;
+ }
+ else
+ {
+ vars[0] = HOENN_DEX_COUNT;
+ vars[1] = 1;
+ }
+ break;
+ }
+
+ switch (sortMode)
+ {
+ case 0:
+ if (vars[1])
+ {
+ for (i = 0; i < vars[0]; i++)
+ {
+ vars[2] = HoennToNationalOrder(i + 1);
+ gUnknown_02039B4C->unk0[i].dexNum = vars[2];
+ gUnknown_02039B4C->unk0[i].seen = GetSetPokedexFlag(vars[2], 0);
+ gUnknown_02039B4C->unk0[i].owned = GetSetPokedexFlag(vars[2], 1);
+ if (gUnknown_02039B4C->unk0[i].seen)
+ gUnknown_02039B4C->pokemonListCount = i + 1;
+ }
+ }
+ else
+ {
+ bool32 r10;
+ s16 r5;
+
+ r10 = r5 = i = 0;
+ for (i = 0; i < vars[0]; i++)
+ {
+ vars[2] = i + 1;
+ if (GetSetPokedexFlag(vars[2], 0))
+ r10 = 1;
+ if (r10)
+ {
+ asm(""); //Needed to match for some reason
+ gUnknown_02039B4C->unk0[r5].dexNum = vars[2];
+ gUnknown_02039B4C->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0);
+ gUnknown_02039B4C->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1);
+ if (gUnknown_02039B4C->unk0[r5].seen)
+ gUnknown_02039B4C->pokemonListCount = r5 + 1;
+ r5++;
+ }
+ }
+ }
+ break;
+ case 1:
+ for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++)
+ {
+ vars[2] = gPokedexOrder_Alphabetical[i];
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0))
+ {
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
+ gUnknown_02039B4C->pokemonListCount++;
+ }
+ }
+ break;
+ case 2:
+ for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--)
+ {
+ vars[2] = gPokedexOrder_Weight[i];
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ {
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
+ gUnknown_02039B4C->pokemonListCount++;
+ }
+ }
+ break;
+ case 3:
+ for (i = 0; i < NATIONAL_DEX_COUNT; i++)
+ {
+ vars[2] = gPokedexOrder_Weight[i];
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ {
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
+ gUnknown_02039B4C->pokemonListCount++;
+ }
+ }
+ break;
+ case 4:
+ for (i = NATIONAL_DEX_COUNT - 1; i >=0; i--)
+ {
+ vars[2] = gPokedexOrder_Height[i];
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ {
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
+ gUnknown_02039B4C->pokemonListCount++;
+ }
+ }
+ break;
+ case 5:
+ for (i = 0; i < NATIONAL_DEX_COUNT; i++)
+ {
+ vars[2] = gPokedexOrder_Height[i];
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
+ {
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
+ gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
+ gUnknown_02039B4C->pokemonListCount++;
+ }
+ }
+ break;
+ }
+
+ for (i = gUnknown_02039B4C->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
+ {
+ gUnknown_02039B4C->unk0[i].dexNum |= 0xFFFF;
+ gUnknown_02039B4C->unk0[i].seen = 0;
+ gUnknown_02039B4C->unk0[i].owned = 0;
+ }
+}
+
+void sub_80BCE2C(u8 a, u8 b, const u8* str, u8 c, u8 d)
+{
+ u8 sp14[3];
+
+ sp14[0] = 0;
+ sp14[1] = 15;
+ sp14[2] = 3;
+ AddTextPrinterParameterized2(a, b, c * 8, (d * 8) + 1, 0, 0, sp14, -1, str);
+}
+
+void sub_80BCE84(u8 a, u16 b, u16 c)
+{
+ s16 _b;
+ u16 i;
+ u16 r2;
+
+ switch (a)
+ {
+ case 0:
+ default:
+ _b = b - 5;
+ for (i = 0; i <= 10; i++)
+ {
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ {
+ sub_80BD28C(0x11, i * 2, c);
+ }
+ else
+ {
+ sub_80BD28C(0x11, i * 2, c);
+ if (gUnknown_02039B4C->unk0[_b].seen)
+ {
+ sub_80BD154(_b, 0x12, i * 2, c);
+ sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, i * 2, c);
+ sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, i * 2);
+ }
+ else
+ {
+ sub_80BD154(_b, 0x12, i * 2, c);
+ sub_80BD1F4(0, 0x11, i * 2, c);
+ sub_80BD23C(0, 0x16, i * 2);
+ }
+ }
+ _b++;
+ }
+ break;
+ case 1:
+ _b = b - 5;
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ {
+ sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c);
+ }
+ else
+ {
+ sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c);
+ if (gUnknown_02039B4C->unk0[_b].seen)
+ {
+ sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c);
+ sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, gUnknown_02039B4C->unk630 * 2, c);
+ sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, gUnknown_02039B4C->unk630 * 2);
+ }
+ else
+ {
+ sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c);
+ sub_80BD1F4(0, 0x11, gUnknown_02039B4C->unk630 * 2, c);
+ sub_80BD23C(0, 0x16, gUnknown_02039B4C->unk630 * 2);
+ }
+ }
+ break;
+ case 2:
+ _b = b + 5;
+ r2 = gUnknown_02039B4C->unk630 + 10;
+ if (r2 > 15)
+ r2 -= 16;
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ sub_80BD28C(0x11, r2 * 2, c);
+ else
+ {
+ sub_80BD28C(0x11, r2 * 2, c);
+ if (gUnknown_02039B4C->unk0[_b].seen)
+ {
+ sub_80BD154(_b, 0x12, r2 * 2, c);
+ sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, r2 * 2, c);
+ sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, r2 * 2);
+ }
+ else
+ {
+ sub_80BD154(_b, 0x12, r2 * 2, c);
+ sub_80BD1F4(0, 0x11, r2 * 2, c);
+ sub_80BD23C(0, 0x16, r2 * 2);
+ }
+ }
+ break;
+ }
+ CopyWindowToVram(0, 2);
+}
+
+void sub_80BD154(u16 a, u8 b, u8 c, u16 unused)
+{
+ u8 text[6];
+ u16 r6;
+
+ memcpy(text, gUnknown_0855D2B8, 6);
+ r6 = gUnknown_02039B4C->unk0[a].dexNum;
+ if (gUnknown_02039B4C->dexMode == DEX_MODE_HOENN)
+ r6 = NationalToHoennOrder(r6);
+ text[2] = CHAR_0 + r6 / 100;
+ text[3] = CHAR_0 + (r6 % 100) / 10;
+ text[4] = CHAR_0 + (r6 % 100) % 10;
+ sub_80BCE2C(0, 7, text, b, c);
+}
+
+void sub_80BD1F4(u16 a, u8 b, u8 c, u16 unused)
+{
+ if (a)
+ BlitBitmapToWindow(0, gUnknown_0855D2BE, b * 8, c * 8, 8, 16);
+ else
+ FillWindowPixelRect(0, 0, b * 8, c * 8, 8, 16);
+}
+
+u8 sub_80BD23C(u16 num, u8 b, u8 c)
+{
+ const u8* str;
+
+ num = NationalPokedexNumToSpecies(num);
+ if (num)
+ str = gSpeciesNames[num];
+ else
+ str = sText_TenDashes;
+ sub_80BCE2C(0, 7, str, b, c);
+ return StringLength(str);
+}
+
+void sub_80BD28C(u8 a, u8 b, u16 unused)
+{
+ FillWindowPixelRect(0, 0, a * 8, b * 8, 0x60, 16);
+}
+
+void sub_80BD2B4(u16 a, u16 b)
+{
+ u8 i;
+ u16 unk;
+ u8 spriteId;
+
+ gPaletteFade.bufferTransferDisabled = TRUE;
+
+ for (i = 0; i < 4; i++)
+ gUnknown_02039B4C->unk61E[i] = 0xFFFF;
+ gUnknown_02039B4C->selectedMonSpriteId = 0xFFFF;
+
+ unk = sub_80BDA8C(a - 1);
+ if (unk != 0xFFFF)
+ {
+ spriteId = sub_80BDACC(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = sub_80BE4E0;
+ gSprites[spriteId].data[5] = -32;
+ }
+
+ unk = sub_80BDA8C(a);
+ if (unk != 0xFFFF)
+ {
+ spriteId = sub_80BDACC(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = sub_80BE4E0;
+ gSprites[spriteId].data[5] = 0;
+ }
+
+ unk = sub_80BDA8C(a + 1);
+ if (unk != 0xFFFF)
+ {
+ spriteId = sub_80BDACC(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = sub_80BE4E0;
+ gSprites[spriteId].data[5] = 32;
+ }
+
+ sub_80BCE84(0, a, b);
+ SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
+
+ gUnknown_02039B4C->unk630 = 0;
+ gUnknown_02039B4C->unk632 = 0;
+
+ gPaletteFade.bufferTransferDisabled = FALSE;
+}
+
+bool8 sub_80BD404(u8 a, u8 b, u8 c)
+{
+ u16 i;
+ u8 foo;
+
+ if (gUnknown_02039B4C->unk62E)
+ {
+ gUnknown_02039B4C->unk62E--;
+ switch (a)
+ {
+ case 1:
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
+ gSprites[gUnknown_02039B4C->unk61E[i]].data[5] += b;
+ }
+ foo = 16 * (c - gUnknown_02039B4C->unk62E) / c;
+ SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 - foo);
+ gUnknown_02039B4C->unk62C -= gUnknown_02039B4C->unk628;
+ break;
+ case 2:
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
+ gSprites[gUnknown_02039B4C->unk61E[i]].data[5] -= b;
+ }
+ foo = 16 * (c - gUnknown_02039B4C->unk62E) / c;
+ SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 + foo);
+ gUnknown_02039B4C->unk62C += gUnknown_02039B4C->unk628;
+ break;
+ }
+ return FALSE;
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk630 * 16);
+ return TRUE;
+ }
+}
+
+void sub_80BD5A8(u8 a, u16 b)
+{
+ u16 unk;
+ u8 spriteId;
+
+ gUnknown_02039B4C->unk632 = gUnknown_02039B4C->unk630;
+ switch (a)
+ {
+ case 1:
+ unk = sub_80BDA8C(b - 1);
+ if (unk != 0xFFFF)
+ {
+ spriteId = sub_80BDACC(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = sub_80BE4E0;
+ gSprites[spriteId].data[5] = -64;
+ }
+ if (gUnknown_02039B4C->unk630 > 0)
+ gUnknown_02039B4C->unk630--;
+ else
+ gUnknown_02039B4C->unk630 = 15;
+ break;
+ case 2:
+ unk = sub_80BDA8C(b + 1);
+ if (unk != 0xFFFF)
+ {
+ spriteId = sub_80BDACC(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = sub_80BE4E0;
+ gSprites[spriteId].data[5] = 0x40;
+ }
+ if (gUnknown_02039B4C->unk630 <= 0xE)
+ gUnknown_02039B4C->unk630++;
+ else
+ gUnknown_02039B4C->unk630 = 0;
+ break;
+ }
+}
+
+u16 sub_80BD69C(u16 a, u16 b)
+{
+ u8 r3;
+ u8 r5;
+ u8 i;
+ u16 r6;
+ u8 r10 = 0;
+
+ if ((gMain.heldKeys & DPAD_UP) && (a > 0))
+ {
+ r10 = 1;
+ a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ sub_80BD5A8(1, a);
+ sub_80BCE84(1, a, b);
+ PlaySE(SE_Z_SCROLL);
+ }
+ else if ((gMain.heldKeys & DPAD_DOWN) && (a < gUnknown_02039B4C->pokemonListCount - 1))
+ {
+ r10 = 2;
+ a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ sub_80BD5A8(2, a);
+ sub_80BCE84(2, a, b);
+ PlaySE(SE_Z_SCROLL);
+ }
+ else if ((gMain.newKeys & DPAD_LEFT) && (a > 0))
+ {
+ r6 = a;
+
+ for (i = 0; i < 7; i++)
+ a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ gUnknown_02039B4C->unk62C += 16 * (a - r6);
+ sub_80BDA40();
+ sub_80BD2B4(a, 0xE);
+ PlaySE(SE_Z_PAGE);
+ }
+ else if ((gMain.newKeys & DPAD_RIGHT) && (a < gUnknown_02039B4C->pokemonListCount - 1))
+ {
+ r6 = a;
+ for (i = 0; i < 7; i++)
+ a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ gUnknown_02039B4C->unk62C += (a - r6) * 16;
+ sub_80BDA40();
+ sub_80BD2B4(a, 0xE);
+ PlaySE(SE_Z_PAGE);
+ }
+
+ if (r10 == 0)
+ {
+ gUnknown_02039B4C->unk638 = 0;
+ return a;
+ }
+
+ r5 = gUnknown_0855D28C[gUnknown_02039B4C->unk638 / 4];
+ r3 = gUnknown_0855D291[gUnknown_02039B4C->unk638 / 4];
+ gUnknown_02039B4C->unk62E = r3;
+ gUnknown_02039B4C->unk636 = r3;
+ gUnknown_02039B4C->unk634 = r5;
+ gUnknown_02039B4C->unk62F = r10;
+ gUnknown_02039B4C->unk628 = r5 / 2;
+ sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636);
+ if (gUnknown_02039B4C->unk638 <= 0xB)
+ gUnknown_02039B4C->unk638++;
+ return a;
+}