From 20b8fa77bcd1875640cb2bb61375bcf0a0bdd45f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Aug 2021 08:18:54 -0400 Subject: unk_02015D14 --- arm9/asm/unk_02015D14.s | 238 ----------------------------------- arm9/src/text.c | 2 +- arm9/src/unk_02015D14.c | 325 ++++++++++++++++++++++++++++++++++++++++++++++++ include/unk_02015D14.h | 6 + 4 files changed, 332 insertions(+), 239 deletions(-) delete mode 100644 arm9/asm/unk_02015D14.s create mode 100644 arm9/src/unk_02015D14.c create mode 100644 include/unk_02015D14.h diff --git a/arm9/asm/unk_02015D14.s b/arm9/asm/unk_02015D14.s deleted file mode 100644 index 7a67039f..00000000 --- a/arm9/asm/unk_02015D14.s +++ /dev/null @@ -1,238 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020ED734 -UNK_020ED734: ; 0x020ED734 - .short 0x0001, 0x01DE, 0x0003, 0x0003, 0x0005, 0x0005, 0x0007, 0x0007 - .short 0x0009, 0x0009, 0x000B, 0x000B, 0x000C, 0x000C, 0x000E, 0x000E - .short 0x0010, 0x0010, 0x0012, 0x0012, 0x0014, 0x0014, 0x0016, 0x0016 - .short 0x0018, 0x0018, 0x001A, 0x001A, 0x001C, 0x001C, 0x001E, 0x001E - .short 0x0020, 0x0020, 0x0022, 0x0022, 0x0025, 0x0025, 0x0027, 0x0027 - .short 0x0029, 0x0029, 0x002B, 0x002B, 0x002C, 0x002C, 0x002D, 0x002D - .short 0x002E, 0x002E, 0x002F, 0x002F, 0x0030, 0x0030, 0x0033, 0x0033 - .short 0x0036, 0x0036, 0x0039, 0x0039, 0x003C, 0x003C, 0x003F, 0x003F - .short 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042, 0x0043, 0x0043 - .short 0x0045, 0x0045, 0x0047, 0x0047, 0x0049, 0x0049, 0x004A, 0x004A - .short 0x004B, 0x004B, 0x004C, 0x004C, 0x004D, 0x004D, 0x004E, 0x004E - .short 0x004F, 0x004F, 0x0050, 0x0050, 0x0051, 0x0051, 0x0002, 0x0002 - .short 0x0004, 0x0004, 0x0006, 0x0006, 0x0008, 0x0008, 0x000A, 0x000A - .short 0x0044, 0x0044, 0x0046, 0x0046, 0x0048, 0x0048, 0x000D, 0x000D - .short 0x000F, 0x000F, 0x0011, 0x0011, 0x0013, 0x0013, 0x0015, 0x0015 - .short 0x0017, 0x0017, 0x0019, 0x0019, 0x001B, 0x001B, 0x001D, 0x001D - .short 0x001F, 0x001F, 0x0021, 0x0021, 0x0023, 0x0023, 0x0026, 0x0026 - .short 0x0028, 0x0028, 0x002A, 0x002A, 0x0031, 0x0031, 0x0034, 0x0034 - .short 0x0037, 0x0037, 0x003A, 0x003A, 0x003D, 0x003D, 0x0032, 0x0032 - .short 0x0035, 0x0035, 0x0038, 0x0038, 0x003B, 0x003B, 0x003E, 0x003E - .short 0x0024, 0x0024, 0x0053, 0x0053, 0x0055, 0x0055, 0x0057, 0x0057 - .short 0x0059, 0x0059, 0x005B, 0x005B, 0x005C, 0x005C, 0x005E, 0x005E - .short 0x0060, 0x0060, 0x0062, 0x0062, 0x0064, 0x0064, 0x0066, 0x0066 - .short 0x0068, 0x0068, 0x006A, 0x006A, 0x006C, 0x006C, 0x006E, 0x006E - .short 0x0070, 0x0070, 0x0072, 0x0072, 0x0075, 0x0075, 0x0077, 0x0077 - .short 0x0079, 0x0079, 0x007B, 0x007B, 0x007C, 0x007C, 0x007D, 0x007D - .short 0x007E, 0x007E, 0x007F, 0x007F, 0x0080, 0x0080, 0x0083, 0x0083 - .short 0x0086, 0x0086, 0x0089, 0x0089, 0x008C, 0x008C, 0x008F, 0x008F - .short 0x0090, 0x0090, 0x0091, 0x0091, 0x0092, 0x0092, 0x0093, 0x0093 - .short 0x0095, 0x0095, 0x0097, 0x0097, 0x0099, 0x0099, 0x009A, 0x009A - .short 0x009B, 0x009B, 0x009C, 0x009C, 0x009D, 0x009D, 0x009E, 0x009E - .short 0x009F, 0x009F, 0x00A0, 0x00A0, 0x00A1, 0x00A1, 0x0052, 0x0052 - .short 0x0054, 0x0054, 0x0056, 0x0056, 0x0058, 0x0058, 0x005A, 0x005A - .short 0x0094, 0x0094, 0x0096, 0x0096, 0x0098, 0x0098, 0x005D, 0x005D - .short 0x005F, 0x005F, 0x0061, 0x0061, 0x0063, 0x0063, 0x0065, 0x0065 - .short 0x0067, 0x0067, 0x0069, 0x0069, 0x006B, 0x006B, 0x006D, 0x006D - .short 0x006F, 0x006F, 0x0071, 0x0071, 0x0073, 0x0073, 0x0076, 0x0076 - .short 0x0078, 0x0078, 0x007A, 0x007A, 0x0081, 0x0081, 0x0084, 0x0084 - .short 0x0087, 0x0087, 0x008A, 0x008A, 0x008D, 0x008D, 0x0082, 0x0082 - .short 0x0085, 0x0085, 0x0088, 0x0088, 0x008B, 0x008B, 0x008E, 0x008E - .short 0x0074, 0x0074, 0x00A2, 0x0121, 0x00A3, 0x0122, 0x00A4, 0x0123 - .short 0x00A5, 0x0124, 0x00A6, 0x0125, 0x00A7, 0x0126, 0x00A8, 0x0127 - .short 0x00A9, 0x0128, 0x00AA, 0x0129, 0x00AB, 0x012A, 0x00E1, 0x01AB - .short 0x00E2, 0x01AC, 0x00E4, 0x01AE, 0x00F1, 0x01BE, 0x00E6, 0x01B0 - .short 0x00E5, 0x01AF, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00E8, 0x01B2 - .short 0x00E9, 0x01B3, 0x00EE, 0x01BB, 0x00EF, 0x01BC, 0x0112, 0x0112 - .short 0x00E3, 0x01AD, 0x00F2, 0x0176, 0x00E7, 0x01B1, 0x00AC, 0x012B - .short 0x00AD, 0x012C, 0x00AE, 0x012D, 0x00AF, 0x012E, 0x00B0, 0x012F - .short 0x00B1, 0x0130, 0x00B2, 0x0131, 0x00B3, 0x0132, 0x00B4, 0x0133 - .short 0x00B5, 0x0134, 0x00B6, 0x0135, 0x00B7, 0x0136, 0x00B8, 0x0137 - .short 0x00B9, 0x0138, 0x00BA, 0x0139, 0x00BB, 0x013A, 0x00BC, 0x013B - .short 0x00BD, 0x013C, 0x00BE, 0x013D, 0x00BF, 0x013E, 0x00C0, 0x013F - .short 0x00C1, 0x0140, 0x00C2, 0x0141, 0x00C3, 0x0142, 0x00C4, 0x0143 - .short 0x00C5, 0x0144, 0x00C6, 0x0145, 0x00C7, 0x0146, 0x00C8, 0x0147 - .short 0x00C9, 0x0148, 0x00CA, 0x0149, 0x00CB, 0x014A, 0x00CC, 0x014B - .short 0x00CD, 0x014C, 0x00CE, 0x014D, 0x00CF, 0x014E, 0x00D0, 0x014F - .short 0x00D1, 0x0150, 0x00D2, 0x0151, 0x00D3, 0x0152, 0x00D4, 0x0153 - .short 0x00D5, 0x0154, 0x00D6, 0x0155, 0x00D7, 0x0156, 0x00D8, 0x0157 - .short 0x00D9, 0x0158, 0x00DA, 0x0159, 0x00DB, 0x015A, 0x00DC, 0x015B - .short 0x00DD, 0x015C, 0x00DE, 0x015D, 0x00DF, 0x015E, 0x011F, 0x011F - .short 0x00F6, 0x01C4, 0x0163, 0x0163, 0x0175, 0x0175, 0x017B, 0x017B - .short 0x0183, 0x0183, 0x0195, 0x0195, 0x019B, 0x019B - - .text - - thumb_func_start FUN_02015D14 -FUN_02015D14: ; 0x02015D14 - cmp r0, #0x7 - bhi _02015D34 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02015D24: ; jump table (using 16-bit offset) - .short _02015D34 - _02015D24 - 2; case 0 - .short _02015D34 - _02015D24 - 2; case 1 - .short _02015D38 - _02015D24 - 2; case 2 - .short _02015D3E - _02015D24 - 2; case 3 - .short _02015D38 - _02015D24 - 2; case 4 - .short _02015D42 - _02015D24 - 2; case 5 - .short _02015D34 - _02015D24 - 2; case 6 - .short _02015D38 - _02015D24 - 2; case 7 -_02015D34: - mov r0, #0xea - bx lr -_02015D38: - mov r0, #0x6d - lsl r0, r0, #0x2 - bx lr -_02015D3E: - ldr r0, _02015D48 ; =0x000001B7 - bx lr -_02015D42: - ldr r0, _02015D4C ; =0x000001B6 - bx lr - nop -_02015D48: .word 0x000001B7 -_02015D4C: .word 0x000001B6 - - thumb_func_start FUN_02015D50 -FUN_02015D50: ; 0x02015D50 - cmp r0, #0x7 - bhi _02015D70 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02015D60: ; jump table (using 16-bit offset) - .short _02015D70 - _02015D60 - 2; case 0 - .short _02015D70 - _02015D60 - 2; case 1 - .short _02015D74 - _02015D60 - 2; case 2 - .short _02015D78 - _02015D60 - 2; case 3 - .short _02015D74 - _02015D60 - 2; case 4 - .short _02015D7E - _02015D60 - 2; case 5 - .short _02015D70 - _02015D60 - 2; case 6 - .short _02015D74 - _02015D60 - 2; case 7 -_02015D70: - mov r0, #0xeb - bx lr -_02015D74: - ldr r0, _02015D84 ; =0x000001B5 - bx lr -_02015D78: - mov r0, #0x6e - lsl r0, r0, #0x2 - bx lr -_02015D7E: - mov r0, #0x6d - lsl r0, r0, #0x2 - bx lr - .balign 4 -_02015D84: .word 0x000001B5 - - thumb_func_start FUN_02015D88 -FUN_02015D88: ; 0x02015D88 - push {r3-r7, lr} - sub sp, #0x10 - add r6, r3, #0x0 - str r0, [sp, #0x0] - str r1, [sp, #0x4] - str r2, [sp, #0x8] - cmp r6, #0x1 - beq _02015D9C - mov r2, #0x1 - b _02015D9E -_02015D9C: - mov r2, #0x0 -_02015D9E: - ldr r0, [sp, #0x8] - mov r4, #0x0 - sub r0, r0, #0x1 - str r0, [sp, #0xc] - beq _02015E18 - ldr r1, _02015E28 ; =UNK_020ED734 - lsl r0, r2, #0x1 - ldr r5, [sp, #0x4] - add r7, r1, r0 -_02015DB0: - ldr r0, [sp, #0x0] - ldrb r0, [r0, r4] - cmp r0, #0xff - beq _02015E18 - cmp r0, #0xf7 - blo _02015DEA - ldr r0, [sp, #0x8] - sub r3, r0, #0x1 - cmp r3, #0xa - blo _02015DC6 - mov r3, #0xa -_02015DC6: - mov r1, #0x0 - cmp r3, #0x0 - ble _02015DDC - mov r0, #0x6b - ldr r2, [sp, #0x4] - lsl r0, r0, #0x2 -_02015DD2: - add r1, r1, #0x1 - strh r0, [r2, #0x0] - add r2, r2, #0x2 - cmp r1, r3 - blt _02015DD2 -_02015DDC: - ldr r0, [sp, #0x4] - ldr r2, _02015E2C ; =0x0000FFFF - lsl r1, r1, #0x1 - strh r2, [r0, r1] - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_02015DEA: - lsl r0, r0, #0x2 - ldrh r0, [r7, r0] - cmp r0, #0xea - beq _02015DF8 - cmp r0, #0xeb - beq _02015E02 - b _02015E0C -_02015DF8: - add r0, r6, #0x0 - bl FUN_02015D14 - strh r0, [r5, #0x0] - b _02015E0E -_02015E02: - add r0, r6, #0x0 - bl FUN_02015D50 - strh r0, [r5, #0x0] - b _02015E0E -_02015E0C: - strh r0, [r5, #0x0] -_02015E0E: - ldr r0, [sp, #0xc] - add r4, r4, #0x1 - add r5, r5, #0x2 - cmp r4, r0 - blo _02015DB0 -_02015E18: - ldr r2, _02015E2C ; =0x0000FFFF - ldr r0, [sp, #0x4] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} - nop -_02015E28: .word UNK_020ED734 -_02015E2C: .word 0x0000FFFF diff --git a/arm9/src/text.c b/arm9/src/text.c index 64b3587e..f178fa9d 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -282,7 +282,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow sp20[2] = shadowColor; sp20[3] = bgColor; - // FIXME: Need these to be accessed by a pointer to UNK_021C570C + // These are accessed by a pointer to UNK_021C570C due to -ipa file UNK_021C5712 = bgColor; UNK_021C570E = fgColor; UNK_021C5710 = shadowColor; diff --git a/arm9/src/unk_02015D14.c b/arm9/src/unk_02015D14.c new file mode 100644 index 00000000..7a6598a2 --- /dev/null +++ b/arm9/src/unk_02015D14.c @@ -0,0 +1,325 @@ +#include "global.h" +#include "unk_02015D14.h" + +static const u16 UNK_020ED734[][2] = { + {0x0001, 0x01DE}, + {0x0003, 0x0003}, + {0x0005, 0x0005}, + {0x0007, 0x0007}, + {0x0009, 0x0009}, + {0x000B, 0x000B}, + {0x000C, 0x000C}, + {0x000E, 0x000E}, + {0x0010, 0x0010}, + {0x0012, 0x0012}, + {0x0014, 0x0014}, + {0x0016, 0x0016}, + {0x0018, 0x0018}, + {0x001A, 0x001A}, + {0x001C, 0x001C}, + {0x001E, 0x001E}, + {0x0020, 0x0020}, + {0x0022, 0x0022}, + {0x0025, 0x0025}, + {0x0027, 0x0027}, + {0x0029, 0x0029}, + {0x002B, 0x002B}, + {0x002C, 0x002C}, + {0x002D, 0x002D}, + {0x002E, 0x002E}, + {0x002F, 0x002F}, + {0x0030, 0x0030}, + {0x0033, 0x0033}, + {0x0036, 0x0036}, + {0x0039, 0x0039}, + {0x003C, 0x003C}, + {0x003F, 0x003F}, + {0x0040, 0x0040}, + {0x0041, 0x0041}, + {0x0042, 0x0042}, + {0x0043, 0x0043}, + {0x0045, 0x0045}, + {0x0047, 0x0047}, + {0x0049, 0x0049}, + {0x004A, 0x004A}, + {0x004B, 0x004B}, + {0x004C, 0x004C}, + {0x004D, 0x004D}, + {0x004E, 0x004E}, + {0x004F, 0x004F}, + {0x0050, 0x0050}, + {0x0051, 0x0051}, + {0x0002, 0x0002}, + {0x0004, 0x0004}, + {0x0006, 0x0006}, + {0x0008, 0x0008}, + {0x000A, 0x000A}, + {0x0044, 0x0044}, + {0x0046, 0x0046}, + {0x0048, 0x0048}, + {0x000D, 0x000D}, + {0x000F, 0x000F}, + {0x0011, 0x0011}, + {0x0013, 0x0013}, + {0x0015, 0x0015}, + {0x0017, 0x0017}, + {0x0019, 0x0019}, + {0x001B, 0x001B}, + {0x001D, 0x001D}, + {0x001F, 0x001F}, + {0x0021, 0x0021}, + {0x0023, 0x0023}, + {0x0026, 0x0026}, + {0x0028, 0x0028}, + {0x002A, 0x002A}, + {0x0031, 0x0031}, + {0x0034, 0x0034}, + {0x0037, 0x0037}, + {0x003A, 0x003A}, + {0x003D, 0x003D}, + {0x0032, 0x0032}, + {0x0035, 0x0035}, + {0x0038, 0x0038}, + {0x003B, 0x003B}, + {0x003E, 0x003E}, + {0x0024, 0x0024}, + {0x0053, 0x0053}, + {0x0055, 0x0055}, + {0x0057, 0x0057}, + {0x0059, 0x0059}, + {0x005B, 0x005B}, + {0x005C, 0x005C}, + {0x005E, 0x005E}, + {0x0060, 0x0060}, + {0x0062, 0x0062}, + {0x0064, 0x0064}, + {0x0066, 0x0066}, + {0x0068, 0x0068}, + {0x006A, 0x006A}, + {0x006C, 0x006C}, + {0x006E, 0x006E}, + {0x0070, 0x0070}, + {0x0072, 0x0072}, + {0x0075, 0x0075}, + {0x0077, 0x0077}, + {0x0079, 0x0079}, + {0x007B, 0x007B}, + {0x007C, 0x007C}, + {0x007D, 0x007D}, + {0x007E, 0x007E}, + {0x007F, 0x007F}, + {0x0080, 0x0080}, + {0x0083, 0x0083}, + {0x0086, 0x0086}, + {0x0089, 0x0089}, + {0x008C, 0x008C}, + {0x008F, 0x008F}, + {0x0090, 0x0090}, + {0x0091, 0x0091}, + {0x0092, 0x0092}, + {0x0093, 0x0093}, + {0x0095, 0x0095}, + {0x0097, 0x0097}, + {0x0099, 0x0099}, + {0x009A, 0x009A}, + {0x009B, 0x009B}, + {0x009C, 0x009C}, + {0x009D, 0x009D}, + {0x009E, 0x009E}, + {0x009F, 0x009F}, + {0x00A0, 0x00A0}, + {0x00A1, 0x00A1}, + {0x0052, 0x0052}, + {0x0054, 0x0054}, + {0x0056, 0x0056}, + {0x0058, 0x0058}, + {0x005A, 0x005A}, + {0x0094, 0x0094}, + {0x0096, 0x0096}, + {0x0098, 0x0098}, + {0x005D, 0x005D}, + {0x005F, 0x005F}, + {0x0061, 0x0061}, + {0x0063, 0x0063}, + {0x0065, 0x0065}, + {0x0067, 0x0067}, + {0x0069, 0x0069}, + {0x006B, 0x006B}, + {0x006D, 0x006D}, + {0x006F, 0x006F}, + {0x0071, 0x0071}, + {0x0073, 0x0073}, + {0x0076, 0x0076}, + {0x0078, 0x0078}, + {0x007A, 0x007A}, + {0x0081, 0x0081}, + {0x0084, 0x0084}, + {0x0087, 0x0087}, + {0x008A, 0x008A}, + {0x008D, 0x008D}, + {0x0082, 0x0082}, + {0x0085, 0x0085}, + {0x0088, 0x0088}, + {0x008B, 0x008B}, + {0x008E, 0x008E}, + {0x0074, 0x0074}, + {0x00A2, 0x0121}, + {0x00A3, 0x0122}, + {0x00A4, 0x0123}, + {0x00A5, 0x0124}, + {0x00A6, 0x0125}, + {0x00A7, 0x0126}, + {0x00A8, 0x0127}, + {0x00A9, 0x0128}, + {0x00AA, 0x0129}, + {0x00AB, 0x012A}, + {0x00E1, 0x01AB}, + {0x00E2, 0x01AC}, + {0x00E4, 0x01AE}, + {0x00F1, 0x01BE}, + {0x00E6, 0x01B0}, + {0x00E5, 0x01AF}, + {0x00EA, 0x00EA}, + {0x00EB, 0x00EB}, + {0x00E8, 0x01B2}, + {0x00E9, 0x01B3}, + {0x00EE, 0x01BB}, + {0x00EF, 0x01BC}, + {0x0112, 0x0112}, + {0x00E3, 0x01AD}, + {0x00F2, 0x0176}, + {0x00E7, 0x01B1}, + {0x00AC, 0x012B}, + {0x00AD, 0x012C}, + {0x00AE, 0x012D}, + {0x00AF, 0x012E}, + {0x00B0, 0x012F}, + {0x00B1, 0x0130}, + {0x00B2, 0x0131}, + {0x00B3, 0x0132}, + {0x00B4, 0x0133}, + {0x00B5, 0x0134}, + {0x00B6, 0x0135}, + {0x00B7, 0x0136}, + {0x00B8, 0x0137}, + {0x00B9, 0x0138}, + {0x00BA, 0x0139}, + {0x00BB, 0x013A}, + {0x00BC, 0x013B}, + {0x00BD, 0x013C}, + {0x00BE, 0x013D}, + {0x00BF, 0x013E}, + {0x00C0, 0x013F}, + {0x00C1, 0x0140}, + {0x00C2, 0x0141}, + {0x00C3, 0x0142}, + {0x00C4, 0x0143}, + {0x00C5, 0x0144}, + {0x00C6, 0x0145}, + {0x00C7, 0x0146}, + {0x00C8, 0x0147}, + {0x00C9, 0x0148}, + {0x00CA, 0x0149}, + {0x00CB, 0x014A}, + {0x00CC, 0x014B}, + {0x00CD, 0x014C}, + {0x00CE, 0x014D}, + {0x00CF, 0x014E}, + {0x00D0, 0x014F}, + {0x00D1, 0x0150}, + {0x00D2, 0x0151}, + {0x00D3, 0x0152}, + {0x00D4, 0x0153}, + {0x00D5, 0x0154}, + {0x00D6, 0x0155}, + {0x00D7, 0x0156}, + {0x00D8, 0x0157}, + {0x00D9, 0x0158}, + {0x00DA, 0x0159}, + {0x00DB, 0x015A}, + {0x00DC, 0x015B}, + {0x00DD, 0x015C}, + {0x00DE, 0x015D}, + {0x00DF, 0x015E}, + {0x011F, 0x011F}, + {0x00F6, 0x01C4}, + {0x0163, 0x0163}, + {0x0175, 0x0175}, + {0x017B, 0x017B}, + {0x0183, 0x0183}, + {0x0195, 0x0195}, + {0x019B, 0x019B}, +}; + +static THUMB_FUNC u16 FUN_02015D14(u32 a0) +{ + switch (a0) + { + default: + return 0xEA; + case 2: + case 4: + case 7: + return 0x1B4; + case 3: + return 0x1B7; + case 5: + return 0x1B6; + } +} + +static THUMB_FUNC u16 FUN_02015D50(u32 a0) +{ + switch (a0) + { + default: + return 0xEB; + case 2: + case 4: + case 7: + return 0x1B5; + case 3: + return 0x1B8; + case 5: + return 0x1B4; + } +} + +THUMB_FUNC BOOL FUN_02015D88(const u8 * a, u16 * b, u32 c, u32 d) +{ + s32 r2; + u32 r4; + s32 r3; + s32 r1; + + r2 = (d != 1) ? 1 : 0; + for (r4 = 0; r4 < c - 1; r4++) + { + if (a[r4] == 0xFF) + break; + if (a[r4] >= 0xF7) + { + r3 = (s32)((c - 1) < 10 ? (c - 1) : 10); + for (r1 = 0; r1 < r3; r1++) + { + b[r1] = 0x1AC; + } + b[r1] = 0xFFFF; + return FALSE; + } + switch (UNK_020ED734[a[r4]][r2]) + { + case 0xEA: + b[r4] = FUN_02015D14(d); + break; + case 0xEB: + b[r4] = FUN_02015D50(d); + break; + default: + b[r4] = UNK_020ED734[a[r4]][r2]; + break; + } + } + b[r4] = 0xFFFF; + return TRUE; +} diff --git a/include/unk_02015D14.h b/include/unk_02015D14.h new file mode 100644 index 00000000..c20cd9c9 --- /dev/null +++ b/include/unk_02015D14.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_UNK_02015D14_H +#define POKEDIAMOND_UNK_02015D14_H + +BOOL FUN_02015D88(const u8 * a, u16 * b, u32 c, u32 d); + +#endif //POKEDIAMOND_UNK_02015D14_H -- cgit v1.2.3 From ed84d6a9a3bfc2c092e22b8e941cac775dc14127 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Aug 2021 08:44:22 -0400 Subject: Rename unk_0201D514 --> rs_migrate_string; document --- arm9/arm9.lsf | 2 +- arm9/global.inc | 2 +- arm9/modules/83/asm/module_83.s | 10 +- arm9/src/rs_migrate_string.c | 327 ++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_02015D14.c | 325 --------------------------------------- include/rs_migrate_string.h | 26 ++++ include/unk_02015D14.h | 6 - 7 files changed, 360 insertions(+), 338 deletions(-) create mode 100644 arm9/src/rs_migrate_string.c delete mode 100644 arm9/src/unk_02015D14.c create mode 100644 include/rs_migrate_string.h delete mode 100644 include/unk_02015D14.h diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 64944997..51b0b5c2 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -48,7 +48,7 @@ Static arm9 Object unk_02014590.o Object unk_02014BF4.o Object unk_02015CC0.o - Object unk_02015D14.o + Object rs_migrate_string.o Object unk_02015E30.o Object game_init.o Object heap.o diff --git a/arm9/global.inc b/arm9/global.inc index f7cf43c0..98ee4d76 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1002,7 +1002,7 @@ .extern FUN_02015CC0 .extern FUN_02015CE0 .extern FUN_02015CF8 -.extern FUN_02015D88 +.extern ConvertRSStringToDPStringInternational .extern FUN_02015E30 .extern FUN_02015E3C .extern FUN_02015E60 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 06fa49b6..0cdcae12 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -17094,7 +17094,7 @@ _02235B7C: add r0, r4, r0 add r0, r1, r0 add r1, sp, #0 - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, sp, #0 str r0, [sp, #0x4c] add r0, r5, #0 @@ -17237,7 +17237,7 @@ _02235CCA: add r0, #2 add r1, sp, #8 mov r2, #0xb - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, sp, #8 str r0, [sp, #0x64] mov r0, #0 @@ -18156,7 +18156,7 @@ MOD83_02236484: ; 0x02236484 add r0, r4, #0 add r1, sp, #8 mov r2, #8 - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational mov r0, #0x4e bl ScrStrBufs_new add r4, r0, #0 @@ -22504,7 +22504,7 @@ _022384FE: add r0, sp, #0x24 add r1, sp, #0xc mov r2, #0xc - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, r4, #0 mov r1, #0x75 add r2, sp, #0xc @@ -22541,7 +22541,7 @@ _0223853E: add r0, sp, #0x24 add r1, sp, #0xc mov r2, #8 - bl FUN_02015D88 + bl ConvertRSStringToDPStringInternational add r0, r4, #0 mov r1, #0x8f add r2, sp, #0xc diff --git a/arm9/src/rs_migrate_string.c b/arm9/src/rs_migrate_string.c new file mode 100644 index 00000000..46752374 --- /dev/null +++ b/arm9/src/rs_migrate_string.c @@ -0,0 +1,327 @@ +#include "global.h" +#include "string_util.h" +#include "rs_migrate_string.h" + +static const u16 conversion_table[][2] = { + {0x0001, 0x01DE}, // + {0x0003, 0x0003}, // あ + {0x0005, 0x0005}, // い + {0x0007, 0x0007}, // う + {0x0009, 0x0009}, // え + {0x000B, 0x000B}, // お + {0x000C, 0x000C}, // か + {0x000E, 0x000E}, // き + {0x0010, 0x0010}, // く + {0x0012, 0x0012}, // け + {0x0014, 0x0014}, // こ + {0x0016, 0x0016}, // さ + {0x0018, 0x0018}, // し + {0x001A, 0x001A}, // す + {0x001C, 0x001C}, // せ + {0x001E, 0x001E}, // そ + {0x0020, 0x0020}, // た + {0x0022, 0x0022}, // ち + {0x0025, 0x0025}, // つ + {0x0027, 0x0027}, // て + {0x0029, 0x0029}, // と + {0x002B, 0x002B}, // な + {0x002C, 0x002C}, // に + {0x002D, 0x002D}, // ぬ + {0x002E, 0x002E}, // ね + {0x002F, 0x002F}, // の + {0x0030, 0x0030}, // は + {0x0033, 0x0033}, // ひ + {0x0036, 0x0036}, // ふ + {0x0039, 0x0039}, // へ + {0x003C, 0x003C}, // ほ + {0x003F, 0x003F}, // ま + {0x0040, 0x0040}, // み + {0x0041, 0x0041}, // む + {0x0042, 0x0042}, // め + {0x0043, 0x0043}, // も + {0x0045, 0x0045}, // や + {0x0047, 0x0047}, // ゆ + {0x0049, 0x0049}, // よ + {0x004A, 0x004A}, // ら + {0x004B, 0x004B}, // り + {0x004C, 0x004C}, // る + {0x004D, 0x004D}, // れ + {0x004E, 0x004E}, // ろ + {0x004F, 0x004F}, // わ + {0x0050, 0x0050}, // を + {0x0051, 0x0051}, // ん + {0x0002, 0x0002}, // ぁ + {0x0004, 0x0004}, // ぃ + {0x0006, 0x0006}, // ぅ + {0x0008, 0x0008}, // ぇ + {0x000A, 0x000A}, // ぉ + {0x0044, 0x0044}, // ゃ + {0x0046, 0x0046}, // ゅ + {0x0048, 0x0048}, // ょ + {0x000D, 0x000D}, // が + {0x000F, 0x000F}, // ぎ + {0x0011, 0x0011}, // ぐ + {0x0013, 0x0013}, // げ + {0x0015, 0x0015}, // ご + {0x0017, 0x0017}, // ざ + {0x0019, 0x0019}, // じ + {0x001B, 0x001B}, // ず + {0x001D, 0x001D}, // ぜ + {0x001F, 0x001F}, // ぞ + {0x0021, 0x0021}, // だ + {0x0023, 0x0023}, // ぢ + {0x0026, 0x0026}, // づ + {0x0028, 0x0028}, // で + {0x002A, 0x002A}, // ど + {0x0031, 0x0031}, // ば + {0x0034, 0x0034}, // び + {0x0037, 0x0037}, // ぶ + {0x003A, 0x003A}, // べ + {0x003D, 0x003D}, // ぼ + {0x0032, 0x0032}, // ぱ + {0x0035, 0x0035}, // ぴ + {0x0038, 0x0038}, // ぷ + {0x003B, 0x003B}, // ぺ + {0x003E, 0x003E}, // ぽ + {0x0024, 0x0024}, // っ + {0x0053, 0x0053}, // ア + {0x0055, 0x0055}, // イ + {0x0057, 0x0057}, // ウ + {0x0059, 0x0059}, // エ + {0x005B, 0x005B}, // オ + {0x005C, 0x005C}, // カ + {0x005E, 0x005E}, // キ + {0x0060, 0x0060}, // ク + {0x0062, 0x0062}, // ケ + {0x0064, 0x0064}, // コ + {0x0066, 0x0066}, // サ + {0x0068, 0x0068}, // シ + {0x006A, 0x006A}, // ス + {0x006C, 0x006C}, // セ + {0x006E, 0x006E}, // ソ + {0x0070, 0x0070}, // タ + {0x0072, 0x0072}, // チ + {0x0075, 0x0075}, // ツ + {0x0077, 0x0077}, // テ + {0x0079, 0x0079}, // ト + {0x007B, 0x007B}, // ナ + {0x007C, 0x007C}, // ニ + {0x007D, 0x007D}, // ヌ + {0x007E, 0x007E}, // ネ + {0x007F, 0x007F}, // ノ + {0x0080, 0x0080}, // ハ + {0x0083, 0x0083}, // ヒ + {0x0086, 0x0086}, // フ + {0x0089, 0x0089}, // ヘ + {0x008C, 0x008C}, // ホ + {0x008F, 0x008F}, // マ + {0x0090, 0x0090}, // ミ + {0x0091, 0x0091}, // ム + {0x0092, 0x0092}, // メ + {0x0093, 0x0093}, // モ + {0x0095, 0x0095}, // ヤ + {0x0097, 0x0097}, // ユ + {0x0099, 0x0099}, // ヨ + {0x009A, 0x009A}, // ラ + {0x009B, 0x009B}, // リ + {0x009C, 0x009C}, // ル + {0x009D, 0x009D}, // レ + {0x009E, 0x009E}, // ロ + {0x009F, 0x009F}, // ワ + {0x00A0, 0x00A0}, // ヲ + {0x00A1, 0x00A1}, // ン + {0x0052, 0x0052}, // ァ + {0x0054, 0x0054}, // ィ + {0x0056, 0x0056}, // ゥ + {0x0058, 0x0058}, // ェ + {0x005A, 0x005A}, // ォ + {0x0094, 0x0094}, // ャ + {0x0096, 0x0096}, // ュ + {0x0098, 0x0098}, // ョ + {0x005D, 0x005D}, // ガ + {0x005F, 0x005F}, // ギ + {0x0061, 0x0061}, // グ + {0x0063, 0x0063}, // ゲ + {0x0065, 0x0065}, // ゴ + {0x0067, 0x0067}, // ザ + {0x0069, 0x0069}, // ジ + {0x006B, 0x006B}, // ズ + {0x006D, 0x006D}, // ゼ + {0x006F, 0x006F}, // ゾ + {0x0071, 0x0071}, // ダ + {0x0073, 0x0073}, // ヂ + {0x0076, 0x0076}, // ヅ + {0x0078, 0x0078}, // デ + {0x007A, 0x007A}, // ド + {0x0081, 0x0081}, // バ + {0x0084, 0x0084}, // ビ + {0x0087, 0x0087}, // ブ + {0x008A, 0x008A}, // ベ + {0x008D, 0x008D}, // ボ + {0x0082, 0x0082}, // パ + {0x0085, 0x0085}, // ピ + {0x0088, 0x0088}, // プ + {0x008B, 0x008B}, // ペ + {0x008E, 0x008E}, // ポ + {0x0074, 0x0074}, // ッ + {0x00A2, 0x0121}, // 0 + {0x00A3, 0x0122}, // 1 + {0x00A4, 0x0123}, // 2 + {0x00A5, 0x0124}, // 3 + {0x00A6, 0x0125}, // 4 + {0x00A7, 0x0126}, // 5 + {0x00A8, 0x0127}, // 6 + {0x00A9, 0x0128}, // 7 + {0x00AA, 0x0129}, // 8 + {0x00AB, 0x012A}, // 9 + {0x00E1, 0x01AB}, // ! + {0x00E2, 0x01AC}, // ? + {0x00E4, 0x01AE}, // . + {0x00F1, 0x01BE}, // - + {0x00E6, 0x01B0}, // · + {0x00E5, 0x01AF}, // … + {0x00EA, 0x00EA}, // “ + {0x00EB, 0x00EB}, // ” + {0x00E8, 0x01B2}, // ‘ + {0x00E9, 0x01B3}, // ' + {0x00EE, 0x01BB}, // ♂ + {0x00EF, 0x01BC}, // ♀ + {0x0112, 0x0112}, // ¥ + {0x00E3, 0x01AD}, // , + {0x00F2, 0x0176}, // × + {0x00E7, 0x01B1}, // / + {0x00AC, 0x012B}, // A + {0x00AD, 0x012C}, // B + {0x00AE, 0x012D}, // C + {0x00AF, 0x012E}, // D + {0x00B0, 0x012F}, // E + {0x00B1, 0x0130}, // F + {0x00B2, 0x0131}, // G + {0x00B3, 0x0132}, // H + {0x00B4, 0x0133}, // I + {0x00B5, 0x0134}, // J + {0x00B6, 0x0135}, // K + {0x00B7, 0x0136}, // L + {0x00B8, 0x0137}, // M + {0x00B9, 0x0138}, // N + {0x00BA, 0x0139}, // O + {0x00BB, 0x013A}, // P + {0x00BC, 0x013B}, // Q + {0x00BD, 0x013C}, // R + {0x00BE, 0x013D}, // S + {0x00BF, 0x013E}, // T + {0x00C0, 0x013F}, // U + {0x00C1, 0x0140}, // V + {0x00C2, 0x0141}, // W + {0x00C3, 0x0142}, // X + {0x00C4, 0x0143}, // Y + {0x00C5, 0x0144}, // Z + {0x00C6, 0x0145}, // a + {0x00C7, 0x0146}, // b + {0x00C8, 0x0147}, // c + {0x00C9, 0x0148}, // d + {0x00CA, 0x0149}, // e + {0x00CB, 0x014A}, // f + {0x00CC, 0x014B}, // g + {0x00CD, 0x014C}, // h + {0x00CE, 0x014D}, // i + {0x00CF, 0x014E}, // j + {0x00D0, 0x014F}, // k + {0x00D1, 0x0150}, // l + {0x00D2, 0x0151}, // m + {0x00D3, 0x0152}, // n + {0x00D4, 0x0153}, // o + {0x00D5, 0x0154}, // p + {0x00D6, 0x0155}, // q + {0x00D7, 0x0156}, // r + {0x00D8, 0x0157}, // s + {0x00D9, 0x0158}, // t + {0x00DA, 0x0159}, // u + {0x00DB, 0x015A}, // v + {0x00DC, 0x015B}, // w + {0x00DD, 0x015C}, // x + {0x00DE, 0x015D}, // y + {0x00DF, 0x015E}, // z + {0x011F, 0x011F}, // ▶ + {0x00F6, 0x01C4}, // : + {0x0163, 0x0163}, // Ä + {0x0175, 0x0175}, // Ö + {0x017B, 0x017B}, // Ü + {0x0183, 0x0183}, // ä + {0x0195, 0x0195}, // ö + {0x019B, 0x019B}, // ü +}; + +static THUMB_FUNC u16 GetOpeningQuote(u32 language) +{ + switch (language) + { + default: + return 0xEA; + case LANGUAGE_ENGLISH: + case LANGUAGE_ITALIAN: + case LANGUAGE_SPANISH: + return 0x1B4; + case LANGUAGE_FRENCH: + return 0x1B7; + case LANGUAGE_GERMAN: + return 0x1B6; + } +} + +static THUMB_FUNC u16 GetClosingQuote(u32 language) +{ + switch (language) + { + default: + return 0xEB; + case LANGUAGE_ENGLISH: + case LANGUAGE_ITALIAN: + case LANGUAGE_SPANISH: + return 0x1B5; + case LANGUAGE_FRENCH: + return 0x1B8; + case LANGUAGE_GERMAN: + return 0x1B4; + } +} + +THUMB_FUNC BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language) +{ + BOOL notFullWidth; + u32 i; + + notFullWidth = (language != LANGUAGE_JAPANESE); + for (i = 0; i < length - 1; i++) + { + if (rs_str[i] == 0xFF) // RS: EOS + break; + if (rs_str[i] >= 0xF7) // RS: DYNAMIC + { + // If we're here, the provided name is corrupt. + // Fill it with question marks. + s32 r3 = (s32)((length - 1) < 10 ? (length - 1) : 10); + s32 r1; + for (r1 = 0; r1 < r3; r1++) + { + dp_str[r1] = 0x1AC; // DP: ? + } + dp_str[r1] = EOS; + return FALSE; + } + switch (conversion_table[rs_str[i]][notFullWidth]) + { + case 0xEA: // RS: Opening double quote + dp_str[i] = GetOpeningQuote(language); + break; + case 0xEB: // RS: Closing double quote + dp_str[i] = GetClosingQuote(language); + break; + default: + dp_str[i] = conversion_table[rs_str[i]][notFullWidth]; + break; + } + } + dp_str[i] = EOS; + return TRUE; +} diff --git a/arm9/src/unk_02015D14.c b/arm9/src/unk_02015D14.c deleted file mode 100644 index 7a6598a2..00000000 --- a/arm9/src/unk_02015D14.c +++ /dev/null @@ -1,325 +0,0 @@ -#include "global.h" -#include "unk_02015D14.h" - -static const u16 UNK_020ED734[][2] = { - {0x0001, 0x01DE}, - {0x0003, 0x0003}, - {0x0005, 0x0005}, - {0x0007, 0x0007}, - {0x0009, 0x0009}, - {0x000B, 0x000B}, - {0x000C, 0x000C}, - {0x000E, 0x000E}, - {0x0010, 0x0010}, - {0x0012, 0x0012}, - {0x0014, 0x0014}, - {0x0016, 0x0016}, - {0x0018, 0x0018}, - {0x001A, 0x001A}, - {0x001C, 0x001C}, - {0x001E, 0x001E}, - {0x0020, 0x0020}, - {0x0022, 0x0022}, - {0x0025, 0x0025}, - {0x0027, 0x0027}, - {0x0029, 0x0029}, - {0x002B, 0x002B}, - {0x002C, 0x002C}, - {0x002D, 0x002D}, - {0x002E, 0x002E}, - {0x002F, 0x002F}, - {0x0030, 0x0030}, - {0x0033, 0x0033}, - {0x0036, 0x0036}, - {0x0039, 0x0039}, - {0x003C, 0x003C}, - {0x003F, 0x003F}, - {0x0040, 0x0040}, - {0x0041, 0x0041}, - {0x0042, 0x0042}, - {0x0043, 0x0043}, - {0x0045, 0x0045}, - {0x0047, 0x0047}, - {0x0049, 0x0049}, - {0x004A, 0x004A}, - {0x004B, 0x004B}, - {0x004C, 0x004C}, - {0x004D, 0x004D}, - {0x004E, 0x004E}, - {0x004F, 0x004F}, - {0x0050, 0x0050}, - {0x0051, 0x0051}, - {0x0002, 0x0002}, - {0x0004, 0x0004}, - {0x0006, 0x0006}, - {0x0008, 0x0008}, - {0x000A, 0x000A}, - {0x0044, 0x0044}, - {0x0046, 0x0046}, - {0x0048, 0x0048}, - {0x000D, 0x000D}, - {0x000F, 0x000F}, - {0x0011, 0x0011}, - {0x0013, 0x0013}, - {0x0015, 0x0015}, - {0x0017, 0x0017}, - {0x0019, 0x0019}, - {0x001B, 0x001B}, - {0x001D, 0x001D}, - {0x001F, 0x001F}, - {0x0021, 0x0021}, - {0x0023, 0x0023}, - {0x0026, 0x0026}, - {0x0028, 0x0028}, - {0x002A, 0x002A}, - {0x0031, 0x0031}, - {0x0034, 0x0034}, - {0x0037, 0x0037}, - {0x003A, 0x003A}, - {0x003D, 0x003D}, - {0x0032, 0x0032}, - {0x0035, 0x0035}, - {0x0038, 0x0038}, - {0x003B, 0x003B}, - {0x003E, 0x003E}, - {0x0024, 0x0024}, - {0x0053, 0x0053}, - {0x0055, 0x0055}, - {0x0057, 0x0057}, - {0x0059, 0x0059}, - {0x005B, 0x005B}, - {0x005C, 0x005C}, - {0x005E, 0x005E}, - {0x0060, 0x0060}, - {0x0062, 0x0062}, - {0x0064, 0x0064}, - {0x0066, 0x0066}, - {0x0068, 0x0068}, - {0x006A, 0x006A}, - {0x006C, 0x006C}, - {0x006E, 0x006E}, - {0x0070, 0x0070}, - {0x0072, 0x0072}, - {0x0075, 0x0075}, - {0x0077, 0x0077}, - {0x0079, 0x0079}, - {0x007B, 0x007B}, - {0x007C, 0x007C}, - {0x007D, 0x007D}, - {0x007E, 0x007E}, - {0x007F, 0x007F}, - {0x0080, 0x0080}, - {0x0083, 0x0083}, - {0x0086, 0x0086}, - {0x0089, 0x0089}, - {0x008C, 0x008C}, - {0x008F, 0x008F}, - {0x0090, 0x0090}, - {0x0091, 0x0091}, - {0x0092, 0x0092}, - {0x0093, 0x0093}, - {0x0095, 0x0095}, - {0x0097, 0x0097}, - {0x0099, 0x0099}, - {0x009A, 0x009A}, - {0x009B, 0x009B}, - {0x009C, 0x009C}, - {0x009D, 0x009D}, - {0x009E, 0x009E}, - {0x009F, 0x009F}, - {0x00A0, 0x00A0}, - {0x00A1, 0x00A1}, - {0x0052, 0x0052}, - {0x0054, 0x0054}, - {0x0056, 0x0056}, - {0x0058, 0x0058}, - {0x005A, 0x005A}, - {0x0094, 0x0094}, - {0x0096, 0x0096}, - {0x0098, 0x0098}, - {0x005D, 0x005D}, - {0x005F, 0x005F}, - {0x0061, 0x0061}, - {0x0063, 0x0063}, - {0x0065, 0x0065}, - {0x0067, 0x0067}, - {0x0069, 0x0069}, - {0x006B, 0x006B}, - {0x006D, 0x006D}, - {0x006F, 0x006F}, - {0x0071, 0x0071}, - {0x0073, 0x0073}, - {0x0076, 0x0076}, - {0x0078, 0x0078}, - {0x007A, 0x007A}, - {0x0081, 0x0081}, - {0x0084, 0x0084}, - {0x0087, 0x0087}, - {0x008A, 0x008A}, - {0x008D, 0x008D}, - {0x0082, 0x0082}, - {0x0085, 0x0085}, - {0x0088, 0x0088}, - {0x008B, 0x008B}, - {0x008E, 0x008E}, - {0x0074, 0x0074}, - {0x00A2, 0x0121}, - {0x00A3, 0x0122}, - {0x00A4, 0x0123}, - {0x00A5, 0x0124}, - {0x00A6, 0x0125}, - {0x00A7, 0x0126}, - {0x00A8, 0x0127}, - {0x00A9, 0x0128}, - {0x00AA, 0x0129}, - {0x00AB, 0x012A}, - {0x00E1, 0x01AB}, - {0x00E2, 0x01AC}, - {0x00E4, 0x01AE}, - {0x00F1, 0x01BE}, - {0x00E6, 0x01B0}, - {0x00E5, 0x01AF}, - {0x00EA, 0x00EA}, - {0x00EB, 0x00EB}, - {0x00E8, 0x01B2}, - {0x00E9, 0x01B3}, - {0x00EE, 0x01BB}, - {0x00EF, 0x01BC}, - {0x0112, 0x0112}, - {0x00E3, 0x01AD}, - {0x00F2, 0x0176}, - {0x00E7, 0x01B1}, - {0x00AC, 0x012B}, - {0x00AD, 0x012C}, - {0x00AE, 0x012D}, - {0x00AF, 0x012E}, - {0x00B0, 0x012F}, - {0x00B1, 0x0130}, - {0x00B2, 0x0131}, - {0x00B3, 0x0132}, - {0x00B4, 0x0133}, - {0x00B5, 0x0134}, - {0x00B6, 0x0135}, - {0x00B7, 0x0136}, - {0x00B8, 0x0137}, - {0x00B9, 0x0138}, - {0x00BA, 0x0139}, - {0x00BB, 0x013A}, - {0x00BC, 0x013B}, - {0x00BD, 0x013C}, - {0x00BE, 0x013D}, - {0x00BF, 0x013E}, - {0x00C0, 0x013F}, - {0x00C1, 0x0140}, - {0x00C2, 0x0141}, - {0x00C3, 0x0142}, - {0x00C4, 0x0143}, - {0x00C5, 0x0144}, - {0x00C6, 0x0145}, - {0x00C7, 0x0146}, - {0x00C8, 0x0147}, - {0x00C9, 0x0148}, - {0x00CA, 0x0149}, - {0x00CB, 0x014A}, - {0x00CC, 0x014B}, - {0x00CD, 0x014C}, - {0x00CE, 0x014D}, - {0x00CF, 0x014E}, - {0x00D0, 0x014F}, - {0x00D1, 0x0150}, - {0x00D2, 0x0151}, - {0x00D3, 0x0152}, - {0x00D4, 0x0153}, - {0x00D5, 0x0154}, - {0x00D6, 0x0155}, - {0x00D7, 0x0156}, - {0x00D8, 0x0157}, - {0x00D9, 0x0158}, - {0x00DA, 0x0159}, - {0x00DB, 0x015A}, - {0x00DC, 0x015B}, - {0x00DD, 0x015C}, - {0x00DE, 0x015D}, - {0x00DF, 0x015E}, - {0x011F, 0x011F}, - {0x00F6, 0x01C4}, - {0x0163, 0x0163}, - {0x0175, 0x0175}, - {0x017B, 0x017B}, - {0x0183, 0x0183}, - {0x0195, 0x0195}, - {0x019B, 0x019B}, -}; - -static THUMB_FUNC u16 FUN_02015D14(u32 a0) -{ - switch (a0) - { - default: - return 0xEA; - case 2: - case 4: - case 7: - return 0x1B4; - case 3: - return 0x1B7; - case 5: - return 0x1B6; - } -} - -static THUMB_FUNC u16 FUN_02015D50(u32 a0) -{ - switch (a0) - { - default: - return 0xEB; - case 2: - case 4: - case 7: - return 0x1B5; - case 3: - return 0x1B8; - case 5: - return 0x1B4; - } -} - -THUMB_FUNC BOOL FUN_02015D88(const u8 * a, u16 * b, u32 c, u32 d) -{ - s32 r2; - u32 r4; - s32 r3; - s32 r1; - - r2 = (d != 1) ? 1 : 0; - for (r4 = 0; r4 < c - 1; r4++) - { - if (a[r4] == 0xFF) - break; - if (a[r4] >= 0xF7) - { - r3 = (s32)((c - 1) < 10 ? (c - 1) : 10); - for (r1 = 0; r1 < r3; r1++) - { - b[r1] = 0x1AC; - } - b[r1] = 0xFFFF; - return FALSE; - } - switch (UNK_020ED734[a[r4]][r2]) - { - case 0xEA: - b[r4] = FUN_02015D14(d); - break; - case 0xEB: - b[r4] = FUN_02015D50(d); - break; - default: - b[r4] = UNK_020ED734[a[r4]][r2]; - break; - } - } - b[r4] = 0xFFFF; - return TRUE; -} diff --git a/include/rs_migrate_string.h b/include/rs_migrate_string.h new file mode 100644 index 00000000..b83807f5 --- /dev/null +++ b/include/rs_migrate_string.h @@ -0,0 +1,26 @@ +#ifndef POKEDIAMOND_UNK_02015D14_H +#define POKEDIAMOND_UNK_02015D14_H + +// -------------------------------------------- +// ConvertRSStringToDPStringInternational +// ============================================ +// Param rs_str: Pointer to u8 representing +// the name of a Pokemon or +// its OT when migrating from +// Advanced Gameboy. +// Param dp_str: Pointer to u16 representing +// the destination string buffer +// for migration to Diamond +// or Pearl. +// Param length: The length of the string +// to convert, including the +// terminator byte. +// Param language: Game language of origin. +// See include/config.h. +// Return: TRUE if the conversion was completed +// successfully. Otherwise, dp_str will +// be filled with up to 10 question mark +// characters. +BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language); + +#endif //POKEDIAMOND_UNK_02015D14_H diff --git a/include/unk_02015D14.h b/include/unk_02015D14.h deleted file mode 100644 index c20cd9c9..00000000 --- a/include/unk_02015D14.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef POKEDIAMOND_UNK_02015D14_H -#define POKEDIAMOND_UNK_02015D14_H - -BOOL FUN_02015D88(const u8 * a, u16 * b, u32 c, u32 d); - -#endif //POKEDIAMOND_UNK_02015D14_H -- cgit v1.2.3