summaryrefslogtreecommitdiff
path: root/scripts/gen3text.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/gen3text.py')
-rw-r--r--scripts/gen3text.py481
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