トップ小ネタPrince of Persia > 一枚絵データ


一枚絵データ

オープニングなど、主にプレイ中以外で使われる画像ファイルです。
以下のファイルが該当します。
TITLE*.DAT
タイトル
JAFFER*.DAT
オープニング
OPEN*.DAT
オープニングの水晶球部分
JAF_*.DAT
オープニングのジャファーの顔アニメ
PROOM.DAT
姫の部屋
MOYOU.DAT
メニュー画面
ENDING*.DAT
エンディング
(ENDING6.DATはやや特殊、詳細は後述)

データ形式
最初の4byteはサイズ情報です。(横・縦でそれぞれ2byteずつ)
$00 - 横方向のサイズ(この値に*8したものが横方向のドット数)
$02 - 縦方向のサイズ(=縦方向のドット数)
となっています。
以降は圧縮データのように「パターン番号」「パラメータ」の繰り返しになっています。
基本的に一回のパターンで横8ドット分を表し、これが横方向に続いています。

他の画像ファイルでは
 ・1byte中の各bitが1ドットに対応
 ・↑のようなデータが複数あり、1byteごとにパレット番号(3bit)の各bitおよび描画フラグ(1bit)に対応
となっていましたが、この一枚絵データでもパターン番号に沿ってデータを展開すると
同様の形式のデータが得られます。
(一枚絵では描画フラグにあたるデータはないので得られるデータは3byte(8dot*3bit)です)
※これはあくまで「↑の形式でデータを得ることができる」という意味であり、
  実際にこの形式に展開(変換)して処理しているのかは不明です。

パターンは$00〜$FFの全てを試したわけではありませんが、とりあえず確認済みなのは以下の通りです。

・値は基本的に16進数で表しています。
・[ ]付き数字はパターン番号、 aa bbなどはパラメータ部を表しています。
・「*7」のように「*」付きの数字は、「*」の部分に任意の値が入ることを表しています。
・[04/05]のように「/」付きの場合は両方のパターンの展開結果であることを表しています。
 ([*4]と[*5]は「--」の部分以外は同じ値になります)

通常書き込み
パターン番号 パレット番号
+1 +2 +4
[01] aa aa aa aa
[02] aa bb aa aa bb
[12] aa bb aa bb aa
[22] aa bb aa bb bb
[03] aa bb cc aa bb cc
[04/05] aa -- -- aa
[14/15] aa -- aa --
[24/25] aa aa -- --
[34/35] aa bb -- aa bb
[44/45] aa bb aa -- bb
[54/55] aa bb aa bb --
[*6] 8ドット全てがパレット*番になる
※*4の場合、「--」の部分は常に$00になる
※*5の場合、「--」の部分は常に$FFになる

繰り返し・コピー系
[00] aa ... 次に続くパターンを(aa+1)回繰り返す
[*0] ...
(*は0以外)
次に続くパターンを(*+1)回繰り返す
[*7] aa (*+1)ライン上から(aa×8)dotコピーする
※訂正:以前「(aa+1)*8dot」と書いてありましたが正しくは上記の通りです(2011/03/21)
※これらのパターンでは右端をはみ出るような指定はできません。(エラーになります)
※繰り返し系は重複(多重)指定できません。(最後に指定した値が有効)
※「○ライン上からコピー」は繰り返し指定されていても無視されます。(常に1回のみ実行)

例:[12] 7F AAの場合(→$7F/$AA/$7F)
パレット番号bit0(+1) $7F(01111111)
+1
(001)
+1
(001)
+1
(001)
+1
(001)
+1
(001)
+1
(001)
+1
(001)
パレット番号bit1(+2) $AA(10101010) +2
(010)

+2
(010)

+2
(010)

+2
(010)

パレット番号bit2(+4) $7F(01111111)
+4
(100)
+4
(100)
+4
(100)
+4
(100)
+4
(100)
+4
(100)
+4
(100)
表示色
2
(010)
5
(101)
7
(111)
5
(101)
7
(111)
5
(101)
7
(111)
5
(101)

ENDING6.DATについて
ENDING6.DATのみ、1つのファイルに複数(12個)のデータが含まれています。
ファイルの先頭には各データの開始アドレス(2byte)が12個続いており、
その後にデータ本体が続きます。
$00アドレス1
$02アドレス2
......
$16アドレス12
$18〜 データ1
データ2
...
データ12
※ENDING6.DAT以外のファイルは「データ1」にあたる部分のみになっています。

戻る