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

	までメールくださいませ.