#!/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