diff --git a/asm/pokedex.s b/asm/pokedex.s index 2745593e57..67c7ca4a05 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -5,3976 +5,6 @@ .text - thumb_func_start sub_80BB534 -sub_80BB534: @ 80BB534 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0x1 - beq _080BB5FC - cmp r0, 0x1 - ble _080BB558 - cmp r0, 0x2 - beq _080BB628 - cmp r0, 0x3 - bne _080BB558 - b _080BB71C -_080BB558: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl sub_80C09B0 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r2, sp, 0x4 - mov r8, r2 - mov r2, sp - movs r6, 0 - ldr r1, =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_080BB582: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _080BB582 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r3, r12 - orrs r0, r3 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - b _080BB74C - .pool -_080BB5FC: - bl ScanlineEffect_Stop - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x8 - strb r0, [r1] - bl dp13_810BB8C - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _080BB74C - .pool -_080BB628: - ldr r4, =gUnknown_02039B4C - ldr r0, =0x00000664 - bl AllocZeroed - str r0, [r4] - bl sub_80BB384 - ldr r0, =sub_80BB78C - movs r1, 0 - bl CreateTask - ldr r1, [r4] - ldr r5, =gSaveBlock2Ptr - ldr r0, [r5] - ldrb r0, [r0, 0x19] - ldr r3, =0x00000612 - adds r1, r3 - strh r0, [r1] - bl IsNationalPokedexEnabled - adds r1, r0, 0 - cmp r1, 0 - bne _080BB65E - ldr r0, [r4] - ldr r2, =0x00000612 - adds r0, r2 - strh r1, [r0] -_080BB65E: - ldr r1, [r4] - ldr r0, [r5] - ldrb r2, [r0, 0x18] - ldr r3, =0x00000616 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, =gUnknown_02039B50 - ldrh r2, [r0] - subs r3, 0x8 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, =gUnknown_02039B52 - ldrb r0, [r0] - ldr r2, =0x0000062c - adds r1, r2 - strb r0, [r1] - ldr r0, [r4] - adds r3, 0x3F - adds r0, r3 - movs r1, 0 - strb r1, [r0] - bl IsNationalPokedexEnabled - cmp r0, 0 - bne _080BB6D0 - movs r0, 0 - bl GetHoennPokedexCount - ldr r1, [r4] - ldr r2, =0x0000061a - adds r1, r2 - strh r0, [r1] - movs r0, 0x1 - bl GetHoennPokedexCount - b _080BB6E4 - .pool -_080BB6D0: - movs r0, 0 - bl GetNationalPokedexCount - ldr r1, [r4] - ldr r2, =0x0000061a - adds r1, r2 - strh r0, [r1] - movs r0, 0x1 - bl GetNationalPokedexCount -_080BB6E4: - ldr r1, [r4] - ldr r3, =0x0000061c - adds r1, r3 - strh r0, [r1] - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000062d - adds r0, r1 - movs r1, 0x8 - strb r1, [r0] - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080BB74C - .pool -_080BB71C: - movs r0, 0x1 - bl EnableInterrupts - ldr r0, =sub_80BB370 - bl SetVBlankCallback - ldr r0, =sub_80BB774 - bl SetMainCallback2 - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r3, =0x00000612 - adds r0, r1, r3 - ldrb r0, [r0] - ldr r2, =0x00000616 - adds r1, r2 - ldrb r1, [r1] - bl sub_80BC8D4 - ldr r0, =gMPlayInfo_BGM - ldr r1, =0x0000ffff - movs r2, 0x80 - bl m4aMPlayVolumeControl -_080BB74C: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BB534 - - thumb_func_start sub_80BB774 -sub_80BB774: @ 80BB774 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80BB774 - - thumb_func_start sub_80BB78C -sub_80BB78C: @ 80BB78C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r0, =0x0000064c - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0 - bl sub_80BC514 - lsls r0, 24 - cmp r0, 0 - beq _080BB7BE - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BB7D4 - str r0, [r1] -_080BB7BE: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BB78C - - thumb_func_start sub_80BB7D4 -sub_80BB7D4: @ 80BB7D4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, =gUnknown_02039B4C - ldr r0, [r7] - ldr r4, =0x00000652 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r3, [r7] - adds r1, r3, r4 - ldrh r0, [r1] - movs r4, 0 - ldrsh r2, [r1, r4] - mov r8, r2 - cmp r2, 0 - beq _080BB810 - subs r0, 0x8 - strh r0, [r1] - b _080BBA06 - .pool -_080BB810: - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - mov r9, r0 - ands r0, r1 - cmp r0, 0 - beq _080BB8A4 - ldr r1, =0x0000060e - adds r0, r3, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3, r0 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - beq _080BB8A4 - bl sub_80BD8D0 - ldr r4, =gSprites - ldr r0, [r7] - ldr r5, =0x00000626 - adds r0, r5 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - mov r0, r9 - lsls r0, r1 - mvns r0, r0 - mov r2, r8 - str r2, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r7] - adds r0, r5 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, =sub_80BE470 - str r1, [r0] - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BBBF4 - str r1, [r0] - movs r0, 0x15 - b _080BB976 - .pool -_080BB8A4: - ldrh r2, [r2, 0x2E] - movs r0, 0x8 - ands r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _080BB8FC - ldr r3, =gUnknown_02039B4C - ldr r1, [r3] - ldr r4, =0x00000652 - adds r0, r1, r4 - movs r2, 0 - strh r2, [r0] - ldr r0, =0x0000064f - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xCA - lsls r1, 3 - adds r0, r1 - strh r2, [r0] - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BBA78 - str r1, [r0] - movs r0, 0x5 - bl PlaySE - b _080BBA06 - .pool -_080BB8FC: - movs r0, 0x4 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080BB9A0 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl sub_80C1258 - ldr r1, =gTasks - lsls r3, r6, 2 - adds r3, r6 - lsls r3, 3 - adds r3, r1 - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r3, 0x8] - ldr r1, =gUnknown_02039B4C - ldr r0, [r1] - ldr r4, =0x0000064e - adds r0, r4 - strb r2, [r0] - ldr r0, [r1] - ldr r2, =0x0000062c - adds r1, r0, r2 - ldrb r2, [r1] - subs r4, 0x24 - adds r1, r0, r4 - strh r2, [r1] - ldr r2, =0x0000060e - adds r1, r0, r2 - ldrh r2, [r1] - subs r4, 0x1A - adds r1, r0, r4 - strh r2, [r1] - ldr r2, =0x00000612 - adds r1, r0, r2 - ldrh r2, [r1] - adds r4, 0x4 - adds r1, r0, r4 - strh r2, [r1] - ldr r2, =0x00000616 - adds r1, r0, r2 - ldrh r1, [r1] - adds r4, 0x4 - adds r0, r4 - strh r1, [r0] - ldr r0, =sub_80BBD1C - str r0, [r3] - movs r0, 0x2 -_080BB976: - bl PlaySE - bl sub_80BC890 - b _080BBA06 - .pool -_080BB9A0: - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080BB9D8 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BBDE8 - str r1, [r0] - movs r0, 0x3 - bl PlaySE - b _080BBA06 - .pool -_080BB9D8: - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r4, =0x0000060e - adds r0, r4 - ldrh r0, [r0] - movs r1, 0xE - bl sub_80BD69C - ldr r1, [r5] - adds r4, r1, r4 - strh r0, [r4] - ldr r0, =0x0000062e - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080BBA06 - ldr r0, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BBA28 - str r0, [r1] -_080BBA06: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BB7D4 - - thumb_func_start sub_80BBA28 -sub_80BBA28: @ 80BBA28 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r2, [r0] - ldr r1, =0x0000062f - adds r0, r2, r1 - ldrb r0, [r0] - ldr r3, =0x00000634 - adds r1, r2, r3 - ldrb r1, [r1] - adds r3, 0x2 - adds r2, r3 - ldrb r2, [r2] - bl sub_80BD404 - lsls r0, 24 - cmp r0, 0 - beq _080BBA5C - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BB7D4 - str r0, [r1] -_080BBA5C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBA28 - - thumb_func_start sub_80BBA78 -sub_80BBA78: @ 80BBA78 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r6, =gUnknown_02039B4C - ldr r0, [r6] - ldr r4, =0x00000652 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r3, [r6] - adds r1, r3, r4 - ldrh r2, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0x50 - beq _080BBAB0 - adds r0, r2, 0 - adds r0, 0x8 - strh r0, [r1] - b _080BBBE8 - .pool -_080BBAB0: - ldr r5, =gMain - ldrh r1, [r5, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080BBB58 - movs r2, 0xCA - lsls r2, 3 - adds r0, r3, r2 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080BBADC - cmp r0, 0x1 - ble _080BBB20 - cmp r0, 0x2 - beq _080BBAF4 - cmp r0, 0x3 - beq _080BBB34 - b _080BBB20 - .pool -_080BBADC: - ldr r4, =0x0000060e - adds r1, r3, r4 - movs r0, 0 - strh r0, [r1] - ldr r0, =0x0000062c - adds r1, r3, r0 - movs r0, 0x40 - b _080BBB0C - .pool -_080BBAF4: - ldr r1, =0x0000060c - adds r2, r3, r1 - ldrh r0, [r2] - subs r0, 0x1 - ldr r4, =0x0000060e - adds r1, r3, r4 - strh r0, [r1] - ldrh r0, [r2] - lsls r0, 4 - adds r0, 0x30 - ldr r2, =0x0000062c - adds r1, r3, r2 -_080BBB0C: - strb r0, [r1] - bl sub_80BDA40 - ldr r0, [r6] - adds r0, r4 - ldrh r0, [r0] - movs r1, 0xE - bl sub_80BD2B4 - ldrh r1, [r5, 0x2E] -_080BBB20: - movs r0, 0x8 - orrs r0, r1 - strh r0, [r5, 0x2E] - b _080BBB58 - .pool -_080BBB34: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BBDE8 - str r1, [r0] - movs r0, 0x3 - bl PlaySE -_080BBB58: - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0xA - ands r0, r1 - cmp r0, 0 - beq _080BBB98 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r3, =0x0000064f - adds r0, r3 - movs r1, 0 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BB7D4 - str r1, [r0] - b _080BBBB6 - .pool -_080BBB98: - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080BBBC4 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - movs r4, 0xCA - lsls r4, 3 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, 0 - beq _080BBBC4 - subs r0, 0x1 - strh r0, [r1] -_080BBBB6: - movs r0, 0x5 - bl PlaySE - b _080BBBE8 - .pool -_080BBBC4: - ldrh r1, [r2, 0x30] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BBBE8 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - movs r2, 0xCA - lsls r2, 3 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0x2 - bhi _080BBBE8 - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x5 - bl PlaySE -_080BBBE8: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBA78 - - thumb_func_start sub_80BBBF4 -sub_80BBBF4: @ 80BBBF4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, =gSprites - ldr r5, =gUnknown_02039B4C - ldr r3, [r5] - ldr r6, =0x00000626 - adds r0, r3, r6 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - movs r2, 0x20 - ldrsh r0, [r1, r2] - cmp r0, 0x30 - bne _080BBC52 - movs r2, 0x22 - ldrsh r0, [r1, r2] - cmp r0, 0x38 - bne _080BBC52 - ldr r1, =0x0000064a - adds r0, r3, r1 - ldrb r1, [r0] - ldr r2, =0x0000064b - adds r0, r3, r2 - strb r1, [r0] - ldr r1, [r5] - subs r2, 0x3D - adds r0, r1, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1, r0 - adds r1, r6 - ldrb r1, [r1] - bl sub_80BE91C - ldr r2, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x8] - ldr r0, =sub_80BBC74 - str r0, [r1] -_080BBC52: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBBF4 - - thumb_func_start sub_80BBC74 -sub_80BBC74: @ 80BBC74 - push {r4,r5,lr} - 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 r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080BBCE0 - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r1, =0x0000064a - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BBCFC - ldrb r0, [r4, 0x8] - bl sub_80BE9C4 - lsls r0, 24 - cmp r0, 0 - bne _080BBCFC - bl sub_80BD930 - lsls r0, 24 - cmp r0, 0 - beq _080BBCFC - ldr r0, [r5] - ldr r2, =0x0000060e - adds r1, r0, r2 - ldrh r1, [r1] - lsls r1, 2 - adds r0, r1 - ldrb r1, [r4, 0x8] - bl sub_80BE9F8 - b _080BBCFC - .pool -_080BBCE0: - ldr r2, =gUnknown_02039B50 - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r3, =0x0000060e - adds r0, r1, r3 - ldrh r0, [r0] - strh r0, [r2] - ldr r2, =gUnknown_02039B52 - ldr r0, =0x0000062c - adds r1, r0 - ldrb r0, [r1] - strb r0, [r2] - ldr r0, =sub_80BB78C - str r0, [r4] -_080BBCFC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBC74 - - thumb_func_start sub_80BBD1C -sub_80BBD1C: @ 80BBD1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r6, r1, r2 - movs r0, 0x8 - ldrsh r1, [r6, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r4, [r0, 0x4] - cmp r4, 0 - bne _080BBDCA - bl sub_80BDA40 - ldr r5, =gUnknown_02039B4C - ldr r2, [r5] - ldr r1, =0x0000064e - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080BBD7C - ldr r3, =0x0000060e - adds r0, r2, r3 - strh r4, [r0] - ldr r0, =0x0000062c - adds r1, r2, r0 - movs r0, 0x40 - strb r0, [r1] - ldr r0, =sub_80BBE70 - b _080BBDC8 - .pool -_080BBD7C: - ldr r1, =0x0000062a - adds r0, r2, r1 - ldrh r1, [r0] - ldr r3, =0x0000062c - adds r0, r2, r3 - strb r1, [r0] - ldr r1, [r5] - movs r2, 0xC2 - lsls r2, 3 - adds r0, r1, r2 - ldrh r2, [r0] - subs r3, 0x1E - adds r0, r1, r3 - strh r2, [r0] - ldr r2, =0x00000614 - adds r0, r1, r2 - ldrh r0, [r0] - adds r3, 0x4 - adds r1, r3 - strh r0, [r1] - bl IsNationalPokedexEnabled - adds r1, r0, 0 - cmp r1, 0 - bne _080BBDB6 - ldr r0, [r5] - ldr r2, =0x00000612 - adds r0, r2 - strh r1, [r0] -_080BBDB6: - ldr r0, [r5] - movs r3, 0xC3 - lsls r3, 3 - adds r1, r0, r3 - ldrh r1, [r1] - ldr r2, =0x00000616 - adds r0, r2 - strh r1, [r0] - ldr r0, =sub_80BB78C -_080BBDC8: - str r0, [r6] -_080BBDCA: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBD1C - - thumb_func_start sub_80BBDE8 -sub_80BBDE8: @ 80BBDE8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BBE4A - ldr r4, =gSaveBlock2Ptr - ldr r0, [r4] - ldr r5, =gUnknown_02039B4C - ldr r1, [r5] - ldr r2, =0x00000612 - adds r1, r2 - ldrh r1, [r1] - strb r1, [r0, 0x19] - bl IsNationalPokedexEnabled - adds r1, r0, 0 - cmp r1, 0 - bne _080BBE18 - ldr r0, [r4] - strb r1, [r0, 0x19] -_080BBE18: - ldr r1, [r4] - ldr r0, [r5] - ldr r2, =0x00000616 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x18] - bl sub_80BDA40 - bl sub_80BC890 - adds r0, r6, 0 - bl DestroyTask - ldr r0, =CB2_ReturnToFieldWithOpenMenu - bl SetMainCallback2 - ldr r0, =gMPlayInfo_BGM - ldr r1, =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r0, [r5] - bl Free -_080BBE4A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBDE8 - - thumb_func_start sub_80BBE70 -sub_80BBE70: @ 80BBE70 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r0, =0x0000064c - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - movs r0, 0x3 - bl sub_80BC514 - lsls r0, 24 - cmp r0, 0 - beq _080BBEA0 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BBEB8 - str r0, [r1] -_080BBEA0: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBE70 - - thumb_func_start sub_80BBEB8 -sub_80BBEB8: @ 80BBEB8 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r4, =0x00000652 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r3, [r5] - adds r1, r3, r4 - ldrh r0, [r1] - movs r2, 0 - ldrsh r4, [r1, r2] - cmp r4, 0 - beq _080BBEEC - subs r0, 0x8 - strh r0, [r1] - b _080BC08A - .pool -_080BBEEC: - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r7, 0x1 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080BBF70 - ldr r1, =0x0000060e - adds r0, r3, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3, r0 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - beq _080BBF70 - bl sub_80BD8D0 - ldr r3, =gSprites - ldr r0, [r5] - ldr r2, =0x00000626 - adds r0, r2 - ldrh r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r0, r2, r3 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - adds r0, r7, 0 - lsls r0, r1 - adds r3, 0x1C - adds r2, r3 - ldr r1, =sub_80BE470 - str r1, [r2] - mvns r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BC2D4 - str r1, [r0] - movs r0, 0x15 - b _080BC00A - .pool -_080BBF70: - ldrh r2, [r2, 0x2E] - movs r0, 0x8 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080BBFC8 - ldr r3, =gUnknown_02039B4C - ldr r1, [r3] - ldr r2, =0x00000652 - adds r0, r1, r2 - movs r2, 0 - strh r2, [r0] - ldr r0, =0x0000064f - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - movs r1, 0xCA - lsls r1, 3 - adds r0, r1 - strh r2, [r0] - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BC0F8 - str r1, [r0] - movs r0, 0x5 - bl PlaySE - b _080BC08A - .pool -_080BBFC8: - movs r0, 0x4 - ands r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080BC024 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl sub_80C1258 - ldr r2, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r1, 0x8] - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r3, =0x0000064e - adds r0, r3 - strb r2, [r0] - ldr r0, =sub_80BBD1C - str r0, [r1] - movs r0, 0x2 -_080BC00A: - bl PlaySE - bl sub_80BC890 - b _080BC08A - .pool -_080BC024: - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080BC05C - movs r0, 0x1 - negs r0, r0 - str r3, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BC3DC - str r1, [r0] - movs r0, 0x3 - bl PlaySE - b _080BC08A - .pool -_080BC05C: - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r4, =0x0000060e - adds r0, r4 - ldrh r0, [r0] - movs r1, 0xE - bl sub_80BD69C - ldr r1, [r5] - adds r4, r1, r4 - strh r0, [r4] - ldr r0, =0x0000062e - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080BC08A - ldr r0, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BC0A8 - str r0, [r1] -_080BC08A: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BBEB8 - - thumb_func_start sub_80BC0A8 -sub_80BC0A8: @ 80BC0A8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gUnknown_02039B4C - ldr r2, [r0] - ldr r1, =0x0000062f - adds r0, r2, r1 - ldrb r0, [r0] - ldr r3, =0x00000634 - adds r1, r2, r3 - ldrb r1, [r1] - adds r3, 0x2 - adds r2, r3 - ldrb r2, [r2] - bl sub_80BD404 - lsls r0, 24 - cmp r0, 0 - beq _080BC0DC - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80BBEB8 - str r0, [r1] -_080BC0DC: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC0A8 - - thumb_func_start sub_80BC0F8 -sub_80BC0F8: @ 80BC0F8 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r4, =0x00000652 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r5, [r5] - adds r1, r5, r4 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0x60 - beq _080BC130 - adds r0, r2, 0 - adds r0, 0x8 - strh r0, [r1] - b _080BC2C8 - .pool -_080BC130: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BC13E - b _080BC238 -_080BC13E: - movs r1, 0xCA - lsls r1, 3 - adds r0, r5, r1 - ldrh r0, [r0] - cmp r0, 0x4 - bhi _080BC1C2 - lsls r0, 2 - ldr r1, =_080BC15C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080BC15C: - .4byte _080BC1C2 - .4byte _080BC170 - .4byte _080BC194 - .4byte _080BC1E4 - .4byte _080BC214 -_080BC170: - ldr r5, =gUnknown_02039B4C - ldr r1, [r5] - ldr r4, =0x0000060e - adds r2, r1, r4 - movs r0, 0 - strh r0, [r2] - ldr r2, =0x0000062c - adds r1, r2 - movs r0, 0x40 - strb r0, [r1] - b _080BC1B2 - .pool -_080BC194: - ldr r5, =gUnknown_02039B4C - ldr r2, [r5] - ldr r0, =0x0000060c - adds r3, r2, r0 - ldrh r0, [r3] - subs r0, 0x1 - ldr r4, =0x0000060e - adds r1, r2, r4 - strh r0, [r1] - ldrh r0, [r3] - lsls r0, 4 - adds r0, 0x30 - ldr r1, =0x0000062c - adds r2, r1 - strb r0, [r2] -_080BC1B2: - bl sub_80BDA40 - ldr r0, [r5] - adds r0, r4 - ldrh r0, [r0] - movs r1, 0xE - bl sub_80BD2B4 -_080BC1C2: - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x8 - orrs r0, r1 - strh r0, [r2, 0x2E] - b _080BC238 - .pool -_080BC1E4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BC3DC - str r1, [r0] - movs r0, 0x34 - bl PlaySE - b _080BC238 - .pool -_080BC214: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BC47C - str r1, [r0] - movs r0, 0x3 - bl PlaySE -_080BC238: - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0xA - ands r0, r1 - cmp r0, 0 - beq _080BC278 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r2, =0x0000064f - adds r0, r2 - movs r1, 0 - strb r1, [r0] - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BBEB8 - str r1, [r0] - b _080BC296 - .pool -_080BC278: - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080BC2A4 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - movs r3, 0xCA - lsls r3, 3 - adds r1, r0, r3 - ldrh r0, [r1] - cmp r0, 0 - beq _080BC2A4 - subs r0, 0x1 - strh r0, [r1] -_080BC296: - movs r0, 0x5 - bl PlaySE - b _080BC2C8 - .pool -_080BC2A4: - ldrh r1, [r2, 0x30] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BC2C8 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - movs r2, 0xCA - lsls r2, 3 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0x3 - bhi _080BC2C8 - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x5 - bl PlaySE -_080BC2C8: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC0F8 - - thumb_func_start sub_80BC2D4 -sub_80BC2D4: @ 80BC2D4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, =gSprites - ldr r5, =gUnknown_02039B4C - ldr r3, [r5] - ldr r4, =0x00000626 - adds r0, r3, r4 - ldrh r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - movs r2, 0x20 - ldrsh r0, [r1, r2] - cmp r0, 0x30 - bne _080BC33A - movs r2, 0x22 - ldrsh r0, [r1, r2] - cmp r0, 0x38 - bne _080BC33A - ldr r1, =0x0000064a - adds r0, r3, r1 - ldrb r1, [r0] - ldr r2, =0x0000064b - adds r0, r3, r2 - strb r1, [r0] - ldr r1, [r5] - subs r2, 0x3D - adds r0, r1, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1, r0 - adds r1, r4 - ldrb r1, [r1] - bl sub_80BE91C - ldr r2, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x8] - ldr r0, [r5] - adds r0, r4 - ldr r2, =0x0000ffff - strh r2, [r0] - ldr r0, =sub_80BC360 - str r0, [r1] -_080BC33A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC2D4 - - thumb_func_start sub_80BC360 -sub_80BC360: @ 80BC360 - push {r4,r5,lr} - 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 r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080BC3CC - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r1, =0x0000064a - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BC3D0 - ldrb r0, [r4, 0x8] - bl sub_80BE9C4 - lsls r0, 24 - cmp r0, 0 - bne _080BC3D0 - bl sub_80BD930 - lsls r0, 24 - cmp r0, 0 - beq _080BC3D0 - ldr r0, [r5] - ldr r2, =0x0000060e - adds r1, r0, r2 - ldrh r1, [r1] - lsls r1, 2 - adds r0, r1 - ldrb r1, [r4, 0x8] - bl sub_80BE9F8 - b _080BC3D0 - .pool -_080BC3CC: - ldr r0, =sub_80BBE70 - str r0, [r4] -_080BC3D0: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC360 - - thumb_func_start sub_80BC3DC -sub_80BC3DC: @ 80BC3DC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BC450 - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - ldr r2, =0x0000062a - adds r1, r0, r2 - ldrh r1, [r1] - ldr r3, =0x0000062c - adds r0, r3 - strb r1, [r0] - ldr r1, [r4] - subs r2, 0x1A - adds r0, r1, r2 - ldrh r2, [r0] - subs r3, 0x1E - adds r0, r1, r3 - strh r2, [r0] - ldr r2, =0x00000614 - adds r0, r1, r2 - ldrh r0, [r0] - adds r3, 0x4 - adds r1, r3 - strh r0, [r1] - bl IsNationalPokedexEnabled - adds r1, r0, 0 - cmp r1, 0 - bne _080BC42A - ldr r0, [r4] - ldr r2, =0x00000612 - adds r0, r2 - strh r1, [r0] -_080BC42A: - ldr r0, [r4] - movs r3, 0xC3 - lsls r3, 3 - adds r1, r0, r3 - ldrh r1, [r1] - ldr r2, =0x00000616 - adds r0, r2 - strh r1, [r0] - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BB78C - str r1, [r0] - bl sub_80BDA40 - bl sub_80BC890 -_080BC450: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC3DC - - thumb_func_start sub_80BC47C -sub_80BC47C: @ 80BC47C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BC4E8 - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - ldr r2, =0x0000062a - adds r1, r0, r2 - ldrh r1, [r1] - ldr r3, =0x0000062c - adds r0, r3 - strb r1, [r0] - ldr r1, [r4] - subs r2, 0x1A - adds r0, r1, r2 - ldrh r2, [r0] - subs r3, 0x1E - adds r0, r1, r3 - strh r2, [r0] - ldr r2, =0x00000614 - adds r0, r1, r2 - ldrh r0, [r0] - adds r3, 0x4 - adds r1, r3 - strh r0, [r1] - bl IsNationalPokedexEnabled - adds r1, r0, 0 - cmp r1, 0 - bne _080BC4CA - ldr r0, [r4] - ldr r2, =0x00000612 - adds r0, r2 - strh r1, [r0] -_080BC4CA: - ldr r0, [r4] - movs r3, 0xC3 - lsls r3, 3 - adds r1, r0, r3 - ldrh r1, [r1] - ldr r2, =0x00000616 - adds r0, r2 - strh r1, [r0] - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80BBDE8 - str r1, [r0] -_080BC4E8: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC47C - - thumb_func_start sub_80BC514 -sub_80BC514: @ 80BC514 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x6 - bhi _080BC55C - lsls r0, 2 - ldr r1, =_080BC540 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080BC540: - .4byte _080BC55C - .4byte _080BC6CC - .4byte _080BC6FC - .4byte _080BC704 - .4byte _080BC768 - .4byte _080BC790 - .4byte _080BC818 -_080BC55C: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080BC56E - b _080BC838 -_080BC56E: - movs r0, 0 - bl SetVBlankCallback - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - ldr r1, =0x0000064a - adds r0, r1 - strb r5, [r0] - movs r0, 0 - bl sub_80C09B0 - ldr r0, [r4] - ldr r2, =0x0000062d - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1A - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gBgTemplates_0855D298 - 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 r1, =gPokedexMenu_Gfx - movs r2, 0x80 - lsls r2, 6 - str r6, [sp] - movs r0, 0x3 - movs r3, 0 - bl copy_decompressed_tile_data_to_vram_autofree - ldr r1, =gUnknown_08DC2C5C - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r1, =gUnknown_08DC2DAC - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - cmp r5, 0 - bne _080BC640 - ldr r1, =gUnknown_08DC2A08 - movs r3, 0xA0 - lsls r3, 2 - movs r0, 0 - movs r2, 0 - bl CopyToBgTilemapBuffer - b _080BC64E - .pool -_080BC640: - ldr r1, =gUnknown_08DC2B1C - movs r3, 0xA0 - lsls r3, 2 - movs r0, 0 - movs r2, 0 - bl CopyToBgTilemapBuffer -_080BC64E: - bl ResetPaletteFade - cmp r5, 0 - bne _080BC674 - ldr r3, =gUnknown_02039B4C - ldr r1, [r3] - ldr r0, =0x0000064c - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - b _080BC682 - .pool -_080BC674: - ldr r3, =gUnknown_02039B4C - ldr r1, [r3] - ldr r2, =0x0000064c - adds r1, r2 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 -_080BC682: - strb r0, [r1] - ldr r0, [r3] - ldr r1, =0x0000064c - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - bl sub_80BC844 - ldr r0, =sWindowTemplates_0855D2A8 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - b _080BC838 - .pool -_080BC6CC: - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, =gReservedSpritePaletteCount - movs r0, 0x8 - strb r0, [r1] - ldr r0, =gSpriteSheets_0855D26C - bl LoadCompressedObjectPic - ldr r0, =gSpritePalettes_0855D26C - bl LoadSpritePalettes - adds r0, r5, 0 - bl sub_80BDB7C - b _080BC7F8 - .pool -_080BC6FC: - movs r2, 0x87 - lsls r2, 3 - adds r1, r3, r2 - b _080BC800 -_080BC704: - cmp r5, 0 - bne _080BC71C - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r2, =0x00000612 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, 0x4 - adds r1, r2 - ldrb r1, [r1] - bl sub_80BC8D4 -_080BC71C: - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - ldr r1, =0x0000060e - adds r0, r1 - ldrh r0, [r0] - movs r1, 0xE - bl sub_80BD2B4 - ldr r0, [r4] - ldr r2, =0x0000064f - adds r0, r2 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - adds r2, 0x3 - adds r0, r2 - strh r1, [r0] - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _080BC7F8 - .pool -_080BC768: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, =sub_80BB370 - bl SetVBlankCallback - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _080BC800 - .pool -_080BC790: - ldr r1, =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, =0x00001d3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x42 - movs r1, 0 - bl SetGpuReg - movs r0, 0x46 - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r1, =0x00009040 - 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 -_080BC7F8: - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 -_080BC800: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080BC838 - .pool -_080BC818: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080BC838 - movs r1, 0x87 - lsls r1, 3 - adds r0, r3, r1 - strb r2, [r0] - movs r0, 0x1 - b _080BC83A - .pool -_080BC838: - movs r0, 0 -_080BC83A: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80BC514 - - thumb_func_start sub_80BC844 -sub_80BC844: @ 80BC844 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BC858 - ldr r0, =gPokedexHoennBg_Pal + 0x2 - b _080BC862 - .pool -_080BC858: - bl IsNationalPokedexEnabled - cmp r0, 0 - bne _080BC870 - ldr r0, =gPokedexText_Pal + 2 -_080BC862: - movs r1, 0x1 - movs r2, 0xBE - bl LoadPalette - b _080BC87A - .pool -_080BC870: - ldr r0, =gPokedexNationalBg_Pal + 0x2 - movs r1, 0x1 - movs r2, 0xBE - bl LoadPalette -_080BC87A: - bl GetOverworldTextboxPalettePtr - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC844 - - thumb_func_start sub_80BC890 -sub_80BC890: @ 80BC890 - push {lr} - bl FreeAllWindowBuffers - movs r0, 0 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BC8A4 - bl Free -_080BC8A4: - movs r0, 0x1 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BC8B2 - bl Free -_080BC8B2: - movs r0, 0x2 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BC8C0 - bl Free -_080BC8C0: - movs r0, 0x3 - bl GetBgTilemapBuffer - cmp r0, 0 - beq _080BC8CE - bl Free -_080BC8CE: - pop {r0} - bx r0 - thumb_func_end sub_80BC890 - - thumb_func_start sub_80BC8D4 -sub_80BC8D4: @ 80BC8D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r1, =0x0000060c - adds r0, r1 - movs r5, 0 - strh r5, [r0] - cmp r4, 0 - beq _080BC8FC - cmp r4, 0x1 - beq _080BC910 -_080BC8FC: - mov r1, sp - movs r0, 0xCA - strh r0, [r1] - movs r0, 0x1 - strh r0, [r1, 0x2] - b _080BC92C - .pool -_080BC910: - bl IsNationalPokedexEnabled - cmp r0, 0 - beq _080BC924 - mov r0, sp - movs r1, 0xC1 - lsls r1, 1 - strh r1, [r0] - strh r5, [r0, 0x2] - b _080BC92C -_080BC924: - mov r0, sp - movs r1, 0xCA - strh r1, [r0] - strh r4, [r0, 0x2] -_080BC92C: - cmp r6, 0x5 - bls _080BC932 - b _080BCDB4 -_080BC932: - lsls r0, r6, 2 - ldr r1, =_080BC940 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080BC940: - .4byte _080BC958 - .4byte _080BCACC - .4byte _080BCB78 - .4byte _080BCC08 - .4byte _080BCCA0 - .4byte _080BCD30 -_080BC958: - mov r0, sp - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _080BCA00 - movs r4, 0 - mov r0, sp - ldrh r0, [r0] - cmp r4, r0 - blt _080BC96C - b _080BCDB4 -_080BC96C: - mov r5, sp - ldr r2, =gUnknown_02039B4C - mov r8, r2 - movs r3, 0x1 - mov r9, r3 -_080BC976: - lsls r4, 16 - asrs r4, 16 - adds r7, r4, 0x1 - mov r10, r7 - lsls r0, r7, 16 - lsrs r6, r0, 16 - adds r0, r6, 0 - bl HoennToNationalOrder - strh r0, [r5, 0x4] - mov r2, r8 - ldr r1, [r2] - lsls r4, 2 - adds r1, r4 - strh r0, [r1] - ldrh r0, [r5, 0x4] - movs r1, 0 - bl GetSetPokedexFlag - mov r3, r8 - ldr r2, [r3] - adds r2, r4 - mov r3, r9 - ands r3, r0 - ldrb r0, [r2, 0x2] - movs r7, 0x2 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x2] - ldrh r0, [r5, 0x4] - movs r1, 0x1 - bl GetSetPokedexFlag - mov r1, r8 - ldr r3, [r1] - adds r3, r4 - mov r2, r9 - ands r2, r0 - lsls r2, 1 - ldrb r0, [r3, 0x2] - subs r7, 0x1 - adds r1, r7, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x2] - mov r0, r8 - ldr r1, [r0] - adds r4, r1, r4 - ldrb r0, [r4, 0x2] - lsls r0, 31 - cmp r0, 0 - beq _080BC9EA - ldr r2, =0x0000060c - adds r0, r1, r2 - mov r3, r10 - strh r3, [r0] -_080BC9EA: - adds r4, r6, 0 - lsls r0, r4, 16 - asrs r0, 16 - ldrh r7, [r5] - cmp r0, r7 - blt _080BC976 - b _080BCDB4 - .pool -_080BCA00: - movs r4, 0 - movs r5, 0 - mov r10, r5 - mov r0, sp - ldrh r0, [r0] - cmp r4, r0 - blt _080BCA10 - b _080BCDB4 -_080BCA10: - mov r6, sp - ldr r0, =gUnknown_02039B4C - mov r8, r0 - movs r1, 0x1 - mov r9, r1 -_080BCA1A: - lsls r4, 16 - asrs r0, r4, 16 - adds r0, 0x1 - strh r0, [r6, 0x4] - ldrh r0, [r6, 0x4] - movs r1, 0 - bl GetSetPokedexFlag - lsls r0, 24 - adds r7, r4, 0 - cmp r0, 0 - beq _080BCA36 - movs r2, 0x1 - mov r10, r2 -_080BCA36: - mov r3, r10 - cmp r3, 0 - beq _080BCAB2 - mov r4, r8 - ldr r1, [r4] - lsls r0, r5, 16 - asrs r5, r0, 16 - lsls r4, r5, 2 - adds r1, r4 - ldrh r0, [r6, 0x4] - strh r0, [r1] - ldrh r0, [r6, 0x4] - movs r1, 0 - bl GetSetPokedexFlag - mov r1, r8 - ldr r2, [r1] - adds r2, r4 - mov r3, r9 - ands r3, r0 - mov r12, r3 - ldrb r0, [r2, 0x2] - movs r3, 0x2 - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - mov r1, r12 - orrs r0, r1 - strb r0, [r2, 0x2] - ldrh r0, [r6, 0x4] - movs r1, 0x1 - bl GetSetPokedexFlag - mov r2, r8 - ldr r3, [r2] - adds r3, r4 - mov r2, r9 - ands r2, r0 - lsls r2, 1 - mov r12, r2 - ldrb r0, [r3, 0x2] - movs r2, 0x3 - negs r2, r2 - adds r1, r2, 0 - ands r0, r1 - mov r1, r12 - orrs r0, r1 - strb r0, [r3, 0x2] - mov r3, r8 - ldr r2, [r3] - adds r4, r2, r4 - ldrb r0, [r4, 0x2] - lsls r0, 31 - cmp r0, 0 - beq _080BCAAC - adds r1, r5, 0x1 - ldr r4, =0x0000060c - adds r0, r2, r4 - strh r1, [r0] -_080BCAAC: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_080BCAB2: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r4, r0, 16 - asrs r0, 16 - ldrh r2, [r6] - cmp r0, r2 - blt _080BCA1A - b _080BCDB4 - .pool -_080BCACC: - movs r4, 0 - mov r5, sp - ldr r3, =gUnknown_02039B4C - mov r8, r3 - ldr r6, =0x0000060c - movs r7, 0x1 - mov r9, r7 -_080BCADA: - ldr r1, =gPokedexOrder_Alphabetical - lsls r4, 16 - asrs r0, r4, 15 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r5, 0x4] - bl NationalToHoennOrder - lsls r0, 16 - lsrs r0, 16 - adds r7, r4, 0 - ldrh r1, [r5] - cmp r0, r1 - bhi _080BCB58 - ldrh r0, [r5, 0x4] - movs r1, 0 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _080BCB58 - mov r3, r8 - ldr r2, [r3] - adds r3, r2, r6 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r2, r0 - ldrh r1, [r5, 0x4] - strh r1, [r0] - ldrh r0, [r3] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - mov r4, r9 - orrs r0, r4 - strb r0, [r2, 0x2] - ldrh r0, [r5, 0x4] - movs r1, 0x1 - bl GetSetPokedexFlag - mov r1, r8 - ldr r3, [r1] - adds r1, r3, r6 - ldrh r1, [r1] - lsls r1, 2 - adds r3, r1 - mov r2, r9 - ands r2, r0 - lsls r2, 1 - ldrb r0, [r3, 0x2] - movs r4, 0x3 - negs r4, r4 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x2] - mov r0, r8 - ldr r1, [r0] - adds r1, r6 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080BCB58: - movs r2, 0x80 - lsls r2, 9 - adds r1, r7, r2 - lsrs r4, r1, 16 - movs r0, 0xCD - lsls r0, 17 - cmp r1, r0 - ble _080BCADA - b _080BCDB4 - .pool -_080BCB78: - ldr r4, =0x00000181 - lsls r0, r4, 16 - mov r5, sp - ldr r7, =gUnknown_02039B4C - ldr r6, =0x0000060c -_080BCB82: - ldr r1, =gPokedexOrder_Weight - asrs r0, 15 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r5, 0x4] - bl NationalToHoennOrder - lsls r0, 16 - lsrs r0, 16 - ldrh r3, [r5] - cmp r0, r3 - bhi _080BCBE2 - ldrh r0, [r5, 0x4] - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _080BCBE2 - ldr r2, [r7] - adds r3, r2, r6 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r2, r0 - ldrh r1, [r5, 0x4] - strh r1, [r0] - ldrh r0, [r3] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r2, [r7] - adds r0, r2, r6 - ldrh r0, [r0] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r1, [r7] - adds r1, r6 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080BCBE2: - lsls r0, r4, 16 - ldr r4, =0xffff0000 - adds r0, r4 - lsrs r4, r0, 16 - lsls r0, r4, 16 - cmp r0, 0 - bge _080BCB82 - b _080BCDB4 - .pool -_080BCC08: - movs r4, 0 - mov r5, sp - ldr r7, =gUnknown_02039B4C - mov r8, r7 - ldr r6, =0x0000060c - ldr r0, =0x00000181 - mov r9, r0 -_080BCC16: - ldr r1, =gPokedexOrder_Weight - lsls r4, 16 - asrs r0, r4, 15 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r5, 0x4] - bl NationalToHoennOrder - lsls r0, 16 - lsrs r0, 16 - adds r7, r4, 0 - ldrh r1, [r5] - cmp r0, r1 - bhi _080BCC7E - ldrh r0, [r5, 0x4] - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _080BCC7E - mov r3, r8 - ldr r2, [r3] - adds r3, r2, r6 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r2, r0 - ldrh r1, [r5, 0x4] - strh r1, [r0] - ldrh r0, [r3] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - mov r4, r8 - ldr r2, [r4] - adds r0, r2, r6 - ldrh r0, [r0] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r1, [r4] - adds r1, r6 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080BCC7E: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, r9 - ble _080BCC16 - b _080BCDB4 - .pool -_080BCCA0: - ldr r4, =0x00000181 - lsls r0, r4, 16 - mov r5, sp - ldr r7, =gUnknown_02039B4C - ldr r6, =0x0000060c -_080BCCAA: - ldr r1, =gPokedexOrder_Height - asrs r0, 15 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r5, 0x4] - bl NationalToHoennOrder - lsls r0, 16 - lsrs r0, 16 - ldrh r2, [r5] - cmp r0, r2 - bhi _080BCD0A - ldrh r0, [r5, 0x4] - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _080BCD0A - ldr r2, [r7] - adds r3, r2, r6 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r2, r0 - ldrh r1, [r5, 0x4] - strh r1, [r0] - ldrh r0, [r3] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r2, [r7] - adds r0, r2, r6 - ldrh r0, [r0] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r1, [r7] - adds r1, r6 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080BCD0A: - lsls r0, r4, 16 - ldr r3, =0xffff0000 - adds r0, r3 - lsrs r4, r0, 16 - lsls r0, r4, 16 - cmp r0, 0 - bge _080BCCAA - b _080BCDB4 - .pool -_080BCD30: - movs r4, 0 - mov r5, sp - ldr r7, =gUnknown_02039B4C - mov r8, r7 - ldr r6, =0x0000060c - ldr r0, =0x00000181 - mov r9, r0 -_080BCD3E: - ldr r1, =gPokedexOrder_Height - lsls r4, 16 - asrs r0, r4, 15 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r5, 0x4] - bl NationalToHoennOrder - lsls r0, 16 - lsrs r0, 16 - adds r7, r4, 0 - ldrh r1, [r5] - cmp r0, r1 - bhi _080BCDA6 - ldrh r0, [r5, 0x4] - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _080BCDA6 - mov r3, r8 - ldr r2, [r3] - adds r3, r2, r6 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r2, r0 - ldrh r1, [r5, 0x4] - strh r1, [r0] - ldrh r0, [r3] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - mov r4, r8 - ldr r2, [r4] - adds r0, r2, r6 - ldrh r0, [r0] - lsls r0, 2 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r1, [r4] - adds r1, r6 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080BCDA6: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, r9 - ble _080BCD3E -_080BCDB4: - ldr r1, =gUnknown_02039B4C - ldr r0, [r1] - ldr r2, =0x0000060c - adds r0, r2 - ldrh r4, [r0] - lsls r3, r4, 16 - asrs r0, r3, 16 - ldr r2, =0x00000181 - cmp r0, r2 - bgt _080BCE08 - adds r5, r1, 0 - movs r4, 0x2 - negs r4, r4 - mov r9, r4 - movs r7, 0x3 - negs r7, r7 - mov r8, r7 - adds r7, r2, 0 - ldr r0, =0x0000ffff - adds r6, r0, 0 -_080BCDDC: - ldr r1, [r5] - asrs r3, 16 - lsls r4, r3, 2 - adds r1, r4 - ldrh r0, [r1] - orrs r0, r6 - strh r0, [r1] - ldrb r2, [r1, 0x2] - mov r0, r9 - ands r0, r2 - strb r0, [r1, 0x2] - ldr r1, [r5] - adds r1, r4 - ldrb r2, [r1, 0x2] - mov r0, r8 - ands r0, r2 - strb r0, [r1, 0x2] - adds r3, 0x1 - lsls r3, 16 - asrs r0, r3, 16 - cmp r0, r7 - ble _080BCDDC -_080BCE08: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BC8D4 - - thumb_func_start sub_80BCE2C -sub_80BCE2C: @ 80BCE2C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - mov r8, r3 - ldr r3, [sp, 0x2C] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r3, 24 - add r4, sp, 0x14 - movs r6, 0 - strb r6, [r4] - adds r5, r4, 0 - movs r4, 0xF - strb r4, [r5, 0x1] - movs r4, 0x3 - strb r4, [r5, 0x2] - mov r4, r8 - lsls r4, 27 - lsrs r4, 24 - mov r8, r4 - lsrs r3, 21 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r6, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0xC] - str r2, [sp, 0x10] - mov r2, r8 - bl AddTextPrinterParameterized2 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BCE2C - - thumb_func_start sub_80BCE84 -sub_80BCE84: @ 80BCE84 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r7, r2, 16 - cmp r0, 0x1 - beq _080BCF7C - cmp r0, 0x1 - ble _080BCEA8 - cmp r0, 0x2 - bne _080BCEA8 - b _080BD074 -_080BCEA8: - subs r0, r1, 0x5 - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0 - mov r9, r0 -_080BCEB2: - lsls r0, r1, 16 - lsrs r5, r0, 16 - mov r10, r0 - ldr r1, =0x00000181 - cmp r5, r1 - bhi _080BCED2 - ldr r2, =gUnknown_02039B4C - mov r8, r2 - ldr r0, [r2] - mov r3, r10 - asrs r6, r3, 14 - adds r0, r6 - ldrh r0, [r0] - ldr r1, =0x0000ffff - cmp r0, r1 - bne _080BCEF0 -_080BCED2: - mov r2, r9 - lsls r1, r2, 25 - lsrs r1, 24 - movs r0, 0x11 - adds r2, r7, 0 - bl sub_80BD28C - b _080BCF64 - .pool -_080BCEF0: - mov r3, r9 - lsls r0, r3, 25 - lsrs r4, r0, 24 - movs r0, 0x11 - adds r1, r4, 0 - adds r2, r7, 0 - bl sub_80BD28C - mov r1, r8 - ldr r0, [r1] - adds r0, r6 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - beq _080BCF42 - adds r0, r5, 0 - movs r1, 0x12 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD154 - mov r2, r8 - ldr r0, [r2] - adds r0, r6 - ldrb r0, [r0, 0x2] - lsls r0, 30 - lsrs r0, 31 - movs r1, 0x11 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD1F4 - mov r3, r8 - ldr r0, [r3] - adds r0, r6 - ldrh r0, [r0] - movs r1, 0x16 - adds r2, r4, 0 - bl sub_80BD23C - b _080BCF64 -_080BCF42: - adds r0, r5, 0 - movs r1, 0x12 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD154 - movs r0, 0 - movs r1, 0x11 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD1F4 - movs r0, 0 - movs r1, 0x16 - adds r2, r4, 0 - bl sub_80BD23C -_080BCF64: - movs r0, 0x80 - lsls r0, 9 - add r0, r10 - lsrs r1, r0, 16 - mov r0, r9 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r0, 0xA - bls _080BCEB2 - b _080BD13E -_080BCF7C: - subs r0, r1, 0x5 - lsls r1, r0, 16 - lsrs r5, r1, 16 - ldr r0, =0x00000181 - ldr r2, =gUnknown_02039B4C - cmp r5, r0 - bhi _080BCF9A - adds r6, r2, 0 - ldr r3, [r6] - asrs r4, r1, 14 - adds r0, r3, r4 - ldrh r1, [r0] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _080BCFB8 -_080BCF9A: - ldr r0, [r2] - movs r1, 0xC6 - lsls r1, 3 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r1, 25 - b _080BD0B2 - .pool -_080BCFB8: - movs r1, 0xC6 - lsls r1, 3 - adds r0, r3, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r1, 25 - lsrs r1, 24 - movs r0, 0x11 - adds r2, r7, 0 - bl sub_80BD28C - ldr r1, [r6] - adds r0, r1, r4 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - beq _080BD028 - movs r3, 0xC6 - lsls r3, 3 - adds r0, r1, r3 - movs r1, 0 - ldrsh r2, [r0, r1] - lsls r2, 25 - lsrs r2, 24 - adds r0, r5, 0 - movs r1, 0x12 - adds r3, r7, 0 - bl sub_80BD154 - ldr r1, [r6] - adds r0, r1, r4 - ldrb r0, [r0, 0x2] - lsls r0, 30 - lsrs r0, 31 - movs r2, 0xC6 - lsls r2, 3 - adds r1, r2 - movs r3, 0 - ldrsh r2, [r1, r3] - lsls r2, 25 - lsrs r2, 24 - movs r1, 0x11 - adds r3, r7, 0 - bl sub_80BD1F4 - ldr r1, [r6] - adds r0, r1, r4 - ldrh r0, [r0] - movs r2, 0xC6 - lsls r2, 3 - adds r1, r2 - movs r3, 0 - ldrsh r2, [r1, r3] - lsls r2, 25 - lsrs r2, 24 - b _080BD06C -_080BD028: - movs r2, 0xC6 - lsls r2, 3 - adds r0, r1, r2 - movs r3, 0 - ldrsh r2, [r0, r3] - lsls r2, 25 - lsrs r2, 24 - adds r0, r5, 0 - movs r1, 0x12 - adds r3, r7, 0 - bl sub_80BD154 - ldr r0, [r6] - movs r1, 0xC6 - lsls r1, 3 - adds r0, r1 - movs r3, 0 - ldrsh r2, [r0, r3] - lsls r2, 25 - lsrs r2, 24 - movs r0, 0 - movs r1, 0x11 - adds r3, r7, 0 - bl sub_80BD1F4 - ldr r0, [r6] - movs r1, 0xC6 - lsls r1, 3 - adds r0, r1 - movs r3, 0 - ldrsh r2, [r0, r3] - lsls r2, 25 - lsrs r2, 24 - movs r0, 0 -_080BD06C: - movs r1, 0x16 - bl sub_80BD23C - b _080BD13E -_080BD074: - adds r0, r1, 0x5 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, =gUnknown_02039B4C - mov r8, r0 - ldr r3, [r0] - movs r2, 0xC6 - lsls r2, 3 - adds r0, r3, r2 - ldrh r0, [r0] - adds r0, 0xA - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _080BD09A - adds r0, r2, 0 - subs r0, 0x10 - lsls r0, 16 - lsrs r2, r0, 16 -_080BD09A: - lsls r1, 16 - lsrs r5, r1, 16 - ldr r0, =0x00000181 - cmp r5, r0 - bhi _080BD0B0 - asrs r6, r1, 14 - adds r0, r3, r6 - ldrh r1, [r0] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _080BD0CC -_080BD0B0: - lsls r1, r2, 25 -_080BD0B2: - lsrs r1, 24 - movs r0, 0x11 - adds r2, r7, 0 - bl sub_80BD28C - b _080BD13E - .pool -_080BD0CC: - lsls r0, r2, 25 - lsrs r4, r0, 24 - movs r0, 0x11 - adds r1, r4, 0 - adds r2, r7, 0 - bl sub_80BD28C - mov r3, r8 - ldr r0, [r3] - adds r0, r6 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - beq _080BD11C - adds r0, r5, 0 - movs r1, 0x12 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD154 - mov r1, r8 - ldr r0, [r1] - adds r0, r6 - ldrb r0, [r0, 0x2] - lsls r0, 30 - lsrs r0, 31 - movs r1, 0x11 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD1F4 - mov r2, r8 - ldr r0, [r2] - adds r0, r6 - ldrh r0, [r0] - movs r1, 0x16 - adds r2, r4, 0 - bl sub_80BD23C - b _080BD13E -_080BD11C: - adds r0, r5, 0 - movs r1, 0x12 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD154 - movs r0, 0 - movs r1, 0x11 - adds r2, r4, 0 - adds r3, r7, 0 - bl sub_80BD1F4 - movs r0, 0 - movs r1, 0x16 - adds r2, r4, 0 - bl sub_80BD23C -_080BD13E: - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BCE84 - - thumb_func_start sub_80BD154 -sub_80BD154: @ 80BD154 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r1, =gUnknown_0855D2B8 - add r0, sp, 0x4 - movs r2, 0x6 - bl memcpy - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - lsls r4, 2 - adds r4, r0, r4 - ldrh r6, [r4] - ldr r1, =0x00000612 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _080BD194 - adds r0, r6, 0 - bl NationalToHoennOrder - lsls r0, 16 - lsrs r6, r0, 16 -_080BD194: - add r4, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x64 - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r4, 0x2] - add r5, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x64 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r5, 0x3] - add r5, sp, 0x4 - adds r0, r4, 0 - movs r1, 0xA - bl __umodsi3 - adds r0, 0xA1 - strb r0, [r5, 0x4] - str r7, [sp] - movs r0, 0 - movs r1, 0x7 - add r2, sp, 0x4 - mov r3, r8 - bl sub_80BCE2C - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BD154 - - thumb_func_start sub_80BD1F4 -sub_80BD1F4: @ 80BD1F4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 16 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r0, 0 - beq _080BD220 - ldr r1, =gUnknown_0855D2BE - lsls r2, r3, 3 - lsls r3, r4, 3 - movs r0, 0x8 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - bl BlitBitmapToWindow - b _080BD234 - .pool -_080BD220: - lsls r2, r3, 3 - lsls r3, r4, 3 - movs r0, 0x8 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - bl FillWindowPixelRect -_080BD234: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BD1F4 - - thumb_func_start sub_80BD23C -sub_80BD23C: @ 80BD23C - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - bl NationalPokedexNumToSpecies - adds r1, r0, 0 - cmp r1, 0 - beq _080BD264 - movs r0, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r4, r1, r0 - b _080BD266 - .pool -_080BD264: - ldr r4, =sText_TenDashes -_080BD266: - str r5, [sp] - movs r0, 0 - movs r1, 0x7 - adds r2, r4, 0 - adds r3, r6, 0 - bl sub_80BCE2C - adds r0, r4, 0 - bl StringLength - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80BD23C - - thumb_func_start sub_80BD28C -sub_80BD28C: @ 80BD28C - push {lr} - sub sp, 0x8 - adds r2, r0, 0 - adds r3, r1, 0 - lsls r2, 24 - lsls r3, 24 - lsrs r2, 21 - lsrs r3, 21 - movs r0, 0x60 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - bl FillWindowPixelRect - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_80BD28C - - thumb_func_start sub_80BD2B4 -sub_80BD2B4: @ 80BD2B4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - ldr r2, =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - movs r2, 0 - ldr r7, =gUnknown_02039B4C - adds r5, r7, 0 - ldr r4, =0x0000061e - ldr r0, =0x0000ffff - adds r3, r0, 0 -_080BD2DA: - ldr r1, [r5] - lsls r0, r2, 1 - adds r1, r4 - adds r1, r0 - ldrh r0, [r1] - orrs r0, r3 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080BD2DA - ldr r0, [r7] - ldr r1, =0x00000626 - adds r0, r1 - ldr r1, =0x0000ffff - strh r1, [r0] - subs r0, r6, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl sub_80BDA8C - lsls r0, 16 - lsrs r0, 16 - ldr r4, =0x0000ffff - cmp r0, r4 - beq _080BD334 - movs r1, 0x60 - movs r2, 0x50 - bl sub_80BDACC - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, =sub_80BE4E0 - str r2, [r1] - adds r0, r3 - ldr r1, =0x0000ffe0 - strh r1, [r0, 0x38] -_080BD334: - adds r0, r6, 0 - bl sub_80BDA8C - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - beq _080BD366 - movs r1, 0x60 - movs r2, 0x50 - bl sub_80BDACC - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, =sub_80BE4E0 - str r2, [r1] - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x38] -_080BD366: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl sub_80BDA8C - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - beq _080BD39C - movs r1, 0x60 - movs r2, 0x50 - bl sub_80BDACC - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, =sub_80BE4E0 - str r2, [r1] - adds r0, r3 - movs r1, 0x20 - strh r1, [r0, 0x38] -_080BD39C: - movs r0, 0 - adds r1, r6, 0 - mov r2, r8 - bl sub_80BCE84 - ldr r0, [r7] - ldr r2, =0x0000062d - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, [r7] - movs r2, 0xC6 - lsls r2, 3 - adds r1, r0, r2 - movs r2, 0 - strh r2, [r1] - ldr r1, =0x00000632 - adds r0, r1 - strh r2, [r0] - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80BD2B4 - - thumb_func_start sub_80BD404 -sub_80BD404: @ 80BD404 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, =gUnknown_02039B4C - ldr r1, [r0] - ldr r3, =0x0000062e - adds r2, r1, r3 - ldrb r3, [r2] - adds r7, r0, 0 - cmp r3, 0 - bne _080BD428 - b _080BD578 -_080BD428: - subs r0, r3, 0x1 - strb r0, [r2] - cmp r4, 0x1 - beq _080BD440 - cmp r4, 0x2 - beq _080BD4DC - b _080BD558 - .pool -_080BD440: - movs r3, 0 - ldr r4, =0x0000ffff - mov r12, r4 - ldr r0, =gSprites - mov r8, r0 - adds r2, r7, 0 -_080BD44C: - ldr r0, [r2] - lsls r1, r3, 1 - ldr r4, =0x0000061e - adds r0, r4 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, r12 - beq _080BD46A - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r8 - ldrh r0, [r1, 0x38] - adds r0, r5 - strh r0, [r1, 0x38] -_080BD46A: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080BD44C - ldr r4, [r7] - ldr r1, =0x0000062e - adds r0, r4, r1 - ldrb r0, [r0] - subs r0, r6, r0 - lsls r0, 4 - adds r1, r6, 0 - bl __divsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, =0x0000062d - adds r0, r4, r3 - ldr r1, =0x00000632 - adds r4, r1 - movs r3, 0 - ldrsh r1, [r4, r3] - lsls r1, 4 - ldrb r0, [r0] - adds r1, r0 - subs r1, r2 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x1A - bl SetGpuReg - ldr r0, [r7] - ldr r4, =0x0000062c - adds r2, r0, r4 - movs r1, 0xC5 - lsls r1, 3 - adds r0, r1 - ldrb r1, [r0] - ldrb r0, [r2] - subs r0, r1 - strb r0, [r2] - b _080BD558 - .pool -_080BD4DC: - movs r3, 0 - ldr r2, =0x0000ffff - mov r12, r2 - ldr r4, =gSprites - mov r8, r4 - adds r2, r7, 0 -_080BD4E8: - ldr r0, [r2] - lsls r1, r3, 1 - ldr r4, =0x0000061e - adds r0, r4 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, r12 - beq _080BD506 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r8 - ldrh r0, [r1, 0x38] - subs r0, r5 - strh r0, [r1, 0x38] -_080BD506: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080BD4E8 - ldr r4, [r7] - ldr r1, =0x0000062e - adds r0, r4, r1 - ldrb r0, [r0] - subs r0, r6, r0 - lsls r0, 4 - adds r1, r6, 0 - bl __divsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, =0x0000062d - adds r0, r4, r3 - ldr r1, =0x00000632 - adds r4, r1 - movs r3, 0 - ldrsh r1, [r4, r3] - lsls r1, 4 - ldrb r0, [r0] - adds r1, r0 - adds r1, r2 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x1A - bl SetGpuReg - ldr r0, [r7] - ldr r4, =0x0000062c - adds r1, r0, r4 - movs r2, 0xC5 - lsls r2, 3 - adds r0, r2 - ldrb r0, [r0] - ldrb r3, [r1] - adds r0, r3 - strb r0, [r1] -_080BD558: - movs r0, 0 - b _080BD598 - .pool -_080BD578: - ldr r4, =0x0000062d - adds r2, r1, r4 - movs r3, 0xC6 - lsls r3, 3 - adds r0, r1, r3 - movs r4, 0 - ldrsh r1, [r0, r4] - lsls r1, 4 - ldrb r2, [r2] - adds r1, r2 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x1A - bl SetGpuReg - movs r0, 0x1 -_080BD598: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80BD404 - - thumb_func_start sub_80BD5A8 -sub_80BD5A8: @ 80BD5A8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r4, =gUnknown_02039B4C - ldr r0, [r4] - movs r5, 0xC6 - lsls r5, 3 - adds r1, r0, r5 - ldrh r1, [r1] - ldr r6, =0x00000632 - adds r0, r6 - strh r1, [r0] - cmp r2, 0x1 - beq _080BD5D8 - cmp r2, 0x2 - beq _080BD638 - b _080BD694 - .pool -_080BD5D8: - subs r0, r3, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl sub_80BDA8C - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, =0x0000ffff - cmp r1, r0 - beq _080BD612 - adds r0, r1, 0 - movs r1, 0x60 - movs r2, 0x50 - bl sub_80BDACC - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, =sub_80BE4E0 - str r2, [r1] - adds r0, r3 - ldr r1, =0x0000ffc0 - strh r1, [r0, 0x38] -_080BD612: - ldr r0, [r4] - adds r1, r0, r5 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080BD634 - subs r0, r2, 0x1 - b _080BD692 - .pool -_080BD634: - movs r0, 0xF - b _080BD692 -_080BD638: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl sub_80BDA8C - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, =0x0000ffff - cmp r1, r0 - beq _080BD672 - adds r0, r1, 0 - movs r1, 0x60 - movs r2, 0x50 - bl sub_80BDACC - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, =sub_80BE4E0 - str r2, [r1] - adds r0, r3 - movs r1, 0x40 - strh r1, [r0, 0x38] -_080BD672: - ldr r0, [r4] - adds r1, r0, r5 - ldrh r2, [r1] - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, 0xE - bgt _080BD690 - adds r0, r2, 0x1 - b _080BD692 - .pool -_080BD690: - movs r0, 0 -_080BD692: - strh r0, [r1] -_080BD694: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BD5A8 - - thumb_func_start sub_80BD69C -sub_80BD69C: @ 80BD69C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - movs r0, 0 - mov r10, r0 - ldr r2, =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080BD6FC - cmp r7, 0 - beq _080BD6FC - movs r1, 0x1 - mov r10, r1 - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r2, =0x0000060c - adds r0, r2 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0 - bl sub_80C0E0C - adds r7, r0, 0 - movs r0, 0x1 - adds r1, r7, 0 - bl sub_80BD5A8 - movs r0, 0x1 - b _080BD734 - .pool -_080BD6FC: - ldrh r1, [r2, 0x2C] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BD74C - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r3, =0x0000060c - adds r0, r3 - ldrh r0, [r0] - subs r0, 0x1 - cmp r7, r0 - bge _080BD74C - movs r1, 0x2 - mov r10, r1 - lsls r3, r0, 16 - lsrs r3, 16 - movs r0, 0 - adds r1, r7, 0 - movs r2, 0 - bl sub_80C0E0C - adds r7, r0, 0 - movs r0, 0x2 - adds r1, r7, 0 - bl sub_80BD5A8 - movs r0, 0x2 -_080BD734: - adds r1, r7, 0 - adds r2, r4, 0 - bl sub_80BCE84 - movs r0, 0x6C - bl PlaySE - b _080BD81A - .pool -_080BD74C: - ldrh r1, [r2, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080BD7B4 - cmp r7, 0 - beq _080BD7B4 - adds r6, r7, 0 - movs r4, 0 -_080BD75E: - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r2, =0x0000060c - adds r0, r2 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0 - bl sub_80C0E0C - adds r7, r0, 0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080BD75E - ldr r1, [r5] - ldr r3, =0x0000062c - adds r1, r3 - subs r0, r7, r6 - lsls r0, 4 - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] - bl sub_80BDA40 - adds r0, r7, 0 - movs r1, 0xE - bl sub_80BD2B4 - movs r0, 0x6D - bl PlaySE - b _080BD81A - .pool -_080BD7B4: - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080BD81A - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - ldr r3, =0x0000060c - adds r0, r3 - ldrh r0, [r0] - subs r0, 0x1 - cmp r7, r0 - bge _080BD81A - adds r6, r7, 0 - movs r4, 0 -_080BD7D2: - ldr r5, =gUnknown_02039B4C - ldr r0, [r5] - ldr r1, =0x0000060c - adds r0, r1 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0 - adds r1, r7, 0 - movs r2, 0 - bl sub_80C0E0C - adds r7, r0, 0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080BD7D2 - ldr r1, [r5] - ldr r2, =0x0000062c - adds r1, r2 - subs r0, r7, r6 - lsls r0, 4 - ldrb r3, [r1] - adds r0, r3 - strb r0, [r1] - bl sub_80BDA40 - adds r0, r7, 0 - movs r1, 0xE - bl sub_80BD2B4 - movs r0, 0x6D - bl PlaySE -_080BD81A: - mov r0, r10 - cmp r0, 0 - bne _080BD83C - ldr r0, =gUnknown_02039B4C - ldr r0, [r0] - movs r1, 0xC7 - lsls r1, 3 - adds r0, r1 - mov r2, r10 - strh r2, [r0] - b _080BD8A2 - .pool -_080BD83C: - ldr r1, =gUnknown_0855D28C - ldr r6, =gUnknown_02039B4C - ldr r2, [r6] - movs r3, 0xC7 - lsls r3, 3 - mov r9, r3 - adds r0, r2, r3 - ldrh r0, [r0] - lsrs r0, 2 - adds r1, r0, r1 - ldrb r5, [r1] - ldr r1, =gUnknown_0855D291 - adds r0, r1 - ldrb r3, [r0] - ldr r0, =0x0000062e - adds r2, r0 - strb r3, [r2] - ldr r1, [r6] - ldr r2, =0x00000636 - mov r8, r2 - adds r0, r1, r2 - strh r3, [r0] - ldr r4, =0x00000634 - adds r0, r1, r4 - strh r5, [r0] - ldr r3, =0x0000062f - adds r1, r3 - mov r0, r10 - strb r0, [r1] - ldr r2, [r6] - lsrs r5, 1 - movs r1, 0xC5 - lsls r1, 3 - adds r0, r2, r1 - strh r5, [r0] - adds r3, r2, r3 - ldrb r0, [r3] - adds r4, r2, r4 - ldrb r1, [r4] - add r2, r8 - ldrb r2, [r2] - bl sub_80BD404 - ldr r0, [r6] - mov r2, r9 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0xB - bhi _080BD8A2 - adds r0, 0x1 - strh r0, [r1] -_080BD8A2: - adds r0, r7, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80BD69C - thumb_func_start sub_80BD8D0 sub_80BD8D0: @ 80BD8D0 push {r4-r7,lr} diff --git a/data/pokedex.s b/data/pokedex.s index 7fdecaf5f7..fde6030208 100644 --- a/data/pokedex.s +++ b/data/pokedex.s @@ -22,15 +22,6 @@ .byte 0 @padding .endm -gUnknown_0855D2B8:: @ 855D2B8 - .string "{UNK_CTRL_F9 8}000$" - -gUnknown_0855D2BE:: @ 855D2BE - .incbin "graphics/pokedex/caught_ball.4bpp" - -sText_TenDashes:: @ 855D2FE - .string "----------$" - .align 2 gUnknown_0855D30C:: @ 855D30C .string "$" diff --git a/include/graphics.h b/include/graphics.h index 6e5de9ef42..4cb7ec8143 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2651,8 +2651,17 @@ extern const u8 gBattleTerrainPalette_StadiumGlacia[]; extern const u8 gBattleTerrainPalette_StadiumDrake[]; extern const u8 gBattleTerrainPalette_StadiumWallace[]; +// pokedex extern const u8 gPokedexMenu2_Gfx[]; -extern const u8 gPokedexText_Pal[]; +extern const u16 gPokedexText_Pal[]; +extern const u8 gPokedexMenu_Gfx[]; +extern const u8 gUnknown_08DC2C5C[]; +extern const u8 gUnknown_08DC2DAC[]; +extern const u8 gUnknown_08DC2A08[]; +extern const u8 gUnknown_08DC2B1C[]; +extern const u16 gPokedexHoennBg_Pal[]; +extern const u16 gPokedexText_Pal[]; +extern const u16 gPokedexNationalBg_Pal[]; // berry tag screen extern const u8 gUnknown_08D9BB44[]; diff --git a/src/pokedex.c b/src/pokedex.c index 8acc36efb2..3b4f193bb3 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -8,14 +8,32 @@ #include "window.h" #include "event_data.h" #include "palette.h" +#include "main.h" +#include "sound.h" +#include "task.h" +#include "battle_dome_cards.h" +#include "scanline_effect.h" +#include "malloc.h" +#include "gpu_regs.h" +#include "constants/songs.h" +#include "constants/rgb.h" +#include "overworld.h" +#include "menu.h" +#include "text_window.h" +#include "data2.h" +#include "string_util.h" +extern struct PokedexView *gUnknown_02039B4C; extern u16 gUnknown_02039B50; extern u8 gUnknown_02039B52; extern u8 gUnknown_030060B0; +#define HOENN_DEX_COUNT 202 #define NATIONAL_DEX_COUNT 386 +extern struct MusicPlayerInfo gMPlayInfo_BGM; + struct PokedexListItem { u16 dexNum; @@ -66,13 +84,61 @@ struct PokedexView u8 unk65C[8]; }; +enum +{ + DEX_MODE_HOENN, + DEX_MODE_NATIONAL +}; + // this file's functions +void sub_80BB774(void); +void sub_80BB78C(u8); +void sub_80BB7D4(u8); +void sub_80BBA28(u8); +void sub_80BBA78(u8); +void sub_80BBBF4(u8); +void sub_80BBC74(u8); +void sub_80BBD1C(u8); +void sub_80BBDE8(u8); +void sub_80BBE70(u8); +void sub_80BBEB8(u8); +void sub_80BC0A8(u8); +void sub_80BC0F8(u8); +void sub_80BC2D4(u8); +void sub_80BC360(u8); +void sub_80BC3DC(u8); +void sub_80BC47C(u8); +bool8 sub_80BC514(u8); +void sub_80BC844(u8); +void sub_80BC890(void); +void sub_80BC8D4(u8, u8); +void sub_80BD154(u16, u8, u8, u16); +void sub_80BD1F4(u16, u8, u8, u16); +u8 sub_80BD23C(u16, u8, u8); +void sub_80BD28C(u8, u8, u16); +void sub_80BD2B4(u16, u16); +bool8 sub_80BD404(u8, u8, u8); +u16 sub_80BD69C(u16, u16); +void sub_80BD8D0(void); +bool8 sub_80BD930(void); +void sub_80BDA40(void); +u16 sub_80BDA8C(u16); +u16 sub_80BDACC(u16, u16, u16); +void sub_80BDB7C(u8); +void sub_80BE470(struct Sprite *sprite); void sub_80BE604(struct Sprite *sprite); void sub_80BE658(struct Sprite *sprite); void sub_80BE758(struct Sprite *sprite); void sub_80BE780(struct Sprite *sprite); void sub_80BE44C(struct Sprite *sprite); 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); +u16 sub_80C0E0C(u8, u16, u16, u16); +u8 sub_80C1258(); // const rom data #include "data/pokedex_orders.h" @@ -544,7 +610,7 @@ const struct CompressedSpriteSheet gSpriteSheets_0855D26C[] = {0} }; -const struct CompressedSpritePalette gSpritePalettes_0855D26C[] = +const struct SpritePalette gSpritePalettes_0855D26C[] = { {gPokedexText_Pal, 4096}, {0} @@ -599,6 +665,10 @@ const struct WindowTemplate sWindowTemplates_0855D2A8[] = DUMMY_WIN_TEMPLATE }; +const u8 gUnknown_0855D2B8[] = _("{UNK_CTRL_F9 8}000"); +const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); +const u8 sText_TenDashes[] = _("----------"); + // .text #define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0)) @@ -690,3 +760,1062 @@ void sub_80BB384(struct PokedexView *pokedexView) for (i = 0; i <= 7; i++) pokedexView->unk65C[i] = 0; } + +void sub_80BB534(void) +{ + u8 *addr; + u32 size; + + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + sub_80C09B0(0); + addr = (u8 *)VRAM; + size = VRAM_SIZE; + while (1) + { + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, addr, size); + break; + } + } + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state = 1; + break; + case 1: + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + dp13_810BB8C(); + gMain.state++; + break; + case 2: + gUnknown_02039B4C = AllocZeroed(sizeof(struct PokedexView)); + sub_80BB384(gUnknown_02039B4C); + CreateTask(sub_80BB78C, 0); + gUnknown_02039B4C->dexMode = gSaveBlock2Ptr->pokedex.unknown1; + if (!IsNationalPokedexEnabled()) + gUnknown_02039B4C->dexMode = DEX_MODE_HOENN; + gUnknown_02039B4C->dexOrder = gSaveBlock2Ptr->pokedex.order; + gUnknown_02039B4C->selectedPokemon = gUnknown_02039B50; + gUnknown_02039B4C->unk62C = gUnknown_02039B52; + gUnknown_02039B4C->selectedScreen = 0; + if (!IsNationalPokedexEnabled()) + { + gUnknown_02039B4C->unk61A = GetHoennPokedexCount(0); + gUnknown_02039B4C->unk61C = GetHoennPokedexCount(1); + } + else + { + gUnknown_02039B4C->unk61A = GetNationalPokedexCount(0); + gUnknown_02039B4C->unk61C = GetNationalPokedexCount(1); + } + gUnknown_02039B4C->unk62D = 8; + gMain.state++; + break; + case 3: + EnableInterrupts(1); + SetVBlankCallback(sub_80BB370); + SetMainCallback2(sub_80BB774); + sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80); + break; + } +} + +void sub_80BB774(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80BB78C(u8 taskId) +{ + gUnknown_02039B4C->unk64C_1 = FALSE; + if (sub_80BC514(0)) + gTasks[taskId].func = sub_80BB7D4; +} + +void sub_80BB7D4(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY); + + if (gUnknown_02039B4C->menuY) + { + gUnknown_02039B4C->menuY -= 8; + } + else + { + if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen) + { + sub_80BD8D0(); + BeginNormalPaletteFade(~(1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK); + gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470; + gTasks[taskId].func = sub_80BBBF4; + PlaySE(SE_PIN); + sub_80BC890(); + } + else if (gMain.newKeys & START_BUTTON) + { + //Open menu + gUnknown_02039B4C->menuY = 0; + gUnknown_02039B4C->menuIsOpen = 1; + gUnknown_02039B4C->menuCursorPos = 0; + gTasks[taskId].func = sub_80BBA78; + PlaySE(SE_SELECT); + } + else if (gMain.newKeys & SELECT_BUTTON) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].data[0] = sub_80C1258(); + gUnknown_02039B4C->unk64E = 0; + gUnknown_02039B4C->unk62A = gUnknown_02039B4C->unk62C; + gUnknown_02039B4C->unk610 = gUnknown_02039B4C->selectedPokemon; + gUnknown_02039B4C->unk614 = gUnknown_02039B4C->dexMode; + gUnknown_02039B4C->unk618 = gUnknown_02039B4C->dexOrder; + gTasks[taskId].func = sub_80BBD1C; + PlaySE(SE_PC_LOGIN); + sub_80BC890(); + } + else if (gMain.newKeys & B_BUTTON) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = sub_80BBDE8; + PlaySE(SE_PC_OFF); + } + else + { + //Handle D-pad + gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE); + if (gUnknown_02039B4C->unk62E) + gTasks[taskId].func = sub_80BBA28; + } + } +} + +void sub_80BBA28(u8 taskId) +{ + if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636)) + gTasks[taskId].func = sub_80BB7D4; +} + +void sub_80BBA78(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY); + + //If menu is not open, slide it up, on screen + if (gUnknown_02039B4C->menuY != 80) + gUnknown_02039B4C->menuY += 8; + else + { + if (gMain.newKeys & A_BUTTON) + { + switch (gUnknown_02039B4C->menuCursorPos) + { + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 1: //LIST TOP + gUnknown_02039B4C->selectedPokemon = 0; + gUnknown_02039B4C->unk62C = 0x40; + sub_80BDA40(); + sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 2: //LIST BOTTOM + gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1; + gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30; + sub_80BDA40(); + sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 3: //CLOSE POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = sub_80BBDE8; + PlaySE(SE_PC_OFF); + break; + } + } + + //Exit menu when Start or B is pressed + if (gMain.newKeys & (START_BUTTON | B_BUTTON)) + { + gUnknown_02039B4C->menuIsOpen = 0; + gTasks[taskId].func = sub_80BB7D4; + PlaySE(SE_SELECT); + } + else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos != 0) + { + gUnknown_02039B4C->menuCursorPos--; + PlaySE(SE_SELECT); + } + else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 2) + { + gUnknown_02039B4C->menuCursorPos++; + PlaySE(SE_SELECT); + } + } +} + +void sub_80BBBF4(u8 taskId) +{ + if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56) + { + gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A; + gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId); + gTasks[taskId].func = sub_80BBC74; + } +} + +void sub_80BBC74(u8 taskId) +{ + if (gTasks[gTasks[taskId].data[0]].isActive) + { + if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930()) + sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]); + } + else + { + gUnknown_02039B50 = gUnknown_02039B4C->selectedPokemon; + gUnknown_02039B52 = gUnknown_02039B4C->unk62C; + gTasks[taskId].func = sub_80BB78C; + } +} + +void sub_80BBD1C(u8 taskId) +{ + if (!gTasks[gTasks[taskId].data[0]].isActive) + { + sub_80BDA40(); + if (gUnknown_02039B4C->unk64E != 0) + { + gUnknown_02039B4C->selectedPokemon = 0; + gUnknown_02039B4C->unk62C = 0x40; + gTasks[taskId].func = sub_80BBE70; + } + else + { + gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A; + gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610; + gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614; + if (!IsNationalPokedexEnabled()) + gUnknown_02039B4C->dexMode = DEX_MODE_HOENN; + gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618; + gTasks[taskId].func = sub_80BB78C; + } + } +} + +void sub_80BBDE8(u8 taskId) +{ + if (!gPaletteFade.active) + { + gSaveBlock2Ptr->pokedex.unknown1 = gUnknown_02039B4C->dexMode; + if (!IsNationalPokedexEnabled()) + gSaveBlock2Ptr->pokedex.unknown1 = DEX_MODE_HOENN; + gSaveBlock2Ptr->pokedex.order = gUnknown_02039B4C->dexOrder; + sub_80BDA40(); + sub_80BC890(); + DestroyTask(taskId); + SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); + Free(gUnknown_02039B4C); + } +} + +void sub_80BBE70(u8 taskId) +{ + gUnknown_02039B4C->unk64C_1 = TRUE; + if (sub_80BC514(3)) + gTasks[taskId].func = sub_80BBEB8; +} + +void sub_80BBEB8(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY); + + if (gUnknown_02039B4C->menuY) + { + gUnknown_02039B4C->menuY -= 8; + } + else + { + if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen) + { + u32 a; + + sub_80BD8D0(); + a = (1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16)); + gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470; + BeginNormalPaletteFade(~a, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = sub_80BC2D4; + PlaySE(SE_PIN); + sub_80BC890(); + } + else if (gMain.newKeys & START_BUTTON) + { + gUnknown_02039B4C->menuY = 0; + gUnknown_02039B4C->menuIsOpen = 1; + gUnknown_02039B4C->menuCursorPos = 0; + gTasks[taskId].func = sub_80BC0F8; + PlaySE(SE_SELECT); + } + else if (gMain.newKeys & SELECT_BUTTON) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].data[0] = sub_80C1258(); + gUnknown_02039B4C->unk64E = 0; + gTasks[taskId].func = sub_80BBD1C; + PlaySE(SE_PC_LOGIN); + sub_80BC890(); + } + else if (gMain.newKeys & B_BUTTON) + { + BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = sub_80BC3DC; + PlaySE(SE_PC_OFF); + } + else + { + //Handle D-pad + gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE); + if (gUnknown_02039B4C->unk62E) + gTasks[taskId].func = sub_80BC0A8; + } + } +} + +void sub_80BC0A8(u8 taskId) +{ + if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636)) + gTasks[taskId].func = sub_80BBEB8; +} + +void sub_80BC0F8(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY); + + if (gUnknown_02039B4C->menuY != 96) + { + gUnknown_02039B4C->menuY += 8; + } + else + { + if (gMain.newKeys & A_BUTTON) + { + switch (gUnknown_02039B4C->menuCursorPos) + { + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; + break; + case 1: //LIST TOP + gUnknown_02039B4C->selectedPokemon = 0; + gUnknown_02039B4C->unk62C = 0x40; + sub_80BDA40(); + sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 2: //LIST BOTTOM + gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1; + gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30; + sub_80BDA40(); + sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 3: //BACK TO POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = sub_80BC3DC; + PlaySE(SE_TRACK_DOOR); + break; + case 4: //CLOSE POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = sub_80BC47C; + PlaySE(SE_PC_OFF); + break; + } + } + + //Exit menu when Start or B is pressed + if (gMain.newKeys & (START_BUTTON | B_BUTTON)) + { + gUnknown_02039B4C->menuIsOpen = 0; + gTasks[taskId].func = sub_80BBEB8; + PlaySE(SE_SELECT); + } + else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos) + { + gUnknown_02039B4C->menuCursorPos--; + PlaySE(SE_SELECT); + } + else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 3) + { + gUnknown_02039B4C->menuCursorPos++; + PlaySE(SE_SELECT); + } + } +} + +void sub_80BC2D4(u8 taskId) +{ + if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56) + { + gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A; + gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId); + gUnknown_02039B4C->selectedMonSpriteId = -1; + gTasks[taskId].func = sub_80BC360; + } +} + +void sub_80BC360(u8 taskId) +{ + if (gTasks[gTasks[taskId].data[0]].isActive) + { + if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930()) + sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]); + } + else + { + gTasks[taskId].func = sub_80BBE70; + } +} + +void sub_80BC3DC(u8 taskId) +{ + if (!gPaletteFade.active) + { + gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A; + gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610; + gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614; + if (!IsNationalPokedexEnabled()) + gUnknown_02039B4C->dexMode = DEX_MODE_HOENN; + gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618; + gTasks[taskId].func = sub_80BB78C; + sub_80BDA40(); + sub_80BC890(); + } +} + +void sub_80BC47C(u8 taskId) +{ + if (!gPaletteFade.active) + { + gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A; + gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610; + gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614; + if (!IsNationalPokedexEnabled()) + gUnknown_02039B4C->dexMode = DEX_MODE_HOENN; + gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618; + gTasks[taskId].func = sub_80BBDE8; + } +} + +bool8 sub_80BC514(u8 a) +{ + switch (gMain.state) + { + case 0: + default: + if (gPaletteFade.active) + return 0; + SetVBlankCallback(NULL); + gUnknown_02039B4C->unk64A = a; + sub_80C09B0(0); + SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gBgTemplates_0855D298, 4); + SetBgTilemapBuffer(3, AllocZeroed(0x800)); + SetBgTilemapBuffer(2, AllocZeroed(0x800)); + SetBgTilemapBuffer(1, AllocZeroed(0x800)); + SetBgTilemapBuffer(0, AllocZeroed(0x800)); + copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(1, gUnknown_08DC2C5C, 0, 0); + CopyToBgTilemapBuffer(3, gUnknown_08DC2DAC, 0, 0); + if (a == 0) + CopyToBgTilemapBuffer(0, gUnknown_08DC2A08, 0, 0x280); + else + CopyToBgTilemapBuffer(0, gUnknown_08DC2B1C, 0, 0x280); + ResetPaletteFade(); + if (a == 0) + gUnknown_02039B4C->unk64C_1 = FALSE; + else + gUnknown_02039B4C->unk64C_1 = TRUE; + sub_80BC844(gUnknown_02039B4C->unk64C_1); + InitWindows(sWindowTemplates_0855D2A8); + DeactivateAllTextPrinters(); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); + gMain.state = 1; + break; + case 1: + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedObjectPic(&gSpriteSheets_0855D26C[0]); + LoadSpritePalettes(gSpritePalettes_0855D26C); + sub_80BDB7C(a); + gMain.state++; + break; + case 2: + gMain.state++; + break; + case 3: + if (a == 0) + sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder); + sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE); + gUnknown_02039B4C->menuIsOpen = 0; + gUnknown_02039B4C->menuY = 0; + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 4: + BeginNormalPaletteFade(-1, 0, 0x10, 0, RGB_BLACK); + SetVBlankCallback(sub_80BB370); + gMain.state++; + break; + case 5: + SetGpuReg(REG_OFFSET_WININ, 0x3F3F); + SetGpuReg(REG_OFFSET_WINOUT, 0x1D3F); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WIN1H, 0); + SetGpuReg(REG_OFFSET_WIN1V, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 6: + if (!gPaletteFade.active) + { + gMain.state = 0; + return TRUE; + } + break; + } + return FALSE; +} + +void sub_80BC844(u8 a) +{ + if (a == 1) + LoadPalette(gPokedexHoennBg_Pal + 1, 1, 0xBE); + else if (!IsNationalPokedexEnabled()) + LoadPalette(gPokedexText_Pal + 1, 1, 0xBE); + else + LoadPalette(gPokedexNationalBg_Pal + 1, 1, 0xBE); + LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); +} + +void sub_80BC890(void) +{ + void* tilemapBuffer; + + FreeAllWindowBuffers(); + tilemapBuffer = GetBgTilemapBuffer(0); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(1); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(2); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(3); + if (tilemapBuffer) + Free(tilemapBuffer); +} + +void sub_80BC8D4(u8 dexMode, u8 sortMode) +{ + u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. + s16 i; + + gUnknown_02039B4C->pokemonListCount = 0; + + switch (dexMode) + { + default: + case DEX_MODE_HOENN: + vars[0] = HOENN_DEX_COUNT; + vars[1] = 1; + break; + case DEX_MODE_NATIONAL: + if (IsNationalPokedexEnabled()) + { + vars[0] = NATIONAL_DEX_COUNT; + vars[1] = 0; + } + else + { + vars[0] = HOENN_DEX_COUNT; + vars[1] = 1; + } + break; + } + + switch (sortMode) + { + case 0: + if (vars[1]) + { + for (i = 0; i < vars[0]; i++) + { + vars[2] = HoennToNationalOrder(i + 1); + gUnknown_02039B4C->unk0[i].dexNum = vars[2]; + gUnknown_02039B4C->unk0[i].seen = GetSetPokedexFlag(vars[2], 0); + gUnknown_02039B4C->unk0[i].owned = GetSetPokedexFlag(vars[2], 1); + if (gUnknown_02039B4C->unk0[i].seen) + gUnknown_02039B4C->pokemonListCount = i + 1; + } + } + else + { + bool32 r10; + s16 r5; + + r10 = r5 = i = 0; + for (i = 0; i < vars[0]; i++) + { + vars[2] = i + 1; + if (GetSetPokedexFlag(vars[2], 0)) + r10 = 1; + if (r10) + { + asm(""); //Needed to match for some reason + gUnknown_02039B4C->unk0[r5].dexNum = vars[2]; + gUnknown_02039B4C->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0); + gUnknown_02039B4C->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1); + if (gUnknown_02039B4C->unk0[r5].seen) + gUnknown_02039B4C->pokemonListCount = r5 + 1; + r5++; + } + } + } + break; + case 1: + for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++) + { + vars[2] = gPokedexOrder_Alphabetical[i]; + + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0)) + { + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2]; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1); + gUnknown_02039B4C->pokemonListCount++; + } + } + break; + case 2: + for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) + { + vars[2] = gPokedexOrder_Weight[i]; + + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + { + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2]; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1; + gUnknown_02039B4C->pokemonListCount++; + } + } + break; + case 3: + for (i = 0; i < NATIONAL_DEX_COUNT; i++) + { + vars[2] = gPokedexOrder_Weight[i]; + + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + { + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2]; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1; + gUnknown_02039B4C->pokemonListCount++; + } + } + break; + case 4: + for (i = NATIONAL_DEX_COUNT - 1; i >=0; i--) + { + vars[2] = gPokedexOrder_Height[i]; + + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + { + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2]; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1; + gUnknown_02039B4C->pokemonListCount++; + } + } + break; + case 5: + for (i = 0; i < NATIONAL_DEX_COUNT; i++) + { + vars[2] = gPokedexOrder_Height[i]; + + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + { + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2]; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1; + gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1; + gUnknown_02039B4C->pokemonListCount++; + } + } + break; + } + + for (i = gUnknown_02039B4C->pokemonListCount; i < NATIONAL_DEX_COUNT; i++) + { + gUnknown_02039B4C->unk0[i].dexNum |= 0xFFFF; + gUnknown_02039B4C->unk0[i].seen = 0; + gUnknown_02039B4C->unk0[i].owned = 0; + } +} + +void sub_80BCE2C(u8 a, u8 b, const u8* str, u8 c, u8 d) +{ + u8 sp14[3]; + + sp14[0] = 0; + sp14[1] = 15; + sp14[2] = 3; + AddTextPrinterParameterized2(a, b, c * 8, (d * 8) + 1, 0, 0, sp14, -1, str); +} + +void sub_80BCE84(u8 a, u16 b, u16 c) +{ + s16 _b; + u16 i; + u16 r2; + + switch (a) + { + case 0: + default: + _b = b - 5; + for (i = 0; i <= 10; i++) + { + if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF) + { + sub_80BD28C(0x11, i * 2, c); + } + else + { + sub_80BD28C(0x11, i * 2, c); + if (gUnknown_02039B4C->unk0[_b].seen) + { + sub_80BD154(_b, 0x12, i * 2, c); + sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, i * 2, c); + sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, i * 2); + } + else + { + sub_80BD154(_b, 0x12, i * 2, c); + sub_80BD1F4(0, 0x11, i * 2, c); + sub_80BD23C(0, 0x16, i * 2); + } + } + _b++; + } + break; + case 1: + _b = b - 5; + if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF) + { + sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c); + } + else + { + sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c); + if (gUnknown_02039B4C->unk0[_b].seen) + { + sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c); + sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, gUnknown_02039B4C->unk630 * 2, c); + sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, gUnknown_02039B4C->unk630 * 2); + } + else + { + sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c); + sub_80BD1F4(0, 0x11, gUnknown_02039B4C->unk630 * 2, c); + sub_80BD23C(0, 0x16, gUnknown_02039B4C->unk630 * 2); + } + } + break; + case 2: + _b = b + 5; + r2 = gUnknown_02039B4C->unk630 + 10; + if (r2 > 15) + r2 -= 16; + if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF) + sub_80BD28C(0x11, r2 * 2, c); + else + { + sub_80BD28C(0x11, r2 * 2, c); + if (gUnknown_02039B4C->unk0[_b].seen) + { + sub_80BD154(_b, 0x12, r2 * 2, c); + sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, r2 * 2, c); + sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, r2 * 2); + } + else + { + sub_80BD154(_b, 0x12, r2 * 2, c); + sub_80BD1F4(0, 0x11, r2 * 2, c); + sub_80BD23C(0, 0x16, r2 * 2); + } + } + break; + } + CopyWindowToVram(0, 2); +} + +void sub_80BD154(u16 a, u8 b, u8 c, u16 unused) +{ + u8 text[6]; + u16 r6; + + memcpy(text, gUnknown_0855D2B8, 6); + r6 = gUnknown_02039B4C->unk0[a].dexNum; + if (gUnknown_02039B4C->dexMode == DEX_MODE_HOENN) + r6 = NationalToHoennOrder(r6); + text[2] = CHAR_0 + r6 / 100; + text[3] = CHAR_0 + (r6 % 100) / 10; + text[4] = CHAR_0 + (r6 % 100) % 10; + sub_80BCE2C(0, 7, text, b, c); +} + +void sub_80BD1F4(u16 a, u8 b, u8 c, u16 unused) +{ + if (a) + BlitBitmapToWindow(0, gUnknown_0855D2BE, b * 8, c * 8, 8, 16); + else + FillWindowPixelRect(0, 0, b * 8, c * 8, 8, 16); +} + +u8 sub_80BD23C(u16 num, u8 b, u8 c) +{ + const u8* str; + + num = NationalPokedexNumToSpecies(num); + if (num) + str = gSpeciesNames[num]; + else + str = sText_TenDashes; + sub_80BCE2C(0, 7, str, b, c); + return StringLength(str); +} + +void sub_80BD28C(u8 a, u8 b, u16 unused) +{ + FillWindowPixelRect(0, 0, a * 8, b * 8, 0x60, 16); +} + +void sub_80BD2B4(u16 a, u16 b) +{ + u8 i; + u16 unk; + u8 spriteId; + + gPaletteFade.bufferTransferDisabled = TRUE; + + for (i = 0; i < 4; i++) + gUnknown_02039B4C->unk61E[i] = 0xFFFF; + gUnknown_02039B4C->selectedMonSpriteId = 0xFFFF; + + unk = sub_80BDA8C(a - 1); + if (unk != 0xFFFF) + { + spriteId = sub_80BDACC(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_80BE4E0; + gSprites[spriteId].data[5] = -32; + } + + unk = sub_80BDA8C(a); + if (unk != 0xFFFF) + { + spriteId = sub_80BDACC(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_80BE4E0; + gSprites[spriteId].data[5] = 0; + } + + unk = sub_80BDA8C(a + 1); + if (unk != 0xFFFF) + { + spriteId = sub_80BDACC(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_80BE4E0; + gSprites[spriteId].data[5] = 32; + } + + sub_80BCE84(0, a, b); + SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D); + + gUnknown_02039B4C->unk630 = 0; + gUnknown_02039B4C->unk632 = 0; + + gPaletteFade.bufferTransferDisabled = FALSE; +} + +bool8 sub_80BD404(u8 a, u8 b, u8 c) +{ + u16 i; + u8 foo; + + if (gUnknown_02039B4C->unk62E) + { + gUnknown_02039B4C->unk62E--; + switch (a) + { + case 1: + for (i = 0; i < 4; i++) + { + if (gUnknown_02039B4C->unk61E[i] != 0xFFFF) + gSprites[gUnknown_02039B4C->unk61E[i]].data[5] += b; + } + foo = 16 * (c - gUnknown_02039B4C->unk62E) / c; + SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 - foo); + gUnknown_02039B4C->unk62C -= gUnknown_02039B4C->unk628; + break; + case 2: + for (i = 0; i < 4; i++) + { + if (gUnknown_02039B4C->unk61E[i] != 0xFFFF) + gSprites[gUnknown_02039B4C->unk61E[i]].data[5] -= b; + } + foo = 16 * (c - gUnknown_02039B4C->unk62E) / c; + SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 + foo); + gUnknown_02039B4C->unk62C += gUnknown_02039B4C->unk628; + break; + } + return FALSE; + } + else + { + SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk630 * 16); + return TRUE; + } +} + +void sub_80BD5A8(u8 a, u16 b) +{ + u16 unk; + u8 spriteId; + + gUnknown_02039B4C->unk632 = gUnknown_02039B4C->unk630; + switch (a) + { + case 1: + unk = sub_80BDA8C(b - 1); + if (unk != 0xFFFF) + { + spriteId = sub_80BDACC(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_80BE4E0; + gSprites[spriteId].data[5] = -64; + } + if (gUnknown_02039B4C->unk630 > 0) + gUnknown_02039B4C->unk630--; + else + gUnknown_02039B4C->unk630 = 15; + break; + case 2: + unk = sub_80BDA8C(b + 1); + if (unk != 0xFFFF) + { + spriteId = sub_80BDACC(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_80BE4E0; + gSprites[spriteId].data[5] = 0x40; + } + if (gUnknown_02039B4C->unk630 <= 0xE) + gUnknown_02039B4C->unk630++; + else + gUnknown_02039B4C->unk630 = 0; + break; + } +} + +u16 sub_80BD69C(u16 a, u16 b) +{ + u8 r3; + u8 r5; + u8 i; + u16 r6; + u8 r10 = 0; + + if ((gMain.heldKeys & DPAD_UP) && (a > 0)) + { + r10 = 1; + a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1); + sub_80BD5A8(1, a); + sub_80BCE84(1, a, b); + PlaySE(SE_Z_SCROLL); + } + else if ((gMain.heldKeys & DPAD_DOWN) && (a < gUnknown_02039B4C->pokemonListCount - 1)) + { + r10 = 2; + a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1); + sub_80BD5A8(2, a); + sub_80BCE84(2, a, b); + PlaySE(SE_Z_SCROLL); + } + else if ((gMain.newKeys & DPAD_LEFT) && (a > 0)) + { + r6 = a; + + for (i = 0; i < 7; i++) + a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1); + gUnknown_02039B4C->unk62C += 16 * (a - r6); + sub_80BDA40(); + sub_80BD2B4(a, 0xE); + PlaySE(SE_Z_PAGE); + } + else if ((gMain.newKeys & DPAD_RIGHT) && (a < gUnknown_02039B4C->pokemonListCount - 1)) + { + r6 = a; + for (i = 0; i < 7; i++) + a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1); + gUnknown_02039B4C->unk62C += (a - r6) * 16; + sub_80BDA40(); + sub_80BD2B4(a, 0xE); + PlaySE(SE_Z_PAGE); + } + + if (r10 == 0) + { + gUnknown_02039B4C->unk638 = 0; + return a; + } + + r5 = gUnknown_0855D28C[gUnknown_02039B4C->unk638 / 4]; + r3 = gUnknown_0855D291[gUnknown_02039B4C->unk638 / 4]; + gUnknown_02039B4C->unk62E = r3; + gUnknown_02039B4C->unk636 = r3; + gUnknown_02039B4C->unk634 = r5; + gUnknown_02039B4C->unk62F = r10; + gUnknown_02039B4C->unk628 = r5 / 2; + sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636); + if (gUnknown_02039B4C->unk638 <= 0xB) + gUnknown_02039B4C->unk638++; + return a; +}