diff options
author | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-19 14:04:44 +0200 |
---|---|---|
committer | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-19 14:04:44 +0200 |
commit | 7ec4479631d6fe7bc7153f548294e93d0543f182 (patch) | |
tree | 9b5b7101ccf18482c614001a9a1fc70be6eb6e4a | |
parent | c28aea7cf779479341ac60e0e1a988c26f91b02d (diff) |
decompile unk_020023C0.s
-rw-r--r-- | arm9/asm/unk_020023C0.s | 1123 | ||||
-rw-r--r-- | arm9/src/unk_020023C0.c | 525 | ||||
-rw-r--r-- | arm9/src/unk_0201B8B8.c | 4 | ||||
-rw-r--r-- | include/unk_0201B8B8.h | 4 |
4 files changed, 529 insertions, 1127 deletions
diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s deleted file mode 100644 index dc0c45ef..00000000 --- a/arm9/asm/unk_020023C0.s +++ /dev/null @@ -1,1123 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .extern gMain - .extern gMain - - .global gTextFlags -gTextFlags: ; 0x02106FC4 - .space 0x4 - - .section .rodata - - .global UNK_020ECB50 -UNK_020ECB50: ; 0x020ECB50 - .byte 0x00, 0x01, 0x02, 0x01 - - .text - - thumb_func_start RenderText -RenderText: ; 0x020023C0 - push {r3-r6, lr} - sub sp, #0xc - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x24 - ldrb r1, [r1, #0x0] - add r6, r4, #0x0 - add r6, #0x1c - cmp r1, #0x6 - bls _020023D6 - b _02002838 -_020023D6: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_020023E2: ; jump table (using 16-bit offset) - .short _020023F0 - _020023E2 - 2; case 0 - .short _02002742 - _020023E2 - 2; case 1 - .short _0200275C - _020023E2 - 2; case 2 - .short _02002786 - _020023E2 - 2; case 3 - .short _020027B6 - _020023E2 - 2; case 4 - .short _0200280C - _020023E2 - 2; case 5 - .short _02002818 - _020023E2 - 2; case 6 -_020023F0: - ldr r0, _02002658 ; =gMain - ldr r1, [r0, #0x44] - mov r0, #0x3 - tst r0, r1 - beq _02002402 - ldrb r0, [r6, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - bne _02002414 -_02002402: - ldr r0, _0200265C ; =gMain + 0x40 - ldrh r0, [r0, #0x22] - cmp r0, #0x0 - beq _02002432 - ldr r0, _02002660 ; =gTextFlags - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - beq _02002432 -_02002414: - add r0, r4, #0x0 - mov r1, #0x0 - add r0, #0x26 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x25 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x19 - lsr r0, r0, #0x19 - beq _02002432 - ldr r1, _02002660 ; =gTextFlags - mov r0, #0x40 - ldrb r2, [r1, #0x0] - orr r0, r2 - strb r0, [r1, #0x0] -_02002432: - add r0, r4, #0x0 - add r0, #0x26 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _0200248C - add r0, r4, #0x0 - add r0, #0x25 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x19 - lsr r0, r0, #0x19 - beq _0200248C - add r0, r4, #0x0 - add r0, #0x26 - ldrb r0, [r0, #0x0] - sub r1, r0, #0x1 - add r0, r4, #0x0 - add r0, #0x26 - strb r1, [r0, #0x0] - ldr r0, _02002660 ; =gTextFlags - ldrb r0, [r0, #0x0] - lsl r1, r0, #0x1f - lsr r1, r1, #0x1f - beq _02002486 - ldr r1, _02002658 ; =gMain - ldr r2, [r1, #0x48] - mov r1, #0x3 - tst r1, r2 - bne _02002478 - ldr r1, _0200265C ; =gMain + 0x40 - ldrh r1, [r1, #0x20] - cmp r1, #0x0 - beq _02002486 - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - beq _02002486 -_02002478: - ldrb r1, [r6, #0x0] - mov r0, #0x10 - add r4, #0x26 - orr r0, r1 - strb r0, [r6, #0x0] - mov r0, #0x0 - strb r0, [r4, #0x0] -_02002486: - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_0200248C: - add r0, r4, #0x0 - add r0, #0x25 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x19 - lsr r1, r0, #0x19 - add r0, r4, #0x0 - add r0, #0x26 - strb r1, [r0, #0x0] - ldr r0, [r4, #0x0] - ldrh r5, [r0, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - mov r0, #0xf1 - lsl r0, r0, #0x8 - cmp r5, r0 - bne _020024B0 - bl GF_AssertFail -_020024B0: - ldr r0, _02002664 ; =0x0000F0FD - cmp r5, r0 - bgt _020024DA - bge _0200250E - ldr r1, _02002668 ; =0x000025BD \f - cmp r5, r1 - bgt _020024D0 - sub r0, r1, #0x1 ; \r - cmp r5, r0 - blt _020024CE - bne _020024C8 - b _020026D8 -_020024C8: - cmp r5, r1 - bne _020024CE - b _020026EC -_020024CE: - b _02002700 -_020024D0: - mov r0, #0xe - lsl r0, r0, #0xc - cmp r5, r0 - beq _020024F2 - b _02002700 -_020024DA: - ldr r0, _0200266C ; =0x0000FFFE EXT_CTRL_CODE_BEGIN - cmp r5, r0 - bgt _020024E4 - beq _0200251A - b _02002700 -_020024E4: - add r0, r0, #0x1 ; =0x0000FFFF EOS - cmp r5, r0 - beq _020024EC - b _02002700 -_020024EC: - add sp, #0xc - mov r0, #0x1 - pop {r3-r6, pc} -_020024F2: - ldrb r0, [r4, #0xa] - mov r1, #0x1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0x9] - bl GetFontAttribute - ldrb r1, [r4, #0xf] - ldrb r2, [r4, #0xd] - add sp, #0xc - add r0, r1, r0 - add r0, r2, r0 - strb r0, [r4, #0xd] - mov r0, #0x2 - pop {r3-r6, pc} -_0200250E: - ldr r0, [r4, #0x0] - add sp, #0xc - add r0, r0, #0x2 - str r0, [r4, #0x0] - mov r0, #0x2 - pop {r3-r6, pc} -_0200251A: - ldr r0, [r4, #0x0] - sub r0, r0, #0x2 - str r0, [r4, #0x0] - bl MsgArray_GetControlCode - lsl r0, r0, #0x10 - ldr r1, _02002670 ; =0x0000FE06 - lsr r0, r0, #0x10 - cmp r0, r1 - bgt _02002552 - blt _02002532 - b _02002678 -_02002532: - mov r1, #0x2 - lsl r1, r1, #0x8 - sub r1, r0, r1 - cmp r1, #0x4 - bhi _0200255C - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02002548: ; jump table (using 16-bit offset) - .short _020025B4 - _02002548 - 2; case 0x200 - .short _020025DE - _02002548 - 2; case 0x201 - .short _02002600 - _02002548 - 2; case 0x202 - .short _02002618 - _02002548 - 2; case 0x203 - .short _02002624 - _02002548 - 2; case 0x204 -_02002552: - mov r1, #0xff - lsl r1, r1, #0x8 - cmp r0, r1 - bgt _0200255E - beq _02002566 -_0200255C: - b _020026CA -_0200255E: - add r1, r1, #0x1 - cmp r0, r1 - beq _02002630 - b _020026CA -_02002566: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0xff - bne _02002596 - ldrb r0, [r4, #0x11] - ldrb r2, [r4, #0x17] - sub r1, r0, #0x1 - lsr r0, r1, #0x1f - add r0, r1, r0 - asr r0, r0, #0x1 - add r0, #0x64 - strb r0, [r4, #0x17] - cmp r2, #0x64 - blo _02002644 - cmp r2, #0x6b - bhs _02002644 - sub r2, #0x64 - lsl r0, r2, #0x10 - lsr r0, r0, #0x10 - b _0200259E -_02002596: - cmp r0, #0x64 - blo _0200259E - strb r0, [r4, #0x17] - b _020026CA -_0200259E: - lsl r1, r0, #0x1 - add r0, r1, #0x1 - strb r0, [r4, #0x11] - add r0, r1, #0x2 - strb r0, [r4, #0x13] - ldrb r0, [r4, #0x11] - ldrb r1, [r4, #0x12] - ldrb r2, [r4, #0x13] - bl GenerateFontHalfRowLookupTable - b _020026CA -_020025B4: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - ldrb r1, [r4, #0xc] - ldrb r2, [r4, #0xd] - add r0, r4, #0x0 - bl FUN_0201C1EC - add r0, r4, #0x0 - add r0, #0x25 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - beq _020026CA - ldr r0, [r4, #0x4] - bl CopyWindowToVram - b _020026CA -_020025DE: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - add r1, r4, #0x0 - add r1, #0x26 - strb r0, [r1, #0x0] - ldr r0, [r4, #0x0] - bl MsgArray_SkipControlCode - str r0, [r4, #0x0] - mov r0, #0x6 - add r4, #0x24 - strb r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_02002600: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - strh r0, [r4, #0x2a] - ldr r0, [r4, #0x0] - bl MsgArray_SkipControlCode - str r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_02002618: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - strb r0, [r4, #0xc] - b _020026CA -_02002624: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - strb r0, [r4, #0xd] - b _020026CA -_02002630: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x64 - beq _02002646 - cmp r0, #0xc8 - beq _0200264E -_02002644: - b _020026CA -_02002646: - mov r0, #0x0 - strh r0, [r4, #0x14] - strb r0, [r4, #0x16] - b _020026CA -_0200264E: - ldr r0, _02002674 ; =0x0000FFFC - strh r0, [r4, #0x14] - mov r0, #0x0 - strb r0, [r4, #0x16] - b _020026CA - .balign 4 -_02002658: .word gMain -_0200265C: .word gMain + 0x40 -_02002660: .word gTextFlags -_02002664: .word 0x0000F0FD -_02002668: .word 0x000025BD -_0200266C: .word 0x0000FFFE -_02002670: .word 0x0000FE06 -_02002674: .word 0x0000FFFC -_02002678: - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl MsgArray_ControlCodeGetField - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - mov r0, #0xfe - lsl r0, r0, #0x8 - cmp r1, r0 - beq _020026AE - add r0, r0, #0x1 - cmp r1, r0 - bne _020026CA - add r0, r4, #0x0 - mov r1, #0x2 - add r0, #0x24 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - bl FUN_0200284C - ldr r0, [r4, #0x0] - bl MsgArray_SkipControlCode - str r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_020026AE: - add r0, r4, #0x0 - mov r1, #0x3 - add r0, #0x24 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - bl FUN_0200284C - ldr r0, [r4, #0x0] - bl MsgArray_SkipControlCode - str r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_020026CA: - ldr r0, [r4, #0x0] - bl MsgArray_SkipControlCode - str r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x2 - pop {r3-r6, pc} -_020026D8: - add r0, r4, #0x0 - mov r1, #0x2 - add r0, #0x24 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - bl FUN_0200284C - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_020026EC: - add r0, r4, #0x0 - mov r1, #0x3 - add r0, #0x24 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - bl FUN_0200284C - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_02002700: - ldrb r0, [r6, #0x0] - add r1, r5, #0x0 - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - bl FUN_02002D94 - add r5, r0, #0x0 - ldrb r0, [r4, #0xc] - add r2, r5, #0x0 - add r3, r5, #0x0 - str r0, [sp, #0x0] - ldrb r0, [r4, #0xd] - add r2, #0x80 - add r3, #0x81 - str r0, [sp, #0x4] - ldrh r0, [r4, #0x14] - add r1, r5, #0x0 - str r0, [sp, #0x8] - ldrb r2, [r2, #0x0] - ldrb r3, [r3, #0x0] - ldr r0, [r4, #0x4] - bl CopyGlyphToWindow - add r5, #0x80 - ldrb r1, [r5, #0x0] - ldrb r0, [r4, #0xe] - ldrb r2, [r4, #0xc] - add sp, #0xc - add r0, r1, r0 - add r0, r2, r0 - strb r0, [r4, #0xc] - mov r0, #0x0 - pop {r3-r6, pc} -_02002742: - bl FUN_02002B3C - cmp r0, #0x0 - beq _02002756 - add r0, r4, #0x0 - bl FUN_02002A00 - mov r0, #0x0 - add r4, #0x24 - strb r0, [r4, #0x0] -_02002756: - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_0200275C: - bl FUN_02002B18 - cmp r0, #0x0 - beq _02002780 - add r0, r4, #0x0 - bl FUN_02002A00 - ldrb r1, [r4, #0x12] - ldr r0, [r4, #0x4] - bl FillWindowPixelBuffer - ldrb r0, [r4, #0xa] - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xb] - strb r0, [r4, #0xd] - mov r0, #0x0 - add r4, #0x24 - strb r0, [r4, #0x0] -_02002780: - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_02002786: - bl FUN_02002B18 - cmp r0, #0x0 - beq _020027B0 - add r0, r4, #0x0 - bl FUN_02002A00 - ldrb r0, [r4, #0x9] - mov r1, #0x1 - bl GetFontAttribute - ldrb r1, [r4, #0xf] - add r1, r1, r0 - add r0, r4, #0x0 - add r0, #0x27 - strb r1, [r0, #0x0] - ldrb r0, [r4, #0xa] - strb r0, [r4, #0xc] - mov r0, #0x4 - add r4, #0x24 - strb r0, [r4, #0x0] -_020027B0: - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_020027B6: - add r0, #0x27 - ldrb r2, [r0, #0x0] - cmp r2, #0x0 - beq _02002800 - cmp r2, #0x4 - ldrb r5, [r4, #0x12] - bge _020027D8 - lsl r3, r5, #0x4 - orr r3, r5 - lsl r3, r3, #0x18 - ldr r0, [r4, #0x4] - mov r1, #0x0 - lsr r3, r3, #0x18 - bl ScrollWindow - mov r1, #0x0 - b _020027F2 -_020027D8: - lsl r3, r5, #0x4 - orr r3, r5 - lsl r3, r3, #0x18 - ldr r0, [r4, #0x4] - mov r1, #0x0 - mov r2, #0x4 - lsr r3, r3, #0x18 - bl ScrollWindow - add r0, r4, #0x0 - add r0, #0x27 - ldrb r0, [r0, #0x0] - sub r1, r0, #0x4 -_020027F2: - add r0, r4, #0x0 - add r0, #0x27 - strb r1, [r0, #0x0] - ldr r0, [r4, #0x4] - bl CopyWindowToVram - b _02002806 -_02002800: - mov r0, #0x0 - add r4, #0x24 - strb r0, [r4, #0x0] -_02002806: - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_0200280C: - mov r0, #0x0 - add r4, #0x24 - strb r0, [r4, #0x0] - add sp, #0xc - mov r0, #0x3 - pop {r3-r6, pc} -_02002818: - add r0, #0x26 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _0200282C - add r0, r4, #0x0 - add r0, #0x26 - ldrb r0, [r0, #0x0] - add r4, #0x26 - sub r0, r0, #0x1 - b _02002830 -_0200282C: - mov r0, #0x0 - add r4, #0x24 -_02002830: - add sp, #0xc - strb r0, [r4, #0x0] - mov r0, #0x3 - pop {r3-r6, pc} -_02002838: - mov r0, #0x1 - add sp, #0xc - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_02002840 -FUN_02002840: ; 0x02002840 - ldr r1, _02002848 ; =gTextFlags - strh r0, [r1, #0x2] - bx lr - nop -_02002848: .word gTextFlags - - thumb_func_start FUN_0200284C -FUN_0200284C: ; 0x0200284C - ldr r1, _02002874 ; =gTextFlags - add r0, #0x1c - ldrb r1, [r1, #0x0] - lsl r1, r1, #0x1d - lsr r1, r1, #0x1f - beq _02002862 - ldrb r2, [r0, #0x2] - mov r1, #0xff - bic r2, r1 - strb r2, [r0, #0x2] - bx lr -_02002862: - ldrb r2, [r0, #0x1] - mov r1, #0x60 - bic r2, r1 - strb r2, [r0, #0x1] - ldrb r2, [r0, #0x1] - mov r1, #0x1f - bic r2, r1 - strb r2, [r0, #0x1] - bx lr - .balign 4 -_02002874: .word gTextFlags - - thumb_func_start FUN_02002878 -FUN_02002878: ; 0x02002878 - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - ldr r0, _020029F8 ; =gTextFlags - add r4, r5, #0x0 - ldrb r0, [r0, #0x0] - add r4, #0x1c - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _0200288E - b _020029F4 -_0200288E: - ldrb r0, [r4, #0x1] - lsl r1, r0, #0x1b - lsr r2, r1, #0x1b - beq _020028AC - 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, #0x2c - strb r0, [r4, #0x1] - pop {r4-r7, pc} -_020028AC: - ldr r0, [r5, #0x4] - bl GetWindowBgId - str r0, [sp, #0x20] - ldr r0, [r5, #0x4] - bl GetWindowX - str r0, [sp, #0x24] - ldr r0, [r5, #0x4] - bl GetWindowY - str r0, [sp, #0x28] - ldr r0, [r5, #0x4] - bl GetWindowWidth - ldr r1, _020029F8 ; =gTextFlags - ldrh r6, [r1, #0x2] - ldr r1, [sp, #0x28] - add r7, r1, #0x2 - ldr r1, [sp, #0x24] - add r2, r6, #0x0 - add r0, r1, r0 - str r0, [sp, #0x1c] - add r0, r0, #0x1 - str r0, [sp, #0x18] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - add r2, #0x12 - mov r12, r2 - ldrb r2, [r4, #0x1] - ldr r0, [r5, #0x4] - ldr r1, [sp, #0x20] - lsl r2, r2, #0x19 - lsr r3, r2, #0x1e - ldr r2, _020029FC ; =UNK_020ECB50 - ldr r0, [r0, #0x0] - ldrb r2, [r2, r3] - mov r3, r12 - lsl r2, r2, #0x2 - add r2, r3, r2 - 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] - ldr r1, [sp, #0x20] - add r0, r0, #0x2 - str r0, [sp, #0x10] - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldrb r2, [r4, #0x1] - add r7, r6, #0x0 - ldr r0, [r5, #0x4] - lsl r2, r2, #0x19 - lsr r3, r2, #0x1e - ldr r2, _020029FC ; =UNK_020ECB50 - add r7, #0x13 - ldrb r2, [r2, r3] - ldr r3, [sp, #0x10] - ldr r0, [r0, #0x0] - lsl r2, r2, #0x2 - add r2, r7, r2 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [sp, #0x28] - add r7, r6, #0x0 - add r0, r0, #0x3 - str r0, [sp, #0x14] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldrb r2, [r4, #0x1] - ldr r0, [r5, #0x4] - add r7, #0x14 - lsl r2, r2, #0x19 - lsr r3, r2, #0x1e - ldr r2, _020029FC ; =UNK_020ECB50 - ldr r0, [r0, #0x0] - ldrb r2, [r2, r3] - ldr r3, [sp, #0x18] - ldr r1, [sp, #0x20] - lsl r2, r2, #0x2 - add r2, r7, r2 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - 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, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldrb r2, [r4, #0x1] - ldr r0, [r5, #0x4] - ldr r1, [sp, #0x20] - lsl r2, r2, #0x19 - lsr r3, r2, #0x1e - ldr r2, _020029FC ; =UNK_020ECB50 - ldr r0, [r0, #0x0] - ldrb r2, [r2, r3] - ldr r3, [sp, #0x10] - lsl r2, r2, #0x2 - 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, #0x4] - ldr r1, [sp, #0x20] - ldr r0, [r0, #0x0] - bl BgCommitTilemapBufferToVram - ldrb r1, [r4, #0x1] - mov r0, #0x1f - bic r1, r0 - mov r0, #0x8 - orr r0, r1 - strb r0, [r4, #0x1] - ldrb r2, [r4, #0x1] - mov r1, #0x60 - add r0, r2, #0x0 - bic r0, r1 - lsl r1, r2, #0x19 - lsr r1, r1, #0x1e - add r1, r1, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1e - lsr r1, r1, #0x19 - orr r0, r1 - strb r0, [r4, #0x1] -_020029F4: - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 -_020029F8: .word gTextFlags -_020029FC: .word UNK_020ECB50 - - thumb_func_start FUN_02002A00 -FUN_02002A00: ; 0x02002A00 - push {r3-r7, lr} - sub sp, #0x18 - add r5, r0, #0x0 - ldr r0, [r5, #0x4] - bl GetWindowBgId - str r0, [sp, #0x10] - ldr r0, [r5, #0x4] - bl GetWindowX - str r0, [sp, #0x14] - ldr r0, [r5, #0x4] - bl GetWindowY - add r6, r0, #0x0 - ldr r0, [r5, #0x4] - bl GetWindowWidth - ldr r1, _02002A90 ; =gTextFlags - add r7, r6, #0x2 - ldrh r4, [r1, #0x2] - ldr r1, [sp, #0x14] - add r6, r1, r0 - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - mov r0, #0x2 - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r0, [r5, #0x4] - add r2, r4, #0x0 - add r2, #0xa - add r3, r6, #0x1 - lsl r2, r2, #0x10 - lsl r3, r3, #0x18 - ldr r0, [r0, #0x0] - 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, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - mov r0, #0x2 - str r0, [sp, #0x8] - mov r0, #0x10 - str r0, [sp, #0xc] - ldr r0, [r5, #0x4] - add r4, #0xb - add r3, r6, #0x2 - lsl r2, r4, #0x10 - lsl r3, r3, #0x18 - ldr r0, [r0, #0x0] - ldr r1, [sp, #0x10] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl FillBgTilemapRect - ldr r0, [r5, #0x4] - ldr r1, [sp, #0x10] - ldr r0, [r0, #0x0] - bl BgCommitTilemapBufferToVram - add sp, #0x18 - pop {r3-r7, pc} - nop -_02002A90: .word gTextFlags - - thumb_func_start FUN_02002A94 -FUN_02002A94: ; 0x02002A94 - push {r3, lr} - ldr r0, _02002ACC ; =gMain - ldr r1, [r0, #0x48] - mov r0, #0x3 - tst r0, r1 - bne _02002AB2 - ldr r0, _02002AD0 ; =gMain + 0x40 - ldrh r0, [r0, #0x20] - cmp r0, #0x0 - beq _02002AC6 - ldr r0, _02002AD4 ; =gTextFlags - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - beq _02002AC6 -_02002AB2: - ldr r0, _02002AD8 ; =0x000005DC - bl FUN_020054C8 - ldr r1, _02002AD4 ; =gTextFlags - mov r0, #0x80 - ldrb r2, [r1, #0x0] - orr r0, r2 - strb r0, [r1, #0x0] - mov r0, #0x1 - pop {r3, pc} -_02002AC6: - mov r0, #0x0 - pop {r3, pc} - nop -_02002ACC: .word gMain -_02002AD0: .word gMain + 0x40 -_02002AD4: .word gTextFlags -_02002AD8: .word 0x000005DC - - thumb_func_start FUN_02002ADC -FUN_02002ADC: ; 0x02002ADC - push {r4, lr} - add r2, r0, #0x0 - add r2, #0x1c - ldrb r1, [r2, #0x2] - add r4, r1, #0x0 - cmp r4, #0x64 - bne _02002AEE - mov r0, #0x1 - pop {r4, pc} -_02002AEE: - mov r3, #0xff - bic r1, r3 - add r3, r4, #0x1 - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - orr r1, r3 - strb r1, [r2, #0x2] - ldr r1, _02002B14 ; =gTextFlags - ldrb r1, [r1, #0x0] - lsl r1, r1, #0x1a - lsr r1, r1, #0x1f - beq _02002B10 - bl FUN_02002A94 - pop {r4, pc} -_02002B10: - mov r0, #0x0 - pop {r4, pc} - .balign 4 -_02002B14: .word gTextFlags - - thumb_func_start FUN_02002B18 -FUN_02002B18: ; 0x02002B18 - push {r4, lr} - ldr r1, _02002B38 ; =gTextFlags - add r4, r0, #0x0 - ldrb r1, [r1, #0x0] - lsl r1, r1, #0x1d - lsr r1, r1, #0x1f - beq _02002B2C - bl FUN_02002ADC - pop {r4, pc} -_02002B2C: - bl FUN_02002878 - add r0, r4, #0x0 - bl FUN_02002A94 - pop {r4, pc} - .balign 4 -_02002B38: .word gTextFlags - - thumb_func_start FUN_02002B3C -FUN_02002B3C: ; 0x02002B3C - push {r3, lr} - ldr r1, _02002B5C ; =gTextFlags - ldrb r1, [r1, #0x0] - lsl r1, r1, #0x1d - lsr r1, r1, #0x1f - beq _02002B52 - bl FUN_02002ADC - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} -_02002B52: - bl FUN_02002A94 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - .balign 4 -_02002B5C: .word gTextFlags - - thumb_func_start FUN_02002B60 -FUN_02002B60: ; 0x02002B60 - ldr r2, _02002B78 ; =gTextFlags - mov r1, #0x1 - ldrb r3, [r2, #0x0] - lsl r0, r0, #0x18 - bic r3, r1 - lsr r1, r0, #0x18 - mov r0, #0x1 - and r0, r1 - orr r0, r3 - strb r0, [r2, #0x0] - bx lr - nop -_02002B78: .word gTextFlags - - thumb_func_start FUN_02002B7C -FUN_02002B7C: ; 0x02002B7C - push {r3-r4} - ldr r1, _02002BB4 ; =gTextFlags - mov r3, #0x4 - ldrb r2, [r1, #0x0] - mov r4, #0x1 - bic r2, r3 - add r3, r0, #0x0 - 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, #0x1 - and r0, r4 - strb r2, [r1, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - lsl r0, r0, #0x1f - ldrb r2, [r1, #0x0] - mov r3, #0x20 - lsr r0, r0, #0x1a - bic r2, r3 - orr r0, r2 - strb r0, [r1, #0x0] - pop {r3-r4} - bx lr - nop -_02002BB4: .word gTextFlags - - thumb_func_start FUN_02002BB8 -FUN_02002BB8: ; 0x02002BB8 - ldr r2, _02002BD0 ; =gTextFlags - lsl r0, r0, #0x18 - ldrb r3, [r2, #0x0] - lsr r0, r0, #0x18 - mov r1, #0x10 - lsl r0, r0, #0x1f - bic r3, r1 - lsr r0, r0, #0x1b - orr r0, r3 - strb r0, [r2, #0x0] - bx lr - nop -_02002BD0: .word gTextFlags - - thumb_func_start FUN_02002BD4 -FUN_02002BD4: ; 0x02002BD4 - ldr r0, _02002BE0 ; =gTextFlags - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x19 - lsr r0, r0, #0x1f - bx lr - nop -_02002BE0: .word gTextFlags - - thumb_func_start FUN_02002BE4 -FUN_02002BE4: ; 0x02002BE4 - ldr r1, _02002BF0 ; =gTextFlags - mov r0, #0x40 - ldrb r2, [r1, #0x0] - bic r2, r0 - strb r2, [r1, #0x0] - bx lr - .balign 4 -_02002BF0: .word gTextFlags - - thumb_func_start FUN_02002BF4 -FUN_02002BF4: ; 0x02002BF4 - ldr r0, _02002C00 ; =gTextFlags - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - bx lr - nop -_02002C00: .word gTextFlags - - thumb_func_start FUN_02002C04 -FUN_02002C04: ; 0x02002C04 - ldr r1, _02002C10 ; =gTextFlags - mov r0, #0x80 - ldrb r2, [r1, #0x0] - bic r2, r0 - strb r2, [r1, #0x0] - bx lr - .balign 4 -_02002C10: .word gTextFlags diff --git a/arm9/src/unk_020023C0.c b/arm9/src/unk_020023C0.c new file mode 100644 index 00000000..4c317c70 --- /dev/null +++ b/arm9/src/unk_020023C0.c @@ -0,0 +1,525 @@ +#include "global.h" +#include "game_init.h" +#include "string_util.h" +#include "text.h" +#include "unk_0201B8B8.h" + +u16 unk00; + +typedef struct +{ + u8 canABSpeedUpPrint : 1; + u8 useAlternateDownArrow : 1; + u8 autoScroll : 1; + u8 forceMidTextSpeed : 1; + u8 unk0_4 : 1; + u8 unk0_5 : 1; + u8 unk0_6 : 1; + u8 unk0_7 : 1; + u8 unk1; +} TextFlags; + +TextFlags gTextFlags; + +const u8 UNK_020ECB50[] = { 0x00, 0x01, 0x02, 0x01 }; + +struct TextPrinterSubStruct +{ + u8 glyphId : 4; // 0x14 + u8 hasPrintBeenSpedUp : 1; + u8 unk : 3; + u8 downArrowDelay : 5; + u8 downArrowYPosIdx : 2; + u8 hasGlyphIdBeenSet : 1; + u8 autoScrollDelay : 8; +}; + +extern void FUN_0200284C(struct TextPrinter *printer); +extern const char *FUN_02002D94(u8, u16); +extern u8 FUN_02002B3C(struct TextPrinter *printer); +extern void FUN_02002A00(struct TextPrinter *printer); +extern u32 FUN_02002B18(struct TextPrinter *printer); + +THUMB_FUNC u32 RenderText(struct TextPrinter *printer) +{ + + struct TextPrinterSubStruct *subStruct = + (struct TextPrinterSubStruct *)(&printer->subStructFields); + u16 currentChar; + u16 field; + + switch (printer->state) + { + case 0: + if (((gMain.heldKeys & 3) != 0 && subStruct->hasPrintBeenSpedUp != 0) || + (gMain.touchHeld != 0 && gTextFlags.unk0_4 != 0)) + { + printer->delayCounter = 0; + if (printer->textSpeedBottom != 0) + { + gTextFlags.unk0_6 = 1; + } + } + + if (printer->delayCounter && printer->textSpeedBottom) + { + printer->delayCounter--; + + if (gTextFlags.canABSpeedUpPrint != 0) + { + if ((gMain.newKeys & 3) || (gMain.touchNew != 0 && gTextFlags.unk0_4)) + { + subStruct->hasPrintBeenSpedUp = 1; + printer->delayCounter = 0; + } + } + + return 3; + } + + printer->delayCounter = printer->textSpeedBottom; + currentChar = *printer->printerTemplate.currentChar.raw; + printer->printerTemplate.currentChar.raw++; + + GF_ASSERT(currentChar != 0xF100); + + switch (currentChar) + { + case EOS: + return 1; + case 0xE000: + printer->printerTemplate.currentX = printer->printerTemplate.x; + s32 fontAttribute = GetFontAttribute(printer->printerTemplate.fontId, 1); + + printer->printerTemplate.currentY += + printer->printerTemplate.lineSpacing + fontAttribute; + + return 2; + + case 0xF0FD: + printer->printerTemplate.currentChar.raw++; + return 2; + case 0xFFFE: + printer->printerTemplate.currentChar.raw--; + switch ((u16)MsgArray_GetControlCode(printer->printerTemplate.currentChar.raw)) + { + case 0xFF00: + u16 field = + MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + if (field == 0xff) + { + u8 r2 = printer->printerTemplate.unk4; + printer->printerTemplate.unk4 = + (printer->printerTemplate.fgColor - 1) / 2 + 0x64; + + if (!(r2 >= 0x64 && r2 < 0x6b)) + { + break; + } + + field = r2 - 0x64; + } + else + { + if (field >= 0x64) + { + printer->printerTemplate.unk4 = field; + break; + } + } + + printer->printerTemplate.fgColor = field * 2 + 1; + printer->printerTemplate.shadowColor = field * 2 + 2; + + GenerateFontHalfRowLookupTable(printer->printerTemplate.fgColor, + printer->printerTemplate.bgColor, + printer->printerTemplate.shadowColor); + + break; + + case 0x200: + field = MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + + FUN_0201C1EC(printer, + printer->printerTemplate.currentX, + printer->printerTemplate.currentY, + field); + if (printer->textSpeedTop != 0) + { + CopyWindowToVram(printer->printerTemplate.window); + } + + break; + case 0x201: + printer->delayCounter = + MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + printer->printerTemplate.currentChar.raw = + MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw); + printer->state = 6; + + return 3; + case 0x202: + printer->Unk2A = + MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + printer->printerTemplate.currentChar.raw = + MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw); + + return 3; + case 0x203: + printer->printerTemplate.currentX = + MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + break; + case 0x204: + printer->printerTemplate.currentY = + MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + break; + + case 0xFF01: + field = MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + + switch (field) + { + case 100: + printer->printerTemplate.unk2 = 0; + printer->printerTemplate.unk3 = 0; + break; + case 200: + printer->printerTemplate.unk2 = 0xFFFC; + printer->printerTemplate.unk3 = 0; + break; + } + + break; + + case 0xFE06: + field = MsgArray_ControlCodeGetField(printer->printerTemplate.currentChar.raw, 0); + if (field != 0xFE00) + { + if (field != 0xFE01) + { + break; + } + + printer->state = 2; + FUN_0200284C(printer); + printer->printerTemplate.currentChar.raw = + MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw); + + return 3; + } + + printer->state = 3; + FUN_0200284C(printer); + printer->printerTemplate.currentChar.raw = + MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw); + + return 3; + } + + printer->printerTemplate.currentChar.raw = + MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw); + return 2; + + case 0x25BC: + printer->state = 2; + FUN_0200284C(printer); + return 3; + + case 0x25BD: + printer->state = 3; + FUN_0200284C(printer); + return 3; + } + + const char *r5 = FUN_02002D94(subStruct->glyphId, currentChar); + CopyGlyphToWindow(printer->printerTemplate.window, + r5, + r5[0x80], + r5[0x81], + printer->printerTemplate.currentX, + printer->printerTemplate.currentY, + printer->printerTemplate.unk2); + + printer->printerTemplate.currentX += r5[0x80] + printer->printerTemplate.letterSpacing; + + return 0; + case 1: + if (FUN_02002B3C(printer) != 0) + { + FUN_02002A00(printer); + + printer->state = 0; + } + + return 3; + case 2: + if (FUN_02002B18(printer) != 0) + { + FUN_02002A00(printer); + FillWindowPixelBuffer( + printer->printerTemplate.window, printer->printerTemplate.bgColor); + printer->printerTemplate.currentX = printer->printerTemplate.x; + printer->printerTemplate.currentY = printer->printerTemplate.y; + printer->state = 0; + } + + return 3; + case 3: + if (FUN_02002B18(printer) != 0) + { + FUN_02002A00(printer); + printer->scrollDistance = GetFontAttribute(printer->printerTemplate.fontId, 1) + + printer->printerTemplate.lineSpacing; + printer->printerTemplate.currentX = printer->printerTemplate.x; + printer->state = 4; + } + + return 3; + case 4: + if (printer->scrollDistance != 0) + { + printer->printerTemplate.bgColor; + if ((int)printer->scrollDistance < 4) + { + ScrollWindow(printer->printerTemplate.window, + 0, + printer->scrollDistance, + (printer->printerTemplate.bgColor | (printer->printerTemplate.bgColor << 4))); + printer->scrollDistance = 0; + } + else + { + ScrollWindow(printer->printerTemplate.window, + 0, + 4, + (printer->printerTemplate.bgColor | (printer->printerTemplate.bgColor << 4))); + + printer->scrollDistance -= 4; + } + + CopyWindowToVram(printer->printerTemplate.window); + } + else + { + printer->state = 0; + } + + return 3; + case 5: + printer->state = 0; + return 3; + case 6: + if (printer->delayCounter != 0) + { + printer->delayCounter--; + } + else + { + printer->state = 0; + } + + return 3; + } + + return 1; +} + +THUMB_FUNC void FUN_02002840(u16 flag) +{ + unk00 = flag; +} + +THUMB_FUNC void FUN_0200284C(struct TextPrinter *printer) +{ + struct TextPrinterSubStruct *subStruct = + (struct TextPrinterSubStruct *)(&printer->subStructFields); + + if (gTextFlags.autoScroll) + { + subStruct->autoScrollDelay = 0; + return; + } + + subStruct->downArrowYPosIdx = 0; + subStruct->downArrowDelay = 0; +} + +THUMB_FUNC void FUN_02002878(struct TextPrinter *printer) +{ + struct TextPrinterSubStruct *subStruct = + (struct TextPrinterSubStruct *)(&printer->subStructFields); + + if (gTextFlags.autoScroll) + { + return; + } + + if (subStruct->downArrowDelay != 0) + { + subStruct->downArrowDelay--; + return; + } + + u8 bg_id = GetWindowBgId(printer->printerTemplate.window); + u8 x = GetWindowX(printer->printerTemplate.window); + u8 y = GetWindowY(printer->printerTemplate.window); + u8 width = GetWindowWidth(printer->printerTemplate.window); + u16 r6 = unk00; + + FillBgTilemapRect(printer->printerTemplate.window->bgConfig, + bg_id, + r6 + 18 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4, + x + width + 1, + y + 2, + 1, + 1, + 0x10); + + FillBgTilemapRect(printer->printerTemplate.window->bgConfig, + bg_id, + r6 + 19 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4, + x + width + 2, + y + 2, + 1, + 1, + 0x10); + FillBgTilemapRect(printer->printerTemplate.window->bgConfig, + bg_id, + r6 + 20 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4, + x + width + 1, + y + 3, + 1, + 1, + 0x10); + FillBgTilemapRect(printer->printerTemplate.window->bgConfig, + bg_id, + r6 + 21 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4, + x + width + 2, + y + 3, + 1, + 1, + 0x10); + + BgCommitTilemapBufferToVram(printer->printerTemplate.window->bgConfig, bg_id); + subStruct->downArrowDelay = 8; + subStruct->downArrowYPosIdx++; +} + +THUMB_FUNC void FUN_02002A00(struct TextPrinter *printer) +{ + u8 bg_id = GetWindowBgId(printer->printerTemplate.window); + u8 x = GetWindowX(printer->printerTemplate.window); + u8 y = GetWindowY(printer->printerTemplate.window); + u8 width = GetWindowWidth(printer->printerTemplate.window); + u16 r6 = unk00; + + FillBgTilemapRect(printer->printerTemplate.window->bgConfig, + bg_id, + r6 + 10, + x + width + 1, + y + 2, + 1, + 2, + 0x10); + FillBgTilemapRect(printer->printerTemplate.window->bgConfig, + bg_id, + r6 + 11, + x + width + 2, + y + 2, + 1, + 2, + 0x10); + BgCommitTilemapBufferToVram(printer->printerTemplate.window->bgConfig, bg_id); +} + +extern void FUN_020054C8(u16); + +THUMB_FUNC u32 FUN_02002A94(struct TextPrinter *printer) +{ + if ((gMain.newKeys & 3) != 0 || (gMain.touchNew != 0 && gTextFlags.unk0_4 != 0)) + { + FUN_020054C8(0x5DC); + + gTextFlags.unk0_7 = 1; + + return 1; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02002ADC(struct TextPrinter *printer) +{ + struct TextPrinterSubStruct *subStruct = + (struct TextPrinterSubStruct *)(&printer->subStructFields); + + if (subStruct->autoScrollDelay == 100) + { + return 1; + } + + subStruct->autoScrollDelay++; + if (gTextFlags.unk0_5) + { + return FUN_02002A94(printer); + } + + return 0; +} + +THUMB_FUNC u32 FUN_02002B18(struct TextPrinter *printer) +{ + if (gTextFlags.autoScroll) + { + return FUN_02002ADC(printer); + } + FUN_02002878(printer); + + return FUN_02002A94(printer); +} + +THUMB_FUNC u8 FUN_02002B3C(struct TextPrinter *printer) +{ + if (gTextFlags.autoScroll) + { + return FUN_02002ADC(printer); + } + + return FUN_02002A94(printer); +} + +THUMB_FUNC void FUN_02002B60(u32 param0) +{ + gTextFlags.canABSpeedUpPrint = param0; +} + +THUMB_FUNC void FUN_02002B7C(s32 param0) +{ + gTextFlags.autoScroll = param0 & 1; + gTextFlags.unk0_5 = (param0 >> 1) & 1; +} + +THUMB_FUNC void FUN_02002BB8(u32 param0) +{ + gTextFlags.unk0_4 = param0; +} + +THUMB_FUNC u8 FUN_02002BD4() +{ + return gTextFlags.unk0_6; +} + +THUMB_FUNC void FUN_02002BE4() +{ + gTextFlags.unk0_6 = 0; +} + +THUMB_FUNC u8 FUN_02002BF4() +{ + return gTextFlags.unk0_7; +} + +THUMB_FUNC void FUN_02002C04() +{ + gTextFlags.unk0_7 = 0; +} diff --git a/arm9/src/unk_0201B8B8.c b/arm9/src/unk_0201B8B8.c index c7f77f87..b8e978f2 100644 --- a/arm9/src/unk_0201B8B8.c +++ b/arm9/src/unk_0201B8B8.c @@ -14,7 +14,7 @@ const u16 * MsgArray_SkipControlCode(const u16 * r4) return r4; } -u16 MsgArray_GetControlCode(const u16 * r4) +u32 MsgArray_GetControlCode(const u16 * r4) { GF_ASSERT(*r4 == 0xFFFE); return r4[1]; @@ -25,7 +25,7 @@ BOOL MsgArray_ControlCodeIsStrVar(const u16 * r4) return (MsgArray_GetControlCode(r4) & 0xFF00) == 0x100; } -u16 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4) +u32 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4) { GF_ASSERT(*r5 == 0xFFFE); GF_ASSERT(r4 < r5[2]); diff --git a/include/unk_0201B8B8.h b/include/unk_0201B8B8.h index 13bc217b..26dd8017 100644 --- a/include/unk_0201B8B8.h +++ b/include/unk_0201B8B8.h @@ -2,8 +2,8 @@ #define POKEDIAMOND_UNK_0201B8B88_H const u16 * MsgArray_SkipControlCode(const u16 * r4); -u16 MsgArray_GetControlCode(const u16 * r4); +u32 MsgArray_GetControlCode(const u16 * r4); BOOL MsgArray_ControlCodeIsStrVar(const u16 * r4); -u16 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4); +u32 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4); #endif //POKEDIAMOND_UNK_0201B8B88_H |