名づけて、SFFv2Tool!
SFFv2Paletteとの違いは
- コマンドラインインターフェイスが変わった (オプションの変更)
- スプライトファイルを取り出せるようになった
- Windows用BMPファイルのみ
- BMPファイルを元にスプライトを追加できるようになった
- Windows用BMPかつ256色のインデックスカラーのみ
DLはMediaFireまたはSkyDriveから
MediaFire | SFFTool20101017.7z |
---|---|
SkyDrive |
注意点
色々注意点あります。
使い方
単なるusage出力ですがこんなことになりました。
Usage: SFFv2Tool.py [options] Options: --version show program's version number and exit -h, --help show this help message and exit --input=INPUT SFF file for input. (default:sys.stdin) --output=OUTPUT SFF file for output (APPEND, MODIFY, DELETE), or output directory (EXTRACT). (default:sys.stdout [APPEND/MODIFY/DELETE], Current Directory [EXTRACT]) -E, --extract Extracting sprites or palettes -A, --append Append a sprite or palette -M, --modify Modify a specified sprite or palette data -D, --delete Delete a specified sprite or palette data -T TARGET, --target=TARGET Operation Target ('spr', 'pal' or 'both'.) -G GROUP, --group=GROUP Sprite or Palette Group Number -N NUMBER, --number=NUMBER Sprite or Palette Number --clone Extracting cloned sprites --noclone Except cloned sprites in EXTRACT mode -I INDEX, --index=INDEX Inserting index of Sprite or Palette except EXTRACT mode -P PALETTENUMBER, --palette=PALETTENUMBER Set sprite used palette number in APPEND or MODIFY mode -F SOURCE, --file=SOURCE A file contains Sprite or Palette data --xaxis=AXISX Set a x-axis of sprite for MODIFY or APPEND --yaxis=AXISY Set a y-axis of sprite for MODIFY or APPEND --palno=PALNO Set palette number to default palette of specified sprite --debug Enable Debug Print --nodebug Disable Debug Print (default)
以下余談
色々面倒だったのよ
何が面倒ってデータの並び的に
SFFヘッダ | パレットヘッダ×パレット数 | スプライトヘッダ×スプライト数 | パレットデータ×パレット数 | スプライトデータ×パレット数 |
なので、先にパレットヘッダを読み込んで、データを読みにいってまた戻るを繰り返すこと。ついでにパレットデータの構造がRGBAなのとかスプライトデータがインデックスカラーのパレット番号の羅列を圧縮した物とかなので、どうしても変換作業が必要になるとかね。
特に困ったのがスプライトデータ。ElecbyteのMain Page - M.U.G.E.N Wikiに圧縮方式のサンプルコードはあったもののRLE8とRLE5だけでLZ5が謎なこと。*1 *2
BMP変換とか
あれも面倒だった。パレット並びがまさかのBGRAにしなきゃいけないとか上下反転して記録しなきゃいけないとか面倒すぐるでしょう。
まぁSFFv1は楽なフォーマットであることはこれで自明なんですが。パレットのないPCXデータの羅列なのでPCXヘッダが見つかればあとはライブラリ何なりで読み出せます。
SFFv2だと内部がおそらくほぼ独自なので力技で読み込んでます。もしかしたら圧縮済みBMPデータかもしれませんが、5bit形式のBMPなんてないのでRLE5とかは結局解析が必要になるのではと思います。