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