Created
January 4, 2017 13:44
-
-
Save taotao54321/6067b3fbbf5bd201a62b3cf0d039b9ee to your computer and use it in GitHub Desktop.
AD&D プールオブレイディアンス (FC) 文字列デコーダ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
"""AD&D プールオブレイディアンス (FC) 文字列デコーダ | |
""" | |
import argparse | |
def chunks(in_, size): | |
while True: | |
chunk = in_.read(size) | |
if not chunk: break | |
yield chunk | |
CHARS = ( | |
# 0x00 | |
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", | |
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", | |
# 0x20 | |
"_", "。", "、", "!", "?", "(", ")", "「", "/", ":", "-", "+", "゜", "゛", "-", "*", | |
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", | |
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", ".", ",", "’", "→", "・", "ン", | |
"を", "", "", "", "", "", "ゃ", "ゅ", "ょ", "っ", "あ", "い", "う", "え", "お", "か", | |
"き", "く", "け", "こ", "さ", "し", "す", "せ", "そ", "た", "ち", "つ", "て", "と", "な", "に", | |
"ぬ", "ね", "の", "は", "ひ", "ふ", "へ", "ほ", "ま", "み", "む", "め", "も", "や", "ゆ", "よ", | |
"ら", "り", "る", "れ", "ろ", "わ", "ん", "", "ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", | |
"ッ", "ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", | |
"タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", | |
"ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ヴ", "が", "ぎ", | |
"ぐ", "げ", "ご", "ざ", "じ", "ず", "ぜ", "ぞ", "だ", "ぢ", "づ", "で", "ど", "ば", "び", "ぶ", | |
"べ", "ぼ", "ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "ダ", "ヂ", "ヅ", "デ", | |
"ド", "バ", "ビ", "ブ", "ベ", "ボ", "ぱ", "ぴ", "ぷ", "ぺ", "ぽ", "パ", "ピ", "プ", "ペ", "ポ", | |
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "", "", "", "", "", "", | |
) | |
def por_chr(n): | |
c = CHARS[n] | |
return c if c else " " | |
def por_strings(args): | |
for i, chunk in enumerate(chunks(args.in_, 0x10)): | |
str_ = "".join(map(por_chr, chunk)) | |
print("0x{:04X}:{}".format(0x10*i, str_)) | |
def parse_args(): | |
ap = argparse.ArgumentParser() | |
ap.add_argument("in_", type=argparse.FileType("rb")) | |
return ap.parse_args() | |
def main(): | |
args = parse_args() | |
por_strings(args) | |
if __name__ == "__main__": main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment