Initial commit

This commit is contained in:
Háčky
2014-11-21 10:46:12 +00:00
parent 92c6af6c35
commit 2375d2c8db
206 changed files with 8443 additions and 1 deletions

16
scripts/berrychecksum.py Normal file
View File

@@ -0,0 +1,16 @@
import struct
import sys
out = open(sys.argv[2], 'w')
sum = 0
with open(sys.argv[1], 'rb') as f:
while True:
byte = f.read(1)
if not byte:
break
sum += ord(byte)
out.write(byte)
f.closed
out.write(struct.pack('<I', sum))

496
scripts/charmap.py Normal file
View File

@@ -0,0 +1,496 @@
# -*- coding: utf-8 -*-
import sys
chars = {
# Japanese character table
' ': '\x00',
'': '\x01',
'': '\x02',
'': '\x03',
'': '\x04',
'': '\x05',
'': '\x06',
'': '\x07',
'': '\x08',
'': '\\t',
'': '\\n',
'': '\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',
'': '\xA1',
'': '\xA2',
'': '\xA3',
'': '\xA4',
'': '\xA5',
'': '\xA6',
'': '\xA7',
'': '\xA8',
'': '\xA9',
'': '\xAA',
'': '\xAB',
'': '\xAC',
'': '\xAD',
'': '\xAE',
'': '\xAF',
'': '\xB0',
'': '\xB1',
'': '\xB2',
'': '\xB3',
'': '\xB4',
'': '\xB5',
'': '\xB6',
'': '\xB7',
'': '\xB8',
'×': '\xB9',
'': '\xBA',
'': '\xBB',
'': '\xBC',
'': '\xBD',
'': '\xBE',
'': '\xBF',
'': '\xC0',
'': '\xC1',
'': '\xC2',
'': '\xC3',
'': '\xC4',
'': '\xC5',
'': '\xC6',
'': '\xC7',
'': '\xC8',
'': '\xC9',
'': '\xCA',
'': '\xCB',
'': '\xCC',
'': '\xCD',
'': '\xCE',
'': '\xCF',
'': '\xD0',
'': '\xD1',
'': '\xD2',
'': '\xD3',
'': '\xD4',
'': '\xD5',
'': '\xD6',
'': '\xD7',
'': '\xD8',
'': '\xD9',
'': '\xDA',
'': '\xDB',
'': '\xDC',
'': '\xDD',
'': '\xDE',
'': '\xDF',
'': '\xE0',
'': '\xE1',
'': '\xE2',
'': '\xE3',
'': '\xE4',
'': '\xE5',
'': '\xE6',
'': '\xE7',
'': '\xE8',
'': '\xE9',
'': '\xEA',
'': '\xEB',
'': '\xEC',
'': '\xED',
'': '\xEE',
'': '\xEF',
'': '\xF0',
'Ä': '\xF1',
'Ö': '\xF2',
'Ü': '\xF3',
'ä': '\xF4',
'ö': '\xF5',
'ü': '\xF6',
#'⬆': '\xF7',
#'⬇': '\xF8',
#'⬅': '\xF9',
'\\l': '\xFA',
'\\p': '\xFB',
'\{FC}': '\xFC',
'\\v1': '\xFD\x01',
'\\n': '\xFE',
'@': '\xFF',
# characters changed for Western versions
' ': '\x00',
'À': '\x01',
'Á': '\x02',
'Â': '\x03',
'Ç': '\x04',
'È': '\x05',
'É': '\x06',
'Ê': '\x07',
'Ë': '\x08',
'Ì': '\\t',
'Î': '\x0B',
'Ï': '\x0C',
'Ò': '\x0D',
'Ó': '\x0E',
'Ô': '\x0F',
'Œ': '\x10',
'Ù': '\x11',
'Ú': '\x12',
'Û': '\x13',
'Ñ': '\x14',
'ß': '\x15',
'à': '\x16',
'á': '\x17',
'ç': '\x19',
'è': '\x1A',
'é': '\x1B',
'ê': '\x1C',
'ë': '\x1D',
'ì': '\x1E',
'î': '\x20',
'ï': '\x21',
'ò': '",$22,"',
'ó': '\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', # replaced with « for French, „ for German
'': '\xB2', # replaced with » for French, “ for German
'': '\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',
}
out = open(sys.argv[2], 'w')
with open(sys.argv[1], 'r') as f:
for asm in f:
# split by quotes
asms = asm.split('"')
pad_length = 0
output = ''
print_macro = True
if asms[0].strip() == "Text":
asms[0] = asms[0].replace("Text", "db")
elif asms[0].strip() == "Tag_Text":
pad_length = 45
elif asms[0].find("OT_Name") == -1 and asms[0].find("Nickname") == -1 and asms[0].find("Insert_Prologue") == -1 and asms[0].find("Berry") == -1 and asms[0].find("Tag_Text") == -1:
print_macro = False
if print_macro:
even = False
for token in asms:
if even:
characters = []
# token is a string to convert to byte values
while len(token):
# read a single UTF-8 codepoint
char = token[0]
if ord(char) < 0xc0:
token = token[1:]
# handle escape sequences
if char == "\\":
if token[0] == '{':
for i in range(len(token)):
char += token[0]
token = token[1:]
if char[-1] == '}':
break
elif token[0] == 'v':
char += token[0:2]
token = token[2:]
else:
char += token[0]
token = token[1:]
elif ord(char) < 0xe0:
char = char + token[1:2]
token = token[2:]
elif ord(char) < 0xf0:
char = char + token[1:3]
token = token[3:]
else:
char = char + token[1:4]
token = token[4:]
characters += [char]
line = 0
output += '"'
for char in characters:
if chars[char] == '\x00':
output += '",$00,"'
else:
output += chars[char]
output += '"'
if pad_length - len(characters) > 0:
output += ",$FF"
for i in range(len(characters) + 1, pad_length):
output += ",$00"
else:
output += token
even = not even
else:
asm = asm.replace("\\0", "\",$00,\"")
asm = asm.replace("é", "\x7F")
output = asm
out.write(output)
f.closed

28
scripts/scriptchecksum.py Normal file
View File

@@ -0,0 +1,28 @@
import struct
import sys
out = open(sys.argv[2], 'w')
sum = 0x1121
len = 0
with open(sys.argv[1], 'rb') as f:
while True:
byte = f.read(1)
if not byte:
break
sum ^= ord(byte)
for i in range(8):
if(sum & 1):
sum = (sum >> 1) ^ 0x8408
else:
sum >>= 1
len += 1
sum = ~sum & 0xFFFF
f.closed
out.write(struct.pack('<I', sum))
out.write(struct.pack('<I', 0x0200001E))
out.write(struct.pack('<I', 0x0200001E + len))
with open(sys.argv[1], 'rb') as f:
out.write(f.read())
f.closed

View File

@@ -0,0 +1,13 @@
import struct
import sys
out = open(sys.argv[2], 'w')
sum = 0
with open(sys.argv[1], 'rb') as f:
buf = f.read()
data = struct.unpack('<IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII', buf)
for word in data:
sum = (sum + word) % 2**32
f.closed
out.write(buf)
out.write(struct.pack('<I', sum))