diff options
50 files changed, 525 insertions, 1123 deletions
diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index 9ced92c0..a29ee203 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -12209,7 +12209,7 @@ FUN_0203FA58: ; 0x0203FA58 str r0, [sp, #0x0] ldr r1, [sp, #0x0] add r0, r7, #0x0 - bl FUN_02021CE0 + bl StringCompare cmp r0, #0x0 bne _0203FB24 mov r0, #0x1 diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s index cb148e1a..16052c26 100644 --- a/arm9/asm/scrcmd_4.s +++ b/arm9/asm/scrcmd_4.s @@ -893,7 +893,7 @@ FUN_02040DEC: ; 0x02040DEC bl FUN_02024F0C add r1, r0, #0x0 add r0, r4, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, _02040E48 ; =gGameLanguage mov r3, #0x0 ldrb r0, [r0, #0x0] diff --git a/arm9/asm/scrcmd_9.s b/arm9/asm/scrcmd_9.s index c4315fb0..ab9a501c 100644 --- a/arm9/asm/scrcmd_9.s +++ b/arm9/asm/scrcmd_9.s @@ -527,7 +527,7 @@ FUN_0204224C: ; 0x0204224C bl String_ctor add r1, r7, #0x0 add r4, r0, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, [sp, #0x24] ldr r3, [sp, #0x8] str r0, [sp, #0x0] diff --git a/arm9/asm/unk_02002F08.s b/arm9/asm/unk_02002F08.s index a1fdc78f..c5c300e7 100644 --- a/arm9/asm/unk_02002F08.s +++ b/arm9/asm/unk_02002F08.s @@ -29,7 +29,7 @@ _02002F22: add r0, r0, r4 add r0, #0x94 ldr r0, [r0, #0x0] - bl FUN_02021934 + bl StringGetWidth pop {r4-r6, pc} .balign 4 _02002F3C: .word UNK_02106FC8 @@ -113,7 +113,7 @@ _02002FB4: add r0, r0, r4 add r0, #0x94 ldr r0, [r0, #0x0] - bl FUN_0202199C + bl StringGetWidthNoSpacing pop {r3-r5, pc} .balign 4 _02002FCC: .word UNK_02106FC8 diff --git a/arm9/asm/unk_0200AA80.s b/arm9/asm/unk_0200AA80.s index 02fa918d..f8e8e769 100644 --- a/arm9/asm/unk_0200AA80.s +++ b/arm9/asm/unk_0200AA80.s @@ -206,7 +206,7 @@ FUN_0200ABC0: ; 0x0200ABC0 bl FUN_0202398C add r1, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r2, [r5, #0xc] add r0, r5, #0x0 add r1, r4, #0x0 @@ -225,7 +225,7 @@ FUN_0200ABE4: ; 0x0200ABE4 bl FUN_02024EE8 add r1, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r2, [r5, #0xc] add r0, r5, #0x0 add r1, r4, #0x0 @@ -906,7 +906,7 @@ FUN_0200B144: ; 0x0200B144 add r2, #0x14 add r4, r1, #0x0 add r1, r2, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r2, [r5, #0xc] add r0, r5, #0x0 add r1, r4, #0x0 @@ -1658,7 +1658,7 @@ FUN_0200B708: ; 0x0200B708 bl FUN_020287A8 add r1, r0, #0x0 add r0, r4, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString mov r0, #0x1 str r0, [sp, #0x0] ldr r0, [sp, #0x8] @@ -1713,11 +1713,11 @@ FUN_0200B7A8: ; 0x0200B7A8 ldr r2, [r0, #0x8] lsl r0, r1, #0x3 add r0, r2, r0 - ldr r3, _0200B7B4 ; =FUN_02021FF8 + ldr r3, _0200B7B4 ; =StrUpperFirstChar ldr r0, [r0, #0x4] bx r3 .balign 4 -_0200B7B4: .word FUN_02021FF8 +_0200B7B4: .word StrUpperFirstChar thumb_func_start FUN_0200B7B8 FUN_0200B7B8: ; 0x0200B7B8 @@ -1771,7 +1771,7 @@ _0200B81E: ldrh r1, [r4, #0x0] add r0, r6, #0x0 add r4, r4, #0x2 - bl FUN_02021FB0 + bl StrAddChar cmp r4, r5 blo _0200B81E b _0200B838 @@ -1779,7 +1779,7 @@ _0200B82E: ldrh r1, [r5, #0x0] add r0, r6, #0x0 add r5, r5, #0x2 - bl FUN_02021FB0 + bl StrAddChar _0200B838: ldrh r1, [r5, #0x0] ldr r0, _0200B844 ; =0x0000FFFF diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s index 0f39b4e8..36770df2 100644 --- a/arm9/asm/unk_02012CC8.s +++ b/arm9/asm/unk_02012CC8.s @@ -1503,7 +1503,7 @@ FUN_02013690: ; 0x02013690 bl String_ctor ldr r1, _020136BC ; =UNK_020ED548 str r0, [r4, #0x4] - bl FUN_02021E28 + bl CopyU16ArrayToString _020136B2: add r0, r4, #0x0 pop {r3-r5, pc} diff --git a/arm9/asm/unk_02021934.s b/arm9/asm/unk_02021934.s deleted file mode 100644 index 337bae11..00000000 --- a/arm9/asm/unk_02021934.s +++ /dev/null @@ -1,983 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020EE67C -UNK_020EE67C: ; 0x020EE67C - .byte 0xA2, 0x00, 0xA3, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, 0xA8, 0x00, 0xA9, 0x00 - .byte 0xAA, 0x00, 0xAB, 0x00 - - .global UNK_020EE690 -UNK_020EE690: ; 0x020EE690 - .byte 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x28, 0x01 - - .global UNK_020EE6A0 -UNK_020EE6A0: ; 0x020EE6A0 - .byte 0x29, 0x01, 0x2A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00 - .byte 0xE8, 0x03, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0xA0, 0x86, 0x01, 0x00, 0x40, 0x42, 0x0F, 0x00 - .byte 0x80, 0x96, 0x98, 0x00, 0x00, 0xE1, 0xF5, 0x05, 0x00, 0xCA, 0x9A, 0x3B - - .text - - thumb_func_start FUN_02021934 -FUN_02021934: ; 0x02021934 - push {r3-r7, lr} - add r5, r1, #0x0 - ldrh r1, [r5, #0x0] - add r7, r0, #0x0 - mov r4, #0x0 - ldr r0, _02021994 ; =0x0000FFFF - add r6, r2, #0x0 - str r4, [sp, #0x0] - cmp r1, r0 - beq _02021986 -_02021948: - ldr r0, _02021998 ; =0x0000FFFE - cmp r1, r0 - bne _02021958 - add r0, r5, #0x0 - bl FUN_0201B8B8 - add r5, r0, #0x0 - b _0202197E -_02021958: - mov r0, #0xe - lsl r0, r0, #0xc - cmp r1, r0 - bne _02021970 - ldr r0, [sp, #0x0] - sub r1, r4, r6 - cmp r0, r1 - bhs _0202196A - str r1, [sp, #0x0] -_0202196A: - mov r4, #0x0 - add r5, r5, #0x2 - b _0202197E -_02021970: - ldr r2, [r7, #0x70] - add r0, r7, #0x0 - sub r1, r1, #0x1 - blx r2 - add r0, r6, r0 - add r4, r4, r0 - add r5, r5, #0x2 -_0202197E: - ldrh r1, [r5, #0x0] - ldr r0, _02021994 ; =0x0000FFFF - cmp r1, r0 - bne _02021948 -_02021986: - ldr r0, [sp, #0x0] - sub r1, r4, r6 - cmp r0, r1 - bhs _02021990 - str r1, [sp, #0x0] -_02021990: - ldr r0, [sp, #0x0] - pop {r3-r7, pc} - .balign 4 -_02021994: .word 0x0000FFFF -_02021998: .word 0x0000FFFE - - thumb_func_start FUN_0202199C -FUN_0202199C: ; 0x0202199C - push {r3-r7, lr} - add r5, r1, #0x0 - ldrh r1, [r5, #0x0] - add r6, r0, #0x0 - ldr r0, _020219EC ; =0x0000FFFF - mov r4, #0x0 - cmp r1, r0 - beq _020219E8 - sub r7, r0, #0x1 -_020219AE: - cmp r1, r7 - bne _020219D4 - add r0, r5, #0x0 - bl FUN_0201B8E0 - ldr r1, _020219F0 ; =0x00000203 - cmp r0, r1 - bne _020219CA - add r0, r5, #0x0 - mov r1, #0x0 - bl FUN_0201B914 - add r4, r0, #0x0 - sub r4, #0xc -_020219CA: - add r0, r5, #0x0 - bl FUN_0201B8B8 - add r5, r0, #0x0 - b _020219E0 -_020219D4: - ldr r2, [r6, #0x70] - add r0, r6, #0x0 - sub r1, r1, #0x1 - blx r2 - add r4, r4, r0 - add r5, r5, #0x2 -_020219E0: - ldrh r1, [r5, #0x0] - ldr r0, _020219EC ; =0x0000FFFF - cmp r1, r0 - bne _020219AE -_020219E8: - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 -_020219EC: .word 0x0000FFFF -_020219F0: .word 0x00000203 - - thumb_func_start String_ctor -String_ctor: ; 0x020219F4 - push {r4, lr} - add r4, r0, #0x0 - add r0, r1, #0x0 - lsl r1, r4, #0x1 - add r1, #0xa - bl AllocFromHeap - cmp r0, #0x0 - beq _02021A14 - ldr r1, _02021A18 ; =0xB6F8D2EC - str r1, [r0, #0x4] - strh r4, [r0, #0x0] - mov r1, #0x0 - strh r1, [r0, #0x2] - ldr r1, _02021A1C ; =0x0000FFFF - strh r1, [r0, #0x8] -_02021A14: - pop {r4, pc} - nop -_02021A18: .word 0xB6F8D2EC -_02021A1C: .word 0x0000FFFF - - thumb_func_start String_dtor -String_dtor: ; 0x02021A20 - push {r4, lr} - add r4, r0, #0x0 - bne _02021A2A - bl ErrorHandling -_02021A2A: - ldr r1, [r4, #0x4] - ldr r0, _02021A44 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021A36 - bl ErrorHandling -_02021A36: - ldr r0, _02021A48 ; =0xB6F8D2ED - str r0, [r4, #0x4] - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - nop -_02021A44: .word 0xB6F8D2EC -_02021A48: .word 0xB6F8D2ED - - thumb_func_start StringSetEmpty -StringSetEmpty: ; 0x02021A4C - push {r4, lr} - add r4, r0, #0x0 - bne _02021A56 - bl ErrorHandling -_02021A56: - ldr r1, [r4, #0x4] - ldr r0, _02021A6C ; =0xB6F8D2EC - cmp r1, r0 - beq _02021A62 - bl ErrorHandling -_02021A62: - mov r0, #0x0 - strh r0, [r4, #0x2] - ldr r0, _02021A70 ; =0x0000FFFF - strh r0, [r4, #0x8] - pop {r4, pc} - .balign 4 -_02021A6C: .word 0xB6F8D2EC -_02021A70: .word 0x0000FFFF - - thumb_func_start StringCopy -StringCopy: ; 0x02021A74 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02021A82 - bl ErrorHandling -_02021A82: - ldr r1, [r5, #0x4] - ldr r0, _02021AC8 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021A8E - bl ErrorHandling -_02021A8E: - cmp r4, #0x0 - bne _02021A96 - bl ErrorHandling -_02021A96: - ldr r1, [r4, #0x4] - ldr r0, _02021AC8 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021AA2 - bl ErrorHandling -_02021AA2: - ldrh r2, [r4, #0x2] - ldrh r0, [r5, #0x0] - cmp r0, r2 - bls _02021AC0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r2, #0x1 - add r0, #0x8 - add r1, #0x8 - lsl r2, r2, #0x1 - bl memcpy - ldrh r0, [r4, #0x2] - strh r0, [r5, #0x2] - pop {r3-r5, pc} -_02021AC0: - bl ErrorHandling - pop {r3-r5, pc} - nop -_02021AC8: .word 0xB6F8D2EC - - thumb_func_start StringDup -StringDup: ; 0x02021ACC - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02021ADA - bl ErrorHandling -_02021ADA: - ldr r1, [r5, #0x4] - ldr r0, _02021B00 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021AE6 - bl ErrorHandling -_02021AE6: - ldrh r0, [r5, #0x2] - add r1, r4, #0x0 - add r0, r0, #0x1 - bl String_ctor - add r4, r0, #0x0 - beq _02021AFA - add r1, r5, #0x0 - bl StringCopy -_02021AFA: - add r0, r4, #0x0 - pop {r3-r5, pc} - nop -_02021B00: .word 0xB6F8D2EC - - thumb_func_start String16_FormatInteger -String16_FormatInteger: ; 0x02021B04 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldr r0, [sp, #0x20] - add r6, r1, #0x0 - add r7, r3, #0x0 - str r2, [sp, #0x0] - str r0, [sp, #0x20] - cmp r5, #0x0 - bne _02021B1C - bl ErrorHandling -_02021B1C: - ldr r1, [r5, #0x4] - ldr r0, _02021C1C ; =0xB6F8D2EC - cmp r1, r0 - beq _02021B28 - bl ErrorHandling -_02021B28: - cmp r6, #0x0 - bge _02021B30 - mov r4, #0x1 - b _02021B32 -_02021B30: - mov r4, #0x0 -_02021B32: - ldr r0, [sp, #0x0] - ldrh r1, [r5, #0x0] - add r0, r0, r4 - cmp r1, r0 - bls _02021C14 - ldr r0, [sp, #0x20] - cmp r0, #0x0 - bne _02021B48 - ldr r0, _02021C20 ; =UNK_020EE67C - str r0, [sp, #0x4] - b _02021B4C -_02021B48: - ldr r0, _02021C24 ; =UNK_020EE690 - str r0, [sp, #0x4] -_02021B4C: - add r0, r5, #0x0 - bl StringSetEmpty - cmp r4, #0x0 - beq _02021B74 - mov r0, #0x0 - mvn r0, r0 - mul r6, r0 - ldr r0, [sp, #0x20] - cmp r0, #0x0 - bne _02021B66 - mov r0, #0xf1 - b _02021B68 -_02021B66: - ldr r0, _02021C28 ; =0x000001BE -_02021B68: - ldrh r2, [r5, #0x2] - add r1, r2, #0x1 - strh r1, [r5, #0x2] - lsl r1, r2, #0x1 - add r1, r5, r1 - strh r0, [r1, #0x8] -_02021B74: - ldr r0, [sp, #0x0] - lsl r1, r0, #0x2 - ldr r0, _02021C2C ; =UNK_020EE6A0 - ldr r4, [r0, r1] - cmp r4, #0x0 - beq _02021C06 -_02021B80: - add r0, r6, #0x0 - add r1, r4, #0x0 - bl _u32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - add r0, r4, #0x0 - mul r0, r1 - sub r6, r6, r0 - cmp r7, #0x2 - bne _02021BB4 - cmp r1, #0xa - bhs _02021BA2 - ldr r0, [sp, #0x4] - lsl r1, r1, #0x1 - ldrh r1, [r0, r1] - b _02021BA4 -_02021BA2: - mov r1, #0xe2 -_02021BA4: - ldrh r0, [r5, #0x2] - add r2, r0, #0x0 - add r2, r2, #0x1 - lsl r0, r0, #0x1 - strh r2, [r5, #0x2] - add r0, r5, r0 - strh r1, [r0, #0x8] - b _02021BFA -_02021BB4: - cmp r1, #0x0 - bne _02021BBC - cmp r4, #0x1 - bne _02021BDC -_02021BBC: - mov r7, #0x2 - cmp r1, #0xa - bhs _02021BCA - ldr r0, [sp, #0x4] - lsl r1, r1, #0x1 - ldrh r1, [r0, r1] - b _02021BCC -_02021BCA: - mov r1, #0xe2 -_02021BCC: - ldrh r0, [r5, #0x2] - add r2, r0, #0x0 - add r2, r2, #0x1 - lsl r0, r0, #0x1 - strh r2, [r5, #0x2] - add r0, r5, r0 - strh r1, [r0, #0x8] - b _02021BFA -_02021BDC: - cmp r7, #0x1 - bne _02021BFA - ldr r0, [sp, #0x20] - cmp r0, #0x0 - bne _02021BEA - mov r1, #0x1 - b _02021BEC -_02021BEA: - ldr r1, _02021C30 ; =0x000001E2 -_02021BEC: - ldrh r0, [r5, #0x2] - add r2, r0, #0x0 - add r2, r2, #0x1 - lsl r0, r0, #0x1 - strh r2, [r5, #0x2] - add r0, r5, r0 - strh r1, [r0, #0x8] -_02021BFA: - add r0, r4, #0x0 - mov r1, #0xa - bl _u32_div_f - add r4, r0, #0x0 - bne _02021B80 -_02021C06: - ldrh r0, [r5, #0x2] - ldr r1, _02021C34 ; =0x0000FFFF - add sp, #0x8 - lsl r0, r0, #0x1 - add r0, r5, r0 - strh r1, [r0, #0x8] - pop {r3-r7, pc} -_02021C14: - bl ErrorHandling - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_02021C1C: .word 0xB6F8D2EC -_02021C20: .word UNK_020EE67C -_02021C24: .word UNK_020EE690 -_02021C28: .word 0x000001BE -_02021C2C: .word UNK_020EE6A0 -_02021C30: .word 0x000001E2 -_02021C34: .word 0x0000FFFF - - thumb_func_start FUN_02021C38 -FUN_02021C38: ; 0x02021C38 - push {r3-r7, lr} - sub sp, #0x10 - str r1, [sp, #0x0] - mov r1, #0x0 - str r1, [sp, #0x8] - str r1, [sp, #0xc] - add r5, r1, #0x0 - ldrh r1, [r0, #0x2] - mov r7, #0x1 - cmp r1, #0x12 - bls _02021C56 - ldr r0, [sp, #0x8] - add sp, #0x10 - add r1, r0, #0x0 - pop {r3-r7, pc} -_02021C56: - sub r1, r1, #0x1 - str r1, [sp, #0x4] - bmi _02021CCC - lsl r1, r1, #0x1 - add r4, r0, r1 -_02021C60: - ldrh r6, [r4, #0x8] - mov r3, #0xa - mov r0, #0x0 - add r1, r6, #0x0 - sub r1, #0xa2 - asr r2, r1, #0x1f - sub r3, r1, r3 - mov r12, r2 - mov r3, r12 - sbc r3, r0 - blo _02021C98 - ldr r0, _02021CDC ; =0x00000121 - mov r3, #0xa - sub r1, r6, r0 - asr r2, r1, #0x1f - mov r0, #0x0 - sub r3, r1, r3 - mov r12, r2 - mov r3, r12 - sbc r3, r0 - blo _02021C98 - ldr r0, [sp, #0x0] - mov r1, #0x0 - str r1, [r0, #0x0] - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - add sp, #0x10 - pop {r3-r7, pc} -_02021C98: - add r0, r1, #0x0 - add r1, r2, #0x0 - add r2, r7, #0x0 - add r3, r5, #0x0 - bl _ll_mul - add r2, r1, #0x0 - ldr r1, [sp, #0x8] - add r0, r1, r0 - str r0, [sp, #0x8] - ldr r0, [sp, #0xc] - adc r0, r2 - str r0, [sp, #0xc] - add r0, r7, #0x0 - add r1, r5, #0x0 - mov r2, #0xa - mov r3, #0x0 - bl _ll_mul - add r7, r0, #0x0 - ldr r0, [sp, #0x4] - add r5, r1, #0x0 - sub r4, r4, #0x2 - sub r0, r0, #0x1 - str r0, [sp, #0x4] - bpl _02021C60 -_02021CCC: - ldr r0, [sp, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - add sp, #0x10 - pop {r3-r7, pc} - nop -_02021CDC: .word 0x00000121 - - thumb_func_start FUN_02021CE0 -FUN_02021CE0: ; 0x02021CE0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02021CEE - bl ErrorHandling -_02021CEE: - ldr r1, [r5, #0x4] - ldr r0, _02021D34 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021CFA - bl ErrorHandling -_02021CFA: - cmp r4, #0x0 - bne _02021D02 - bl ErrorHandling -_02021D02: - ldr r1, [r4, #0x4] - ldr r0, _02021D34 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021D0E - bl ErrorHandling -_02021D0E: - ldrh r1, [r5, #0x8] - ldrh r0, [r4, #0x8] - cmp r1, r0 - bne _02021D2E - ldr r0, _02021D38 ; =0x0000FFFF -_02021D18: - ldrh r1, [r5, #0x8] - cmp r1, r0 - bne _02021D22 - mov r0, #0x0 - pop {r3-r5, pc} -_02021D22: - add r5, r5, #0x2 - add r4, r4, #0x2 - ldrh r2, [r5, #0x8] - ldrh r1, [r4, #0x8] - cmp r2, r1 - beq _02021D18 -_02021D2E: - mov r0, #0x1 - pop {r3-r5, pc} - nop -_02021D34: .word 0xB6F8D2EC -_02021D38: .word 0x0000FFFF - - thumb_func_start FUN_02021D3C -FUN_02021D3C: ; 0x02021D3C - push {r4, lr} - add r4, r0, #0x0 - bne _02021D46 - bl ErrorHandling -_02021D46: - ldr r1, [r4, #0x4] - ldr r0, _02021D58 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021D52 - bl ErrorHandling -_02021D52: - ldrh r0, [r4, #0x2] - pop {r4, pc} - nop -_02021D58: .word 0xB6F8D2EC - - thumb_func_start FUN_02021D5C -FUN_02021D5C: ; 0x02021D5C - push {r3-r5, lr} - add r4, r0, #0x0 - bne _02021D66 - bl ErrorHandling -_02021D66: - ldr r1, [r4, #0x4] - ldr r0, _02021D98 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021D72 - bl ErrorHandling -_02021D72: - ldrh r1, [r4, #0x2] - mov r3, #0x0 - mov r0, #0x1 - cmp r1, #0x0 - ble _02021D94 - mov r1, #0xe - add r5, r4, #0x0 - lsl r1, r1, #0xc -_02021D82: - ldrh r2, [r5, #0x8] - cmp r2, r1 - bne _02021D8A - add r0, r0, #0x1 -_02021D8A: - ldrh r2, [r4, #0x2] - add r3, r3, #0x1 - add r5, r5, #0x2 - cmp r3, r2 - blt _02021D82 -_02021D94: - pop {r3-r5, pc} - nop -_02021D98: .word 0xB6F8D2EC - - thumb_func_start FUN_02021D9C -FUN_02021D9C: ; 0x02021D9C - push {r3-r7, lr} - add r5, r1, #0x0 - add r7, r0, #0x0 - add r6, r2, #0x0 - cmp r5, #0x0 - bne _02021DAC - bl ErrorHandling -_02021DAC: - ldr r1, [r5, #0x4] - ldr r0, _02021E24 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021DB8 - bl ErrorHandling -_02021DB8: - cmp r7, #0x0 - bne _02021DC0 - bl ErrorHandling -_02021DC0: - ldr r1, [r7, #0x4] - ldr r0, _02021E24 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021DCC - bl ErrorHandling -_02021DCC: - mov r4, #0x0 - cmp r6, #0x0 - beq _02021DF6 - ldrh r0, [r5, #0x2] - cmp r0, #0x0 - ble _02021DF6 - mov r1, #0xe - add r0, r5, #0x0 - lsl r1, r1, #0xc -_02021DDE: - ldrh r2, [r0, #0x8] - cmp r2, r1 - bne _02021DEC - sub r6, r6, #0x1 - bne _02021DEC - add r4, r4, #0x1 - b _02021DF6 -_02021DEC: - ldrh r2, [r5, #0x2] - add r4, r4, #0x1 - add r0, r0, #0x2 - cmp r4, r2 - blt _02021DDE -_02021DF6: - add r0, r7, #0x0 - bl StringSetEmpty - ldrh r0, [r5, #0x2] - cmp r4, r0 - bge _02021E20 - lsl r0, r4, #0x1 - add r6, r5, r0 -_02021E06: - ldrh r1, [r6, #0x8] - mov r0, #0xe - lsl r0, r0, #0xc - cmp r1, r0 - beq _02021E20 - add r0, r7, #0x0 - bl FUN_02021FB0 - ldrh r0, [r5, #0x2] - add r4, r4, #0x1 - add r6, r6, #0x2 - cmp r4, r0 - blt _02021E06 -_02021E20: - pop {r3-r7, pc} - nop -_02021E24: .word 0xB6F8D2EC - - thumb_func_start FUN_02021E28 -FUN_02021E28: ; 0x02021E28 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02021E36 - bl ErrorHandling -_02021E36: - ldr r1, [r5, #0x4] - ldr r0, _02021E84 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021E42 - bl ErrorHandling -_02021E42: - mov r0, #0x0 - strh r0, [r5, #0x2] - ldrh r1, [r4, #0x0] - ldr r0, _02021E88 ; =0x0000FFFF - cmp r1, r0 - beq _02021E76 - add r1, r0, #0x0 -_02021E50: - ldrh r2, [r5, #0x0] - ldrh r0, [r5, #0x2] - sub r2, r2, #0x1 - cmp r0, r2 - blt _02021E60 - bl ErrorHandling - b _02021E76 -_02021E60: - add r2, r0, #0x0 - add r2, r2, #0x1 - strh r2, [r5, #0x2] - ldrh r2, [r4, #0x0] - lsl r0, r0, #0x1 - add r0, r5, r0 - add r4, r4, #0x2 - strh r2, [r0, #0x8] - ldrh r0, [r4, #0x0] - cmp r0, r1 - bne _02021E50 -_02021E76: - ldrh r0, [r5, #0x2] - ldr r1, _02021E88 ; =0x0000FFFF - lsl r0, r0, #0x1 - add r0, r5, r0 - strh r1, [r0, #0x8] - pop {r3-r5, pc} - nop -_02021E84: .word 0xB6F8D2EC -_02021E88: .word 0x0000FFFF - - thumb_func_start FUN_02021E8C -FUN_02021E8C: ; 0x02021E8C - push {r3-r7, lr} - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r2, #0x0 - cmp r5, #0x0 - bne _02021E9C - bl ErrorHandling -_02021E9C: - ldr r1, [r5, #0x4] - ldr r0, _02021EE8 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021EA8 - bl ErrorHandling -_02021EA8: - ldrh r0, [r5, #0x0] - cmp r4, r0 - bhi _02021EE2 - lsl r6, r4, #0x1 - add r0, r5, #0x0 - add r0, #0x8 - add r1, r7, #0x0 - add r2, r6, #0x0 - bl memcpy - mov r2, #0x0 - cmp r4, #0x0 - bls _02021ED4 - ldr r0, _02021EEC ; =0x0000FFFF - add r3, r5, #0x0 -_02021EC6: - ldrh r1, [r3, #0x8] - cmp r1, r0 - beq _02021ED4 - add r2, r2, #0x1 - add r3, r3, #0x2 - cmp r2, r4 - blo _02021EC6 -_02021ED4: - strh r2, [r5, #0x2] - cmp r2, r4 - bne _02021EE6 - ldr r1, _02021EEC ; =0x0000FFFF - add r0, r5, r6 - strh r1, [r0, #0x6] - pop {r3-r7, pc} -_02021EE2: - bl ErrorHandling -_02021EE6: - pop {r3-r7, pc} - .balign 4 -_02021EE8: .word 0xB6F8D2EC -_02021EEC: .word 0x0000FFFF - - thumb_func_start FUN_02021EF0 -FUN_02021EF0: ; 0x02021EF0 - push {r4-r6, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r4, r2, #0x0 - cmp r5, #0x0 - bne _02021F00 - bl ErrorHandling -_02021F00: - ldr r1, [r5, #0x4] - ldr r0, _02021F28 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021F0C - bl ErrorHandling -_02021F0C: - ldrh r0, [r5, #0x2] - add r2, r0, #0x1 - cmp r2, r4 - bhi _02021F22 - add r5, #0x8 - add r0, r6, #0x0 - add r1, r5, #0x0 - lsl r2, r2, #0x1 - bl memcpy - pop {r4-r6, pc} -_02021F22: - bl ErrorHandling - pop {r4-r6, pc} - .balign 4 -_02021F28: .word 0xB6F8D2EC - - thumb_func_start String_c_str -String_c_str: ; 0x02021F2C - push {r4, lr} - add r4, r0, #0x0 - bne _02021F36 - bl ErrorHandling -_02021F36: - ldr r1, [r4, #0x4] - ldr r0, _02021F48 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021F42 - bl ErrorHandling -_02021F42: - add r4, #0x8 - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 -_02021F48: .word 0xB6F8D2EC - - thumb_func_start FUN_02021F4C -FUN_02021F4C: ; 0x02021F4C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02021F5A - bl ErrorHandling -_02021F5A: - ldr r1, [r5, #0x4] - ldr r0, _02021FAC ; =0xB6F8D2EC - cmp r1, r0 - beq _02021F66 - bl ErrorHandling -_02021F66: - cmp r4, #0x0 - bne _02021F6E - bl ErrorHandling -_02021F6E: - ldr r1, [r4, #0x4] - ldr r0, _02021FAC ; =0xB6F8D2EC - cmp r1, r0 - beq _02021F7A - bl ErrorHandling -_02021F7A: - ldrh r2, [r4, #0x2] - ldrh r0, [r5, #0x2] - add r1, r0, r2 - add r3, r1, #0x1 - ldrh r1, [r5, #0x0] - cmp r3, r1 - bgt _02021FA6 - add r1, r5, #0x0 - add r1, #0x8 - lsl r0, r0, #0x1 - add r0, r1, r0 - add r1, r4, #0x0 - add r2, r2, #0x1 - add r1, #0x8 - lsl r2, r2, #0x1 - bl memcpy - ldrh r1, [r5, #0x2] - ldrh r0, [r4, #0x2] - add r0, r1, r0 - strh r0, [r5, #0x2] - pop {r3-r5, pc} -_02021FA6: - bl ErrorHandling - pop {r3-r5, pc} - .balign 4 -_02021FAC: .word 0xB6F8D2EC - - thumb_func_start FUN_02021FB0 -FUN_02021FB0: ; 0x02021FB0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02021FBE - bl ErrorHandling -_02021FBE: - ldr r1, [r5, #0x4] - ldr r0, _02021FF0 ; =0xB6F8D2EC - cmp r1, r0 - beq _02021FCA - bl ErrorHandling -_02021FCA: - ldrh r2, [r5, #0x2] - ldrh r0, [r5, #0x0] - add r1, r2, #0x1 - cmp r1, r0 - bge _02021FE8 - lsl r0, r2, #0x1 - strh r1, [r5, #0x2] - add r0, r5, r0 - strh r4, [r0, #0x8] - ldrh r0, [r5, #0x2] - ldr r1, _02021FF4 ; =0x0000FFFF - lsl r0, r0, #0x1 - add r0, r5, r0 - strh r1, [r0, #0x8] - pop {r3-r5, pc} -_02021FE8: - bl ErrorHandling - pop {r3-r5, pc} - nop -_02021FF0: .word 0xB6F8D2EC -_02021FF4: .word 0x0000FFFF - - thumb_func_start FUN_02021FF8 -FUN_02021FF8: ; 0x02021FF8 - push {r4, lr} - add r4, r0, #0x0 - bne _02022002 - bl ErrorHandling -_02022002: - ldr r1, [r4, #0x4] - ldr r0, _02022028 ; =0xB6F8D2EC - cmp r1, r0 - beq _0202200E - bl ErrorHandling -_0202200E: - ldrh r0, [r4, #0x2] - cmp r0, #0x0 - beq _02022026 - ldrh r1, [r4, #0x8] - ldr r0, _0202202C ; =0x00000145 - cmp r1, r0 - blo _02022026 - add r0, #0x19 - cmp r1, r0 - bhi _02022026 - sub r1, #0x1a - strh r1, [r4, #0x8] -_02022026: - pop {r4, pc} - .balign 4 -_02022028: .word 0xB6F8D2EC -_0202202C: .word 0x00000145 diff --git a/arm9/asm/unk_02021FF8.s b/arm9/asm/unk_02021FF8.s index 150d6003..0609835c 100644 --- a/arm9/asm/unk_02021FF8.s +++ b/arm9/asm/unk_02021FF8.s @@ -86,7 +86,7 @@ _020220A2: _020220B2: ldr r0, [sp, #0x0] add r1, r4, #0x0 - bl FUN_02021F4C + bl StringCat pop {r3-r7, pc} .balign 4 _020220BC: .word 0x000001FF diff --git a/arm9/asm/unk_020238C4.s b/arm9/asm/unk_020238C4.s index 339a723f..70e0d568 100644 --- a/arm9/asm/unk_020238C4.s +++ b/arm9/asm/unk_020238C4.s @@ -115,14 +115,14 @@ _02023970: thumb_func_start FUN_0202397C FUN_0202397C: ; 0x0202397C - ldr r3, _02023988 ; =FUN_02021EF0 + ldr r3, _02023988 ; =CopyStringToU16Array add r2, r0, #0x0 add r0, r1, #0x0 add r1, r2, #0x0 mov r2, #0x8 bx r3 .balign 4 -_02023988: .word FUN_02021EF0 +_02023988: .word CopyStringToU16Array thumb_func_start FUN_0202398C FUN_0202398C: ; 0x0202398C @@ -131,13 +131,13 @@ FUN_0202398C: ; 0x0202398C thumb_func_start FUN_02023990 FUN_02023990: ; 0x02023990 - ldr r3, _0202399C ; =FUN_02021E28 + ldr r3, _0202399C ; =CopyU16ArrayToString add r2, r0, #0x0 add r0, r1, #0x0 add r1, r2, #0x0 bx r3 nop -_0202399C: .word FUN_02021E28 +_0202399C: .word CopyU16ArrayToString thumb_func_start FUN_020239A0 FUN_020239A0: ; 0x020239A0 diff --git a/arm9/asm/unk_02023AC4.s b/arm9/asm/unk_02023AC4.s index ea875620..7470de58 100644 --- a/arm9/asm/unk_02023AC4.s +++ b/arm9/asm/unk_02023AC4.s @@ -47,14 +47,14 @@ _02023AE0: .word memset thumb_func_start FUN_02023AE4 FUN_02023AE4: ; 0x02023AE4 - ldr r3, _02023AF0 ; =FUN_02021E8C + ldr r3, _02023AF0 ; =CopyU16ArrayToStringN add r2, r0, #0x0 add r0, r1, #0x0 add r1, r2, #0x0 mov r2, #0xc bx r3 .balign 4 -_02023AF0: .word FUN_02021E8C +_02023AF0: .word CopyU16ArrayToStringN thumb_func_start FUN_02023AF4 FUN_02023AF4: ; 0x02023AF4 @@ -64,7 +64,7 @@ FUN_02023AF4: ; 0x02023AF4 bl String_ctor add r1, r5, #0x0 add r4, r0, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index 3c770b30..f48042bb 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -88,13 +88,13 @@ FUN_02024EF4: ; 0x02024EF4 add r2, r0, #0x0 add r0, r1, #0x0 ldr r1, _02024F04 ; =0x00000724 - ldr r3, _02024F08 ; =FUN_02021EF0 + ldr r3, _02024F08 ; =CopyStringToU16Array add r1, r2, r1 mov r2, #0x8 bx r3 nop _02024F04: .word 0x00000724 -_02024F08: .word FUN_02021EF0 +_02024F08: .word CopyStringToU16Array thumb_func_start FUN_02024F0C FUN_02024F0C: ; 0x02024F0C @@ -109,10 +109,10 @@ FUN_02024F18: ; 0x02024F18 add r2, r0, #0x0 add r0, r1, #0x0 ldr r1, _02024F28 ; =0x00000734 - ldr r3, _02024F2C ; =FUN_02021EF0 + ldr r3, _02024F2C ; =CopyStringToU16Array add r1, r2, r1 mov r2, #0xb bx r3 nop _02024F28: .word 0x00000734 -_02024F2C: .word FUN_02021EF0 +_02024F2C: .word CopyStringToU16Array diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s index ec6fd057..75016f0b 100644 --- a/arm9/asm/unk_02026CD0.s +++ b/arm9/asm/unk_02026CD0.s @@ -112,7 +112,7 @@ FUN_02026D98: ; 0x02026D98 add r4, r2, #0x0 add r1, #0x20 mov r2, #0x8 - bl FUN_02021EF0 + bl CopyStringToU16Array add r5, #0x34 strb r4, [r5, #0x0] pop {r3-r5, pc} @@ -2242,13 +2242,13 @@ FUN_02027C84: ; 0x02027C84 thumb_func_start FUN_02027C88 FUN_02027C88: ; 0x02027C88 add r2, r0, #0x0 - ldr r3, _02027C94 ; =FUN_02021E28 + ldr r3, _02027C94 ; =CopyU16ArrayToString add r2, #0x20 add r0, r1, #0x0 add r1, r2, #0x0 bx r3 .balign 4 -_02027C94: .word FUN_02021E28 +_02027C94: .word CopyU16ArrayToString thumb_func_start FUN_02027C98 FUN_02027C98: ; 0x02027C98 diff --git a/arm9/asm/unk_020281E0.s b/arm9/asm/unk_020281E0.s index edf5e64f..b55e419f 100644 --- a/arm9/asm/unk_020281E0.s +++ b/arm9/asm/unk_020281E0.s @@ -291,7 +291,7 @@ _020283D0: add r1, r2, r1 add r0, r6, #0x0 mov r2, #0x10 - bl FUN_02021EF0 + bl CopyStringToU16Array pop {r4-r6, pc} .balign 4 @@ -330,7 +330,7 @@ _02028414: add r1, r2, r1 add r0, r6, #0x0 mov r2, #0x10 - bl FUN_02021EF0 + bl CopyStringToU16Array pop {r4-r6, pc} .balign 4 diff --git a/arm9/asm/unk_020286F8.s b/arm9/asm/unk_020286F8.s index d0ed994b..ffb1a935 100644 --- a/arm9/asm/unk_020286F8.s +++ b/arm9/asm/unk_020286F8.s @@ -146,7 +146,7 @@ FUN_020287C0: ; 0x020287C0 add r1, r4, r2 add r0, r3, #0x0 mov r2, #0x8 - bl FUN_02021EF0 + bl CopyStringToU16Array pop {r4, pc} _020287D8: mov r2, #0x2c @@ -155,7 +155,7 @@ _020287D8: add r0, r3, #0x0 add r1, #0x10 mov r2, #0x8 - bl FUN_02021EF0 + bl CopyStringToU16Array pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_0202B034.s b/arm9/asm/unk_0202B034.s index 8c604e39..f6d8f57e 100644 --- a/arm9/asm/unk_0202B034.s +++ b/arm9/asm/unk_0202B034.s @@ -142,7 +142,7 @@ _0202B0BA: add r0, r6, #0x0 add r1, #0xc mov r2, #0xb - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r4, #0x0 mov r1, #0x90 add r2, r6, #0x0 @@ -151,7 +151,7 @@ _0202B0BA: add r0, r6, #0x0 add r1, #0x22 mov r2, #0x8 - bl FUN_02021EF0 + bl CopyStringToU16Array b _0202B17C _0202B176: ldr r0, _0202B1EC ; =0x0000FFFF @@ -359,11 +359,11 @@ _0202B2CE: ldrb r0, [r5, #0x3] strb r0, [r4, #0x13] ldr r0, [r4, #0x0] - bl FUN_02021E28 + bl CopyU16ArrayToString add r1, r5, #0x0 ldr r0, [r4, #0x4] add r1, #0x22 - bl FUN_02021E28 + bl CopyU16ArrayToString mov r1, #0x0 _0202B306: ldrh r0, [r5, #0x32] diff --git a/arm9/asm/unk_0202B870.s b/arm9/asm/unk_0202B870.s index b9a2a3b1..eb4d094a 100644 --- a/arm9/asm/unk_0202B870.s +++ b/arm9/asm/unk_0202B870.s @@ -277,7 +277,7 @@ _0202BA38: add r0, r7, #0x0 add r1, #0x8 mov r2, #0x8 - bl FUN_02021EF0 + bl CopyStringToU16Array ldr r0, [r5, #0x0] add r6, r6, #0x1 str r0, [r4, #0x4] @@ -822,7 +822,7 @@ _0202BE14: add r1, r5, #0x0 ldr r0, [r0, #0xc] add r1, #0x8 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, [r4, #0x0] add r0, r0, #0x1 str r0, [r4, #0x0] diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s index 24d12a3a..648cf799 100644 --- a/arm9/asm/unk_02033874.s +++ b/arm9/asm/unk_02033874.s @@ -333,7 +333,7 @@ _02033B22: bl FUN_0202DFFC add r1, r0, #0x0 ldr r0, [sp, #0x10] - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r2, [sp, #0x10] add r0, r4, #0x0 add r1, r5, #0x0 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index f4394e88..6056f12f 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -1817,7 +1817,7 @@ _020384D6: bne _020384F2 ldr r0, [r1, #0x18] ldr r1, [r4, #0x10] - bl FUN_02021CE0 + bl StringCompare cmp r0, #0x0 bne _02038514 ldr r0, [r4, #0xc] @@ -1990,12 +1990,12 @@ _02038620: beq _0203866E ldr r0, [r4, #0x10] add r1, r5, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString b _0203866E _02038656: ldr r0, [r4, #0x10] add r1, r5, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString b _0203866E _02038660: cmp r5, #0x0 @@ -2003,7 +2003,7 @@ _02038660: ldr r0, [r4, #0xc] add r1, r5, #0x0 ldr r0, [r0, #0x18] - bl FUN_02021E28 + bl CopyU16ArrayToString _0203866E: ldr r0, [sp, #0x4] ldr r1, _0203867C ; =FUN_0203847C diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s index 6351a0e1..140bae5d 100644 --- a/arm9/asm/unk_0204CB20.s +++ b/arm9/asm/unk_0204CB20.s @@ -6102,7 +6102,7 @@ FUN_0204F9BC: ; 0x0204F9BC mov r1, #0xf bl FUN_020239A0 str r0, [sp, #0x0] - bl FUN_02021D3C + bl StringGetLength cmp r0, #0x0 beq _0204F9FE ldr r0, _0204FA54 ; =UNK_021C5A68 diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s index 6bc4b7fb..cd102e3a 100644 --- a/arm9/asm/unk_02060CCC.s +++ b/arm9/asm/unk_02060CCC.s @@ -267,7 +267,7 @@ FUN_02060D90: ; 0x02060D90 bl String_ctor add r1, r7, #0x0 add r4, r0, #0x0 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, [sp, #0x24] ldr r3, [sp, #0x8] str r0, [sp, #0x0] @@ -327,7 +327,7 @@ FUN_02060E04: ; 0x02060E04 add r0, r4, #0x0 add r1, r5, #0x0 mov r2, #0xb - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r4, #0x0 bl String_dtor pop {r4-r6, pc} @@ -436,7 +436,7 @@ FUN_02060ECC: ; 0x02060ECC add r0, r4, #0x0 add r1, r7, #0x0 mov r2, #0xb - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r4, #0x0 bl String_dtor _02060F0C: diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index e50c86ca..fcd36a6f 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1671,7 +1671,7 @@ _020660AE: bl FUN_020257C4 add r1, r0, #0x0 ldr r0, [r5, #0x8] - bl FUN_02021E28 + bl CopyU16ArrayToString ldrb r0, [r6, #0x19] strb r0, [r5, #0x2] ldrb r1, [r5, #0x0] diff --git a/arm9/asm/unk_0206ABC4.s b/arm9/asm/unk_0206ABC4.s index bddf1314..cd1030b7 100644 --- a/arm9/asm/unk_0206ABC4.s +++ b/arm9/asm/unk_0206ABC4.s @@ -70,7 +70,7 @@ _0206AC26: add r6, r0, #0x0 add r1, r5, #0x0 mov r2, #0x8 - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r6, #0x0 bl String_dtor _0206AC3E: diff --git a/arm9/asm/unk_0206B16C.s b/arm9/asm/unk_0206B16C.s index e5b5bebe..1e7eb1f4 100644 --- a/arm9/asm/unk_0206B16C.s +++ b/arm9/asm/unk_0206B16C.s @@ -464,7 +464,7 @@ _0206B492: mov r2, #0x28 mul r2, r1 add r1, r3, r2 - bl FUN_02021E28 + bl CopyU16ArrayToString pop {r3, pc} _0206B4A8: bl ErrorHandling @@ -491,7 +491,7 @@ _0206B4C2: mul r2, r1 add r1, r3, r2 mov r2, #0x14 - bl FUN_02021EF0 + bl CopyStringToU16Array bl FUN_02022830 _0206B4DC: pop {r3, pc} diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index 6011647b..7515f075 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -1003,7 +1003,7 @@ _0207781A: add r4, #0x1c add r1, r4, #0x0 mov r2, #0xa - bl FUN_02021EF0 + bl CopyStringToU16Array pop {r4-r6, pc} _02077836: cmp r0, #0x3 @@ -1027,7 +1027,7 @@ _02077836: add r4, #0x1c add r1, r4, #0x0 mov r2, #0xa - bl FUN_02021EF0 + bl CopyStringToU16Array pop {r4-r6, pc} _02077864: mov r0, #0x1 @@ -1132,7 +1132,7 @@ _0207790E: add r1, r4, #0x0 ldr r0, [r5, #0x18] add r1, #0xd8 - bl FUN_02021E28 + bl CopyU16ArrayToString _02077932: mov r0, #0x61 lsl r0, r0, #0x2 @@ -1642,7 +1642,7 @@ FUN_02077CD4: ; 0x02077CD4 beq _02077D88 add r1, r4, r1 mov r2, #0x20 - bl FUN_02021EF0 + bl CopyStringToU16Array _02077D88: add r1, r4, #0x0 mov r0, #0x1 @@ -1866,7 +1866,7 @@ _02077F50: add r1, r5, #0x0 add r0, r7, #0x0 add r1, #0xd8 - bl FUN_02021E28 + bl CopyU16ArrayToString mov r1, #0x0 str r1, [sp, #0x0] mov r0, #0x5a @@ -3814,7 +3814,7 @@ _02078F0A: add r5, r0, #0x0 ldr r0, [sp, #0x28] add r1, sp, #0x38 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, [sp, #0x20] sub r3, r6, r5 str r0, [sp, #0x0] @@ -3944,7 +3944,7 @@ _02079012: bl FUN_02019620 add r0, r4, #0x0 add r1, sp, #0xc - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r3, _0207906C ; =0x000D0E0F add r0, r6, r7 add r1, r4, #0x0 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 24ce0c2e..2c76b714 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -716,7 +716,7 @@ FUN_0207A1A0: ; 0x0207A1A0 cmp r1, #0x0 beq _0207A24C ldr r0, [r4, r2] - bl FUN_02021E28 + bl CopyU16ArrayToString _0207A24C: pop {r4, pc} nop diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s index d0a7ab43..51c02db7 100644 --- a/arm9/asm/unk_0207D5BC.s +++ b/arm9/asm/unk_0207D5BC.s @@ -543,7 +543,7 @@ FUN_0207D958: ; 0x0207D958 add r3, #0xc ldr r0, [r1, r3] ldr r1, [r1, r2] - bl FUN_02021CE0 + bl StringCompare cmp r0, #0x0 bne _0207D98E mov r0, #0x1 diff --git a/arm9/asm/unk_020834D0.s b/arm9/asm/unk_020834D0.s index 6b8df55d..e86c6f2d 100644 --- a/arm9/asm/unk_020834D0.s +++ b/arm9/asm/unk_020834D0.s @@ -550,7 +550,7 @@ FUN_02083888: ; 0x02083888 bl StringSetEmpty ldr r0, [r4, r7] add r1, r5, #0x4 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, _020838B0 ; =0x00000584 ldrb r1, [r6, r0] add r1, r1, #0x1 @@ -567,7 +567,7 @@ FUN_020838B4: ; 0x020838B4 add r0, r2, #0x0 add r1, sp, #0x0 mov r2, #0x8 - bl FUN_02021EF0 + bl CopyStringToU16Array mov r0, #0x14 add r1, r0, #0x0 bl AllocFromHeap diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s index cf2ec66b..959d633f 100644 --- a/arm9/asm/unk_020854E0.s +++ b/arm9/asm/unk_020854E0.s @@ -302,7 +302,7 @@ FUN_020856F0: ; 0x020856F0 bl FUN_020257C4 add r1, r0, #0x0 ldr r0, [r6, #0x10] - bl FUN_02021E28 + bl CopyU16ArrayToString add r0, r4, #0x0 bl FUN_020257CC strb r0, [r6, #0xf] diff --git a/arm9/global.inc b/arm9/global.inc index f1baa114..ad2fb8a9 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -14,8 +14,7 @@ .extern CARD_UnlockRom .extern CARD_WaitBackupAsync .extern CARDi_CheckPulledOutCore -.extern CARDi_IdentifyBackupCore -.extern CARDi_InitCommon +.extern CARDi_IdentifyBackupCoreStringLength .extern CARDi_OnFifoRecv .extern CARDi_ReadRom .extern CARDi_Request @@ -1388,26 +1387,26 @@ .extern FUN_020215E0 .extern FUN_02021750 .extern FUN_020218D8 -.extern FUN_02021934 -.extern FUN_0202199C +.extern StringGetWidth +.extern StringGetWidthNoSpacing .extern String_ctor .extern String_dtor .extern StringSetEmpty .extern StringCopy .extern StringDup .extern String16_FormatInteger -.extern FUN_02021C38 -.extern FUN_02021CE0 -.extern FUN_02021D3C -.extern FUN_02021D5C -.extern FUN_02021D9C -.extern FUN_02021E28 -.extern FUN_02021E8C -.extern FUN_02021EF0 +.extern String_atoi +.extern StringCompare +.extern StringGetLength +.extern StringCountLines +.extern StringGetLineN +.extern CopyU16ArrayToString +.extern CopyU16ArrayToStringN +.extern CopyStringToU16Array .extern String_c_str -.extern FUN_02021F4C -.extern FUN_02021FB0 -.extern FUN_02021FF8 +.extern StringCat +.extern StrAddChar +.extern StrUpperFirstChar .extern FUN_02022048 .extern FUN_020220C4 .extern FUN_0202212C @@ -8399,3 +8398,4 @@ .extern MOD06_0224CAAC .extern MOD06_0224CB54 .extern gSineTable +.extern CARDi_IdentifyBackupCore diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index f1fdbbd0..f525e8c6 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -27128,7 +27128,7 @@ _021EFF2E: bl FUN_020283A4 add r1, r0, #0 ldr r0, [r5, #8] - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, [r5] ldr r1, [r5, #8] add r2, r4, #0 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 950b8916..f74e8b93 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -22563,7 +22563,7 @@ MOD06_02244820: ; 0x02244820 add r4, r0, #0 add r1, r5, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r4, #0 bl String_dtor add r0, r7, #0 @@ -31009,7 +31009,7 @@ _0224886C: add r5, r0, #0 add r1, sp, #4 mov r2, #0x80 - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r5, #0 bl String_dtor ldr r0, [r4, #8] diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 5eca8548..fd5e5c2a 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -5062,7 +5062,7 @@ MOD07_02214720: ; 0x02214720 ldr r0, [r0, #0x14] add r1, r5, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array ldr r1, [sp, #0x10] ldr r3, [r4, #0x24] add r0, r5, #0 @@ -5114,7 +5114,7 @@ _022147BC: ldr r0, [r0, #0x14] add r1, r5, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array ldr r1, [sp, #0x14] ldr r3, [r4, #0x24] add r0, r5, #0 @@ -5147,7 +5147,7 @@ _02214808: ldr r0, [r0, #0x14] add r1, r5, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array ldr r1, [sp, #0x18] ldr r3, [r4, #0x24] add r0, r5, #0 @@ -5180,7 +5180,7 @@ _02214854: ldr r0, [r0, #0x14] add r1, r5, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array ldr r1, [sp, #0x1c] ldr r3, [r4, #0x24] add r0, r5, #0 @@ -5215,11 +5215,11 @@ _022148A0: ldr r0, [r4, #0x18] add r1, r5, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array ldr r0, [r4, #0x20] add r1, r7, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array b _02214914 _022148EA: add r0, #0x29 @@ -5234,11 +5234,11 @@ _022148EA: ldr r0, [r4, #0x14] add r1, r5, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array ldr r0, [r4, #0x1c] add r1, r7, #0 mov r2, #8 - bl FUN_02021EF0 + bl CopyStringToU16Array _02214914: str r6, [sp] ldr r0, [r4, #0x24] diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 9901427c..f080d018 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -41251,7 +41251,7 @@ _022435DC: add r4, #0x36 add r0, r3, #0 add r1, r4, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString b _02243798 _022435E8: ldr r0, [r4, #0x4c] diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index 5639bd70..07d6e961 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -5041,7 +5041,7 @@ _021D9B9C: ldr r0, [sp] mov r1, ip add r2, r2, #1 - bl FUN_02021E8C + bl CopyU16ArrayToStringN mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _021D9BB6: @@ -8617,7 +8617,7 @@ _021DB782: add r1, r2, r1 add r0, r5, #0 mov r2, #2 - bl FUN_02021E8C + bl CopyU16ArrayToStringN pop {r3, r4, r5, pc} .align 2, 0 _021DB794: .word MOD15_021DBA4C diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index 673ceb02..a604a281 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -23489,7 +23489,7 @@ MOD18_02244BB4: ; 0x02244BB4 add r1, r5, #0 add r1, #0x94 mov r2, #0x50 - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r5, #0 add r0, #0x94 ldrh r2, [r0] @@ -23542,7 +23542,7 @@ _02244C14: add r1, r5, #0 ldr r0, [r0] add r1, #0x94 - bl FUN_02021E28 + bl CopyU16ArrayToString add r0, r5, #0 add r0, #0x88 add r1, r6, #1 @@ -23550,7 +23550,7 @@ _02244C14: add r5, #0x94 lsl r1, r1, #1 add r1, r5, r1 - bl FUN_02021E28 + bl CopyU16ArrayToString mov r0, #2 pop {r3, r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s index e41127d5..5e3f79d8 100644 --- a/arm9/modules/51/asm/module_51.s +++ b/arm9/modules/51/asm/module_51.s @@ -1569,7 +1569,7 @@ _0225548C: bl FUN_020254F0 add r1, r0, #0 add r0, r4, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString add r0, r6, #0 add r1, r5, #0 bl FUN_020254F8 @@ -1647,7 +1647,7 @@ _02255530: mov r0, #0x1c mul r0, r2 ldr r0, [r4, r0] - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, [r5] mov r1, #0x1c add r2, r0, #0 diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index c33392ec..a59e1058 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -1967,7 +1967,7 @@ MOD55_021D84C8: ; 0x021D84C8 add r0, #0xd8 ldr r0, [r0] add r1, sp, #4 - bl FUN_02021C38 + bl String_atoi str r0, [sp] ldr r0, [sp, #4] add r7, r1, #0 @@ -2081,7 +2081,7 @@ _021D85B2: add r0, #0xd8 ldr r0, [r0] add r1, sp, #8 - bl FUN_02021C38 + bl String_atoi add r7, r0, #0 ldr r0, [sp, #4] add r6, r1, #0 @@ -2689,7 +2689,7 @@ _021D8A46: bl FUN_020283A4 add r1, r0, #0 ldr r0, [r5, #0x38] - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, [sp] add r1, r4, #1 add r0, r0, r6 @@ -5090,7 +5090,7 @@ MOD55_021D9E40: ; 0x021D9E40 bne _021D9EB8 ldr r0, [r0, #0x18] add r1, r5, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString b _021D9EBE _021D9EB8: ldr r0, [r0, #0x18] diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index bcdd979e..9144e290 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -795,7 +795,7 @@ _02212456: add r0, r5, #0 add r0, #0xd4 ldr r0, [r0] - bl FUN_02021E28 + bl CopyU16ArrayToString add r4, r4, #1 add r5, r5, #4 cmp r4, #0x20 @@ -2872,7 +2872,7 @@ _022134F2: mov r0, #0x56 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02021E28 + bl CopyU16ArrayToString b _022135DC _0221350C: add r0, r4, #0 diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s index d9ccb89e..22452327 100644 --- a/arm9/modules/57/asm/module_57.s +++ b/arm9/modules/57/asm/module_57.s @@ -2819,7 +2819,7 @@ _021D8AE0: add r1, r6, #0 add r0, r5, #0 add r1, #8 - bl FUN_02021E28 + bl CopyU16ArrayToString add r0, r7, #0 mov r2, #0 add r0, #0x10 diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index 081effc0..3c03a849 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -1692,7 +1692,7 @@ _021D822A: mov r3, #0x2a bl ReadMsgData_NewNarc_NewString add r6, r0, #0 - bl FUN_02021D3C + bl StringGetLength add r5, r0, #0 add r0, r6, #0 bl String_dtor @@ -1717,7 +1717,7 @@ _021D822A: add r2, r6, #0 bl FUN_0200B7B8 ldr r0, [r4, #0x58] - bl FUN_02021D3C + bl StringGetLength add r5, r5, r0 add r0, r6, #0 bl String_dtor @@ -1732,7 +1732,7 @@ _021D828A: mov r3, #0x2a bl ReadMsgData_NewNarc_NewString add r6, r0, #0 - bl FUN_02021D3C + bl StringGetLength add r5, r5, r0 add r0, r6, #0 bl String_dtor @@ -3503,7 +3503,7 @@ MOD67_021D9098: ; 0x021D9098 bl String_ctor add r1, r6, #0 add r4, r0, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString mov r0, #1 str r0, [sp] mov r0, #2 diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index a6cd9d90..c21637a9 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -2307,7 +2307,7 @@ MOD69_0222E89C: ; 0x0222E89C add r5, r0, #0 ldr r0, [r5, #0x1c] add r4, r1, #0 - bl FUN_02021D5C + bl StringCountLines mov r6, #0 str r0, [sp, #0x10] cmp r0, #0 @@ -2316,7 +2316,7 @@ _0222E8B2: ldr r0, [r5, #0x18] ldr r1, [r5, #0x1c] add r2, r6, #0 - bl FUN_02021D9C + bl StringGetLineN mov r0, #0 ldr r1, [r5, #0x18] add r2, r0, #0 @@ -4094,7 +4094,7 @@ _0222F726: ldr r0, [r5, r1] add r1, r1, #4 ldr r1, [r5, r1] - bl FUN_02021CE0 + bl StringCompare cmp r0, #0 beq _0222F750 mov r5, #2 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 111546a5..b60cc139 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -4433,7 +4433,7 @@ _0222FA60: bl FUN_020283A4 add r1, r0, #0 add r0, r6, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString ldr r0, _0222FAD0 ; =0x0000367C add r1, r6, #0 ldr r0, [r5, r0] diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s index 5487f6ef..743c4a76 100644 --- a/arm9/modules/74/asm/module_74.s +++ b/arm9/modules/74/asm/module_74.s @@ -1298,7 +1298,7 @@ _021D7EB8: b _021D7F0C _021D7F06: add r1, r6, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString _021D7F0C: ldr r0, [sp, #4] add r4, #0x10 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index f346f404..83c24108 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -5013,7 +5013,7 @@ MOD80_0222FD28: ; 0x0222FD28 add r6, r0, #0 add r0, r4, #0 add r1, r7, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString mov r2, #0 ldr r0, _0222FD84 ; =0x000F0200 str r2, [sp] diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 1824f32f..bece508d 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -3361,7 +3361,7 @@ MOD83_0222F074: ; 0x0222F074 add r7, r0, #0 add r1, r4, r1 mov r2, #0x24 - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r7, #0 bl String_dtor mov r0, #0xc @@ -3418,7 +3418,7 @@ MOD83_0222F074: ; 0x0222F074 lsl r1, r1, #2 add r1, r4, r1 mov r2, #0xfa - bl FUN_02021EF0 + bl CopyStringToU16Array add r0, r7, #0 bl String_dtor mov r0, #0xd2 @@ -6052,7 +6052,7 @@ MOD83_022305A4: ; 0x022305A4 add r1, r6, #0 mov r2, #0x24 add r4, r0, #0 - bl FUN_02021E8C + bl CopyU16ArrayToStringN mov r0, #0 mov r1, #6 bl FUN_02002E4C @@ -8557,7 +8557,7 @@ MOD83_02231A4C: ; 0x02231A4C lsl r1, r1, #2 add r1, r2, r1 mov r2, #0x24 - bl FUN_02021E8C + bl CopyU16ArrayToStringN mov r3, #0 str r3, [sp] mov r0, #0xff @@ -8713,7 +8713,7 @@ MOD83_02231B84: ; 0x02231B84 lsl r1, r1, #2 add r1, r2, r1 mov r2, #0xfa - bl FUN_02021E8C + bl CopyU16ArrayToStringN mov r3, #0 str r3, [sp] mov r0, #0xff @@ -15576,7 +15576,7 @@ _02235004: ldr r1, [r5, #0x38] add r7, r0, #0 mov r2, #0x40 - bl FUN_02021E8C + bl CopyU16ArrayToStringN add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 @@ -18164,7 +18164,7 @@ MOD83_02236484: ; 0x02236484 bl String_ctor add r1, sp, #8 add r6, r0, #0 - bl FUN_02021E28 + bl CopyU16ArrayToString mov r1, #1 str r1, [sp] mov r0, #2 diff --git a/arm9/src/msgdata.c b/arm9/src/msgdata.c index 5805a7eb..e90c7122 100644 --- a/arm9/src/msgdata.c +++ b/arm9/src/msgdata.c @@ -102,7 +102,7 @@ static void ReadMsgData_ExistingTable_ExistingString(struct MsgDataTable * table { MI_CpuCopy16((char *)table + alloc.offset, buf, 2 * alloc.length); Decrypt2(buf, alloc.length, num); - FUN_02021E8C(dest, buf, alloc.length); + CopyU16ArrayToStringN(dest, buf, alloc.length); FreeToHeap(buf); } } @@ -129,7 +129,7 @@ static struct String * ReadMsgData_ExistingTable_NewString(struct MsgDataTable * Decrypt2(buf, alloc.length, num); dest = String_ctor(alloc.length, heap_id); if (dest != NULL) - FUN_02021E8C(dest, buf, alloc.length); + CopyU16ArrayToStringN(dest, buf, alloc.length); FreeToHeap(buf); return dest; } @@ -173,7 +173,7 @@ static void ReadMsgData_ExistingNarc_ExistingString(NARC * narc, u32 group, u32 { NARC_ReadFromMember(narc, group, alloc.offset, size, buf); Decrypt2(buf, alloc.length, num); - FUN_02021E8C(dest, buf, alloc.length); + CopyU16ArrayToStringN(dest, buf, alloc.length); FreeToHeap(buf); return; } @@ -223,7 +223,7 @@ static struct String * ReadMsgData_ExistingNarc_NewString(NARC * narc, u32 group { NARC_ReadFromMember(narc, group, alloc.offset, size, buf); Decrypt2(buf, alloc.length, num); - FUN_02021E8C(dest, buf, alloc.length); + CopyU16ArrayToStringN(dest, buf, alloc.length); FreeToHeap(buf); } } diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index e56faac3..eb51d5fb 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -867,7 +867,7 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) } else { - FUN_02021E28(dest, blockC->nickname); + CopyU16ArrayToString(dest, blockC->nickname); } break; case MON_DATA_UNK_120: @@ -911,7 +911,7 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) } break; case MON_DATA_OT_NAME_2: - FUN_02021E28(dest, blockD->otTrainerName); + CopyU16ArrayToString(dest, blockD->otTrainerName); break; case MON_DATA_EGG_MET_YEAR: ret = blockD->dateEggReceived[0]; @@ -1321,11 +1321,11 @@ void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) break; case MON_DATA_NICKNAME_4: GetSpeciesNameIntoArray(blockA->species, 0, namebuf2); - FUN_02021EF0(value, namebuf3, POKEMON_NAME_LENGTH + 1); + CopyStringToU16Array(value, namebuf3, POKEMON_NAME_LENGTH + 1); blockB->isNicknamed = StringNotEqual(namebuf2, namebuf3); // fallthrough case MON_DATA_NICKNAME_3: - FUN_02021EF0(value, blockC->nickname, POKEMON_NAME_LENGTH + 1); + CopyStringToU16Array(value, blockC->nickname, POKEMON_NAME_LENGTH + 1); break; case MON_DATA_UNK_120: blockC->Unused = VALUE(u8); @@ -1368,7 +1368,7 @@ void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) } break; case MON_DATA_OT_NAME_2: - FUN_02021EF0(value, blockD->otTrainerName, OT_NAME_LENGTH + 1); + CopyStringToU16Array(value, blockD->otTrainerName, OT_NAME_LENGTH + 1); break; case MON_DATA_EGG_MET_YEAR: blockD->dateEggReceived[0] = VALUE(u8); @@ -1422,7 +1422,7 @@ void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) break; case MON_DATA_SPECIES_NAME: speciesName = GetSpeciesName(blockA->species, 0); - FUN_02021EF0(speciesName, blockC->nickname, POKEMON_NAME_LENGTH + 1); + CopyStringToU16Array(speciesName, blockC->nickname, POKEMON_NAME_LENGTH + 1); String_dtor(speciesName); break; } @@ -3686,7 +3686,7 @@ BOOL FUN_0206A9AC(struct BoxPokemon * boxmon, struct SaveBlock2 * sb2, u32 heap_ struct String * r6 = String_ctor(OT_NAME_LENGTH + 1, heap_id); BOOL ret = FALSE; GetBoxMonData(boxmon, MON_DATA_OT_NAME_2, r6); - if (myId == otId && myGender == otGender && FUN_02021CE0(r7, r6) == 0) + if (myId == otId && myGender == otGender && StringCompare(r7, r6) == 0) ret = TRUE; String_dtor(r6); String_dtor(r7); diff --git a/arm9/src/unk_02021934.c b/arm9/src/unk_02021934.c new file mode 100644 index 00000000..af76ab97 --- /dev/null +++ b/arm9/src/unk_02021934.c @@ -0,0 +1,367 @@ +#include "global.h" +#include "string16.h" +#include "heap.h" +#include "string_util.h" +#include "unk_0201B8B88.h" + +#pragma thumb on + +#define ASSERT_STR16(_str) ({ GF_ASSERT(_str != NULL); GF_ASSERT(_str->magic == STR16_MAGIC); }) + +void StrAddChar(struct String * str, u16 val); + +int StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6) +{ + int ret = 0; + u32 r4 = 0; + while (*arr != 0xFFFF) + { + if (*arr == 0xFFFE) + { + arr = FUN_0201B8B8(arr); + } + else if (*arr == 0xE000) + { + if (ret < r4 - r6) + ret = (int)(r4 - r6); + r4 = 0; + arr++; + } + else + { + r4 += (r6 + r7->unk_70(r7, *arr - 1)); + arr++; + } + } + if (ret < r4 - r6) + ret = (int)(r4 - r6); + return ret; +} + +int StringGetWidthNoSpacing(struct UnkStruct_0202199C * r6, const u16 * arr) +{ + int ret = 0; + while (*arr != 0xFFFF) + { + if (*arr == 0xFFFE) + { + if (FUN_0201B8E0(arr) == 0x0203) + { + ret = FUN_0201B914(arr, 0) - 12; + } + arr = FUN_0201B8B8(arr); + } + else + { + ret += r6->unk_70(r6, *arr - 1); + arr++; + } + } + return ret; +} + +struct String * String_ctor(u32 length, u32 heap_id) +{ + struct String * ret = AllocFromHeap(heap_id, length * 2 + 10); + if (ret != NULL) + { + ret->magic = STR16_MAGIC; + ret->maxsize = (u16)length; + ret->size = 0; + ret->data[0] = EOS; + } + return ret; +} + +void String_dtor(struct String * str) +{ + ASSERT_STR16(str); + str->magic = STR16_MAGIC | 1; + FreeToHeap(str); +} + +void StringSetEmpty(struct String * str) +{ + ASSERT_STR16(str); + str->size = 0; + str->data[0] = EOS; +} + +void StringCopy(struct String * dest, struct String * src) +{ + ASSERT_STR16(dest); + ASSERT_STR16(src); + if (dest->maxsize > src->size) + { + memcpy(dest->data, src->data, (u32)((src->size + 1) * 2)); + dest->size = src->size; + return; + } + GF_ASSERT(0); +} + +struct String * StringDup(struct String * src, u32 heap_id) +{ + ASSERT_STR16(src); + struct String * dest = String_ctor((u32)(src->size + 1), heap_id); + if (dest != NULL) + StringCopy(dest, src); + return dest; +} + +const u16 UNK_020EE67C[10] = { + 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, + 0xA7, 0xA8, 0xA9, 0xAA, 0xAB +}; + +const u16 UNK_020EE690[10] = { + 0x121, 0x122, 0x123, 0x124, 0x125, + 0x126, 0x127, 0x128, 0x129, 0x12A +}; + +const u32 UNK_020EE6A4[10] = { + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000 +}; + +void String16_FormatInteger(struct String * str, int num, u32 ndigits, int strConvMode, BOOL whichCharset) +{ + ASSERT_STR16(str); + + const u16 * charbase; + BOOL isNegative = (num < 0); + + if (str->maxsize > ndigits + isNegative) + { + charbase = (whichCharset == 0) ? UNK_020EE67C : UNK_020EE690; + StringSetEmpty(str); + if (isNegative) + { + num *= -1; + u16 hyphen = (u16)((whichCharset == 0) ? 0x00F1 : 0x01BE); + str->data[str->size++] = hyphen; + } + u32 dividend = UNK_020EE6A4[ndigits - 1]; + while (dividend != 0) + { + u16 digit = (u16)(num / dividend); + num -= dividend * digit; + if (strConvMode == 2) + { + u16 value = (u16)((digit < 10) ? charbase[digit] : 0x00E2); + str->data[str->size++] = value; + } + else if (digit != 0 || dividend == 1) + { + strConvMode = 2; + u16 value = (u16)((digit < 10) ? charbase[digit] : 0x00E2); + str->data[str->size++] = value; + } + else if (strConvMode == 1) + { + u16 value = (u16)((whichCharset == 0) ? 0x0001 : 0x01E2); + str->data[str->size++] = value; + } + dividend /= 10; + } + str->data[str->size] = EOS; + return; + } + GF_ASSERT(0); +} + +s64 String_atoi(struct String * str, BOOL * flag) +{ + s64 ret = 0; + s64 pow10 = 1; + if (str->size > 18) + { + return 0; + } + int ndigits = str->size - 1; + while (ndigits >= 0) { + // 0 + s64 digit = str->data[ndigits] - 0x00A2; + if (digit >= 10ull) + { + // 0 + digit = str->data[ndigits] - 0x0121; + if (digit >= 10ull) + { + *flag = FALSE; + return ret; + } + } + digit *= pow10; + ret += digit; + pow10 *= 10; + ndigits--; + } + *flag = TRUE; + return ret; +} + +BOOL StringCompare(struct String * str1, struct String * str2) +{ + ASSERT_STR16(str1); + ASSERT_STR16(str2); + + for (int i = 0; str1->data[i] == str2->data[i]; i++) + { + if (str1->data[i] == EOS) + return FALSE; + } + return TRUE; +} + +u16 StringGetLength(struct String * str) +{ + ASSERT_STR16(str); + return str->size; +} + +int StringCountLines(volatile struct String * str) +{ + ASSERT_STR16(str); + + int i, nline; + for (i = 0, nline = 1; i < str->size; i++) + { + if (str->data[i] == 0xE000) + nline++; + } + return nline; +} + +void StringGetLineN(struct String * dest, volatile struct String * src, u32 n) +{ + ASSERT_STR16(src); + ASSERT_STR16(dest); + + int i = 0; + if (n != 0) + { + for (i = 0; i < src->size; i++) + { + if (src->data[i] == 0xE000 && --n == 0) + { + i++; + break; + } + } + } + StringSetEmpty(dest); + for (; i < src->size; i++) + { + u16 c = src->data[i]; + if (c == 0xE000) + break; + StrAddChar(dest, c); + } +} + +void CopyU16ArrayToString(struct String * str, u16 * buf) +{ + ASSERT_STR16(str); + + for (str->size = 0; *buf != EOS;) + { + if (str->size >= str->maxsize - 1) + { + GF_ASSERT(0); + break; + } + str->data[str->size++] = *buf++; + } + str->data[str->size] = EOS; +} + +void CopyU16ArrayToStringN(struct String * str, u16 * buf, u32 length) +{ + ASSERT_STR16(str); + + if (length <= str->maxsize) + { + memcpy(str->data, buf, length * 2); + int i; + for (i = 0; i < length; i++) + { + if (str->data[i] == EOS) + break; + } + str->size = (u16)i; + if (i == length) + { + str->data[length - 1] = EOS; + } + return; + } + GF_ASSERT(0); +} + +void CopyStringToU16Array(struct String * str, u16 * buf, u32 length) +{ + ASSERT_STR16(str); + + if (str->size + 1 <= length) + { + memcpy(buf, str->data, (u32)((str->size + 1) * 2)); + return; + } + GF_ASSERT(0); +} + +u16 * String_c_str(struct String * str) +{ + ASSERT_STR16(str); + + return str->data; +} + +void StringCat(struct String * dest, struct String * src) +{ + ASSERT_STR16(dest); + ASSERT_STR16(src); + + if (dest->size + src->size + 1 <= dest->maxsize) + { + memcpy(dest->data + dest->size, src->data, (u32)(2 * (src->size + 1))); + dest->size += src->size; + return; + } + GF_ASSERT(0); +} + +void StrAddChar(struct String * str, u16 val) +{ + ASSERT_STR16(str); + + if (str->size + 1 < str->maxsize) + { + str->data[str->size++] = val; + str->data[str->size] = EOS; + return; + } + GF_ASSERT(0); +} + +void StrUpperFirstChar(struct String * str) +{ + ASSERT_STR16(str); + + if (str->size != 0) + { + // a z + if (str->data[0] >= 0x0145 && str->data[0] <= 0x015E) + // (a - A) + str->data[0] -= 26; + } +} diff --git a/include/proto.h b/include/proto.h index 849d6956..b45c2b48 100644 --- a/include/proto.h +++ b/include/proto.h @@ -6,10 +6,7 @@ #include "pokemon.h" // for struct definitions #include "string16.h" // for struct definitions -void StringCopy(u16 * dest, struct String * src); -void String_dtor(void * ptr); -void FUN_02021E28(u16 * dest, u16 * src); -void FUN_02021EF0(const struct String * src, u16 * dest, u32 count); +int FUN_0206AE00(int x); u32 GetItemAttr(u16 item, u32 a1, u32 a2); int FUN_02014C3C(u8); void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); diff --git a/include/string16.h b/include/string16.h index 71880020..255b44b8 100644 --- a/include/string16.h +++ b/include/string16.h @@ -10,11 +10,32 @@ struct String u8 padding[2]; }; +struct UnkStruct_0202199C +{ + u8 filler_00[0x70]; + int (*unk_70)(struct UnkStruct_0202199C *, int); +}; + +#define STR16_MAGIC 0xB6F8D2EC + struct String * String_ctor(u32 count, u32 heap_id); -int FUN_02021CE0(struct String *, struct String *); -int FUN_0206AE00(int x); -void FUN_02021E8C(struct String *, u16 *, u32); // copy +BOOL StringCompare(struct String *, struct String *); +void CopyU16ArrayToStringN(struct String *, u16 *, u32); // copy void StringSetEmpty(struct String *); // set empty struct String * StringDup(struct String *, u32 heap_id); +int StringGetWidth(struct UnkStruct_0202199C * r7, const u16 * arr, u32 r6); +int StringGetWidthNoSpacing(struct UnkStruct_0202199C * r6, const u16 * arr); +void String_dtor(struct String * str); +void StringCopy(struct String * dest, struct String * src); +void String16_FormatInteger(struct String * str, int num, u32 ndigits, int strConvMode, BOOL whichCharset); +s64 String_atoi(struct String * str, BOOL * flag); +u16 StringGetLength(struct String * str); +int StringCountLines(volatile struct String * str); +void StringGetLineN(struct String * dest, volatile struct String * src, u32 n); +void CopyU16ArrayToString(struct String * str, u16 * buf); +void CopyStringToU16Array(struct String * str, u16 * buf, u32 length); +u16 * String_c_str(struct String * str); +void StringCat(struct String * dest, struct String * src); +void StrUpperFirstChar(struct String * str); #endif //POKEDIAMOND_STRING16_H |