diff options
author | camthesaxman <cameronghall@cox.net> | 2017-06-12 14:36:40 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-06-12 14:36:40 -0500 |
commit | 95c56943995bbae7688b581a6b6d084e215827f4 (patch) | |
tree | 1fb53d54a5955e18c5a097667509d1cefb8afa3d | |
parent | b741c626e72a2c52351fddbbfc536f66183d009f (diff) |
decompile sub_8090750 - sub_8091304
-rw-r--r-- | asm/pokedex.s | 1566 | ||||
-rw-r--r-- | baserom-symbol-cache | 0 | ||||
-rw-r--r-- | include/pokedex.h | 12 | ||||
-rw-r--r-- | include/songs.h | 10 | ||||
-rw-r--r-- | src/pokedex.c | 857 | ||||
-rw-r--r-- | src/starter_choose.c | 2 |
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; |