KISS/GS ( KISS General Specification ) Manual by K.O.S.
>>>> 公開仕様(v1.00) $Date: 1994/09/23 23:30:37 $ <<<<<
***********************************************************
公開(正式)仕様ですが、やむを得ず変更されることもあります。
一部未確定な項目を含みます。また、順次拡張される予定です。
***********************************************************
1 はじめに
着せ替えプログラムKISSは当初NECのPC−9801VM2以降
のアーキテクチャに依存したところからスタートしましたが、多くの方
のご支持により、他のマシンにもインプリメントされるようになりまし
た。
そこで、KISSに関する新しい仕様を定義し
KISS一般仕様
( KISS General Specification : KISS/GS )
として、ここに公開します。
これにより、98アーキテクチャ依存状態から脱却し、高レベルの
表示機能にも対応可能な、将来性のあるフォーマットになっていると
思います。
2 新仕様の概要
今までのデータの継承の問題もありますので、基本的には上位互換
の形式をとります。
以下の量的スペックが改善されます。
・色数(セル) 16 色 → 16 / 256 色
・色数(パレット) 4096 色 → 4096 / 1677万 色
・最大画面 640 x 400 → 768 x 480 (以上)
・セル/オブジェクト数 128 個 → 256 個以上
また、複数のパレット・ファイルを共存させる事が出来ます。
(→ 4−1 マルチ・パレット機能)
これに伴い、セル・ファイル、パレット・ファイルにはヘッダー部分を
定義し、各情報が格納されます。
仕様としては大幅に拡張されましたが、実際のインプリメンテーションに
おいてはいろいろな制限があると思うので、ランクを設定します。
KISS/GSn ( n = 1,2,3,... )
の形式で表現します。
(→ 7 KISS/GS ランク一覧表)
さらなる拡張(トゥルーカラー化とか)もデータフォーマットとしては、
予約を設けるなどして考慮してあります。
ただ、必要もないうちに、詳細を決定してしまわない方がいいと考えます。
時機が来たら、検討します。
(その頃まで、KISSが生き残っていればの話ですが。)
3 KISSの基本概念
KISSについて一切知識の無い方のために、ここで説明します。
拙作 KISS.EXE (PC9801) v2.24c の動作については、ほぼ把握している
という方は、読み飛ばされても結構です。
3−1 KISSの機能
KISSは、基本的には、透明色処理機能のついたグラフィック・
ローダです。複数の絵を重ね合わせることが出来ます。
これに、着せ替えとしての使用を考慮して、マウス操作によるリアル
タイム移動の処理を付加しています。
3−2 データ・ファイル
KISSが扱うデータファイルは以下の通りです。
・セルファイル
着せ替えのパーツとなるべき、フォント・データです。
1ピクセルごとの色コードが並んだファイルです。
0 番を透明色として扱います。
・パレットファイル
セルの色コードと表示色の対応を示したファイルです。
最大 10 画面分持てます。
・コンフィグファイル
上記のファイルの重ねあわせや配置等を、指定するデータです。
KISSはこのファイルによって、着せ替えを実行します。
テキストファイルなので、エディタによる編集で作成します。
一部 Save 機能で、 KISSが直接書換える部分もあります。
3−3 用語の解説
・セル KISSで扱う絵の最小単位。
・オブジェクト 1個または複数のセルで構成される絵。マウスでの移動の
基本となる。
・パレット組 1画面分のパレット情報。
・セット パレット組とオブジェクトの配置からなるデータ。
4 GS−KISSの新概念
4−1 マルチ・パレット機能
処理的に言うと、今まで1系統だったパレット・ファイルを
複数使える様にすると言うことです。
こうすると、例えば服や付属物のみのデータが、存在できる
ということです。これに、本体のデータを別に作成して組み
合わせる事ができます。(逆でもいいのですが)
それぞれのパレットは独立なので、複数の人が同時に作成す
るのもかまわない訳です。
ただし、全体で使用する色数は 256 色以内でなくてはいけ
ません。
またセル毎にどのパレットを使用するかの指定が必要になり
ます。
5 コンフィグ・ファイルの仕様
コンフィグ・ファイルの1行は 255 文字以内とします。セット情報以外
はこれで収まるはずです。
また、ファイル名(パレット、セル)は、名前 8 文字+拡張子 3 文字
以内で大文字・小文字同一視です。(MS−DOS互換)
使用可能な文字セットは、[_0-9a-z] です。
行頭の1文字が機能文字となります。
・'=' メモリサイズ
書式: =<メモリ>K
KISSが起動時に、データ領域として必要なメモリ量を
指示しますが、KISSVer1との互換性のためにあります。
KISSVer2以降では無視します。
指定しない方がよいでしょう。
例)
|
|=260K
|
・'(' 画面サイズ指定
書式: (<x方向のサイズ>,<y方向のサイズ>)
表示画面の大きさを指定します。省略した場合は v2.18 互換の
(448,320) が使用されます。
KISS/GS2の場合,指定できる最大は(640,400)です。
(→ 7 KISS/GS ランク一覧表)
例)
|
|(640,400)
|
・'%' パレットファイル指定
書式: %<パレットファイル名>
パレットファイルを指定します。
複数指定することが出来ます。出現順に 0, 1, 2 .... と、
番号がつけられます。 0 番の色数は全て使用されますが、
1 番以降は透明色は無視され1色少ない数を使用します。
全体での総和は 256 色以内でなくてはなりません。
セルファイル指定が来る前に、すべてのパレットファイルが
指定されてなくてはいけません。
例)
|
|%COL.KCF
|%COL2.KCF
|
・'[' 最外部色指定
書式: [<最外部色コード>
着せ替え範囲の外の色コードを指定します。
例)
|
|[12
|
・'#' セルファイル指定(複数個指定可能)
書式:#<マーク>[.<固定値>] <セルファイル名>
[*<パレットファイル番号>] [:<セット番号> ...]
<マーク> : オブジェクト指定のための識別番号です。他に同じ
番号のセルがあった場合、同じオブジェクトとして
結合されます。
KISS/GS2の場合,範囲は 0 - 255 です。
(→ 7 KISS/GS ランク一覧表)
<固定値> : オブジェクト固定属性を指定します。動かしたくな
いオブジェクト(本体など)のときに指定します。
大きな値ほど動かすための操作回数が多くなる。
0 - 32767 が指定可能。
省略した場合は 0 (非固定)。
<セルファイル名> : 拡張子も含めて指定してください。
<パレットファイル番号> :
パレットファイルが複数ある時、どのパレット
ファイルを使用するかを指定します。
省略時は 0 です。
<セット番号> : 特定のセットでのみ使用したい場合指定します。
0 - 9 までの番号を複数個指定できます。
省略した場合は全セットで使用可能です。
セルファイルを複数個(1個では着せ替えできないので、普通は
複数個ある)指定すると、それが重なりの優先順位となります。
KISS/GS2の場合,最大 256 個のセルを指定できます。
(→ 7 KISS/GS ランク一覧表)
例)
|
|#2 data1.cel ; ↑上
|#3 data2.cel :2 3 4 ;
|#4.255 data3.cel ; 固定
|#5 data4.cel *1 :5 ;
|#2 data1_.cel ; ↓下
|
この場合 data1.cel と data1_.cel は1つのオブジェクトと
なります。この2つの間には data2.cel と data3.cel が
入り込めます。
・'$' セット情報(複数個指定可能)
書式: $<パレット組> [<x座標,y座標> ...]
セットごとのパレット組と各オブジェクトの位置を指定します。
最初の指定が 0 で 9 まで、最大10個のセット情報を指定できます。
このデータはKISSの Save 機能で自動的に生成されますので、
ユーザーが直接書き込む必要は、ほとんどないでしょう。
1行に収まらない場合、継続行となります。この場合、次の行の
先頭は ' ' (スペース)です。
<パレット組> : パレットグループを指定します。0 - 9 まで。
<座標(x,y)> : オブジェクト(マーク順)の座標です。
KISS/GS2の場合,最大 256 個の並びです。
(→ 7 KISS/GS ランク一覧表)
設定がない場合は * です。
例)
|
|$2 192,11 * 56,176 55,21 259,62 15,24 375,63
|$3 43,115 154,62 372,108 253,156 * * * 165,207
| * 162,198 * 119,56 152,44 * * *
| 16,355 394,362 108,355 * * * 125,261
|$0 192,11 * 56,176 55,21 259,62 15,24 375,63
|
・';' 注釈
書式: ;<注釈文>
この行は無視されます。
また、注釈行の中に定型化情報を設定し、データ名、作者名等を
自動的に取り出せるようにします。(詳細は検討中)
・上記以外
システム拡張のため、予約されています。
5 セルファイルの構造
先頭に 32 バイトのヘッダーがあります。
offset size contents
+0 4B 識別文字 'KiSS' ( 4Bh 69h 53h 53h )
+4 B セルファイル・マーク ( 20h )
+5 B 1ピクセル当たりのビット数 ( 4 / 8 )
+6 W 予約
+8 W(L,H) x方向の大きさ( 1 ~ XMAX )
+10 W(L,H) y方向の大きさ( 1 ~ YMAX )
+12 W(L,H) x方向の表示位置オフセット( 0 ~ XMAX-1 )
+14 W(L,H) y方向の表示位置オフセット( 0 ~ YMAX-1 )
+16 16B 予約
注)予約フィールドは全て 0 で埋めておくこと
表示位置オフセットは、表示位置をずらしたいときに指定します。
分離セルの場合に、データ中の無駄な0データを無くすことが
できます。
+32〜 ピクセル・データ
◎1ピクセル当たり 4 ビット(16色)の場合のピクセル・データの構成
x方向1ライン分
|<- バイト ->| |<- バイト ->| |<- バイト ->|
MSB LSB MSB LSB MSB LSB
| pix0 | pix1 | | pix2 | pix3 | | pix4 | pix5 | ......... | pixN |
x方向幅が奇数のときは最後に1ピクセル分、0が追加されます。
これが全体でy方向幅分、繰り返されます。
◎1ピクセル当たり 8 ビット(256色)の場合のピクセル・データの構成
x方向1ライン分
|<- バイト ->| |<- バイト ->| |<- バイト ->|
MSB LSB MSB LSB MSB LSB
| pix0 | | pix1 | | pix2 | ... | pixN |
これが全体でy方向幅分、繰り返されます。
先頭 4 バイトが 'KiSS' で無かった場合は、
+0 W(L,H) x方向の大きさ
+2 W(L,H) y方向の大きさ
+4〜 ピクセル・データ
で 4ビット/ピクセルとして扱います。
また x、y方向の表示位置オフセットは 0 とします。
要するに、旧フォーマットです。
6 パレットファイルの構造
先頭に 32 バイトのヘッダーがあります。
offset size contents
+0 4B 識別文字 'KiSS' ( 4Bh 69h 53h 53h )
+4 B パレットファイル・マーク ( 10h )
+5 B 1色当たりのビット数 ( 12 / 24 )
+6 W 予約
+8 W(L,H) 1パレット組内の色数 ( 1 ... 256 )
+10 W(L,H) 全パレット組数 ( 1 ~ 10 )
+12 W 予約
+14 W 予約
+16 16B 予約
注)予約フィールドは全て 0 で埋めておくこと
+32〜 パレット・データ
◎1色当たり 12 ビット(4096色)の場合のパレット・データの構成
1つのパレット・データは 2 バイト、RGB各 4 ビットで 4096 色。
|<- バイト ->| |<- バイト ->|
MSB LSB MSB LSB
| rrrr | bbbb | | 0000 | gggg | ....
1パレット組内の色数 × 全パレット組数 分並びます。
◎1色当たり 24 ビット(1677万色)の場合のパレット・データの構成
1つのパレット・データは 3 バイト、RGB各 8 ビットで 16777216 色。
|<- バイト ->| |<- バイト ->| |<- バイト ->|
MSB LSB MSB LSB MSB LSB
| rrrrrrrr | | gggggggg | | bbbbbbbb | ...
1パレット組内の色数 × 全パレット組数 分並びます。
全パレット組数が 10 に満たない場合、その分は 0 番のパレット
組のデータが入ります。
先頭 4 バイトが 'KiSS' で無かった場合は、
+0〜 パレット・データ
で 12 ビット/色、パレット組当たりの色数 16 、全パレット組数 10
として扱います。要するに、旧フォーマットです。
注) ヘッダーの 'KiSS' が大文字・小文字混ざってるのは、わざとです。
この方が、他のとマッチすることが少ないと思ったからです。
7 KISS/GS ランク一覧表
ランク 画面サイズ 色数 最大セル数
--------------- ---------- ---- ----------
KISS/GS1 640 x 400 16 128 ; (参) KISS v2.24c
KISS/GS2 640 x 400 256 256 ; (参) KISS v2.37
KISS/GS3 768 x 480 256 256 ; 仮設定
KISS/GS4 768 x 480 256 512 ; 仮設定
--------------- ---------- ---- ----------
仕様の一般化に伴いデータの自由度は大きくなりました。そしてまた、
ハードを特定する必要も無いのですが、マシンによる動作の可否について
は混乱が生じる恐れが有ります。
そこで、各機種へのインプリメンテーションを考慮し、データの作成時の
ガイドラインとするため量的スペックについて、上記のようなランクを
設定します。(一種の仮想マシンを作り出します。)
これは、あくまでガイドラインなので、インプリメンテーションに際しては
ハードの最大スペックを使用すべきです。
データ作成についても絶対的な制限は設けませんが、ランクを考慮した方が
より多くのマシンで動作する可能性がでてきます。
KISS/GS2 では到底無理なデータを敢えて GS2 で作ることはありませんが、
GS4 がちょっとの工夫で GS3 に収まるのなら GS3 で作った方がよいと
いうことです。
現在 KISS/GS4 まで設定されています。ハードの普及に合わせて、順次
拡張していきます。
☆ おくづけ
このドキュメントは public domainです.
このドキュメントに関する質問,アドバイスや
インプリメンテーション上の問題点などありましたら,
UHD98984@biglobe.ne.jp
yav
までメールくださいませ.