summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex.s1566
-rw-r--r--baserom-symbol-cache0
-rw-r--r--include/pokedex.h12
-rw-r--r--include/songs.h10
-rw-r--r--src/pokedex.c857
-rw-r--r--src/starter_choose.c2
6 files changed, 744 insertions, 1703 deletions
diff --git a/asm/pokedex.s b/asm/pokedex.s
index 8fd971840..ed0e3fd95 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -6,1572 +6,6 @@
.text
- thumb_func_start sub_8090750
-sub_8090750: @ 8090750
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _08090778 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrh r6, [r0, 0xA]
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x6
- bhi _0809079C
- lsls r0, 2
- ldr r1, _0809077C @ =_08090780
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08090778: .4byte gTasks
-_0809077C: .4byte _08090780
- .align 2, 0
-_08090780:
- .4byte _0809079C
- .4byte _080907E0
- .4byte _0809085C
- .4byte _080908A0
- .4byte _08090960
- .4byte _080909B8
- .4byte _080909F4
-_0809079C:
- ldr r0, _080907D0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080907AA
- b _08090A26
-_080907AA:
- ldr r1, _080907D4 @ =gUnknown_03005CEC
- ldr r0, _080907D8 @ =gMain
- ldr r0, [r0, 0xC]
- str r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 1
- bl sub_8091060
- ldr r1, _080907DC @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x8]
- b _08090A26
- .align 2, 0
-_080907D0: .4byte gPaletteFade
-_080907D4: .4byte gUnknown_03005CEC
-_080907D8: .4byte gMain
-_080907DC: .4byte gTasks
-_080907E0:
- ldr r0, _08090840 @ =gPokedexMenu_Gfx
- ldr r1, _08090844 @ =0x06004000
- bl LZ77UnCompVram
- ldr r0, _08090848 @ =gUnknown_08E96BD4
- ldr r4, _0809084C @ =0x06007800
- adds r1, r4, 0
- bl LZ77UnCompVram
- movs r2, 0
- lsls r5, r7, 2
- mov r12, r5
- movs r0, 0x80
- lsls r0, 6
- adds r6, r0, 0
- ldr r3, _08090850 @ =0x0000027f
-_08090800:
- lsls r0, r2, 1
- adds r0, r4
- ldrh r5, [r0]
- adds r1, r6, r5
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bls _08090800
- ldr r0, _08090854 @ =gTasks
- mov r1, r12
- adds r4, r1, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0xA]
- movs r2, 0xFF
- lsls r2, 2
- movs r1, 0x2
- bl sub_8091738
- bl ResetPaletteFade
- ldr r0, _08090858 @ =gPokedexMenu_Pal + 0x2
- movs r1, 0x21
- movs r2, 0x9E
- bl LoadPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08090A26
- .align 2, 0
-_08090840: .4byte gPokedexMenu_Gfx
-_08090844: .4byte 0x06004000
-_08090848: .4byte gUnknown_08E96BD4
-_0809084C: .4byte 0x06007800
-_08090850: .4byte 0x0000027f
-_08090854: .4byte gTasks
-_08090858: .4byte gPokedexMenu_Pal + 0x2
-_0809085C:
- ldr r4, _0809088C @ =gWindowConfig_81E7064
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r2, _08090890 @ =0x0600c000
- add r1, sp, 0x4
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08090894 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08090898 @ =0x81000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r1, _0809089C @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _080909E0
- .align 2, 0
-_0809088C: .4byte gWindowConfig_81E7064
-_08090890: .4byte 0x0600c000
-_08090894: .4byte 0x040000d4
-_08090898: .4byte 0x81000100
-_0809089C: .4byte gTasks
-_080908A0:
- ldr r0, _080908C8 @ =gDexText_RegisterComplete
- movs r1, 0x2
- movs r2, 0
- movs r3, 0xD0
- bl sub_8072BD8
- bl IsNationalPokedexEnabled
- cmp r0, 0
- bne _080908CC
- adds r0, r6, 0
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xD
- movs r2, 0x3
- bl sub_8091154
- b _080908D6
- .align 2, 0
-_080908C8: .4byte gDexText_RegisterComplete
-_080908CC:
- adds r0, r6, 0
- movs r1, 0xD
- movs r2, 0x3
- bl sub_8091154
-_080908D6:
- adds r0, r6, 0
- movs r1, 0x10
- movs r2, 0x3
- bl sub_80911C8
- ldr r0, _0809094C @ =gDexText_UnknownPoke
- movs r1, 0xB
- movs r2, 0x5
- bl MenuPrint
- ldr r0, _08090950 @ =gDexText_UnknownHeight
- movs r1, 0x10
- movs r2, 0x7
- bl MenuPrint
- ldr r0, _08090954 @ =gDexText_UnknownWeight
- movs r1, 0x10
- movs r2, 0x9
- bl MenuPrint
- lsls r4, r6, 3
- adds r4, r6
- lsls r4, 2
- ldr r6, _08090958 @ =gPokedexEntries
- adds r5, r4, r6
- adds r0, r5, 0
- movs r1, 0xB
- movs r2, 0x5
- bl sub_8091304
- ldrh r0, [r5, 0xC]
- movs r1, 0x10
- movs r2, 0x7
- bl sub_8091458
- ldrh r0, [r5, 0xE]
- movs r1, 0x10
- movs r2, 0x9
- bl sub_8091564
- adds r6, 0x10
- adds r4, r6
- ldr r0, [r4]
- movs r1, 0x2
- movs r2, 0xD
- bl MenuPrint
- movs r1, 0xFF
- lsls r1, 2
- movs r0, 0xE
- bl sub_80917CC
- ldr r1, _0809095C @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _080909E0
- .align 2, 0
-_0809094C: .4byte gDexText_UnknownPoke
-_08090950: .4byte gDexText_UnknownHeight
-_08090954: .4byte gDexText_UnknownWeight
-_08090958: .4byte gPokedexEntries
-_0809095C: .4byte gTasks
-_08090960:
- adds r0, r6, 0
- movs r1, 0x30
- movs r2, 0x38
- movs r3, 0
- bl sub_80918EC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080909AC @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080909B0 @ =gUnknown_03005CEC
- ldr r0, [r0]
- bl SetVBlankCallback
- ldr r1, _080909B4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0xE]
- b _080909E0
- .align 2, 0
-_080909AC: .4byte gSprites
-_080909B0: .4byte gUnknown_03005CEC
-_080909B4: .4byte gTasks
-_080909B8:
- ldr r0, _080909E8 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _080909EC @ =REG_BG3CNT
- ldr r2, _080909F0 @ =0x00000f07
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xE
- movs r5, 0xE2
- lsls r5, 5
- adds r0, r5, 0
- strh r0, [r1]
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r4
-_080909E0:
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _08090A26
- .align 2, 0
-_080909E8: .4byte REG_BLDCNT
-_080909EC: .4byte REG_BG3CNT
-_080909F0: .4byte 0x00000f07
-_080909F4:
- ldr r0, _08090A30 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08090A26
- adds r0, r6, 0
- bl NationalPokedexNumToSpecies
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl PlayCry1
- ldr r1, _08090A34 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0xC]
- strh r5, [r0, 0x10]
- ldr r1, _08090A38 @ =sub_8090A3C
- str r1, [r0]
-_08090A26:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08090A30: .4byte gPaletteFade
-_08090A34: .4byte gTasks
-_08090A38: .4byte sub_8090A3C
- thumb_func_end sub_8090750
-
- thumb_func_start sub_8090A3C
-sub_8090A3C: @ 8090A3C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08090A8C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _08090AA4
- ldr r0, _08090A90 @ =0x0000fffc
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r3, _08090A94 @ =gSprites
- ldr r0, _08090A98 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r0, 0xE
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r3, 0x1C
- adds r0, r3
- ldr r2, _08090A9C @ =sub_8090C28
- str r2, [r0]
- ldr r0, _08090AA0 @ =sub_8090B8C
- str r0, [r1]
- b _08090B7A
- .align 2, 0
-_08090A8C: .4byte gMain
-_08090A90: .4byte 0x0000fffc
-_08090A94: .4byte gSprites
-_08090A98: .4byte gTasks
-_08090A9C: .4byte sub_8090C28
-_08090AA0: .4byte sub_8090B8C
-_08090AA4:
- movs r0, 0x1
- mov r8, r0
- ands r0, r1
- lsls r7, r6, 2
- cmp r0, 0
- beq _08090B44
- ldr r0, _08090B00 @ =gTasks
- adds r1, r7, r6
- lsls r1, 3
- adds r5, r1, r0
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08090B0C
- ldrh r4, [r5, 0xA]
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _08090B04 @ =gPokedexEntries
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, 0x14
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xD
- bl MenuPrint
- ldr r1, _08090B08 @ =0x06007aca
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- adds r1, 0x40
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- mov r0, r8
- strh r0, [r5, 0x10]
- movs r0, 0x15
- bl PlaySE
- b _08090B44
- .align 2, 0
-_08090B00: .4byte gTasks
-_08090B04: .4byte gPokedexEntries
-_08090B08: .4byte 0x06007aca
-_08090B0C:
- ldr r0, _08090B34 @ =0x0000fffc
- str r2, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r2, _08090B38 @ =gSprites
- movs r0, 0xE
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _08090B3C @ =sub_8090C28
- str r1, [r0]
- ldr r0, _08090B40 @ =sub_8090B8C
- str r0, [r5]
- b _08090B7A
- .align 2, 0
-_08090B34: .4byte 0x0000fffc
-_08090B38: .4byte gSprites
-_08090B3C: .4byte sub_8090C28
-_08090B40: .4byte sub_8090B8C
-_08090B44:
- ldr r1, _08090B68 @ =gTasks
- adds r0, r7, r6
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0xC]
- adds r1, 0x1
- strh r1, [r0, 0xC]
- movs r0, 0x10
- ands r1, r0
- cmp r1, 0
- beq _08090B70
- ldr r0, _08090B6C @ =gPokedexMenu_Pal + 0x2
- movs r1, 0x51
- movs r2, 0xE
- bl LoadPalette
- b _08090B7A
- .align 2, 0
-_08090B68: .4byte gTasks
-_08090B6C: .4byte gPokedexMenu_Pal + 0x2
-_08090B70:
- ldr r0, _08090B88 @ =gPokedexMenu2_Pal + 0x2
- movs r1, 0x51
- movs r2, 0xE
- bl LoadPalette
-_08090B7A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08090B88: .4byte gPokedexMenu2_Pal + 0x2
- thumb_func_end sub_8090A3C
-
- thumb_func_start sub_8090B8C
-sub_8090B8C: @ 8090B8C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08090C14 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08090C0C
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xCA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08090C18 @ =gUnknown_08D00524
- ldr r1, _08090C1C @ =0x0600c000
- movs r2, 0x80
- lsls r2, 4
- bl CpuSet
- bl sub_800D74C
- ldr r0, _08090C20 @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0xA]
- bl NationalPokedexNumToSpecies
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4, 0x22]
- lsls r1, 16
- ldrh r2, [r4, 0x20]
- orrs r1, r2
- ldrh r2, [r4, 0x26]
- lsls r2, 16
- ldrh r3, [r4, 0x24]
- orrs r2, r3
- ldr r5, _08090C24 @ =gSprites
- movs r3, 0xE
- ldrsh r4, [r4, r3]
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- adds r3, r5
- ldrb r4, [r3, 0x5]
- lsrs r4, 4
- bl species_and_otid_get_pal
- lsls r4, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- orrs r4, r1
- adds r1, r4, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r6, 0
- bl DestroyTask
-_08090C0C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08090C14: .4byte gPaletteFade
-_08090C18: .4byte gUnknown_08D00524
-_08090C1C: .4byte 0x0600c000
-_08090C20: .4byte gTasks
-_08090C24: .4byte gSprites
- thumb_func_end sub_8090B8C
-
- thumb_func_start sub_8090C28
-sub_8090C28: @ 8090C28
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x20]
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- cmp r0, 0x77
- bgt _08090C3A
- adds r0, r2, 0x2
- strh r0, [r1, 0x20]
-_08090C3A:
- ldrh r2, [r1, 0x20]
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- cmp r0, 0x78
- ble _08090C48
- subs r0, r2, 0x2
- strh r0, [r1, 0x20]
-_08090C48:
- ldrh r2, [r1, 0x22]
- movs r3, 0x22
- ldrsh r0, [r1, r3]
- cmp r0, 0x4F
- bgt _08090C56
- adds r0, r2, 0x1
- strh r0, [r1, 0x22]
-_08090C56:
- ldrh r2, [r1, 0x22]
- movs r3, 0x22
- ldrsh r0, [r1, r3]
- cmp r0, 0x50
- ble _08090C64
- subs r0, r2, 0x1
- strh r0, [r1, 0x22]
-_08090C64:
- pop {r0}
- bx r0
- thumb_func_end sub_8090C28
-
- thumb_func_start sub_8090C68
-sub_8090C68: @ 8090C68
- push {r4,r5,lr}
- ldr r4, _08090CD0 @ =gUnknown_0202FFBC
- ldr r0, [r4]
- ldrb r1, [r0, 0x2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08090D2A
- ldr r5, _08090CD4 @ =gPokedexView
- ldr r0, [r5]
- ldr r1, _08090CD8 @ =0x0000064e
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08090CE4
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r2, _08090CDC @ =gPokedexEntries
- ldr r0, [r4]
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, 0x14
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xD
- bl MenuPrint
- ldr r0, [r5]
- ldr r1, _08090CD8 @ =0x0000064e
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, _08090CE0 @ =0x06007aca
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- adds r1, 0x40
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x15
- bl PlaySE
- b _08090D2A
- .align 2, 0
-_08090CD0: .4byte gUnknown_0202FFBC
-_08090CD4: .4byte gPokedexView
-_08090CD8: .4byte 0x0000064e
-_08090CDC: .4byte gPokedexEntries
-_08090CE0: .4byte 0x06007aca
-_08090CE4:
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r2, _08090D30 @ =gPokedexEntries
- ldr r0, [r4]
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, 0x10
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xD
- bl MenuPrint
- ldr r0, [r5]
- ldr r1, _08090D34 @ =0x0000064e
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r1, _08090D38 @ =0x06007aca
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r1, 0x40
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- movs r0, 0x15
- bl PlaySE
-_08090D2A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08090D30: .4byte gPokedexEntries
-_08090D34: .4byte 0x0000064e
-_08090D38: .4byte 0x06007aca
- thumb_func_end sub_8090C68
-
- thumb_func_start GetPokemonCategory
-GetPokemonCategory: @ 8090D3C
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08090D50 @ =gPokedexEntries
- adds r0, r1
- bx lr
- .align 2, 0
-_08090D50: .4byte gPokedexEntries
- thumb_func_end GetPokemonCategory
-
- thumb_func_start GetPokedexHeightWeight
-GetPokedexHeightWeight: @ 8090D54
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _08090D6A
- cmp r1, 0x1
- beq _08090D7C
- movs r0, 0x1
- b _08090D88
-_08090D6A:
- ldr r0, _08090D78 @ =gPokedexEntries
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0xC]
- b _08090D88
- .align 2, 0
-_08090D78: .4byte gPokedexEntries
-_08090D7C:
- ldr r0, _08090D8C @ =gPokedexEntries
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0xE]
-_08090D88:
- pop {r1}
- bx r1
- .align 2, 0
-_08090D8C: .4byte gPokedexEntries
- thumb_func_end GetPokedexHeightWeight
-
- thumb_func_start sub_8090D90
-sub_8090D90: @ 8090D90
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r2, r1, 24
- adds r3, r2, 0
- ldr r1, _08090DC4 @ =0xffff0000
- adds r0, r1
- lsrs r1, r0, 16
- lsrs r0, 19
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x7
- ands r1, r0
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r1
- lsrs r5, r0, 24
- movs r6, 0
- cmp r2, 0x1
- beq _08090E24
- cmp r2, 0x1
- bgt _08090DC8
- cmp r2, 0
- beq _08090DD4
- b _08090F0A
- .align 2, 0
-_08090DC4: .4byte 0xffff0000
-_08090DC8:
- cmp r3, 0x2
- beq _08090EBC
- cmp r3, 0x3
- bne _08090DD2
- b _08090EFC
-_08090DD2:
- b _08090F0A
-_08090DD4:
- ldr r1, _08090E14 @ =gSaveBlock2
- adds r0, r1, 0
- adds r0, 0x5C
- adds r0, r4, r0
- ldrb r2, [r0]
- ands r2, r5
- adds r7, r1, 0
- cmp r2, 0
- bne _08090DE8
- b _08090F0A
-_08090DE8:
- ldr r0, _08090E18 @ =gSaveBlock1
- ldr r3, _08090E1C @ =0x00000938
- adds r1, r0, r3
- adds r1, r4, r1
- ldrb r1, [r1]
- ands r1, r5
- adds r6, r0, 0
- cmp r2, r1
- bne _08090E08
- ldr r1, _08090E20 @ =0x00003a8c
- adds r0, r6, r1
- adds r0, r4, r0
- ldrb r0, [r0]
- ands r0, r5
- cmp r2, r0
- beq _08090E62
-_08090E08:
- adds r1, r7, 0
- adds r1, 0x5C
- adds r1, r4, r1
- mvns r3, r5
- b _08090E8E
- .align 2, 0
-_08090E14: .4byte gSaveBlock2
-_08090E18: .4byte gSaveBlock1
-_08090E1C: .4byte 0x00000938
-_08090E20: .4byte 0x00003a8c
-_08090E24:
- ldr r1, _08090E68 @ =gSaveBlock2
- adds r0, r1, 0
- adds r0, 0x28
- adds r0, r4, r0
- ldrb r2, [r0]
- ands r2, r5
- adds r7, r1, 0
- cmp r2, 0
- beq _08090F0A
- adds r0, r7, 0
- adds r0, 0x5C
- adds r0, r4, r0
- ldrb r0, [r0]
- ands r0, r5
- ldr r6, _08090E6C @ =gSaveBlock1
- cmp r2, r0
- bne _08090E78
- ldr r3, _08090E70 @ =0x00000938
- adds r0, r6, r3
- adds r0, r4, r0
- ldrb r0, [r0]
- ands r0, r5
- cmp r2, r0
- bne _08090E78
- ldr r1, _08090E74 @ =0x00003a8c
- adds r0, r6, r1
- adds r0, r4, r0
- ldrb r0, [r0]
- ands r0, r5
- cmp r2, r0
- bne _08090E78
-_08090E62:
- movs r6, 0x1
- b _08090F0A
- .align 2, 0
-_08090E68: .4byte gSaveBlock2
-_08090E6C: .4byte gSaveBlock1
-_08090E70: .4byte 0x00000938
-_08090E74: .4byte 0x00003a8c
-_08090E78:
- adds r1, r7, 0
- adds r1, 0x28
- adds r1, r4, r1
- mvns r3, r5
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- adds r1, r7, 0
- adds r1, 0x5C
- adds r1, r4, r1
-_08090E8E:
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldr r0, _08090EB4 @ =0x00000938
- adds r1, r6, r0
- adds r1, r4, r1
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldr r1, _08090EB8 @ =0x00003a8c
- adds r0, r6, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ands r3, r1
- strb r3, [r0]
- movs r6, 0
- b _08090F0A
- .align 2, 0
-_08090EB4: .4byte 0x00000938
-_08090EB8: .4byte 0x00003a8c
-_08090EBC:
- ldr r1, _08090EEC @ =gSaveBlock2
- adds r1, 0x5C
- adds r1, r4, r1
- ldrb r2, [r1]
- adds r0, r5, 0
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _08090EF0 @ =gSaveBlock1
- ldr r3, _08090EF4 @ =0x00000938
- adds r2, r1, r3
- adds r2, r4, r2
- ldrb r3, [r2]
- adds r0, r5, 0
- orrs r0, r3
- strb r0, [r2]
- ldr r0, _08090EF8 @ =0x00003a8c
- adds r1, r0
- adds r1, r4, r1
- ldrb r2, [r1]
- adds r0, r5, 0
- orrs r0, r2
- strb r0, [r1]
- b _08090F0A
- .align 2, 0
-_08090EEC: .4byte gSaveBlock2
-_08090EF0: .4byte gSaveBlock1
-_08090EF4: .4byte 0x00000938
-_08090EF8: .4byte 0x00003a8c
-_08090EFC:
- ldr r0, _08090F14 @ =gSaveBlock2
- adds r0, 0x28
- adds r0, r4, r0
- ldrb r2, [r0]
- adds r1, r5, 0
- orrs r1, r2
- strb r1, [r0]
-_08090F0A:
- adds r0, r6, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08090F14: .4byte gSaveBlock2
- thumb_func_end sub_8090D90
-
- thumb_func_start GetNationalPokedexCount
-GetNationalPokedexCount: @ 8090F18
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- movs r0, 0
- ldr r7, _08090F30 @ =0x00000181
-_08090F24:
- cmp r6, 0
- beq _08090F34
- cmp r6, 0x1
- beq _08090F3E
- adds r4, r0, 0x1
- b _08090F56
- .align 2, 0
-_08090F30: .4byte 0x00000181
-_08090F34:
- adds r4, r0, 0x1
- lsls r0, r4, 16
- lsrs r0, 16
- movs r1, 0
- b _08090F46
-_08090F3E:
- adds r4, r0, 0x1
- lsls r0, r4, 16
- lsrs r0, 16
- movs r1, 0x1
-_08090F46:
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _08090F56
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08090F56:
- lsls r0, r4, 16
- lsrs r0, 16
- cmp r0, r7
- bls _08090F24
- adds r0, r5, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end GetNationalPokedexCount
-
- thumb_func_start GetHoennPokedexCount
-GetHoennPokedexCount: @ 8090F68
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- movs r0, 0
-_08090F72:
- cmp r6, 0
- beq _08090F7E
- cmp r6, 0x1
- beq _08090F90
- adds r4, r0, 0x1
- b _08090FB0
-_08090F7E:
- adds r4, r0, 0x1
- lsls r0, r4, 16
- lsrs r0, 16
- bl HoennToNationalOrder
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- b _08090FA0
-_08090F90:
- adds r4, r0, 0x1
- lsls r0, r4, 16
- lsrs r0, 16
- bl HoennToNationalOrder
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
-_08090FA0:
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _08090FB0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08090FB0:
- lsls r0, r4, 16
- lsrs r0, 16
- cmp r0, 0xC9
- bls _08090F72
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetHoennPokedexCount
-
- thumb_func_start sub_8090FC0
-sub_8090FC0: @ 8090FC0
- push {r4,lr}
- movs r0, 0
-_08090FC4:
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl HoennToNationalOrder
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- bne _08090FE4
- movs r0, 0
- b _08090FEC
-_08090FE4:
- adds r0, r4, 0
- cmp r0, 0xC7
- bls _08090FC4
- movs r0, 0x1
-_08090FEC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8090FC0
-
- thumb_func_start sub_8090FF4
-sub_8090FF4: @ 8090FF4
- push {r4,r5,lr}
- movs r0, 0
-_08090FF8:
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _08091046
- adds r0, r4, 0
- cmp r0, 0x95
- bls _08090FF8
- movs r0, 0x98
-_08091014:
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _08091046
- adds r0, r4, 0
- cmp r0, 0xF9
- bls _08091014
- movs r0, 0xFC
- ldr r5, _0809104C @ =0x0000017f
-_08091032:
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- bne _08091050
-_08091046:
- movs r0, 0
- b _08091058
- .align 2, 0
-_0809104C: .4byte 0x0000017f
-_08091050:
- adds r0, r4, 0
- cmp r0, r5
- bls _08091032
- movs r0, 0x1
-_08091058:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8090FF4
-
- thumb_func_start sub_8091060
-sub_8091060: @ 8091060
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r5, r4, 0
- movs r0, 0x80
- lsls r0, 1
- ands r0, r4
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _0809108E
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _0809112C @ =0x0000feff
- ands r0, r1
- strh r0, [r2]
- ldr r0, _08091130 @ =REG_BG0CNT
- strh r3, [r0]
- adds r0, 0x8
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
-_0809108E:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r4
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _080910B4
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _08091134 @ =0x0000fdff
- ands r0, r1
- strh r0, [r2]
- ldr r0, _08091138 @ =REG_BG1CNT
- strh r3, [r0]
- adds r0, 0xA
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
-_080910B4:
- movs r0, 0x80
- lsls r0, 3
- ands r0, r4
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _080910DA
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _0809113C @ =0x0000fbff
- ands r0, r1
- strh r0, [r2]
- ldr r0, _08091140 @ =REG_BG2CNT
- strh r3, [r0]
- adds r0, 0xC
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
-_080910DA:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r4
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _08091100
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _08091144 @ =0x0000f7ff
- ands r0, r1
- strh r0, [r2]
- ldr r0, _08091148 @ =REG_BG3CNT
- strh r3, [r0]
- adds r0, 0xE
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
-_08091100:
- movs r0, 0x80
- lsls r0, 5
- ands r5, r0
- cmp r5, 0
- bne _08091124
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _0809114C @ =0x0000efff
- ands r0, r1
- strh r0, [r2]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _08091150 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
-_08091124:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809112C: .4byte 0x0000feff
-_08091130: .4byte REG_BG0CNT
-_08091134: .4byte 0x0000fdff
-_08091138: .4byte REG_BG1CNT
-_0809113C: .4byte 0x0000fbff
-_08091140: .4byte REG_BG2CNT
-_08091144: .4byte 0x0000f7ff
-_08091148: .4byte REG_BG3CNT
-_0809114C: .4byte 0x0000efff
-_08091150: .4byte gReservedSpritePaletteCount
- thumb_func_end sub_8091060
-
- thumb_func_start sub_8091154
-sub_8091154: @ 8091154
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r4, 16
- lsrs r4, 16
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r5, sp
- adds r0, r4, 0
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5]
- mov r5, sp
- adds r0, r4, 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, 0x1]
- mov r5, sp
- adds r0, r4, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x2]
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- mov r0, sp
- adds r1, r6, 0
- mov r2, r8
- bl MenuPrint
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8091154
-
- thumb_func_start sub_80911C8
-sub_80911C8: @ 80911C8
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r4, 0
- movs r2, 0xFF
-_080911DC:
- mov r1, sp
- adds r0, r1, r4
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xA
- bls _080911DC
- adds r0, r3, 0
- bl NationalPokedexNumToSpecies
- adds r3, r0, 0
- cmp r3, 0
- beq _08091238
- movs r4, 0
- ldr r2, _08091234 @ =gSpeciesNames
- movs r0, 0xB
- adds r1, r3, 0
- muls r1, r0
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0809124C
- adds r3, r2, 0
- adds r2, r1, 0
-_08091212:
- mov r0, sp
- adds r1, r0, r4
- adds r0, r4, r2
- adds r0, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, r2
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0809124C
- cmp r4, 0x9
- bls _08091212
- b _0809124C
- .align 2, 0
-_08091234: .4byte gSpeciesNames
-_08091238:
- movs r4, 0
- movs r1, 0xAE
-_0809123C:
- mov r2, sp
- adds r0, r2, r4
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _0809123C
-_0809124C:
- mov r0, sp
- adds r1, r6, 0
- adds r2, r5, 0
- bl MenuPrint
- adds r0, r4, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80911C8
-
- thumb_func_start sub_8091260
-sub_8091260: @ 8091260
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- adds r4, r3, 0
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080912CC @ =gUnknown_083B5558
- mov r0, sp
- bl StringCopy
- adds r6, r0, 0
- mov r0, sp
- strb r4, [r0, 0x2]
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- adds r5, r0, 0
- cmp r5, 0
- beq _080912D4
- movs r4, 0
- ldr r2, _080912D0 @ =gSpeciesNames
- movs r0, 0xB
- adds r1, r5, 0
- muls r1, r0
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080912E6
- adds r3, r2, 0
- adds r2, r1, 0
-_080912AC:
- adds r1, r6, r4
- adds r0, r4, r2
- adds r0, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, r2
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080912E6
- cmp r4, 0x9
- bls _080912AC
- b _080912E6
- .align 2, 0
-_080912CC: .4byte gUnknown_083B5558
-_080912D0: .4byte gSpeciesNames
-_080912D4:
- movs r4, 0
- movs r1, 0xAE
-_080912D8:
- adds r0, r6, r4
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080912D8
-_080912E6:
- adds r1, r6, r4
- movs r0, 0xFF
- strb r0, [r1]
- mov r0, sp
- mov r1, r8
- adds r2, r7, 0
- bl MenuPrint
- adds r0, r4, 0
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8091260
-
- thumb_func_start sub_8091304
-sub_8091304: @ 8091304
- push {r4-r7,lr}
- sub sp, 0x20
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r12, r1
- lsls r2, 24
- lsrs r7, r2, 24
- movs r4, 0
- ldrb r0, [r3]
- ldr r6, _08091340 @ =gDexText_UnknownPoke
- cmp r0, 0xFF
- beq _0809133A
-_0809131E:
- mov r0, sp
- adds r1, r0, r4
- adds r0, r3, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r3, r4
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0809133A
- cmp r4, 0xA
- bls _0809131E
-_0809133A:
- movs r3, 0
- ldrb r0, [r6]
- b _0809134E
- .align 2, 0
-_08091340: .4byte gDexText_UnknownPoke
-_08091344:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r3, r6
- ldrb r0, [r0]
-_0809134E:
- cmp r0, 0xAC
- beq _08091344
- cmp r0, 0
- beq _08091344
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r3, r6
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08091388
- adds r5, r6, 0
-_08091366:
- adds r1, r4, 0
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, sp
- adds r2, r0, r1
- adds r1, r3, 0
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r1, r5
- ldrb r0, [r1]
- strb r0, [r2]
- adds r0, r3, r5
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08091366
-_08091388:
- mov r0, sp
- adds r1, r0, r4
- movs r0, 0xFF
- strb r0, [r1]
- mov r0, sp
- mov r1, r12
- adds r2, r7, 0
- adds r3, r6, 0
- bl sub_8072B80
- add sp, 0x20
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8091304
-
thumb_func_start unref_sub_80913A4
unref_sub_80913A4: @ 80913A4
push {r4-r7,lr}
diff --git a/baserom-symbol-cache b/baserom-symbol-cache
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/baserom-symbol-cache
diff --git a/include/pokedex.h b/include/pokedex.h
index 61597981b..d046fbcd4 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -45,7 +45,7 @@ struct PokedexView
u8 unk64B;
u8 unk64C_1:1;
u8 selectedScreen;
- u8 unk64E;
+ u8 unk64E; // description page
u8 unk64F;
u8 menuIsOpen; //menuIsOpen
u8 unk651;
@@ -133,7 +133,7 @@ void sub_8090750(u8);
void sub_8090A3C(u8);
void sub_8090C68(void);
-u8 *GetPokemonCategory(u16);
+const u8 *GetPokemonCategory(u16);
s8 sub_8090D90(u16, u8);
u16 GetNationalPokedexCount(u8);
@@ -141,10 +141,10 @@ u16 GetHoennPokedexCount(u8);
bool8 sub_8090FC0(void);
u16 sub_8090FF4(void);
void sub_8091060(u16);
-void sub_8091154(u16 order, int i, int i1);
-void sub_80911C8(u16 num, int i, int i1);
-void sub_8091260(u16 num, int i, int i1, int i2);
-void sub_8091304(u8 name[12], int i, int i1);
+void sub_8091154(u16 order, u8, u8);
+u8 sub_80911C8(u16 num, u8, u8);
+u8 sub_8091260(u16 num, u8, u8, u8);
+void sub_8091304(u8 *name, u8, u8);
void sub_8091458(u16 height, int i, int i1);
void sub_8091564(u16 weight, int i, int i1);
diff --git a/include/songs.h b/include/songs.h
index d7829479f..9fd4bb687 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -20,11 +20,11 @@ enum
/*0x0E*/ SE_KOUKA_H,
/*0x0F*/ SE_BOWA2,
/*0x10*/ SE_POKE_DEAD,
- SE_NIGERU,
- SE_JIDO_DOA,
- SE_NAMINORI,
- SE_BAN,
- SE_PIN,
+ /*0x11*/ SE_NIGERU,
+ /*0x12*/ SE_JIDO_DOA,
+ /*0x13*/ SE_NAMINORI,
+ /*0x14*/ SE_BAN,
+ /*0x15*/ SE_PIN,
SE_BOO,
SE_BOWA,
SE_JYUNI,
diff --git a/src/pokedex.c b/src/pokedex.c
index 97bac3390..ec13edac4 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -2,6 +2,7 @@
#include "gba/m4a_internal.h"
#include "pokedex.h"
#include "asm.h"
+#include "data2.h"
#include "decompress.h"
#include "event_data.h"
#include "m4a.h"
@@ -58,7 +59,9 @@ extern u8 gReservedSpritePaletteCount;
extern struct PokedexView *gPokedexView;
extern u16 gUnknown_0202FFB8;
extern u8 gUnknown_0202FFBA;
+extern struct PokedexListItem *gUnknown_0202FFBC;
extern u8 gUnknown_03005CE8;
+extern IntrCallback gUnknown_03005CEC;
extern u8 gPokedexMenu_Gfx[];
extern u8 gUnknown_08E96738[];
extern u8 gUnknown_08E9C6DC[];
@@ -68,7 +71,8 @@ extern struct SpriteSheet gUnknown_083A05CC;
extern struct SpritePalette gUnknown_083A05DC[];
extern u8 gUnknown_0839FA7C[];
extern u8 gUnknown_0839F67C[];
-extern u8 gPokedexMenu_Pal[];
+extern u16 gPokedexMenu_Pal[];
+extern u16 gPokedexMenu2_Pal[];
extern u8 gUnknown_0839F73C[];
extern u8 gUnknown_083A05EC[];
extern u8 gUnknown_083A05F1[];
@@ -79,8 +83,8 @@ extern struct SpriteTemplate gSpriteTemplate_83A056C;
extern struct SpriteTemplate gSpriteTemplate_83A0584;
extern struct SpriteTemplate gSpriteTemplate_83A059C;
extern struct SpriteTemplate gSpriteTemplate_83A05B4;
-extern struct PokedexListItem *gUnknown_0202FFBC;
-extern IntrCallback gUnknown_03005CEC;
+extern u8 gUnknown_083B5558[];
+extern u8 gUnknown_08D00524[];
extern u8 gUnknown_08E96BD4[];
extern u8 gUnknown_083A05F8[];
extern u8 gUnknown_0839F8A0[];
@@ -92,6 +96,8 @@ extern u8 gUnknown_08E96B58[];
extern struct PokedexEntry gPokedexEntries[];
+extern void sub_800D74C();
+extern const u16 *species_and_otid_get_pal(u16, u32, u32);
extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
extern void remove_some_task(void);
@@ -104,6 +110,8 @@ extern u16 gPokedexOrder_Alphabetical[];
extern u16 gPokedexOrder_Weight[];
extern u16 gPokedexOrder_Height[];
+void sub_8090B8C(u8);
+void sub_8090C28(struct Sprite *);
u16 NationalPokedexNumToSpecies(u16);
// asm/pokedex_area_screen
@@ -806,7 +814,7 @@ void sub_808D640(void)
if (gPokedexView->unk64C_1)
LoadPalette(gUnknown_0839F67C + 0x2, 1, 0xBE);
else if (!IsNationalPokedexEnabled())
- LoadPalette(gPokedexMenu_Pal + 0x2, 1, 0xBE);
+ LoadPalette(gPokedexMenu_Pal + 1, 1, 0xBE);
else
LoadPalette(gUnknown_0839F73C + 0x2, 1, 0xBE);
}
@@ -1084,126 +1092,29 @@ void sub_808DF88(u16 a, u8 b, u8 c, u16 d)
*(u16 *)(VRAM + 0x40 + d * 0x800 + c * 0x40 + b * 2) = unk[1];
}
-#ifdef NONMATCHING
-//FixMe
-u8 sub_808DFE4(u16 a, u8 b, u8 c)
+u8 sub_808DFE4(u16 num, u8 b, u8 c)
{
u8 text[10];
u8 i;
- u32 species;
for (i = 0; i < 10; i++)
text[i] = 0;
text[i] = EOS;
- species = NationalPokedexNumToSpecies(a);
- if (species)
- {
- for (i = 0; gSpeciesNames[species][i] != EOS && i < 10; i++)
- text[i] = gSpeciesNames[species][i];
- }
- else
+ num = NationalPokedexNumToSpecies(num);
+ switch (num)
{
+ default:
+ for (i = 0; gSpeciesNames[num][i] != EOS && i < 10; i++)
+ text[i] = gSpeciesNames[num][i];
+ break;
+ case 0:
for (i = 0; i < 10; i++)
text[i] = 0xAE;
+ break;
}
MenuPrint_PixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0);
+ return i;
}
-#else
-__attribute__((naked))
-u8 sub_808DFE4(u16 a, u8 b, u8 c)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0xC\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- lsls r1, 24\n\
- lsrs r5, r1, 24\n\
- lsls r2, 24\n\
- lsrs r6, r2, 24\n\
- movs r4, 0\n\
- movs r1, 0\n\
-_0808DFF8:\n\
- mov r2, sp\n\
- adds r0, r2, r4\n\
- strb r1, [r0]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x9\n\
- bls _0808DFF8\n\
- adds r0, r2, r4\n\
- movs r1, 0xFF\n\
- strb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl NationalPokedexNumToSpecies\n\
- adds r3, r0, 0\n\
- cmp r3, 0\n\
- beq _0808E058\n\
- movs r4, 0\n\
- ldr r2, _0808E054\n\
- movs r0, 0xB\n\
- adds r1, r3, 0\n\
- muls r1, r0\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- subs r5, 0x11\n\
- lsls r6, 19\n\
- cmp r0, 0xFF\n\
- beq _0808E070\n\
- adds r3, r1, 0\n\
-_0808E032:\n\
- mov r0, sp\n\
- adds r1, r0, r4\n\
- adds r0, r4, r3\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- adds r0, r4, r3\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xFF\n\
- beq _0808E070\n\
- cmp r4, 0x9\n\
- bls _0808E032\n\
- b _0808E070\n\
- .align 2, 0\n\
-_0808E054: .4byte gSpeciesNames\n\
-_0808E058:\n\
- movs r4, 0\n\
- subs r5, 0x11\n\
- lsls r6, 19\n\
- movs r1, 0xAE\n\
-_0808E060:\n\
- mov r2, sp\n\
- adds r0, r2, r4\n\
- strb r1, [r0]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x9\n\
- bls _0808E060\n\
-_0808E070:\n\
- lsls r1, r5, 27\n\
- movs r0, 0xFC\n\
- lsls r0, 24\n\
- adds r1, r0\n\
- lsrs r1, 24\n\
- lsrs r2, r6, 16\n\
- mov r0, sp\n\
- movs r3, 0\n\
- bl MenuPrint_PixelCoords\n\
- adds r0, r4, 0\n\
- add sp, 0xC\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
-}
-#endif
void sub_808E090(u8 a, u8 b, u16 c)
{
@@ -3081,15 +2992,17 @@ u8 sub_809070C(u16 dexNum, u32 b, u32 c)
return taskId;
}
-/*
+#ifdef NONMATCHING // yet again...
void sub_8090750(u8 taskId)
{
+ u8 spriteId;
u16 dexNum = gTasks[taskId].data[1];
-
+ u16 i;
+
switch (gTasks[taskId].data[0])
{
- default:
case 0:
+ default:
if (!gPaletteFade.active)
{
gUnknown_03005CEC = gMain.vblankCallback;
@@ -3099,19 +3012,15 @@ void sub_8090750(u8 taskId)
}
break;
case 1:
- {
- u16 i;
-
LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000));
LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
for (i = 0; i < 0x280; i++)
((u16 *)(VRAM + 0x7800))[i] += 0x2000;
sub_8091738(gTasks[taskId].data[1], 2, 0x3FC);
ResetPaletteFade();
- LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E);
+ LoadPalette(gPokedexMenu_Pal + 1, 0x21, 0x9E);
gTasks[taskId].data[0]++;
break;
- }
case 2:
SetUpWindowConfig(&gWindowConfig_81E7064);
InitMenuWindow(&gWindowConfig_81E7064);
@@ -3128,7 +3037,7 @@ void sub_8090750(u8 taskId)
MenuPrint(gDexText_UnknownPoke, 11, 5);
MenuPrint(gDexText_UnknownHeight, 16, 7);
MenuPrint(gDexText_UnknownWeight, 16, 9);
- sub_8091304(&gPokedexEntries[dexNum], 11, 5);
+ sub_8091304(gPokedexEntries[dexNum].categoryName, 11, 5);
sub_8091458(gPokedexEntries[dexNum].height, 16, 7);
sub_8091564(gPokedexEntries[dexNum].weight, 16, 9);
MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13);
@@ -3136,16 +3045,13 @@ void sub_8090750(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 4:
- {
- u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
-
+ spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
gSprites[spriteId].oam.priority = 0;
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
SetVBlankCallback(gUnknown_03005CEC);
gTasks[taskId].data[3] = spriteId;
gTasks[taskId].data[0]++;
break;
- }
case 5:
REG_BLDCNT = 0;
REG_BLDALPHA = 0;
@@ -3165,4 +3071,705 @@ void sub_8090750(u8 taskId)
break;
}
}
-*/
+#else
+__attribute__((naked))
+void sub_8090750(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r1, _08090778 @ =gTasks\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrh r6, [r0, 0xA]\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r4, r1, 0\n\
+ cmp r0, 0x6\n\
+ bhi _0809079C\n\
+ lsls r0, 2\n\
+ ldr r1, _0809077C @ =_08090780\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08090778: .4byte gTasks\n\
+_0809077C: .4byte _08090780\n\
+ .align 2, 0\n\
+_08090780:\n\
+ .4byte _0809079C\n\
+ .4byte _080907E0\n\
+ .4byte _0809085C\n\
+ .4byte _080908A0\n\
+ .4byte _08090960\n\
+ .4byte _080909B8\n\
+ .4byte _080909F4\n\
+_0809079C:\n\
+ ldr r0, _080907D0 @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080907AA\n\
+ b _08090A26\n\
+_080907AA:\n\
+ ldr r1, _080907D4 @ =gUnknown_03005CEC\n\
+ ldr r0, _080907D8 @ =gMain\n\
+ ldr r0, [r0, 0xC]\n\
+ str r0, [r1]\n\
+ movs r0, 0\n\
+ bl SetVBlankCallback\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ bl sub_8091060\n\
+ ldr r1, _080907DC @ =gTasks\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x8]\n\
+ b _08090A26\n\
+ .align 2, 0\n\
+_080907D0: .4byte gPaletteFade\n\
+_080907D4: .4byte gUnknown_03005CEC\n\
+_080907D8: .4byte gMain\n\
+_080907DC: .4byte gTasks\n\
+_080907E0:\n\
+ ldr r0, _08090840 @ =gPokedexMenu_Gfx\n\
+ ldr r1, _08090844 @ =0x06004000\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _08090848 @ =gUnknown_08E96BD4\n\
+ ldr r4, _0809084C @ =0x06007800\n\
+ adds r1, r4, 0\n\
+ bl LZ77UnCompVram\n\
+ movs r2, 0\n\
+ lsls r5, r7, 2\n\
+ mov r12, r5\n\
+ movs r0, 0x80\n\
+ lsls r0, 6\n\
+ adds r6, r0, 0\n\
+ ldr r3, _08090850 @ =0x0000027f\n\
+_08090800:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r4\n\
+ ldrh r5, [r0]\n\
+ adds r1, r6, r5\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, r3\n\
+ bls _08090800\n\
+ ldr r0, _08090854 @ =gTasks\n\
+ mov r1, r12\n\
+ adds r4, r1, r7\n\
+ lsls r4, 3\n\
+ adds r4, r0\n\
+ ldrh r0, [r4, 0xA]\n\
+ movs r2, 0xFF\n\
+ lsls r2, 2\n\
+ movs r1, 0x2\n\
+ bl sub_8091738\n\
+ bl ResetPaletteFade\n\
+ ldr r0, _08090858 @ =gPokedexMenu_Pal + 0x2\n\
+ movs r1, 0x21\n\
+ movs r2, 0x9E\n\
+ bl LoadPalette\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _08090A26\n\
+ .align 2, 0\n\
+_08090840: .4byte gPokedexMenu_Gfx\n\
+_08090844: .4byte 0x06004000\n\
+_08090848: .4byte gUnknown_08E96BD4\n\
+_0809084C: .4byte 0x06007800\n\
+_08090850: .4byte 0x0000027f\n\
+_08090854: .4byte gTasks\n\
+_08090858: .4byte gPokedexMenu_Pal + 0x2\n\
+_0809085C:\n\
+ ldr r4, _0809088C @ =gWindowConfig_81E7064\n\
+ adds r0, r4, 0\n\
+ bl SetUpWindowConfig\n\
+ adds r0, r4, 0\n\
+ bl InitMenuWindow\n\
+ ldr r2, _08090890 @ =0x0600c000\n\
+ add r1, sp, 0x4\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _08090894 @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _08090898 @ =0x81000100\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ ldr r1, _0809089C @ =gTasks\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ b _080909E0\n\
+ .align 2, 0\n\
+_0809088C: .4byte gWindowConfig_81E7064\n\
+_08090890: .4byte 0x0600c000\n\
+_08090894: .4byte 0x040000d4\n\
+_08090898: .4byte 0x81000100\n\
+_0809089C: .4byte gTasks\n\
+_080908A0:\n\
+ ldr r0, _080908C8 @ =gDexText_RegisterComplete\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0xD0\n\
+ bl sub_8072BD8\n\
+ bl IsNationalPokedexEnabled\n\
+ cmp r0, 0\n\
+ bne _080908CC\n\
+ adds r0, r6, 0\n\
+ bl NationalToHoennOrder\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xD\n\
+ movs r2, 0x3\n\
+ bl sub_8091154\n\
+ b _080908D6\n\
+ .align 2, 0\n\
+_080908C8: .4byte gDexText_RegisterComplete\n\
+_080908CC:\n\
+ adds r0, r6, 0\n\
+ movs r1, 0xD\n\
+ movs r2, 0x3\n\
+ bl sub_8091154\n\
+_080908D6:\n\
+ adds r0, r6, 0\n\
+ movs r1, 0x10\n\
+ movs r2, 0x3\n\
+ bl sub_80911C8\n\
+ ldr r0, _0809094C @ =gDexText_UnknownPoke\n\
+ movs r1, 0xB\n\
+ movs r2, 0x5\n\
+ bl MenuPrint\n\
+ ldr r0, _08090950 @ =gDexText_UnknownHeight\n\
+ movs r1, 0x10\n\
+ movs r2, 0x7\n\
+ bl MenuPrint\n\
+ ldr r0, _08090954 @ =gDexText_UnknownWeight\n\
+ movs r1, 0x10\n\
+ movs r2, 0x9\n\
+ bl MenuPrint\n\
+ lsls r4, r6, 3\n\
+ adds r4, r6\n\
+ lsls r4, 2\n\
+ ldr r6, _08090958 @ =gPokedexEntries\n\
+ adds r5, r4, r6\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ movs r2, 0x5\n\
+ bl sub_8091304\n\
+ ldrh r0, [r5, 0xC]\n\
+ movs r1, 0x10\n\
+ movs r2, 0x7\n\
+ bl sub_8091458\n\
+ ldrh r0, [r5, 0xE]\n\
+ movs r1, 0x10\n\
+ movs r2, 0x9\n\
+ bl sub_8091564\n\
+ adds r6, 0x10\n\
+ adds r4, r6\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x2\n\
+ movs r2, 0xD\n\
+ bl MenuPrint\n\
+ movs r1, 0xFF\n\
+ lsls r1, 2\n\
+ movs r0, 0xE\n\
+ bl sub_80917CC\n\
+ ldr r1, _0809095C @ =gTasks\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ b _080909E0\n\
+ .align 2, 0\n\
+_0809094C: .4byte gDexText_UnknownPoke\n\
+_08090950: .4byte gDexText_UnknownHeight\n\
+_08090954: .4byte gDexText_UnknownWeight\n\
+_08090958: .4byte gPokedexEntries\n\
+_0809095C: .4byte gTasks\n\
+_08090960:\n\
+ adds r0, r6, 0\n\
+ movs r1, 0x30\n\
+ movs r2, 0x38\n\
+ movs r3, 0\n\
+ bl sub_80918EC\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r0, _080909AC @ =gSprites\n\
+ lsls r1, r4, 4\n\
+ adds r1, r4\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r2, [r1, 0x5]\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ strb r0, [r1, 0x5]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, _080909B0 @ =gUnknown_03005CEC\n\
+ ldr r0, [r0]\n\
+ bl SetVBlankCallback\n\
+ ldr r1, _080909B4 @ =gTasks\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r4, [r0, 0xE]\n\
+ b _080909E0\n\
+ .align 2, 0\n\
+_080909AC: .4byte gSprites\n\
+_080909B0: .4byte gUnknown_03005CEC\n\
+_080909B4: .4byte gTasks\n\
+_080909B8:\n\
+ ldr r0, _080909E8 @ =REG_BLDCNT\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ ldr r1, _080909EC @ =REG_BG3CNT\n\
+ ldr r2, _080909F0 @ =0x00000f07\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ subs r1, 0xE\n\
+ movs r5, 0xE2\n\
+ lsls r5, 5\n\
+ adds r0, r5, 0\n\
+ strh r0, [r1]\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r4\n\
+_080909E0:\n\
+ ldrh r1, [r0, 0x8]\n\
+ adds r1, 0x1\n\
+ strh r1, [r0, 0x8]\n\
+ b _08090A26\n\
+ .align 2, 0\n\
+_080909E8: .4byte 0x04000050\n\
+_080909EC: .4byte 0x0400000E\n\
+_080909F0: .4byte 0x00000f07\n\
+_080909F4:\n\
+ ldr r0, _08090A30 @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0\n\
+ bne _08090A26\n\
+ adds r0, r6, 0\n\
+ bl NationalPokedexNumToSpecies\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0\n\
+ bl PlayCry1\n\
+ ldr r1, _08090A34 @ =gTasks\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r5, [r0, 0xC]\n\
+ strh r5, [r0, 0x10]\n\
+ ldr r1, _08090A38 @ =sub_8090A3C\n\
+ str r1, [r0]\n\
+_08090A26:\n\
+ add sp, 0x8\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08090A30: .4byte gPaletteFade\n\
+_08090A34: .4byte gTasks\n\
+_08090A38: .4byte sub_8090A3C\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_8090A3C(u8 taskId)
+{
+ if (gMain.newKeys & 2)
+ {
+ BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0);
+ gSprites[gTasks[taskId].data[3]].callback = sub_8090C28;
+ gTasks[taskId].func = sub_8090B8C;
+ return;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (gTasks[taskId].data[4] == 0)
+ {
+ u16 r4 = gTasks[taskId].data[1];
+
+ MenuZeroFillWindowRect(2, 13, 27, 19);
+ MenuPrint(gPokedexEntries[r4].descriptionPage2, 2, 13);
+ (*(u16 *)(VRAM + 0x7ACA))++;
+ (*(u16 *)(VRAM + 0x7B0A))++;
+ gTasks[taskId].data[4] = 1;
+ PlaySE(SE_PIN);
+ }
+ else
+ {
+ BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0);
+ gSprites[gTasks[taskId].data[3]].callback = sub_8090C28;
+ gTasks[taskId].func = sub_8090B8C;
+ return;
+ }
+ }
+ gTasks[taskId].data[2]++;
+ if (gTasks[taskId].data[2] & 0x10)
+ LoadPalette(gPokedexMenu_Pal + 1, 0x51, 14);
+ else
+ LoadPalette(gPokedexMenu2_Pal + 1, 0x51, 14);
+}
+
+void sub_8090B8C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ u16 species;
+ u32 otId;
+ u32 personality;
+ u8 paletteNum;
+ const u16 *palette;
+
+ REG_DISPCNT = 0x1940;
+ CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000);
+ sub_800D74C();
+ species = NationalPokedexNumToSpecies(gTasks[taskId].data[1]);
+ otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12];
+ personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14];
+ paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum;
+ palette = species_and_otid_get_pal(species, otId, personality);
+ LoadCompressedPalette(palette, 0x100 | paletteNum * 16, 32);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8090C28(struct Sprite *sprite)
+{
+ if (sprite->pos1.x < 0x78)
+ sprite->pos1.x += 2;
+ if (sprite->pos1.x > 0x78)
+ sprite->pos1.x -= 2;
+
+ if (sprite->pos1.y < 0x50)
+ sprite->pos1.y += 1;
+ if (sprite->pos1.y > 0x50)
+ sprite->pos1.y -= 1;
+}
+
+void sub_8090C68(void)
+{
+ if (gUnknown_0202FFBC->owned)
+ {
+ if (gPokedexView->unk64E == 0)
+ {
+ MenuZeroFillWindowRect(2, 13, 27, 19);
+ MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13);
+ gPokedexView->unk64E = 1;
+ (*(u16 *)(VRAM + 0x7ACA))++;
+ (*(u16 *)(VRAM + 0x7B0A))++;
+ PlaySE(SE_PIN);
+ }
+ else
+ {
+ MenuZeroFillWindowRect(2, 13, 27, 19);
+ MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13);
+ gPokedexView->unk64E = 0;
+ (*(u16 *)(VRAM + 0x7ACA))--;
+ (*(u16 *)(VRAM + 0x7B0A))--;
+ PlaySE(SE_PIN);
+ }
+ }
+}
+
+const u8 *GetPokemonCategory(u16 dexNum)
+{
+ return gPokedexEntries[dexNum].categoryName;
+}
+
+u16 GetPokedexHeightWeight(u16 dexNum, u8 data)
+{
+ switch (data)
+ {
+ case 0: // height
+ return gPokedexEntries[dexNum].height;
+ case 1: // weight
+ return gPokedexEntries[dexNum].weight;
+ default:
+ return 1;
+ }
+}
+
+s8 sub_8090D90(u16 a, u8 b)
+{
+ u8 index;
+ u8 bit;
+ u8 mask;
+ s8 retVal;
+
+ a--;
+ index = a / 8;
+ bit = a % 8;
+ mask = 1 << bit;
+ retVal = 0;
+ switch (b)
+ {
+ case 0:
+ if (gSaveBlock2.pokedex.seen[index] & mask)
+ {
+ if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk938[index] & mask)
+ && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask))
+ retVal = 1;
+ else
+ {
+ gSaveBlock2.pokedex.seen[index] &= ~mask;
+ gSaveBlock1.unk938[index] &= ~mask;
+ gSaveBlock1.unk3A8C[index] &= ~mask;
+ retVal = 0;
+ }
+ }
+ break;
+ case 1:
+ if (gSaveBlock2.pokedex.owned[index] & mask)
+ {
+ if ((gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock2.pokedex.seen[index] & mask)
+ && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk938[index] & mask)
+ && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask))
+ retVal = 1;
+ else
+ {
+ gSaveBlock2.pokedex.owned[index] &= ~mask;
+ gSaveBlock2.pokedex.seen[index] &= ~mask;
+ gSaveBlock1.unk938[index] &= ~mask;
+ gSaveBlock1.unk3A8C[index] &= ~mask;
+ retVal = 0;
+ }
+ }
+ break;
+ case 2:
+ gSaveBlock2.pokedex.seen[index] |= mask;
+ gSaveBlock1.unk938[index] |= mask;
+ gSaveBlock1.unk3A8C[index] |= mask;
+ break;
+ case 3:
+ gSaveBlock2.pokedex.owned[index] |= mask;
+ break;
+ }
+ return retVal;
+}
+
+u16 GetNationalPokedexCount(u8 a)
+{
+ u16 count = 0;
+ u16 i;
+
+ for (i = 0; i < 386; i++)
+ {
+ switch (a)
+ {
+ case 0:
+ if (sub_8090D90(i + 1, 0) != 0)
+ count++;
+ break;
+ case 1:
+ if (sub_8090D90(i + 1, 1) != 0)
+ count++;
+ break;
+ }
+ }
+ return count;
+}
+
+u16 GetHoennPokedexCount(u8 a)
+{
+ u16 count = 0;
+ u16 i;
+
+ for (i = 0; i < 202; i++)
+ {
+ switch (a)
+ {
+ case 0:
+ if (sub_8090D90(HoennToNationalOrder(i + 1), 0) != 0)
+ count++;
+ break;
+ case 1:
+ if (sub_8090D90(HoennToNationalOrder(i + 1), 1) != 0)
+ count++;
+ break;
+ }
+ }
+ return count;
+}
+
+bool8 sub_8090FC0(void)
+{
+ u16 i;
+
+ for (i = 0; i < 200; i++)
+ {
+ if (sub_8090D90(HoennToNationalOrder(i + 1), 1) == 0)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+u16 sub_8090FF4(void)
+{
+ u16 i;
+
+ for (i = 0; i < 150; i++)
+ {
+ if (sub_8090D90(i + 1, 1) == 0)
+ return 0;
+ }
+ for (i = 152; i < 250; i++)
+ {
+ if (sub_8090D90(i + 1, 1) == 0)
+ return 0;
+ }
+ for (i = 252; i < 384; i++)
+ {
+ if (sub_8090D90(i + 1, 1) == 0)
+ return 0;
+ }
+ return 1;
+}
+
+void sub_8091060(u16 a)
+{
+ if (!(a & 0x100))
+ {
+ REG_DISPCNT &= 0xFEFF;
+ REG_BG0CNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ }
+ if (!(a & 0x200))
+ {
+ REG_DISPCNT &= 0xFDFF;
+ REG_BG1CNT = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ }
+ if (!(a & 0x400))
+ {
+ REG_DISPCNT &= 0xFBFF;
+ REG_BG2CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ }
+ if (!(a & 0x800))
+ {
+ REG_DISPCNT &= 0xF7FF;
+ REG_BG3CNT = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ }
+ if (!(a & 0x1000))
+ {
+ REG_DISPCNT &= 0xEFFF;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ }
+}
+
+void sub_8091154(u16 order, u8 b, u8 c)
+{
+ u8 str[4];
+
+ str[0] = 0xA1 + order / 100;
+ str[1] = 0xA1 + (order % 100) / 10;
+ str[2] = 0xA1 + (order % 100) % 10;
+ str[3] = EOS;
+ MenuPrint(str, b, c);
+}
+
+u8 sub_80911C8(u16 num, u8 b, u8 c)
+{
+ u8 str[11];
+ u8 i;
+
+ for (i = 0; i < 11; i++)
+ str[i] = EOS;
+ num = NationalPokedexNumToSpecies(num);
+ switch (num)
+ {
+ default:
+ for (i = 0; gSpeciesNames[num][i] != EOS && i < 10; i++)
+ str[i] = gSpeciesNames[num][i];
+ break;
+ case 0:
+ for (i = 0; i < 10; i++)
+ str[i] = 0xAE;
+ break;
+ }
+ MenuPrint(str, b, c);
+ return i;
+}
+
+u8 sub_8091260(u16 num, u8 b, u8 c, u8 d)
+{
+ u8 str[40]; // Not exactly sure how long this needs to be
+ u8 *end;
+ u8 i;
+
+ end = StringCopy(str, gUnknown_083B5558);
+ str[2] = d;
+ num = NationalPokedexNumToSpecies(num);
+ switch (num)
+ {
+ default:
+ for (i = 0; gSpeciesNames[num][i] != EOS && i < 10; i++)
+ end[i] = gSpeciesNames[num][i];
+ break;
+ case 0:
+ for (i = 0; i < 10; i++)
+ end[i] = 0xAE;
+ break;
+ }
+ end[i] = EOS;
+ MenuPrint(str, b, c);
+ return i;
+}
+
+void sub_8091304(u8 *name, u8 b, u8 c)
+{
+ u8 str[32]; // Not exactly sure how long this needs to be
+ u8 i;
+ u8 j;
+
+ for (i = 0; name[i] != EOS && i < 11; i++)
+ str[i] = name[i];
+ for (j = 0; gDexText_UnknownPoke[j] == 0xAC || gDexText_UnknownPoke[j] == 0; j++)
+ ;
+ j--;
+ while (gDexText_UnknownPoke[j] != EOS)
+ str[i++] = gDexText_UnknownPoke[j++];
+ str[i] = EOS;
+ sub_8072B80(str, b, c, (u8 *)gDexText_UnknownPoke);
+}
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 32b6adf36..0ed8315fc 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -483,7 +483,7 @@ static void AddTextColorCtrlCode(u8 *string, u8 bgColor, u8 textColor, u8 shadow
static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
{
u8 labelText[72];
- u8 *category;
+ const u8 *category;
u8 srcIndex;
u8 dstIndex;
u16 species;