diff options
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/rs_migrate_string.c | 327 | ||||
-rw-r--r-- | arm9/src/text.c | 2 |
2 files changed, 328 insertions, 1 deletions
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}, // <space>
+ {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/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; |