From f9331f15ef3db551fb288737d1070adfc79150b2 Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Mon, 30 Apr 2018 20:41:17 -0400 Subject: [PATCH] decompiled up to sub_80BFCF4 --- asm/pokedex.s | 4052 --------------------------------- include/graphics.h | 5 + include/pokedex_area_screen.h | 6 + include/pokedex_cry_screen.h | 19 + include/strings.h | 5 + src/pokedex.c | 1272 ++++++++++- 6 files changed, 1303 insertions(+), 4056 deletions(-) create mode 100755 include/pokedex_area_screen.h create mode 100755 include/pokedex_cry_screen.h diff --git a/asm/pokedex.s b/asm/pokedex.s index 67c7ca4a05..5dc45c7661 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -5,4058 +5,6 @@ .text - thumb_func_start sub_80BD8D0 -sub_80BD8D0: @ 80BD8D0 - push {r4-r7,lr} - movs r4, 0 - ldr r0, =gUnknown_02039B4C - mov r12, r0 - ldr r6, =gSprites - ldr r5, =0x0000ffff -_080BD8DC: - mov r1, r12 - ldr r3, [r1] - lsls r1, r4, 1 - ldr r2, =0x0000061e - adds r0, r3, r2 - adds r0, r1 - ldrh r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r6 - movs r7, 0x24 - ldrsh r0, [r1, r7] - cmp r0, 0 - bne _080BD90C - movs r7, 0x26 - ldrsh r0, [r1, r7] - cmp r0, 0 - bne _080BD90C - cmp r2, r5 - beq _080BD90C - ldr r1, =0x00000626 - adds r0, r3, r1 - strh r2, [r0] -_080BD90C: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080BD8DC - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BD8D0 - - thumb_func_start sub_80BD930 -sub_80BD930: @ 80BD930 - push {r4-r6,lr} - ldr r3, =gUnknown_02039B4C - ldr r0, [r3] - ldr r1, =0x0000060e - adds r0, r1 - ldrh r4, [r0] - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080BD9B8 - cmp r4, 0 - beq _080BD9B8 - adds r2, r4, 0 - adds r5, r3, 0 -_080BD950: - ldr r0, [r5] - ldr r1, =0x0000060c - adds r0, r1 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0x1 - adds r1, r2, 0 - movs r2, 0 - bl sub_80C0E0C - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - bne _080BD9A0 - cmp r2, 0 - bne _080BD950 -_080BD97E: - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r0, =0x0000060e - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r4 - bne _080BD9A4 - b _080BDA38 - .pool -_080BD9A0: - adds r4, r2, 0 - b _080BD97E -_080BD9A4: - strh r4, [r2] - ldr r0, =0x0000062c - adds r1, r0 - ldrb r0, [r1] - subs r0, 0x10 - b _080BDA20 - .pool -_080BD9B4: - adds r4, r2, 0 - b _080BDA08 -_080BD9B8: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BDA38 - ldr r0, [r3] - ldr r1, =0x0000060c - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - cmp r4, r0 - bge _080BDA38 - adds r2, r4, 0 - adds r6, r3, 0 - adds r5, r1, 0 -_080BD9D6: - ldr r0, [r6] - adds r0, r5 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0 - adds r1, r2, 0 - movs r2, 0 - bl sub_80C0E0C - lsls r0, 16 - lsrs r2, r0, 16 - ldr r1, [r6] - lsls r0, r2, 2 - adds r0, r1, r0 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - bne _080BD9B4 - adds r0, r1, r5 - ldrh r0, [r0] - subs r0, 0x1 - cmp r2, r0 - blt _080BD9D6 -_080BDA08: - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r0, =0x0000060e - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r4 - beq _080BDA38 - strh r4, [r2] - ldr r0, =0x0000062c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x10 -_080BDA20: - strb r0, [r1] - movs r0, 0x1 - b _080BDA3A - .pool -_080BDA38: - movs r0, 0 -_080BDA3A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80BD930 - - thumb_func_start sub_80BDA40 -sub_80BDA40: @ 80BDA40 - push {r4-r7,lr} - movs r5, 0 - ldr r6, =gUnknown_02039B4C - ldr r7, =0x0000ffff -_080BDA48: - ldr r0, [r6] - lsls r4, r5, 1 - ldr r1, =0x0000061e - adds r0, r1 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, r7 - beq _080BDA6C - bl sub_818D820 - ldr r1, [r6] - ldr r0, =0x0000061e - adds r1, r0 - adds r1, r4 - ldrh r2, [r1] - adds r0, r7, 0 - orrs r0, r2 - strh r0, [r1] -_080BDA6C: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080BDA48 - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80BDA40 - - thumb_func_start sub_80BDA8C -sub_80BDA8C: @ 80BDA8C - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, =0x00000181 - cmp r2, r0 - bhi _080BDAA8 - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - lsls r0, r2, 2 - adds r2, r1, r0 - ldrh r1, [r2] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _080BDAB8 -_080BDAA8: - ldr r0, =0x0000ffff - b _080BDAC6 - .pool -_080BDAB8: - ldrb r0, [r2, 0x2] - lsls r0, 31 - cmp r0, 0 - bne _080BDAC4 - movs r0, 0 - b _080BDAC6 -_080BDAC4: - ldrh r0, [r2] -_080BDAC6: - pop {r1} - bx r1 - thumb_func_end sub_80BDA8C - - thumb_func_start sub_80BDACC -sub_80BDACC: @ 80BDACC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r2, 16 - lsrs r2, 16 - movs r6, 0 - ldr r0, =gUnknown_02039B4C - mov r9, r0 - ldr r3, =0x0000ffff - lsls r1, 16 -_080BDAE8: - mov r4, r9 - ldr r0, [r4] - lsls r7, r6, 1 - ldr r4, =0x0000061e - adds r0, r4 - adds r0, r7 - ldrh r0, [r0] - cmp r0, r3 - bne _080BDB60 - lsls r2, 16 - mov r0, r8 - asrs r1, 16 - asrs r2, 16 - adds r3, r6, 0 - bl sub_80C0E9C - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =gSprites - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - adds r4, r0 - ldrb r1, [r4, 0x1] - movs r2, 0x4 - negs r2, r2 - adds r0, r2, 0 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strb r1, [r4, 0x1] - ldrb r0, [r4, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0 - strh r0, [r4, 0x2E] - strh r6, [r4, 0x30] - mov r0, r8 - bl NationalPokedexNumToSpecies - strh r0, [r4, 0x32] - mov r4, r9 - ldr r0, [r4] - ldr r1, =0x0000061e - adds r0, r1 - adds r0, r7 - strh r5, [r0] - adds r0, r5, 0 - b _080BDB6C - .pool -_080BDB60: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _080BDAE8 - ldr r0, =0x0000ffff -_080BDB6C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80BDACC - - thumb_func_start sub_80BDB7C -sub_80BDB7C: @ 80BDB7C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r4, =gUnknown_0855D1AC - adds r0, r4, 0 - movs r1, 0xB8 - movs r2, 0x4 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gSprites - mov r10, r1 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0 - strh r1, [r0, 0x30] - adds r0, r4, 0 - movs r1, 0xB8 - movs r2, 0x9C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - strh r1, [r0, 0x30] - adds r0, 0x3F - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r0, =gUnknown_0855D194 - movs r1, 0xE6 - movs r2, 0x14 - movs r3, 0 - bl CreateSprite - ldr r5, =gUnknown_0855D1C4 - adds r0, r5, 0 - movs r1, 0x10 - movs r2, 0x78 - movs r3, 0 - bl CreateSprite - adds r0, r5, 0 - movs r1, 0x30 - movs r2, 0x78 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r5, 0 - movs r1, 0x10 - movs r2, 0x90 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - add r4, r10 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - movs r0, 0x80 - mov r9, r0 - mov r1, r9 - strh r1, [r4, 0x32] - adds r0, r5, 0 - movs r1, 0x30 - movs r2, 0x90 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - bl StartSpriteAnim - ldr r6, =gUnknown_0855D1DC - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - add r1, r10 - ldrb r2, [r1, 0x1] - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - movs r5, 0x1 - orrs r0, r5 - strb r0, [r1, 0x1] - ldrb r2, [r1, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - movs r2, 0x3C - orrs r0, r2 - strb r0, [r1, 0x3] - movs r0, 0x1E - strh r0, [r1, 0x2E] - movs r0, 0 - strh r0, [r1, 0x30] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - add r1, r10 - ldrb r0, [r1, 0x1] - ands r4, r0 - orrs r4, r5 - strb r4, [r1, 0x1] - ldrb r0, [r1, 0x3] - movs r2, 0x3E - orrs r0, r2 - strb r0, [r1, 0x3] - movs r0, 0x1F - strh r0, [r1, 0x2E] - mov r0, r9 - strh r0, [r1, 0x30] - mov r1, r8 - cmp r1, 0 - beq _080BDCCC - b _080BE414 -_080BDCCC: - bl IsNationalPokedexEnabled - cmp r0, 0 - beq _080BDCD6 - b _080BDF4C -_080BDCD6: - ldr r4, =gUnknown_0855D1F4 - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x28 - movs r3, 0x1 - bl CreateSprite - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x48 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0 - mov r8, r0 - ldr r0, =gUnknown_0855D224 - movs r1, 0x18 - movs r2, 0x30 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - mov r1, r10 - adds r4, r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _080BDD6C - movs r0, 0x1 - mov r8, r0 - b _080BDD78 - .pool -_080BDD6C: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BDD78: - ldr r0, =gUnknown_0855D224 - movs r1, 0x20 - movs r2, 0x30 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080BDDB0 - mov r0, r8 - cmp r0, 0 - beq _080BDDD4 -_080BDDB0: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _080BDDE8 - .pool -_080BDDD4: - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BDDE8: - ldr r6, =gUnknown_0855D224 - adds r0, r6, 0 - movs r1, 0x28 - movs r2, 0x30 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r1, =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - movs r0, 0 - mov r8, r0 - adds r0, r6, 0 - movs r1, 0x18 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r5] - ldr r1, =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r4 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _080BDE80 - movs r0, 0x1 - mov r8, r0 - b _080BDE8C - .pool -_080BDE80: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BDE8C: - ldr r0, =gUnknown_0855D224 - movs r1, 0x20 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080BDEC4 - mov r0, r8 - cmp r0, 0 - beq _080BDEE8 -_080BDEC4: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _080BDEFC - .pool -_080BDEE8: - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BDEFC: - ldr r0, =gUnknown_0855D224 - movs r1, 0x28 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r2, =gSprites - adds r0, r2 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _080BE3E2 - .pool -_080BDF4C: - ldr r4, =gUnknown_0855D1F4 - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x28 - movs r3, 0x1 - bl CreateSprite - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x4C - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - bl StartSpriteAnim - ldr r4, =gUnknown_0855D20C - adds r0, r4, 0 - movs r1, 0x11 - movs r2, 0x2D - movs r3, 0x1 - bl CreateSprite - adds r0, r4, 0 - movs r1, 0x11 - movs r2, 0x37 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0x11 - movs r2, 0x51 - movs r3, 0x1 - bl CreateSprite - adds r0, r4, 0 - movs r1, 0x11 - movs r2, 0x5B - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0 - bl GetHoennPokedexCount - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0 - mov r8, r0 - ldr r0, =gUnknown_0855D23C - movs r1, 0x28 - movs r2, 0x2D - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - mov r1, r10 - adds r4, r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _080BE024 - movs r0, 0x1 - mov r8, r0 - b _080BE030 - .pool -_080BE024: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE030: - ldr r0, =gUnknown_0855D23C - movs r1, 0x30 - movs r2, 0x2D - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080BE060 - mov r1, r8 - cmp r1, 0 - beq _080BE07C -_080BE060: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _080BE090 - .pool -_080BE07C: - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE090: - ldr r5, =gUnknown_0855D23C - adds r0, r5, 0 - movs r1, 0x38 - movs r2, 0x2D - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - movs r0, 0 - mov r8, r0 - adds r0, r5, 0 - movs r1, 0x28 - movs r2, 0x37 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r4 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _080BE11C - movs r0, 0x1 - mov r8, r0 - b _080BE128 - .pool -_080BE11C: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE128: - ldr r0, =gUnknown_0855D23C - movs r1, 0x30 - movs r2, 0x37 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080BE160 - mov r0, r8 - cmp r0, 0 - beq _080BE184 -_080BE160: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _080BE198 - .pool -_080BE184: - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE198: - ldr r5, =gUnknown_0855D23C - adds r0, r5, 0 - movs r1, 0x38 - movs r2, 0x37 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - movs r0, 0x1 - bl GetHoennPokedexCount - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0 - mov r8, r0 - adds r0, r5, 0 - movs r1, 0x28 - movs r2, 0x51 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r4 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _080BE230 - movs r1, 0x1 - mov r8, r1 - b _080BE23C - .pool -_080BE230: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE23C: - ldr r0, =gUnknown_0855D23C - movs r1, 0x30 - movs r2, 0x51 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080BE26C - mov r0, r8 - cmp r0, 0 - beq _080BE288 -_080BE26C: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _080BE29C - .pool -_080BE288: - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE29C: - ldr r5, =gUnknown_0855D23C - adds r0, r5, 0 - movs r1, 0x38 - movs r2, 0x51 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - movs r1, 0 - mov r8, r1 - adds r0, r5, 0 - movs r1, 0x28 - movs r2, 0x5B - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r4 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _080BE328 - movs r0, 0x1 - mov r8, r0 - b _080BE334 - .pool -_080BE328: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE334: - ldr r0, =gUnknown_0855D23C - movs r1, 0x30 - movs r2, 0x5B - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080BE36C - mov r0, r8 - cmp r0, 0 - beq _080BE390 -_080BE36C: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _080BE3A4 - .pool -_080BE390: - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE3A4: - ldr r0, =gUnknown_0855D23C - movs r1, 0x38 - movs r2, 0x5B - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r2, =gSprites - adds r0, r2 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim -_080BE3E2: - ldr r0, =gUnknown_0855D254 - movs r1, 0x88 - movs r2, 0x60 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - b _080BE42C - .pool -_080BE414: - ldr r0, =gUnknown_0855D254 - movs r1, 0x88 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 -_080BE42C: - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BDB7C - - thumb_func_start nullsub_38 -nullsub_38: @ 80BE448 - bx lr - thumb_func_end nullsub_38 - - thumb_func_start sub_80BE44C -sub_80BE44C: @ 80BE44C - push {lr} - adds r1, r0, 0 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r2, =0x0000064a - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080BE464 - adds r0, r1, 0 - bl DestroySprite -_080BE464: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BE44C - - thumb_func_start sub_80BE470 -sub_80BE470: @ 80BE470 - push {lr} - adds r2, r0, 0 - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r2, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - movs r0, 0 - strh r0, [r2, 0x24] - strh r0, [r2, 0x26] - ldr r1, [r2, 0x20] - ldr r0, =0x00380030 - cmp r1, r0 - beq _080BE4D4 - ldrh r1, [r2, 0x20] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r0, 0x30 - ble _080BE4A4 - subs r0, r1, 0x1 - strh r0, [r2, 0x20] -_080BE4A4: - ldrh r1, [r2, 0x20] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r0, 0x2F - bgt _080BE4B2 - adds r0, r1, 0x1 - strh r0, [r2, 0x20] -_080BE4B2: - ldrh r1, [r2, 0x22] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r0, 0x38 - ble _080BE4C0 - subs r0, r1, 0x1 - strh r0, [r2, 0x22] -_080BE4C0: - ldrh r1, [r2, 0x22] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r0, 0x37 - bgt _080BE4D8 - adds r0, r1, 0x1 - strh r0, [r2, 0x22] - b _080BE4D8 - .pool -_080BE4D4: - ldr r0, =nullsub_38 - str r0, [r2, 0x1C] -_080BE4D8: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BE470 - - thumb_func_start sub_80BE4E0 -sub_80BE4E0: @ 80BE4E0 - push {r4-r7,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, =gUnknown_02039B4C - ldr r1, [r7] - ldr r2, =0x0000064a - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080BE520 - cmp r0, 0x3 - beq _080BE520 - lsls r5, r6, 1 - ldr r4, =0x0000061e - adds r0, r1, r4 - adds r0, r5 - ldrh r0, [r0] - bl sub_818D820 - ldr r0, [r7] - adds r0, r4 - adds r0, r5 - b _080BE5EC - .pool -_080BE520: - ldr r2, =gSineTable - ldrh r0, [r4, 0x38] - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r0, 0x4C - muls r0, r1 - cmp r0, 0 - bge _080BE538 - adds r0, 0xFF -_080BE538: - asrs r0, 8 - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - adds r0, 0x40 - lsls r0, 1 - adds r0, r2 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x80 - lsls r0, 9 - bl __divsi3 - adds r2, r0, 0 - ldr r0, =0x0000ffff - cmp r2, r0 - bls _080BE55C - adds r2, r0, 0 -_080BE55C: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x80 - lsls r1, 1 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - adds r1, r6, 0x1 - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - ldrh r0, [r4, 0x38] - adds r0, 0x3F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7E - bhi _080BE5B4 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - movs r0, 0x1 - strh r0, [r4, 0x2E] - b _080BE5C0 - .pool -_080BE5B4: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080BE5C0: - ldrh r0, [r4, 0x38] - adds r0, 0x3F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7E - bls _080BE5F0 - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080BE5F0 - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - lsls r6, 1 - ldr r4, =0x0000061e - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - bl sub_818D820 - ldr r0, [r5] - adds r0, r4 - adds r0, r6 -_080BE5EC: - ldr r1, =0x0000ffff - strh r1, [r0] -_080BE5F0: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BE4E0 - - thumb_func_start sub_80BE604 -sub_80BE604: @ 80BE604 - push {r4,lr} - adds r4, r0, 0 - ldr r1, =gUnknown_02039B4C - ldr r0, [r1] - ldr r2, =0x0000064a - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080BE62C - cmp r0, 0x3 - beq _080BE62C - adds r0, r4, 0 - bl DestroySprite - b _080BE648 - .pool -_080BE62C: - ldr r2, [r1] - ldr r1, =0x0000060e - adds r0, r2, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 3 - ldr r1, =0x0000060c - adds r2, r1 - ldrh r1, [r2] - subs r1, 0x1 - bl __divsi3 - strh r0, [r4, 0x26] -_080BE648: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BE604 - - thumb_func_start sub_80BE658 -sub_80BE658: @ 80BE658 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r1, =gUnknown_02039B4C - ldr r0, [r1] - ldr r2, =0x0000064a - adds r0, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - beq _080BE680 - cmp r0, 0x3 - beq _080BE680 - adds r0, r3, 0 - bl DestroySprite - b _080BE750 - .pool -_080BE680: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080BE6C2 - ldr r0, [r5] - ldr r2, =0x0000060e - adds r1, r0, r2 - ldrh r1, [r1] - subs r2, 0x2 - adds r0, r2 - ldrh r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _080BE6AC - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _080BE6B8 - .pool -_080BE6AC: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_080BE6B8: - strb r1, [r0] - adds r2, r0, 0 - ldrh r1, [r3, 0x32] - lsls r0, r1, 24 - b _080BE6F8 -_080BE6C2: - ldr r0, [r5] - ldr r1, =0x0000060e - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _080BE6E0 - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _080BE6EC - .pool -_080BE6E0: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_080BE6EC: - strb r1, [r0] - adds r2, r0, 0 - ldrh r1, [r3, 0x32] - adds r0, r1, 0 - subs r0, 0x80 - lsls r0, 24 -_080BE6F8: - lsrs r0, 24 - adds r4, r1, 0 - ldr r1, =gSineTable - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _080BE70C - adds r0, 0x3F -_080BE70C: - asrs r0, 6 - strh r0, [r3, 0x26] - adds r0, r4, 0 - adds r0, 0x8 - strh r0, [r3, 0x32] - ldr r1, [r5] - ldr r3, =0x0000064f - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _080BE748 - adds r3, 0x3 - adds r0, r1, r3 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080BE748 - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080BE748 - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - b _080BE74E - .pool -_080BE748: - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 -_080BE74E: - strb r0, [r2] -_080BE750: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80BE658 - - thumb_func_start sub_80BE758 -sub_80BE758: @ 80BE758 - push {lr} - adds r1, r0, 0 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r2, =0x0000064a - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080BE774 - cmp r0, 0x3 - beq _080BE774 - adds r0, r1, 0 - bl DestroySprite -_080BE774: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BE758 - - thumb_func_start sub_80BE780 -sub_80BE780: @ 80BE780 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r1, =gUnknown_02039B4C - ldr r0, [r1] - ldr r2, =0x0000064a - adds r0, r2 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - beq _080BE7AC - cmp r0, 0x3 - beq _080BE7AC - adds r0, r6, 0 - bl DestroySprite - b _080BE824 - .pool -_080BE7AC: - ldr r0, [r7] - ldr r5, =0x0000062c - adds r0, r5 - ldrb r1, [r0] - ldrh r0, [r6, 0x30] - adds r1, r0 - lsls r1, 24 - lsrs r1, 24 - ldr r4, =gSineTable - lsls r0, r1, 1 - adds r0, r4 - ldrh r3, [r0] - adds r1, 0x40 - lsls r1, 1 - adds r1, r4 - ldrh r0, [r6, 0x2E] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r1] - lsls r3, 16 - lsrs r2, r3, 16 - negs r3, r3 - lsrs r3, 16 - str r1, [sp] - bl SetOamMatrix - ldr r1, [r7] - adds r1, r5 - ldrh r0, [r6, 0x30] - adds r0, 0x40 - ldrb r1, [r1] - adds r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r4 - ldrh r3, [r1] - adds r0, 0x40 - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - cmp r0, 0 - bge _080BE80C - adds r0, 0xFF -_080BE80C: - asrs r0, 8 - strh r0, [r6, 0x24] - lsls r1, r3, 16 - asrs r1, 16 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - cmp r0, 0 - bge _080BE820 - adds r0, 0xFF -_080BE820: - asrs r0, 8 - strh r0, [r6, 0x26] -_080BE824: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BE780 - - thumb_func_start sub_80BE834 -sub_80BE834: @ 80BE834 - push {r4,lr} - adds r3, r0, 0 - ldr r1, =gUnknown_02039B4C - ldr r0, [r1] - ldr r2, =0x0000064a - adds r0, r2 - ldrb r2, [r0] - cmp r2, 0 - beq _080BE85C - cmp r2, 0x3 - beq _080BE85C - adds r0, r3, 0 - bl DestroySprite - b _080BE8D4 - .pool -_080BE85C: - ldr r4, [r1] - ldr r1, =0x0000064a - adds r0, r4, r1 - ldrb r0, [r0] - movs r1, 0x60 - cmp r0, 0 - bne _080BE86C - movs r1, 0x50 -_080BE86C: - ldr r2, =0x0000064f - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080BE8C8 - adds r2, 0x3 - adds r0, r4, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r1 - bne _080BE8C8 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r1, 0xCA - lsls r1, 3 - adds r0, r4, r1 - ldrh r0, [r0] - lsls r0, 4 - strh r0, [r3, 0x26] - ldr r1, =gSineTable - ldrh r2, [r3, 0x32] - lsls r0, r2, 24 - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _080BE8B0 - adds r0, 0x3F -_080BE8B0: - asrs r0, 6 - strh r0, [r3, 0x24] - adds r0, r2, 0 - adds r0, 0x8 - strh r0, [r3, 0x32] - b _080BE8D4 - .pool -_080BE8C8: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080BE8D4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BE834 - - thumb_func_start sub_80BE8DC -sub_80BE8DC: @ 80BE8DC - push {r4,r5,lr} - sub sp, 0x18 - adds r5, r1, 0 - adds r3, r2, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r3, 24 - lsrs r3, 24 - add r1, sp, 0x14 - movs r4, 0 - strb r4, [r1] - adds r2, r1, 0 - movs r1, 0xF - strb r1, [r2, 0x1] - movs r1, 0x3 - strb r1, [r2, 0x2] - str r4, [sp] - str r4, [sp, 0x4] - str r2, [sp, 0x8] - subs r1, 0x4 - str r1, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0 - movs r1, 0x1 - adds r2, r5, 0 - bl AddTextPrinterParameterized2 - add sp, 0x18 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80BE8DC - - thumb_func_start sub_80BE91C -sub_80BE91C: @ 80BE91C - push {r4,r5,lr} - lsls r4, r1, 24 - lsrs r4, 24 - ldr r1, =gUnknown_02039B54 - str r0, [r1] - ldr r0, =sub_80BEA24 - movs r1, 0 - bl CreateTask - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - strh r2, [r0, 0x8] - movs r1, 0x1 - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - strh r2, [r0, 0xE] - strh r4, [r0, 0x10] - movs r1, 0xFF - strh r1, [r0, 0x12] - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_0856E630 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - bl AllocZeroed - adds r1, r0, 0 - movs r0, 0x3 - bl SetBgTilemapBuffer - adds r0, r4, 0 - bl AllocZeroed - adds r1, r0, 0 - movs r0, 0x2 - bl SetBgTilemapBuffer - adds r0, r4, 0 - bl AllocZeroed - adds r1, r0, 0 - movs r0, 0x1 - bl SetBgTilemapBuffer - adds r0, r4, 0 - bl AllocZeroed - adds r1, r0, 0 - movs r0, 0 - bl SetBgTilemapBuffer - ldr r0, =gUnknown_0856E640 - bl InitWindows - bl DeactivateAllTextPrinters - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80BE91C - - thumb_func_start sub_80BE9C4 -sub_80BE9C4: @ 80BE9C4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080BE9F0 - ldr r1, [r1] - ldr r0, =sub_80BEDF4 - cmp r1, r0 - bne _080BE9F0 - movs r0, 0 - b _080BE9F2 - .pool -_080BE9F0: - movs r0, 0x1 -_080BE9F2: - pop {r1} - bx r1 - thumb_func_end sub_80BE9C4 - - thumb_func_start sub_80BE9F8 -sub_80BE9F8: @ 80BE9F8 - adds r2, r0, 0 - lsls r0, r1, 24 - lsrs r0, 24 - ldr r1, =gUnknown_02039B54 - str r2, [r1] - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r3, 0 - movs r2, 0x1 - strh r2, [r1, 0x8] - strh r3, [r1, 0xA] - strh r3, [r1, 0xC] - strh r3, [r1, 0xE] - bx lr - .pool - thumb_func_end sub_80BE9F8 - - thumb_func_start sub_80BEA24 -sub_80BEA24: @ 80BEA24 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0xA - bhi _080BEA7C - lsls r0, 2 - ldr r1, =_080BEA50 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080BEA50: - .4byte _080BEA7C - .4byte _080BEAF0 - .4byte _080BEB50 - .4byte _080BEB90 - .4byte _080BEB98 - .4byte _080BEC08 - .4byte _080BEC60 - .4byte _080BECBC - .4byte _080BED04 - .4byte _080BED5E - .4byte _080BED7C -_080BEA7C: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BEA8A - b _080BEDA0 -_080BEA8A: - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r3, =0x0000064a - adds r0, r3 - movs r6, 0x1 - strb r6, [r0] - ldr r1, =gUnknown_030060B4 - ldr r0, [r5, 0xC] - str r0, [r1] - movs r0, 0 - bl SetVBlankCallback - movs r2, 0 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BEABA - movs r2, 0x80 - lsls r2, 5 -_080BEABA: - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BEACA - movs r1, 0x80 - lsls r1, 2 - adds r0, r1, 0 - orrs r2, r0 -_080BEACA: - adds r0, r2, 0 - bl sub_80C09B0 - movs r2, 0x87 - lsls r2, 3 - adds r0, r5, r2 - strb r6, [r0] - b _080BEDA0 - .pool -_080BEAF0: - ldr r1, =gPokedexMenu_Gfx - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r3, 0 - bl copy_decompressed_tile_data_to_vram_autofree - ldr r1, =gUnknown_08DC3080 - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrh r1, [r0] - movs r0, 0x1 - bl sub_80C0D30 - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080BED70 - .pool -_080BEB50: - movs r0, 0xD - bl sub_80BFCDC - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - ldr r1, =0x0000064d - adds r0, r1 - ldrb r0, [r0] - movs r1, 0xD - bl sub_80BFD0C - ldr r0, [r4] - ldr r2, =0x0000064c - adds r0, r2 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - bl sub_80BC844 - ldr r1, =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080BED70 - .pool -_080BEB90: - movs r0, 0x87 - lsls r0, 3 - adds r1, r5, r0 - b _080BED70 -_080BEB98: - ldr r4, =gUnknown_02039B54 - ldr r3, [r4] - ldrh r0, [r3] - ldr r1, =gUnknown_02039B4C - ldr r1, [r1] - ldr r2, =0x00000612 - adds r1, r2 - ldrh r2, [r1] - negs r1, r2 - orrs r1, r2 - lsrs r1, 31 - ldr r2, [r3] - lsls r2, 14 - lsrs r2, 31 - movs r3, 0 - bl sub_80C020C - ldr r0, [r4] - ldrb r1, [r0, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080BEBD0 - ldr r0, =gPlttBufferUnfaded + 2 - movs r1, 0x31 - movs r2, 0x1E - bl LoadPalette -_080BEBD0: - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - ldr r1, =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080BED70 - .pool -_080BEC08: - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r4, r1, r0 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080BEC44 - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrh r0, [r0] - movs r1, 0x30 - movs r2, 0x38 - movs r3, 0 - bl sub_80C0E9C - strh r0, [r4, 0x10] - ldr r2, =gSprites - movs r3, 0x10 - ldrsh r0, [r4, r3] - 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] -_080BEC44: - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _080BED70 - .pool -_080BEC60: - movs r3, 0 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0xC - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080BEC76 - movs r3, 0x14 -_080BEC76: - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080BEC98 - ldr r2, =gSprites - movs r0, 0x10 - ldrsh r1, [r1, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r3, r0 -_080BEC98: - mvns r0, r3 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, =gUnknown_030060B4 - ldr r0, [r0] - bl SetVBlankCallback - b _080BED68 - .pool -_080BECBC: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl HideBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - ldr r1, =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080BED70 - .pool -_080BED04: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BEDA0 - movs r0, 0x87 - lsls r0, 3 - adds r2, r5, r0 - ldrb r0, [r2] - adds r3, r0, 0x1 - strb r3, [r2] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080BED58 - bl StopCryAndClearCrySongs - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrh r0, [r0] - bl NationalPokedexNumToSpecies - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - movs r2, 0x7D - movs r3, 0xA - bl PlayCry2 - b _080BEDA0 - .pool -_080BED58: - adds r0, r3, 0x1 - strb r0, [r2] - b _080BEDA0 -_080BED5E: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _080BEDA0 -_080BED68: - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 -_080BED70: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080BEDA0 - .pool -_080BED7C: - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - movs r1, 0x1 - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - ldr r1, =sub_80BEDF4 - str r1, [r0] - movs r3, 0x87 - lsls r3, 3 - adds r0, r5, r3 - strb r2, [r0] -_080BEDA0: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BEA24 - - thumb_func_start sub_80BEDB0 -sub_80BEDB0: @ 80BEDB0 - push {lr} - bl FreeAllWindowBuffers - movs r0, 0 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BEDC4 - bl Free -_080BEDC4: - movs r0, 0x1 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BEDD2 - bl Free -_080BEDD2: - movs r0, 0x2 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BEDE0 - bl Free -_080BEDE0: - movs r0, 0x3 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BEDEE - bl Free -_080BEDEE: - pop {r0} - bx r0 - thumb_func_end sub_80BEDB0 - - thumb_func_start sub_80BEDF4 -sub_80BEDF4: @ 80BEDF4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080BEE34 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =sub_80BF038 - str r0, [r4] - movs r0, 0x6C - bl PlaySE - b _080BEFBA - .pool -_080BEE34: - ldr r1, =gMain - ldrh r2, [r1, 0x2E] - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080BEE50 - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - b _080BEF0E - .pool -_080BEE50: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080BEF28 - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r1, =0x0000064d - adds r0, r1 - ldrb r1, [r0] - cmp r1, 0x1 - beq _080BEEA0 - cmp r1, 0x1 - bgt _080BEE78 - cmp r1, 0 - beq _080BEE82 - b _080BEFBA - .pool -_080BEE78: - cmp r1, 0x2 - beq _080BEEC0 - cmp r1, 0x3 - beq _080BEF08 - b _080BEFBA -_080BEE82: - movs r0, 0x15 - negs r0, r0 - str r3, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r5] - ldr r3, =0x0000064e - adds r0, r3 - movs r1, 0x1 - b _080BEEF0 - .pool -_080BEEA0: - movs r0, 0x15 - negs r0, r0 - str r3, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r5] - ldr r1, =0x0000064e - adds r0, r1 - movs r1, 0x2 - b _080BEEF0 - .pool -_080BEEC0: - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrb r0, [r0, 0x2] - ands r1, r0 - cmp r1, 0 - bne _080BEED8 - movs r0, 0x20 - bl PlaySE - b _080BEFBA - .pool -_080BEED8: - movs r0, 0x15 - negs r0, r0 - str r3, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r5] - ldr r3, =0x0000064e - adds r0, r3 - movs r1, 0x3 -_080BEEF0: - strb r1, [r0] - ldr r0, =sub_80BEFD0 - str r0, [r4] - movs r0, 0x15 - bl PlaySE - b _080BEFBA - .pool -_080BEF08: - movs r0, 0x1 - negs r0, r0 - str r3, [sp] -_080BEF0E: - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =sub_80BF070 - str r0, [r4] - movs r0, 0x3 - bl PlaySE - b _080BEFBA - .pool -_080BEF28: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _080BEF44 - movs r0, 0x80 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _080BEF78 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080BEF78 -_080BEF44: - ldr r3, =gUnknown_02039B4C - ldr r0, [r3] - ldr r4, =0x0000064d - adds r2, r0, r4 - ldrb r0, [r2] - cmp r0, 0 - beq _080BEF78 - subs r0, 0x1 - strb r0, [r2] - ldr r0, [r3] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0xD - bl sub_80BFD0C - movs r0, 0x6D - bl PlaySE - b _080BEFBA - .pool -_080BEF78: - ldrh r1, [r1, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080BEF96 - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BEFBA - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080BEFBA -_080BEF96: - ldr r2, =gUnknown_02039B4C - ldr r0, [r2] - ldr r3, =0x0000064d - adds r1, r0, r3 - ldrb r0, [r1] - cmp r0, 0x2 - bhi _080BEFBA - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r0, r3 - ldrb r0, [r0] - movs r1, 0xD - bl sub_80BFD0C - movs r0, 0x6D - bl PlaySE -_080BEFBA: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BEDF4 - - thumb_func_start sub_80BEFD0 -sub_80BEFD0: @ 80BEFD0 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BF02C - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x10] - bl sub_818D820 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _080BF020 - cmp r0, 0x2 - ble _080BF008 - cmp r0, 0x3 - beq _080BF028 -_080BF008: - ldr r0, =sub_80BF0AC - b _080BF02A - .pool -_080BF020: - ldr r0, =sub_80BF250 - b _080BF02A - .pool -_080BF028: - ldr r0, =sub_80BF82C -_080BF02A: - str r0, [r4] -_080BF02C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BEFD0 - - thumb_func_start sub_80BF038 -sub_80BF038: @ 80BF038 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BF05E - ldr r0, =gTasks - lsls r4, r2, 2 - adds r4, r2 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x10] - bl sub_818D820 - ldr r0, =sub_80BEA24 - str r0, [r4] -_080BF05E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF038 - - thumb_func_start sub_80BF070 -sub_80BF070: @ 80BF070 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BF09C - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x10] - bl sub_818D820 - bl sub_80BEDB0 - adds r0, r4, 0 - bl DestroyTask -_080BF09C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF070 - - thumb_func_start sub_80BF0AC -sub_80BF0AC: @ 80BF0AC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r7, r2, r0 - ldrb r0, [r7] - cmp r0, 0x1 - beq _080BF120 - cmp r0, 0x1 - ble _080BF0C8 - cmp r0, 0x2 - beq _080BF15C -_080BF0C8: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080BF196 - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - ldr r1, =0x0000064a - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - ldr r1, =gUnknown_030060B4 - ldr r0, [r2, 0xC] - str r0, [r1] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 2 - bl sub_80C09B0 - ldr r0, [r4] - ldr r1, =0x0000064d - adds r0, r1 - strb r5, [r0] - movs r0, 0x1 - strb r0, [r7] - b _080BF196 - .pool -_080BF120: - movs r0, 0xD - bl sub_80BFCF4 - movs r0, 0 - movs r1, 0xD - bl sub_80BFD7C - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064c - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - bl sub_80BC844 - movs r1, 0xD0 - lsls r1, 4 - movs r0, 0xA - bl SetGpuReg - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - b _080BF196 - .pool -_080BF15C: - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrh r0, [r0] - bl NationalPokedexNumToSpecies - lsls r0, 16 - lsrs r0, 16 - ldr r5, =gUnknown_02039B4C - ldr r1, [r5] - ldr r4, =0x0000064e - adds r1, r4 - bl sub_813D3D8 - ldr r0, =gUnknown_030060B4 - ldr r0, [r0] - bl SetVBlankCallback - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - strb r1, [r0] - strb r1, [r7] - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BF1B4 - str r1, [r0] -_080BF196: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF0AC - - thumb_func_start sub_80BF1B4 -sub_80BF1B4: @ 80BF1B4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080BF1D6 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BF1EC - str r0, [r1] -_080BF1D6: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF1B4 - - thumb_func_start sub_80BF1EC -sub_80BF1EC: @ 80BF1EC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BF242 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080BF210 - cmp r0, 0x2 - beq _080BF234 -_080BF210: - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BEA24 - b _080BF240 - .pool -_080BF234: - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BF250 -_080BF240: - str r0, [r1] -_080BF242: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF1EC - - thumb_func_start sub_80BF250 -sub_80BF250: @ 80BF250 - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xA - bhi _080BF2A8 - lsls r0, 2 - ldr r1, =_080BF27C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080BF27C: - .4byte _080BF2A8 - .4byte _080BF310 - .4byte _080BF360 - .4byte _080BF38C - .4byte _080BF3A0 - .4byte _080BF3D0 - .4byte _080BF41C - .4byte _080BF498 - .4byte _080BF514 - .4byte _080BF540 - .4byte _080BF590 -_080BF2A8: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BF2B6 - b _080BF5B2 -_080BF2B6: - ldr r0, =gMPlayInfo_BGM - bl m4aMPlayStop - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r3, =0x0000064a - adds r0, r3 - movs r1, 0x6 - strb r1, [r0] - ldr r1, =gUnknown_030060B4 - ldr r4, =gMain - ldr r0, [r4, 0xC] - str r0, [r1] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 2 - bl sub_80C09B0 - ldr r0, [r5] - ldr r1, =0x0000064d - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r2, 0x87 - lsls r2, 3 - adds r4, r2 - strb r1, [r4] - b _080BF5B2 - .pool -_080BF310: - ldr r1, =gPokedexMenu_Gfx - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r3, 0 - bl copy_decompressed_tile_data_to_vram_autofree - ldr r1, =gUnknown_08DC3198 - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x3 - bl PutWindowTilemap - movs r0, 0x2 - bl PutWindowTilemap - ldr r1, =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080BF582 - .pool -_080BF360: - movs r0, 0xD - bl sub_80BFCF4 - movs r0, 0x1 - movs r1, 0xD - bl sub_80BFD7C - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r4, =0x0000064c - adds r0, r4 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - bl sub_80BC844 - b _080BF57A - .pool -_080BF38C: - bl ResetPaletteFade - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _080BF582 - .pool -_080BF3A0: - ldr r0, =gText_CryOf - movs r1, 0x52 - movs r2, 0x21 - bl sub_80BE8DC - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrh r1, [r0] - movs r0, 0 - movs r2, 0x52 - movs r3, 0x31 - bl sub_80C0B44 - ldr r1, =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _080BF582 - .pool -_080BF3D0: - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrh r0, [r0] - movs r1, 0x30 - movs r2, 0x38 - movs r3, 0 - bl sub_80C0E9C - ldr r2, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - movs r3, 0 - strh r0, [r1, 0x10] - ldr r2, =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, =gUnknown_030061EC - strb r3, [r0] - b _080BF57A - .pool -_080BF41C: - ldr r1, =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - ldr r1, =0x00004020 - orrs r0, r1 - ldr r1, =0xff00ffff - ands r0, r1 - movs r1, 0xF8 - lsls r1, 13 - orrs r0, r1 - ldr r1, =0x00ffffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 20 - orrs r0, r1 - str r0, [sp, 0x4] - ldr r1, =0xffff00ff - ldr r0, [sp, 0x8] - ands r0, r1 - movs r1, 0xF0 - lsls r1, 5 - orrs r0, r1 - ldr r1, =0xffffff00 - ands r0, r1 - movs r1, 0xC - orrs r0, r1 - str r0, [sp, 0x8] - add r0, sp, 0x4 - movs r1, 0x2 - bl sub_8145354 - lsls r0, 24 - cmp r0, 0 - bne _080BF462 - b _080BF5B2 -_080BF462: - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, =gUnknown_030061EC - strb r2, [r0] - b _080BF5B2 - .pool -_080BF498: - ldr r1, =0x00ffffff - ldr r0, [sp, 0xC] - ands r0, r1 - movs r1, 0x90 - lsls r1, 20 - orrs r0, r1 - str r0, [sp, 0xC] - ldr r2, =0xffffff00 - add r0, sp, 0xC - ldr r1, [r0, 0x4] - ands r1, r2 - movs r2, 0x12 - orrs r1, r2 - ldr r2, =0xffff00ff - ands r1, r2 - movs r2, 0xC0 - lsls r2, 2 - orrs r1, r2 - str r1, [r0, 0x4] - movs r1, 0x3 - bl sub_8145850 - lsls r0, 24 - cmp r0, 0 - beq _080BF4D8 - ldr r1, =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080BF4D8: - movs r0, 0x3 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _080BF5B2 - .pool -_080BF514: - movs r0, 0x15 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, =gUnknown_030060B4 - ldr r0, [r0] - bl SetVBlankCallback - ldr r1, =gMain - movs r4, 0x87 - lsls r4, 3 - adds r1, r4 - b _080BF582 - .pool -_080BF540: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg -_080BF57A: - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 -_080BF582: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080BF5B2 - .pool -_080BF590: - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r3, 0x87 - lsls r3, 3 - adds r0, r2, r3 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BF5CC - str r1, [r0] -_080BF5B2: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF250 - - thumb_func_start sub_80BF5CC -sub_80BF5CC: @ 80BF5CC - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x2 - bl sub_814545C - bl IsCryPlaying - lsls r0, 24 - cmp r0, 0 - beq _080BF5EC - movs r0, 0x1 - bl sub_80BF7FC - b _080BF5F2 -_080BF5EC: - movs r0, 0 - bl sub_80BF7FC -_080BF5F2: - ldr r1, =gMain - ldrh r2, [r1, 0x2E] - movs r0, 0x1 - ands r0, r2 - adds r5, r1, 0 - cmp r0, 0 - beq _080BF624 - movs r0, 0x1 - bl sub_80BF7FC - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrh r0, [r0] - bl NationalPokedexNumToSpecies - lsls r0, 16 - lsrs r0, 16 - bl sub_8145534 - b _080BF772 - .pool -_080BF624: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080BF636 - b _080BF772 -_080BF636: - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080BF694 - movs r0, 0x15 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =gMPlayInfo_BGM - bl m4aMPlayContinue - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BF790 - str r1, [r0] - movs r0, 0x3 - bl PlaySE - b _080BF772 - .pool -_080BF694: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _080BF6B0 - movs r0, 0x80 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _080BF700 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080BF700 -_080BF6B0: - movs r0, 0x15 - negs r0, r0 - str r3, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =gMPlayInfo_BGM - bl m4aMPlayContinue - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BF790 - str r1, [r0] - movs r0, 0x6D - bl PlaySE - b _080BF772 - .pool -_080BF700: - ldrh r1, [r5, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080BF71E - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BF772 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080BF772 -_080BF71E: - ldr r0, =gUnknown_02039B54 - ldr r0, [r0] - ldrb r1, [r0, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080BF73C - movs r0, 0x20 - bl PlaySE - b _080BF772 - .pool -_080BF73C: - movs r0, 0x15 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =gMPlayInfo_BGM - bl m4aMPlayContinue - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BF790 - str r1, [r0] - movs r0, 0x6D - bl PlaySE -_080BF772: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF5CC - - thumb_func_start sub_80BF790 -sub_80BF790: @ 80BF790 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BF7F0 - bl sub_8145914 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x10] - bl sub_818D820 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _080BF7E4 - cmp r0, 0x2 - ble _080BF7CC - cmp r0, 0x3 - beq _080BF7EC -_080BF7CC: - ldr r0, =sub_80BEA24 - b _080BF7EE - .pool -_080BF7E4: - ldr r0, =sub_80BF0AC - b _080BF7EE - .pool -_080BF7EC: - ldr r0, =sub_80BF82C -_080BF7EE: - str r0, [r4] -_080BF7F0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF790 - - thumb_func_start sub_80BF7FC -sub_80BF7FC: @ 80BF7FC - push {lr} - sub sp, 0x4 - lsls r0, 24 - cmp r0, 0 - beq _080BF810 - ldr r1, =0x00000392 - b _080BF812 - .pool -_080BF810: - ldr r1, =0x000002af -_080BF812: - mov r0, sp - strh r1, [r0] - mov r0, sp - movs r1, 0x5D - movs r2, 0x2 - bl LoadPalette - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF7FC - - thumb_func_start sub_80BF82C -sub_80BF82C: @ 80BF82C - push {r4-r7,lr} - sub sp, 0x44 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x9 - bhi _080BF880 - lsls r0, 2 - ldr r1, =_080BF858 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080BF858: - .4byte _080BF880 - .4byte _080BF8D8 - .4byte _080BF910 - .4byte _080BF93C - .4byte _080BF97C - .4byte _080BF982 - .4byte _080BFA34 - .4byte _080BFAE8 - .4byte _080BFB14 - .4byte _080BFB64 -_080BF880: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BF88E - b _080BFB94 -_080BF88E: - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - ldr r1, =0x0000064a - adds r0, r1 - movs r1, 0x7 - strb r1, [r0] - ldr r1, =gUnknown_030060B4 - ldr r0, [r5, 0xC] - str r0, [r1] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 2 - bl sub_80C09B0 - ldr r0, [r4] - ldr r2, =0x0000064d - adds r0, r2 - movs r1, 0x2 - strb r1, [r0] - movs r0, 0x87 - lsls r0, 3 - adds r1, r5, r0 - movs r0, 0x1 - strb r0, [r1] - b _080BFB94 - .pool -_080BF8D8: - ldr r1, =gPokedexMenu_Gfx - movs r2, 0x80 - lsls r2, 6 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r3, 0 - bl copy_decompressed_tile_data_to_vram_autofree - ldr r1, =gUnknown_08DC2E6C - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - b _080BFB4E - .pool -_080BF910: - movs r0, 0xD - bl sub_80BFCF4 - movs r0, 0x2 - movs r1, 0xD - bl sub_80BFD7C - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064c - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - bl sub_80BC844 - b _080BFB4E - .pool -_080BF93C: - ldr r1, =gText_SizeComparedTo - add r0, sp, 0x4 - bl StringCopy - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - add r0, sp, 0x4 - bl StringAppend - movs r0, 0x1 - add r1, sp, 0x4 - movs r2, 0xF0 - bl GetStringCenterAlignXOffset - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - add r0, sp, 0x4 - movs r2, 0x79 - bl sub_80BE8DC - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _080BFB56 - .pool -_080BF97C: - bl ResetPaletteFade - b _080BFB4E -_080BF982: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - bl PlayerGenderToFrontTrainerPicId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x98 - movs r2, 0x38 - movs r3, 0 - bl sub_80C0EF8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gSprites - lsls r4, r6, 4 - adds r4, r6 - 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 r2, =gPokedexEntries - ldr r0, =gUnknown_02039B54 - ldr r1, [r0] - ldrh r0, [r1] - lsls r0, 5 - adds r0, r2 - ldrh r0, [r0, 0x1C] - strh r0, [r4, 0x26] - ldrh r0, [r1] - lsls r0, 5 - adds r0, r2 - ldrh r1, [r0, 0x1A] - str r1, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldr r0, =gUnknown_0856E610 - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r1, 0x10 - lsls r1, 4 - movs r2, 0x20 - bl LoadPalette - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x12] - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _080BFB56 - .pool -_080BFA34: - ldr r5, =gUnknown_02039B54 - ldr r0, [r5] - ldrh r0, [r0] - movs r1, 0x58 - movs r2, 0x38 - movs r3, 0x1 - bl sub_80C0E9C - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gSprites - lsls r4, r6, 4 - adds r4, r6 - 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 r2, =gPokedexEntries - ldr r1, [r5] - ldrh r0, [r1] - lsls r0, 5 - adds r0, r2 - ldrh r0, [r0, 0x18] - strh r0, [r4, 0x26] - ldrh r0, [r1] - lsls r0, 5 - adds r0, r2 - ldrh r1, [r0, 0x16] - str r1, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldr r0, =gUnknown_0856E610 - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r1, 0x10 - lsls r1, 4 - movs r2, 0x20 - bl LoadPalette - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x10] - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _080BFB4E - .pool -_080BFAE8: - movs r0, 0x15 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, =gUnknown_030060B4 - ldr r0, [r0] - bl SetVBlankCallback - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _080BFB56 - .pool -_080BFB14: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl HideBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg -_080BFB4E: - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 -_080BFB56: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080BFB94 - .pool -_080BFB64: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080BFB94 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - strb r2, [r0] - movs r1, 0x87 - lsls r1, 3 - adds r0, r5, r1 - strb r2, [r0] - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BFBB0 - str r1, [r0] -_080BFB94: - add sp, 0x44 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BF82C - - thumb_func_start sub_80BFBB0 -sub_80BFBB0: @ 80BFBB0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _080BFC10 - movs r0, 0x15 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BFC78 - str r1, [r0] - movs r0, 0x3 - bl PlaySE - b _080BFC5C - .pool -_080BFC10: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080BFC2C - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080BFC5C - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080BFC5C -_080BFC2C: - movs r0, 0x15 - negs r0, r0 - str r2, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BFC78 - str r1, [r0] - movs r0, 0x6D - bl PlaySE -_080BFC5C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BFBB0 - - thumb_func_start sub_80BFC78 -sub_80BFC78: @ 80BFC78 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BFCD0 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x10] - bl sub_818D820 - ldrh r0, [r4, 0x12] - bl sub_818D8F0 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000064e - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080BFCB2 - cmp r0, 0x2 - beq _080BFCCC -_080BFCB2: - ldr r0, =sub_80BEA24 - b _080BFCCE - .pool -_080BFCCC: - ldr r0, =sub_80BF250 -_080BFCCE: - str r0, [r4] -_080BFCD0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BFC78 - - thumb_func_start sub_80BFCDC -sub_80BFCDC: @ 80BFCDC - push {lr} - ldr r1, =gUnknown_08DC2F5C - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BFCDC - - thumb_func_start sub_80BFCF4 -sub_80BFCF4: @ 80BFCF4 - push {lr} - ldr r1, =gUnknown_08DC2FEC - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BFCF4 - thumb_func_start sub_80BFD0C sub_80BFD0C: @ 80BFD0C push {r4-r7,lr} diff --git a/include/graphics.h b/include/graphics.h index 1fbccea053..36b3377532 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2662,6 +2662,11 @@ extern const u8 gUnknown_08DC2B1C[]; extern const u16 gPokedexHoennBg_Pal[]; extern const u16 gPokedexText_Pal[]; extern const u16 gPokedexNationalBg_Pal[]; +extern const u8 gUnknown_08DC3080[]; +extern const u8 gUnknown_08DC3198[]; +extern const u8 gUnknown_08DC2E6C[]; +extern const u8 gUnknown_08DC2F5C[]; +extern const u8 gUnknown_08DC2FEC[]; // berry tag screen extern const u8 gUnknown_08D9BB44[]; diff --git a/include/pokedex_area_screen.h b/include/pokedex_area_screen.h new file mode 100755 index 0000000000..2fb5ade51c --- /dev/null +++ b/include/pokedex_area_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_POKEDEX_AREA_SCREEN_H +#define GUARD_POKEDEX_AREA_SCREEN_H + +void sub_813D3D8(u16, u8*); + +#endif // GUARD_POKEDEX_AREA_SCREEN_H diff --git a/include/pokedex_cry_screen.h b/include/pokedex_cry_screen.h new file mode 100755 index 0000000000..6b5cc13f21 --- /dev/null +++ b/include/pokedex_cry_screen.h @@ -0,0 +1,19 @@ +#ifndef GUARD_POKEDEX_CRY_SCREEN_H +#define GUARD_POKEDEX_CRY_SCREEN_H + +struct CryRelatedStruct +{ + u16 unk0; + u8 unk2; + u8 paletteNo; + u8 xPos; + u8 yPos; +}; + +bool8 sub_8145354(struct CryRelatedStruct*, u8); +void sub_814545C(u8); +void sub_8145534(u16); +void sub_8145914(void); +bool8 sub_8145850(struct CryRelatedStruct*, u8); + +#endif diff --git a/include/strings.h b/include/strings.h index 7c81dbcfba..c51824225e 100644 --- a/include/strings.h +++ b/include/strings.h @@ -366,6 +366,11 @@ extern const u8 gText_ThreeDashes[]; extern const u8 gText_PkmnHPRestoredByVar2[]; extern const u8 gText_CantBeUsedOnPkmn[]; +//pokedex text + +extern const u8 gText_CryOf[]; +extern const u8 gText_SizeComparedTo[]; + //birch dex rating text extern const u8 gBirchDexRatingText_LessThan10[]; extern const u8 gBirchDexRatingText_LessThan20[]; diff --git a/src/pokedex.c b/src/pokedex.c index 3b4f193bb3..bef5abbc96 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -22,12 +22,39 @@ #include "text_window.h" #include "data2.h" #include "string_util.h" +#include "trig.h" +#include "pokedex_area_screen.h" +#include "pokedex_cry_screen.h" +#include "strings.h" +#include "m4a.h" +#include "international_string_util.h" extern struct PokedexView *gUnknown_02039B4C; extern u16 gUnknown_02039B50; extern u8 gUnknown_02039B52; +extern struct PokedexListItem *gUnknown_02039B54; extern u8 gUnknown_030060B0; +extern MainCallback gUnknown_030060B4; +extern u8 gUnknown_030061EC; + +struct PokedexEntry +{ + /*0x00*/ u8 categoryName[12]; + /*0x0C*/ u16 height; //in decimeters + /*0x0E*/ u16 weight; //in hectograms + /*0x10*/ const u8 *description; + /*0x14*/ u16 unused; + /*0x16*/ u16 pokemonScale; + /*0x18*/ u16 pokemonOffset; + /*0x1A*/ u16 trainerScale; + /*0x1C*/ u16 trainerOffset; +}; /*size = 0x20*/ + +extern struct BgTemplate gUnknown_0856E630[]; +extern struct WindowTemplate gUnknown_0856E640[]; +extern const u16 gUnknown_0856E610[16]; +extern const struct PokedexEntry gPokedexEntries[]; #define HOENN_DEX_COUNT 202 #define NATIONAL_DEX_COUNT 386 @@ -90,6 +117,14 @@ enum DEX_MODE_NATIONAL }; +enum +{ + AREA_SCREEN, + CRY_SCREEN, + SIZE_SCREEN, + CANCEL_SCREEN, +}; + // this file's functions void sub_80BB774(void); void sub_80BB78C(u8); @@ -121,9 +156,9 @@ bool8 sub_80BD404(u8, u8, u8); u16 sub_80BD69C(u16, u16); void sub_80BD8D0(void); bool8 sub_80BD930(void); -void sub_80BDA40(void); +u8 sub_80BDA40(void); u16 sub_80BDA8C(u16); -u16 sub_80BDACC(u16, u16, u16); +u32 sub_80BDACC(u16, s16, s16); void sub_80BDB7C(u8); void sub_80BE470(struct Sprite *sprite); void sub_80BE604(struct Sprite *sprite); @@ -135,8 +170,31 @@ void sub_80BE834(struct Sprite *sprite); void sub_80BE4E0(struct Sprite *sprite); u8 sub_80BE91C(struct PokedexListItem*, u8); bool8 sub_80BE9C4(u8); -void sub_80BE9F8(struct PokedexListItem*, u8); -void sub_80C09B0(u8); +u8 sub_80BE9F8(struct PokedexListItem*, u8); +void sub_80BEA24(u8); +void sub_80BEDF4(u8); +void sub_80BEFD0(u8); +void sub_80BF038(u8); +void sub_80BF070(u8); +void sub_80BF0AC(u8); +void sub_80BF1B4(u8); +void sub_80BF1EC(u8); +void sub_80BF250(u8); +void sub_80BF5CC(u8); +void sub_80BF790(u8); +void sub_80BF7FC(u8); +void sub_80BF82C(u8); +void sub_80BFBB0(u8); +void sub_80BFC78(u8); +void sub_80BFCDC(u16); +void sub_80BFCF4(u16); +void sub_80BFD0C(u8, u16); +void sub_80BFD7C(u8, u16); +void sub_80C020C(u16, u8, u8, u8); +void sub_80C09B0(u16); +void sub_80C0B44(u8, u16, u8, u8); +void sub_80C0D30(u8, u16); +u8 sub_80C0EF8(u16, u8, u8, u8); u16 sub_80C0E0C(u8, u16, u16, u16); u8 sub_80C1258(); @@ -1819,3 +1877,1209 @@ u16 sub_80BD69C(u16 a, u16 b) gUnknown_02039B4C->unk638++; return a; } + +void sub_80BD8D0(void) +{ + u16 i; + + for (i = 0; i < 4; i++) + { + u16 spriteId = gUnknown_02039B4C->unk61E[i]; + + if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF) + gUnknown_02039B4C->selectedMonSpriteId = spriteId; + } +} + +u8 sub_80BD930(void) +{ + u16 r2; + u16 r4 = gUnknown_02039B4C->selectedPokemon; + + if ((gMain.newKeys & DPAD_UP) && r4) + { + r2 = r4; + while (r2 != 0) + { + r2 = sub_80C0E0C(1, r2, 0, gUnknown_02039B4C->pokemonListCount - 1); + + if (gUnknown_02039B4C->unk0[r2].seen) + { + r4 = r2; + break; + } + } + + if (gUnknown_02039B4C->selectedPokemon == r4) + return FALSE; + else + { + gUnknown_02039B4C->selectedPokemon = r4; + gUnknown_02039B4C->unk62C -= 16; + return TRUE; + } + } + else if ((gMain.newKeys & DPAD_DOWN) && r4 < gUnknown_02039B4C->pokemonListCount - 1) + { + r2 = r4; + while (r2 < gUnknown_02039B4C->pokemonListCount - 1) + { + r2 = sub_80C0E0C(0, r2, 0, gUnknown_02039B4C->pokemonListCount - 1); + + if (gUnknown_02039B4C->unk0[r2].seen) + { + r4 = r2; + break; + } + } + + if (gUnknown_02039B4C->selectedPokemon == r4) + return FALSE; + else + { + gUnknown_02039B4C->selectedPokemon = r4; + gUnknown_02039B4C->unk62C += 16; + return TRUE; + } + } + return FALSE; +} + +u8 sub_80BDA40(void) +{ + u16 i; + + for (i = 0; i < 4; i++) + { + if (gUnknown_02039B4C->unk61E[i] != 0xFFFF) + { + sub_818D820(gUnknown_02039B4C->unk61E[i]); + gUnknown_02039B4C->unk61E[i] |= 0xFFFF; + } + } + return FALSE; +} + +u16 sub_80BDA8C(u16 a1) +{ + if (a1 >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[a1].dexNum == 0xFFFF) + return 0xFFFF; + else if (gUnknown_02039B4C->unk0[a1].seen) + return gUnknown_02039B4C->unk0[a1].dexNum; + else + return 0; +} + +u32 sub_80BDACC(u16 a, s16 b, s16 c) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (gUnknown_02039B4C->unk61E[i] == 0xFFFF) + { + u8 spriteId = sub_80C0E9C(a, b, c, i); + + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.priority = 3; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = i; + gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(a); + gUnknown_02039B4C->unk61E[i] = spriteId; + return spriteId; + } + } + return 0xFFFF; +} + +void sub_80BDB7C(u8 a) +{ + u8 spriteId; + u16 r5; + + spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 4, 0); + gSprites[spriteId].data[1] = 0; + + spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 156, 0); + gSprites[spriteId].data[1] = 1; + gSprites[spriteId].vFlip = TRUE; + + CreateSprite(&gUnknown_0855D194, 230, 20, 0); + CreateSprite(&gUnknown_0855D1C4, 16, 120, 0); + + spriteId = CreateSprite(&gUnknown_0855D1C4, 48, 120, 0); + StartSpriteAnim(&gSprites[spriteId], 3); + + spriteId = CreateSprite(&gUnknown_0855D1C4, 16, 144, 0); + StartSpriteAnim(&gSprites[spriteId], 2); + gSprites[spriteId].data[2] = 0x80; + + spriteId = CreateSprite(&gUnknown_0855D1C4, 48, 144, 0); + StartSpriteAnim(&gSprites[spriteId], 1); + + spriteId = CreateSprite(&gUnknown_0855D1DC, 0, 80, 2); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 30; + gSprites[spriteId].data[0] = 0x1E; + gSprites[spriteId].data[1] = 0; + + spriteId = CreateSprite(&gUnknown_0855D1DC, 0, 80, 2); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].data[0] = 0x1F; + gSprites[spriteId].data[1] = 0x80; + + if (a == 0) + { + u32 _a; + + if (!IsNationalPokedexEnabled()) + { + CreateSprite(&gUnknown_0855D1F4, 32, 40, 1); + + spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 72, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + _a = 0; + + spriteId = CreateSprite(&gUnknown_0855D224, 24, 48, 1); + r5 = gUnknown_02039B4C->unk61A / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if (r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D224, 32, 48, 1); + r5 = (gUnknown_02039B4C->unk61A % 100) / 10; + if (r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D224, 40, 48, 1); + r5 = (gUnknown_02039B4C->unk61A % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + _a = 0; + + spriteId = CreateSprite(&gUnknown_0855D224, 24, 80, 1); + r5 = gUnknown_02039B4C->unk61C / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if (r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D224, 32, 80, 1); + r5 = (gUnknown_02039B4C->unk61C % 100) / 10; + if (r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D224, 40, 80, 1); + r5 = (gUnknown_02039B4C->unk61C % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + } + else + { + u16 r6; + + CreateSprite(&gUnknown_0855D1F4, 32, 40, 1); + + spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 76, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + + CreateSprite(&gUnknown_0855D20C, 17, 45, 1); + + spriteId = CreateSprite(&gUnknown_0855D20C, 17, 55, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + + CreateSprite(&gUnknown_0855D20C, 17, 81, 1); + + spriteId = CreateSprite(&gUnknown_0855D20C, 17, 91, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + + r6 = GetHoennPokedexCount(0); + _a = 0; + + spriteId = CreateSprite(&gUnknown_0855D23C, 40, 45, 1); + r5 = r6 / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if (r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 48, 45, 1); + r5 = (r6 % 100) / 10; + if (r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 56, 45, 1); + r5 = (r6 % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + + _a = 0; + + spriteId = CreateSprite(&gUnknown_0855D23C, 40, 55, 1); + r5 = gUnknown_02039B4C->unk61A / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if (r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 48, 55, 1); + r5 = (gUnknown_02039B4C->unk61A % 100) / 10; + if (r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 56, 55, 1); + r5 = (gUnknown_02039B4C->unk61A % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + + r6 = GetHoennPokedexCount(1); + _a = 0; + + spriteId = CreateSprite(&gUnknown_0855D23C, 40, 81, 1); + r5 = r6 / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if (r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 48, 81, 1); + r5 = (r6 % 100) / 10; + if (r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 56, 81, 1); + r5 = (r6 % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + + _a = 0; + + spriteId = CreateSprite(&gUnknown_0855D23C, 40, 91, 1); + r5 = gUnknown_02039B4C->unk61C / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if (r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 48, 91, 1); + r5 = (gUnknown_02039B4C->unk61C % 100) / 10; + if (r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = TRUE; + + spriteId = CreateSprite(&gUnknown_0855D23C, 56, 91, 1); + r5 = (gUnknown_02039B4C->unk61C % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + } + spriteId = CreateSprite(&gUnknown_0855D254, 136, 96, 1); + gSprites[spriteId].invisible = TRUE; + } + else + { + spriteId = CreateSprite(&gUnknown_0855D254, 136, 80, 1); + gSprites[spriteId].invisible = TRUE; + } +} + +void nullsub_38(struct Sprite *sprite) +{ +} + +void sub_80BE44C(struct Sprite *sprite) +{ + if (gUnknown_02039B4C->unk64A != 0) + DestroySprite(sprite); +} + +//Move Pokemon into position for description page +void sub_80BE470(struct Sprite *sprite) +{ + sprite->oam.priority = 0; + sprite->oam.affineMode = 0; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + if (sprite->pos1.x != 48 || sprite->pos1.y != 56) + { + if (sprite->pos1.x > 48) + sprite->pos1.x--; + if (sprite->pos1.x < 48) + sprite->pos1.x++; + + if (sprite->pos1.y > 56) + sprite->pos1.y--; + if (sprite->pos1.y < 56) + sprite->pos1.y++; + } + else + { + sprite->callback = nullsub_38; + } +} + +void sub_80BE4E0(struct Sprite *sprite) +{ + u8 data1 = sprite->data[1]; + + if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3) + { + sub_818D820(gUnknown_02039B4C->unk61E[data1]); + gUnknown_02039B4C->unk61E[data1] = 0xFFFF; + } + else + { + u32 var; + + sprite->pos2.y = gSineTable[(u8)sprite->data[5]] * 76 / 256; + var = 0x10000 / gSineTable[sprite->data[5] + 0x40]; + if (var > 0xFFFF) + var = 0xFFFF; + SetOamMatrix(sprite->data[1] + 1, 0x100, 0, 0, var); + sprite->oam.matrixNum = data1 + 1; + + if (sprite->data[5] > -64 && sprite->data[5] < 64) + { + sprite->invisible = FALSE; + sprite->data[0] = 1; + } + else + { + sprite->invisible = TRUE; + } + + if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0) + { + sub_818D820(gUnknown_02039B4C->unk61E[data1]); + gUnknown_02039B4C->unk61E[data1] = 0xFFFF; + } + } +} + +void sub_80BE604(struct Sprite *sprite) +{ + if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3) + DestroySprite(sprite); + else + sprite->pos2.y = gUnknown_02039B4C->selectedPokemon * 120 / (gUnknown_02039B4C->pokemonListCount - 1); +} + +void sub_80BE658(struct Sprite *sprite) +{ + if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3) + { + DestroySprite(sprite); + } + else + { + u8 r0; + + if (sprite->data[1] != 0) + { + if (gUnknown_02039B4C->selectedPokemon == gUnknown_02039B4C->pokemonListCount - 1) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + r0 = sprite->data[2]; + } + else + { + if (gUnknown_02039B4C->selectedPokemon == 0) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + r0 = sprite->data[2] - 128; + } + sprite->pos2.y = gSineTable[r0] / 64; + sprite->data[2] = sprite->data[2] + 8; + if (gUnknown_02039B4C->menuIsOpen == 0 && gUnknown_02039B4C->menuY == 0 && sprite->invisible == 0) + sprite->invisible = FALSE; + else + sprite->invisible = TRUE; + } +} + +void sub_80BE758(struct Sprite *sprite) +{ + if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3) + DestroySprite(sprite); +} + +void sub_80BE780(struct Sprite *sprite) +{ + if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3) + { + DestroySprite(sprite); + } + else + { + u8 val; + s16 r3; + s16 r0; + + val = gUnknown_02039B4C->unk62C + sprite->data[1]; + r3 = gSineTable[val]; + r0 = gSineTable[val + 0x40]; + SetOamMatrix(sprite->data[0], r0, r3, -r3, r0); + + val = gUnknown_02039B4C->unk62C + (sprite->data[1] + 0x40); + r3 = gSineTable[val]; + r0 = gSineTable[val + 0x40]; + sprite->pos2.x = r0 * 40 / 256; + sprite->pos2.y = r3 * 40 / 256; + } +} + +void sub_80BE834(struct Sprite *sprite) +{ + if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3) + { + DestroySprite(sprite); + } + else + { + u16 r1 = gUnknown_02039B4C->unk64A == 0 ? 80 : 96; + + if (gUnknown_02039B4C->menuIsOpen != 0 && gUnknown_02039B4C->menuY == r1) + { + sprite->invisible = FALSE; + sprite->pos2.y = gUnknown_02039B4C->menuCursorPos * 16; + sprite->pos2.x = gSineTable[(u8)sprite->data[2]] / 64; + sprite->data[2] += 8; + } + else + { + sprite->invisible = TRUE; + } + } +} + +void sub_80BE8DC(const u8* a, u8 b, u8 c) +{ + u8 sp14[3]; + sp14[0] = 0; + sp14[1] = 15; + sp14[2] = 3; + + AddTextPrinterParameterized2(0, 1, b, c, 0, 0, sp14, -1, a); +} + +u8 sub_80BE91C(struct PokedexListItem* item, u8 b) +{ + u8 taskId; + + gUnknown_02039B54 = item; + taskId = CreateTask(sub_80BEA24, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = b; + gTasks[taskId].data[5] = 255; + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_0856E630, 4); + SetBgTilemapBuffer(3, AllocZeroed(0x800)); + SetBgTilemapBuffer(2, AllocZeroed(0x800)); + SetBgTilemapBuffer(1, AllocZeroed(0x800)); + SetBgTilemapBuffer(0, AllocZeroed(0x800)); + InitWindows(gUnknown_0856E640); + DeactivateAllTextPrinters(); + + return taskId; +} + +bool8 sub_80BE9C4(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0 && gTasks[taskId].func == sub_80BEDF4) + return FALSE; + else + return TRUE; +} + +u8 sub_80BE9F8(struct PokedexListItem *item, u8 b) +{ + gUnknown_02039B54 = item; + gTasks[b].data[0] = 1; + gTasks[b].data[1] = 0; + gTasks[b].data[2] = 0; + gTasks[b].data[3] = 0; + return b; +} + +void sub_80BEA24(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + u16 r2; + + gUnknown_02039B4C->unk64A = 1; + gUnknown_030060B4 = gMain.vblankCallback; + SetVBlankCallback(NULL); + r2 = 0; + if (gTasks[taskId].data[1] != 0) + r2 += 0x1000; + if (gTasks[taskId].data[2] != 0) + r2 |= 0x200; + sub_80C09B0(r2); + gMain.state = 1; + } + break; + case 1: + copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0); + FillWindowPixelBuffer(0, 0); + PutWindowTilemap(0); + PutWindowTilemap(1); + sub_80C0D30(1, gUnknown_02039B54->dexNum); + CopyWindowToVram(1, 2); + gMain.state++; + break; + case 2: + sub_80BFCDC(0xD); + sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD); + sub_80BC844(gUnknown_02039B4C->unk64C_1); + gMain.state++; + break; + case 3: + gMain.state++; + break; + case 4: + sub_80C020C(gUnknown_02039B54->dexNum, gUnknown_02039B4C->dexMode == 0 ? 0 : 1, gUnknown_02039B54->owned, 0); + if (!gUnknown_02039B54->owned) + LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); + CopyWindowToVram(0, 3); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 5: + if (gTasks[taskId].data[1] == 0) + { + gTasks[taskId].data[4] = (u16)sub_80C0E9C(gUnknown_02039B54->dexNum, 0x30, 0x38, 0); + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + } + gMain.state++; + break; + case 6: + { + u32 r3 = 0; + + if (gTasks[taskId].data[2] != 0) + r3 = 0x14; + if (gTasks[taskId].data[1] != 0) + r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 16)); + BeginNormalPaletteFade(~r3, 0, 16, 0, 0); + SetVBlankCallback(gUnknown_030060B4); + gMain.state++; + } + break; + case 7: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 8: + if (!gPaletteFade.active) + { + gMain.state++; + if (gTasks[taskId].data[3] == 0) + { + StopCryAndClearCrySongs(); + PlayCry2(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum), 0, 0x7D, 0xA); + } + else + { + gMain.state++; + } + } + break; + case 9: + if (!IsCryPlayingOrClearCrySongs()) + gMain.state++; + break; + case 10: + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[3] = 1; + gTasks[taskId].func = sub_80BEDF4; + gMain.state = 0; + break; + } +} + +void sub_80BEDB0(void) +{ + void *r0; + FreeAllWindowBuffers(); + r0 = GetBgTilemapBuffer(0); + if (r0) + Free(r0); + r0 = GetBgTilemapBuffer(1); + if (r0) + Free(r0); + r0 = GetBgTilemapBuffer(2); + if (r0) + Free(r0); + r0 = GetBgTilemapBuffer(3); + if (r0) + Free(r0); +} + +void sub_80BEDF4(u8 taskId) +{ + if (gTasks[taskId].data[0] != 0) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_80BF038; + PlaySE(SE_Z_SCROLL); + return; + } + if (gMain.newKeys & B_BUTTON) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_80BF070; + PlaySE(SE_PC_OFF); + return; + } + if (gMain.newKeys & A_BUTTON) + { + switch (gUnknown_02039B4C->selectedScreen) + { + case AREA_SCREEN: + BeginNormalPaletteFade(-0x15, 0, 0, 16, 0); + gUnknown_02039B4C->unk64E = 1; + gTasks[taskId].func = sub_80BEFD0; + PlaySE(SE_PIN); + break; + case CRY_SCREEN: + BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); + gUnknown_02039B4C->unk64E = 2; + gTasks[taskId].func = sub_80BEFD0; + PlaySE(SE_PIN); + break; + case SIZE_SCREEN: + if (!gUnknown_02039B54->owned) + { + PlaySE(SE_HAZURE); + } + else + { + BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); + gUnknown_02039B4C->unk64E = 3; + gTasks[taskId].func = sub_80BEFD0; + PlaySE(SE_PIN); + } + break; + case CANCEL_SCREEN: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = sub_80BF070; + PlaySE(SE_PC_OFF); + break; + } + return; + } + if (((gMain.newKeys & DPAD_LEFT) + || ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + && gUnknown_02039B4C->selectedScreen > 0) + { + gUnknown_02039B4C->selectedScreen--; + sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD); + PlaySE(SE_Z_PAGE); + return; + } + if (((gMain.newKeys & DPAD_RIGHT) + || ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + && gUnknown_02039B4C->selectedScreen < 3) + { + gUnknown_02039B4C->selectedScreen++; + sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD); + PlaySE(SE_Z_PAGE); + return; + } +} + +void sub_80BEFD0(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_818D820(gTasks[taskId].data[4]); + switch (gUnknown_02039B4C->unk64E) + { + case 1: + default: + gTasks[taskId].func = sub_80BF0AC; + break; + case 2: + gTasks[taskId].func = sub_80BF250; + break; + case 3: + gTasks[taskId].func = sub_80BF82C; + break; + } + } +} + +void sub_80BF038(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_818D820(gTasks[taskId].data[4]); + gTasks[taskId].func = sub_80BEA24; + } +} + +void sub_80BF070(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_818D820(gTasks[taskId].data[4]); + sub_80BEDB0(); + DestroyTask(taskId); + } +} + +void sub_80BF0AC(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + gUnknown_02039B4C->unk64A = 5; + gUnknown_030060B4 = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_80C09B0(0x200); + gUnknown_02039B4C->selectedScreen = AREA_SCREEN; + gMain.state = 1; + } + break; + case 1: + sub_80BFCF4(0xD); + sub_80BFD7C(0, 0xD); + sub_80BC844(gUnknown_02039B4C->unk64C_1); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256); + gMain.state++; + break; + case 2: + sub_813D3D8(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum), &gUnknown_02039B4C->unk64E); + SetVBlankCallback(gUnknown_030060B4); + gUnknown_02039B4C->unk64E = 0; + gMain.state = 0; + gTasks[taskId].func = sub_80BF1B4; + break; + } +} + +void sub_80BF1B4(u8 taskId) +{ + if (gUnknown_02039B4C->unk64E != 0) + gTasks[taskId].func = sub_80BF1EC; +} + +void sub_80BF1EC(u8 taskId) +{ + if (!gPaletteFade.active) + { + switch (gUnknown_02039B4C->unk64E) + { + case 1: + default: + gTasks[taskId].func = sub_80BEA24; + break; + case 2: + gTasks[taskId].func = sub_80BF250; + break; + } + } +} + +void sub_80BF250(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + m4aMPlayStop(&gMPlayInfo_BGM); + gUnknown_02039B4C->unk64A = 6; + gUnknown_030060B4 = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_80C09B0(0x200); + gUnknown_02039B4C->selectedScreen = CRY_SCREEN; + gMain.state = 1; + } + break; + case 1: + copy_decompressed_tile_data_to_vram_autofree(3, &gPokedexMenu_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, &gUnknown_08DC3198, 0, 0); + FillWindowPixelBuffer(0, 0); + PutWindowTilemap(0); + PutWindowTilemap(3); + PutWindowTilemap(2); + gMain.state++; + break; + case 2: + sub_80BFCF4(0xD); + sub_80BFD7C(1, 0xD); + sub_80BC844(gUnknown_02039B4C->unk64C_1); + gMain.state++; + break; + case 3: + ResetPaletteFade(); + gMain.state++; + break; + case 4: + sub_80BE8DC(gText_CryOf, 0x52, 33); + sub_80C0B44(0, gUnknown_02039B54->dexNum, 0x52, 49); + gMain.state++; + break; + case 5: + gTasks[taskId].data[4] = sub_80C0E9C(gUnknown_02039B54->dexNum, 48, 56, 0); + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + gUnknown_030061EC = 0; + gMain.state++; + break; + case 6: + { + struct CryRelatedStruct sp4; + + sp4.unk0 = 0x4020; + sp4.unk2 = 0x1F; + sp4.paletteNo = 8; + sp4.yPos = 0x1E; + sp4.xPos = 0xC; + if (sub_8145354(&sp4, 2) != 0) + { + gMain.state++; + gUnknown_030061EC = 0; + } + } + break; + case 7: + { + struct CryRelatedStruct spC; + + spC.paletteNo = 9; + spC.xPos = 0x12; + spC.yPos = 3; + if (sub_8145850(&spC, 3) != 0) + gMain.state++; + CopyWindowToVram(3, 2); + CopyWindowToVram(0, 3); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + } + break; + case 8: + BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_030060B4); + gMain.state++; + break; + case 9: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 10: + gUnknown_02039B4C->unk64E = 0; + gMain.state = 0; + gTasks[taskId].func = sub_80BF5CC; + break; + } +} + +void sub_80BF5CC(u8 taskId) +{ + sub_814545C(2); + + if (IsCryPlaying()) + sub_80BF7FC(1); + else + sub_80BF7FC(0); + + if (gMain.newKeys & A_BUTTON) + { + sub_80BF7FC(1); + sub_8145534(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum)); + return; + } + else if (!gPaletteFade.active) + { + if (gMain.newKeys & B_BUTTON) + { + BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); + m4aMPlayContinue(&gMPlayInfo_BGM); + gUnknown_02039B4C->unk64E = 1; + gTasks[taskId].func = sub_80BF790; + PlaySE(SE_PC_OFF); + return; + } + if ((gMain.newKeys & DPAD_LEFT) + || ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); + m4aMPlayContinue(&gMPlayInfo_BGM); + gUnknown_02039B4C->unk64E = 2; + gTasks[taskId].func = sub_80BF790; + PlaySE(SE_Z_PAGE); + return; + } + if ((gMain.newKeys & DPAD_RIGHT) + || ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + if (!gUnknown_02039B54->owned) + { + PlaySE(SE_HAZURE); + } + else + { + BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); + m4aMPlayContinue(&gMPlayInfo_BGM); + gUnknown_02039B4C->unk64E = 3; + gTasks[taskId].func = sub_80BF790; + PlaySE(SE_Z_PAGE); + } + return; + } + } +} + +void sub_80BF790(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_8145914(); + sub_818D820(gTasks[taskId].data[4]); + switch (gUnknown_02039B4C->unk64E) + { + default: + case 1: + gTasks[taskId].func = sub_80BEA24; + break; + case 2: + gTasks[taskId].func = sub_80BF0AC; + break; + case 3: + gTasks[taskId].func = sub_80BF82C; + break; + } + } +} + +void sub_80BF7FC(u8 a) +{ + u16 unk; + + if (a != 0) + unk = 0x392; + else + unk = 0x2AF; + LoadPalette(&unk, 0x5D, 2); +} + +void sub_80BF82C(u8 taskId) +{ + u8 spriteId; + + switch (gMain.state) + { + default: + case 0: + if (!gPaletteFade.active) + { + gUnknown_02039B4C->unk64A = 7; + gUnknown_030060B4 = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_80C09B0(0x200); + gUnknown_02039B4C->selectedScreen = SIZE_SCREEN; + gMain.state = 1; + } + break; + case 1: + copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, gUnknown_08DC2E6C, 0, 0); + FillWindowPixelBuffer(0, 0); + PutWindowTilemap(0); + gMain.state++; + break; + case 2: + sub_80BFCF4(0xD); + sub_80BFD7C(2, 0xD); + sub_80BC844(gUnknown_02039B4C->unk64C_1); + gMain.state++; + break; + case 3: + { + u8 string[0x40]; //I hope this is the correct size + + StringCopy(string, gText_SizeComparedTo); + StringAppend(string, gSaveBlock2Ptr->playerName); + sub_80BE8DC(string, GetStringCenterAlignXOffset(1, string, 0xF0), 0x79); + gMain.state++; + } + break; + case 4: + ResetPaletteFade(); + gMain.state++; + break; + case 5: + spriteId = sub_80C0EF8(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), 152, 56, 0); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 1; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_02039B54->dexNum].trainerOffset; + SetOamMatrix(1, gPokedexEntries[gUnknown_02039B54->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_02039B54->dexNum].trainerScale); + LoadPalette(gUnknown_0856E610, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + gTasks[taskId].data[5] = spriteId; + gMain.state++; + break; + case 6: + spriteId = sub_80C0E9C(gUnknown_02039B54->dexNum, 88, 56, 1); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 2; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_02039B54->dexNum].pokemonOffset; + SetOamMatrix(2, gPokedexEntries[gUnknown_02039B54->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_02039B54->dexNum].pokemonScale); + LoadPalette(gUnknown_0856E610, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + gTasks[taskId].data[4] = spriteId; + CopyWindowToVram(0, 3); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 7: + BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_030060B4); + gMain.state++; + break; + case 8: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 9: + if (!gPaletteFade.active) + { + gUnknown_02039B4C->unk64E = 0; + gMain.state = 0; + gTasks[taskId].func = sub_80BFBB0; + } + break; + } +} + +void sub_80BFBB0(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); + gUnknown_02039B4C->unk64E = 1; + gTasks[taskId].func = sub_80BFC78; + PlaySE(SE_PC_OFF); + } + else if ((gMain.newKeys & DPAD_LEFT) + || ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); + gUnknown_02039B4C->unk64E = 2; + gTasks[taskId].func = sub_80BFC78; + PlaySE(SE_Z_PAGE); + } +} + +void sub_80BFC78(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_818D820(gTasks[taskId].data[4]); + sub_818D8F0(gTasks[taskId].data[5]); + switch (gUnknown_02039B4C->unk64E) + { + default: + case 1: + gTasks[taskId].func = sub_80BEA24; + break; + case 2: + gTasks[taskId].func = sub_80BF250; + break; + } + } +} + +void sub_80BFCDC(u16 a) +{ + CopyToBgTilemapBuffer(1, gUnknown_08DC2F5C, 0, 0); +} + +void sub_80BFCF4(u16 a) +{ + CopyToBgTilemapBuffer(1, gUnknown_08DC2FEC, 0, 0); +} + +/* void sub_80BFD0C(u8 a, u16 unused) +{ + u8 i; + u8 j; + u16* r7 = GetBgTilemapBuffer(1); + u8 r5; + u16 r3; + + for (i = 0; i < 4; i++) + { + r5 = i * 7 + 1; + if (i == a) + r3 = 0x2000; + else + r3 = 0x4000; + + for (j = 0; j < 7; j++) + { + u32 r1 = (r5 + j); + + *(r7 + r1) = (*(r7 + r1) & 0xFFF) | r3; + *(r7 + 0x40 + r1) = (*(r7 + 0x40 + r1) & 0xFFF) | r3; + } + } + CopyBgTilemapBufferToVram(1); +} */