summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex.s1251
-rw-r--r--src/pokedex.c378
2 files changed, 364 insertions, 1265 deletions
diff --git a/asm/pokedex.s b/asm/pokedex.s
index ea1c404de..1d5d3a322 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -6,1257 +6,6 @@
.text
- thumb_func_start sub_808F8D8
-sub_808F8D8: @ 808F8D8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _0808F92C @ =gMain
- ldr r0, _0808F930 @ =0x0000043c
- adds r6, r2, r0
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _0808F948
- cmp r0, 0x1
- ble _0808F8F2
- cmp r0, 0x2
- beq _0808F970
-_0808F8F2:
- ldr r0, _0808F934 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808F9AA
- ldr r4, _0808F938 @ =gUnknown_0202FFB4
- ldr r0, [r4]
- ldr r1, _0808F93C @ =0x0000064a
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
- ldr r1, _0808F940 @ =gUnknown_03005CEC
- ldr r0, [r2, 0xC]
- str r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 2
- bl sub_8091060
- ldr r0, [r4]
- ldr r2, _0808F944 @ =0x0000064d
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- strb r1, [r6]
- b _0808F9AA
- .align 2, 0
-_0808F92C: .4byte gMain
-_0808F930: .4byte 0x0000043c
-_0808F934: .4byte gPaletteFade
-_0808F938: .4byte gUnknown_0202FFB4
-_0808F93C: .4byte 0x0000064a
-_0808F940: .4byte gUnknown_03005CEC
-_0808F944: .4byte 0x0000064d
-_0808F948:
- movs r0, 0xD
- bl sub_8090540
- movs r0, 0x1
- movs r1, 0xD
- bl sub_8090644
- bl sub_808D640
- ldr r1, _0808F96C @ =REG_BG1CNT
- movs r2, 0xD0
- lsls r2, 4
- adds r0, r2, 0
- strh r0, [r1]
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _0808F9AA
- .align 2, 0
-_0808F96C: .4byte REG_BG1CNT
-_0808F970:
- ldr r0, _0808F9B0 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- bl NationalPokedexNumToSpecies
- lsls r0, 16
- lsrs r0, 16
- ldr r5, _0808F9B4 @ =gUnknown_0202FFB4
- ldr r1, [r5]
- ldr r4, _0808F9B8 @ =0x0000064f
- adds r1, r4
- bl ShowPokedexAreaScreen
- ldr r0, _0808F9BC @ =gUnknown_03005CEC
- ldr r0, [r0]
- bl SetVBlankCallback
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
- strb r1, [r6]
- ldr r1, _0808F9C0 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808F9C4 @ =sub_808F9C8
- str r1, [r0]
-_0808F9AA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F9B0: .4byte gUnknown_0202FFBC
-_0808F9B4: .4byte gUnknown_0202FFB4
-_0808F9B8: .4byte 0x0000064f
-_0808F9BC: .4byte gUnknown_03005CEC
-_0808F9C0: .4byte gTasks
-_0808F9C4: .4byte sub_808F9C8
- thumb_func_end sub_808F8D8
-
- thumb_func_start sub_808F9C8
-sub_808F9C8: @ 808F9C8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0808F9F0 @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808F9F4 @ =0x0000064f
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808F9EA
- ldr r0, _0808F9F8 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808F9FC @ =sub_808FA00
- str r0, [r1]
-_0808F9EA:
- pop {r0}
- bx r0
- .align 2, 0
-_0808F9F0: .4byte gUnknown_0202FFB4
-_0808F9F4: .4byte 0x0000064f
-_0808F9F8: .4byte gTasks
-_0808F9FC: .4byte sub_808FA00
- thumb_func_end sub_808F9C8
-
- thumb_func_start sub_808FA00
-sub_808FA00: @ 808FA00
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0808FA34 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808FA56
- ldr r0, _0808FA38 @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808FA3C @ =0x0000064f
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808FA24
- cmp r0, 0x2
- beq _0808FA48
-_0808FA24:
- ldr r0, _0808FA40 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808FA44 @ =sub_808F2B0
- b _0808FA54
- .align 2, 0
-_0808FA34: .4byte gPaletteFade
-_0808FA38: .4byte gUnknown_0202FFB4
-_0808FA3C: .4byte 0x0000064f
-_0808FA40: .4byte gTasks
-_0808FA44: .4byte sub_808F2B0
-_0808FA48:
- ldr r0, _0808FA5C @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808FA60 @ =sub_808FA64
-_0808FA54:
- str r0, [r1]
-_0808FA56:
- pop {r0}
- bx r0
- .align 2, 0
-_0808FA5C: .4byte gTasks
-_0808FA60: .4byte sub_808FA64
- thumb_func_end sub_808FA00
-
- thumb_func_start sub_808FA64
-sub_808FA64: @ 808FA64
- push {r4,r5,lr}
- sub sp, 0x18
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0808FA84 @ =gMain
- ldr r2, _0808FA88 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xA
- bhi _0808FABC
- lsls r0, 2
- ldr r1, _0808FA8C @ =_0808FA90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0808FA84: .4byte gMain
-_0808FA88: .4byte 0x0000043c
-_0808FA8C: .4byte _0808FA90
- .align 2, 0
-_0808FA90:
- .4byte _0808FABC
- .4byte _0808FB28
- .4byte _0808FB58
- .4byte _0808FB9C
- .4byte _0808FBC4
- .4byte _0808FBF8
- .4byte _0808FC54
- .4byte _0808FCD4
- .4byte _0808FD40
- .4byte _0808FD6C
- .4byte _0808FDBC
-_0808FABC:
- ldr r0, _0808FB08 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0808FACA
- b _0808FDDC
-_0808FACA:
- ldr r0, _0808FB0C @ =gMPlay_BGM
- bl m4aMPlayStop
- ldr r5, _0808FB10 @ =gUnknown_0202FFB4
- ldr r0, [r5]
- ldr r3, _0808FB14 @ =0x0000064a
- adds r0, r3
- movs r1, 0x6
- strb r1, [r0]
- ldr r1, _0808FB18 @ =gUnknown_03005CEC
- ldr r4, _0808FB1C @ =gMain
- ldr r0, [r4, 0xC]
- str r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 2
- bl sub_8091060
- ldr r0, [r5]
- ldr r1, _0808FB20 @ =0x0000064d
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- ldr r2, _0808FB24 @ =0x0000043c
- adds r4, r2
- movs r0, 0x1
- strb r0, [r4]
- b _0808FDDC
- .align 2, 0
-_0808FB08: .4byte gPaletteFade
-_0808FB0C: .4byte gMPlay_BGM
-_0808FB10: .4byte gUnknown_0202FFB4
-_0808FB14: .4byte 0x0000064a
-_0808FB18: .4byte gUnknown_03005CEC
-_0808FB1C: .4byte gMain
-_0808FB20: .4byte 0x0000064d
-_0808FB24: .4byte 0x0000043c
-_0808FB28:
- ldr r0, _0808FB44 @ =gPokedexMenu_Gfx
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _0808FB48 @ =gUnknown_0839F8A0
- ldr r1, _0808FB4C @ =0x06007000
- bl LZ77UnCompVram
- ldr r1, _0808FB50 @ =gMain
- ldr r3, _0808FB54 @ =0x0000043c
- adds r1, r3
- b _0808FDA0
- .align 2, 0
-_0808FB44: .4byte gPokedexMenu_Gfx
-_0808FB48: .4byte gUnknown_0839F8A0
-_0808FB4C: .4byte 0x06007000
-_0808FB50: .4byte gMain
-_0808FB54: .4byte 0x0000043c
-_0808FB58:
- movs r0, 0xD
- bl sub_8090540
- movs r0, 0x2
- movs r1, 0xD
- bl sub_8090644
- bl sub_808D640
- ldr r2, _0808FB88 @ =0x0600f800
- add r1, sp, 0x4
- movs r0, 0
- strh r0, [r1]
- ldr r0, _0808FB8C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0808FB90 @ =0x81000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r1, _0808FB94 @ =gMain
- ldr r4, _0808FB98 @ =0x0000043c
- adds r1, r4
- b _0808FDA0
- .align 2, 0
-_0808FB88: .4byte 0x0600f800
-_0808FB8C: .4byte 0x040000d4
-_0808FB90: .4byte 0x81000280
-_0808FB94: .4byte gMain
-_0808FB98: .4byte 0x0000043c
-_0808FB9C:
- ldr r4, _0808FBB8 @ =gWindowConfig_81E702C
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl ResetPaletteFade
- ldr r1, _0808FBBC @ =gMain
- ldr r0, _0808FBC0 @ =0x0000043c
- adds r1, r0
- b _0808FDA0
- .align 2, 0
-_0808FBB8: .4byte gWindowConfig_81E702C
-_0808FBBC: .4byte gMain
-_0808FBC0: .4byte 0x0000043c
-_0808FBC4:
- ldr r0, _0808FBE8 @ =gDexText_CryOf
- movs r1, 0xA
- movs r2, 0x4
- bl MenuPrint
- ldr r0, _0808FBEC @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- movs r1, 0xA
- movs r2, 0x6
- movs r3, 0x2
- bl sub_8091260
- ldr r1, _0808FBF0 @ =gMain
- ldr r2, _0808FBF4 @ =0x0000043c
- adds r1, r2
- b _0808FDA0
- .align 2, 0
-_0808FBE8: .4byte gDexText_CryOf
-_0808FBEC: .4byte gUnknown_0202FFBC
-_0808FBF0: .4byte gMain
-_0808FBF4: .4byte 0x0000043c
-_0808FBF8:
- ldr r0, _0808FC3C @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- movs r1, 0x30
- movs r2, 0x38
- movs r3, 0
- bl sub_80918EC
- ldr r2, _0808FC40 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- movs r3, 0
- strh r0, [r1, 0x10]
- ldr r2, _0808FC44 @ =gSprites
- movs r4, 0x10
- ldrsh r0, [r1, r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
- ldr r0, _0808FC48 @ =gUnknown_03005E98
- strb r3, [r0]
- ldr r1, _0808FC4C @ =gMain
- ldr r0, _0808FC50 @ =0x0000043c
- adds r1, r0
- b _0808FDA0
- .align 2, 0
-_0808FC3C: .4byte gUnknown_0202FFBC
-_0808FC40: .4byte gTasks
-_0808FC44: .4byte gSprites
-_0808FC48: .4byte gUnknown_03005E98
-_0808FC4C: .4byte gMain
-_0808FC50: .4byte 0x0000043c
-_0808FC54:
- ldr r1, _0808FCB0 @ =0xffff0000
- ldr r0, [sp, 0x8]
- ands r0, r1
- ldr r1, _0808FCB4 @ =0x00004020
- orrs r0, r1
- ldr r1, _0808FCB8 @ =0xff00ffff
- ands r0, r1
- movs r1, 0xF8
- lsls r1, 13
- orrs r0, r1
- ldr r1, _0808FCBC @ =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 20
- orrs r0, r1
- str r0, [sp, 0x8]
- ldr r2, _0808FCC0 @ =0xffff00ff
- add r0, sp, 0x8
- ldr r1, [r0, 0x4]
- ands r1, r2
- movs r2, 0xF0
- lsls r2, 5
- orrs r1, r2
- ldr r2, _0808FCC4 @ =0xffffff00
- ands r1, r2
- movs r2, 0xC
- orrs r1, r2
- str r1, [r0, 0x4]
- movs r1, 0
- bl sub_8119E3C
- lsls r0, 24
- cmp r0, 0
- bne _0808FC9A
- b _0808FDDC
-_0808FC9A:
- ldr r1, _0808FCC8 @ =gMain
- ldr r2, _0808FCCC @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _0808FCD0 @ =gUnknown_03005E98
- strb r2, [r0]
- b _0808FDDC
- .align 2, 0
-_0808FCB0: .4byte 0xffff0000
-_0808FCB4: .4byte 0x00004020
-_0808FCB8: .4byte 0xff00ffff
-_0808FCBC: .4byte 0x00ffffff
-_0808FCC0: .4byte 0xffff00ff
-_0808FCC4: .4byte 0xffffff00
-_0808FCC8: .4byte gMain
-_0808FCCC: .4byte 0x0000043c
-_0808FCD0: .4byte gUnknown_03005E98
-_0808FCD4:
- ldr r1, _0808FD24 @ =0xffff0000
- ldr r0, [sp, 0x10]
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- orrs r0, r1
- ldr r1, _0808FD28 @ =0xff00ffff
- ands r0, r1
- movs r1, 0xE0
- lsls r1, 12
- orrs r0, r1
- ldr r1, _0808FD2C @ =0x00ffffff
- ands r0, r1
- movs r1, 0x90
- lsls r1, 20
- orrs r0, r1
- str r0, [sp, 0x10]
- ldr r2, _0808FD30 @ =0xffffff00
- add r0, sp, 0x10
- ldr r1, [r0, 0x4]
- ands r1, r2
- movs r2, 0x12
- orrs r1, r2
- ldr r2, _0808FD34 @ =0xffff00ff
- ands r1, r2
- movs r2, 0xC0
- lsls r2, 2
- orrs r1, r2
- str r1, [r0, 0x4]
- movs r1, 0x1
- bl ShowPokedexCryScreen
- lsls r0, 24
- cmp r0, 0
- beq _0808FDDC
- ldr r1, _0808FD38 @ =gMain
- ldr r3, _0808FD3C @ =0x0000043c
- adds r1, r3
- b _0808FDA0
- .align 2, 0
-_0808FD24: .4byte 0xffff0000
-_0808FD28: .4byte 0xff00ffff
-_0808FD2C: .4byte 0x00ffffff
-_0808FD30: .4byte 0xffffff00
-_0808FD34: .4byte 0xffff00ff
-_0808FD38: .4byte gMain
-_0808FD3C: .4byte 0x0000043c
-_0808FD40:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _0808FD60 @ =gUnknown_03005CEC
- ldr r0, [r0]
- bl SetVBlankCallback
- ldr r1, _0808FD64 @ =gMain
- ldr r4, _0808FD68 @ =0x0000043c
- adds r1, r4
- b _0808FDA0
- .align 2, 0
-_0808FD60: .4byte gUnknown_03005CEC
-_0808FD64: .4byte gMain
-_0808FD68: .4byte 0x0000043c
-_0808FD6C:
- ldr r0, _0808FDA8 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _0808FDAC @ =REG_BG2CNT
- ldr r3, _0808FDB0 @ =0x00000e02
- adds r0, r3, 0
- strh r0, [r1]
- subs r1, 0x4
- ldr r4, _0808FDB4 @ =0x00001f07
- adds r0, r4, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0xD0
- lsls r3, 4
- adds r0, r3, 0
- strh r0, [r1]
- subs r1, 0xA
- adds r4, 0x39
- adds r0, r4, 0
- strh r0, [r1]
- ldr r0, _0808FDB8 @ =0x0000043c
- adds r1, r2, r0
-_0808FDA0:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0808FDDC
- .align 2, 0
-_0808FDA8: .4byte REG_BLDCNT
-_0808FDAC: .4byte REG_BG2CNT
-_0808FDB0: .4byte 0x00000e02
-_0808FDB4: .4byte 0x00001f07
-_0808FDB8: .4byte 0x0000043c
-_0808FDBC:
- ldr r0, _0808FDE4 @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808FDE8 @ =0x0000064f
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r3, _0808FDEC @ =0x0000043c
- adds r0, r2, r3
- strb r1, [r0]
- ldr r1, _0808FDF0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808FDF4 @ =sub_808FDF8
- str r1, [r0]
-_0808FDDC:
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808FDE4: .4byte gUnknown_0202FFB4
-_0808FDE8: .4byte 0x0000064f
-_0808FDEC: .4byte 0x0000043c
-_0808FDF0: .4byte gTasks
-_0808FDF4: .4byte sub_808FDF8
- thumb_func_end sub_808FA64
-
- thumb_func_start sub_808FDF8
-sub_808FDF8: @ 808FDF8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl sub_8119F88
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- beq _0808FE18
- movs r0, 0x1
- bl sub_8090040
- b _0808FE1E
-_0808FE18:
- movs r0, 0
- bl sub_8090040
-_0808FE1E:
- ldr r1, _0808FE48 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x1
- ands r0, r2
- adds r5, r1, 0
- cmp r0, 0
- beq _0808FE50
- movs r0, 0x1
- bl sub_8090040
- ldr r0, _0808FE4C @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- bl NationalPokedexNumToSpecies
- lsls r0, 16
- lsrs r0, 16
- bl sub_811A050
- b _0808FF9E
- .align 2, 0
-_0808FE48: .4byte gMain
-_0808FE4C: .4byte gUnknown_0202FFBC
-_0808FE50:
- ldr r0, _0808FEA8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0808FE62
- b _0808FF9E
-_0808FE62:
- movs r0, 0x2
- ands r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _0808FEC0
- movs r0, 0x15
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808FEAC @ =gMPlay_BGM
- bl m4aMPlayContinue
- ldr r0, _0808FEB0 @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808FEB4 @ =0x0000064f
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, _0808FEB8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808FEBC @ =sub_808FFBC
- str r1, [r0]
- movs r0, 0x3
- bl PlaySE
- b _0808FF9E
- .align 2, 0
-_0808FEA8: .4byte gPaletteFade
-_0808FEAC: .4byte gMPlay_BGM
-_0808FEB0: .4byte gUnknown_0202FFB4
-_0808FEB4: .4byte 0x0000064f
-_0808FEB8: .4byte gTasks
-_0808FEBC: .4byte sub_808FFBC
-_0808FEC0:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- bne _0808FEDA
- movs r0, 0x80
- lsls r0, 2
- ands r0, r2
- cmp r0, 0
- beq _0808FF2C
- ldr r0, _0808FF14 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0808FF2C
-_0808FEDA:
- movs r0, 0x15
- negs r0, r0
- str r3, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808FF18 @ =gMPlay_BGM
- bl m4aMPlayContinue
- ldr r0, _0808FF1C @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808FF20 @ =0x0000064f
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- ldr r1, _0808FF24 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808FF28 @ =sub_808FFBC
- str r1, [r0]
- movs r0, 0x6D
- bl PlaySE
- b _0808FF9E
- .align 2, 0
-_0808FF14: .4byte gSaveBlock2
-_0808FF18: .4byte gMPlay_BGM
-_0808FF1C: .4byte gUnknown_0202FFB4
-_0808FF20: .4byte 0x0000064f
-_0808FF24: .4byte gTasks
-_0808FF28: .4byte sub_808FFBC
-_0808FF2C:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0808FF48
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0808FF9E
- ldr r0, _0808FF60 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0808FF9E
-_0808FF48:
- ldr r0, _0808FF64 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0808FF68
- movs r0, 0x20
- bl PlaySE
- b _0808FF9E
- .align 2, 0
-_0808FF60: .4byte gSaveBlock2
-_0808FF64: .4byte gUnknown_0202FFBC
-_0808FF68:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808FFA8 @ =gMPlay_BGM
- bl m4aMPlayContinue
- ldr r0, _0808FFAC @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808FFB0 @ =0x0000064f
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- ldr r1, _0808FFB4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808FFB8 @ =sub_808FFBC
- str r1, [r0]
- movs r0, 0x6D
- bl PlaySE
-_0808FF9E:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808FFA8: .4byte gMPlay_BGM
-_0808FFAC: .4byte gUnknown_0202FFB4
-_0808FFB0: .4byte 0x0000064f
-_0808FFB4: .4byte gTasks
-_0808FFB8: .4byte sub_808FFBC
- thumb_func_end sub_808FDF8
-
- thumb_func_start sub_808FFBC
-sub_808FFBC: @ 808FFBC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808FFF8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08090032
- bl DestroyCryMeterNeedleSprite
- ldr r0, _0808FFFC @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _08090000 @ =0x0000064f
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0809000C
- cmp r0, 0x2
- ble _0808FFE8
- cmp r0, 0x3
- beq _08090024
-_0808FFE8:
- ldr r0, _08090004 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08090008 @ =sub_808F2B0
- b _08090030
- .align 2, 0
-_0808FFF8: .4byte gPaletteFade
-_0808FFFC: .4byte gUnknown_0202FFB4
-_08090000: .4byte 0x0000064f
-_08090004: .4byte gTasks
-_08090008: .4byte sub_808F2B0
-_0809000C:
- ldr r0, _0809001C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08090020 @ =sub_808F8D8
- b _08090030
- .align 2, 0
-_0809001C: .4byte gTasks
-_08090020: .4byte sub_808F8D8
-_08090024:
- ldr r0, _08090038 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0809003C @ =sub_8090070
-_08090030:
- str r0, [r1]
-_08090032:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08090038: .4byte gTasks
-_0809003C: .4byte sub_8090070
- thumb_func_end sub_808FFBC
-
- thumb_func_start sub_8090040
-sub_8090040: @ 8090040
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- cmp r0, 0
- beq _08090054
- ldr r1, _08090050 @ =0x00000392
- b _08090056
- .align 2, 0
-_08090050: .4byte 0x00000392
-_08090054:
- ldr r1, _0809006C @ =0x000002af
-_08090056:
- mov r0, sp
- strh r1, [r0]
- mov r0, sp
- movs r1, 0x5D
- movs r2, 0x2
- bl LoadPalette
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0809006C: .4byte 0x000002af
- thumb_func_end sub_8090040
-
- thumb_func_start sub_8090070
-sub_8090070: @ 8090070
- push {r4,r5,lr}
- sub sp, 0x2C
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _08090090 @ =gMain
- ldr r2, _08090094 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0x9
- bhi _080900C4
- lsls r0, 2
- ldr r1, _08090098 @ =_0809009C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08090090: .4byte gMain
-_08090094: .4byte 0x0000043c
-_08090098: .4byte _0809009C
- .align 2, 0
-_0809009C:
- .4byte _080900C4
- .4byte _08090120
- .4byte _08090150
- .4byte _08090174
- .4byte _080901C0
- .4byte _080901D4
- .4byte _08090278
- .4byte _08090318
- .4byte _08090344
- .4byte _08090380
-_080900C4:
- ldr r0, _08090108 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080900D2
- b _080903AE
-_080900D2:
- ldr r4, _0809010C @ =gUnknown_0202FFB4
- ldr r0, [r4]
- ldr r1, _08090110 @ =0x0000064a
- adds r0, r1
- movs r1, 0x7
- strb r1, [r0]
- ldr r1, _08090114 @ =gUnknown_03005CEC
- ldr r0, [r5, 0xC]
- str r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 2
- bl sub_8091060
- ldr r0, [r4]
- ldr r2, _08090118 @ =0x0000064d
- adds r0, r2
- movs r1, 0x3
- strb r1, [r0]
- ldr r0, _0809011C @ =0x0000043c
- adds r1, r5, r0
- movs r0, 0x1
- strb r0, [r1]
- b _080903AE
- .align 2, 0
-_08090108: .4byte gPaletteFade
-_0809010C: .4byte gUnknown_0202FFB4
-_08090110: .4byte 0x0000064a
-_08090114: .4byte gUnknown_03005CEC
-_08090118: .4byte 0x0000064d
-_0809011C: .4byte 0x0000043c
-_08090120:
- ldr r0, _0809013C @ =gPokedexMenu_Gfx
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08090140 @ =gUnknown_0839F988
- ldr r1, _08090144 @ =0x06007000
- bl LZ77UnCompVram
- ldr r1, _08090148 @ =gMain
- ldr r2, _0809014C @ =0x0000043c
- adds r1, r2
- b _08090368
- .align 2, 0
-_0809013C: .4byte gPokedexMenu_Gfx
-_08090140: .4byte gUnknown_0839F988
-_08090144: .4byte 0x06007000
-_08090148: .4byte gMain
-_0809014C: .4byte 0x0000043c
-_08090150:
- movs r0, 0xD
- bl sub_8090540
- movs r0, 0x3
- movs r1, 0xD
- bl sub_8090644
- bl sub_808D640
- ldr r1, _0809016C @ =gMain
- ldr r0, _08090170 @ =0x0000043c
- adds r1, r0
- b _08090368
- .align 2, 0
-_0809016C: .4byte gMain
-_08090170: .4byte 0x0000043c
-_08090174:
- ldr r4, _080901AC @ =gWindowConfig_81E702C
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- add r1, sp, 0x4
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080901B0 @ =gDexText_SizeComparedTo
- add r0, sp, 0x4
- bl StringAppend
- ldr r1, _080901B4 @ =gSaveBlock2
- add r0, sp, 0x4
- bl StringAppend
- add r0, sp, 0x4
- movs r1, 0x3
- movs r2, 0xF
- movs r3, 0xC0
- bl sub_8072BD8
- ldr r1, _080901B8 @ =gMain
- ldr r2, _080901BC @ =0x0000043c
- adds r1, r2
- b _08090368
- .align 2, 0
-_080901AC: .4byte gWindowConfig_81E702C
-_080901B0: .4byte gDexText_SizeComparedTo
-_080901B4: .4byte gSaveBlock2
-_080901B8: .4byte gMain
-_080901BC: .4byte 0x0000043c
-_080901C0:
- bl ResetPaletteFade
- ldr r1, _080901CC @ =gMain
- ldr r0, _080901D0 @ =0x0000043c
- adds r1, r0
- b _08090368
- .align 2, 0
-_080901CC: .4byte gMain
-_080901D0: .4byte 0x0000043c
-_080901D4:
- ldr r0, _0809025C @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- movs r1, 0x98
- movs r2, 0x38
- movs r3, 0
- bl sub_8091A4C
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _08090260 @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4, 0x3]
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x5]
- ldr r3, _08090264 @ =gPokedexEntries
- ldr r0, _08090268 @ =gUnknown_0202FFBC
- ldr r2, [r0]
- ldrh r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x20]
- strh r0, [r4, 0x26]
- ldrh r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x1E]
- str r1, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- ldr r0, _0809026C @ =gUnknown_083B4EC4
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- lsls r1, 4
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _08090270 @ =gMain
- ldr r2, _08090274 @ =0x0000043c
- adds r1, r2
- b _08090368
- .align 2, 0
-_0809025C: .4byte gSaveBlock2
-_08090260: .4byte gSprites
-_08090264: .4byte gPokedexEntries
-_08090268: .4byte gUnknown_0202FFBC
-_0809026C: .4byte gUnknown_083B4EC4
-_08090270: .4byte gMain
-_08090274: .4byte 0x0000043c
-_08090278:
- ldr r5, _08090300 @ =gUnknown_0202FFBC
- ldr r0, [r5]
- ldrh r0, [r0]
- movs r1, 0x58
- movs r2, 0x38
- movs r3, 0x1
- bl sub_80918EC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _08090304 @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4, 0x3]
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x5]
- ldr r3, _08090308 @ =gPokedexEntries
- ldr r2, [r5]
- ldrh r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x1C]
- strh r0, [r4, 0x26]
- ldrh r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x1A]
- str r1, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- ldr r0, _0809030C @ =gUnknown_083B4EC4
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- lsls r1, 4
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _08090310 @ =gMain
- ldr r0, _08090314 @ =0x0000043c
- adds r1, r0
- b _08090368
- .align 2, 0
-_08090300: .4byte gUnknown_0202FFBC
-_08090304: .4byte gSprites
-_08090308: .4byte gPokedexEntries
-_0809030C: .4byte gUnknown_083B4EC4
-_08090310: .4byte gMain
-_08090314: .4byte 0x0000043c
-_08090318:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08090338 @ =gUnknown_03005CEC
- ldr r0, [r0]
- bl SetVBlankCallback
- ldr r1, _0809033C @ =gMain
- ldr r2, _08090340 @ =0x0000043c
- adds r1, r2
- b _08090368
- .align 2, 0
-_08090338: .4byte gUnknown_03005CEC
-_0809033C: .4byte gMain
-_08090340: .4byte 0x0000043c
-_08090344:
- ldr r0, _08090370 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _08090374 @ =REG_BG2CNT
- ldr r2, _08090378 @ =0x00000e03
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xC
- movs r2, 0xF2
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0809037C @ =0x0000043c
- adds r1, r5, r0
-_08090368:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080903AE
- .align 2, 0
-_08090370: .4byte REG_BLDCNT
-_08090374: .4byte REG_BG2CNT
-_08090378: .4byte 0x00000e03
-_0809037C: .4byte 0x0000043c
-_08090380:
- ldr r0, _080903B8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080903AE
- ldr r0, _080903BC @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _080903C0 @ =0x0000064f
- adds r0, r1
- strb r2, [r0]
- ldr r1, _080903C4 @ =0x0000043c
- adds r0, r5, r1
- strb r2, [r0]
- ldr r1, _080903C8 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldr r1, _080903CC @ =sub_80903D0
- str r1, [r0]
-_080903AE:
- add sp, 0x2C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080903B8: .4byte gPaletteFade
-_080903BC: .4byte gUnknown_0202FFB4
-_080903C0: .4byte 0x0000064f
-_080903C4: .4byte 0x0000043c
-_080903C8: .4byte gTasks
-_080903CC: .4byte sub_80903D0
- thumb_func_end sub_8090070
-
thumb_func_start sub_80903D0
sub_80903D0: @ 80903D0
push {r4,r5,lr}
diff --git a/src/pokedex.c b/src/pokedex.c
index bea845d91..51fce03aa 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -60,6 +60,29 @@ struct PokedexView {
u8 unk65E[8];
};
+struct PokedexEntry
+{
+ /*0x00*/ u8 categoryName[12];
+ /*0x0C*/ u16 height; //in decimeters
+ /*0x0E*/ u16 weight; //in hectograms
+ /*0x10*/ u8 *descriptionPage1;
+ /*0x14*/ u8 *descriptionPage2;
+ /*0x18*/ u16 unused;
+ /*0x1A*/ u16 pokemonScale;
+ /*0x1C*/ u16 pokemonOffset;
+ /*0x1E*/ u16 trainerScale;
+ /*0x20*/ u16 trainerOffset;
+}; /*size = 0x24*/
+
+struct CryRelatedStruct
+{
+ u16 unk0;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+};
+
extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 gReservedSpritePaletteCount;
extern struct PokedexView *gUnknown_0202FFB4;
@@ -91,25 +114,17 @@ extern struct PokedexListItem *gUnknown_0202FFBC;
extern IntrCallback gUnknown_03005CEC;
extern u8 gUnknown_08E96BD4[];
extern u8 gUnknown_083A05F8[];
-
-struct PokedexEntry
-{
- /*0x00*/ u8 categoryName[12];
- /*0x0C*/ u16 height; //in decimeters
- /*0x0E*/ u16 weight; //int hectograms
- /*0x10*/ u8 *descriptionPage1;
- /*0x14*/ u8 *descriptionPage2;
- /*0x18*/ u16 unused;
- /*0x1A*/ u16 pokemonScale;
- /*0x1C*/ u16 pokemonOffset;
- /*0x1E*/ u16 trainerScale;
- /*0x20*/ u16 trainerOffset;
-}; /*size = 0x24*/
+extern u8 gUnknown_0839F8A0[];
+extern u8 gUnknown_0839F988[];
+extern u8 gUnknown_03005E98;
+extern u8 gUnknown_083B4EC4[];
extern struct PokedexEntry gPokedexEntries[];
extern u8 gDexText_UnknownPoke[];
extern u8 gDexText_UnknownHeight[];
extern u8 gDexText_UnknownWeight[];
+extern u8 gDexText_CryOf[];
+extern u8 gDexText_SizeComparedTo[];
extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
@@ -180,6 +195,15 @@ void sub_808F8D8(u8 taskId);
void sub_808F8B8(u8 taskId);
void sub_808F888(u8 taskId);
void sub_8090070(u8 taskId);
+void sub_808F9C8(u8 taskId);
+void sub_808FA00(u8 taskId);
+void sub_808FDF8(u8 taskId);
+void sub_808FFBC(u8 taskId);
+void sub_80903D0(u8 taskId);
+void sub_8090040(u8);
+u16 NationalPokedexNumToSpecies(u16);
+u8 sub_8119E3C(struct CryRelatedStruct *, u8);
+u8 ShowPokedexCryScreen(struct CryRelatedStruct *, u8);
void sub_808C02C(void)
{
@@ -2475,3 +2499,329 @@ void sub_808F8B8(u8 taskId)
if(!gPaletteFade.active)
DestroyTask(taskId);
}
+
+void sub_808F8D8(u8 taskId)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ if (!gPaletteFade.active)
+ {
+ gUnknown_0202FFB4->unk64A = 5;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ sub_8091060(0x200);
+ gUnknown_0202FFB4->unk64D = 1;
+ gMain.state = 1;
+ }
+ break;
+ case 1:
+ sub_8090540(0xD);
+ sub_8090644(1, 0xD);
+ sub_808D640();
+ REG_BG1CNT = 0xD00;
+ gMain.state++;
+ break;
+ case 2:
+ ShowPokedexAreaScreen(NationalPokedexNumToSpecies(gUnknown_0202FFBC->a), &gUnknown_0202FFB4->unk64F);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gUnknown_0202FFB4->unk64F = 0;
+ gMain.state = 0;
+ gTasks[taskId].func = sub_808F9C8;
+ break;
+ }
+}
+
+void sub_808F9C8(u8 taskId)
+{
+ if(gUnknown_0202FFB4->unk64F != 0)
+ gTasks[taskId].func = sub_808FA00;
+}
+
+void sub_808FA00(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ switch(gUnknown_0202FFB4->unk64F)
+ {
+ case 1:
+ default:
+ gTasks[taskId].func = sub_808F2B0;
+ break;
+ case 2:
+ gTasks[taskId].func = sub_808FA64;
+ break;
+ }
+ }
+}
+
+void sub_808FA64(u8 taskId)
+{
+ switch(gMain.state)
+ {
+ case 0:
+ default:
+ if(!gPaletteFade.active)
+ {
+ m4aMPlayStop(&gMPlay_BGM);
+ gUnknown_0202FFB4->unk64A = 6;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ sub_8091060(0x200);
+ gUnknown_0202FFB4->unk64D = 2;
+ gMain.state = 1;
+ }
+ break;
+ case 1:
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
+ LZ77UnCompVram(gUnknown_0839F8A0, (void *)(VRAM + 0x7000));
+ gMain.state++;
+ break;
+ case 2:
+ sub_8090540(0xD);
+ sub_8090644(2, 0xD);
+ sub_808D640();
+ DmaClear16(3, (void *)(VRAM + 0xF800), 0x500);
+ gMain.state++;
+ break;
+ case 3:
+ SetUpWindowConfig(&gWindowConfig_81E702C);
+ InitMenuWindow(&gWindowConfig_81E702C);
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 4:
+ MenuPrint(gDexText_CryOf, 10, 4);
+ sub_8091260(gUnknown_0202FFBC->a, 10, 6, 2);
+ gMain.state++;
+ break;
+ case 5:
+ gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->a, 0x30, 0x38, 0);
+ gSprites[gTasks[taskId].data[4]].oam.priority = 0;
+ gUnknown_03005E98 = 0;
+ gMain.state++;
+ break;
+ case 6:
+ {
+ struct CryRelatedStruct sp8;
+
+ sp8.unk0 = 0x4020;
+ sp8.unk2 = 0x1F;
+ sp8.unk3 = 8;
+ sp8.unk5 = 0x1E;
+ sp8.unk4 = 0xC;
+ if(sub_8119E3C(&sp8, 0) != 0)
+ {
+ gMain.state++;
+ gUnknown_03005E98 = 0;
+ }
+ break;
+ }
+ case 7:
+ {
+ struct CryRelatedStruct sp10;
+
+ sp10.unk0 = 0x3000;
+ sp10.unk2 = 0xE;
+ sp10.unk3 = 9;
+ sp10.unk4 = 0x12;
+ sp10.unk5 = 3;
+ if(ShowPokedexCryScreen(&sp10, 1) != 0)
+ {
+ gMain.state++;
+ }
+ break;
+ }
+ case 8:
+ BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gMain.state++;
+ break;
+ case 9:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG2CNT = 0xE02;
+ REG_BG0CNT = 0x1F07;
+ REG_BG1CNT = 0xD00;
+ REG_DISPCNT = 0x1F07 + 0x39;
+ gMain.state++;
+ break;
+ case 10:
+ gUnknown_0202FFB4->unk64F = 0;
+ gMain.state = 0;
+ gTasks[taskId].func = sub_808FDF8;
+ break;
+ }
+}
+
+void sub_808FDF8(u8 taskId)
+{
+ sub_8119F88(0);
+
+ if (IsCryPlaying())
+ sub_8090040(1);
+ else
+ sub_8090040(0);
+
+ if (gMain.newKeys & 1)
+ {
+ sub_8090040(1);
+ sub_811A050(NationalPokedexNumToSpecies(gUnknown_0202FFBC->a));
+ return;
+ }
+ else if (!gPaletteFade.active)
+ {
+ if (gMain.newKeys & 2)
+ {
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ m4aMPlayContinue(&gMPlay_BGM);
+ gUnknown_0202FFB4->unk64F = 1;
+ gTasks[taskId].func = sub_808FFBC;
+ PlaySE(3);
+ }
+ else if ((gMain.newKeys & 0x20) || ((gMain.newKeys & 0x200) && gSaveBlock2.optionsButtonMode == 1))
+ {
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ m4aMPlayContinue(&gMPlay_BGM);
+ gUnknown_0202FFB4->unk64F = 2;
+ gTasks[taskId].func = sub_808FFBC;
+ PlaySE(0x6D);
+ }
+ else if ((gMain.newKeys & 0x10) || ((gMain.newKeys & 0x100) && gSaveBlock2.optionsButtonMode == 1))
+ {
+ if (!gUnknown_0202FFBC->owned)
+ PlaySE(0x20);
+ else
+ {
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ m4aMPlayContinue(&gMPlay_BGM);
+ gUnknown_0202FFB4->unk64F = 3;
+ gTasks[taskId].func = sub_808FFBC;
+ PlaySE(0x6D);
+ }
+ }
+ }
+}
+
+void sub_808FFBC(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ DestroyCryMeterNeedleSprite();
+ switch(gUnknown_0202FFB4->unk64F)
+ {
+ default:
+ case 1:
+ gTasks[taskId].func = sub_808F2B0;
+ break;
+ case 2:
+ gTasks[taskId].func = sub_808F8D8;
+ break;
+ case 3:
+ gTasks[taskId].func = sub_8090070;
+ }
+ }
+}
+
+void sub_8090040(u8 a)
+{
+ u16 unk;
+
+ if(a != 0)
+ unk = 0x392;
+ else
+ unk = 0x2AF;
+ LoadPalette(&unk, 0x5D, 2);
+}
+
+void sub_8090070(u8 taskId)
+{
+ u8 spriteId;
+
+ switch(gMain.state)
+ {
+ default:
+ case 0:
+ if(!gPaletteFade.active)
+ {
+ gUnknown_0202FFB4->unk64A = 7;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ sub_8091060(0x200);
+ gUnknown_0202FFB4->unk64D = 3;
+ gMain.state = 1;
+ }
+ break;
+ case 1:
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
+ LZ77UnCompVram(gUnknown_0839F988, (void *)(VRAM + 0x7000));
+ gMain.state++;
+ break;
+ case 2:
+ sub_8090540(0xD);
+ sub_8090644(3, 0xD);
+ sub_808D640();
+ gMain.state++;
+ break;
+ case 3:
+ {
+ u8 string[40]; //I hope this is the correct size
+
+ SetUpWindowConfig(&gWindowConfig_81E702C);
+ InitMenuWindow(&gWindowConfig_81E702C);
+ string[0] = EOS;
+ StringAppend(string, gDexText_SizeComparedTo);
+ StringAppend(string, gSaveBlock2.playerName);
+ sub_8072BD8(string, 3, 15, 0xC0);
+ gMain.state++;
+ break;
+ }
+ case 4:
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 5:
+ spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0);
+ gSprites[spriteId].oam.affineMode = 1;
+ gSprites[spriteId].oam.matrixNum = 1;
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->a].trainerOffset;
+ SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->a].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->a].trainerScale);
+ LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
+ gMain.state++;
+ break;
+ case 6:
+ spriteId = sub_80918EC(gUnknown_0202FFBC->a, 0x58, 0x38, 1);
+ gSprites[spriteId].oam.affineMode = 1;
+ gSprites[spriteId].oam.matrixNum = 2;
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->a].pokemonOffset;
+ SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->a].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->a].pokemonScale);
+ LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
+ gMain.state++;
+ break;
+ case 7:
+ BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gMain.state++;
+ break;
+ case 8:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG2CNT = 0xE03;
+ REG_DISPCNT = 0x1E40;
+ gMain.state++;
+ break;
+ case 9:
+ if(!gPaletteFade.active)
+ {
+ gUnknown_0202FFB4->unk64F = 0;
+ gMain.state = 0;
+ gTasks[taskId].func = sub_80903D0;
+ }
+ break;
+ }
+}