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 までメールくださいませ.