前回の続きです。
前回は開発環境の「HuC」を導入して、サンプルプログラムを動かすところまでやってみました。
使ってみて気が付きましたが、画像の読み込みに対応しているファイル形式が「PCX」のみで、どうにも使いにくいです。
PCXファイルというのは、こんな感じの画像ファイルです。DOSの時代には良く使われていたみたいですが、今となってはマイナーなファイル形式だと思います。PCXファイルはirfanviewで開けましたが、Photoshopでは開けませんでした。
なので、PCXファイル以外に対応する変換ツールを自作する必要が出てきました。
まず、HuCで「#inc~」マクロでPCXファイルを取り込んだ時にどんな感じにデータ化されるのかを調べます。ドキュメントを見てもよくわからないので、上記のようなプログラムを自作しました。「BALL.PCX」はサンプルのPONGに付属する画像ファイルです。
hucとpceasでビルドして、PCエンジンエミュレータで実行すると、こういう画面が表示されます。画面上半分が画像データ、画面下半分がパレットデータです。
これだけだと、意味不明な16進数の羅列ですが、、、
いろいろ試行錯誤しながらデータを再構築してみました。マクロの出力は次のようなフォーマットだと思われます。
「#incspr」
・スプライト用は1枚あたり16x16ピクセル。他にも32x16、16x32ピクセルも選択可。
・1枚あたり4bit=16色。透明色を除くと実質15色。
・1枚あたりのパターンはint型(16bit)×64要素=64ワード。1要素は2値16ピクセルで考える。
・16要素で1プレーン。全4プレーン。下位ビットから順番にデータを格納。
「#incpal」
・1パレット16色。int型(16bit)×16要素=16ワード。カラーインデックス0番から格納。
・1要素あたりは9bit(bit8~6=緑、bit5~3=赤、bit0~2=青)
・8諧調x8諧調x8諧調=512色。
・0番のカラーは透明色。
これで画像/パレットデータの構造がわかりましたので、次は変換ツールを自作してみたいと思います。