Skip to content

Instantly share code, notes, and snippets.

@taotao54321
Created January 4, 2017 13:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taotao54321/6067b3fbbf5bd201a62b3cf0d039b9ee to your computer and use it in GitHub Desktop.
Save taotao54321/6067b3fbbf5bd201a62b3cf0d039b9ee to your computer and use it in GitHub Desktop.
AD&D プールオブレイディアンス (FC) 文字列デコーダ
#!/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