◆KFX パターンファイル解析メモ
pattern.patやppattern.ppt解析時の覚え書きをコピペ。
普通にキャラ作りたいだけの人には全くの無用、無駄無駄ァなテキストです

[pattern.patの仕様覚え書き]
[ppattern.ppt解析メモ]

メニューへ戻る

220626 何故か折り返しのbyte数を間違って記述してたの修正。頭の中で答えが出来てても出力が誤ってるの良くあるの困る。
251125 20x600が1200とか流石に笑っちゃったので修正。オフセット値についての記述追加。

[pattern.patの仕様覚え書き]
 600byteごとに画像番号(motion.lstでPicに当たる部分)
 に対応したパターンデータが入っている。
 画像番号0ならば当然先頭の0byteからデータが読み出されるし、
 20ならば20x600で12,000byteからのデータを読み込む事になる。

 40byteごとの先頭4byte部分にはそれぞれ
 「透過色以外の画像ブロック読み込み開始番号」2byte
 「読み込み終了番号」2byte
 が記述されている。
 この箇所を参照してデータの不必要なブロック読み込みを抑制しているが、
 透過色の設定ミス(RGBの値が1だけ違う画像の混入等)をしてしまうと
 無駄に透過色ブロックを読み込んで、処理が重くなる。
 (拡張エンジンでの上下反転処理の位置がおかしくなる原因にも)

 先頭4byte以降は2byteずつに
 16x16dotに分解したbmpを2byteごとに呼び出すための情報(仮にこの値をblocknumとする)
 この値が直接bmpを読み込む位置を示していて、0ならばx0y0〜x15y15、
 1ならばx16y0〜x31y15と、xの値が16ずつスライドし、
 40を区切りにxが0にリセット、yが16に遷移し再びxの値が16ずつスライドして行く。
 (x=blocknum/40の余り値*16 y=blocknum/40*16)
 2byteでのデータ管理なので、扱える値の最大は FF FF = 65,535
 なのだが、実は最大値である65,535は透過色を示す値として定義されている。
 そのため、画像登録可能な最大数は0〜65,534までの範囲となっている。

 A等の拡張で最大値まで使った場合のchara.bmpのサイズは
 640x26,224(見た目では15ブロック残っているが使用不可)
 容量は減色後 16,784,438byte になる。
 
 拡張エンジン等で使用されているオフセット値が仕込まれている領域はキャラの右上に相当する位置に書き込まれている。
 36byteから2byte分がYoffset、
 38byteから2byte分がXoffset。
 行頭の読み込み開始と終了値は変わらない為に描画時はスキップされ邪魔されないという仕組み。
 (CARROT公式のHITCHECK.exeは全部のバイナリを読んでるので表示されてしまったりする)
 そんな実装なので、右上の2ブロック分まで埋める画面全体を埋め尽くす画像にはオフセット値は仕込めない。
 
 オフセット値は+32,767(7F FE)が最大で-32,767(80 00)が最小。
 仕様上先に埋まっている65,535(FF FF)を0扱いにして0を1として数えているため、正の値は表記と一つズレが生じている。

[ppattern.ppt解析メモ]
※自分用メモそのままなので意味不明でも諦めろ

0 0 先頭4バイト=ヘッダー文字 PPAT
  1 --
  2 --
  3 --
  4 00 ? 用途不明の4バイト。この箇所は初期スキン内の.PPTには存在しない。
  5 00 ?
  6 01 ?
  7 01 ?
  8 01〜03 解像度オプション[01x1 02x2 03x3]
  9 
  A 
  B 
  C 登録画像数
  D -
  E -
  F -
 [ここまでヘッダー]
 
100 画像番号 下2ケタ(16進
  1 4ケタ
  2 6--
  3 8--
  4 読み込み回数 2
  5 4--
  6 6--
  7 8--
  8 xsize 2
  9 4--
  A 6--
  B 8--
  C ysize 2
  D 4--
  E 6--
  F 8--
 20 xoffset 2
  1 4--
  2 6--
  3 8--
  4 yoffset 2
  5 4--
  6 6--
  7 8--
  8 ?(おそらく中心軸x。現状では特に用途無し)
  9 ?
  A ?
  B ?
  C 中心軸y(未設定時はFF FF FF 7F[2147483647]になり、Aと同じように反転軸は自動設定になる)
  D --
  E --
  F --
  [ここまで画像一枚の基本データ]
  
300 読み込み開始ブロック
  1 
  2 
  3 
  4 読み込みブロック数(マイナス値の場合は同じブロックを回数分読み込む
  5 
  6 
  7 
  8 書き出しx座標
  9 
  A 
  B 
  C 書き出しy座標
  D 
  E
  F
  [以下読み込み回数分繰り返し後、次の画像データへ]


メニューへ戻る