diff options
-rw-r--r-- | asm/pokedex_screen.s | 3120 | ||||
-rw-r--r-- | include/pokedex.h | 2 | ||||
-rw-r--r-- | include/pokedex_area_markers.h | 3 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/pokedex_screen.c | 837 |
5 files changed, 832 insertions, 3131 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s deleted file mode 100644 index dcfc5f110..000000000 --- a/asm/pokedex_screen.s +++ /dev/null @@ -1,3120 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8105594 -sub_8105594: @ 8105594 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r0, _081055C0 @ =gUnknown_203ACF0 - ldr r3, [r0] - adds r2, r3, 0 - adds r2, 0x2C - ldrb r0, [r2] - cmp r0, 0 - bne _081055C8 - ldr r0, _081055C4 @ =gUnknown_8452334 - ldr r0, [r0] - ldrb r3, [r0, 0x2] - ldrb r1, [r0, 0x3] - b _081055E2 - .align 2, 0 -_081055C0: .4byte gUnknown_203ACF0 -_081055C4: .4byte gUnknown_8452334 -_081055C8: - ldr r1, _08105634 @ =gUnknown_8452334 - ldrb r0, [r2] - subs r0, 0x1 - lsls r0, 2 - adds r0, r1 - adds r1, r3, 0 - adds r1, 0x2D - ldrb r1, [r1] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldrb r3, [r1, 0x2] - ldrb r1, [r1, 0x3] -_081055E2: - lsls r0, r4, 26 - movs r2, 0xC0 - lsls r2, 19 - adds r0, r2 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r2, r4, 1 - adds r0, r2, 0x3 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0xC] - ldr r0, [sp, 0x8] - cmp r0, 0x1B - bls _08105602 - movs r0, 0x1C - str r0, [sp, 0x8] -_08105602: - ldr r0, [sp, 0xC] - cmp r0, 0xD - bls _0810560C - movs r0, 0xE - str r0, [sp, 0xC] -_0810560C: - subs r0, r3, r2 - lsls r0, 16 - subs r1, r4 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x10] - lsrs r6, r0, 16 - asrs r1, r0, 16 - ldr r2, [sp, 0x8] - adds r0, r1, r2 - adds r0, 0x2 - cmp r0, 0x1D - ble _08105638 - adds r0, r1, 0 - adds r0, 0x1C - adds r1, r6, r2 - subs r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - b _0810563E - .align 2, 0 -_08105634: .4byte gUnknown_8452334 -_08105638: - cmp r1, 0 - bge _0810563E - movs r6, 0 -_0810563E: - ldr r3, [sp, 0x10] - lsls r0, r3, 16 - asrs r1, r0, 16 - ldr r2, [sp, 0xC] - adds r0, r1, r2 - adds r0, 0x2 - cmp r0, 0x11 - ble _0810565E - adds r0, r1, 0 - adds r0, 0x10 - adds r1, r3, r2 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x10] - b _08105666 -_0810565E: - cmp r1, 0x1 - bgt _08105666 - movs r3, 0x2 - str r3, [sp, 0x10] -_08105666: - ldr r1, [sp, 0xC] - lsrs r0, r1, 1 - adds r0, 0x2 - ldr r2, [sp, 0x10] - lsls r2, 16 - asrs r2, 16 - mov r10, r2 - add r10, r0 - mov r3, r10 - lsls r3, 16 - lsrs r3, 16 - mov r10, r3 - lsls r2, r6, 24 - lsrs r2, 24 - str r2, [sp, 0x14] - ldr r0, [sp, 0x10] - lsls r4, r0, 24 - lsrs r4, 24 - movs r5, 0x1 - str r5, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x4 - adds r3, r4, 0 - bl FillBgTilemapBufferRect_Palette0 - adds r6, 0x1 - lsls r2, r6, 24 - lsrs r2, 24 - str r2, [sp, 0x18] - ldr r1, [sp, 0x8] - str r1, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x5 - adds r3, r4, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _081057EC @ =0x00000404 - ldr r2, [sp, 0x8] - lsls r2, 24 - asrs r2, 24 - mov r8, r2 - add r8, r6 - mov r3, r8 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - str r5, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - mov r2, r8 - adds r3, r4, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r6, [sp, 0x10] - adds r6, 0x1 - ldr r0, [sp, 0xC] - lsls r4, r0, 24 - asrs r4, 24 - adds r4, r6 - lsls r4, 24 - lsrs r4, 24 - str r5, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0xA - ldr r2, [sp, 0x14] - adds r3, r4, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, [sp, 0x8] - str r1, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0xB - ldr r2, [sp, 0x18] - adds r3, r4, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _081057F0 @ =0x0000040a - str r5, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - mov r2, r8 - adds r3, r4, 0 - bl FillBgTilemapBufferRect_Palette0 - lsls r3, r6, 24 - lsrs r3, 24 - str r3, [sp, 0x1C] - str r5, [sp] - mov r2, r10 - ldr r3, [sp, 0x10] - subs r6, r2, r3 - subs r6, 0x1 - lsls r6, 24 - lsrs r6, 24 - str r6, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x6 - ldr r2, [sp, 0x14] - ldr r3, [sp, 0x1C] - bl FillBgTilemapBufferRect_Palette0 - mov r0, r10 - lsls r3, r0, 24 - lsrs r3, 24 - str r3, [sp, 0x20] - str r5, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x7 - ldr r2, [sp, 0x14] - bl FillBgTilemapBufferRect_Palette0 - movs r1, 0x1 - add r1, r10 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - str r5, [sp] - ldr r2, [sp, 0xC] - ldr r3, [sp, 0x10] - adds r4, r2, r3 - mov r0, r10 - subs r4, r0 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x9 - ldr r2, [sp, 0x14] - mov r3, r9 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _081057F4 @ =0x00000406 - str r5, [sp] - str r6, [sp, 0x4] - adds r0, r7, 0 - mov r2, r8 - ldr r3, [sp, 0x1C] - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _081057F8 @ =0x00000407 - str r5, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - mov r2, r8 - ldr r3, [sp, 0x20] - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _081057FC @ =0x00000409 - str r5, [sp] - str r4, [sp, 0x4] - adds r0, r7, 0 - mov r2, r8 - mov r3, r9 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, [sp, 0x8] - str r1, [sp] - str r6, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x1 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl FillBgTilemapBufferRect_Palette0 - ldr r2, [sp, 0x8] - str r2, [sp] - str r5, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x8 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x20] - bl FillBgTilemapBufferRect_Palette0 - ldr r3, [sp, 0x8] - str r3, [sp] - str r4, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x2 - ldr r2, [sp, 0x18] - mov r3, r9 - bl FillBgTilemapBufferRect_Palette0 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081057EC: .4byte 0x00000404 -_081057F0: .4byte 0x0000040a -_081057F4: .4byte 0x00000406 -_081057F8: .4byte 0x00000407 -_081057FC: .4byte 0x00000409 - thumb_func_end sub_8105594 - - thumb_func_start sub_8105800 -sub_8105800: @ 8105800 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r7, r3, 24 - adds r0, r1, 0 - bl SpeciesToNationalPokedexNum - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r2, _08105860 @ =gPokedexEntries - adds r5, r1, r2 - movs r4, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - cmp r0, 0 - beq _08105864 - ldrb r0, [r5] - .if REVISION == 0 - cmp r0, 0 - .else - cmp r0, 0xFF - .endif - beq _08105878 -_08105840: - mov r1, sp - adds r1, r4 - adds r1, 0x8 - adds r0, r5, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, r4 - ldrb r0, [r0] - .if REVISION == 0 - cmp r0, 0 - .else - cmp r0, 0xFF - .endif - beq _08105878 - cmp r4, 0xA - bls _08105840 - b _08105878 - .align 2, 0 -_08105860: .4byte gPokedexEntries -_08105864: - movs r1, 0xAC -_08105866: - mov r0, sp - adds r0, r4 - adds r0, 0x8 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xA - bls _08105866 -_08105878: - mov r1, sp - adds r1, r4 - adds r1, 0x8 - movs r0, 0xFF - strb r0, [r1] - str r7, [sp] - movs r4, 0 - str r4, [sp, 0x4] - mov r0, r8 - movs r1, 0 - add r2, sp, 0x8 - adds r3, r6, 0 - bl sub_81047C8 - movs r0, 0 - add r1, sp, 0x8 - movs r2, 0 - bl GetStringWidth - adds r0, r6, r0 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _081058C0 @ =gText_PokedexPokemon - str r7, [sp] - str r4, [sp, 0x4] - mov r0, r8 - movs r1, 0 - adds r3, r6, 0 - bl sub_81047C8 - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081058C0: .4byte gText_PokedexPokemon - thumb_func_end sub_8105800 - - thumb_func_start sub_81058C4 -sub_81058C4: @ 81058C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - adds r0, r1, 0 - bl SpeciesToNationalPokedexNum - ldr r2, _08105974 @ =gPokedexEntries - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r4, [r1, 0xC] - ldr r1, _08105978 @ =gText_HT - mov r10, r1 - movs r3, 0 - add r2, sp, 0x8 - movs r1, 0xFC - strb r1, [r2] - adds r2, 0x1 - movs r1, 0x14 - strb r1, [r2] - adds r2, 0x1 - movs r1, 0x5 - strb r1, [r2] - mov r1, sp - adds r1, 0xB - strb r3, [r1] - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - cmp r0, 0 - beq _081059CE - ldr r0, _0810597C @ =0x00002710 - muls r0, r4 - movs r1, 0xFE - bl __divsi3 - adds r5, r0, 0 - movs r1, 0xA - bl __umodsi3 - cmp r0, 0x4 - bls _0810593A - adds r5, 0xA -_0810593A: - adds r0, r5, 0 - movs r1, 0x78 - bl __udivsi3 - adds r6, r0, 0 - lsls r0, r6, 4 - subs r0, r6 - lsls r0, 3 - subs r0, r5, r0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - adds r0, r6, 0 - movs r1, 0xA - bl __udivsi3 - adds r2, r0, 0 - cmp r2, 0 - bne _08105980 - add r0, sp, 0xC - strb r2, [r0] - mov r1, sp - adds r1, 0xD - adds r0, r6, 0 - adds r0, 0xA1 - strb r0, [r1] - b _08105998 - .align 2, 0 -_08105974: .4byte gPokedexEntries -_08105978: .4byte gText_HT -_0810597C: .4byte 0x00002710 -_08105980: - add r1, sp, 0xC - adds r0, r2, 0 - adds r0, 0xA1 - strb r0, [r1] - mov r4, sp - adds r4, 0xD - adds r0, r6, 0 - movs r1, 0xA - bl __umodsi3 - adds r0, 0xA1 - strb r0, [r4] -_08105998: - mov r1, sp - adds r1, 0xE - movs r0, 0xB4 - strb r0, [r1] - mov r4, sp - adds r4, 0xF - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r4] - add r4, sp, 0x10 - adds r0, r5, 0 - movs r1, 0xA - bl __umodsi3 - adds r0, 0xA1 - strb r0, [r4] - mov r1, sp - adds r1, 0x11 - movs r0, 0xB2 - strb r0, [r1] - movs r2, 0xB - adds r1, 0x1 - movs r0, 0xFF - b _081059F2 -_081059CE: - add r0, sp, 0xC - movs r1, 0xAC - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - mov r2, sp - adds r2, 0xE - movs r0, 0xB4 - strb r0, [r2] - mov r0, sp - adds r0, 0xF - strb r1, [r0] - add r0, sp, 0x10 - strb r1, [r0] - movs r2, 0xA - mov r1, sp - adds r1, 0x11 - movs r0, 0xB2 -_081059F2: - strb r0, [r1] - mov r1, sp - adds r1, r2 - adds r1, 0x8 - movs r0, 0xFF - strb r0, [r1] - mov r0, r8 - str r0, [sp] - movs r4, 0 - str r4, [sp, 0x4] - mov r0, r9 - movs r1, 0 - mov r2, r10 - adds r3, r7, 0 - bl sub_81047C8 - adds r0, r7, 0 - adds r0, 0x1E - lsls r0, 24 - lsrs r7, r0, 24 - mov r1, r8 - str r1, [sp] - str r4, [sp, 0x4] - mov r0, r9 - movs r1, 0 - add r2, sp, 0x8 - adds r3, r7, 0 - bl sub_81047C8 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81058C4 - - thumb_func_start sub_8105A3C -sub_8105A3C: @ 8105A3C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - adds r0, r1, 0 - bl SpeciesToNationalPokedexNum - ldr r2, _08105ACC @ =gPokedexEntries - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r4, [r1, 0xE] - add r2, sp, 0x8 - movs r1, 0xFC - strb r1, [r2] - adds r2, 0x1 - movs r1, 0x14 - strb r1, [r2] - adds r2, 0x1 - movs r1, 0x5 - strb r1, [r2] - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - cmp r0, 0 - bne _08105A92 - b _08105BC4 -_08105A92: - ldr r7, _08105AD0 @ =0x000186a0 - adds r0, r4, 0 - muls r0, r7 - ldr r1, _08105AD4 @ =0x000011b8 - bl __divsi3 - adds r6, r0, 0 - movs r1, 0xA - bl __umodsi3 - cmp r0, 0x4 - bls _08105AAC - adds r6, 0xA -_08105AAC: - movs r5, 0 - mov r4, sp - adds r4, 0xB - adds r0, r6, 0 - adds r1, r7, 0 - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA1 - bne _08105AD8 - movs r7, 0x4 - strb r5, [r4] - b _08105ADC - .align 2, 0 -_08105ACC: .4byte gPokedexEntries -_08105AD0: .4byte 0x000186a0 -_08105AD4: .4byte 0x000011b8 -_08105AD8: - movs r5, 0x1 - movs r7, 0x4 -_08105ADC: - ldr r1, _08105B14 @ =0x000186a0 - adds r0, r6, 0 - bl __umodsi3 - adds r6, r0, 0 - mov r4, sp - adds r4, r7 - adds r4, 0x8 - ldr r1, _08105B18 @ =0x00002710 - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA1 - bne _08105B1C - cmp r5, 0 - bne _08105B1C - adds r0, r7, 0 - adds r1, r0, 0x1 - lsls r1, 24 - lsrs r7, r1, 24 - add r0, sp - adds r0, 0x8 - strb r5, [r0] - b _08105B24 - .align 2, 0 -_08105B14: .4byte 0x000186a0 -_08105B18: .4byte 0x00002710 -_08105B1C: - movs r5, 0x1 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_08105B24: - ldr r1, _08105B5C @ =0x00002710 - adds r0, r6, 0 - bl __umodsi3 - adds r6, r0, 0 - mov r4, sp - adds r4, r7 - adds r4, 0x8 - movs r1, 0xFA - lsls r1, 2 - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA1 - bne _08105B60 - cmp r5, 0 - bne _08105B60 - adds r0, r7, 0 - adds r1, r0, 0x1 - lsls r1, 24 - lsrs r7, r1, 24 - add r0, sp - adds r0, 0x8 - strb r5, [r0] - b _08105B66 - .align 2, 0 -_08105B5C: .4byte 0x00002710 -_08105B60: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_08105B66: - movs r1, 0xFA - lsls r1, 2 - adds r0, r6, 0 - bl __umodsi3 - adds r6, r0, 0 - adds r1, r7, 0 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r5, r7, 0 - mov r4, sp - adds r4, r1 - adds r4, 0x8 - adds r0, r6, 0 - movs r1, 0x64 - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r4] - adds r0, r6, 0 - movs r1, 0x64 - bl __umodsi3 - adds r6, r0, 0 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r2, r7, 0 - mov r1, sp - adds r1, r5 - adds r1, 0x8 - movs r0, 0xAD - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - mov r4, sp - adds r4, r2 - adds r4, 0x8 - adds r0, r6, 0 - movs r1, 0xA - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r4] - b _08105BE6 -_08105BC4: - mov r0, sp - adds r0, 0xB - movs r2, 0xAC - strb r2, [r0] - add r0, sp, 0xC - strb r2, [r0] - adds r0, 0x1 - strb r2, [r0] - adds r0, 0x1 - strb r2, [r0] - mov r1, sp - adds r1, 0xF - movs r0, 0xAD - strb r0, [r1] - movs r7, 0x9 - add r0, sp, 0x10 - strb r2, [r0] -_08105BE6: - adds r1, r7, 0 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r2, r7, 0 - mov r0, sp - adds r0, r1 - adds r0, 0x8 - movs r4, 0 - strb r4, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r3, r7, 0 - mov r1, sp - adds r1, r2 - adds r1, 0x8 - movs r0, 0xFC - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r2, r7, 0 - mov r1, sp - adds r1, r3 - adds r1, 0x8 - movs r0, 0x14 - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, sp - adds r0, r2 - adds r0, 0x8 - strb r4, [r0] - movs r2, 0 - movs r0, 0x21 - subs r1, r0, r7 - mov r5, r8 - adds r5, 0x1E - cmp r2, r1 - bcs _08105C60 - ldr r3, _08105CA8 @ =gText_Lbs - ldrb r0, [r3] - cmp r0, 0xFF - beq _08105C60 - adds r3, r1, 0 - ldr r4, _08105CA8 @ =gText_Lbs - adds r1, r7, 0 - add r1, sp - adds r1, 0x8 -_08105C4C: - ldrb r0, [r4] - strb r0, [r1] - adds r4, 0x1 - adds r1, 0x1 - adds r2, 0x1 - cmp r2, r3 - bcs _08105C60 - ldrb r0, [r4] - cmp r0, 0xFF - bne _08105C4C -_08105C60: - adds r0, r7, r2 - mov r1, sp - adds r1, r0 - adds r1, 0x8 - movs r0, 0xFF - strb r0, [r1] - mov r0, r9 - str r0, [sp] - movs r4, 0 - str r4, [sp, 0x4] - mov r0, r10 - movs r1, 0 - ldr r2, _08105CAC @ =gText_WT - mov r3, r8 - bl sub_81047C8 - lsls r0, r5, 24 - lsrs r0, 24 - mov r8, r0 - mov r1, r9 - str r1, [sp] - str r4, [sp, 0x4] - mov r0, r10 - movs r1, 0 - add r2, sp, 0x8 - mov r3, r8 - bl sub_81047C8 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08105CA8: .4byte gText_Lbs -_08105CAC: .4byte gText_WT - thumb_func_end sub_8105A3C - - thumb_func_start sub_8105CB0 -sub_8105CB0: @ 8105CB0 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - lsrs r7, r3, 24 - adds r0, r1, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - cmp r0, 0 - beq _08105D5C - ldr r1, _08105D44 @ =gPokedexEntries - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r1, 0x10 - adds r0, r1 - ldr r1, [r0] - str r1, [sp] - mov r0, sp - movs r3, 0 - strb r6, [r0, 0x4] - mov r2, sp - movs r0, 0x2 - strb r0, [r2, 0x5] - movs r0, 0x1 - strb r0, [r2, 0xA] - mov r0, sp - strb r3, [r0, 0xB] - mov r4, sp - ldrb r3, [r4, 0xC] - movs r2, 0x10 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r4, 0xC] - mov r3, sp - movs r0, 0x10 - strb r0, [r3, 0xC] - ldrb r0, [r3, 0xD] - ands r2, r0 - strb r2, [r3, 0xD] - mov r2, sp - movs r0, 0x20 - strb r0, [r2, 0xD] - movs r0, 0x2 - movs r2, 0 - bl GetStringWidth - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF0 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - adds r0, r5, r1 - cmp r0, 0 - ble _08105D48 - lsls r0, 24 - lsrs r5, r0, 24 - b _08105D4A - .align 2, 0 -_08105D44: .4byte gPokedexEntries -_08105D48: - movs r5, 0 -_08105D4A: - mov r0, sp - strb r5, [r0, 0x6] - strb r7, [r0, 0x7] - strb r5, [r0, 0x8] - strb r7, [r0, 0x9] - movs r1, 0xFF - movs r2, 0 - bl AddTextPrinter -_08105D5C: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8105CB0 - - thumb_func_start sub_8105D64 -sub_8105D64: @ 8105D64 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_8104AB0 - lsls r0, 24 - cmp r0, 0 - beq _08105E02 - ldr r1, _08105E14 @ =gMonFootprintTable - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - mov r12, r0 - ldr r7, _08105E18 @ =gDecompressionBuffer - movs r5, 0 - movs r1, 0 -_08105DA6: - mov r2, r12 - adds r0, r2, r1 - ldrb r3, [r0] - movs r4, 0 - adds r6, r1, 0x1 -_08105DB0: - lsls r1, r4, 1 - adds r2, r3, 0 - asrs r2, r1 - movs r0, 0x1 - ands r2, r0 - movs r0, 0x2 - lsls r0, r1 - ands r0, r3 - cmp r0, 0 - beq _08105DC8 - movs r0, 0x10 - orrs r2, r0 -_08105DC8: - adds r0, r7, r5 - strb r2, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08105DB0 - lsls r0, r6, 16 - lsrs r1, r0, 16 - cmp r1, 0x1F - bls _08105DA6 - movs r0, 0x10 - str r0, [sp] - str r0, [sp, 0x4] - mov r1, r9 - str r1, [sp, 0x8] - mov r2, r8 - str r2, [sp, 0xC] - str r0, [sp, 0x10] - str r0, [sp, 0x14] - mov r0, r10 - adds r1, r7, 0 - movs r2, 0 - movs r3, 0 - bl BlitBitmapRectToWindow -_08105E02: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08105E14: .4byte gMonFootprintTable -_08105E18: .4byte gDecompressionBuffer - thumb_func_end sub_8105D64 - - thumb_func_start sub_8105E1C -sub_8105E1C: @ 8105E1C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x3 - movs r1, 0x6 - bl sub_8105594 - movs r4, 0x1E - str r4, [sp] - movs r5, 0x14 - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - ldr r0, _08105FD0 @ =gUnknown_84521D4 - bl AddWindow - ldr r4, _08105FD4 @ =gUnknown_203ACF0 - ldr r1, [r4] - adds r1, 0x4A - movs r2, 0 - mov r8, r2 - strb r0, [r1] - ldr r0, _08105FD8 @ =gUnknown_84521DC - bl AddWindow - ldr r1, [r4] - adds r1, 0x4B - strb r0, [r1] - ldr r0, _08105FDC @ =gUnknown_84521E4 - bl AddWindow - ldr r1, [r4] - adds r1, 0x4C - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x4A - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4A - ldrb r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - movs r2, 0x90 - bl sub_81049FC - ldr r0, [r4] - adds r0, 0x4A - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r4] - adds r0, 0x4A - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - adds r0, 0x4B - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4B - ldrb r0, [r0] - adds r1, 0x5A - ldrh r2, [r1] - movs r5, 0x8 - str r5, [sp] - movs r1, 0 - movs r3, 0 - bl sub_8104A34 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4B - ldrb r0, [r0] - adds r1, 0x5A - ldrh r2, [r1] - movs r1, 0xB - muls r2, r1 - ldr r1, _08105FE0 @ =gSpeciesNames - adds r2, r1 - str r5, [sp] - mov r1, r8 - str r1, [sp, 0x4] - movs r1, 0x2 - movs r3, 0x1C - bl sub_81047C8 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4B - ldrb r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - movs r2, 0 - movs r3, 0x18 - bl sub_8105800 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4B - ldrb r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - movs r2, 0 - movs r3, 0x24 - bl sub_81058C4 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4B - ldrb r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - movs r2, 0 - movs r3, 0x30 - bl sub_8105A3C - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4B - ldrb r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - movs r2, 0x58 - movs r3, 0x28 - bl sub_8105D64 - ldr r0, [r4] - adds r0, 0x4B - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r4] - adds r0, 0x4B - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - adds r0, 0x4C - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4C - ldrb r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - movs r2, 0 - movs r3, 0x8 - bl sub_8105CB0 - ldr r0, [r4] - adds r0, 0x4C - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r4] - adds r0, 0x4C - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x1 - movs r1, 0xFF - bl FillWindowPixelBuffer - cmp r6, 0 - bne _08105FEC - ldr r2, _08105FE4 @ =gText_Cry - movs r0, 0x2 - str r0, [sp] - movs r0, 0x4 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r3, 0x8 - bl sub_81047C8 - ldr r0, _08105FE8 @ =gText_NextDataCancel - bl sub_8104C2C - b _08105FF2 - .align 2, 0 -_08105FD0: .4byte gUnknown_84521D4 -_08105FD4: .4byte gUnknown_203ACF0 -_08105FD8: .4byte gUnknown_84521DC -_08105FDC: .4byte gUnknown_84521E4 -_08105FE0: .4byte gSpeciesNames -_08105FE4: .4byte gText_Cry -_08105FE8: .4byte gText_NextDataCancel -_08105FEC: - ldr r0, _08106010 @ =gText_Next - bl sub_8104C2C -_08105FF2: - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x1 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08106010: .4byte gText_Next - thumb_func_end sub_8105E1C - - thumb_func_start sub_8106014 -sub_8106014: @ 8106014 - push {r4,lr} - ldr r4, _08106038 @ =gUnknown_203ACF0 - ldr r0, [r4] - adds r0, 0x4A - bl sub_81047B0 - ldr r0, [r4] - adds r0, 0x4B - bl sub_81047B0 - ldr r0, [r4] - adds r0, 0x4C - bl sub_81047B0 - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08106038: .4byte gUnknown_203ACF0 - thumb_func_end sub_8106014 - - thumb_func_start sub_810603C -sub_810603C: @ 810603C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r6, _08106424 @ =gUnknown_203ACF0 - ldr r0, [r6] - adds r0, 0x5A - ldrh r0, [r0] - str r0, [sp, 0x1C] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x18] - ldr r0, [sp, 0x1C] - movs r1, 0x1 - movs r2, 0x1 - bl sub_8104AB0 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - movs r7, 0x1C - movs r0, 0xE - mov r8, r0 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x4 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08106428 @ =0x00000404 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r2, 0x1D - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _0810642C @ =0x00000804 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r2, 0 - movs r3, 0x11 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08106430 @ =0x00000c04 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r2, 0x1D - movs r3, 0x11 - bl FillBgTilemapBufferRect_Palette0 - str r7, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x5 - movs r2, 0x1 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08106434 @ =0x00000805 - str r7, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r2, 0x1 - movs r3, 0x11 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - mov r1, r8 - str r1, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x6 - movs r2, 0 - movs r3, 0x3 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08106438 @ =0x00000406 - str r4, [sp] - mov r2, r8 - str r2, [sp, 0x4] - movs r0, 0x3 - movs r2, 0x1D - movs r3, 0x3 - bl FillBgTilemapBufferRect_Palette0 - str r7, [sp] - mov r3, r8 - str r3, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl FillBgTilemapBufferRect_Palette0 - movs r5, 0x1E - str r5, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - movs r7, 0xA - movs r0, 0x6 - mov r8, r0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0x1D - movs r2, 0x1 - movs r3, 0x9 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _0810643C @ =0x0000041d - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r2, 0xC - movs r3, 0x9 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08106440 @ =0x0000081d - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r2, 0x1 - movs r3, 0x10 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08106444 @ =0x00000c1d - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r2, 0xC - movs r3, 0x10 - bl FillBgTilemapBufferRect_Palette0 - str r7, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0x1E - movs r2, 0x2 - movs r3, 0x9 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _08106448 @ =0x0000081e - str r7, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r2, 0x2 - movs r3, 0x10 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - mov r1, r8 - str r1, [sp, 0x4] - movs r0, 0 - movs r1, 0x1F - movs r2, 0x1 - movs r3, 0xA - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _0810644C @ =0x0000041f - str r4, [sp] - mov r2, r8 - str r2, [sp, 0x4] - movs r0, 0 - movs r2, 0xC - movs r3, 0xA - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - bl GetUnlockedSeviiAreas - ldr r1, [r6] - adds r1, 0x64 - strb r0, [r1] - movs r3, 0x4 - mov r9, r3 - movs r4, 0x3 - ldr r0, [r6] - adds r0, 0x64 - ldrb r1, [r0] - movs r2, 0x1 -_081061E2: - adds r0, r1, 0 - asrs r0, r4 - ands r0, r2 - cmp r0, 0 - beq _081061F0 - movs r0, 0 - mov r9, r0 -_081061F0: - adds r4, 0x1 - cmp r4, 0x6 - ble _081061E2 - ldr r0, _08106450 @ =gUnknown_8452214 - bl AddWindow - ldr r5, _08106424 @ =gUnknown_203ACF0 - ldr r1, [r5] - adds r1, 0x4A - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4A - ldrb r0, [r0] - ldr r1, _08106454 @ =gUnknown_8443620 - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - ldr r0, [r5] - adds r0, 0x4A - ldrb r4, [r0] - adds r0, r4, 0 - movs r1, 0x2 - bl GetWindowAttribute - adds r2, r0, 0 - add r2, r9 - adds r0, r4, 0 - movs r1, 0x2 - bl SetWindowAttribute - ldr r0, [r5] - adds r0, 0x4A - ldrb r0, [r0] - bl PutWindowTilemap - movs r4, 0 - mov r1, r9 - lsls r1, 27 - str r1, [sp, 0x20] - ldr r7, _08106458 @ =gUnknown_8452254 - adds r2, r7, 0x4 - mov r8, r2 -_08106246: - ldr r0, [r5] - adds r0, 0x64 - ldrb r1, [r0] - asrs r1, r4 - movs r0, 0x1 - ands r1, r0 - adds r6, r4, 0x1 - cmp r1, 0 - beq _081062B4 - lsls r4, 3 - adds r0, r4, r7 - ldr r0, [r0] - bl AddWindow - ldr r1, [r5] - adds r1, 0x4A - adds r1, r6 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x4A - adds r0, r6 - ldrb r0, [r0] - add r4, r8 - ldr r1, [r4] - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - ldr r0, [r5] - adds r0, 0x4A - adds r0, r6 - ldrb r4, [r0] - adds r0, r4, 0 - movs r1, 0x2 - bl GetWindowAttribute - adds r2, r0, 0 - add r2, r9 - adds r0, r4, 0 - movs r1, 0x2 - bl SetWindowAttribute - ldr r0, [r5] - adds r0, 0x4A - adds r0, r6 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r5] - adds r0, 0x4A - adds r0, r6 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram -_081062B4: - adds r4, r6, 0 - cmp r4, 0x6 - ble _08106246 - ldr r0, _0810645C @ =gUnknown_84521F4 - bl AddWindow - ldr r7, _08106424 @ =gUnknown_203ACF0 - ldr r1, [r7] - adds r1, 0x52 - movs r6, 0 - strb r0, [r1] - ldr r5, _08106460 @ =gUnknown_84521FC - adds r0, r5, 0 - bl AddWindow - ldr r1, [r7] - adds r1, 0x53 - strb r0, [r1] - ldr r3, _08106464 @ =gUnknown_8452204 - mov r8, r3 - mov r0, r8 - bl AddWindow - ldr r1, [r7] - adds r1, 0x54 - strb r0, [r1] - ldr r0, _08106468 @ =gUnknown_84521EC - bl AddWindow - ldr r1, [r7] - adds r1, 0x55 - strb r0, [r1] - ldr r0, _0810646C @ =gUnknown_845220C - bl AddWindow - ldr r1, [r7] - adds r1, 0x56 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x55 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0xA0 - ldr r1, [sp, 0x1C] - bl sub_8107CD8 - ldr r0, [sp, 0x1C] - bl sub_81049CC - adds r2, r0, 0 - ldr r0, [r7] - adds r0, 0x55 - ldrb r0, [r0] - str r6, [sp] - ldr r1, [sp, 0x1C] - movs r3, 0 - bl sub_8107CF8 - ldr r0, [r7] - adds r0, 0x55 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r7] - adds r0, 0x55 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r7] - adds r0, 0x53 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r4, _08106470 @ =gText_Size - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - ldr r1, [r7] - adds r1, 0x53 - ldrb r1, [r1] - ldrb r3, [r5, 0x3] - lsls r3, 3 - subs r3, r0 - lsrs r0, r3, 31 - adds r3, r0 - asrs r3, 1 - lsls r3, 24 - lsrs r3, 24 - movs r5, 0x4 - str r5, [sp] - str r6, [sp, 0x4] - adds r0, r1, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_81047C8 - ldr r0, [r7] - adds r0, 0x53 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r7] - adds r0, 0x53 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r7] - adds r0, 0x54 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r4, _08106474 @ =gText_Area - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - ldr r1, [r7] - adds r1, 0x54 - ldrb r1, [r1] - mov r2, r8 - ldrb r3, [r2, 0x3] - lsls r3, 3 - subs r3, r0 - lsrs r0, r3, 31 - adds r3, r0 - asrs r3, 1 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r6, [sp, 0x4] - adds r0, r1, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_81047C8 - ldr r0, [r7] - adds r0, 0x54 - ldrb r4, [r0] - adds r0, r4, 0 - movs r1, 0x2 - bl GetWindowAttribute - adds r2, r0, 0 - add r2, r9 - adds r0, r4, 0 - movs r1, 0x2 - bl SetWindowAttribute - ldr r0, [r7] - adds r0, 0x54 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r7] - adds r0, 0x54 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r7] - adds r0, 0x52 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r7] - adds r0, 0x52 - ldrb r0, [r0] - str r6, [sp] - movs r1, 0 - ldr r2, [sp, 0x1C] - movs r3, 0 - bl sub_8104A34 - b _08106478 - .align 2, 0 -_08106424: .4byte gUnknown_203ACF0 -_08106428: .4byte 0x00000404 -_0810642C: .4byte 0x00000804 -_08106430: .4byte 0x00000c04 -_08106434: .4byte 0x00000805 -_08106438: .4byte 0x00000406 -_0810643C: .4byte 0x0000041d -_08106440: .4byte 0x0000081d -_08106444: .4byte 0x00000c1d -_08106448: .4byte 0x0000081e -_0810644C: .4byte 0x0000041f -_08106450: .4byte gUnknown_8452214 -_08106454: .4byte gUnknown_8443620 -_08106458: .4byte gUnknown_8452254 -_0810645C: .4byte gUnknown_84521F4 -_08106460: .4byte gUnknown_84521FC -_08106464: .4byte gUnknown_8452204 -_08106468: .4byte gUnknown_84521EC -_0810646C: .4byte gUnknown_845220C -_08106470: .4byte gText_Size -_08106474: .4byte gText_Area -_08106478: - ldr r0, [r7] - adds r0, 0x52 - ldrb r0, [r0] - movs r1, 0xB - ldr r3, [sp, 0x1C] - adds r2, r3, 0 - muls r2, r1 - ldr r1, _081066B0 @ =gSpeciesNames - adds r2, r1 - movs r1, 0xC - str r1, [sp] - str r6, [sp, 0x4] - movs r1, 0x2 - movs r3, 0x3 - bl sub_81047C8 - ldr r0, [r7] - adds r0, 0x52 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r7] - adds r0, 0x52 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r7] - adds r0, 0x56 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0xB0 - movs r1, 0x1 - bl ListMenuLoadStdPalAt - mov r0, r10 - cmp r0, 0 - beq _08106504 - ldr r0, [r7] - adds r0, 0x56 - ldrb r0, [r0] - ldr r1, _081066B4 @ =gBaseStats - ldr r2, [sp, 0x1C] - lsls r4, r2, 3 - subs r4, r2 - lsls r4, 2 - adds r4, r1 - ldrb r5, [r4, 0x6] - adds r1, r5, 0x1 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - movs r3, 0x1 - bl BlitMoveInfoIcon - ldrb r1, [r4, 0x7] - cmp r5, r1 - beq _08106504 - ldr r0, [r7] - adds r0, 0x56 - ldrb r0, [r0] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x20 - movs r3, 0x1 - bl BlitMoveInfoIcon -_08106504: - ldr r7, _081066B8 @ =gUnknown_203ACF0 - ldr r0, [r7] - adds r0, 0x56 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r7] - adds r0, 0x56 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - bl ResetAllPicSprites - ldr r0, _081066BC @ =gUnknown_8452368 - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - mov r3, r10 - cmp r3, 0 - bne _08106534 - b _081066D0 -_08106534: - ldr r0, [sp, 0x1C] - bl sub_81049CC - adds r2, r0, 0 - movs r0, 0x28 - str r0, [sp] - movs r0, 0x68 - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - ldr r1, _081066C0 @ =0x0000ffff - str r1, [sp, 0xC] - ldr r0, [sp, 0x1C] - movs r1, 0x8 - movs r3, 0x1 - bl CreateMonPicSprite_HandleDeoxys - ldr r1, [r7] - adds r1, 0x58 - strb r0, [r1] - ldr r2, _081066C4 @ =gSprites - mov r10, r2 - ldr r0, [r7] - adds r0, 0x58 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r10 - ldrb r2, [r1, 0x5] - movs r3, 0xF - mov r9, r3 - mov r0, r9 - ands r0, r2 - movs r2, 0x20 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r0, [r7] - adds r0, 0x58 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r10 - ldrb r2, [r1, 0x1] - subs r3, 0x13 - mov r8, r3 - mov r0, r8 - ands r0, r2 - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1, 0x1] - ldr r0, [r7] - adds r0, 0x58 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r10 - ldrb r2, [r1, 0x3] - movs r6, 0x3F - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1, 0x3] - ldr r0, [r7] - adds r0, 0x58 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r10 - ldrb r2, [r1, 0x5] - movs r5, 0xD - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldr r0, [r7] - adds r0, 0x58 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldr r1, _081066C8 @ =gPokedexEntries - ldr r2, [sp, 0x18] - lsls r4, r2, 3 - adds r4, r2 - lsls r4, 2 - adds r4, r1 - ldrh r1, [r4, 0x1C] - strh r1, [r0, 0x26] - ldrh r1, [r4, 0x1A] - str r1, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldr r0, _081066CC @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - movs r1, 0x1 - bl PlayerGenderToFrontTrainerPicId_Debug - lsls r0, 16 - lsrs r0, 16 - movs r3, 0 - str r3, [sp] - ldr r1, _081066C0 @ =0x0000ffff - str r1, [sp, 0x4] - movs r1, 0x1 - movs r2, 0x50 - movs r3, 0x68 - bl CreateTrainerPicSprite - ldr r1, [r7] - adds r1, 0x59 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x59 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrb r1, [r0, 0x5] - mov r2, r9 - ands r2, r1 - movs r3, 0x20 - orrs r2, r3 - strb r2, [r0, 0x5] - ldr r0, [r7] - adds r0, 0x59 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrb r1, [r0, 0x1] - mov r2, r8 - ands r2, r1 - movs r3, 0x1 - orrs r2, r3 - strb r2, [r0, 0x1] - ldr r0, [r7] - adds r0, 0x59 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrb r1, [r0, 0x3] - ands r6, r1 - movs r1, 0x2 - orrs r6, r1 - strb r6, [r0, 0x3] - ldr r0, [r7] - adds r0, 0x59 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrb r1, [r0, 0x5] - ands r5, r1 - movs r1, 0x4 - orrs r5, r1 - strb r5, [r0, 0x5] - ldr r0, [r7] - adds r0, 0x59 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrh r1, [r4, 0x20] - strh r1, [r0, 0x26] - ldrh r1, [r4, 0x1E] - str r1, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - b _081066E2 - .align 2, 0 -_081066B0: .4byte gSpeciesNames -_081066B4: .4byte gBaseStats -_081066B8: .4byte gUnknown_203ACF0 -_081066BC: .4byte gUnknown_8452368 -_081066C0: .4byte 0x0000ffff -_081066C4: .4byte gSprites -_081066C8: .4byte gPokedexEntries -_081066CC: .4byte gSaveBlock2Ptr -_081066D0: - ldr r0, [r7] - adds r0, 0x58 - movs r1, 0xFF - strb r1, [r0] - ldr r0, [r7] - adds r0, 0x59 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] -_081066E2: - ldr r1, _081067A8 @ =0x000007d1 - ldr r2, [sp, 0x20] - lsrs r3, r2, 24 - ldr r0, [sp, 0x1C] - movs r2, 0x3 - bl sub_8134230 - ldr r5, _081067AC @ =gUnknown_203ACF0 - ldr r1, [r5] - strb r0, [r1, 0x4] - ldr r0, [r5] - ldrb r0, [r0, 0x4] - bl sub_81344E0 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0810675A - ldr r0, [r5] - adds r0, 0x4A - ldrb r0, [r0] - ldr r1, _081067B0 @ =gUnknown_8443D00 - movs r4, 0x58 - str r4, [sp] - movs r3, 0x10 - str r3, [sp, 0x4] - movs r2, 0x4 - str r2, [sp, 0x8] - movs r2, 0x1C - str r2, [sp, 0xC] - str r4, [sp, 0x10] - str r3, [sp, 0x14] - movs r2, 0 - movs r3, 0 - bl BlitBitmapRectToWindow - ldr r4, _081067B4 @ =gText_AreaUnknown - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - ldr r1, [r5] - adds r1, 0x4A - ldrb r1, [r1] - movs r3, 0x60 - subs r3, r0 - lsrs r0, r3, 31 - adds r3, r0 - asrs r3, 1 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x1D - str r0, [sp] - str r6, [sp, 0x4] - adds r0, r1, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_81047C8 -_0810675A: - ldr r0, [r5] - adds r0, 0x4A - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x1 - movs r1, 0xFF - bl FillWindowPixelBuffer - ldr r2, _081067B8 @ =gText_Cry - movs r0, 0x2 - str r0, [sp] - movs r0, 0x4 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r3, 0x8 - bl sub_81047C8 - ldr r0, _081067BC @ =gText_CancelPreviousData - bl sub_8104C2C - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x1 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081067A8: .4byte 0x000007d1 -_081067AC: .4byte gUnknown_203ACF0 -_081067B0: .4byte gUnknown_8443D00 -_081067B4: .4byte gText_AreaUnknown -_081067B8: .4byte gText_Cry -_081067BC: .4byte gText_CancelPreviousData - thumb_func_end sub_810603C - - thumb_func_start sub_81067C0 -sub_81067C0: @ 81067C0 - push {r4,r5,lr} - ldr r4, _0810680C @ =gUnknown_203ACF0 - ldr r0, [r4] - ldrb r0, [r0, 0x4] - bl sub_81343F4 - movs r5, 0 -_081067CE: - adds r1, r5, 0 - adds r1, 0x4A - ldr r0, [r4] - adds r0, r1 - bl sub_81047B0 - adds r5, 0x1 - cmp r5, 0xC - ble _081067CE - ldr r4, _0810680C @ =gUnknown_203ACF0 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x59 - ldrb r0, [r1] - cmp r0, 0xFF - beq _081067F2 - bl FreeAndDestroyTrainerPicSprite -_081067F2: - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x58 - ldrb r0, [r1] - cmp r0, 0xFF - beq _08106802 - bl FreeAndDestroyMonPicSprite -_08106802: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0810680C: .4byte gUnknown_203ACF0 - thumb_func_end sub_81067C0 - - thumb_func_start sub_8106810 -sub_8106810: @ 8106810 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - bl IsNationalPokedexEnabled - cmp r0, 0x1 - beq _08106830 - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x97 - bls _08106830 - movs r0, 0 - b _08106832 -_08106830: - movs r0, 0x1 -_08106832: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8106810 - - thumb_func_start sub_8106838 -sub_8106838: @ 8106838 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r1, _08106888 @ =gDexCategories - lsrs r0, 21 - adds r0, r1 - ldr r2, [r0] - lsls r1, r6, 3 - adds r1, r2 - ldrb r1, [r1, 0x4] - mov r8, r1 - movs r5, 0 - adds r7, r0, 0 -_08106858: - cmp r5, r8 - bge _0810688C - ldr r1, [r7] - lsls r0, r6, 3 - adds r0, r1 - ldr r1, [r0] - lsls r0, r5, 1 - adds r0, r1 - ldrh r4, [r0] - adds r0, r4, 0 - bl sub_8106810 - cmp r0, 0x1 - bne _0810688C - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_8104AB0 - lsls r0, 24 - cmp r0, 0 - beq _0810688C - movs r0, 0x1 - b _08106894 - .align 2, 0 -_08106888: .4byte gDexCategories -_0810688C: - adds r5, 0x1 - cmp r5, 0x3 - ble _08106858 - movs r0, 0 -_08106894: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8106838 - - thumb_func_start sub_81068A0 -sub_81068A0: @ 81068A0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _081068C8 @ =gDexCategories - lsls r0, r6, 3 - adds r0, r1 - ldrb r5, [r0, 0x4] - movs r4, 0 - cmp r4, r5 - bge _081068D2 -_081068B4: - lsls r1, r4, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8106838 - lsls r0, 24 - cmp r0, 0 - beq _081068CC - movs r0, 0x1 - b _081068D4 - .align 2, 0 -_081068C8: .4byte gDexCategories -_081068CC: - adds r4, 0x1 - cmp r4, r5 - blt _081068B4 -_081068D2: - movs r0, 0 -_081068D4: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81068A0 - - thumb_func_start sub_81068DC -sub_81068DC: @ 81068DC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - ldr r1, _08106990 @ =gDexCategories - lsls r0, r4, 3 - adds r0, r1 - ldr r1, [r0] - lsls r0, r6, 3 - adds r0, r1 - ldrb r0, [r0, 0x4] - mov r9, r0 - ldr r2, _08106994 @ =gUnknown_203ACF0 - ldr r0, [r2] - adds r0, 0x2C - movs r1, 0 - strb r1, [r0] - movs r5, 0 - ldr r0, _08106998 @ =0x0000ffff - adds r3, r0, 0 -_0810690C: - ldr r0, [r2] - lsls r1, r5, 1 - adds r0, 0x18 - adds r0, r1 - ldrh r1, [r0] - orrs r1, r3 - strh r1, [r0] - adds r5, 0x1 - cmp r5, 0x3 - ble _0810690C - movs r5, 0 - cmp r5, r9 - bge _08106982 - ldr r1, _08106990 @ =gDexCategories - lsls r0, r4, 3 - adds r0, r1 - mov r8, r0 - lsls r7, r6, 3 -_08106930: - mov r1, r8 - ldr r0, [r1] - adds r0, r7, r0 - ldr r0, [r0] - lsls r6, r5, 1 - adds r0, r6, r0 - ldrh r4, [r0] - adds r0, r4, 0 - bl sub_8106810 - cmp r0, 0x1 - bne _0810697C - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_8104AB0 - lsls r0, 24 - cmp r0, 0 - beq _0810697C - ldr r0, _08106994 @ =gUnknown_203ACF0 - ldr r1, [r0] - adds r2, r1, 0 - adds r2, 0x2C - ldrb r0, [r2] - lsls r0, 1 - adds r1, 0x18 - adds r1, r0 - mov r3, r8 - ldr r0, [r3] - adds r0, r7, r0 - ldr r0, [r0] - adds r0, r6, r0 - ldrh r0, [r0] - strh r0, [r1] - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] -_0810697C: - adds r5, 0x1 - cmp r5, r9 - blt _08106930 -_08106982: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08106990: .4byte gDexCategories -_08106994: .4byte gUnknown_203ACF0 -_08106998: .4byte 0x0000ffff - thumb_func_end sub_81068DC - - thumb_func_start sub_810699C -sub_810699C: @ 810699C - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _081069F8 @ =gDexCategories - lsls r0, r7, 3 - adds r0, r1 - ldrb r6, [r0, 0x4] - movs r2, 0xFF - movs r3, 0xFF - movs r5, 0 - cmp r5, r6 - bge _081069DE -_081069B6: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r7, 0 - adds r1, r4, 0 - str r2, [sp] - str r3, [sp, 0x4] - bl sub_8106838 - lsls r0, 24 - ldr r2, [sp] - ldr r3, [sp, 0x4] - cmp r0, 0 - beq _081069D8 - cmp r2, 0xFF - bne _081069D6 - adds r2, r4, 0 -_081069D6: - adds r3, r4, 0 -_081069D8: - adds r5, 0x1 - cmp r5, r6 - blt _081069B6 -_081069DE: - cmp r3, 0xFF - bne _08106A00 - ldr r2, _081069FC @ =gUnknown_203ACF0 - ldr r0, [r2] - adds r0, 0x29 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x2A - strb r1, [r0] - movs r0, 0x1 - b _08106A12 - .align 2, 0 -_081069F8: .4byte gDexCategories -_081069FC: .4byte gUnknown_203ACF0 -_08106A00: - ldr r1, _08106A1C @ =gUnknown_203ACF0 - ldr r0, [r1] - adds r0, 0x29 - strb r2, [r0] - ldr r0, [r1] - adds r1, r3, 0x1 - adds r0, 0x2A - strb r1, [r0] - movs r0, 0 -_08106A12: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08106A1C: .4byte gUnknown_203ACF0 - thumb_func_end sub_810699C - - thumb_func_start sub_8106A20 -sub_8106A20: @ 8106A20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r1, _08106A98 @ =gDexCategories - str r1, [sp, 0x10] -_08106A3A: - ldr r2, [sp, 0x10] - ldrb r2, [r2, 0x4] - str r2, [sp, 0x8] - movs r7, 0 - cmp r7, r2 - bge _08106AD6 - ldr r0, [sp, 0x10] - str r0, [sp, 0xC] - movs r1, 0 - mov r9, r1 -_08106A4E: - ldr r2, [sp, 0xC] - ldr r0, [r2] - add r0, r9 - ldrb r6, [r0, 0x4] - movs r5, 0 - mov r8, r5 - cmp r5, r6 - bge _08106ACA - ldr r0, [sp, 0x10] - mov r10, r0 - ldr r3, _08106A9C @ =gUnknown_203ACF0 -_08106A64: - mov r1, r10 - ldr r0, [r1] - add r0, r9 - ldr r1, [r0] - lsls r0, r5, 1 - adds r0, r1 - ldrh r0, [r0] - adds r4, r0, 0 - ldr r2, [sp] - cmp r2, r4 - bne _08106AA0 - ldr r0, [r3] - adds r0, 0x28 - mov r1, sp - ldrb r1, [r1, 0x4] - strb r1, [r0] - ldr r0, [r3] - adds r0, 0x2B - strb r7, [r0] - ldr r0, [r3] - adds r0, 0x2D - mov r2, r8 - strb r2, [r0] - movs r0, 0 - b _08106AE8 - .align 2, 0 -_08106A98: .4byte gDexCategories -_08106A9C: .4byte gUnknown_203ACF0 -_08106AA0: - adds r0, r4, 0 - str r3, [sp, 0x14] - bl sub_8106810 - ldr r3, [sp, 0x14] - cmp r0, 0x1 - bne _08106AC4 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_8104AB0 - lsls r0, 24 - ldr r3, [sp, 0x14] - cmp r0, 0 - beq _08106AC4 - movs r0, 0x1 - add r8, r0 -_08106AC4: - adds r5, 0x1 - cmp r5, r6 - blt _08106A64 -_08106ACA: - movs r1, 0x8 - add r9, r1 - adds r7, 0x1 - ldr r2, [sp, 0x8] - cmp r7, r2 - blt _08106A4E -_08106AD6: - ldr r0, [sp, 0x10] - adds r0, 0x8 - str r0, [sp, 0x10] - ldr r1, [sp, 0x4] - adds r1, 0x1 - str r1, [sp, 0x4] - cmp r1, 0x8 - bls _08106A3A - movs r0, 0x1 -_08106AE8: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8106A20 - - thumb_func_start sub_8106AF8 -sub_8106AF8: @ 8106AF8 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - movs r4, 0 - movs r6, 0 - cmp r6, r5 - bge _08106B24 -_08106B06: - ldr r0, _08106B30 @ =gUnknown_203ACF0 - ldr r0, [r0] - adds r0, 0x28 - ldrb r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_8106838 - lsls r0, 24 - cmp r0, 0 - beq _08106B1E - adds r6, 0x1 -_08106B1E: - adds r4, 0x1 - cmp r4, r5 - blt _08106B06 -_08106B24: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08106B30: .4byte gUnknown_203ACF0 - thumb_func_end sub_8106AF8 - - thumb_func_start sub_8106B34 -sub_8106B34: @ 8106B34 - push {lr} - ldr r0, _08106B58 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08106B54 - ldr r0, _08106B5C @ =gUnknown_203ACF0 - ldr r0, [r0] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0 - movs r2, 0x7D - movs r3, 0xA - bl PlayCry2 -_08106B54: - pop {r0} - bx r0 - .align 2, 0 -_08106B58: .4byte gMain -_08106B5C: .4byte gUnknown_203ACF0 - thumb_func_end sub_8106B34 - - thumb_func_start sub_8106B60 -sub_8106B60: @ 8106B60 - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r5, 0 - movs r1, 0x2 - movs r2, 0x1 - bl sub_8104AB0 - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0x1 - bl sub_8104AB0 - bl IsNationalPokedexEnabled - cmp r0, 0 - bne _08106BA4 - adds r0, r5, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x97 - bls _08106BA4 - ldr r0, _08106BA0 @ =sub_8106BD8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - b _08106BC6 - .align 2, 0 -_08106BA0: .4byte sub_8106BD8 -_08106BA4: - bl sub_810250C - ldr r2, _08106BCC @ =gTasks - ldr r4, _08106BD0 @ =gUnknown_203ACF0 - ldr r0, [r4] - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _08106BD4 @ =sub_8106BE8 - str r1, [r0] - adds r0, r5, 0 - bl sub_8106A20 - ldr r0, [r4] - ldrb r0, [r0] -_08106BC6: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08106BCC: .4byte gTasks -_08106BD0: .4byte gUnknown_203ACF0 -_08106BD4: .4byte sub_8106BE8 - thumb_func_end sub_8106B60 - - thumb_func_start sub_8106BD8 -sub_8106BD8: @ 8106BD8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_8106BD8 - - thumb_func_start sub_8106BE8 -sub_8106BE8: @ 8106BE8 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08106C08 @ =gUnknown_203ACF0 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - adds r4, r1, 0 - cmp r0, 0xB - bls _08106BFE - b _08106E6A -_08106BFE: - lsls r0, 2 - ldr r1, _08106C0C @ =_08106C10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08106C08: .4byte gUnknown_203ACF0 -_08106C0C: .4byte _08106C10 - .align 2, 0 -_08106C10: - .4byte _08106C40 - .4byte _08106C62 - .4byte _08106C84 - .4byte _08106C98 - .4byte _08106CD4 - .4byte _08106D1C - .4byte _08106D4C - .4byte _08106D9E - .4byte _08106DBA - .4byte _08106DCC - .4byte _08106DDE - .4byte _08106E58 -_08106C40: - ldr r0, [r4] - adds r0, 0x28 - ldrb r0, [r0] - bl sub_810699C - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x2B - adds r0, 0x29 - ldrb r1, [r0] - ldrb r0, [r2] - cmp r0, r1 - bcs _08106C5C - strb r1, [r2] -_08106C5C: - ldr r1, [r4] - movs r0, 0x3 - b _08106E68 -_08106C62: - bl sub_8106014 - bl sub_8104E90 - ldr r0, _08106C7C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _08106C80 @ =gUnknown_203ACF0 - ldr r1, [r0] - b _08106E66 - .align 2, 0 -_08106C7C: .4byte gMain -_08106C80: .4byte gUnknown_203ACF0 -_08106C84: - bl sub_8102798 - lsls r0, 24 - cmp r0, 0 - bne _08106C90 - b _08106E6A -_08106C90: - adds r0, r5, 0 - bl DestroyTask - b _08106E6A -_08106C98: - movs r0, 0x1 - bl sub_8104F0C - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0xFF - bl sub_8105058 - ldr r0, _08106CD0 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x4 - b _08106E68 - .align 2, 0 -_08106CD0: .4byte gUnknown_203ACF0 -_08106CD4: - ldr r2, _08106D10 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r0, 0x1 - negs r0, r0 - ldr r1, _08106D14 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x3 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0 - bl ShowBg - ldr r0, _08106D18 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x5 - b _08106E68 - .align 2, 0 -_08106D10: .4byte gPaletteFade -_08106D14: .4byte 0x0000ffff -_08106D18: .4byte gUnknown_203ACF0 -_08106D1C: - ldr r1, _08106D40 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1E - strh r1, [r0, 0x8] - ldr r0, _08106D44 @ =gUnknown_84524C4 - movs r1, 0 - bl ListMenuAddCursorObjectInternal - ldr r2, _08106D48 @ =gUnknown_203ACF0 - ldr r1, [r2] - adds r1, 0x61 - strb r0, [r1] - ldr r1, [r2] - movs r0, 0x6 - b _08106E68 - .align 2, 0 -_08106D40: .4byte gTasks -_08106D44: .4byte gUnknown_84524C4 -_08106D48: .4byte gUnknown_203ACF0 -_08106D4C: - ldr r0, [r4] - adds r0, 0x2D - ldrb r0, [r0] - bl sub_8105058 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x61 - ldrb r0, [r0] - adds r1, r2, 0 - adds r1, 0x2D - ldrb r1, [r1] - adds r2, 0x2C - ldrb r2, [r2] - bl sub_8105178 - ldr r1, _08106D88 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08106D8C - subs r0, r2, 0x1 - strh r0, [r1, 0x8] - b _08106E6A - .align 2, 0 -_08106D88: .4byte gTasks -_08106D8C: - ldr r0, [r4] - adds r0, 0x61 - ldrb r0, [r0] - movs r1, 0 - bl ListMenuRemoveCursorObject - ldr r1, [r4] - movs r0, 0x7 - b _08106E68 -_08106D9E: - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x2D - ldrb r1, [r0] - lsls r1, 1 - subs r0, 0x15 - adds r0, r1 - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0x5A - strh r0, [r1] - movs r0, 0x8 - strb r0, [r2, 0x1] - b _08106E6A -_08106DBA: - movs r0, 0x1 - bl sub_8105E1C - ldr r0, _08106DC8 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x9 - b _08106E68 - .align 2, 0 -_08106DC8: .4byte gUnknown_203ACF0 -_08106DCC: - ldr r0, [r4] - movs r1, 0 - strb r1, [r0, 0x2] - ldr r0, [r4] - strb r1, [r0, 0x3] - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] -_08106DDE: - ldr r1, [r4] - ldrb r0, [r1, 0x3] - cmp r0, 0x5 - bhi _08106E10 - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _08106E0A - ldrb r1, [r1, 0x3] - movs r0, 0 - bl sub_8105594 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r1, [r4] - movs r0, 0x4 - strb r0, [r1, 0x2] - ldr r1, [r4] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - b _08106E6A -_08106E0A: - subs r0, 0x1 - strb r0, [r1, 0x2] - b _08106E6A -_08106E10: - movs r0, 0x1E - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, [r4] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0 - movs r2, 0x7D - movs r3, 0xA - bl PlayCry2 - ldr r1, [r4] - movs r0, 0 - strb r0, [r1, 0x2] - ldr r1, [r4] - movs r0, 0xB - b _08106E68 -_08106E58: - ldr r0, _08106E74 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08106E6A - ldr r1, [r4] -_08106E66: - movs r0, 0x2 -_08106E68: - strb r0, [r1, 0x1] -_08106E6A: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08106E74: .4byte gMain - thumb_func_end sub_8106BE8 - - thumb_func_start sub_8106E78 -sub_8106E78: @ 8106E78 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - cmp r1, 0x1 - beq _08106E8E - cmp r1, 0x1 - bgt _08106EA0 - cmp r1, 0 - bne _08106EA0 - movs r1, 0x8 - b _08106EAE -_08106E8E: - movs r0, 0x2 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r1, 0xF0 - subs r1, r0 - lsrs r1, 1 - b _08106EAE -_08106EA0: - movs r0, 0x2 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r1, 0xE8 - subs r1, r0 -_08106EAE: - lsls r3, r1, 24 - lsrs r3, 24 - movs r0, 0x2 - str r0, [sp] - movs r0, 0x4 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl sub_81047C8 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8106E78 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/pokedex.h b/include/pokedex.h index c132ae794..aad4849de 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -48,6 +48,6 @@ bool16 HasAllHoennMons(void); bool16 HasAllKantoMons(void); bool16 HasAllMons(void); -u32 sub_8106B60(u16 species); +u8 sub_8106B60(u16 species); #endif // GUARD_POKEDEX_H diff --git a/include/pokedex_area_markers.h b/include/pokedex_area_markers.h index da73fd529..47bbdf486 100644 --- a/include/pokedex_area_markers.h +++ b/include/pokedex_area_markers.h @@ -12,5 +12,8 @@ struct PAM_TaskData }; void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites); +void sub_81343F4(u8 taskId); +u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y); +u8 sub_81344E0(u8 taskId); #endif //GUARD_POKEDEX_AREA_MARKERS_H diff --git a/ld_script.txt b/ld_script.txt index 2c599535d..c79508a78 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -237,7 +237,6 @@ SECTIONS { src/easy_chat_2.o(.text); src/easy_chat_3.o(.text); src/pokedex_screen.o(.text); - asm/pokedex_screen.o(.text); src/list_menu.o(.text); src/item_menu.o(.text); src/save_location.o(.text); diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index e44cc6d50..b3f3d18ad 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -15,7 +15,10 @@ #include "data.h" #include "pokedex.h" #include "trainer_pokemon_sprites.h" +#include "decompress.h" #include "constants/songs.h" +#include "pokedex_area_markers.h" +#include "field_specials.h" struct PokedexScreenData { @@ -107,14 +110,14 @@ void sub_8105058(u8 a0); void sub_8105178(u8 a0, u8 a1, u8 a2); static bool8 sub_81052D0(u8 a0); void sub_8105594(u8 a0, u8 a1); -void sub_8105E1C(u8 a0); -void sub_8106014(void); -void sub_810603C(void); +u8 sub_8105E1C(u8 a0); +u8 sub_8106014(void); +u8 sub_810603C(void); bool8 sub_8106838(u8 category, u8 a1); u8 sub_81068A0(u8 a0); -void sub_810699C(u8 category); +u8 sub_810699C(u8 category); bool8 sub_8106A20(u16 a0); -void sub_81067C0(void); +u8 sub_81067C0(void); void sub_81068DC(u8 category, u8 a1); u8 sub_8106AF8(u16 a0); void sub_8106B34(void); @@ -122,6 +125,8 @@ void sub_8106E78(const u8 *a0, s32 a1); static void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list); static void sub_8102F48(u8 windowId, s32 itemId, u8 y); static void sub_8103A40(u8 windowId, s32 itemId, u8 y); +static void sub_8106BD8(u8 taskId); +static void sub_8106BE8(u8 taskId); #include "data/pokemon_graphics/footprint_table.h" @@ -2069,10 +2074,10 @@ static bool32 sub_8104664(u8 a0) } else { - *r12 = 0; - *r6 = r3; - } - return TRUE; + *r12 = 0; + *r6 = r3; + } + return TRUE; } void sub_81047B0(u8 *windowId_p) @@ -2541,3 +2546,817 @@ static bool8 sub_81052D0(u8 a0) } return FALSE; } + +void sub_8105594(u8 a0, u8 a1) +{ + u8 v0, v1, v2, v3; + s16 v4, v5, v6; + + if (!gUnknown_203ACF0->field_2C) + { + v0 = gUnknown_8452334[0][0][2]; + v1 = gUnknown_8452334[0][0][3]; + } + else + { + v0 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][2]; + v1 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][3]; + } + + v2 = 6 + (a1 * 4); + v3 = 3 + (a1 * 2); + if (v2 >= 28) + v2 = 28; + if (v3 >= 14) + v3 = 14; + v4 = v0 - ((a1 * 4) / 2); + v5 = v1 - ((a1 * 2) / 2); + if ((v4 + v2 + 2) >= 30) + v4 -= ((v4 + v2 + 2) - 30); + else if (v4 < 0) + v4 = 0; + if ((v5 + v3 + 2) >= 18) + v5 -= ((v5 + v3 + 2) - 18); + else if (v5 < 2) + v5 = 2; + v6 = (v5 + 1) + ((v3 / 2) + 1); + + FillBgTilemapBufferRect_Palette0(a0, 4, v4, v5, 1, 1); + FillBgTilemapBufferRect_Palette0(a0, 5, v4 + 1, v5, v2, 1); + FillBgTilemapBufferRect_Palette0(a0, 1028, v4 + 1 + v2, v5, 1, 1); + + FillBgTilemapBufferRect_Palette0(a0, 10, v4, v5 + 1 + v3, 1, 1); + FillBgTilemapBufferRect_Palette0(a0, 11, v4 + 1, v5 + 1 + v3, v2, 1); + FillBgTilemapBufferRect_Palette0(a0, 1034, v4 + 1 + v2, v5 + 1 + v3, 1, 1); + + FillBgTilemapBufferRect_Palette0(a0, 6, v4, v5 + 1, 1, v6 - v5 - 1); + FillBgTilemapBufferRect_Palette0(a0, 7, v4, v6, 1, 1); + FillBgTilemapBufferRect_Palette0(a0, 9, v4, v6 + 1, 1, v5 + v3 - v6); + + FillBgTilemapBufferRect_Palette0(a0, 1030, v4 + 1 + v2, v5 + 1, 1, v6 - v5 - 1); + FillBgTilemapBufferRect_Palette0(a0, 1031, v4 + 1 + v2, v6, 1, 1); + FillBgTilemapBufferRect_Palette0(a0, 1033, v4 + 1 + v2, v6 + 1, 1, v5 + v3 - v6); + + FillBgTilemapBufferRect_Palette0(a0, 1, v4 + 1, v5 + 1, v2, v6 - v5 - 1); + FillBgTilemapBufferRect_Palette0(a0, 8, v4 + 1, v6, v2, 1); + FillBgTilemapBufferRect_Palette0(a0, 2, v4 + 1, v6 + 1, v2, v5 + v3 - v6); +} + +void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3) +{ + u8 * categoryName; + u8 index, categoryStr[12]; + + species = SpeciesToNationalPokedexNum(species); + + categoryName = (u8 *)gPokedexEntries[species].categoryName; + index = 0; + if (sub_8104AB0(species, 1, 0)) + { +#if REVISION == 0 + while ((categoryName[index] != CHAR_SPACE) && (index < 11)) +#else + while ((categoryName[index] != EOS) && (index < 11)) +#endif + { + categoryStr[index] = categoryName[index]; + index++; + } + } + else + { + while (index < 11) + { + categoryStr[index] = CHAR_QUESTION_MARK; + index++; + } + } + + categoryStr[index] = EOS; + + sub_81047C8(a0, 0, categoryStr, a2, a3, 0); + a2 += GetStringWidth(0, categoryStr, 0); + sub_81047C8(a0, 0, gText_PokedexPokemon, a2, a3, 0); +} + +void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y) +{ + u16 height; + u32 inches, feet; + const u8 *labelText; + u8 buffer[32]; + u8 i; + + species = SpeciesToNationalPokedexNum(species); + height = gPokedexEntries[species].height; + labelText = gText_HT; + + i = 0; + buffer[i++] = EXT_CTRL_CODE_BEGIN; + buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + buffer[i++] = 5; + buffer[i++] = CHAR_SPACE; + + if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0)) + { + inches = 10000 * height / 254; // actually tenths of inches here + if (inches % 10 >= 5) + inches += 10; + feet = inches / 120; + inches = (inches - (feet * 120)) / 10; + if (feet / 10 == 0) + { + buffer[i++] = 0; + buffer[i++] = feet + CHAR_0; + } + else + { + buffer[i++] = feet / 10 + CHAR_0; + buffer[i++] = feet % 10 + CHAR_0; + } + buffer[i++] = CHAR_SGL_QUOT_RIGHT; + buffer[i++] = inches / 10 + CHAR_0; + buffer[i++] = inches % 10 + CHAR_0; + buffer[i++] = CHAR_DBL_QUOT_RIGHT; + buffer[i++] = EOS; + } + else + { + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_SGL_QUOT_RIGHT; + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_DBL_QUOT_RIGHT; + } + + buffer[i++] = EOS; + sub_81047C8(windowId, 0, labelText, x, y, 0); + x += 30; + sub_81047C8(windowId, 0, buffer, x, y, 0); +} + +void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) +{ + u16 weight; + u32 lbs; + bool8 output; + const u8 * labelText; + const u8 * lbsText; + u8 buffer[32]; + u8 i; + u32 j; + + species = SpeciesToNationalPokedexNum(species); + weight = gPokedexEntries[species].weight; + labelText = gText_WT; + lbsText = gText_Lbs; + + i = 0; + buffer[i++] = EXT_CTRL_CODE_BEGIN; + buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + buffer[i++] = 5; + + if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0)) + { + lbs = (weight * 100000) / 4536; + + if (lbs % 10 >= 5) + lbs += 10; + + output = FALSE; + + if ((buffer[i] = (lbs / 100000) + CHAR_0) == CHAR_0 && !output) + { + buffer[i++] = CHAR_SPACE; + } + else + { + output = TRUE; + i++; + } + + lbs %= 100000; + if ((buffer[i] = (lbs / 10000) + CHAR_0) == CHAR_0 && !output) + { + buffer[i++] = CHAR_SPACE; + } + else + { + output = TRUE; + i++; + } + + lbs %= 10000; + if ((buffer[i] = (lbs / 1000) + CHAR_0) == CHAR_0 && !output) + { + buffer[i++] = CHAR_SPACE; + } + else + { + output = TRUE; + i++; + } + + lbs %= 1000; + buffer[i++] = (lbs / 100) + CHAR_0; + lbs %= 100; + buffer[i++] = CHAR_PERIOD; + buffer[i++] = (lbs / 10) + CHAR_0; + } + else + { + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_QUESTION_MARK; + buffer[i++] = CHAR_PERIOD; + buffer[i++] = CHAR_QUESTION_MARK; + } + buffer[i++] = CHAR_SPACE; + buffer[i++] = EXT_CTRL_CODE_BEGIN; + buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + buffer[i++] = 0; + + for (j = 0; j < 33 - i && lbsText[j] != EOS; j++) + buffer[i + j] = lbsText[j]; + + buffer[i + j] = EOS; + sub_81047C8(windowId, 0, labelText, x, y, 0); + x += 30; + sub_81047C8(windowId, 0, buffer, x, y, 0); +} + +void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y) +{ + struct TextPrinterTemplate printerTemplate; + u16 length; + s32 v1; + + species = SpeciesToNationalPokedexNum(species); + + if (sub_8104AB0(species, 1, 0)) + { + printerTemplate.currentChar = gPokedexEntries[species].description; + printerTemplate.windowId = a0; + printerTemplate.fontId = 2; + printerTemplate.letterSpacing = 1; + printerTemplate.lineSpacing = 0; + printerTemplate.unk = 0; + printerTemplate.fgColor = 1; + printerTemplate.bgColor = 0; + printerTemplate.shadowColor = 2; + + length = GetStringWidth(2, gPokedexEntries[species].description, 0); + v1 = x + (240 - length) / 2; + + if (v1 > 0) + x = v1; + else + x = 0; + + printerTemplate.x = x; + printerTemplate.y = y; + printerTemplate.currentX = x; + printerTemplate.currentY = y; + + AddTextPrinter(&printerTemplate, TEXT_SPEED_FF, NULL); + } +} + +void sub_8105D64(u8 a0, u16 species, u8 a2, u8 a3) +{ + u16 i, j, unused, v3; + u8 v4, v5; + u8 * buffer; + u8 * footprint; + + if (!(sub_8104AB0(species, 1, 1))) + return; + footprint = (u8 *)(gMonFootprintTable[species]); + buffer = gDecompressionBuffer; + unused = 0; + v3 = 0; + + for (i = 0; i < 32; i++) + { + v4 = footprint[i]; + for (j = 0; j < 4; j++) + { + v5 = 0; + if (v4 & (1 << (j * 2))) + v5 |= 1; + if (v4 & (2 << (j * 2))) + v5 |= 16; + buffer[v3] = v5; + v3++; + } + } + BlitBitmapRectToWindow(a0, buffer, 0, 0, 16, 16, a2, a3, 16, 16); +} + +u8 sub_8105E1C(bool8 a0) +{ + sub_8105594(3, 6); + FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16); + + gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_84521D4); + gUnknown_203ACF0->field_4A[1] = AddWindow(&gUnknown_84521DC); + gUnknown_203ACF0->field_4A[2] = AddWindow(&gUnknown_84521E4); + + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], 0); + sub_81049FC(gUnknown_203ACF0->field_4A[0], gUnknown_203ACF0->field_5A, 144); + PutWindowTilemap(gUnknown_203ACF0->field_4A[0]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2); + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[1], 0); + sub_8104A34(gUnknown_203ACF0->field_4A[1], 0, gUnknown_203ACF0->field_5A, 0, 8); + sub_81047C8(gUnknown_203ACF0->field_4A[1], 2, gSpeciesNames[gUnknown_203ACF0->field_5A], 28, 8, 0); + sub_8105800(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 24); + sub_81058C4(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 36); + sub_8105A3C(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 48); + sub_8105D64(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 88, 40); + + PutWindowTilemap(gUnknown_203ACF0->field_4A[1]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[1], 2); + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[2], 0); + sub_8105CB0(gUnknown_203ACF0->field_4A[2], gUnknown_203ACF0->field_5A, 0, 8); + PutWindowTilemap(gUnknown_203ACF0->field_4A[2]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[2], 2); + FillWindowPixelBuffer(1, 255); + if (a0 == FALSE) + { + sub_81047C8(1, 0, gText_Cry, 8, 2, 4); + sub_8104C2C(gText_NextDataCancel); + } + else + sub_8104C2C(gText_Next); + PutWindowTilemap(1); + CopyWindowToVram(1, 2); + + return 1; +} + +u8 sub_8106014(void) +{ + sub_81047B0(&gUnknown_203ACF0->field_4A[0]); + sub_81047B0(&gUnknown_203ACF0->field_4A[1]); + sub_81047B0(&gUnknown_203ACF0->field_4A[2]); + + return 0; +} + +u8 sub_810603C(void) +{ + int i; + u8 v1, v2; + bool8 v3; + s16 v4, v5; + u16 speciesId, species; + u16 v8; + + species = gUnknown_203ACF0->field_5A; + speciesId = SpeciesToNationalPokedexNum(species); + v3 = sub_8104AB0(species, 1, 1); + v1 = 28; + v2 = 14; + v4 = 0; + v5 = 2; + + FillBgTilemapBufferRect_Palette0(3, 4, v4, v5, 1, 1); + FillBgTilemapBufferRect_Palette0(3, 1028, v4 + 1 + v1, v5, 1, 1); + FillBgTilemapBufferRect_Palette0(3, 2052, v4, v5 + 1 + v2, 1, 1); + FillBgTilemapBufferRect_Palette0(3, 3076, v4 + 1 + v1, v5 + 1 + v2, 1, 1); + FillBgTilemapBufferRect_Palette0(3, 5, v4 + 1, v5, v1, 1); + FillBgTilemapBufferRect_Palette0(3, 2053, v4 + 1, v5 + 1 + v2, v1, 1); + FillBgTilemapBufferRect_Palette0(3, 6, v4, v5 + 1, 1, v2); + FillBgTilemapBufferRect_Palette0(3, 1030, v4 + 1 + v1, v5 + 1, 1, v2); + FillBgTilemapBufferRect_Palette0(3, 1, v4 + 1, v5 + 1, v1, v2); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16); + + v1 = 10; + v2 = 6; + v4 = 1; + v5 = 9; + + FillBgTilemapBufferRect_Palette0(0, 29, v4, v5, 1, 1); + FillBgTilemapBufferRect_Palette0(0, 1053, v4 + 1 + v1, v5, 1, 1); + FillBgTilemapBufferRect_Palette0(0, 2077, v4, v5 + 1 + v2, 1, 1); + FillBgTilemapBufferRect_Palette0(0, 3101, v4 + 1 + v1, v5 + 1 + v2, 1, 1); + FillBgTilemapBufferRect_Palette0(0, 30, v4 + 1, v5, v1, 1); + FillBgTilemapBufferRect_Palette0(0, 2078, v4 + 1, v5 + 1 + v2, v1, 1); + FillBgTilemapBufferRect_Palette0(0, 31, v4, v5 + 1, 1, v2); + FillBgTilemapBufferRect_Palette0(0, 1055, v4 + 1 + v1, v5 + 1, 1, v2); + FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20); + + gUnknown_203ACF0->field_64 = GetUnlockedSeviiAreas(); + v8 = 4; + for (i = 3; i < 7; i++) + if ((gUnknown_203ACF0->field_64 >> i) & 1) + v8 = 0; + + gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_8452214); + CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443620, 0, 0); + SetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2, + GetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2) + v8); + PutWindowTilemap(gUnknown_203ACF0->field_4A[0]); + for (i = 0; i < 7; i++) + if ((gUnknown_203ACF0->field_64 >> i) & 1) + { + gUnknown_203ACF0->field_4A[i + 1] = AddWindow(gUnknown_8452254[i].window); + CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[i + 1], gUnknown_8452254[i].tilemap, 0, 0); + SetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2) + v8); + PutWindowTilemap(gUnknown_203ACF0->field_4A[i + 1]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[i + 1], 2); + } + gUnknown_203ACF0->field_4A[8] = AddWindow(&gUnknown_84521F4); + gUnknown_203ACF0->field_4A[9] = AddWindow(&gUnknown_84521FC); + gUnknown_203ACF0->field_4A[10] = AddWindow(&gUnknown_8452204); + gUnknown_203ACF0->field_4A[11] = AddWindow(&gUnknown_84521EC); + gUnknown_203ACF0->field_4A[12] = AddWindow(&gUnknown_845220C); + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[11], 0); + sub_8107CD8(160, species); + sub_8107CF8(gUnknown_203ACF0->field_4A[11], species, sub_81049CC(species), 0, 0); + PutWindowTilemap(gUnknown_203ACF0->field_4A[11]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[11], 2); + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[9], 0); + { + s32 width = GetStringWidth(0, gText_Size, 0); + sub_81047C8(gUnknown_203ACF0->field_4A[9], 0, gText_Size, (gUnknown_84521FC.width * 8 - width) / 2, 4, 0); + } + PutWindowTilemap(gUnknown_203ACF0->field_4A[9]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[9], 2); + + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[10], 0); + { + s32 width = GetStringWidth(0, gText_Area, 0); + sub_81047C8(gUnknown_203ACF0->field_4A[10], 0, gText_Area, (gUnknown_8452204.width * 8 - width) / 2, 4, 0); + } + SetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2) + v8); + PutWindowTilemap(gUnknown_203ACF0->field_4A[10]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[10], 2); + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[8], 0); + sub_8104A34(gUnknown_203ACF0->field_4A[8], 0, species, 0, 0); + sub_81047C8(gUnknown_203ACF0->field_4A[8], 2, gSpeciesNames[species], 3, 12, 0); + PutWindowTilemap(gUnknown_203ACF0->field_4A[8]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[8], 2); + FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[12], 0); + ListMenuLoadStdPalAt(176, 1); + + if (v3) + { + BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type1, 0, 1); + if (gBaseStats[species].type1 != gBaseStats[species].type2) + BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type2, 32, 1); + } + PutWindowTilemap(gUnknown_203ACF0->field_4A[12]); + CopyWindowToVram(gUnknown_203ACF0->field_4A[12], 2); + ResetAllPicSprites(); + LoadPalette(gUnknown_8452368, 288, 32); + + if (v3) + { + gUnknown_203ACF0->field_4A[14] = CreateMonPicSprite_HandleDeoxys(species, 8, sub_81049CC(species), 1, 40, 104, 0, 65535); + gSprites[gUnknown_203ACF0->field_4A[14]].oam.paletteNum = 2; + gSprites[gUnknown_203ACF0->field_4A[14]].oam.affineMode = 1; + gSprites[gUnknown_203ACF0->field_4A[14]].oam.matrixNum = 2; + gSprites[gUnknown_203ACF0->field_4A[14]].oam.priority = 1; + gSprites[gUnknown_203ACF0->field_4A[14]].pos2.y = gPokedexEntries[speciesId].pokemonOffset; + SetOamMatrix(2, gPokedexEntries[speciesId].pokemonScale, 0, 0, gPokedexEntries[speciesId].pokemonScale); + gUnknown_203ACF0->field_4A[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, 1), 1, 80, 104, 0, 65535); + gSprites[gUnknown_203ACF0->field_4A[15]].oam.paletteNum = 2; + gSprites[gUnknown_203ACF0->field_4A[15]].oam.affineMode = 1; + gSprites[gUnknown_203ACF0->field_4A[15]].oam.matrixNum = 1; + gSprites[gUnknown_203ACF0->field_4A[15]].oam.priority = 1; + gSprites[gUnknown_203ACF0->field_4A[15]].pos2.y = gPokedexEntries[speciesId].trainerOffset; + SetOamMatrix(1, gPokedexEntries[speciesId].trainerScale, 0, 0, gPokedexEntries[speciesId].trainerScale); + } + else + { + gUnknown_203ACF0->field_4A[14] = 0xff; + gUnknown_203ACF0->field_4A[15] = 0xff; + } + + gUnknown_203ACF0->field_02[2] = sub_8134230(species, 2001, 3, v8 * 8); + if (!(sub_81344E0(gUnknown_203ACF0->field_02[2]))) + { + BlitBitmapRectToWindow(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443D00, 0, 0, 88, 16, 4, 28, 88, 16); + { + s32 width = GetStringWidth(0, gText_AreaUnknown, 0); + sub_81047C8(gUnknown_203ACF0->field_4A[0], 0, gText_AreaUnknown, (96 - width) / 2, 29, 0); + } + } + CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2); + FillWindowPixelBuffer(1, 255); + sub_81047C8(1, 0, gText_Cry, 8, 2, 4); + sub_8104C2C(gText_CancelPreviousData); + PutWindowTilemap(1); + CopyWindowToVram(1, 2); + + return 1; +} + + +u8 sub_81067C0(void) +{ + int i; + + sub_81343F4(gUnknown_203ACF0->field_02[2]); + + for (i = 0; i < 13; i++) + sub_81047B0(&gUnknown_203ACF0->field_4A[i]); + if (gUnknown_203ACF0->field_4A[15] != 0xff) + FreeAndDestroyTrainerPicSprite(gUnknown_203ACF0->field_4A[15]); + if (gUnknown_203ACF0->field_4A[14] != 0xff) + FreeAndDestroyMonPicSprite(gUnknown_203ACF0->field_4A[14]); + return 0; +} + +int sub_8106810(u16 species) +{ + if (IsNationalPokedexEnabled() == TRUE) + return TRUE; + if (SpeciesToNationalPokedexNum(species) <= KANTO_DEX_COUNT) + return TRUE; + return FALSE; +} + +u8 sub_8106838(u8 categoryNum, u8 pageNum) +{ + int i, count; + u16 species; + + count = gDexCategories[categoryNum].page[pageNum].count; + + for (i = 0; i < 4; i++) + { + if (i < count) + { + species = gDexCategories[categoryNum].page[pageNum].species[i]; + if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) + return 1; + } + } + return 0; +} + +u8 sub_81068A0(u8 categoryNum) +{ + int i; + u8 count; + + count = gDexCategories[categoryNum].count; + + for (i = 0; i < count; i++) + if (sub_8106838(categoryNum, i)) + return 1; + + return 0; +} + +void sub_81068DC(u8 categoryNum, u8 pageNum) +{ + int i, count; + u16 species; + + count = gDexCategories[categoryNum].page[pageNum].count; + gUnknown_203ACF0->field_2C = 0; + + for (i = 0; i < 4; i++) + gUnknown_203ACF0->field_18[i] = 0xffff; + for (i = 0; i < count; i++) + { + species = gDexCategories[categoryNum].page[pageNum].species[i]; + if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) + { + gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2C] = gDexCategories[categoryNum].page[pageNum].species[i]; + gUnknown_203ACF0->field_2C++; + } + } +} + +u8 sub_810699C(u8 category) +{ + int i; + u8 count, v2, v3; + + count = gDexCategories[category].count; + v2 = 0xff; + v3 = 0xff; + + for (i = 0; i < count; i++) + if (sub_8106838(category, i)) + { + if (v2 == 0xff) + v2 = i; + v3 = i; + } + if (v3 != 0xff) + { + gUnknown_203ACF0->field_29 = v2; + gUnknown_203ACF0->field_2A = v3 + 1; + return 0; + } + else + { + gUnknown_203ACF0->field_29 = 0; + gUnknown_203ACF0->field_2A = 0; + return 1; + } +} + +u8 sub_8106A20(u16 a0) +{ + int i, j, k, categoryCount, categoryPageCount, v5; + u16 species; + + for (i = 0; i < NELEMS(gDexCategories); i++) + { + categoryCount = gDexCategories[i].count; + for (j = 0; j < categoryCount; j++) + { + categoryPageCount = gDexCategories[i].page[j].count; + for (k = 0, v5 = 0; k < categoryPageCount; k++) + { + species = gDexCategories[i].page[j].species[k]; + if (a0 == species) + { + gUnknown_203ACF0->field_28 = i; + gUnknown_203ACF0->field_2B = j; + gUnknown_203ACF0->field_2D = v5; + return 0; + } + if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) + v5++; + } + } + } + return 1; +} + +u8 sub_8106AF8(u16 a0) +{ + int i, v1; + + for (i = 0, v1 = 0; i < a0; i++) + if (sub_8106838(gUnknown_203ACF0->field_28, i)) + v1++; + + return v1 + 1; +} + +void sub_8106B34(void) +{ + if (JOY_NEW(START_BUTTON)) + PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); +} + +u8 sub_8106B60(u16 species) +{ + sub_8104AB0(species, 2, 1); + sub_8104AB0(species, 3, 1); + + if (!IsNationalPokedexEnabled() && SpeciesToNationalPokedexNum(species) > KANTO_DEX_COUNT) + return CreateTask(sub_8106BD8, 0); + + sub_810250C(); + gTasks[gUnknown_203ACF0->field_00].func = sub_8106BE8; + sub_8106A20(species); + + return gUnknown_203ACF0->field_00; +} + +static void sub_8106BD8(u8 taskId) +{ + DestroyTask(taskId); +} + +static void sub_8106BE8(u8 taskId) +{ + switch (gUnknown_203ACF0->field_01) + { + case 0: + sub_810699C(gUnknown_203ACF0->field_28); + if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29) + gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29; + gUnknown_203ACF0->field_01 = 3; + break; + case 1: + sub_8106014(); + sub_8104E90(); + + gMain.state = 0; + gUnknown_203ACF0->field_01 = 2; + break; + case 2: + if (sub_8102798()) + DestroyTask(taskId); + break; + case 3: + sub_8104F0C(1); + PutWindowTilemap(0); + PutWindowTilemap(1); + + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + + sub_8105058(0xff); + + gUnknown_203ACF0->field_01 = 4; + break; + case 4: + gPaletteFade.bufferTransferDisabled = 0; + BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0xffff); + ShowBg(3); + ShowBg(2); + ShowBg(1); + ShowBg(0); + + gUnknown_203ACF0->field_01 = 5; + break; + case 5: + gTasks[taskId].data[0] = 30; + gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0); + gUnknown_203ACF0->field_01 = 6; + break; + case 6: + sub_8105058(gUnknown_203ACF0->field_2D); + sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C); + + if (gTasks[taskId].data[0]) + gTasks[taskId].data[0]--; + else + { + ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); + gUnknown_203ACF0->field_01 = 7; + } + break; + case 7: + gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D]; + gUnknown_203ACF0->field_01 = 8; + break; + case 8: + sub_8105E1C(1); + gUnknown_203ACF0->field_01 = 9; + break; + case 9: + gUnknown_203ACF0->field_02[0] = 0; + gUnknown_203ACF0->field_02[1] = 0; + gUnknown_203ACF0->field_01++; + case 10: + if (gUnknown_203ACF0->field_02[1] < 6) + { + if (gUnknown_203ACF0->field_02[0]) + { + sub_8105594(0, gUnknown_203ACF0->field_02[1]); + CopyBgTilemapBufferToVram(0); + gUnknown_203ACF0->field_02[0] = 4; + gUnknown_203ACF0->field_02[1]++; + } + else + gUnknown_203ACF0->field_02[0]--; + } + else + { + FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16); + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + + PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); + gUnknown_203ACF0->field_02[0] = 0; + gUnknown_203ACF0->field_01 = 11; + } + break; + case 11: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + gUnknown_203ACF0->field_01 = 2; + break; + } +} + +void sub_8106E78(const u8 * str, s32 mode) +{ + u32 x; + + switch (mode) + { + case 0: + x = 8; + break; + case 1: + x = (u32)(240 - GetStringWidth(2, str, 0)) / 2; + break; + case 2: + default: + x = 232 - GetStringWidth(2, str, 0); + break; + } + + sub_81047C8(0, 2, str, x, 2, 4); +} |