【TTFKSMN4.HTM】では、一般的な使用法の説明をしましたが、 本ファイルは、それでは至らない部分の、特に機種依存する部分の より深い説明となっています。
データを作成なさる皆様が、他の人の環境を考慮頂ければ
より多くの人に、自分の意図した作品を見てもらうことができるでしょう。
ローダの動作はバージョンによっても異なります。 私が動作の検証に用いた ローダとそのバージョンは、以下の通りです。とくにバージョンを明記してい ないときは、このバージョンについての説明であるとお考えください。
WKISS/WKISS32に関しては、最新の公開バージョンであるWKISS ver 2.36a w0.68以降 とWKISS32 v0.04以降の、バージョンによる違いに触れている場合もあります。
| ・WKISS32 v0.04d |
| ・WKISS v0.68c |
| ・KISSGAシリーズ v1.50 |
| ・KISS v2.50d |
| ・fkiss v0.25 |
| ・KISSLD v0.07s |
イベント系の命令は、実際に意味のある実装がなされていなくてもキーワード
として認識している場合があります。これは、未対応だからといって単純に無視
するとコンフィグの誤動作をまねくおそれがあるからです。
たとえば、いまのところleftside,rightside,upside,downsideを実装している ローダはありません。
なお、すべてのローダですべての命令について実験したわけではないので、 ウソを書いている可能性もあります(^^;。間違いを見つけられましたらご一報い ただけると幸いです。
| 動作環境 | UNIX/X11 | Win32 | PC-9821 | Win32 | Win32 | Macintosh |
|---|---|---|---|---|---|---|
| ローダー | fkiss | WKISS32 | KISS21 | KISSLD | PlayFKiss | French Kiss |
| バージョン | v0.25 | v0.04g | v1.50 | v0.07q | alpha 0.71 | 2.2.0 |
| 命令数 | 36 | 34 | 30 | 30 | 51 | 29 |
| never | ○ | - | - | ○ | ○ | - |
| initialize | ○ | ○ | ○ | ○ | ○ | ○ |
| alarm | ○ | ○ | ○ | ○ | ○ | ○ |
| begin | ○ | ○ | ○ | ○ | ○ | ○ |
| end | ○ | * | ○ | ○ | ○ | ○ |
| press | ○ | ○ | ○ | ○ | ○ | ○ |
| release | ○ | ○ | ○ | ○ | ○ | ○ |
| catch | ○ | ○ | ○ | ○ | ○ | ○ |
| drop | ○ | ○ | ○ | ○ | ○ | ○ |
| fixcatch | ○ | ○ | ○ | ○ | ○ | ○ |
| fixdrop | ○ | ○ | ○ | ○ | ○ | ○ |
| unfix | ○ | ○ | ○ | ○ | ○ | ○ |
| set | ○ | ○ | ○ | ○ | ○ | ○ |
| col | ○ | - | ○ | ○ | ○ | ○ |
| in | * | - | - | - | - | - |
| out | * | - | * | - | - | - |
| leftside | * | - | * | - | - | - |
| rightside | * | - | * | - | - | - |
| upside | * | - | * | - | - | - |
| downside | * | - | * | - | - | - |
| nop | ○ | - | ○ | ○ | ○ | - |
| debug | ○ | ○ | ○ | ○ | ○ | - |
| shell | ○ | - | ○ | ○ | - | - |
| unmap | ○ | ○ | ○ | ○ | ○ | ○ |
| map | ○ | ○ | ○ | ○ | ○ | ○ |
| altmap | ○ | ○ | ○ | ○ | ○ | ○ |
| move | ○ | ○ | ○ | ○ | ○ | ○ |
| sound | ○ | ○ | ○ | ○ | ○ | ○ |
| timer | ○ | ○ | ○ | ○ | ○ | ○ |
| randomtimer | ○ | ○ | ○ | ○ | ○ | ○ |
| quit | ○ | - | - | ○ | * | - |
| changeset | ○ | ○ | ○ | ○ | ○ | - |
| changecol | ○ | ○ | ○ | ○ | ○ | - |
| transparent | ○ | ○ | - | ○ | ○ | - |
| windowsize | ○ | - | - | ○ | * | - |
| viewport | ○ | - | - | ○ | * | - |
| ローダー | fkiss | WKISS32 | KISS21 | KISSLD | PlayFKiss | French Kiss |
| ローダー | WKISS32v0.04g | PlayFKiss alpha 0.71 | French Kiss 2.2.0 |
|---|---|---|---|
| version | - | ○ | ○ |
| in/FKiSS2 | ○ | ○ | ○ |
| collide | ○ | ○ | - |
| out/FKiSS2 | ○ | ○ | ○ |
| apart | ○ | ○ | - |
| stillin | ○ | ○ | ○ |
| stillout | ○ | ○ | ○ |
| music | ○ | ○ | - |
| notify | - | ○ | ○ |
| moveto | ○ | ○ | ○ |
| movebyx | ○ | ○ | ○ |
| moverandx | - | ○ | - |
| movebyy | ○ | ○ | ○ |
| moverandy | - | ○ | - |
| movetorand | ○ | ○ | - |
| ifmapped | - | ○ | - |
| ifnotmapped | - | ○ | - |
| iffixed | - | ○ | - |
| ifnotfixed | - | ○ | - |
| ifmoved | - | ○ | - |
| ifnotmoved | - | ○ | - |
| setfix | - | ○ | - |
;@press(#1) ;オブジェクト#1がマウスでクリックされると起動します。
;@ timer(3,200) ;200ミリ秒後に鳴るタイマ3を仕掛けます。
;@ map("huge.cel") ;huge.celを表示状態にします。
;@ timer(2,100) ;100ミリ秒後に鳴るタイマ2を仕掛けます。
;@alarm(2) ;タイマ2が鳴ったときに起動します。
;@ timer(1,100) ;100ミリ秒後に鳴るタイマ1を仕掛けます。
;@alarm(3) ;タイマ3が鳴ったときに起動します
;@ timer(4,1000) ;1000ミリ秒後に鳴るタイマ4を仕掛けます。
;@alarm(1) ;タイマ1が鳴ったときに起動します
;@ timer(4,0) ;タイマ4が仕掛けられていたら、解除します。
では、問題です。
だから、問題文の例では実際には150ミリ秒後に起動していますが、 タイマ1の起動時刻を決めるときには、あたかも100ミリ秒後に起動したかの ように計算します。
このへんは雑誌などの〆切りに似ていると思います。今月〆切りに遅れた からといって、来月以降の〆切りも延びるわけではありません:-)。
したがってこういう記述はしないほうがいい……のですが、
fkissやWKISS32での実装に依存したデータもすでに存在します。
その場合の答は「鳴る」です
(なぜそうなのかは、これ以上ローダ依存のデータを増やしたくないので
説明しません)。
しかたがないのでKISSLDでもこの動作に合わせました。
WKISS32 v0.04では付属ヘルプに0〜255の範囲で補正すると書いてあり、 実際そうするのですがこれはある意味不具合のようです。
WKISS32でも内部的には256で完全に透明になるよう計算していますし、 %tでは補正を行っていないので透明度256も指定できます。
ですから、完全に透明にしたい場合には
v0.04では間違って255に補正されるWKISS32でもエラーにはなりませんし、
v0.04c以降では正しく256になります。
ローダによっては、256を指定した場合と255を指定した場合とで
処理速度がぜんぜん違う可能性があります。
なお、transparentおよび%tによって指定できる透明度と、
フルカラーセルでピクセル単位に指定できるアルファ値(透明度)は、
どちらもckissで規定しているにもかかわらず数値の意味が
異なることに注意してください。
前者は範囲が0〜256で数値が大きくなるほど透明になりますが、
後者は範囲が0〜255で数値が小さくなるほど透明になります。
次のバージョン以降で修正されるそうです。
例:
#0 abc.cel
#1 abc.cel
#2 abc.cel
(中略)
;@ altmap("abc.cel")
私の試した限りでは、WKISS/WKISS32/KISSGAシリーズも、セルファイル名に
関しては大文字・小文字を区別しないようです。
ちなみに、KISSLDも大文字・小文字を区別しません。
#0 abc.cel
#1 ABC.CEL
#2 abc.cel
(中略)
;@ unmap("ABC.CEL")
またサポートしているローダ同士ではかなり動作が異なり、 凝ったコメントを 付けているデータ作者の方々は、 ローダ別にコンフィグを用意するなどの対策 をされているようです。
本家KISS.EXE v2.50d
WKISS ver 2.36a w0.68
WKISS v0.68c/WKISS32/fkiss
KISSGA/21/CL
Macintosh用KISSローダ
参考: KISSLDでは
| fkiss | KISSGA | WKISS | WKISS32 | KISSLD | |
|---|---|---|---|---|---|
| 自動折り返し | × | ○ | ○ | × | [*] |
| 機能文字 | ○ | × | × | ○ | ○ |
| 複数セル | ○ | × | ○ | ○ | ○ |
ご覧のとおり、どのローダでも使える方法はありません。
とくにKISSGAシリーズとfkiss / WKISS32とで両立させるのは不可能です。
また、一見同じ動作をしているように見えるfkiss/WKISS32/KISSLDも、
セットに存在しないセルやマップされていないセルの扱いがバラバラです。
次期KISSではMacintosh(というかボタンがひとつしかない環境)での扱いを
どうするかも含めて、統一仕様を正式に規格化していただけるといいですね。
それまではローダごとの特徴をつかんで、楽しく利用しましょう(^^)。
WKISSはメッセージボックスを使い、タイトルバーにはオブジェクト番号も表示
されます。
WKISS32/fkissはマウスボタンを押している間だけコメントを表示し、
オブジェクト番号は表示しません。
fkissは起動時オプションにより、クリックしたセルのみコメントを表示する
モードや、セルの(CNF内での)行番号も表示するモードに切り替えられます
(両者の併用もできます)。いずれの場合も機能文字は有効で、自動的に
折り返すことはありません。
上記はv1.50以降での動作です。古いバージョンでは、 表示するのはクリックしたセルのコメントのみです。 同じオブジェクトに所属する他のセルは関係ありません。
またKISSLDは(どちらのモードでも)セット情報を見て、
現在のセットに存在しないセルのコメントは
表示しないようにします。
WKISS/WKISS32の以前のバージョンおよびfkissはセット情報に関係なく、
同じオブジェクトに所属し、かつコメントがあるなら、すべて表示します。
WKISS32 v0.04c以降は現在のセットに存在しないセルのほか、fkiss命令で アンマップされたセルのコメントも表示しません。
なので、KISS/GSや fkiss の仕様と違ったデータを作成する方は、
いっそのこと「似てるけど違うプログラムなんだ!」と割り切って
Chad Randall氏作の PlayFKiss (Windows95/NTで動作します。) や、
John Stiles 氏作の French Kiss (Macintosh で動作するはずです。)
MacOSの種類までは知らないので。m(__)m
も、そういったローダーです。
Macな方々は、French Kissにお世話になっている方が多いと思います。
このChad氏独自の「FKiSS2」の分類によると
MacintoshのFrench Kiss 2.2.0の命令が ( version 2 )
だとわかります。
その動作の詳細、使い方について 詳しくは、PlayFKiSSの添付ドキュメントを見て下さい。 m(__)m
「fkiss」命令では表現出来ない、アクティブな作品を作りたいのなら 「FKiSS2」命令を使用してみても、面白い作品になると思います。
その際は、皆様のためにも使用ローダーを明記してくださいね。m(__)m
なぜなら、現在「fkiss」命令でさえローダー毎に細かい違いがあるのに 「FKiSS2」はそれを考慮していない(というか言葉の壁で難しい ?) Chad 氏のさらなる拡張仕様なので、命令の互換性が保たれているかどうか 不安な面が無いとはいえないからです。
せっかくデータを作っても、互換性のない命令を使用した為に 他の人に見てもらえなかったり、せっかくデータをダウンロードしても 命令に対応していないローダーしか持っていないために、データを観賞 出来なかったら、みなさん困るでしょう?
将来、「fkiss」にしろ、「FKiSS2」にしろ、
KISSでアニメーションするための命令がどう変化して行くかわかりませんが、
みんなで楽しめる命令になると良いなあ、と思います。
「データの互換性を保ちたい」「より多くのデータを共有したい」
という希望から、あえてその命令の指定方法を説明しません。
[*]
この「FKiSS2」命令を使用したい人は、
PlayFKissに添付されるドキュメントをご覧下さい。
| alarm(n) | |
| begin() | |
| catch(#n) | catch("CELNAME.CEL") |
| col(n) | |
| drop(#n) | drop("CELNAME.CEL") |
| end() | |
| fixcatch(#n) | fixcatch("CELNAME.CEL") |
| fixdrop(#n) | fixdrop("CELNAME.CEL") |
| initialize() | |
| press(#n) | press("CELNAME.CEL") |
| release(#n) | release("CELNAME.CEL") |
| set(n) | |
| unfix(#n) | unfix("CELNAME.CEL") |
| altmap(#n) | altmap("CELNAME.CEL") |
| changecol(n) | |
| changeset(n) | |
| map(#n) | map("CELNAME.CEL") |
| move(#n,i,j) | move("CELNAME.CEL",i,j) |
| nop() | |
| randomtimer(n,i,j) | |
| sound("FILENAME.XXX") | |
| timer(n,i) | |
| unmap(#n) | unmap("CELNAME.CEL") |
| never() |
| debug(文字列) | |
| quit() | |
| transparent("CELNAME.CEL") | |
| viewport(n,n) | <謎です。 |
| windowsize(n,n) | < |
| in(#m,#n) |
| out(#m,#n) |
| stillin(#m,#n) |
| stillout(#m,#n) |
| version(n) |
| movebyx(#n,i,j) |
| movebyy(#n,i,j) |
| moveto(#n,i,j) |
| music(FILENAME.XXX) |
| notify(文字列) |
| apart("CELNAME1.CEL","CELNAME2.CEL") |
| collide("CELNAME1.CEL","CELNAME2.CEL") |
| iffixed(#n,i,j) |
| ifmapped("CELNAME.CEL",i,j) |
| ifmoved(#n,i,j) |
| ifnotfixed(#n,i,j) |
| ifnotmapped("CELNAME.CEL",i,j) |
| ifnotmoved(#n,i,j) |
| moverandx(#n,i,j) |
| moverandy(#n,i,j) |
| movetorand(#n) |
| setfix(#n,i) |
#m,#n ; #m,#n で指定するオブジェクト番号です。 CELNAME.CEL ; セルファイル名です。 FILENAME.XXX ; FILENAME.XXX で指定するファイル名です。 i,j,m,n ; 10進数の整数です。