diff options
author | Háčky <hatschky@gmail.com> | 2014-11-27 07:15:45 +0000 |
---|---|---|
committer | Háčky <hatschky@gmail.com> | 2014-11-27 07:15:45 +0000 |
commit | 319ed6d0e0266f5f6174a5acd929914db8cfae1d (patch) | |
tree | 76408d9cadcbed1e702efa8c44f4cf5e364b0a4d /scripts/gen3text.py | |
parent | 17853b802692237d98f96d1a80caf2019f71753e (diff) |
Diffstat (limited to 'scripts/gen3text.py')
-rw-r--r-- | scripts/gen3text.py | 481 |
1 files changed, 481 insertions, 0 deletions
diff --git a/scripts/gen3text.py b/scripts/gen3text.py new file mode 100644 index 0000000..f235106 --- /dev/null +++ b/scripts/gen3text.py @@ -0,0 +1,481 @@ +# -*- coding: utf-8 -*- +import sys + +chars = { + # Japanese character table + ' ': '\x00', + 'あ': '\x01', + 'い': '\x02', + 'う': '\x03', + 'え': '\x04', + 'お': '\x05', + 'か': '\x06', + 'き': '\x07', + 'く': '\x08', + 'け': '\x09', + 'こ': '\x0A', + 'さ': '\x0B', + 'し': '\x0C', + 'す': '\x0D', + 'せ': '\x0E', + 'そ': '\x0F', + 'た': '\x10', + 'ち': '\x11', + 'つ': '\x12', + 'て': '\x13', + 'と': '\x14', + 'な': '\x15', + 'に': '\x16', + 'ぬ': '\x17', + 'ね': '\x18', + 'の': '\x19', + 'は': '\x1A', + 'ひ': '\x1B', + 'ふ': '\x1C', + 'へ': '\x1D', + 'ほ': '\x1E', + 'ま': '\x1F', + 'み': '\x20', + 'む': '\x21', + 'め': '\x22', + 'も': '\x23', + 'や': '\x24', + 'ゆ': '\x25', + 'よ': '\x26', + 'ら': '\x27', + 'り': '\x28', + 'る': '\x29', + 'れ': '\x2A', + 'ろ': '\x2B', + 'わ': '\x2C', + 'を': '\x2D', + 'ん': '\x2E', + 'ぁ': '\x2F', + 'ぃ': '\x30', + 'ぅ': '\x31', + 'ぇ': '\x32', + 'ぉ': '\x33', + 'ゃ': '\x34', + 'ゅ': '\x35', + 'ょ': '\x36', + 'が': '\x37', + 'ぎ': '\x38', + 'ぐ': '\x39', + 'げ': '\x3A', + 'ご': '\x3B', + 'ざ': '\x3C', + 'じ': '\x3D', + 'ず': '\x3E', + 'ぜ': '\x3F', + 'ぞ': '\x40', + 'だ': '\x41', + 'ぢ': '\x42', + 'づ': '\x43', + 'で': '\x44', + 'ど': '\x45', + 'ば': '\x46', + 'び': '\x47', + 'ぶ': '\x48', + 'べ': '\x49', + 'ぼ': '\x4A', + 'ぱ': '\x4B', + 'ぴ': '\x4C', + 'ぷ': '\x4D', + 'ぺ': '\x4E', + 'ぽ': '\x4F', + 'っ': '\x50', + + 'ア': '\x51', + 'イ': '\x52', + 'ウ': '\x53', + 'エ': '\x54', + 'オ': '\x55', + 'カ': '\x56', + 'キ': '\x57', + 'ク': '\x58', + 'ケ': '\x59', + 'コ': '\x5A', + 'サ': '\x5B', + 'シ': '\x5C', + 'ス': '\x5D', + 'セ': '\x5E', + 'ソ': '\x5F', + 'タ': '\x60', + 'チ': '\x61', + 'ツ': '\x62', + 'テ': '\x63', + 'ト': '\x64', + 'ナ': '\x65', + 'ニ': '\x66', + 'ヌ': '\x67', + 'ネ': '\x68', + 'ノ': '\x69', + 'ハ': '\x6A', + 'ヒ': '\x6B', + 'フ': '\x6C', + 'ヘ': '\x6D', + 'ホ': '\x6E', + 'マ': '\x6F', + 'ミ': '\x70', + 'ム': '\x71', + 'メ': '\x72', + 'モ': '\x73', + 'ヤ': '\x74', + 'ユ': '\x75', + 'ヨ': '\x76', + 'ラ': '\x77', + 'リ': '\x78', + 'ル': '\x79', + 'レ': '\x7A', + 'ロ': '\x7B', + 'ワ': '\x7C', + 'ヲ': '\x7D', + 'ン': '\x7E', + 'ァ': '\x7F', + 'ィ': '\x80', + 'ゥ': '\x81', + 'ェ': '\x82', + 'ォ': '\x83', + 'ャ': '\x84', + 'ュ': '\x85', + 'ョ': '\x86', + 'ガ': '\x87', + 'ギ': '\x88', + 'グ': '\x89', + 'ゲ': '\x8A', + 'ゴ': '\x8B', + 'ザ': '\x8C', + 'ジ': '\x8D', + 'ズ': '\x8E', + 'ゼ': '\x8F', + 'ゾ': '\x90', + 'ダ': '\x91', + 'ヂ': '\x92', + 'ヅ': '\x93', + 'デ': '\x94', + 'ド': '\x95', + 'バ': '\x96', + 'ビ': '\x97', + 'ブ': '\x98', + 'ベ': '\x99', + 'ボ': '\x9A', + 'パ': '\x9B', + 'ピ': '\x9C', + 'プ': '\x9D', + 'ペ': '\x9E', + 'ポ': '\x9F', + 'ッ': '\xA0', + + '0': '\xA1', + '1': '\xA2', + '2': '\xA3', + '3': '\xA4', + '4': '\xA5', + '5': '\xA6', + '6': '\xA7', + '7': '\xA8', + '8': '\xA9', + '9': '\xAA', + '!': '\xAB', + '?': '\xAC', + '。': '\xAD', + 'ー': '\xAE', + '・': '\xAF', + '⋯': '\xB0', + '『': '\xB1', + '』': '\xB2', + '「': '\xB3', + '」': '\xB4', + '♂': '\xB5', + '♀': '\xB6', + '円': '\xB7', + '.': '\xB8', + '×': '\xB9', + '/': '\xBA', + + 'A': '\xBB', + 'B': '\xBC', + 'C': '\xBD', + 'D': '\xBE', + 'E': '\xBF', + 'F': '\xC0', + 'G': '\xC1', + 'H': '\xC2', + 'I': '\xC3', + 'J': '\xC4', + 'K': '\xC5', + 'L': '\xC6', + 'M': '\xC7', + 'N': '\xC8', + 'O': '\xC9', + 'P': '\xCA', + 'Q': '\xCB', + 'R': '\xCC', + 'S': '\xCD', + 'T': '\xCE', + 'U': '\xCF', + 'V': '\xD0', + 'W': '\xD1', + 'X': '\xD2', + 'Y': '\xD3', + 'Z': '\xD4', + 'a': '\xD5', + 'b': '\xD6', + 'c': '\xD7', + 'd': '\xD8', + 'e': '\xD9', + 'f': '\xDA', + 'g': '\xDB', + 'h': '\xDC', + 'i': '\xDD', + 'j': '\xDE', + 'k': '\xDF', + 'l': '\xE0', + 'm': '\xE1', + 'n': '\xE2', + 'o': '\xE3', + 'p': '\xE4', + 'q': '\xE5', + 'r': '\xE6', + 's': '\xE7', + 't': '\xE8', + 'u': '\xE9', + 'v': '\xEA', + 'w': '\xEB', + 'x': '\xEC', + 'y': '\xED', + 'z': '\xEE', + '▶': '\xEF', + ':': '\xF0', + 'Ä': '\xF1', + 'Ö': '\xF2', + 'Ü': '\xF3', + 'ä': '\xF4', + 'ö': '\xF5', + 'ü': '\xF6', + #'⬆': '\xF7', + #'⬇': '\xF8', + #'⬅': '\xF9', + '\\l': '\xFA', + '\\p': '\xFB', + '\{FC}': '\xFC', + '\\v1': '\xFD\x01', + '\\v2': '\xFD\x02', + '\\v3': '\xFD\x03', + '\\n': '\xFE', + '@': '\xFF', + + # characters changed for Western versions + ' ': '\x00', + 'À': '\x01', + 'Á': '\x02', + 'Â': '\x03', + 'Ç': '\x04', + 'È': '\x05', + 'É': '\x06', + 'Ê': '\x07', + 'Ë': '\x08', + 'Ì': '\x09', + 'Î': '\x0B', + 'Ï': '\x0C', + 'Ò': '\x0D', + 'Ó': '\x0E', + 'Ô': '\x0F', + 'Œ': '\x10', + 'Ù': '\x11', + 'Ú': '\x12', + 'Û': '\x13', + 'Ñ': '\x14', + 'ß': '\x15', + 'à': '\x16', + 'á': '\x17', + 'ç': '\x19', + 'è': '\x1A', + 'é': '\x1B', + 'ê': '\x1C', + 'ë': '\x1D', + 'ì': '\x1E', + 'î': '\x20', + 'ï': '\x21', + 'ò': '\x22', + 'ó': '\x23', + 'ô': '\x24', + 'œ': '\x25', + 'ù': '\x26', + 'ú': '\x27', + 'û': '\x28', + 'ñ': '\x29', + 'º': '\x2A', + 'ª': '\x2B', + '\{er}': '\x2C', + '&': '\x2D', + '+': '\x2E', + '\{L.}': '\x34', # Italian + '\{Lv}': '\x34', # English + '\{Lv.}': '\x34', # German + '\{N.}': '\x34', # French + '\{Nv}': '\x34', # Spanish + '=': '\x35', + ';': '\x36', # European + '¿': '\x51', + '¡': '\x52', + '\{PKMN}': '\x53\x54', + '\{POKé}': '\x55\x56', + '\{POKéBLOC}': '\x55\x56\x57\x58\x59', # French + '\{POKéBLOCK}': '\x55\x56\x57\x58\x59', # English + '\{POKéCUBO}': '\x55\x56\x57\x58\x59', # Spanish + '\{POKéRIEGEL}': '\x55\x56\x57\x58\x59', # German + 'Í': '\x5A', + '%': '\x5B', + '(': '\x5C', + ')': '\x5D', + '\{POKéMELLA}': '\x5E\x5F\x60\x61\x62', # Italian + '\{POKéMELLE}': '\x5E\x5F\x60\x61\x63', # Italian + 'â': '\x68', + 'í': '\x6F', + '⬆': '\x79', + '⬇': '\x7A', + '⬅': '\x7B', + '➡': '\x7C', + '\{e}': '\x84', # European + '‹': '\x85', # European + '›': '\x86', # European + '\{re}': '\xA0', # European + '0': '\xA1', + '1': '\xA2', + '2': '\xA3', + '3': '\xA4', + '4': '\xA5', + '5': '\xA6', + '6': '\xA7', + '7': '\xA8', + '8': '\xA9', + '9': '\xAA', + '!': '\xAB', + '?': '\xAC', + '.': '\xAD', + '-': '\xAE', + '…': '\xB0', + '“': '\xB1', # English, Italian, Spanish + '«': '\xB1', # French + '„': '\xB1', # German + '”': '\xB2', # English, Italian, Spanish + '»': '\xB2', # French + #'“': '\xB2', # German — clashes with English B1 + '‘': '\xB3', + '’': '\xB4', + '$': '\xB7', + ',': '\xB8', + '/': '\xBA', + 'A': '\xBB', + 'B': '\xBC', + 'C': '\xBD', + 'D': '\xBE', + 'E': '\xBF', + 'F': '\xC0', + 'G': '\xC1', + 'H': '\xC2', + 'I': '\xC3', + 'J': '\xC4', + 'K': '\xC5', + 'L': '\xC6', + 'M': '\xC7', + 'N': '\xC8', + 'O': '\xC9', + 'P': '\xCA', + 'Q': '\xCB', + 'R': '\xCC', + 'S': '\xCD', + 'T': '\xCE', + 'U': '\xCF', + 'V': '\xD0', + 'W': '\xD1', + 'X': '\xD2', + 'Y': '\xD3', + 'Z': '\xD4', + 'a': '\xD5', + 'b': '\xD6', + 'c': '\xD7', + 'd': '\xD8', + 'e': '\xD9', + 'f': '\xDA', + 'g': '\xDB', + 'h': '\xDC', + 'i': '\xDD', + 'j': '\xDE', + 'k': '\xDF', + 'l': '\xE0', + 'm': '\xE1', + 'n': '\xE2', + 'o': '\xE3', + 'p': '\xE4', + 'q': '\xE5', + 'r': '\xE6', + 's': '\xE7', + 't': '\xE8', + 'u': '\xE9', + 'v': '\xEA', + 'w': '\xEB', + 'x': '\xEC', + 'y': '\xED', + 'z': '\xEE', + ':': '\xF0', +} + +asmProblemBytes = ['\x00', '\x09', '\x0A', '\x22'] + + +def utf8ToRSText(t, region = ""): + currentChars = chars + if region == "DE": + chars['“'] = '\xB2' + + characters = [] + char = "" + while len(t): + if ord(t[0]) >= 0xF0: + char += t[0:4] + t = t[4:] + elif ord(t[0]) >= 0xE0: + char += t[0:3] + t = t[3:] + elif ord(t[0]) >= 0xC0: + char += t[0:2] + t = t[2:] + else: + char += t[0:1] + t = t[1:] + if char != "\\" and char != "\\v" and (char[0:2] != "\\{" or char[-1] == "}"): + characters.append(char) + char = "" + + result = "" + for char in characters: + result += chars[char] + return result + +def asmQuote(t): + result = "" + quoted = False + if t[0] in asmProblemBytes: + result = '{0}'.format(ord(t[0])) + else: + result = '"' + t[0] + quoted = True + + while len(t): + if quoted and t[0] in asmProblemBytes: + result += '",{0}'.format(ord(t[0])) + quoted = False + elif quoted: + result += t[0] + elif t[0] in asmProblemBytes: + result += ',{0}'.format(ord(t[0])) + quoted = False + else: + result += ',"' + t[0] + quoted = True + t = t[1:] + if quoted: + result += '"' + return result
\ No newline at end of file |