.include "asm/macros.inc" .include "render_text.inc" .include "global.inc" .rodata _020F56BC: .byte 0x00, 0x01, 0x02, 0x01 .bss _02111884: .space 4 _02111888: .space 2 .text thumb_func_start sub_020021A0 sub_020021A0: ; 0x020021A0 push {r3, lr} ldr r1, _02002210 ; =gSystem ldr r2, [r1, #0x44] mov r1, #3 tst r1, r2 beq _020021C2 ldrb r0, [r0] lsl r0, r0, #0x1b lsr r0, r0, #0x1f beq _020021C2 ldr r1, _02002214 ; =_02111884 mov r0, #1 ldrb r2, [r1, #3] bic r2, r0 strb r2, [r1, #3] mov r0, #1 pop {r3, pc} _020021C2: ldr r1, _02002214 ; =_02111884 ldrb r0, [r1, #2] lsl r0, r0, #0x1b lsr r0, r0, #0x1f beq _0200220A ldr r0, _02002218 ; =gSystem + 0x40 ldrh r0, [r0, #0x26] cmp r0, #0 bne _020021D8 mov r0, #0 pop {r3, pc} _020021D8: ldrb r2, [r1, #3] lsl r0, r2, #0x1e lsr r0, r0, #0x1f beq _020021FE ldr r0, _0200221C ; =_02111888 bl sub_020252F4 cmp r0, #0 beq _020021FA ldr r1, _02002214 ; =_02111884 mov r0, #1 ldrb r2, [r1, #3] bic r2, r0 mov r0, #1 orr r2, r0 strb r2, [r1, #3] pop {r3, pc} _020021FA: mov r0, #0 pop {r3, pc} _020021FE: mov r0, #1 bic r2, r0 mov r0, #1 orr r2, r0 strb r2, [r1, #3] pop {r3, pc} _0200220A: mov r0, #0 pop {r3, pc} nop _02002210: .word gSystem _02002214: .word _02111884 _02002218: .word gSystem + 0x40 _0200221C: .word _02111888 thumb_func_end sub_020021A0 thumb_func_start sub_02002220 sub_02002220: ; 0x02002220 push {r3, lr} ldr r0, _02002288 ; =gSystem ldr r1, [r0, #0x48] mov r0, #3 tst r0, r1 beq _0200223A ldr r1, _0200228C ; =_02111884 mov r0, #1 ldrb r2, [r1, #3] bic r2, r0 strb r2, [r1, #3] mov r0, #1 pop {r3, pc} _0200223A: ldr r1, _0200228C ; =_02111884 ldrb r0, [r1, #2] lsl r0, r0, #0x1b lsr r0, r0, #0x1f beq _02002282 ldr r0, _02002290 ; =gSystem + 0x40 ldrh r0, [r0, #0x24] cmp r0, #0 bne _02002250 mov r0, #0 pop {r3, pc} _02002250: ldrb r2, [r1, #3] lsl r0, r2, #0x1e lsr r0, r0, #0x1f beq _02002276 ldr r0, _02002294 ; =_02111888 bl sub_02025320 cmp r0, #0 beq _02002272 ldr r1, _0200228C ; =_02111884 mov r0, #1 ldrb r2, [r1, #3] bic r2, r0 mov r0, #1 orr r2, r0 strb r2, [r1, #3] pop {r3, pc} _02002272: mov r0, #0 pop {r3, pc} _02002276: mov r0, #1 bic r2, r0 mov r0, #1 orr r2, r0 strb r2, [r1, #3] pop {r3, pc} _02002282: mov r0, #0 pop {r3, pc} nop _02002288: .word gSystem _0200228C: .word _02111884 _02002290: .word gSystem + 0x40 _02002294: .word _02111888 thumb_func_end sub_02002220 thumb_func_start RenderText RenderText: ; 0x02002298 push {r3, r4, r5, r6, lr} sub sp, #0xc add r4, r0, #0 add r1, r4, #0 add r1, #0x28 ldrb r1, [r1] add r6, r4, #0 add r6, #0x20 cmp r1, #8 bls _020022AE b _020027EA _020022AE: add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _020022BA: ; jump table .short _020022CC - _020022BA - 2 ; case 0 .short _0200269A - _020022BA - 2 ; case 1 .short _020026B4 - _020022BA - 2 ; case 2 .short _020026DE - _020022BA - 2 ; case 3 .short _0200270E - _020022BA - 2 ; case 4 .short _02002764 - _020022BA - 2 ; case 5 .short _02002770 - _020022BA - 2 ; case 6 .short _02002790 - _020022BA - 2 ; case 7 .short _020027BA - _020022BA - 2 ; case 8 _020022CC: add r0, r6, #0 bl sub_020021A0 cmp r0, #0 beq _020022F4 add r0, r4, #0 mov r1, #0 add r0, #0x2a strb r1, [r0] add r0, r4, #0 add r0, #0x29 ldrb r0, [r0] lsl r0, r0, #0x19 lsr r0, r0, #0x19 beq _020022F4 ldr r1, _020025B8 ; =_02111884 mov r0, #0x40 ldrb r2, [r1, #2] orr r0, r2 strb r0, [r1, #2] _020022F4: add r0, r4, #0 add r0, #0x2a ldrb r0, [r0] cmp r0, #0 beq _0200233E add r0, r4, #0 add r0, #0x29 ldrb r0, [r0] lsl r0, r0, #0x19 lsr r0, r0, #0x19 beq _0200233E add r0, r4, #0 add r0, #0x2a ldrb r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0x2a strb r1, [r0] ldr r0, _020025B8 ; =_02111884 ldrb r0, [r0, #2] lsl r0, r0, #0x1f lsr r0, r0, #0x1f beq _02002338 bl sub_02002220 cmp r0, #0 beq _02002338 ldrb r1, [r6] mov r0, #0x10 add r4, #0x2a orr r0, r1 strb r0, [r6] mov r0, #0 strb r0, [r4] _02002338: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _0200233E: add r0, r4, #0 add r0, #0x29 ldrb r0, [r0] lsl r0, r0, #0x19 lsr r1, r0, #0x19 add r0, r4, #0 add r0, #0x2a strb r1, [r0] ldr r0, [r4] ldrh r5, [r0] add r0, r0, #2 str r0, [r4] mov r0, #0xf1 lsl r0, r0, #8 cmp r5, r0 bne _02002362 bl GF_AssertFail _02002362: ldr r0, _020025BC ; =0x0000F0FD cmp r5, r0 bgt _0200238C bge _020023C0 ldr r1, _020025C0 ; =0x000025BD cmp r5, r1 bgt _02002382 sub r0, r1, #1 cmp r5, r0 blt _02002380 bne _0200237A b _02002630 _0200237A: cmp r5, r1 bne _02002380 b _02002644 _02002380: b _02002658 _02002382: mov r0, #0xe lsl r0, r0, #0xc cmp r5, r0 beq _020023A4 b _02002658 _0200238C: ldr r0, _020025C4 ; =0x0000FFFE cmp r5, r0 bgt _02002396 beq _020023CC b _02002658 _02002396: add r0, r0, #1 cmp r5, r0 beq _0200239E b _02002658 _0200239E: add sp, #0xc mov r0, #1 pop {r3, r4, r5, r6, pc} _020023A4: ldrb r0, [r4, #0xa] mov r1, #1 strh r0, [r4, #0xc] ldrb r0, [r4, #9] bl GetFontAttribute ldrh r1, [r4, #0x12] ldrh r2, [r4, #0xe] add sp, #0xc add r0, r1, r0 add r0, r2, r0 strh r0, [r4, #0xe] mov r0, #2 pop {r3, r4, r5, r6, pc} _020023C0: ldr r0, [r4] add sp, #0xc add r0, r0, #2 str r0, [r4] mov r0, #2 pop {r3, r4, r5, r6, pc} _020023CC: ldr r0, [r4] sub r0, r0, #2 str r0, [r4] bl MsgArray_GetControlCode lsl r0, r0, #0x10 ldr r1, _020025C8 ; =0x0000FE06 lsr r0, r0, #0x10 cmp r0, r1 bgt _0200240C blt _020023E4 b _020025D0 _020023E4: mov r1, #2 lsl r1, r1, #8 sub r1, r0, r1 cmp r1, #8 bhi _02002416 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _020023FA: ; jump table .short _02002470 - _020023FA - 2 ; case 0 .short _020024F0 - _020023FA - 2 ; case 1 .short _02002512 - _020023FA - 2 ; case 2 .short _0200252A - _020023FA - 2 ; case 3 .short _02002536 - _020023FA - 2 ; case 4 .short _02002542 - _020023FA - 2 ; case 5 .short _0200256E - _020023FA - 2 ; case 6 .short _0200249C - _020023FA - 2 ; case 7 .short _020024C6 - _020023FA - 2 ; case 8 _0200240C: mov r1, #0xff lsl r1, r1, #8 cmp r0, r1 bgt _02002418 beq _02002422 _02002416: b _02002622 _02002418: add r1, r1, #1 cmp r0, r1 bne _02002420 b _02002590 _02002420: b _02002622 _02002422: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField lsl r0, r0, #0x10 lsr r0, r0, #0x10 cmp r0, #0xff bne _02002452 ldrb r0, [r4, #0x15] ldrb r2, [r4, #0x1b] sub r1, r0, #1 lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 add r0, #0x64 strb r0, [r4, #0x1b] cmp r2, #0x64 blo _02002492 cmp r2, #0x6b bhs _02002492 sub r2, #0x64 lsl r0, r2, #0x10 lsr r0, r0, #0x10 b _0200245A _02002452: cmp r0, #0x64 blo _0200245A strb r0, [r4, #0x1b] b _02002622 _0200245A: lsl r1, r0, #1 add r0, r1, #1 strb r0, [r4, #0x15] add r0, r1, #2 strb r0, [r4, #0x17] ldrb r0, [r4, #0x15] ldrb r1, [r4, #0x16] ldrb r2, [r4, #0x17] bl sub_0202036C b _02002622 _02002470: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField lsl r0, r0, #0x10 lsr r3, r0, #0x10 ldrh r1, [r4, #0xc] ldrh r2, [r4, #0xe] add r0, r4, #0 bl sub_020204FC add r0, r4, #0 add r0, #0x29 ldrb r0, [r0] lsl r0, r0, #0x18 lsr r0, r0, #0x1f bne _02002494 _02002492: b _02002622 _02002494: ldr r0, [r4, #4] bl CopyWindowToVram b _02002622 _0200249C: add r0, r4, #0 mov r1, #7 add r0, #0x28 strb r1, [r0] add r0, r4, #0 bl sub_020027FC ldr r0, [r4] bl MsgArray_SkipControlCode str r0, [r4] mov r1, #0xe ldrh r2, [r0] lsl r1, r1, #0xc cmp r2, r1 bne _020024C0 add r0, r0, #2 str r0, [r4] _020024C0: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _020024C6: add r0, r4, #0 mov r1, #8 add r0, #0x28 strb r1, [r0] add r0, r4, #0 bl sub_020027FC ldr r0, [r4] bl MsgArray_SkipControlCode str r0, [r4] mov r1, #0xe ldrh r2, [r0] lsl r1, r1, #0xc cmp r2, r1 bne _020024EA add r0, r0, #2 str r0, [r4] _020024EA: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _020024F0: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField add r1, r4, #0 add r1, #0x2a strb r0, [r1] ldr r0, [r4] bl MsgArray_SkipControlCode str r0, [r4] mov r0, #6 add r4, #0x28 strb r0, [r4] add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _02002512: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField strh r0, [r4, #0x2e] ldr r0, [r4] bl MsgArray_SkipControlCode str r0, [r4] add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _0200252A: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField strh r0, [r4, #0xc] b _02002622 _02002536: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField strh r0, [r4, #0xe] b _02002622 _02002542: ; 0x0205 ldr r0, [r4, #4] bl GetWindowWidth lsl r5, r0, #3 ldrb r0, [r4, #9] ldrh r2, [r4, #0x10] ldr r1, [r4] bl FontID_FlatArray_GetWidthFirstLine cmp r0, r5 bge _02002568 sub r1, r5, r0 lsr r0, r1, #0x1f add r0, r1, r0 ldrb r2, [r4, #0xa] asr r0, r0, #1 add r0, r2, r0 strh r0, [r4, #0xc] b _02002622 _02002568: ldrb r0, [r4, #0xa] strh r0, [r4, #0xc] b _02002622 _0200256E: ldr r0, [r4, #4] bl GetWindowWidth lsl r5, r0, #3 ldrb r0, [r4, #9] ldrh r2, [r4, #0x10] ldr r1, [r4] bl FontID_FlatArray_GetWidthFirstLine cmp r0, r5 bge _0200258A sub r0, r5, r0 strh r0, [r4, #0xc] b _02002622 _0200258A: ldrb r0, [r4, #0xa] strh r0, [r4, #0xc] b _02002622 _02002590: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField lsl r0, r0, #0x10 lsr r0, r0, #0x10 cmp r0, #0x64 beq _020025A6 cmp r0, #0xc8 beq _020025AE b _02002622 _020025A6: mov r0, #0 strh r0, [r4, #0x18] strb r0, [r4, #0x1a] b _02002622 _020025AE: ldr r0, _020025CC ; =0x0000FFFC strh r0, [r4, #0x18] mov r0, #0 strb r0, [r4, #0x1a] b _02002622 .balign 4, 0 _020025B8: .word _02111884 _020025BC: .word 0x0000F0FD _020025C0: .word 0x000025BD _020025C4: .word 0x0000FFFE _020025C8: .word 0x0000FE06 _020025CC: .word 0x0000FFFC _020025D0: ldr r0, [r4] mov r1, #0 bl MsgArray_ControlCodeGetField lsl r0, r0, #0x10 lsr r1, r0, #0x10 mov r0, #0xfe lsl r0, r0, #8 cmp r1, r0 beq _02002606 add r0, r0, #1 cmp r1, r0 bne _02002622 add r0, r4, #0 mov r1, #2 add r0, #0x28 strb r1, [r0] add r0, r4, #0 bl sub_020027FC ldr r0, [r4] bl MsgArray_SkipControlCode str r0, [r4] add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _02002606: add r0, r4, #0 mov r1, #3 add r0, #0x28 strb r1, [r0] add r0, r4, #0 bl sub_020027FC ldr r0, [r4] bl MsgArray_SkipControlCode str r0, [r4] add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _02002622: ldr r0, [r4] bl MsgArray_SkipControlCode str r0, [r4] add sp, #0xc mov r0, #2 pop {r3, r4, r5, r6, pc} _02002630: add r0, r4, #0 mov r1, #2 add r0, #0x28 strb r1, [r0] add r0, r4, #0 bl sub_020027FC add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _02002644: add r0, r4, #0 mov r1, #3 add r0, #0x28 strb r1, [r0] add r0, r4, #0 bl sub_020027FC add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _02002658: ldrb r0, [r6] add r1, r5, #0 lsl r0, r0, #0x1c lsr r0, r0, #0x1c bl FontID_TryLoadGlyph add r5, r0, #0 ldrh r0, [r4, #0xc] add r2, r5, #0 add r3, r5, #0 str r0, [sp] ldrh r0, [r4, #0xe] add r2, #0x80 add r3, #0x81 str r0, [sp, #4] ldrh r0, [r4, #0x18] add r1, r5, #0 str r0, [sp, #8] ldrb r2, [r2] ldrb r3, [r3] ldr r0, [r4, #4] bl CopyGlyphToWindow add r5, #0x80 ldrb r1, [r5] ldrh r0, [r4, #0x10] ldrh r2, [r4, #0xc] add sp, #0xc add r0, r1, r0 add r0, r2, r0 strh r0, [r4, #0xc] mov r0, #0 pop {r3, r4, r5, r6, pc} _0200269A: bl TextPrinterWait cmp r0, #0 beq _020026AE add r0, r4, #0 bl TextPrinterClearDownArrow mov r0, #0 add r4, #0x28 strb r0, [r4] _020026AE: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _020026B4: bl TextPrinterWaitWithDownArrow cmp r0, #0 beq _020026D8 add r0, r4, #0 bl TextPrinterClearDownArrow ldrb r1, [r4, #0x16] ldr r0, [r4, #4] bl FillWindowPixelBuffer ldrb r0, [r4, #0xa] strh r0, [r4, #0xc] ldrb r0, [r4, #0xb] strh r0, [r4, #0xe] mov r0, #0 add r4, #0x28 strb r0, [r4] _020026D8: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _020026DE: bl TextPrinterWaitWithDownArrow cmp r0, #0 beq _02002708 add r0, r4, #0 bl TextPrinterClearDownArrow ldrb r0, [r4, #9] mov r1, #1 bl GetFontAttribute ldrh r1, [r4, #0x12] add r1, r1, r0 add r0, r4, #0 add r0, #0x2b strb r1, [r0] ldrb r0, [r4, #0xa] strh r0, [r4, #0xc] mov r0, #4 add r4, #0x28 strb r0, [r4] _02002708: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _0200270E: add r0, #0x2b ldrb r2, [r0] cmp r2, #0 beq _02002758 cmp r2, #4 ldrb r5, [r4, #0x16] bge _02002730 lsl r3, r5, #4 orr r3, r5 lsl r3, r3, #0x18 ldr r0, [r4, #4] mov r1, #0 lsr r3, r3, #0x18 bl ScrollWindow mov r1, #0 b _0200274A _02002730: lsl r3, r5, #4 orr r3, r5 lsl r3, r3, #0x18 ldr r0, [r4, #4] mov r1, #0 mov r2, #4 lsr r3, r3, #0x18 bl ScrollWindow add r0, r4, #0 add r0, #0x2b ldrb r0, [r0] sub r1, r0, #4 _0200274A: add r0, r4, #0 add r0, #0x2b strb r1, [r0] ldr r0, [r4, #4] bl CopyWindowToVram b _0200275E _02002758: mov r0, #0 add r4, #0x28 strb r0, [r4] _0200275E: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _02002764: mov r0, #0 add r4, #0x28 strb r0, [r4] add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _02002770: add r0, #0x2a ldrb r0, [r0] cmp r0, #0 beq _02002784 add r0, r4, #0 add r0, #0x2a ldrb r0, [r0] add r4, #0x2a sub r0, r0, #1 b _02002788 _02002784: mov r0, #0 add r4, #0x28 _02002788: add sp, #0xc strb r0, [r4] mov r0, #3 pop {r3, r4, r5, r6, pc} _02002790: bl TextPrinterWaitWithDownArrow cmp r0, #0 beq _020027B4 add r0, r4, #0 bl TextPrinterClearDownArrow ldrb r1, [r4, #0x16] ldr r0, [r4, #4] bl FillWindowPixelBuffer ldrb r0, [r4, #0xa] strh r0, [r4, #0xc] ldrb r0, [r4, #0xb] strh r0, [r4, #0xe] mov r0, #0 add r4, #0x28 strb r0, [r4] _020027B4: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _020027BA: bl TextPrinterWaitWithDownArrow cmp r0, #0 beq _020027E4 add r0, r4, #0 bl TextPrinterClearDownArrow ldrb r0, [r4, #9] mov r1, #1 bl GetFontAttribute ldrh r1, [r4, #0x12] add r1, r1, r0 add r0, r4, #0 add r0, #0x2b strb r1, [r0] ldrb r0, [r4, #0xa] strh r0, [r4, #0xc] mov r0, #4 add r4, #0x28 strb r0, [r4] _020027E4: add sp, #0xc mov r0, #3 pop {r3, r4, r5, r6, pc} _020027EA: mov r0, #1 add sp, #0xc pop {r3, r4, r5, r6, pc} thumb_func_end RenderText thumb_func_start sub_020027F0 sub_020027F0: ; 0x020027F0 ldr r1, _020027F8 ; =_02111884 strh r0, [r1] bx lr nop _020027F8: .word _02111884 thumb_func_end sub_020027F0 thumb_func_start sub_020027FC sub_020027FC: ; 0x020027FC ldr r2, _02002830 ; =_02111884 add r1, r0, #0 ldrb r2, [r2, #2] add r1, #0x20 lsl r2, r2, #0x1d lsr r2, r2, #0x1f beq _02002814 ldrb r3, [r1, #2] mov r2, #0xff bic r3, r2 strb r3, [r1, #2] b _02002824 _02002814: ldrb r3, [r1, #1] mov r2, #0x60 bic r3, r2 strb r3, [r1, #1] ldrb r3, [r1, #1] mov r2, #0x1f bic r3, r2 strb r3, [r1, #1] _02002824: ldr r1, _02002830 ; =_02111884 ldr r3, _02002834 ; =sub_0200EB68 ldr r0, [r0, #4] ldrh r1, [r1] bx r3 nop _02002830: .word _02111884 _02002834: .word sub_0200EB68 thumb_func_end sub_020027FC thumb_func_start TextPrinterDrawDownArrow TextPrinterDrawDownArrow: ; 0x02002838 push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 add r5, r0, #0 ldr r0, _020029D0 ; =_02111884 add r4, r5, #0 ldrb r0, [r0, #2] add r4, #0x20 lsl r1, r0, #0x1d lsr r1, r1, #0x1f bne _02002852 lsl r0, r0, #0x1e lsr r0, r0, #0x1f beq _02002854 _02002852: b _020029CC _02002854: ldrb r0, [r4, #1] lsl r1, r0, #0x1b lsr r2, r1, #0x1b beq _02002872 mov r1, #0x1f add r2, #0xff bic r0, r1 lsl r1, r2, #0x18 lsr r2, r1, #0x18 mov r1, #0x1f and r1, r2 orr r0, r1 add sp, #0x30 strb r0, [r4, #1] pop {r3, r4, r5, r6, r7, pc} _02002872: ldr r0, [r5, #4] bl GetWindowBgId str r0, [sp, #0x20] ldr r0, [r5, #4] bl GetWindowX str r0, [sp, #0x24] ldr r0, [r5, #4] bl GetWindowY add r7, r0, #0 ldr r0, [r5, #4] bl GetWindowWidth str r0, [sp, #0x28] ldr r0, [r5, #4] bl GetWindowHeight sub r0, r0, #2 lsl r0, r0, #0x18 lsr r1, r0, #0x18 ldr r0, _020029D0 ; =_02111884 add r7, r7, r1 ldrh r6, [r0] ldr r1, [sp, #0x24] ldr r0, [sp, #0x28] add r2, r6, #0 add r0, r1, r0 str r0, [sp, #0x1c] add r0, r0, #1 str r0, [sp, #0x18] lsl r0, r7, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x10 str r0, [sp, #0xc] str r2, [sp, #0x2c] add r2, #0x12 str r2, [sp, #0x2c] ldrb r2, [r4, #1] ldr r0, [r5, #4] ldr r1, [sp, #0x20] lsl r2, r2, #0x19 lsr r3, r2, #0x1e ldr r2, _020029D4 ; =_020F56BC ldr r0, [r0] ldrb r2, [r2, r3] lsl r3, r2, #2 ldr r2, [sp, #0x2c] add r2, r2, r3 ldr r3, [sp, #0x18] lsl r2, r2, #0x10 lsl r3, r3, #0x18 lsr r2, r2, #0x10 lsr r3, r3, #0x18 bl FillBgTilemapRect ldr r0, [sp, #0x1c] add r2, r6, #0 add r0, r0, #2 str r0, [sp, #0x10] lsl r0, r7, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x10 str r0, [sp, #0xc] add r2, #0x13 mov ip, r2 ldrb r2, [r4, #1] ldr r0, [r5, #4] ldr r1, [sp, #0x20] lsl r2, r2, #0x19 lsr r3, r2, #0x1e ldr r2, _020029D4 ; =_020F56BC ldr r0, [r0] ldrb r2, [r2, r3] mov r3, ip lsl r2, r2, #2 add r2, r3, r2 ldr r3, [sp, #0x10] lsl r2, r2, #0x10 lsl r3, r3, #0x18 lsr r2, r2, #0x10 lsr r3, r3, #0x18 bl FillBgTilemapRect add r0, r7, #1 str r0, [sp, #0x14] lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x10 str r0, [sp, #0xc] ldrb r2, [r4, #1] add r7, r6, #0 ldr r0, [r5, #4] lsl r2, r2, #0x19 lsr r3, r2, #0x1e ldr r2, _020029D4 ; =_020F56BC add r7, #0x14 ldrb r2, [r2, r3] ldr r3, [sp, #0x18] ldr r0, [r0] lsl r2, r2, #2 add r2, r7, r2 lsl r2, r2, #0x10 lsl r3, r3, #0x18 ldr r1, [sp, #0x20] lsr r2, r2, #0x10 lsr r3, r3, #0x18 bl FillBgTilemapRect ldr r0, [sp, #0x14] add r6, #0x15 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #1 str r0, [sp, #4] str r0, [sp, #8] mov r0, #0x10 str r0, [sp, #0xc] ldrb r2, [r4, #1] ldr r0, [r5, #4] ldr r1, [sp, #0x20] lsl r2, r2, #0x19 lsr r3, r2, #0x1e ldr r2, _020029D4 ; =_020F56BC ldr r0, [r0] ldrb r2, [r2, r3] ldr r3, [sp, #0x10] lsl r2, r2, #2 add r2, r6, r2 lsl r2, r2, #0x10 lsl r3, r3, #0x18 lsr r2, r2, #0x10 lsr r3, r3, #0x18 bl FillBgTilemapRect ldr r0, [r5, #4] ldr r1, [sp, #0x20] ldr r0, [r0] bl BgCommitTilemapBufferToVram ldrb r1, [r4, #1] mov r0, #0x1f bic r1, r0 mov r0, #8 orr r0, r1 strb r0, [r4, #1] ldrb r2, [r4, #1] mov r1, #0x60 add r0, r2, #0 bic r0, r1 lsl r1, r2, #0x19 lsr r1, r1, #0x1e add r1, r1, #1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 lsl r1, r1, #0x1e lsr r1, r1, #0x19 orr r0, r1 strb r0, [r4, #1] _020029CC: add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 _020029D0: .word _02111884 _020029D4: .word _020F56BC thumb_func_end TextPrinterDrawDownArrow thumb_func_start TextPrinterClearDownArrow TextPrinterClearDownArrow: ; 0x020029D8 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r5, r0, #0 ldr r0, _02002A80 ; =_02111884 ldrb r0, [r0, #2] lsl r0, r0, #0x1e lsr r0, r0, #0x1f bne _02002A7C ldr r0, [r5, #4] bl GetWindowBgId str r0, [sp, #0x10] ldr r0, [r5, #4] bl GetWindowX str r0, [sp, #0x14] ldr r0, [r5, #4] bl GetWindowY add r6, r0, #0 ldr r0, [r5, #4] bl GetWindowWidth str r0, [sp, #0x18] ldr r0, [r5, #4] bl GetWindowHeight sub r0, r0, #2 lsl r0, r0, #0x18 lsr r1, r0, #0x18 ldr r0, _02002A80 ; =_02111884 add r7, r6, r1 ldrh r4, [r0] ldr r1, [sp, #0x14] ldr r0, [sp, #0x18] add r2, r4, #0 add r6, r1, r0 lsl r0, r7, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #2 str r0, [sp, #8] mov r0, #0x10 str r0, [sp, #0xc] ldr r0, [r5, #4] add r2, #0xa add r3, r6, #1 lsl r2, r2, #0x10 lsl r3, r3, #0x18 ldr r0, [r0] ldr r1, [sp, #0x10] lsr r2, r2, #0x10 lsr r3, r3, #0x18 bl FillBgTilemapRect lsl r0, r7, #0x18 lsr r0, r0, #0x18 str r0, [sp] mov r0, #1 str r0, [sp, #4] mov r0, #2 str r0, [sp, #8] mov r0, #0x10 str r0, [sp, #0xc] ldr r0, [r5, #4] add r4, #0xb add r3, r6, #2 lsl r2, r4, #0x10 lsl r3, r3, #0x18 ldr r0, [r0] ldr r1, [sp, #0x10] lsr r2, r2, #0x10 lsr r3, r3, #0x18 bl FillBgTilemapRect ldr r0, [r5, #4] ldr r1, [sp, #0x10] ldr r0, [r0] bl BgCommitTilemapBufferToVram _02002A7C: add sp, #0x1c pop {r4, r5, r6, r7, pc} .balign 4, 0 _02002A80: .word _02111884 thumb_func_end TextPrinterClearDownArrow thumb_func_start TextPrinterContinue TextPrinterContinue: ; 0x02002A84 push {r3, lr} bl sub_02002220 cmp r0, #0 beq _02002AA2 ldr r0, _02002AA8 ; =0x000005DC bl PlaySE ldr r1, _02002AAC ; =_02111884 mov r0, #0x80 ldrb r2, [r1, #2] orr r0, r2 strb r0, [r1, #2] mov r0, #1 pop {r3, pc} _02002AA2: mov r0, #0 pop {r3, pc} nop _02002AA8: .word 0x000005DC _02002AAC: .word _02111884 thumb_func_end TextPrinterContinue thumb_func_start TextPrinterWaitAutoMode TextPrinterWaitAutoMode: ; 0x02002AB0 push {r4, lr} add r2, r0, #0 add r2, #0x20 ldrb r1, [r2, #2] add r4, r1, #0 cmp r4, #0x64 bne _02002AC2 mov r0, #1 pop {r4, pc} _02002AC2: mov r3, #0xff bic r1, r3 add r3, r4, #1 lsl r3, r3, #0x18 lsr r3, r3, #0x18 lsl r3, r3, #0x18 lsr r3, r3, #0x18 orr r1, r3 strb r1, [r2, #2] ldr r1, _02002AE8 ; =_02111884 ldrb r1, [r1, #2] lsl r1, r1, #0x1a lsr r1, r1, #0x1f beq _02002AE4 bl TextPrinterContinue pop {r4, pc} _02002AE4: mov r0, #0 pop {r4, pc} .balign 4, 0 _02002AE8: .word _02111884 thumb_func_end TextPrinterWaitAutoMode thumb_func_start TextPrinterWaitWithDownArrow TextPrinterWaitWithDownArrow: ; 0x02002AEC push {r4, lr} ldr r1, _02002B0C ; =_02111884 add r4, r0, #0 ldrb r1, [r1, #2] lsl r1, r1, #0x1d lsr r1, r1, #0x1f beq _02002B00 bl TextPrinterWaitAutoMode pop {r4, pc} _02002B00: bl TextPrinterDrawDownArrow add r0, r4, #0 bl TextPrinterContinue pop {r4, pc} .balign 4, 0 _02002B0C: .word _02111884 thumb_func_end TextPrinterWaitWithDownArrow thumb_func_start TextPrinterWait TextPrinterWait: ; 0x02002B10 push {r3, lr} ldr r1, _02002B30 ; =_02111884 ldrb r1, [r1, #2] lsl r1, r1, #0x1d lsr r1, r1, #0x1f beq _02002B26 bl TextPrinterWaitAutoMode lsl r0, r0, #0x18 lsr r0, r0, #0x18 pop {r3, pc} _02002B26: bl TextPrinterContinue lsl r0, r0, #0x18 lsr r0, r0, #0x18 pop {r3, pc} .balign 4, 0 _02002B30: .word _02111884 thumb_func_end TextPrinterWait thumb_func_start TextFlags_SetCanABSpeedUpPrint TextFlags_SetCanABSpeedUpPrint: ; 0x02002B34 ldr r2, _02002B4C ; =_02111884 mov r1, #1 ldrb r3, [r2, #2] lsl r0, r0, #0x18 bic r3, r1 lsr r1, r0, #0x18 mov r0, #1 and r0, r1 orr r0, r3 strb r0, [r2, #2] bx lr nop _02002B4C: .word _02111884 thumb_func_end TextFlags_SetCanABSpeedUpPrint thumb_func_start sub_02002B50 sub_02002B50: ; 0x02002B50 push {r3, r4} ldr r1, _02002B88 ; =_02111884 mov r3, #4 ldrb r2, [r1, #2] mov r4, #1 bic r2, r3 add r3, r0, #0 and r3, r4 lsl r3, r3, #0x18 lsr r3, r3, #0x18 lsl r3, r3, #0x1f lsr r3, r3, #0x1d orr r2, r3 asr r0, r0, #1 and r0, r4 strb r2, [r1, #2] lsl r0, r0, #0x18 lsr r0, r0, #0x18 lsl r0, r0, #0x1f ldrb r2, [r1, #2] mov r3, #0x20 lsr r0, r0, #0x1a bic r2, r3 orr r0, r2 strb r0, [r1, #2] pop {r3, r4} bx lr nop _02002B88: .word _02111884 thumb_func_end sub_02002B50 thumb_func_start sub_02002B8C sub_02002B8C: ; 0x02002B8C ldr r2, _02002BA4 ; =_02111884 lsl r0, r0, #0x18 ldrb r3, [r2, #2] lsr r0, r0, #0x18 mov r1, #0x10 lsl r0, r0, #0x1f bic r3, r1 lsr r0, r0, #0x1b orr r0, r3 strb r0, [r2, #2] bx lr nop _02002BA4: .word _02111884 thumb_func_end sub_02002B8C thumb_func_start sub_02002BA8 sub_02002BA8: ; 0x02002BA8 ldr r2, _02002BC0 ; =_02111884 lsl r0, r0, #0x18 ldrb r3, [r2, #2] lsr r0, r0, #0x18 mov r1, #2 lsl r0, r0, #0x1f bic r3, r1 lsr r0, r0, #0x1e orr r0, r3 strb r0, [r2, #2] bx lr nop _02002BC0: .word _02111884 thumb_func_end sub_02002BA8 thumb_func_start sub_02002BC4 sub_02002BC4: ; 0x02002BC4 ldr r0, _02002BD0 ; =_02111884 ldrb r0, [r0, #2] lsl r0, r0, #0x19 lsr r0, r0, #0x1f bx lr nop _02002BD0: .word _02111884 thumb_func_end sub_02002BC4 thumb_func_start sub_02002BD4 sub_02002BD4: ; 0x02002BD4 ldr r1, _02002BE0 ; =_02111884 mov r0, #0x40 ldrb r2, [r1, #2] bic r2, r0 strb r2, [r1, #2] bx lr .balign 4, 0 _02002BE0: .word _02111884 thumb_func_end sub_02002BD4 thumb_func_start sub_02002BE4 sub_02002BE4: ; 0x02002BE4 ldr r0, _02002BF0 ; =_02111884 ldrb r0, [r0, #2] lsl r0, r0, #0x18 lsr r0, r0, #0x1f bx lr nop _02002BF0: .word _02111884 thumb_func_end sub_02002BE4 thumb_func_start sub_02002BF4 sub_02002BF4: ; 0x02002BF4 ldr r1, _02002C00 ; =_02111884 mov r0, #0x80 ldrb r2, [r1, #2] bic r2, r0 strb r2, [r1, #2] bx lr .balign 4, 0 _02002C00: .word _02111884 thumb_func_end sub_02002BF4 thumb_func_start sub_02002C04 sub_02002C04: ; 0x02002C04 ldr r0, _02002C1C ; =_02111884 ldrb r1, [r0, #2] lsl r1, r1, #0x1b lsr r1, r1, #0x1f beq _02002C16 ldrb r0, [r0, #3] lsl r0, r0, #0x1f lsr r0, r0, #0x1f bx lr _02002C16: mov r0, #0 bx lr nop _02002C1C: .word _02111884 thumb_func_end sub_02002C04 thumb_func_start sub_02002C20 sub_02002C20: ; 0x02002C20 ldr r2, _02002C3C ; =_02111884 mov r1, #2 ldrb r3, [r2, #3] orr r1, r3 strb r1, [r2, #3] ldrb r1, [r0] strb r1, [r2, #4] ldrb r1, [r0, #1] strb r1, [r2, #5] ldrb r1, [r0, #2] strb r1, [r2, #6] ldrb r0, [r0, #3] strb r0, [r2, #7] bx lr .balign 4, 0 _02002C3C: .word _02111884 thumb_func_end sub_02002C20 thumb_func_start sub_02002C40 sub_02002C40: ; 0x02002C40 ldr r1, _02002C5C ; =_02111884 mov r0, #2 ldrb r2, [r1, #3] bic r2, r0 strb r2, [r1, #3] mov r2, #0 strb r2, [r1, #4] mov r0, #0xc0 strb r0, [r1, #5] strb r2, [r1, #6] mov r0, #0xff strb r0, [r1, #7] bx lr nop _02002C5C: .word _02111884 thumb_func_end sub_02002C40 thumb_func_start sub_02002C60 sub_02002C60: ; 0x02002C60 push {r3, lr} cmp r0, #0 bne _02002C7A mov r0, #1 bl TextFlags_SetCanABSpeedUpPrint mov r0, #3 bl sub_02002B50 mov r0, #1 bl sub_02002B8C pop {r3, pc} _02002C7A: mov r0, #1 bl sub_02002B50 mov r0, #0 bl TextFlags_SetCanABSpeedUpPrint mov r0, #0 bl sub_02002B8C pop {r3, pc} .balign 4, 0 thumb_func_end sub_02002C60 thumb_func_start sub_02002C90 sub_02002C90: ; 0x02002C90 push {r3, lr} mov r0, #0 bl TextFlags_SetCanABSpeedUpPrint mov r0, #0 bl sub_02002B50 mov r0, #0 bl sub_02002B8C pop {r3, pc} .balign 4, 0 thumb_func_end sub_02002C90